Skip to content

Commit ee04a5b

Browse files
committed
fix: add test
1 parent daca0ac commit ee04a5b

File tree

6 files changed

+602
-14
lines changed

6 files changed

+602
-14
lines changed

.gitpod.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
tasks:
2+
- init: yarn install && yarn dev
3+
4+
vscode:
5+
extensions:
6+
- ZixuanChen.vitest-explorer
7+
- svelte.svelte-vscode

package.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88
"license": "MIT",
99
"scripts": {
1010
"build": "tsc",
11-
"dev": "yarn build && cd example && yarn && yarn dev"
11+
"dev": "yarn build && cd example && yarn && yarn dev",
12+
"test": "vitest"
1213
},
1314
"dependencies": {
1415
"csstype": "^3.0.8"
@@ -17,7 +18,8 @@
1718
"commitizen": "^4.2.4",
1819
"cz-conventional-changelog": "3.3.0",
1920
"semantic-release": "^17.4.3",
20-
"typescript": "^4.2.4"
21+
"typescript": "^4.2.4",
22+
"vitest": "^0.31.4"
2123
},
2224
"files": [
2325
"dist"

src/index.test.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { expect, test } from 'vitest';
2+
import { buildStyle } from '.';
3+
4+
test('Object Syntax', () => {
5+
const result = buildStyle({ color: 'red', fontSize: '1px' });
6+
expect(result).toEqual([
7+
['color', 'red'],
8+
['font-size', '1px'],
9+
]);
10+
});
11+
12+
test('Array Syntax', () => {
13+
const result = buildStyle([{ color: 'red' }, { backgroundColor: 'blue' }]);
14+
expect(result).toEqual([
15+
['color', 'red'],
16+
['background-color', 'blue'],
17+
]);
18+
});

src/index.ts

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,25 @@ import type { Properties } from 'csstype';
33
type properties = Properties<string | number>;
44
type Parameters = properties | properties[];
55

6-
const style = (node: HTMLElement, parameters: Parameters) => {
7-
const setStyle = (parameters: Parameters) => {
8-
let properties: properties = {};
9-
if (Array.isArray(parameters)) {
10-
parameters.forEach((value) => {
11-
properties = { ...properties, ...value };
12-
});
13-
} else {
14-
properties = parameters;
15-
}
6+
export const buildStyle = (parameters: Parameters) => {
7+
let properties: properties = {};
8+
if (Array.isArray(parameters)) {
9+
parameters.forEach((value) => {
10+
properties = { ...properties, ...value };
11+
});
12+
} else {
13+
properties = parameters;
14+
}
1615

17-
Object.entries(properties).forEach(([key, value]) => {
18-
key = key.replace(/[A-Z]/, (substring) => '-' + substring.toLowerCase());
16+
return Object.entries(properties).map(([key, value]) => {
17+
key = key.replace(/[A-Z]/, (substring) => '-' + substring.toLowerCase());
18+
return [key, value];
19+
});
20+
};
1921

22+
const style = (node: HTMLElement, parameters: Parameters) => {
23+
const setStyle = (parameters: Parameters) => {
24+
buildStyle(parameters).forEach(([key, value]) => {
2025
node.style.setProperty(key, value);
2126
});
2227
};

vitest.config.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import { defineConfig } from 'vitest/config';
2+
3+
export default defineConfig({});

0 commit comments

Comments
 (0)