UNPKG

infect-frontend

Version:
127 lines (109 loc) 3.13 kB
import test from 'tape'; import fetchMock from 'fetch-mock'; import ResistancesFetcher from './resistancesFetcher'; import Store from '../../helpers/store'; import Bacterium from '../bacteria/bacterium'; import { observable } from 'mobx'; function setupFetcher() { const antibiotics = { get() { return { values() { return [{ name: 'amoxicillin name', identifier: 'amoxicillin', id: 4, }]; }, }; }, }; const bacteria = { get() { return { values() { return [new Bacterium(5, 'acinetobacter sp.')]; }, }; }, remove() {}, }; return { bacteria, antibiotics, }; } function setupBodyData() { return { justSomeProperty: true, values: [{ bacteriumId: 5, compoundId: 4, sampleCount: 100, resistantPercent: 100, confidenceInterval: { lowerBound: 75, upperBound: 100, }, }], }; } test('handles resistance data correctly', async (t) => { fetchMock.mock('/test', { status: 200, body: setupBodyData(), }); const { antibiotics, bacteria } = setupFetcher(); const store = new Store([], () => 2); const stores = { antibiotics, bacteria, }; const fetcher = new ResistancesFetcher('/test', store, {}, [], stores, { getFiltersByType: () => {}, }); await fetcher.getData(); t.equals(store.get().size, 1); const result = store.getById(2); t.equals(result.antibiotic.name, 'amoxicillin name'); t.equals(result.bacterium.name, 'acinetobacter sp.'); t.equals(result.values.length, 1); t.equals(result.values[0].sampleSize, 100); fetchMock.restore(); t.end(); }); test('handles filter updates', async (t) => { const filterData = setupBodyData(); filterData.values[0].resistantPercent = 99; fetchMock .mock('/test?filter={"region":[3,6]}', { status: 200, body: filterData, }/*, { headers: { filter: '{"region":[3,6]}', }, }*/) .mock('/test', { status: 200, body: setupBodyData(), }); const { antibiotics, bacteria } = setupFetcher(); const store = new Store([], () => 2); const stores = { antibiotics, bacteria, }; const fetcher = new ResistancesFetcher('/test', store, {}, [], stores, { getFiltersByType: () => {}, }); await fetcher.getData(); t.equals(store.getById(2).values[0].value, 1); // Filtered data was fetched and parsed await fetcher.getDataForFilters({ region: [3, 6] }); t.equals(store.getById(2).values[0].value, 0.99); // const calls = fetchMock.calls(); // console.log(JSON.stringify(calls, null, 2)); fetchMock.restore(); t.end(); });