Skip to content

Commit

Permalink
fix: tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Kpoke committed Apr 15, 2022
1 parent d46c7ec commit f4dc14d
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 100 deletions.
Empty file removed .github/workflows/.gitkeep
Empty file.
12 changes: 6 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,13 @@
"eslint": "eslint --report-unused-disable-directives .",
"eslint:fix": "npm run eslint -- --fix",
"test": "npm run test-unit-ci; npm run test-integration-ci;npm run test-repository-ci",
"test-unit-ci": "NODE_ENV=test mocha -r dotenv/config --exit ./server/models/**/*.spec.js ./server/**/*.spec.js",
"test-repository-ci": "NODE_ENV=test mocha -r dotenv/config --exit ./server/repositories/**/*.spec.js",
"test-integration-ci": "NODE_ENV=test mocha -r dotenv/config --exit --timeout 20000 './api-tests'",
"test-unit-ci": "NODE_ENV=test mocha -r dotenv/config --exit ./server/models/**/*.spec.js",
"test-repository-ci": "NODE_ENV=test mocha -r dotenv/config --env dotenv_config_path=.env.test --exit ./server/repositories/**/*.spec.js",
"test-integration-ci": "NODE_ENV=test mocha -r dotenv/config --env dotenv_config_path=.env.test --exit --timeout 20000 './api-tests'",
"server": "NODE_ENV=development nodemon server/server.js",
"test-seedDB": "NODE_ENV=test mocha -r dotenv/config dotenv_config_path=.env.test --timeout 10000 './**/*.spec.js'",
"test-watch": "NODE_ENV=test NODE_LOG_LEVEL=info mocha -r dotenv/config dotenv_config_path=.env.test --timeout 10000 -w -b --ignore './server/repositories/**/*.spec.js' './server/setup.js' './server/**/*.spec.js' './__tests__/seed-spec-example.spec.js' './__tests__/supertest-example.spec.js'",
"test-watch-debug": "NODE_ENV=test NODE_LOG_LEVEL=debug mocha -r dotenv/config dotenv_config_path=.env.test --timeout 10000 -w -b --ignore './server/repositories/**/*.spec.js' './server/setup.js' './server/**/*.spec.js' './__tests__/seed-spec-example.spec.js' './__tests__/supertest-example.spec.js'",
"test-seedDB": "NODE_ENV=test mocha -r dotenv/config --env dotenv_config_path=.env.test --timeout 10000 './**/*.spec.js'",
"test-watch": "NODE_ENV=test NODE_LOG_LEVEL=info mocha -r dotenv/config --env dotenv_config_path=.env.test --timeout 10000 -w -b --ignore './server/repositories/**/*.spec.js' './server/setup.js' './server/**/*.spec.js' './__tests__/seed-spec-example.spec.js' './__tests__/supertest-example.spec.js'",
"test-watch-debug": "NODE_ENV=test NODE_LOG_LEVEL=debug mocha -r dotenv/config --env dotenv_config_path=.env.test --timeout 10000 -w -b --ignore './server/repositories/**/*.spec.js' './server/setup.js' './server/**/*.spec.js' './__tests__/seed-spec-example.spec.js' './__tests__/supertest-example.spec.js'",
"prettier-fix": "prettier ./ --write",
"migrate": "cd database; db-migrate up",
"seed": "knex seed:run",
Expand Down
121 changes: 33 additions & 88 deletions server/models/Stakeholder.spec.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
require('dotenv').config({ path: `.env.${process.env.NODE_ENV}` });
const { expect } = require('chai');
const sinon = require('sinon');
const {
getAllStakeholders,
StakeholderTree,
FilterCriteria,
} = require('./Stakeholder');
const StakeholderRepository = require('../repositories/StakeholderRepository');
const Stakeholder = require('./Stakeholder');

