1
- import { describe , test , expect , vi } from 'vitest'
1
+ import { describe , test , expect , vi , afterAll } from 'vitest'
2
2
import { useTestContext } from '@nuxt/test-utils'
3
3
import destr from 'destr'
4
- import { setupNuxtTailwind } from './util'
4
+ import { setupNuxtTailwind , r } from './util'
5
+ import { Config } from 'tailwindcss'
5
6
6
7
describe ( 'tailwindcss module configs' , async ( ) => {
7
8
const spyStderr = vi . spyOn ( process . stderr , 'write' ) . mockImplementation ( ( ) => undefined ! )
@@ -22,6 +23,12 @@ describe('tailwindcss module configs', async () => {
22
23
'content-obj.config'
23
24
] ,
24
25
cssPath : 'tailwind.css'
26
+ } ,
27
+ {
28
+ dir : { plugins : 'my-pluggable-modules' , modules : 'my-modular-plugins' } ,
29
+ modules : [ r ( 'modules/cjs-config.ts' ) , '@nuxtjs/tailwindcss' ] ,
30
+ imports : { dirs : [ 'my-imports-dir1' , 'my-imports-dir2' ] } ,
31
+ extensions : [ '.json' , '.mdc' , '.mdx' , '.coffee' ]
25
32
} )
26
33
27
34
test ( 'throws error about malformed config' , ( ) => {
@@ -34,33 +41,43 @@ describe('tailwindcss module configs', async () => {
34
41
35
42
test ( 'ts config file is loaded and merged' , ( ) => {
36
43
const nuxt = useTestContext ( ) . nuxt !
37
- const vfsKey = Object . keys ( nuxt . vfs ) . find ( k => k . includes ( 'tailwind.config.' ) ) !
44
+ const vfsKey = Object . keys ( nuxt . vfs ) . find ( k => k . includes ( 'test- tailwind.config.' ) ) !
38
45
// set from ts-tailwind.config.ts
39
46
expect ( nuxt . vfs [ vfsKey ] ) . contains ( '"typescriptBlue": "#007acc"' )
40
47
} )
41
48
42
49
test ( 'js config file is loaded and merged' , ( ) => {
43
50
const nuxt = useTestContext ( ) . nuxt !
44
- const vfsKey = Object . keys ( nuxt . vfs ) . find ( k => k . includes ( 'tailwind.config.' ) ) !
51
+ const vfsKey = Object . keys ( nuxt . vfs ) . find ( k => k . includes ( 'test- tailwind.config.' ) ) !
45
52
// set from ts-tailwind.config.ts
46
53
expect ( nuxt . vfs [ vfsKey ] ) . contains ( '"javascriptYellow": "#f1e05a"' )
47
54
} )
48
55
56
+ test ( 'content is adaptive' , ( ) => {
57
+ const nuxt = useTestContext ( ) . nuxt !
58
+ const vfsKey = Object . keys ( nuxt . vfs ) . find ( k => k . includes ( 'test-tailwind.config.' ) ) !
59
+ const { content : { files } } = destr < Omit < Config , 'content' > & { content : Extract < Config [ 'content' ] , { relative ?: boolean } > } > ( nuxt . vfs [ vfsKey ] . replace ( / ^ ( m o d u l e \. e x p o r t s = ) / , '' ) )
60
+
61
+ expect ( files . find ( c => / m y - p l u g g a b l e - m o d u l e s | m y - m o d u l a r - p l u g i n s / . test ( c ) ) ) . toBeDefined ( )
62
+ expect ( files . filter ( c => c . includes ( 'my-imports-dir' ) ) . length ) . toBe ( 2 )
63
+ expect ( files . find ( c => c . includes ( 'components/**/*' ) ) ?. includes ( 'json,mdc,mdx,coffee' ) ) . toBeTruthy ( )
64
+ } )
65
+
49
66
test ( 'content is overridden' , ( ) => {
50
67
const nuxt = useTestContext ( ) . nuxt !
51
- const vfsKey = Object . keys ( nuxt . vfs ) . find ( k => k . includes ( 'tailwind.config.' ) ) !
68
+ const vfsKey = Object . keys ( nuxt . vfs ) . find ( k => k . includes ( 'test- tailwind.config.' ) ) !
52
69
// set from override-tailwind.config.ts
53
- const contentFiles = destr ( nuxt . vfs [ vfsKey ] . replace ( / ^ ( m o d u l e \. e x p o r t s = ) / , '' ) ) . content . files
70
+ const contentFiles = destr < Omit < Config , 'content' > & { content : Extract < Config [ 'content' ] , { relative ?: boolean } > } > ( nuxt . vfs [ vfsKey ] . replace ( / ^ ( m o d u l e \. e x p o r t s = ) / , '' ) ) . content . files
54
71
55
72
expect ( contentFiles [ 0 ] ) . toBe ( 'ts-content/**/*.md' )
56
73
expect ( contentFiles [ 1 ] ) . toBe ( './custom-theme/**/*.vue' )
57
- expect ( contentFiles . slice ( 2 ) . filter ( c => c . endsWith ( 'vue' ) ) . length ) . toBe ( 2 )
74
+ expect ( contentFiles . filter ( c => / { [ A E ] , [ a e ] } / . test ( c ) ) . length ) . toBe ( 0 )
58
75
} )
59
76
60
77
test ( 'content merges with objects' , ( ) => {
61
78
const nuxt = useTestContext ( ) . nuxt !
62
- const vfsKey = Object . keys ( nuxt . vfs ) . find ( k => k . includes ( 'tailwind.config.' ) ) !
63
- const { content } = destr ( nuxt . vfs [ vfsKey ] . replace ( / ^ ( m o d u l e \. e x p o r t s = ) / , '' ) )
79
+ const vfsKey = Object . keys ( nuxt . vfs ) . find ( k => k . includes ( 'test- tailwind.config.' ) ) !
80
+ const { content } = destr < Omit < Config , 'content' > & { content : Extract < Config [ 'content' ] , { relative ?: boolean } > } > ( nuxt . vfs [ vfsKey ] . replace ( / ^ ( m o d u l e \. e x p o r t s = ) / , '' ) )
64
81
65
82
expect ( content . relative ) . toBeTruthy ( )
66
83
expect ( content . files . pop ( ) ) . toBe ( './my-components/**/*.tsx' )
0 commit comments