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