describe('Stakeholder Model', () => {
it('Stakeholder Model should return defined fields', () => {
const stakeholder = StakeholderTree({});
const stakeholder = Stakeholder.StakeholderTree({});
expect(stakeholder).to.have.keys([
'id',
'type',
Expand All @@ -25,55 +23,39 @@ describe('Stakeholder Model', () => {
]);
});

describe('FilterCriteria', () => {
it('filterCriteria should not return results other than id, type, orgName, firstName, lastName, email, phone, website, logoUrl, map', () => {
const filter = FilterCriteria({ check: true });
// eslint-disable-next-line no-unused-expressions
expect(filter).to.be.empty;
describe('getAllStakeholders', () => {
let getFilterStub;
let getParentsStub;
let getChildrenStub;
before(() => {
getFilterStub = sinon
.stub(StakeholderRepository.prototype, 'getFilter')
.callsFake(async (filter) => {
return {
count: 1,
stakeholders: [{ id: filter.id }],
};
});
getParentsStub = sinon
.stub(StakeholderRepository.prototype, 'getParents')
.resolves([]);
getChildrenStub = sinon
.stub(StakeholderRepository.prototype, 'getChildren')
.resolves([]);
});

it('filterCriteria should not return undefined fields', () => {
const filter = FilterCriteria({
id: undefined,
});
// eslint-disable-next-line no-unused-expressions
expect(filter).to.be.empty;
after(() => {
getFilterStub.restore();
getParentsStub.restore();
getChildrenStub.restore();
});
});

describe('getAllStakeholders', () => {
it('should get stakeholders with filter -- id (uuid)', async () => {
const getFilter = sinon.mock();
const getParents = sinon.mock();
const getChildren = sinon.mock();
const getStakeholderByOrganizationId = sinon.mock();
const executeGetStakeholders = getAllStakeholders({
getFilter,
getParents,
getChildren,
});
getFilter.resolves({
count: 1,
stakeholders: [{ id: '792a4eee-8e18-4750-a56f-91bdec383aa6' }],
const stakeholder = new Stakeholder();
const result = await stakeholder.getAllStakeholders({
id: '792a4eee-8e18-4750-a56f-91bdec383aa6',
});
getParents.resolves([]);
getChildren.resolves([]);
const result = await executeGetStakeholders(
{
filter: {
where: { id: '792a4eee-8e18-4750-a56f-91bdec383aa6' },
},
},
'/stakeholder',
);

expect(
getFilter.calledWith(1, {
filter: 100,
}),
);

sinon.assert.notCalled(getStakeholderByOrganizationId);
expect(result.stakeholders).to.have.length(1);
expect(result.totalCount).to.eql(1);
expect(result.stakeholders[0])
Expand All @@ -82,48 +64,11 @@ describe('Stakeholder Model', () => {
});

it('should get stakeholders with filter -- id (integer)', async () => {
const getFilter = sinon.mock();
const getParents = sinon.mock();
const getChildren = sinon.mock();
const getStakeholderByOrganizationId = sinon.mock();
const executeGetStakeholders = getAllStakeholders({
getFilter,
getParents,
getChildren,
getStakeholderByOrganizationId,
});

getFilter.resolves({
count: 1,
stakeholders: [{ id: 1 }],
const stakeholder = new Stakeholder();
const result = await stakeholder.getAllStakeholders({
id: 1,
});
getParents.resolves([]);
getChildren.resolves([]);
getStakeholderByOrganizationId.resolves({
totalCount: 1,
stakeholders: [{ id: 1 }],
});

const result = await executeGetStakeholders(
{
filter: {
where: { id: 1 },
},
},
'/stakeholder',
);

expect(
getStakeholderByOrganizationId.calledWith(1, {
filter: 100,
}),
);
expect(
getFilter.calledWith(1, {
filter: 100,
}),
);
// sinon.assert.notCalled(getFilterById);
expect(result.stakeholders).to.have.length(1);
expect(result.totalCount).to.eql(1);
expect(result.stakeholders[0]).property('id').eq(1);
Expand Down
8 changes: 2 additions & 6 deletions server/repositories/StakeholderRepository.js
Original file line number Diff line number Diff line change
Expand Up @@ -195,9 +195,7 @@ class StakeholderRepository extends BaseRepository {
.getDB()(this._tableName)
.select('*')
.where((builder) => whereBuilder(filter, builder))
.orderBy('org_name', 'asc')
.limit(limitOptions.limit)
.offset(limitOptions.offset);
.orderBy('org_name', 'asc');

if (limitOptions?.limit) {
promise = promise.limit(limitOptions.limit);
Expand All @@ -224,9 +222,7 @@ class StakeholderRepository extends BaseRepository {
.select('*')
.where((builder) => builder.whereIn('id', relatedIds))
.andWhere({ ...filter })
.orderBy('org_name', 'asc')
.limit(limitOptions.limit)
.offset(limitOptions.offset);
.orderBy('org_name', 'asc');

if (limitOptions?.limit) {
promise = promise.limit(limitOptions.limit);
Expand Down

0 comments on commit f4dc14d

Please sign in to comment.