-
Notifications
You must be signed in to change notification settings - Fork 932
/
Copy pathutils.test.js
146 lines (121 loc) · 4.47 KB
/
utils.test.js
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
import { getPageValue, buildCSV, createCSVDownload, escapeDangerousCSVCharacters } from '../src/utils';
import { spy } from 'sinon';
import { assert } from 'chai';
describe('utils.js', () => {
describe('escapeDangerousCSVCharacters', () => {
it('properly escapes the first character in a string if it can be used for injection', () => {
assert.strictEqual(escapeDangerousCSVCharacters('+SUM(1+1)'), "'+SUM(1+1)");
assert.strictEqual(escapeDangerousCSVCharacters('-SUM(1+1)'), "'-SUM(1+1)");
assert.strictEqual(escapeDangerousCSVCharacters('=SUM(1+1)'), "'=SUM(1+1)");
assert.strictEqual(escapeDangerousCSVCharacters('@SUM(1+1)'), "'@SUM(1+1)");
assert.equal(escapeDangerousCSVCharacters(123), 123);
});
});
describe('getPageValue', () => {
it('returns the highest in bounds page value when page is out of bounds and count is greater than rowsPerPage', () => {
const count = 30;
const rowsPerPage = 10;
const page = 5;
const actualResult = getPageValue(count, rowsPerPage, page);
assert.strictEqual(actualResult, 2);
});
it('returns the highest in bounds page value when page is in bounds and count is greater than rowsPerPage', () => {
const count = 30;
const rowsPerPage = 10;
const page = 1;
const actualResult = getPageValue(count, rowsPerPage, page);
assert.strictEqual(actualResult, 1);
});
it('returns the highest in bounds page value when page is out of bounds and count is less than rowsPerPage', () => {
const count = 3;
const rowsPerPage = 10;
const page = 1;
const actualResult = getPageValue(count, rowsPerPage, page);
assert.strictEqual(actualResult, 0);
});
it('returns the highest in bounds page value when page is in bounds and count is less than rowsPerPage', () => {
const count = 3;
const rowsPerPage = 10;
const page = 0;
const actualResult = getPageValue(count, rowsPerPage, page);
assert.strictEqual(actualResult, 0);
});
it('returns the highest in bounds page value when page is out of bounds and count is equal to rowsPerPage', () => {
const count = 10;
const rowsPerPage = 10;
const page = 1;
const actualResult = getPageValue(count, rowsPerPage, page);
assert.strictEqual(actualResult, 0);
});
it('returns the highest in bounds page value when page is in bounds and count is equal to rowsPerPage', () => {
const count = 10;
const rowsPerPage = 10;
const page = 0;
const actualResult = getPageValue(count, rowsPerPage, page);
assert.strictEqual(actualResult, 0);
});
});
describe('buildCSV', () => {
const options = {
downloadOptions: {
separator: ';',
},
onDownload: null,
};
const columns = [
{
name: 'firstname',
download: true,
},
{
name: 'lastname',
download: true,
},
];
it('properly builds a csv when given a non-empty dataset', () => {
const data = [{ data: ['anton', 'abraham'] }, { data: ['berta', 'buchel'] }];
const csv = buildCSV(columns, data, options);
assert.strictEqual(csv, '"firstname";"lastname"\r\n' + '"anton";"abraham"\r\n' + '"berta";"buchel"');
});
it('returns an empty csv with header when given an empty dataset', () => {
const data = [];
const csv = buildCSV(columns, data, options);
assert.strictEqual(csv, '"firstname";"lastname"');
});
});
describe('createCSVDownload', () => {
const columns = [
{
name: 'firstname',
download: true,
},
{
name: 'lastname',
download: true,
},
];
const data = [{ data: ['anton', 'abraham'] }, { data: ['berta', 'buchel'] }];
it('does not call download function if download callback returns `false`', () => {
const options = {
downloadOptions: {
separator: ';',
},
onDownload: () => false,
};
const downloadCSV = spy();
createCSVDownload(columns, data, options, downloadCSV);
assert.strictEqual(downloadCSV.callCount, 0);
});
it('calls download function if download callback returns truthy', () => {
const options = {
downloadOptions: {
separator: ';',
},
onDownload: () => true,
};
const downloadCSV = spy();
createCSVDownload(columns, data, options, downloadCSV);
assert.strictEqual(downloadCSV.callCount, 1);
});
});
});