Skip to content

Commit

Permalink
fix tests
Browse files Browse the repository at this point in the history
  • Loading branch information
jonathanbataire committed Jan 14, 2025
1 parent 8c4f3c8 commit b4496f6
Show file tree
Hide file tree
Showing 8 changed files with 41 additions and 48 deletions.
4 changes: 2 additions & 2 deletions src/config/config-factory.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@ export default async function getConfigByKey(key: string = 'CHIS-KE'): Promise<P
}

export function getConfigUploadDirectory (): string {
const configDir = path.join(__dirname,'..', 'config_uploads');
if(!fs.existsSync(configDir)) {
const configDir = path.join(__dirname, '..', 'config_uploads');
if (!fs.existsSync(configDir)) {
fs.mkdirSync(configDir);
}
return configDir;
Expand Down
2 changes: 1 addition & 1 deletion src/routes/app.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { FastifyInstance, FastifyReply, FastifyRequest } from 'fastify';

import Auth from '../lib/authentication';
import { ChtApi } from '../lib/cht-api';
import { Config, ConfigSystem, PartnerConfig } from '../config';
import { Config, ConfigSystem } from '../config';
import DirectiveModel from '../services/directive-model';
import RemotePlaceCache from '../lib/remote-place-cache';
import RemotePlaceResolver from '../lib/remote-place-resolver';
Expand Down
43 changes: 18 additions & 25 deletions test/config.spec.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { expect } from 'chai';

import { Config, PartnerConfig } from '../src/config';
import { CONFIG_MAP } from '../src/config/config-factory';
import { DEFAULT_CONFIG_MAP } from '../src/config/config-factory';
import { mockSimpleContactType } from './mocks';

const mockPartnerConfig = (): PartnerConfig => ({
Expand All @@ -18,25 +18,22 @@ describe('config', () => {
Config.assertValid(mockConfig);
});

it('assert on unknown property type', () => {
it('assert on unknown property type', async () => {
const mockConfig = mockPartnerConfig();
mockConfig.config.contact_types[0].hierarchy[0].type = 'unknown';
const assertion = () => Config.assertValid(mockConfig);
expect(assertion).to.throw('type "unknown"');
await expect(Config.assertValid(mockConfig)).to.be.rejectedWith('type "unknown"');
});

it('place name is always required', () => {
it('place name is always required', async () => {
const mockConfig = mockPartnerConfig();
mockConfig.config.contact_types[0].place_properties.shift();
const assertion = () => Config.assertValid(mockConfig);
expect(assertion).to.throw('"name"');
await expect(Config.assertValid(mockConfig)).to.be.rejectedWith('"name"');
});

it('contact name is always required', () => {
it('contact name is always required', async () => {
const mockConfig = mockPartnerConfig();
mockConfig.config.contact_types[0].contact_properties.shift();
const assertion = () => Config.assertValid(mockConfig);
expect(assertion).to.throw('"name"');
await expect(Config.assertValid(mockConfig)).to.be.rejectedWith('"name"');
});

it('contact_properties can have unique attributes', () => {
Expand All @@ -45,38 +42,34 @@ describe('config', () => {
Config.assertValid(mockConfig);
});

it('hierarchy properties cannot have unique attributes', () => {
it('hierarchy properties cannot have unique attributes', async () => {
const mockConfig = mockPartnerConfig();
mockConfig.config.contact_types[0].hierarchy[0].unique = 'parent';
const assertion = () => Config.assertValid(mockConfig);
expect(assertion).to.throw('with "unique" values');
await expect(Config.assertValid(mockConfig)).to.be.rejectedWith('with "unique" values');
});

it('parent hierarchy level is required', () => {
it('parent hierarchy level is required',async () => {
const mockConfig = mockPartnerConfig();
mockConfig.config.contact_types[0].hierarchy[0].level = 2;
const assertion = () => Config.assertValid(mockConfig);
expect(assertion).to.throw('with parent level');
await expect(Config.assertValid(mockConfig)).to.be.rejectedWith('with parent level');
});

it('#124 - cannot have generated property in hierarchy', () => {
it('#124 - cannot have generated property in hierarchy', async () => {
const mockConfig = mockPartnerConfig();
mockConfig.config.contact_types[0].hierarchy[0].type = 'generated';
const assertion = () => Config.assertValid(mockConfig);
expect(assertion).to.throw('cannot be of type "generated"');
await expect(Config.assertValid(mockConfig)).to.be.rejectedWith('cannot be of type "generated"');
});

it('#124 - cannot have generated property as replacement_property', () => {
it('#124 - cannot have generated property as replacement_property', async () => {
const mockConfig = mockPartnerConfig();
mockConfig.config.contact_types[0].replacement_property.type = 'generated';
const assertion = () => Config.assertValid(mockConfig);
expect(assertion).to.throw('cannot be of type "generated"');
await expect(Config.assertValid(mockConfig)).to.be.rejectedWith('cannot be of type "generated"');
});

const configs = Object.entries(CONFIG_MAP);
const configs = Object.entries(DEFAULT_CONFIG_MAP);
for (const [configName, partnerConfig] of configs) {
it(`config ${configName} is valid`, () => {
Config.assertValid(partnerConfig);
it(`config ${configName} is valid`, async () => {
await Config.assertValid(partnerConfig);
});
}
});
12 changes: 6 additions & 6 deletions test/lib/manage-hierarchy.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ describe('lib/manage-hierarchy.ts', () => {
source_SUBCOUNTY: 'from sub',
destination_SUBCOUNTY: 'to sub',
};
const contactType = Config.getContactType('c_community_health_unit');
const contactType = await Config.getContactType('c_community_health_unit');
const sessionCache = new SessionCache();

const jobParams = await ManageHierarchyLib.getJobDetails(formData, contactType, sessionCache, chtApiWithDocs());
Expand All @@ -64,7 +64,7 @@ describe('lib/manage-hierarchy.ts', () => {
source_replacement: 'c-h-u',
destination_SUBCOUNTY: 'to sub',
};
const contactType = Config.getContactType('c_community_health_unit');
const contactType = await Config.getContactType('c_community_health_unit');
const sessionCache = new SessionCache();

const actual = ManageHierarchyLib.getJobDetails(formData, contactType, sessionCache, mockChtApi([], chuDocs));
Expand All @@ -78,7 +78,7 @@ describe('lib/manage-hierarchy.ts', () => {
source_SUBCOUNTY: 'from SUB',
destination_SUBCOUNTY: 'from sub',
};
const contactType = Config.getContactType('c_community_health_unit');
const contactType = await Config.getContactType('c_community_health_unit');
const sessionCache = new SessionCache();

const actual = ManageHierarchyLib.getJobDetails(formData, contactType, sessionCache, chtApiWithDocs());
Expand All @@ -92,7 +92,7 @@ describe('lib/manage-hierarchy.ts', () => {
source_SUBCOUNTY: 'from SUB',
destination_SUBCOUNTY: 'invalid sub',
};
const contactType = Config.getContactType('c_community_health_unit');
const contactType = await Config.getContactType('c_community_health_unit');
const sessionCache = new SessionCache();

const actual = ManageHierarchyLib.getJobDetails(formData, contactType, sessionCache, chtApiWithDocs());
Expand All @@ -109,7 +109,7 @@ describe('lib/manage-hierarchy.ts', () => {
destination_SUBCOUNTY: 'to sub',
destination_replacement: 'destination',
};
const contactType = Config.getContactType('c_community_health_unit');
const contactType = await Config.getContactType('c_community_health_unit');
const sessionCache = new SessionCache();

const jobParams = await ManageHierarchyLib.getJobDetails(formData, contactType, sessionCache, chtApiWithDocs());
Expand All @@ -131,7 +131,7 @@ describe('lib/manage-hierarchy.ts', () => {
source_replacement: 'c-h-u',
source_SUBCOUNTY: 'from sub'
};
const contactType = Config.getContactType('c_community_health_unit');
const contactType = await Config.getContactType('c_community_health_unit');
const sessionCache = new SessionCache();

const jobParams = await ManageHierarchyLib.getJobDetails(formData, contactType, sessionCache, chtApiWithDocs());
Expand Down
2 changes: 1 addition & 1 deletion test/mocks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ export const mockSimpleContactType = (
};

export async function createChu(subcounty: ChtDoc, chu_name: string, sessionCache: any, chtApi: ChtApi, dataOverrides?: any): Promise<Place> {
const chuType = Config.getContactType('c_community_health_unit');
const chuType = await Config.getContactType('c_community_health_unit');
const chuData = Object.assign({
hierarchy_SUBCOUNTY: subcounty.name,
place_name: chu_name,
Expand Down
2 changes: 1 addition & 1 deletion test/services/place-factory.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ describe('services/place-factory.ts', () => {
.onThirdCall().resolves([toReplace]);

const singleCsvBuffer = fs.readFileSync('./test/single-replace.csv');
const chpType = Config.getContactType('d_community_health_volunteer_area');
const chpType = await Config.getContactType('d_community_health_volunteer_area');

const places: Place[] = await PlaceFactory.createFromCsv(singleCsvBuffer, chpType, sessionCache, chtApi);
expect(places).to.have.property('length', 1);
Expand Down
2 changes: 1 addition & 1 deletion test/services/upload-manager.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@ describe('services/upload-manager.ts', () => {
.onSecondCall().resolves([]);

const chu_name = 'new chu';
const chpType = Config.getContactType('d_community_health_volunteer_area');
const chpType = await Config.getContactType('d_community_health_volunteer_area');
const chpData = {
hierarchy_CHU: chu_name,
place_name: 'new chp',
Expand Down
22 changes: 11 additions & 11 deletions test/warnings.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ describe('warnings', () => {
const sessionCache = new SessionCache();
const chtApi = mockChtApi([subcounty], [chuDoc], [chpDoc]);

const chuType = Config.getContactType('d_community_health_volunteer_area');
const chuType = await Config.getContactType('d_community_health_volunteer_area');
const chpData = {
hierarchy_SUBCOUNTY: subcounty.name,
hierarchy_CHU: chuDoc.name,
Expand All @@ -94,7 +94,7 @@ describe('warnings', () => {
const sessionCache = new SessionCache();
const chtApi = mockChtApi([subcounty], [chuDoc], [chpDoc]);

const chuType = Config.getContactType('d_community_health_volunteer_area');
const chuType = await Config.getContactType('d_community_health_volunteer_area');
const chpData: any = {
hierarchy_SUBCOUNTY: subcounty.name,
hierarchy_CHU: chuDoc.name,
Expand All @@ -120,7 +120,7 @@ describe('warnings', () => {
const sessionCache = new SessionCache();
const chtApi = mockChtApi([subcounty], [chuDoc], [chpDoc]);

const chuType = Config.getContactType('d_community_health_volunteer_area');
const chuType = await Config.getContactType('d_community_health_volunteer_area');
const chpData: any = {
hierarchy_SUBCOUNTY: subcounty.name,
hierarchy_CHU: chuDoc.name,
Expand All @@ -145,7 +145,7 @@ describe('warnings', () => {
const sessionCache = new SessionCache();
const chtApi = mockChtApi([subcounty], [chuDoc], [chpDoc]);

const chuType = Config.getContactType('d_community_health_volunteer_area');
const chuType = await Config.getContactType('d_community_health_volunteer_area');
const chpData: any = {
hierarchy_SUBCOUNTY: subcounty.name,
hierarchy_CHU: chuDoc.name,
Expand Down Expand Up @@ -193,7 +193,7 @@ describe('warnings', () => {
const sessionCache = new SessionCache();
const chtApi = mockChtApi([subcounty], [chuDoc], [chpDoc]);

const chuType = Config.getContactType('d_community_health_volunteer_area');
const chuType = await Config.getContactType('d_community_health_volunteer_area');
const chuData = {
hierarchy_SUBCOUNTY: subcounty.name,
hierarchy_CHU: chuDoc.name,
Expand All @@ -209,7 +209,7 @@ describe('warnings', () => {
const sessionCache = new SessionCache();
const chtApi = mockChtApi([subcounty], [chuDoc], [chpDoc]);

const chuType = Config.getContactType('d_community_health_volunteer_area');
const chuType = await Config.getContactType('d_community_health_volunteer_area');
const chpData: any = {
hierarchy_SUBCOUNTY: subcounty.name,
hierarchy_CHU: 'dne1',
Expand All @@ -235,7 +235,7 @@ describe('warnings', () => {
const chtApi = mockChtApi([subcounty], [chuDoc], []);

const singleCsvBuffer = fs.readFileSync('./test/multiple.csv');
const chpType = Config.getContactType('d_community_health_volunteer_area');
const chpType = await Config.getContactType('d_community_health_volunteer_area');

const places: Place[] = await PlaceFactory.createFromCsv(singleCsvBuffer, chpType, sessionCache, chtApi);
expect(places).to.have.property('length', 2);
Expand All @@ -250,7 +250,7 @@ describe('warnings', () => {
const sessionCache = new SessionCache();
const chtApi = mockChtApi([subcounty], [chuDoc], [chpDoc]);

const chuType = Config.getContactType('d_community_health_volunteer_area');
const chuType = await Config.getContactType('d_community_health_volunteer_area');
const chpData = {
hierarchy_SUBCOUNTY: subcounty.name,
hierarchy_CHU: chuDoc.name,
Expand All @@ -275,7 +275,7 @@ describe('warnings', () => {
const sessionCache = new SessionCache();
const chtApi = mockChtApi([subcounty], [chuDoc], [chpDoc]);

const chuType = Config.getContactType('d_community_health_volunteer_area');
const chuType = await Config.getContactType('d_community_health_volunteer_area');
const chpData = {
hierarchy_SUBCOUNTY: subcounty.name,
hierarchy_CHU: chuDoc.name,
Expand All @@ -297,7 +297,7 @@ describe('warnings', () => {
it('warn if a created place has same phone number as staged place', async () => {
const sessionCache = new SessionCache();
const chtApi = mockChtApi([subcounty], [chuDoc], []);
const chuType = Config.getContactType('d_community_health_volunteer_area');
const chuType = await Config.getContactType('d_community_health_volunteer_area');
const chpData = {
hierarchy_SUBCOUNTY: subcounty.name,
hierarchy_CHU: chuDoc.name,
Expand Down Expand Up @@ -330,7 +330,7 @@ describe('warnings', () => {
};
const chtApi = mockChtApi([subcounty], [chuDoc, secondChu]);

const chuType = Config.getContactType('c_community_health_unit');
const chuType = await Config.getContactType('c_community_health_unit');
const chuData = {
hierarchy_SUBCOUNTY: subcounty.name,
hierarchy_replacement: chuDoc.name,
Expand Down

0 comments on commit b4496f6

Please sign in to comment.