diff --git a/.gitignore b/.gitignore index 40b41f270..4fd1fdce7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ node_modules/ dist/ typings/ - +npm-debug.log \ No newline at end of file diff --git a/README.md b/README.md index a0e74efad..a9b2cdc9e 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,24 @@ import {FIREBASE_PROVIDERS} from 'angularfire2'; bootstrap(App, FIREBASE_PROVIDERS); ``` +### defaultFirebase + +Define the root url for the library, to resolve relative paths. + +Type: `string` + +Usage: + +``` +import {bootstrap} from 'angular2/core'; +import {FIREBASE_PROVIDERS, defaultFirebase} from 'angularfire2'; + +bootstrap(App, [ + FIREBASE_PROVIDERS, + defaultFirebase('https://my.firebaseio.com') +]); +``` + ### FirebaseRef Injectable symbol to create a Firebase reference based on @@ -42,27 +60,6 @@ class MyComponent { } ``` -### FirebaseUrl - -URL for the app's default Firebase database. - -Type: `string` - -Usage: - -``` -import {App} from './app'; -import {bootstrap, provide} from 'angular2/core'; -import {FirebaseUrl, FIREBASE_PROVIDERS} from 'angularfire2'; - -bootstrap(App, [ - FIREBASE_PROVIDERS, - provide(FirebaseUrl, { - useValue: 'https://my.firebaseio.com' - }) -]); -``` - ### FirebaseList A convenient provider to inject a remote list of @@ -106,6 +103,32 @@ class QuestionsList { } ``` +### FirebaseUrl + +URL for the app's default Firebase database. + +Type: `string` + +Usage: + +``` +import {bootstrap, Inject} from 'angular2/core'; +import {FirebaseUrl, FIREBASE_PROVIDERS, defaultFirebase} from 'angularfire2'; + +@Component({ + selector: 'app', + template: `{{ url }}` +}) +class App { + constructor(@Inject(FirebaseUrl) public url: string) {} +} + +bootstrap(App, [ + FIREBASE_PROVIDERS, + defaultFirebase('https://my.firebaseio.com') +]); +``` + ### FirebaseListConfig Interface for config object that can be provided to `FirebaseList` diff --git a/src/angularfire.spec.ts b/src/angularfire.spec.ts index df6c28efa..94bcaac0f 100644 --- a/src/angularfire.spec.ts +++ b/src/angularfire.spec.ts @@ -1,17 +1,32 @@ -import {describe,it,beforeEach} from 'angular2/testing'; -import {Injector, provide} from 'angular2/core'; -import {FIREBASE_PROVIDERS, FirebaseUrl, FirebaseRef} from './angularfire'; +import {describe,it,beforeEach, expect, inject} from 'angular2/testing'; +import {Injector, provide, Provider} from 'angular2/core'; +import {FIREBASE_PROVIDERS, FirebaseUrl, FirebaseRef, defaultFirebase} from './angularfire'; + +const testUrl = 'https://ng2-forum-demo.firebaseio.com/'; describe('angularfire', () => { describe('FIREBASE_REF', () => { it('should provide a FirebaseRef for the FIREBASE_REF binding', () => { var injector = Injector.resolveAndCreate([ provide(FirebaseUrl, { - useValue: 'https://ng2-forum-demo.firebaseio.com' + useValue: testUrl }), FIREBASE_PROVIDERS ]); expect(typeof injector.get(FirebaseRef).on).toBe('function'); }) }); + + describe('defaultFirebase', () => { + it('should create a provider', () => { + const provider = defaultFirebase(testUrl); + expect(provider).toBeAnInstanceOf(Provider); + }); + + it('should inject a FIR reference', () => { + const injector = Injector.resolveAndCreate([defaultFirebase(testUrl), FIREBASE_PROVIDERS]); + expect(injector.get(FirebaseRef).toString()).toBe(testUrl); + }); + }); + }); diff --git a/src/angularfire.ts b/src/angularfire.ts index b3747fff2..6fdfa643d 100644 --- a/src/angularfire.ts +++ b/src/angularfire.ts @@ -1,4 +1,4 @@ -import {OpaqueToken, provide} from 'angular2/core'; +import {OpaqueToken, provide, Provider} from 'angular2/core'; import * as Firebase from 'firebase'; export const FirebaseUrl = new OpaqueToken('FirebaseUrl'); @@ -10,6 +10,12 @@ export const FIREBASE_PROVIDERS:any[] = [ deps: [FirebaseUrl]}) ]; +export const defaultFirebase = (url: string):Provider => { + return provide(FirebaseUrl, { + useValue: url + }); +}; + export {FirebaseList, FirebaseListConfig} from './providers/firebase_list'; export {FirebaseObservable} from './utils/firebase_observable';