Skip to content

Commit 35e8583

Browse files
authored
fix(list): FirebaseListObservable shape (angular#321)
* fix(list): FirebaseListObservable shape * fix(typings) * chore(typings): Update typings * chore(reporter): Add Mocha report for Travis * chore(tests): Add tests for shape * chore(newline): plz * chore(newline): plz * fix(iit)
1 parent 9edf33a commit 35e8583

File tree

6 files changed

+36
-14
lines changed

6 files changed

+36
-14
lines changed

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ before_script:
2929

3030
script:
3131
- npm run build
32-
- ./node_modules/.bin/karma start --single-run --browsers Firefox
32+
- ./node_modules/.bin/karma start --single-run --browsers Firefox --reporters mocha
3333
# Can't run until https://github.com/angular/protractor/issues/2784 is resolved
3434
#- ./node_modules/.bin/protractor protractor.conf.js --browser firefox
3535

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@
6767
"tsd": "^0.6.5",
6868
"typedoc": "github:jeffbcross/typedoc",
6969
"typescript": "^1.8.10",
70-
"typings": "^0.6.2",
70+
"typings": "^1.3.2",
7171
"zone.js": "^0.6.6"
7272
},
7373
"typings": "dist/angularfire2.d.ts"

src/database/firebase_list_factory.spec.ts

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ import {
1717
} from '../angularfire2';
1818
import {
1919
addProviders,
20-
inject
20+
inject,
21+
iit
2122
} from '@angular/core/testing';
2223
import * as utils from '../utils';
2324
import {Query} from '../interfaces';
@@ -339,6 +340,24 @@ describe('FirebaseListFactory', () => {
339340

340341
});
341342

343+
describe('shape', () => {
344+
345+
it('should have a a FirebaseListObservable shape when queried', () => {
346+
const observable = FirebaseListFactory(rootFirebase, {
347+
query: {
348+
orderByChild: 'height',
349+
equalTo: '1'
350+
}
351+
});
352+
353+
expect(observable.push instanceof Function).toBe(true);
354+
expect(observable.update instanceof Function).toBe(true);
355+
expect(observable.remove instanceof Function).toBe(true);
356+
});
357+
358+
359+
});
360+
342361
describe('methods', () => {
343362

344363
beforeEach((done: any) => {

src/database/firebase_list_factory.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ export function FirebaseListFactory (
3030
}
3131

3232
const queryObs = observeQuery(query);
33-
const listObs = <FirebaseListObservable<{}>>queryObs
34-
.map(query => {
33+
return new FirebaseListObservable(ref, subscriber => {
34+
let sub = queryObs.map(query => {
3535
let queried: firebase.database.Query = ref;
3636
// Only apply the populated keys
3737
// apply ordering and available querying options
@@ -93,8 +93,11 @@ export function FirebaseListFactory (
9393
})
9494
.mergeMap((queryRef: firebase.database.Reference, ix: number) => {
9595
return firebaseListObservable(queryRef, { preserveSnapshot });
96-
});
97-
return listObs;
96+
})
97+
.subscribe(subscriber);
98+
99+
return () => sub.unsubscribe();
100+
});
98101
}
99102

100103
function firebaseListObservable(ref: firebase.database.Reference | firebase.database.Query, {preserveSnapshot}: FirebaseListFactoryOpts = {}): FirebaseListObservable<any> {

tsconfig.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
"src/auth/auth.ts",
2525
"src/auth/auth.spec.ts",
2626
"src/auth/auth_backend.spec.ts",
27-
"typings/main.d.ts",
27+
"typings/index.d.ts",
2828
"manual_typings/firebase3/firebase3.d.ts"
2929
]
3030
}

typings.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
{
2+
"name": "angularfire2",
23
"dependencies": {
34
"es6-promise": "github:typed-typings/npm-es6-promise#fb04188767acfec1defd054fc8024fafa5cd4de7"
45
},
5-
"devDependencies": {},
6-
"ambientDependencies": {
7-
"angular-protractor": "github:DefinitelyTyped/DefinitelyTyped/angular-protractor/angular-protractor.d.ts#f9c44651705f574f6d4258fe5e1c335462bdcc19",
8-
"es6-shim": "github:DefinitelyTyped/DefinitelyTyped/es6-shim/es6-shim.d.ts#6697d6f7dadbf5773cb40ecda35a76027e0783b2",
9-
"jasmine": "github:DefinitelyTyped/DefinitelyTyped/jasmine/jasmine.d.ts#64b25f63f0ec821040a5d3e049a976865062ed9d",
10-
"selenium-webdriver": "github:DefinitelyTyped/DefinitelyTyped/selenium-webdriver/selenium-webdriver.d.ts#7de6c3dd94feaeb21f20054b9f30d5dabc5efabd"
6+
"globalDependencies": {
7+
"angular-protractor": "registry:dt/angular-protractor#1.5.0+20160425143459",
8+
"es6-shim": "registry:dt/es6-shim#0.31.2+20160602141504",
9+
"jasmine": "registry:dt/jasmine#2.2.0+20160621224255",
10+
"selenium-webdriver": "registry:dt/selenium-webdriver#2.44.0+20160317120654"
1111
}
1212
}

0 commit comments

Comments
 (0)