1 |
|
2 |
|
3 | import { expect } from 'chai';
|
4 | import DataModel from './index';
|
5 |
|
6 | describe('Null/Empty/Invalid Values Representation', () => {
|
7 | const defaultInvalidAwareTypes = DataModel.InvalidAwareTypes.invalidAwareVals();
|
8 |
|
9 | it('should match the default configuration', () => {
|
10 | const defNullValuesMap = {
|
11 | invalid: DataModel.InvalidAwareTypes.NA,
|
12 | nil: DataModel.InvalidAwareTypes.NIL,
|
13 | null: DataModel.InvalidAwareTypes.NULL,
|
14 | undefined: DataModel.InvalidAwareTypes.NA
|
15 | };
|
16 |
|
17 | expect(defaultInvalidAwareTypes).to.eql(defNullValuesMap);
|
18 | });
|
19 |
|
20 | it('should be equal to the newly set configuration', () => {
|
21 | const data = [
|
22 | { name: null, birthday: '1995-07-05', roll: 2 },
|
23 | { name: undefined, birthday: '1996-08-04', roll: null },
|
24 | ];
|
25 | const schema = [
|
26 | { name: 'name', type: 'dimension' },
|
27 | { name: 'birthday', type: 'dimension', subtype: 'temporal', format: '%Y-%m-%d' },
|
28 | { name: 'roll', type: 'measure', defAggFn: 'avg' }
|
29 | ];
|
30 | const config = { undefined: DataModel.InvalidAwareTypes.NULL, };
|
31 |
|
32 | DataModel.configureInvalidAwareTypes(config);
|
33 | const dm = new DataModel(data, schema);
|
34 | const dmData = dm.getData().data;
|
35 |
|
36 | expect(dmData[0][0] instanceof DataModel.InvalidAwareTypes).to.be.true;
|
37 | expect(dmData[0][0]).to.eql(DataModel.InvalidAwareTypes.NULL);
|
38 | expect(dmData[1][0] instanceof DataModel.InvalidAwareTypes).to.be.true;
|
39 | expect(dmData[1][0]).to.eql(DataModel.InvalidAwareTypes.NULL);
|
40 | expect(dmData[1][2] instanceof DataModel.InvalidAwareTypes).to.be.true;
|
41 | expect(dmData[1][2]).to.eql(DataModel.InvalidAwareTypes.NULL);
|
42 | expect(dmData[1][2].value()).to.eql('null');
|
43 | });
|
44 | });
|