124 lines
3.2 KiB
JavaScript
124 lines
3.2 KiB
JavaScript
|
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);
|
|||
|
});
|
|||
|
});
|
|||
|
});
|