Skip to content

Commit 665911e

Browse files
committed
test against private fields
1 parent c4d4d24 commit 665911e

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

integration/test/ParseLiveQueryTest.js

+38
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ const assert = require('assert');
44
const Parse = require('../../node');
55
const sleep = require('./sleep');
66
const { resolvingPromise } = require('../../lib/node/promiseUtils');
7+
const { EventEmitter } = require('events');
78

89
describe('Parse LiveQuery', () => {
910
beforeEach(() => {
@@ -367,4 +368,41 @@ describe('Parse LiveQuery', () => {
367368
client.state = 'closed';
368369
await client.close();
369370
});
371+
372+
it('can subscribe to query with EventEmitter private fields', async () => {
373+
class CustomEmitter {
374+
#privateEmitter;
375+
376+
constructor() {
377+
this.#privateEmitter = new EventEmitter();
378+
}
379+
on(event, listener) {
380+
this.#privateEmitter.on(event, listener);
381+
}
382+
emit(event, ...args) {
383+
this.#privateEmitter.emit(event, ...args);
384+
}
385+
}
386+
387+
const EV = Parse.CoreManager.getEventEmitter();
388+
389+
Parse.CoreManager.setEventEmitter(CustomEmitter);
390+
const object = new TestObject();
391+
await object.save();
392+
const installationId = await Parse.CoreManager.getInstallationController().currentInstallationId();
393+
394+
const query = new Parse.Query(TestObject);
395+
query.equalTo('objectId', object.id);
396+
const subscription = await query.subscribe();
397+
const promise = resolvingPromise();
398+
subscription.on('update', (object, original, response) => {
399+
assert.equal(object.get('foo'), 'bar');
400+
assert.equal(response.installationId, installationId);
401+
promise.resolve();
402+
});
403+
object.set({ foo: 'bar' });
404+
await object.save();
405+
await promise;
406+
Parse.CoreManager.setEventEmitter(EV);
407+
});
370408
});

0 commit comments

Comments
 (0)