From dddd0b3646e5afe7f9e068f6158e3c62c6c3552c Mon Sep 17 00:00:00 2001 From: David East Date: Mon, 1 Feb 2016 11:23:31 -0800 Subject: [PATCH 1/4] chore(providers): shortcut for configuring DEFAULT_FIREBASE provider --- .gitignore | 2 +- src/angularfire.spec.ts | 17 +++++++++++++---- src/angularfire.ts | 6 ++++++ 3 files changed, 20 insertions(+), 5 deletions(-) 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/src/angularfire.spec.ts b/src/angularfire.spec.ts index df6c28efa..b10cc4f93 100644 --- a/src/angularfire.spec.ts +++ b/src/angularfire.spec.ts @@ -1,17 +1,26 @@ -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} 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); + }); + }); }); diff --git a/src/angularfire.ts b/src/angularfire.ts index b3747fff2..5252fc9b7 100644 --- a/src/angularfire.ts +++ b/src/angularfire.ts @@ -10,6 +10,12 @@ export const FIREBASE_PROVIDERS:any[] = [ deps: [FirebaseUrl]}) ]; +export const defaultFirebase = (url: string) => { + return provide(FirebaseUrl, { + useValue: url + }); +}; + export {FirebaseList, FirebaseListConfig} from './providers/firebase_list'; export {FirebaseObservable} from './utils/firebase_observable'; From 9580843016c61107a3f291e4ee7e59f61c25b0a2 Mon Sep 17 00:00:00 2001 From: David East Date: Mon, 1 Feb 2016 11:43:40 -0800 Subject: [PATCH 2/4] test(providers): Add defaultFirebase injector test --- src/angularfire.spec.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/angularfire.spec.ts b/src/angularfire.spec.ts index b10cc4f93..94bcaac0f 100644 --- a/src/angularfire.spec.ts +++ b/src/angularfire.spec.ts @@ -1,8 +1,8 @@ -import {describe,it,beforeEach, expect} from 'angular2/testing'; +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'; +const testUrl = 'https://ng2-forum-demo.firebaseio.com/'; describe('angularfire', () => { describe('FIREBASE_REF', () => { @@ -22,5 +22,11 @@ describe('angularfire', () => { 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); + }); }); + }); From 7774eb8c469f900fd841d49549cfd8a6f10017c9 Mon Sep 17 00:00:00 2001 From: David East Date: Mon, 1 Feb 2016 11:43:40 -0800 Subject: [PATCH 3/4] test(providers): Add defaultFirebase injector test --- src/angularfire.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/angularfire.ts b/src/angularfire.ts index 5252fc9b7..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,7 +10,7 @@ export const FIREBASE_PROVIDERS:any[] = [ deps: [FirebaseUrl]}) ]; -export const defaultFirebase = (url: string) => { +export const defaultFirebase = (url: string):Provider => { return provide(FirebaseUrl, { useValue: url }); From 93774c337bc7b5a9f5cf2c7dc93713ee72b91239 Mon Sep 17 00:00:00 2001 From: David East Date: Mon, 1 Feb 2016 12:15:02 -0800 Subject: [PATCH 4/4] docs(README): FirebaseURL and defaultFirebase --- README.md | 65 +++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 44 insertions(+), 21 deletions(-) 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`