Skip to content

Commit b0f04d1

Browse files
Add unit tests
1 parent 87e3821 commit b0f04d1

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

src/platform/__tests__/RNSignalListener.spec.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,13 @@ jest.doMock('react-native/Libraries/AppState/AppState', () => AppStateMock);
66
const syncManagerMockWithPushManager = {
77
flush: jest.fn(),
88
pushManager: { start: jest.fn(), stop: jest.fn() },
9+
pollingManager: { syncAll: jest.fn() },
910
};
1011
const settingsMock = {
1112
log: { debug: jest.fn() },
1213
flushDataOnBackground: true,
14+
scheduler: { featuresRefreshRate: 100 },
15+
sync: { enabled: true },
1316
};
1417

1518
describe('RNSignalListener', () => {
@@ -20,7 +23,7 @@ describe('RNSignalListener', () => {
2023
syncManagerMockWithPushManager.pushManager.start.mockClear();
2124
});
2225

23-
test('starting in foreground', () => {
26+
test('starting in foreground', async () => {
2427
// @ts-expect-error. SyncManager mock partially implemented
2528
const signalListener = new RNSignalListener(syncManagerMockWithPushManager, settingsMock);
2629

@@ -41,9 +44,14 @@ describe('RNSignalListener', () => {
4144
expect(syncManagerMockWithPushManager.pushManager.stop).toBeCalledTimes(1);
4245
expect(syncManagerMockWithPushManager.pushManager.stop).toBeCalledTimes(1);
4346

47+
// Wait for features refresh rate to validate that syncAll is called when resuming foreground
48+
expect(syncManagerMockWithPushManager.pollingManager!.syncAll).toBeCalledTimes(0);
49+
await new Promise((resolve) => setTimeout(resolve, settingsMock.scheduler.featuresRefreshRate));
50+
4451
// Going to foreground should be handled
4552
AppStateMock._emitChangeEvent('inactive');
4653
expect(syncManagerMockWithPushManager.pushManager.start).toBeCalledTimes(2);
54+
expect(syncManagerMockWithPushManager.pollingManager!.syncAll).toBeCalledTimes(1);
4755

4856
// Handling another foreground event, have no effect
4957
AppStateMock._emitChangeEvent('active');
@@ -56,9 +64,14 @@ describe('RNSignalListener', () => {
5664
expect(syncManagerMockWithPushManager.flush).toBeCalledTimes(2);
5765
expect(syncManagerMockWithPushManager.pushManager.stop).toBeCalledTimes(2);
5866

67+
// Validate that syncAll is not called if singleSync is enabled
68+
settingsMock.sync.enabled = false;
69+
await new Promise((resolve) => setTimeout(resolve, settingsMock.scheduler.featuresRefreshRate));
70+
5971
// Going to foreground should be handled again
6072
AppStateMock._emitChangeEvent('active');
6173
expect(syncManagerMockWithPushManager.pushManager.start).toBeCalledTimes(3);
74+
expect(syncManagerMockWithPushManager.pollingManager!.syncAll).toBeCalledTimes(1);
6275

6376
// Stopping RNSignalListener
6477
signalListener.stop(); // @ts-ignore access private property

0 commit comments

Comments
 (0)