UNPKG

@modelx/jsonm

Version:

Construct AI & ML models with JSON using Typescript & Tensorflow

96 lines (90 loc) 4.66 kB
import { getFunctionString, ResolveDataset, ReduceDataset, getDataSet, } from './dataset'; // import { Data, } from '@modelx/data/src/DataSet'; import { Dimensions, } from './constants'; import { dataset0, dataset1, dataset2, dataset3, dataset4, } from './util'; import { getFirstDataset, combineDatasetsOnField, _helper_getBaseDataset, _helper_formatDateField, _helper_setEmptyDates, } from './transforms'; /* import { toBeWithinRange, } from '@modelx/model/src/jest.test'; chai.use(sinonChai); expect.extend({ toBeWithinRange }); */ const mock_dsets = { ds1: [{ selector: 'base-1st', data: 'from ds1 1st' }, { selector: 'base-2nd', data: 'from ds1 2nd' }], ds2: [{ selector: 'base-1st', data: 'from ds2 1st' }, { selector: 'base-3rd', unique_field:'yep', data: 'from ds2 2nd' }], ds3: [{ selector: 'base-1st', data: 'from ds3 1st' }, { selector: 'base-2nd', data: 'from ds3 2nd' }], }; describe('JSON Dataset Transforms', () => { describe('getFirstDataset', () => { it('should return empty data', async() => { const empty = getFirstDataset(); expect(empty).toMatchObject([]); }); it('should return the first dataset', () => { const datasets = { dataset0, dataset1, }; const firstDS = getFirstDataset(datasets); expect(firstDS).toMatchObject(dataset0); }); }); describe('combineDatasetsOnField', () => { it('should throw an error if missing field param', () => { expect(() => { combineDatasetsOnField(); }).toThrow('In order to combine datasets, a field parameter is required'); }) it('should combine dataset on a field', async () => { const datasetsArray = [dataset0, dataset1, dataset2, dataset3, dataset4]; const datasets = await ResolveDataset(datasetsArray); const combined = combineDatasetsOnField({ datasets, field: 'num', }); expect(combined).toEqual(expect.arrayContaining([{ num: 1, some: 'val dataset0 1', some1: 'val dataset1', some2: 'val custom_name_2', some3: 'val dataset3 1', some4: 'val dataset4' }])); // console.log({ combined }); }); }); describe('_helper_getBaseDataset', () => { const datasetsProperties = Object.keys(mock_dsets); it('should return base dataset from datasets', () => { const { baseDataset, baseDatasetPropertyName, } = _helper_getBaseDataset({ datasets: mock_dsets, datasetsProperties, field: 'selector' }); expect(baseDataset).toMatchObject(mock_dsets.ds1); expect(baseDatasetPropertyName).toEqual('ds1'); }); it('should return dataset from specific unique field', () => { const { baseDatasetPropertyName, } = _helper_getBaseDataset({ datasets: mock_dsets, datasetsProperties, field: 'unique_field' }); expect(baseDatasetPropertyName).toEqual('ds2'); // console.log({ baseDataset, baseDatasetPropertyName, }); }); }); describe('_helper_formatDateField', () => { it('should return a combined dataset with formatted dates', () => { const combined = dataset0.map((d, i) => ({ ...d, date: new Date(`March ${(i+3)}, 2020`) })); _helper_formatDateField({ date_field: 'date', dateFormat: 'DDDD', combined }); expect(combined[0].date).toMatch(/Tuesday/gi); }); it('should return a combined dataset with string formatted dates', () => { const combined = dataset0.map((d, i) => ({ ...d, date: new Date(`March ${(i+3)}, 2020`).toISOString() })); _helper_formatDateField({ date_field: 'date', dateFormat: 'DDDD', combined }); expect(combined[0].date).toMatch(/Tuesday/gi); }); }); describe('_helper_setEmptyDates', () => { it('should include dates from start_date to end_date', () => { const dimension = Dimensions.DAILY; const start_date = '2020-02-28'; const end_date = '2020-03-04'; const time_zone = 'America/New_York'; const ds1 = dataset0.map((d, i) => ({ ...d, date: new Date(`March ${(i + 3)}, 2020`).toISOString(), })); const ds2 = dataset1.map((d, i) => ({ ...d, date: new Date(`March ${(i + 3)}, 2020`).toISOString(), })); const datasets = { ds1, ds2 }; const field = 'date'; const datasetsProperties = Object.keys(datasets); const defaultObject = { test: true }; const dates = _helper_setEmptyDates({ dimension, start_date, end_date, time_zone, datasetsProperties, datasets, field, defaultObject, }); expect(dates.length).toBe(6); expect(Object.keys(dates[0])).toEqual(expect.arrayContaining(['test', 'date'])); }); }); })