-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathInferDomainResponse.test.ts
More file actions
63 lines (56 loc) · 2.37 KB
/
InferDomainResponse.test.ts
File metadata and controls
63 lines (56 loc) · 2.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import { List } from 'immutable';
import { InferDomainResponse } from './InferDomainResponse';
import { QueryColumn } from './QueryColumn';
describe('InferDomainResponse.create', () => {
test('returns empty collections when rawModel is undefined', () => {
const res = InferDomainResponse.create({});
expect(res.data.size).toBe(0);
expect(res.fields.size).toBe(0);
expect(res.reservedFields.size).toBe(0);
expect(res.distinctValues.size).toBe(0);
expect(res.commentLineCount).toBeUndefined();
});
test('converts plain JS data to immutable structures and preserves commentLineCount', () => {
const raw = {
data: [
{ id: 1, name: 'a' },
{ id: 2, name: 'b' },
],
commentLineCount: 3,
};
const res = InferDomainResponse.create(raw);
expect(res.data.size).toBe(2);
// items are immutable Maps after fromJS
expect((res.data.get(0) as any).get('id')).toBe(1);
expect((res.data.get(1) as any).get('name')).toBe('b');
expect(res.commentLineCount).toBe(3);
});
test('maps fields and reservedFields to QueryColumn instances', () => {
const raw = {
fields: [
{ name: 'col1', type: 'string' },
{ name: 'col2', type: 'int' },
],
reservedFields: [{ name: 'reserved', type: 'string' }],
};
const res = InferDomainResponse.create(raw);
expect(res.fields.size).toBe(2);
expect(res.reservedFields.size).toBe(1);
expect(res.fields.get(0) instanceof QueryColumn).toBe(true);
expect(res.fields.get(1) instanceof QueryColumn).toBe(true);
expect(res.reservedFields.get(0) instanceof QueryColumn).toBe(true);
});
test('builds distinctValues map and getDistinctValuesForColumn returns a List', () => {
const raw = {
distinctValues: {
col1: [null, 'a', 'b'],
colEmpty: [],
},
};
const res = InferDomainResponse.create(raw);
const col1List = res.getDistinctValuesForColumn('col1') as List<string>;
expect(col1List.toArray()).toEqual([null, 'a', 'b']);
expect(res.getDistinctValuesForColumn('missing').size).toBe(0);
expect(res.getDistinctValuesForColumn('colEmpty').size).toBe(0);
});
});