From fc12943fa06c68ca8549fb3367a918868093992d Mon Sep 17 00:00:00 2001 From: Railag Date: Thu, 27 Dec 2018 12:58:04 +0300 Subject: [PATCH] test(core) unit tests for change-tracking service (EWC-383) --- src/services/agent-service.js | 2 +- src/services/change-tracking-service.js | 18 +- src/services/user-service.js | 3 - test/src/services/agent-service.test.js | 10 +- .../services/change-tracking-service.test.js | 159 ++++++++++++++++++ 5 files changed, 174 insertions(+), 18 deletions(-) create mode 100644 test/src/services/change-tracking-service.test.js diff --git a/src/services/agent-service.js b/src/services/agent-service.js index 01c53fcec..e1c24ccc3 100644 --- a/src/services/agent-service.js +++ b/src/services/agent-service.js @@ -131,7 +131,7 @@ const updateAgentConfig = async function (updateData, fog, transaction) { const getAgentConfigChanges = async function (fog, transaction) { - const changeTracking = await ChangeTrackingService.getByFogId(fog.uuid, transaction); + const changeTracking = await ChangeTrackingService.getByIoFogUuid(fog.uuid, transaction); if (!changeTracking) { throw new Errors.NotFoundError(ErrorMessages.INVALID_NODE_ID) } diff --git a/src/services/change-tracking-service.js b/src/services/change-tracking-service.js index bed1669e9..572043da6 100644 --- a/src/services/change-tracking-service.js +++ b/src/services/change-tracking-service.js @@ -71,20 +71,20 @@ const events = Object.freeze({ } }); -async function update(fogId, data, transaction) { - await ChangeTrackingManager.update({iofogUuid: fogId}, data, transaction); +async function create(ioFogUuid, transaction) { + await ChangeTrackingManager.create({iofogUuid: ioFogUuid}, transaction); } -async function updateIfChanged(fogId, data, transaction) { - await ChangeTrackingManager.updateIfChanged({iofogUuid: fogId}, data, transaction); +async function update(ioFogUuid, data, transaction) { + await ChangeTrackingManager.update({iofogUuid: ioFogUuid}, data, transaction); } -async function create(fogId, transaction) { - await ChangeTrackingManager.create({iofogUuid: fogId}, transaction); +async function updateIfChanged(ioFogUuid, data, transaction) { + await ChangeTrackingManager.updateIfChanged({iofogUuid: ioFogUuid}, data, transaction); } -async function getByFogId(fogId, transaction) { - return await ChangeTrackingManager.findOne({iofogUuid: fogId}, transaction); +async function getByIoFogUuid(ioFogUuid, transaction) { + return await ChangeTrackingManager.findOne({iofogUuid: ioFogUuid}, transaction); } module.exports = { @@ -92,5 +92,5 @@ module.exports = { create: create, update: update, updateIfChanged: updateIfChanged, - getByFogId: getByFogId + getByIoFogUuid: getByIoFogUuid }; \ No newline at end of file diff --git a/src/services/user-service.js b/src/services/user-service.js index 881670c15..53224dbeb 100644 --- a/src/services/user-service.js +++ b/src/services/user-service.js @@ -27,9 +27,6 @@ const EmailActivationCodeService = require('./email-activation-code-service'); const AccessTokenService = require('./access-token-service'); -const logger = require('../logger'); -const constants = require('../helpers/constants'); - const TransactionDecorator = require('../decorators/transaction-decorator'); const Validator = require('../schemas'); diff --git a/test/src/services/agent-service.test.js b/test/src/services/agent-service.test.js index f60e5824b..3af91e846 100644 --- a/test/src/services/agent-service.test.js +++ b/test/src/services/agent-service.test.js @@ -364,16 +364,16 @@ describe('Agent Service', () => { def('updateIfChangedResponse', () => Promise.resolve()); beforeEach(() => { - $sandbox.stub(ChangeTrackingService, 'getByFogId').returns($getByFogIdResponse); + $sandbox.stub(ChangeTrackingService, 'getByIoFogUuid').returns($getByFogIdResponse); $sandbox.stub(ChangeTrackingService, 'updateIfChanged').returns($updateIfChangedResponse); }); - it('calls ChangeTrackingService#getByFogId() with correct args', async () => { + it('calls ChangeTrackingService#getByIoFogUuid() with correct args', async () => { await $subject; - expect(ChangeTrackingService.getByFogId).to.have.been.calledWith($uuid, transaction); + expect(ChangeTrackingService.getByIoFogUuid).to.have.been.calledWith($uuid, transaction); }); - context('when ChangeTrackingService#getByFogId() fails', () => { + context('when ChangeTrackingService#getByIoFogUuid() fails', () => { def('getByFogIdResponse', () => Promise.reject(error)); it(`fails with ${error}`, () => { @@ -381,7 +381,7 @@ describe('Agent Service', () => { }) }); - context('when ChangeTrackingService#getByFogId() succeeds', () => { + context('when ChangeTrackingService#getByIoFogUuid() succeeds', () => { it('calls ChangeTrackingService.updateIfChanged with correct args', async () => { await $subject; expect(ChangeTrackingService.updateIfChanged).to.have.been.calledWith($uuid, diff --git a/test/src/services/change-tracking-service.test.js b/test/src/services/change-tracking-service.test.js new file mode 100644 index 000000000..d61cadb0c --- /dev/null +++ b/test/src/services/change-tracking-service.test.js @@ -0,0 +1,159 @@ +const {expect} = require('chai'); +const sinon = require('sinon'); + +const ChangeTrackingManager = require('../../../src/sequelize/managers/change-tracking-manager'); +const ChangeTrackingService = require('../../../src/services/change-tracking-service'); + +describe('ChangeTracking Service', () => { + def('subject', () => ChangeTrackingService); + def('sandbox', () => sinon.createSandbox()); + + afterEach(() => $sandbox.restore()); + + describe('.create()', () => { + const transaction = {}; + const error = 'Error!'; + + const ioFogUuid = 'testUuid'; + + def('subject', () => $subject.create(ioFogUuid, transaction)); + def('createResponse', () => Promise.resolve()); + + beforeEach(() => { + $sandbox.stub(ChangeTrackingManager, 'create').returns($createResponse); + }); + + it('calls ChangeTrackingManager#create() with correct args', async () => { + await $subject; + expect(ChangeTrackingManager.create).to.have.been.calledWith({ + iofogUuid: ioFogUuid + }, transaction); + }); + + context('when ChangeTrackingManager#create() fails', () => { + def('createResponse', () => Promise.reject(error)); + + it(`fails with ${error}`, () => { + return expect($subject).to.be.rejectedWith(error) + }) + }); + + context('when ChangeTrackingManager#create() succeeds', () => { + it('fulfills the promise', () => { + return expect($subject).to.eventually.equal(undefined) + }) + }) + }); + + describe('.update()', () => { + const transaction = {}; + const error = 'Error!'; + + const ioFogUuid = 'testUuid'; + + def('subject', () => $subject.update(ioFogUuid, data, transaction)); + def('updateResponse', () => Promise.resolve()); + + + const data = ChangeTrackingService.events.clean; + + beforeEach(() => { + $sandbox.stub(ChangeTrackingManager, 'update').returns($updateResponse); + }); + + it('calls ChangeTrackingManager#update() with correct args', async () => { + await $subject; + expect(ChangeTrackingManager.update).to.have.been.calledWith({ + iofogUuid: ioFogUuid + }, data, transaction); + }); + + context('when ChangeTrackingManager#update() fails', () => { + def('updateResponse', () => Promise.reject(error)); + + it(`fails with ${error}`, () => { + return expect($subject).to.be.rejectedWith(error) + }) + }); + + context('when ChangeTrackingManager#update() succeeds', () => { + it('fulfills the promise', () => { + return expect($subject).to.eventually.equal(undefined) + }) + }) + }); + + describe('.updateIfChanged()', () => { + const transaction = {}; + const error = 'Error!'; + + const ioFogUuid = 'testUuid'; + + const data = ChangeTrackingService.events.clean; + + def('subject', () => $subject.updateIfChanged(ioFogUuid, data, transaction)); + def('updateResponse', () => Promise.resolve()); + + + beforeEach(() => { + $sandbox.stub(ChangeTrackingManager, 'updateIfChanged').returns($updateResponse); + }); + + it('calls ChangeTrackingManager#updateIfChanged() with correct args', async () => { + await $subject; + expect(ChangeTrackingManager.updateIfChanged).to.have.been.calledWith({ + iofogUuid: ioFogUuid + }, data, transaction); + }); + + context('when ChangeTrackingManager#updateIfChanged() fails', () => { + def('updateResponse', () => Promise.reject(error)); + + it(`fails with ${error}`, () => { + return expect($subject).to.be.rejectedWith(error) + }) + }); + + context('when ChangeTrackingManager#updateIfChanged() succeeds', () => { + it('fulfills the promise', () => { + return expect($subject).to.eventually.equal(undefined) + }) + }) + }); + + describe('.getByIoFogUuid()', () => { + const transaction = {}; + const error = 'Error!'; + + const ioFogUuid = 'testUuid'; + + def('subject', () => $subject.getByIoFogUuid(ioFogUuid, transaction)); + def('updateResponse', () => Promise.resolve()); + + beforeEach(() => { + $sandbox.stub(ChangeTrackingManager, 'findOne').returns($updateResponse); + }); + + it('calls ChangeTrackingManager#findOne() with correct args', async () => { + await $subject; + expect(ChangeTrackingManager.findOne).to.have.been.calledWith({ + iofogUuid: ioFogUuid + }, transaction); + }); + + context('when ChangeTrackingManager#findOne() fails', () => { + def('updateResponse', () => Promise.reject(error)); + + it(`fails with ${error}`, () => { + return expect($subject).to.be.rejectedWith(error) + }) + }); + + context('when ChangeTrackingManager#findOne() succeeds', () => { + it('fulfills the promise', () => { + return expect($subject).to.eventually.equal(undefined) + }) + }) + }); + +}); \ No newline at end of file