Repository navigation
Expand file tree
/
Copy pathdocument.spec.ts
More file actions
64 lines (56 loc) · 2.1 KB
/
Copy pathdocument.spec.ts
File metadata and controls
64 lines (56 loc) · 2.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import { FirebaseApp, AngularFireModule } from '@angular/fire';
import { AngularFirestore } from '../firestore';
import { AngularFirestoreModule } from '../firestore.module';
import { AngularFirestoreDocument } from '../document/document';
import { Observable, Subscription } from 'rxjs';
import { take } from 'rxjs/operators';
import { TestBed, inject } from '@angular/core/testing';
import { COMMON_CONFIG } from '../test-config';
import { Stock, randomName, FAKE_STOCK_DATA } from '../utils.spec';
describe('AngularFirestoreDocument', () => {
let app: FirebaseApp;
let afs: AngularFirestore;
let sub: Subscription;
beforeEach(() => {
TestBed.configureTestingModule({
imports: [
AngularFireModule.initializeApp(COMMON_CONFIG),
AngularFirestoreModule.enablePersistence({synchronizeTabs: true})
]
});
inject([FirebaseApp, AngularFirestore], (_app: FirebaseApp, _afs: AngularFirestore) => {
app = _app;
afs = _afs;
})();
});
afterEach(done => {
app.delete();
done();
});
it('should get action updates', async (done: any) => {
const randomCollectionName = randomName(afs.firestore);
const ref = afs.firestore.doc(`${randomCollectionName}/FAKE`);
const stock = new AngularFirestoreDocument<Stock>(ref, afs);
await stock.set(FAKE_STOCK_DATA);
const sub = stock
.snapshotChanges()
.subscribe(async a => {
sub.unsubscribe();
if (a.payload.exists) {
expect(a.payload.data()).toEqual(FAKE_STOCK_DATA);
stock.delete().then(done).catch(done.fail);
}
});
});
it('should get unwrapped snapshot', async (done: any) => {
const randomCollectionName = afs.firestore.collection('a').doc().id;
const ref = afs.firestore.doc(`${randomCollectionName}/FAKE`);
const stock = new AngularFirestoreDocument<Stock>(ref, afs);
await stock.set(FAKE_STOCK_DATA);
const obs$ = stock.valueChanges();
obs$.pipe(take(1)).subscribe(async data => {
expect(JSON.stringify(data)).toBe(JSON.stringify(FAKE_STOCK_DATA));
stock.delete().then(done).catch(done.fail);
});
});
});