From 032b4eadb52d6499501ff2c24ce30803894a1317 Mon Sep 17 00:00:00 2001 From: unpregnant Date: Sun, 12 Feb 2017 14:08:00 +0100 Subject: [PATCH] FIX bug #52 query.$ fires on remove --- src/RxQuery.js | 2 +- test/node/Observe.test.js | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/RxQuery.js b/src/RxQuery.js index 605d7c72209..1cd367dcfdb 100644 --- a/src/RxQuery.js +++ b/src/RxQuery.js @@ -84,7 +84,7 @@ class RxQuery { this._subject = new util.Rx.BehaviorSubject(null); this._obsRunning = false; const collection$ = this.collection.$ - .filter(cEvent => ['RxCollection.insert', 'RxDocument.save'].includes(cEvent.data.op)) + .filter(cEvent => ['RxCollection.insert', 'RxDocument.save', 'RxDocument.remove'].includes(cEvent.data.op)) .startWith(1) .filter(x => !this._obsRunning) .do(x => this._obsRunning = true) diff --git a/test/node/Observe.test.js b/test/node/Observe.test.js index 7f7613f68df..c7b1194f8fb 100644 --- a/test/node/Observe.test.js +++ b/test/node/Observe.test.js @@ -93,6 +93,31 @@ describe('Observe.test.js', () => { }); }); }); + describe('.remove()', () => { + describe('positive', () => { + it('should fire on remove', async() => { + const db = await RxDatabase.create(randomToken(10), memdown); + const colName = randomToken(10); + const c = await db.collection(colName, schemas.human); + let ar = []; + const sub = c + .find() + .$ + .subscribe(docs => ar.push(docs)); + + await util.promiseWait(10); + await c.insert(schemaObjects.human()); + await util.promiseWait(10); + assert.equal(ar.length, 3); + const doc = await c.findOne().exec(); + await doc.remove(); + await util.promiseWait(10); + assert.equal(ar.length, 4); + sub.unsubscribe(); + db.destroy(); + }); + }); + }); }); describe('Document', () => { describe('.save()', () => {