Add Signal.Startup
module
This commit is contained in:
parent
29832c445a
commit
ce8fe0d345
4 changed files with 181 additions and 0 deletions
123
test/modules/startup_test.js
Normal file
123
test/modules/startup_test.js
Normal file
|
@ -0,0 +1,123 @@
|
|||
const sinon = require('sinon');
|
||||
const { assert } = require('chai');
|
||||
|
||||
const Startup = require('../../js/modules/startup');
|
||||
|
||||
|
||||
describe('Startup', () => {
|
||||
const sandbox = sinon.createSandbox();
|
||||
|
||||
describe('syncReadReceiptConfiguration', () => {
|
||||
afterEach(() => {
|
||||
sandbox.restore();
|
||||
});
|
||||
|
||||
it('should complete if user hasn’t previously synced', async () => {
|
||||
const deviceId = '2';
|
||||
const sendRequestConfigurationSyncMessage = sandbox.spy();
|
||||
const storagePutSpy = sandbox.spy();
|
||||
const storage = {
|
||||
get(name) {
|
||||
if (name !== 'read-receipt-configuration-sync') {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
},
|
||||
put: storagePutSpy,
|
||||
};
|
||||
|
||||
const expected = {
|
||||
status: 'complete',
|
||||
};
|
||||
|
||||
const actual = await Startup.syncReadReceiptConfiguration({
|
||||
deviceId,
|
||||
sendRequestConfigurationSyncMessage,
|
||||
storage,
|
||||
});
|
||||
|
||||
assert.deepEqual(actual, expected);
|
||||
assert.equal(sendRequestConfigurationSyncMessage.callCount, 1);
|
||||
assert.equal(storagePutSpy.callCount, 1);
|
||||
assert(storagePutSpy.calledWith('read-receipt-configuration-sync', true));
|
||||
});
|
||||
|
||||
it('should be skipped if this is the primary device', async () => {
|
||||
const deviceId = '1';
|
||||
const sendRequestConfigurationSyncMessage = () => {};
|
||||
const storage = {};
|
||||
|
||||
const expected = {
|
||||
status: 'skipped',
|
||||
reason: 'isPrimaryDevice',
|
||||
};
|
||||
|
||||
const actual = await Startup.syncReadReceiptConfiguration({
|
||||
deviceId,
|
||||
sendRequestConfigurationSyncMessage,
|
||||
storage,
|
||||
});
|
||||
|
||||
assert.deepEqual(actual, expected);
|
||||
});
|
||||
|
||||
it('should be skipped if user has previously synced', async () => {
|
||||
const deviceId = '2';
|
||||
const sendRequestConfigurationSyncMessage = () => {};
|
||||
const storage = {
|
||||
get(name) {
|
||||
if (name !== 'read-receipt-configuration-sync') {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
},
|
||||
};
|
||||
|
||||
const expected = {
|
||||
status: 'skipped',
|
||||
reason: 'hasPreviouslySynced',
|
||||
};
|
||||
|
||||
const actual = await Startup.syncReadReceiptConfiguration({
|
||||
deviceId,
|
||||
sendRequestConfigurationSyncMessage,
|
||||
storage,
|
||||
});
|
||||
|
||||
assert.deepEqual(actual, expected);
|
||||
});
|
||||
|
||||
it('should return error if sending of sync request fails', async () => {
|
||||
const deviceId = '2';
|
||||
|
||||
const sendRequestConfigurationSyncMessage = sandbox.stub();
|
||||
sendRequestConfigurationSyncMessage.rejects(new Error('boom'));
|
||||
|
||||
const storagePutSpy = sandbox.spy();
|
||||
const storage = {
|
||||
get(name) {
|
||||
if (name !== 'read-receipt-configuration-sync') {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
},
|
||||
put: storagePutSpy,
|
||||
};
|
||||
|
||||
const actual = await Startup.syncReadReceiptConfiguration({
|
||||
deviceId,
|
||||
sendRequestConfigurationSyncMessage,
|
||||
storage,
|
||||
});
|
||||
|
||||
assert.equal(actual.status, 'error');
|
||||
assert.include(actual.error, 'boom');
|
||||
|
||||
assert.equal(sendRequestConfigurationSyncMessage.callCount, 1);
|
||||
assert.equal(storagePutSpy.callCount, 0);
|
||||
});
|
||||
});
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue