@vidal-community/vidal-web-components
Version:
Vidal Web Components
129 lines • 8.55 kB
JavaScript
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