Skip to content

Commit bd3eef0

Browse files
committed
test(chart): add chart drill option model tests
1 parent a34b457 commit bd3eef0

File tree

1 file changed

+321
-0
lines changed

1 file changed

+321
-0
lines changed
Lines changed: 321 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,321 @@
1+
/**
2+
* Datart
3+
*
4+
* Copyright 2021
5+
*
6+
* Licensed under the Apache License, Version 2.0 (the "License");
7+
* you may not use this file except in compliance with the License.
8+
* You may obtain a copy of the License at
9+
*
10+
* http://www.apache.org/licenses/LICENSE-2.0
11+
*
12+
* Unless required by applicable law or agreed to in writing, software
13+
* distributed under the License is distributed on an "AS IS" BASIS,
14+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
* See the License for the specific language governing permissions and
16+
* limitations under the License.
17+
*/
18+
19+
import { ChartDataViewFieldCategory, DataViewFieldType } from 'app/constants';
20+
import { ChartDrillOption, DrillMode } from '../ChartDrillOption';
21+
22+
describe('ChartDrillOption Test', () => {
23+
test('should init model', () => {
24+
const fields = [];
25+
const option = new ChartDrillOption(fields);
26+
expect(option).not.toBeNull();
27+
expect(option.mode).toEqual(DrillMode.Normal);
28+
expect(option.canSelect).toBeTruthy();
29+
expect(option.isSelectedDrill).toBeFalsy();
30+
expect(option.getAllFields()).toEqual(fields);
31+
expect(option.getDrilledFields()).toEqual([]);
32+
});
33+
34+
test('should get original fields', () => {
35+
const fields = [
36+
{
37+
colName: '1',
38+
type: DataViewFieldType.STRING,
39+
category: ChartDataViewFieldCategory.Field,
40+
},
41+
{
42+
colName: '2',
43+
type: DataViewFieldType.STRING,
44+
category: ChartDataViewFieldCategory.Field,
45+
},
46+
];
47+
const option = new ChartDrillOption(fields);
48+
expect(option.getAllFields()).toEqual(fields);
49+
});
50+
51+
test('should toggle select drill status', () => {
52+
const fields = [];
53+
const option = new ChartDrillOption(fields);
54+
expect(option.isSelectedDrill).toBeFalsy();
55+
option.toggleSelectedDrill();
56+
expect(option.isSelectedDrill).toBeTruthy();
57+
});
58+
59+
test('should get drill down fields', () => {
60+
const fields = [
61+
{
62+
colName: '1',
63+
type: DataViewFieldType.STRING,
64+
category: ChartDataViewFieldCategory.Field,
65+
},
66+
{
67+
colName: '2',
68+
type: DataViewFieldType.STRING,
69+
category: ChartDataViewFieldCategory.Field,
70+
},
71+
{
72+
colName: '3',
73+
type: DataViewFieldType.STRING,
74+
category: ChartDataViewFieldCategory.Field,
75+
},
76+
];
77+
const option = new ChartDrillOption(fields);
78+
expect(option.getAllDrillDownFields()).toEqual([]);
79+
expect(option.mode).toEqual(DrillMode.Normal);
80+
option.drillDown();
81+
expect(option.mode).toEqual(DrillMode.Drill);
82+
expect(option.getAllDrillDownFields()).toEqual([
83+
{
84+
field: {
85+
colName: '1',
86+
type: DataViewFieldType.STRING,
87+
category: ChartDataViewFieldCategory.Field,
88+
},
89+
condition: undefined,
90+
},
91+
]);
92+
expect(option.getDrilledFields()).toEqual(fields.slice(0, 2));
93+
expect(option.getCurrentFields()).toEqual([
94+
{
95+
colName: '2',
96+
type: DataViewFieldType.STRING,
97+
category: ChartDataViewFieldCategory.Field,
98+
},
99+
]);
100+
});
101+
102+
test('should get drill down fields and filter', () => {
103+
const fields = [
104+
{
105+
colName: '1',
106+
type: DataViewFieldType.STRING,
107+
category: ChartDataViewFieldCategory.Field,
108+
},
109+
{
110+
colName: '2',
111+
type: DataViewFieldType.STRING,
112+
category: ChartDataViewFieldCategory.Field,
113+
},
114+
{
115+
colName: '3',
116+
type: DataViewFieldType.STRING,
117+
category: ChartDataViewFieldCategory.Field,
118+
},
119+
];
120+
const option = new ChartDrillOption(fields);
121+
option.drillDown({ '1': 0 });
122+
expect(option.getAllDrillDownFields()).toEqual([
123+
{
124+
field: {
125+
colName: '1',
126+
type: DataViewFieldType.STRING,
127+
category: ChartDataViewFieldCategory.Field,
128+
},
129+
condition: {
130+
name: '1',
131+
type: 1022,
132+
value: 0,
133+
visualType: '',
134+
operator: 'EQ',
135+
children: undefined,
136+
},
137+
},
138+
]);
139+
});
140+
141+
test('should get fields when selected drill', () => {
142+
const fields = [
143+
{
144+
colName: '1',
145+
type: DataViewFieldType.STRING,
146+
category: ChartDataViewFieldCategory.Field,
147+
},
148+
{
149+
colName: '2',
150+
type: DataViewFieldType.STRING,
151+
category: ChartDataViewFieldCategory.Field,
152+
},
153+
{
154+
colName: '3',
155+
type: DataViewFieldType.STRING,
156+
category: ChartDataViewFieldCategory.Field,
157+
},
158+
];
159+
const option = new ChartDrillOption(fields);
160+
option.toggleSelectedDrill();
161+
option.drillDown();
162+
expect(option.isSelectedDrill).toBeTruthy();
163+
expect(option.mode).toEqual(DrillMode.Drill);
164+
expect(option.getCurrentFields()).toEqual([
165+
{
166+
colName: '2',
167+
type: DataViewFieldType.STRING,
168+
category: ChartDataViewFieldCategory.Field,
169+
},
170+
]);
171+
});
172+
173+
test('should get fields when drill up', () => {
174+
const fields = [
175+
{
176+
colName: '1',
177+
type: DataViewFieldType.STRING,
178+
category: ChartDataViewFieldCategory.Field,
179+
},
180+
{
181+
colName: '2',
182+
type: DataViewFieldType.STRING,
183+
category: ChartDataViewFieldCategory.Field,
184+
},
185+
{
186+
colName: '3',
187+
type: DataViewFieldType.STRING,
188+
category: ChartDataViewFieldCategory.Field,
189+
},
190+
];
191+
const option = new ChartDrillOption(fields);
192+
expect(option.getAllDrillDownFields()).toEqual([]);
193+
expect(option.mode).toEqual(DrillMode.Normal);
194+
option.drillDown();
195+
option.drillDown();
196+
expect(option.mode).toEqual(DrillMode.Drill);
197+
option.drillUp();
198+
expect(option.getCurrentFields()).toEqual([
199+
{
200+
colName: '2',
201+
type: DataViewFieldType.STRING,
202+
category: ChartDataViewFieldCategory.Field,
203+
},
204+
]);
205+
});
206+
207+
test('should rollback to normal status when drill up to beginning', () => {
208+
const fields = [
209+
{
210+
colName: '1',
211+
type: DataViewFieldType.STRING,
212+
category: ChartDataViewFieldCategory.Field,
213+
},
214+
{
215+
colName: '2',
216+
type: DataViewFieldType.STRING,
217+
category: ChartDataViewFieldCategory.Field,
218+
},
219+
{
220+
colName: '3',
221+
type: DataViewFieldType.STRING,
222+
category: ChartDataViewFieldCategory.Field,
223+
},
224+
];
225+
const option = new ChartDrillOption(fields);
226+
expect(option.getAllDrillDownFields()).toEqual([]);
227+
expect(option.mode).toEqual(DrillMode.Normal);
228+
option.drillDown();
229+
expect(option.mode).toEqual(DrillMode.Drill);
230+
option.drillUp();
231+
expect(option.mode).toEqual(DrillMode.Normal);
232+
expect(option.getCurrentFields()).toEqual(undefined);
233+
});
234+
235+
test('should get expand fields', () => {
236+
const fields = [
237+
{
238+
colName: '1',
239+
type: DataViewFieldType.STRING,
240+
category: ChartDataViewFieldCategory.Field,
241+
},
242+
{
243+
colName: '2',
244+
type: DataViewFieldType.STRING,
245+
category: ChartDataViewFieldCategory.Field,
246+
},
247+
{
248+
colName: '3',
249+
type: DataViewFieldType.STRING,
250+
category: ChartDataViewFieldCategory.Field,
251+
},
252+
];
253+
const option = new ChartDrillOption(fields);
254+
expect(option.getAllDrillDownFields()).toEqual([]);
255+
expect(option.mode).toEqual(DrillMode.Normal);
256+
option.expandDown();
257+
expect(option.mode).toEqual(DrillMode.Expand);
258+
expect(option.getCurrentFields()).toEqual(fields.slice(0, 2));
259+
expect(option.getDrilledFields()).toEqual(fields.slice(0, 2));
260+
});
261+
262+
test('should get fields when expand up', () => {
263+
const fields = [
264+
{
265+
colName: '1',
266+
type: DataViewFieldType.STRING,
267+
category: ChartDataViewFieldCategory.Field,
268+
},
269+
{
270+
colName: '2',
271+
type: DataViewFieldType.STRING,
272+
category: ChartDataViewFieldCategory.Field,
273+
},
274+
{
275+
colName: '3',
276+
type: DataViewFieldType.STRING,
277+
category: ChartDataViewFieldCategory.Field,
278+
},
279+
];
280+
const option = new ChartDrillOption(fields);
281+
expect(option.getAllDrillDownFields()).toEqual([]);
282+
expect(option.mode).toEqual(DrillMode.Normal);
283+
option.expandDown();
284+
option.expandDown();
285+
expect(option.mode).toEqual(DrillMode.Expand);
286+
option.expandUp();
287+
expect(option.getCurrentFields()).toEqual(fields.slice(0, 2));
288+
});
289+
290+
test('should clear all status when rollUp', () => {
291+
const fields = [
292+
{
293+
colName: '1',
294+
type: DataViewFieldType.STRING,
295+
category: ChartDataViewFieldCategory.Field,
296+
},
297+
{
298+
colName: '2',
299+
type: DataViewFieldType.STRING,
300+
category: ChartDataViewFieldCategory.Field,
301+
},
302+
];
303+
const option = new ChartDrillOption(fields);
304+
expect(option).not.toBeNull();
305+
expect(option.mode).toEqual(DrillMode.Normal);
306+
expect(option.canSelect).toBeTruthy();
307+
expect(option.isSelectedDrill).toBeFalsy();
308+
expect(option.getAllFields()).toEqual(fields);
309+
expect(option.getDrilledFields()).toEqual([]);
310+
311+
option.drillDown();
312+
option.rollUp();
313+
314+
expect(option).not.toBeNull();
315+
expect(option.mode).toEqual(DrillMode.Normal);
316+
expect(option.canSelect).toBeTruthy();
317+
expect(option.isSelectedDrill).toBeFalsy();
318+
expect(option.getAllFields()).toEqual(fields);
319+
expect(option.getDrilledFields()).toEqual([]);
320+
});
321+
});

0 commit comments

Comments
 (0)