Skip to content

Commit 8be2f76

Browse files
authored
Refactor test (#223)
* change `fakeToken` interface * update eslint ignore file list * change `fakeAtImportTokenImporter` interface * change `fakeAtValueTokenImporter` interface
1 parent d0a6685 commit 8be2f76

4 files changed

Lines changed: 68 additions & 48 deletions

File tree

eslint.config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import mizdra from '@mizdra/eslint-config-mizdra';
22

33
/** @type {import('eslint').Linter.Config[]} */
44
export default [
5-
{ ignores: ['**/dist', 'examples'] },
5+
{ ignores: ['**/dist', 'examples', 'crates', 'target', '.vscode-test'] },
66
...mizdra.baseConfigs,
77
...mizdra.typescriptConfigs,
88
...mizdra.nodeConfigs,

packages/core/src/checker.test.ts

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { describe, expect, test } from 'vitest';
22
import { checkCSSModule } from './checker.js';
33
import { createResolver } from './resolver.js';
44
import { fakeCSSModule } from './test/css-module.js';
5-
import { fakeAtImportTokenImporter, fakeAtValueTokenImporter } from './test/token.js';
5+
import { fakeAtImportTokenImporter, fakeAtValueTokenImporter, fakeAtValueTokenImporterValue } from './test/token.js';
66
import type { ExportBuilder } from './type.js';
77

88
const resolver = createResolver({}, undefined);
@@ -12,8 +12,8 @@ describe('checkCSSModule', () => {
1212
const cssModule = fakeCSSModule({
1313
fileName: '/a.module.css',
1414
tokenImporters: [
15-
fakeAtImportTokenImporter('./b.module.css'),
16-
fakeAtValueTokenImporter('./c.module.css', ['c_1']),
15+
fakeAtImportTokenImporter({ from: './b.module.css' }),
16+
fakeAtValueTokenImporter({ from: './c.module.css', values: [fakeAtValueTokenImporterValue({ name: 'c_1' })] }),
1717
],
1818
});
1919
const exportBuilder: ExportBuilder = {
@@ -57,7 +57,12 @@ describe('checkCSSModule', () => {
5757
test('report diagnostics for non-exported token', () => {
5858
const cssModule = fakeCSSModule({
5959
fileName: '/a.module.css',
60-
tokenImporters: [fakeAtValueTokenImporter('./b.module.css', ['b_1', 'b_2'])],
60+
tokenImporters: [
61+
fakeAtValueTokenImporter({
62+
from: './b.module.css',
63+
values: [fakeAtValueTokenImporterValue({ name: 'b_1' }), fakeAtValueTokenImporterValue({ name: 'b_2' })],
64+
}),
65+
],
6166
});
6267
const exportBuilder: ExportBuilder = {
6368
build: () => ({ allTokens: ['b_1'] }),
@@ -87,7 +92,7 @@ describe('checkCSSModule', () => {
8792
test('ignore token importers for unresolvable modules', () => {
8893
const cssModule = fakeCSSModule({
8994
fileName: '/a.module.css',
90-
tokenImporters: [fakeAtImportTokenImporter('./unresolvable.module.css')],
95+
tokenImporters: [fakeAtImportTokenImporter({ from: './unresolvable.module.css' })],
9196
});
9297
const exportBuilder: ExportBuilder = {
9398
build: () => ({ allTokens: [] }),
@@ -103,8 +108,8 @@ describe('checkCSSModule', () => {
103108
const cssModule = fakeCSSModule({
104109
fileName: '/a.module.css',
105110
tokenImporters: [
106-
fakeAtImportTokenImporter('./b.module.css'),
107-
fakeAtValueTokenImporter('./c.module.css', ['c_1']),
111+
fakeAtImportTokenImporter({ from: './b.module.css' }),
112+
fakeAtValueTokenImporter({ from: './c.module.css', values: [fakeAtValueTokenImporterValue({ name: 'c_1' })] }),
108113
],
109114
});
110115
const exportBuilder: ExportBuilder = {

packages/core/src/export-builder.test.ts

Lines changed: 37 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,12 @@ import { createExportBuilder } from './export-builder.js';
33
import { resolve } from './path.js';
44
import { createResolver } from './resolver.js';
55
import { fakeCSSModule } from './test/css-module.js';
6-
import { fakeAtImportTokenImporter, fakeAtValueTokenImporter, fakeToken } from './test/token.js';
6+
import {
7+
fakeAtImportTokenImporter,
8+
fakeAtValueTokenImporter,
9+
fakeAtValueTokenImporterValue,
10+
fakeToken,
11+
} from './test/token.js';
712

813
const resolver = createResolver({}, undefined);
914

@@ -16,7 +21,7 @@ describe('ExportBuilder', () => {
1621
});
1722
const cssModule = fakeCSSModule({
1823
fileName: resolve('/a.css'),
19-
localTokens: [fakeToken('a_1')],
24+
localTokens: [fakeToken({ name: 'a_1' })],
2025
});
2126
expect(exportBuilder.build(cssModule)).toMatchInlineSnapshot(`
2227
{
@@ -32,12 +37,12 @@ describe('ExportBuilder', () => {
3237
if (path === resolve('/b.module.css')) {
3338
return fakeCSSModule({
3439
fileName: resolve('/b.module.css'),
35-
localTokens: [fakeToken('b_1')],
40+
localTokens: [fakeToken({ name: 'b_1' })],
3641
});
3742
} else if (path === resolve('/c.module.css')) {
3843
return fakeCSSModule({
3944
fileName: resolve('/c.module.css'),
40-
localTokens: [fakeToken('c_1'), fakeToken('c_2')],
45+
localTokens: [fakeToken({ name: 'c_1' }), fakeToken({ name: 'c_2' })],
4146
});
4247
} else {
4348
return undefined;
@@ -52,10 +57,10 @@ describe('ExportBuilder', () => {
5257
});
5358
const cssModule = fakeCSSModule({
5459
fileName: resolve('/a.module.css'),
55-
localTokens: [fakeToken('a_1')],
60+
localTokens: [fakeToken({ name: 'a_1' })],
5661
tokenImporters: [
57-
fakeAtImportTokenImporter('./b.module.css'),
58-
fakeAtValueTokenImporter('./c.module.css', ['c_1']),
62+
fakeAtImportTokenImporter({ from: './b.module.css' }),
63+
fakeAtValueTokenImporter({ from: './c.module.css', values: [fakeAtValueTokenImporterValue({ name: 'c_1' })] }),
5964
],
6065
});
6166
expect(exportBuilder.build(cssModule)).toMatchInlineSnapshot(`
@@ -74,13 +79,13 @@ describe('ExportBuilder', () => {
7479
if (path === resolve('/b.module.css')) {
7580
return fakeCSSModule({
7681
fileName: resolve('/b.module.css'),
77-
localTokens: [fakeToken('b_1')],
78-
tokenImporters: [fakeAtImportTokenImporter('./c.module.css')],
82+
localTokens: [fakeToken({ name: 'b_1' })],
83+
tokenImporters: [fakeAtImportTokenImporter({ from: './c.module.css' })],
7984
});
8085
} else if (path === resolve('/c.module.css')) {
8186
return fakeCSSModule({
8287
fileName: resolve('/c.module.css'),
83-
localTokens: [fakeToken('c_1')],
88+
localTokens: [fakeToken({ name: 'c_1' })],
8489
});
8590
} else {
8691
return undefined;
@@ -95,8 +100,8 @@ describe('ExportBuilder', () => {
95100
});
96101
const cssModule = fakeCSSModule({
97102
fileName: resolve('/a.module.css'),
98-
localTokens: [fakeToken('a_1')],
99-
tokenImporters: [fakeAtImportTokenImporter('./b.module.css')],
103+
localTokens: [fakeToken({ name: 'a_1' })],
104+
tokenImporters: [fakeAtImportTokenImporter({ from: './b.module.css' })],
100105
});
101106
expect(exportBuilder.build(cssModule)).toMatchInlineSnapshot(`
102107
{
@@ -116,7 +121,7 @@ describe('ExportBuilder', () => {
116121
});
117122
const cssModule = fakeCSSModule({
118123
fileName: resolve('/a.module.css'),
119-
tokenImporters: [fakeAtImportTokenImporter('./unresolvable.module.css')],
124+
tokenImporters: [fakeAtImportTokenImporter({ from: './unresolvable.module.css' })],
120125
});
121126
expect(exportBuilder.build(cssModule)).toMatchInlineSnapshot(`
122127
{
@@ -132,7 +137,7 @@ describe('ExportBuilder', () => {
132137
});
133138
const cssModule = fakeCSSModule({
134139
fileName: resolve('/a.module.css'),
135-
tokenImporters: [fakeAtImportTokenImporter('./b.module.css')],
140+
tokenImporters: [fakeAtImportTokenImporter({ from: './b.module.css' })],
136141
});
137142
expect(exportBuilder.build(cssModule)).toMatchInlineSnapshot(`
138143
{
@@ -148,7 +153,7 @@ describe('ExportBuilder', () => {
148153
});
149154
const cssModule = fakeCSSModule({
150155
fileName: resolve('/a.module.css'),
151-
tokenImporters: [fakeAtImportTokenImporter('./non-existing.module.css')],
156+
tokenImporters: [fakeAtImportTokenImporter({ from: './non-existing.module.css' })],
152157
});
153158
expect(exportBuilder.build(cssModule)).toMatchInlineSnapshot(`
154159
{
@@ -165,7 +170,7 @@ describe('ExportBuilder', () => {
165170
if (path === resolve('/b.module.css')) {
166171
return fakeCSSModule({
167172
fileName: resolve('/b.module.css'),
168-
localTokens: [fakeToken('b_1')],
173+
localTokens: [fakeToken({ name: 'b_1' })],
169174
});
170175
}
171176
return undefined;
@@ -175,8 +180,8 @@ describe('ExportBuilder', () => {
175180
});
176181
const cssModule = fakeCSSModule({
177182
fileName: resolve('/a.module.css'),
178-
localTokens: [fakeToken('a_1')],
179-
tokenImporters: [fakeAtImportTokenImporter('./b.module.css')],
183+
localTokens: [fakeToken({ name: 'a_1' })],
184+
tokenImporters: [fakeAtImportTokenImporter({ from: './b.module.css' })],
180185
});
181186

182187
// First build should call getCSSModule
@@ -212,7 +217,7 @@ describe('ExportBuilder', () => {
212217
if (path === resolve('/b.module.css')) {
213218
return fakeCSSModule({
214219
fileName: resolve('/b.module.css'),
215-
localTokens: [fakeToken('b_1')],
220+
localTokens: [fakeToken({ name: 'b_1' })],
216221
});
217222
}
218223
return undefined;
@@ -222,8 +227,8 @@ describe('ExportBuilder', () => {
222227
});
223228
const cssModule = fakeCSSModule({
224229
fileName: resolve('/a.module.css'),
225-
localTokens: [fakeToken('a_1')],
226-
tokenImporters: [fakeAtImportTokenImporter('./b.module.css')],
230+
localTokens: [fakeToken({ name: 'a_1' })],
231+
tokenImporters: [fakeAtImportTokenImporter({ from: './b.module.css' })],
227232
});
228233

229234
// First build
@@ -246,7 +251,7 @@ describe('ExportBuilder', () => {
246251
if (path === resolve('/b.module.css')) {
247252
return fakeCSSModule({
248253
fileName: resolve('/b.module.css'),
249-
localTokens: [fakeToken('b_1')],
254+
localTokens: [fakeToken({ name: 'b_1' })],
250255
});
251256
}
252257
return undefined;
@@ -256,13 +261,13 @@ describe('ExportBuilder', () => {
256261
});
257262
const moduleA = fakeCSSModule({
258263
fileName: resolve('/a.module.css'),
259-
localTokens: [fakeToken('a_1')],
260-
tokenImporters: [fakeAtImportTokenImporter('./b.module.css')],
264+
localTokens: [fakeToken({ name: 'a_1' })],
265+
tokenImporters: [fakeAtImportTokenImporter({ from: './b.module.css' })],
261266
});
262267
const moduleC = fakeCSSModule({
263268
fileName: resolve('/c.module.css'),
264-
localTokens: [fakeToken('c_1')],
265-
tokenImporters: [fakeAtImportTokenImporter('./b.module.css')],
269+
localTokens: [fakeToken({ name: 'c_1' })],
270+
tokenImporters: [fakeAtImportTokenImporter({ from: './b.module.css' })],
266271
});
267272

268273
// Build moduleA
@@ -284,14 +289,14 @@ describe('ExportBuilder', () => {
284289
if (path === resolve('/a.module.css')) {
285290
return fakeCSSModule({
286291
fileName: resolve('/a.module.css'),
287-
localTokens: [fakeToken('a_1')],
288-
tokenImporters: [fakeAtImportTokenImporter('./b.module.css')],
292+
localTokens: [fakeToken({ name: 'a_1' })],
293+
tokenImporters: [fakeAtImportTokenImporter({ from: './b.module.css' })],
289294
});
290295
} else if (path === resolve('/b.module.css')) {
291296
return fakeCSSModule({
292297
fileName: resolve('/b.module.css'),
293-
localTokens: [fakeToken('b_1')],
294-
tokenImporters: [fakeAtImportTokenImporter('./a.module.css')],
298+
localTokens: [fakeToken({ name: 'b_1' })],
299+
tokenImporters: [fakeAtImportTokenImporter({ from: './a.module.css' })],
295300
});
296301
}
297302
return undefined;
@@ -301,8 +306,8 @@ describe('ExportBuilder', () => {
301306
});
302307
const cssModule = fakeCSSModule({
303308
fileName: resolve('/a.module.css'),
304-
localTokens: [fakeToken('a_1')],
305-
tokenImporters: [fakeAtImportTokenImporter('./b.module.css')],
309+
localTokens: [fakeToken({ name: 'a_1' })],
310+
tokenImporters: [fakeAtImportTokenImporter({ from: './b.module.css' })],
306311
});
307312

308313
// Should not cause infinite recursion

packages/core/src/test/token.ts

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,34 @@
1-
import type { AtImportTokenImporter, AtValueTokenImporter, Token } from '../type.js';
1+
import type { AtImportTokenImporter, AtValueTokenImporter, AtValueTokenImporterValue, Token } from '../type.js';
22

33
const fakeLoc = { start: { line: 1, column: 1, offset: 0 }, end: { line: 1, column: 1, offset: 0 } };
44

5-
export function fakeToken(name: string): Token {
6-
return { name, loc: fakeLoc };
5+
export function fakeToken(args?: Partial<Token>): Token {
6+
return { name: 'name', loc: fakeLoc, ...args };
77
}
88

9-
export function fakeAtImportTokenImporter(from: string): AtImportTokenImporter {
9+
export function fakeAtImportTokenImporter(args?: Omit<Partial<AtImportTokenImporter>, 'type'>): AtImportTokenImporter {
1010
return {
1111
type: 'import',
12-
from,
12+
from: '/test.module.css',
1313
fromLoc: fakeLoc,
14+
...args,
1415
};
1516
}
1617

17-
export function fakeAtValueTokenImporter(from: string, valueNames: string[]): AtValueTokenImporter {
18+
export function fakeAtValueTokenImporter(args?: Omit<Partial<AtValueTokenImporter>, 'type'>): AtValueTokenImporter {
1819
return {
1920
type: 'value',
20-
from,
21-
values: valueNames.map((name) => ({ name, loc: fakeLoc })),
21+
from: '/test.module.css',
22+
values: [],
2223
fromLoc: fakeLoc,
24+
...args,
25+
};
26+
}
27+
28+
export function fakeAtValueTokenImporterValue(args?: Partial<AtValueTokenImporterValue>): AtValueTokenImporterValue {
29+
return {
30+
name: 'name',
31+
loc: fakeLoc,
32+
...args,
2333
};
2434
}

0 commit comments

Comments
 (0)