describe('loadAssistantUser', () => { it('Shouldnt load expected user from DB', (done) => { const dataUserExists = new functions.database.DeltaSnapshot(null, null, null, exampleUser); const fakeEvent = {data: dataUserExists}; const onceStub = sinon.stub().withArgs('value').returns(Promise.resolve(fakeEvent.data)); const refStub = sinon.stub().withArgs('users/' + exampleUser.userId).returns({once: onceStub}); const databaseStub = sinon.stub(firebase, 'database').returns({ref: refStub}); userManagerInstance.loadAssistantUser(exampleUser.userId).then(user => { chai.assert.deepEqual(user, exampleUser); done(); databaseStub.restore(); }); }); });
describe('getLoggedWaterForUser', () => { it('Should load logged water for given user and present data from recent day', (done) => { //Fake timestamps to distinguish "today" and "yesterday" const timestampYesterday = 10; const timestampMidnight = 50; const timestampToday = 100; const expectedRequestData = { abc: {userId: exampleUser.userId, mililiters: 100, timestamp: timestampYesterday}, def: {userId: exampleUser.userId, mililiters: 50, timestamp: timestampToday} }; const dataUserExists = new functions.database.DeltaSnapshot(null, null, null, expectedRequestData); const fakeEvent = {data: dataUserExists}; const onceStub = sinon.stub().withArgs('value').returns(Promise.resolve(fakeEvent.data)); const equalToStub = sinon.stub().withArgs(exampleUser.userId).returns({once: onceStub}); const orderByChildStub = sinon.stub().withArgs('userId').returns({equalTo: equalToStub}); const refStub = sinon.stub().withArgs('waterLogs').returns({orderByChild: orderByChildStub}); const databaseStub = sinon.stub(firebaseAdmin, 'database').returns({ref: refStub}); const todayStartTimestampStub = sinon.stub(timeManagerInstance, 'getTodayStartTimestampForAssistantUser').resolves(timestampMidnight); waterLogInstance.getLoggedWaterForUser(exampleUser.userId).then(loggedMililiters => { chai.assert.equal(50, loggedMililiters); done(); databaseStub.restore(); todayStartTimestampStub.restore(); }); }); });
const dataTimezoneExists = new functions.database.DeltaSnapshot(null, null, null, expectedUserTimeData); const fakeEvent = {data: dataTimezoneExists}; const onceStub = sinon.stub().withArgs('value').returns(Promise.resolve(fakeEvent.data)); const dataTimezoneNotExists = new functions.database.DeltaSnapshot(null, null, null, null); const fakeEvent = {data: dataTimezoneNotExists}; const onceStub = sinon.stub().withArgs('value').returns(Promise.resolve(fakeEvent.data));
describe('getAssistantUserTimeData', () => { const expectedUserTimeData = {timezone: 'America/New_York'}; const expectedUserId = 'abc123'; it('Should return local user time if exists', (done) => { const dataTimezoneExists = new functions.database.DeltaSnapshot(null, null, null, expectedUserTimeData); const fakeEvent = {data: dataTimezoneExists}; const onceStub = sinon.stub().withArgs('value').returns(Promise.resolve(fakeEvent.data)); const refStub = sinon.stub().withArgs('userTime/' + expectedUserId).returns({once: onceStub}); const databaseStub = sinon.stub(firebaseAdmin, 'database').returns({ref: refStub}); timeManagerInstance.getAssistantUserTimeData(expectedUserId).then(userTimeData => { chai.assert.deepEqual(userTimeData, expectedUserTimeData); done(); databaseStub.restore(); }); }); });
describe('isFirstUsage', () => { it('Should return first usage when user doesnt exist in DB', (done) => { const dataUserDoesntExist = new functions.database.DeltaSnapshot(null, null, null, null); const fakeEvent = {data: dataUserDoesntExist}; const onceStub = sinon.stub().withArgs('value').returns(Promise.resolve(fakeEvent.data)); const dataUserExists = new functions.database.DeltaSnapshot(null, null, null, "exampleUser"); const fakeEvent = {data: dataUserExists}; const onceStub = sinon.stub().withArgs('value').returns(Promise.resolve(fakeEvent.data));