UNPKG

@vidal-community/vidal-web-components

Version:

Vidal Web Components

129 lines 8.55 kB
import { Dose } from '../model/dose'; import { Unit } from '../model/unit'; import { assert } from '@open-wc/testing'; import { useConversionService } from './conversion-service'; import { ConversionRate } from '../model/conversion-rate'; suite('conversion-service', () => { suite('convert', () => { test('targetUnit (mg) is unit (mg)', () => { const inputUnit = 'vidal://unit/57'; const targetUnit = 'vidal://unit/57'; const inputConversionRate = new ConversionRate(new Unit(targetUnit, 'mg'), new Unit(inputUnit, 'mg'), 1, 0.001); const inputDose = new Dose(2, new Unit(inputUnit, 'mg')); const expectedDose = new Dose(2, new Unit(targetUnit, 'mg')); assert.deepEqual(useConversionService().convertDose(inputDose, targetUnit, [ inputConversionRate, ]), expectedDose); }); test('input dose in g to targetDose in mg with refUnit is g', () => { const inputUnit = 'vidal://unit/35'; const targetUnit = 'vidal://unit/57'; const inputConversionRate = new ConversionRate(new Unit(inputUnit, 'g'), new Unit(targetUnit, 'mg'), 1, 0.001); const inputDose = new Dose(2, new Unit(inputUnit, 'g')); const expectedDose = new Dose(2000, new Unit(targetUnit, 'mg')); const convertedDose = useConversionService().convertDose(inputDose, targetUnit, [inputConversionRate]); assert.equal(convertedDose === null || convertedDose === void 0 ? void 0 : convertedDose.value, expectedDose.value); assert.equal(convertedDose === null || convertedDose === void 0 ? void 0 : convertedDose.unit.uri, expectedDose.unit.uri); assert.equal(convertedDose === null || convertedDose === void 0 ? void 0 : convertedDose.unit.name, expectedDose.unit.name); }); test('input dose in mg to targetDose in g with refUnit is g', () => { const inputUnit = 'vidal://unit/57'; const targetUnit = 'vidal://unit/35'; const inputConversionRate = new ConversionRate(new Unit(targetUnit, 'g'), new Unit(inputUnit, 'mg'), 1, 0.001); const inputDose = new Dose(2000, new Unit(inputUnit, 'mg')); const expectedDose = new Dose(2, new Unit(targetUnit, 'g')); const convertedDose = useConversionService().convertDose(inputDose, targetUnit, [inputConversionRate]); assert.equal(convertedDose === null || convertedDose === void 0 ? void 0 : convertedDose.value, expectedDose.value); assert.equal(convertedDose === null || convertedDose === void 0 ? void 0 : convertedDose.unit.uri, expectedDose.unit.uri); assert.equal(convertedDose === null || convertedDose === void 0 ? void 0 : convertedDose.unit.name, expectedDose.unit.name); }); test('input dose in cp to targetDose in mg with refUnit is g', () => { const inputUnit = 'vidal://unit/129'; const targetUnit = 'vidal://unit/57'; const conversionRateBetweenGrammeAndComprime = new ConversionRate(new Unit('vidal://unit/35', 'g'), new Unit('vidal://unit/129', 'cp'), 1, 1); const conversionRateBetweenGrammeAndMilligramme = new ConversionRate(new Unit('vidal://unit/35', 'g'), new Unit('vidal://unit/57', 'mg'), 1, 0.001); const inputDose = new Dose(5.5, new Unit(inputUnit, 'cp')); const expectedDose = new Dose(5500, new Unit(targetUnit, 'mg')); const convertedDose = useConversionService().convertDose(inputDose, targetUnit, [ conversionRateBetweenGrammeAndComprime, conversionRateBetweenGrammeAndMilligramme, ]); assert.equal(convertedDose === null || convertedDose === void 0 ? void 0 : convertedDose.value, expectedDose.value); assert.equal(convertedDose === null || convertedDose === void 0 ? void 0 : convertedDose.unit.uri, expectedDose.unit.uri); assert.equal(convertedDose === null || convertedDose === void 0 ? void 0 : convertedDose.unit.name, expectedDose.unit.name); }); test('input dose in mg to targetDose in cp with refUnit is g', () => { const inputUnit = 'vidal://unit/57'; const targetUnit = 'vidal://unit/129'; const conversionRateBetweenGrammeAndComprime = new ConversionRate(new Unit('vidal://unit/35', 'g'), new Unit('vidal://unit/129', 'cp'), 1, 1); const conversionRateBetweenGrammeAndMilligramme = new ConversionRate(new Unit('vidal://unit/35', 'g'), new Unit('vidal://unit/57', 'mg'), 1, 0.001); const inputDose = new Dose(5500, new Unit(inputUnit, 'mg')); const expectedDose = new Dose(5.5, new Unit(targetUnit, 'cp')); const convertedDose = useConversionService().convertDose(inputDose, targetUnit, [ conversionRateBetweenGrammeAndComprime, conversionRateBetweenGrammeAndMilligramme, ]); assert.equal(convertedDose === null || convertedDose === void 0 ? void 0 : convertedDose.value, expectedDose.value); assert.equal(convertedDose === null || convertedDose === void 0 ? void 0 : convertedDose.unit.uri, expectedDose.unit.uri); assert.equal(convertedDose === null || convertedDose === void 0 ? void 0 : convertedDose.unit.name, expectedDose.unit.name); }); test('no conversion rates', () => { const inputUnit = 'vidal://unit/57'; const targetUnit = 'vidal://unit/58'; const inputDose = new Dose(2, new Unit(inputUnit, 'mg')); assert.isUndefined(useConversionService().convertDose(inputDose, targetUnit, [])); }); test('no conversion rates but same unit', () => { const inputUnit = 'vidal://unit/60'; const targetUnit = 'vidal://unit/60'; const inputDose = new Dose(2, new Unit(inputUnit, 'ml')); assert.equal(useConversionService().convertDose(inputDose, targetUnit, []), inputDose); }); test('max conversion steps is reached', () => { const inputUnit = 'vidal://unit/57'; const targetUnit = 'vidal://unit/58'; const inputDose = new Dose(2, new Unit(inputUnit, 'mg')); const conversionRate = new ConversionRate(new Unit('vidal://unit/57', 'mg'), new Unit('vidal://unit/129', 'cp'), 1, 1); assert.isUndefined(useConversionService().convertDose(inputDose, targetUnit, [ conversionRate, ])); }); }); suite('find matching uri', () => { test('when it exists directly', () => { const equivalentDrugUnits = [ new Unit('vidal://unit/35', 'g'), new Unit('vidal://unit/57', 'mg'), ]; const matchingUnitUri = useConversionService().findMatchingUnitUri(equivalentDrugUnits, new Unit('vidal://unit/57', 'mg')); assert.equal(matchingUnitUri, 'vidal://unit/57'); }); test("with conversion rate's ref unit", () => { const cp = new Unit('vidal://unit/129', 'cp'); const g = new Unit('vidal://unit/35', 'g'); g.conversionRates = [new ConversionRate(cp, g, 1, 1)]; const mg = new Unit('vidal://unit/57', 'mg'); const equivalentDrugUnits = [g, mg]; const matchingUnitUri = useConversionService().findMatchingUnitUri(equivalentDrugUnits, cp); assert.equal(matchingUnitUri, 'vidal://unit/129'); }); test("with conversion rate's unit", () => { const cp = new Unit('vidal://unit/129', 'cp'); const g = new Unit('vidal://unit/35', 'g'); g.conversionRates = [new ConversionRate(g, cp, 1, 1)]; const mg = new Unit('vidal://unit/57', 'mg'); const equivalentDrugUnits = [g, mg]; const matchingUnitUri = useConversionService().findMatchingUnitUri(equivalentDrugUnits, cp); assert.equal(matchingUnitUri, 'vidal://unit/129'); }); test('when it does not exist', () => { const equivalentDrugUnits = [ new Unit('vidal://unit/35', 'g'), new Unit('vidal://unit/57', 'mg'), ]; const matchingUnitUri = useConversionService().findMatchingUnitUri(equivalentDrugUnits, new Unit('vidal://unit/129', 'cp')); assert.isUndefined(matchingUnitUri); }); }); }); //# sourceMappingURL=conversion-service_test.js.map