/
selector-no-merge.test.ts
59 lines (51 loc) · 1.81 KB
/
selector-no-merge.test.ts
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
import { createGenerator } from '@unocss/core'
import { variantMatcher } from '@unocss/preset-mini/utils'
import { describe, expect, test } from 'vitest'
describe('selector', () => {
const uno = createGenerator({
rules: [
[/^to-merge$/, () => [{ merged: 1 }]],
[/^merge-candidate$/, () => ({ merged: 1 })],
[/^not-merged$/, () => ({ merged: 1 }), { noMerge: true }],
],
})
test('rules split selector', async () => {
const { css } = await uno.generate('to-merge merge-candidate not-merged')
expect(css).toMatchSnapshot()
})
})
describe('variant', () => {
const uno = createGenerator({
shortcuts: [
[/^m1-(.+)$/, ([, s]) => `moz:${s} webkit:${s}`],
[/^m2-(.+)$/, ([, s]) => `moz:${s} merge-candidate`],
[/^m3-(.+)$/, ([, s]) => `moz:${s} merge-candidate-early`],
],
variants: [
variantMatcher('moz', s => ({ pseudo: `${s.pseudo}::non-breaking` })),
variantMatcher('webkit', s => ({ pseudo: `${s.pseudo}::breaking` })),
],
rules: [
[/^no-merge$/, () => ({ merged: 1 }), { noMerge: true }],
['merge-candidate', { merged: 1 }],
['merge-candidate-early', { late: 2 }],
[/^no-merge-ordered$/, () => ({ late: 2 }), { noMerge: true }],
],
})
test('variant split selector', async () => {
const { css } = await uno.generate('moz:no-merge webkit:no-merge')
expect(css).toMatchSnapshot()
})
test('variant split shortcuts', async () => {
const { css } = await uno.generate('m1-no-merge')
expect(css).toMatchSnapshot()
})
test('variant shortcuts early', async () => {
const { css } = await uno.generate('m2-no-merge')
expect(css).toMatchSnapshot()
})
test('variant shortcuts late', async () => {
const { css } = await uno.generate('m3-no-merge-ordered')
expect(css).toMatchSnapshot()
})
})