Skip to content

Commit 1e45ee7

Browse files
author
fuqiang15
committed
feat:add shared-utils sub package
1 parent bb0c566 commit 1e45ee7

File tree

13 files changed

+4139
-1
lines changed

13 files changed

+4139
-1
lines changed

.eslintrc.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ module.exports = {
1717
},
1818
'overrides': [
1919
{
20-
files: ['packages/dls-color-palette/**/*.spec.js'],
20+
files: ['packages/dls-color-palette/**/*.spec.js', 'packages/shared-utils/**/*.spec.ts'],
2121
env: {
2222
es6: true,
2323
jest: true

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,4 @@ npm-debug.log
55
**/dist
66
**/variables.*
77
**/test/snapshots
8+
**/coverage/

packages/shared-utils/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# `shared-utils`
2+
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
import { mapDatasource } from '../../src/basic/datasource'
2+
3+
const treeData = [
4+
{
5+
value: 1
6+
},
7+
{
8+
value: 2,
9+
children: [
10+
{
11+
value: 20,
12+
children: [
13+
{
14+
value: 201,
15+
},
16+
{
17+
value: 202,
18+
}
19+
]
20+
},
21+
{
22+
value: 21
23+
}
24+
]
25+
},
26+
{
27+
value: 3
28+
}
29+
]
30+
31+
describe('utils/datasource', () => {
32+
it('should map datasource correctly', () => {
33+
expect(mapDatasource(treeData, item => ({
34+
...item,
35+
value: `${item.value}a`
36+
}))).toEqual([
37+
{
38+
value: '1a'
39+
},
40+
{
41+
value: '2a',
42+
children: [
43+
{
44+
value: '20a',
45+
children: [
46+
{
47+
value: '201a',
48+
},
49+
{
50+
value: '202a',
51+
}
52+
]
53+
},
54+
{
55+
value: '21a'
56+
}
57+
]
58+
},
59+
{
60+
value: '3a'
61+
}
62+
])
63+
})
64+
});
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import { toggleClass } from '../../src/basic/dom'
2+
3+
describe('utils/dom', () => {
4+
it('should toggle classes correctly', () => {
5+
let el = document.createElement('div')
6+
el.className = 'a b c d '
7+
document.body.appendChild(el)
8+
9+
toggleClass(el, 'a')
10+
toggleClass(el, 'b', true)
11+
toggleClass(el, 'c')
12+
toggleClass(el, 'd')
13+
toggleClass(el, 'e')
14+
toggleClass(el, 'f', true)
15+
toggleClass(el, 'g', false)
16+
expect(el.classList.contains('a')).toBe(false)
17+
expect(el.classList.contains('b')).toBe(true)
18+
expect(el.classList.contains('c')).toBe(false)
19+
expect(el.classList.contains('d')).toBe(false)
20+
expect(el.classList.contains('e')).toBe(true)
21+
expect(el.classList.contains('f')).toBe(true)
22+
expect(el.classList.contains('g')).toBe(false)
23+
24+
el.parentNode!.removeChild(el)
25+
})
26+
});
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
import { getCheckedSubTree } from '../src/tree'
2+
3+
4+
const treeData = [
5+
{
6+
value: 1
7+
},
8+
{
9+
value: 2,
10+
children: [
11+
{
12+
value: 20,
13+
children: [
14+
{
15+
value: 201,
16+
},
17+
{
18+
value: 202,
19+
}
20+
]
21+
},
22+
{
23+
value: 21
24+
}
25+
]
26+
},
27+
{
28+
value: 3
29+
}
30+
]
31+
32+
describe('tree', () => {
33+
it('getCheckedSubtree should extract checked subtree correctly', () => {
34+
expect(getCheckedSubTree(treeData, [1])).toEqual([treeData[0]])
35+
expect(getCheckedSubTree(treeData, [201, 202])).toEqual([{
36+
value: 2,
37+
children: [
38+
treeData[1].children![0]
39+
]
40+
}])
41+
expect(getCheckedSubTree(treeData, [201])).toEqual([{
42+
value: 2,
43+
children: [
44+
{
45+
value: 20,
46+
children: [
47+
{
48+
value: 201,
49+
}
50+
]
51+
}
52+
]
53+
}])
54+
})
55+
});
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
/*
2+
* For a detailed explanation regarding each configuration property and type check, visit:
3+
* https://jestjs.io/docs/configuration
4+
*/
5+
6+
module.exports = {
7+
preset: 'ts-jest',
8+
clearMocks: true,
9+
10+
// Indicates whether the coverage information should be collected while executing the test
11+
collectCoverage: true,
12+
13+
// The directory where Jest should output its coverage files
14+
coverageDirectory: "coverage",
15+
};

0 commit comments

Comments
 (0)