11import { describe , expect , test } from 'vitest'
2+ import MagicString from 'magic-string'
23import { injectCssOnBuild , injectCssOnServer , removeStyleTagsAndContent } from '../inject-css'
34describe ( 'inject-css' , ( ) => {
45 test ( 'injectCssOnServer: basic' , ( ) => {
56 const code = 'v-bind-m(foo)'
7+ const mgcStr = new MagicString ( code )
68 const vbindVariableList = [ { value : 'foo' , hash : 'hash' } ]
7- expect ( injectCssOnServer ( code , vbindVariableList as any ) ) . toBe ( 'var(--hash)' )
9+ expect ( injectCssOnServer ( mgcStr , vbindVariableList as any , false ) . toString ( ) ) . toBe ( 'var(--hash)' )
810 } )
911
1012 test ( 'injectCssOnServer: vbindVariableList is undefined' , ( ) => {
1113 const code = 'v-bind-m(foo)'
12- expect ( injectCssOnServer ( code , undefined ) ) . toBe ( code )
14+ const mgcStr = new MagicString ( code )
15+ expect ( injectCssOnServer ( mgcStr , undefined , false ) . toString ( ) ) . toBe ( code )
1316 } )
1417
1518 test ( 'removeStyleTagsAndContent: basic' , ( ) => {
@@ -48,12 +51,13 @@ describe('inject-css', () => {
4851 </body>
4952 </html>
5053 `
51-
52- expect ( removeStyleTagsAndContent ( html ) ) . toEqual ( expectedHtml )
54+ const mgcStr = new MagicString ( html )
55+ expect ( removeStyleTagsAndContent ( mgcStr ) . toString ( ) ) . toEqual ( expectedHtml )
5356 } )
5457
5558 test ( 'removeStyleTagsAndContent: empty HTML' , ( ) => {
56- expect ( removeStyleTagsAndContent ( '' ) ) . toEqual ( '' )
59+ const mgcStr = new MagicString ( '' )
60+ expect ( removeStyleTagsAndContent ( mgcStr ) . toString ( ) ) . toEqual ( '' )
5761 } )
5862
5963 test ( 'removeStyleTagsAndContent: not modify HTML without style tags' , ( ) => {
@@ -68,8 +72,8 @@ describe('inject-css', () => {
6872 </body>
6973 </html>
7074 `
71-
72- expect ( removeStyleTagsAndContent ( html ) ) . toEqual ( html )
75+ const mgcStr = new MagicString ( html )
76+ expect ( removeStyleTagsAndContent ( mgcStr ) . toString ( ) ) . toEqual ( html )
7377 } )
7478
7579 test ( 'injectCssOnBuild: basic' , ( ) => {
@@ -83,7 +87,12 @@ describe('inject-css', () => {
8387 + '}\n'
8488 + "@import './assets/scss/foo.scss';\n"
8589 + '</style>'
86- const injectCSSContent = new Set ( [ { content : '@import \'./assets/scss/foo.scss\';\nbody { background-color: black; }' , lang : 'scss' } ] )
90+ const mgcStr = new MagicString ( code )
91+ const injectCSSContent = new Set ( [ {
92+ content : '@import \'./assets/scss/foo.scss\';\nbody { background-color: black; }' ,
93+ lang : 'scss' ,
94+ styleTagIndex : 0 ,
95+ } ] )
8796 const descriptor = {
8897 styles : [
8998 {
@@ -99,18 +108,23 @@ describe('inject-css', () => {
99108 } ,
100109 ] ,
101110 }
102- const result = injectCssOnBuild ( code , injectCSSContent , descriptor as any )
103- expect ( result ) . toMatchSnapshot ( )
111+ const result = injectCssOnBuild ( mgcStr , injectCSSContent , descriptor as any )
112+ expect ( result . toString ( ) ) . toMatchSnapshot ( )
104113 } )
105114
106115 test ( 'injectCssOnBuild: no styles' , ( ) => {
107116 const code = 'test'
108- const injectCSSContent = new Set ( [ { content : '@import \'./assets/scss/foo.scss\';\nbody { background-color: black; }' , lang : 'scss' } ] )
117+ const injectCSSContent = new Set ( [ {
118+ content : '@import \'./assets/scss/foo.scss\';\nbody { background-color: black; }' ,
119+ lang : 'scss' ,
120+ styleTagIndex : 0 ,
121+ } ] )
109122 const descriptor = {
110123 styles : null ,
111124 }
112- const result = injectCssOnBuild ( code , injectCSSContent , descriptor as any )
113- expect ( result ) . toMatchSnapshot ( )
125+ const mgcStr = new MagicString ( code )
126+ const result = injectCssOnBuild ( mgcStr , injectCSSContent , descriptor as any )
127+ expect ( result . toString ( ) ) . toMatchSnapshot ( )
114128 } )
115129
116130 test ( 'injectCssOnBuild: no lang' , ( ) => {
@@ -124,7 +138,11 @@ describe('inject-css', () => {
124138 + '}\n'
125139 + "@import './assets/scss/foo.scss';\n"
126140 + '</style>'
127- const injectCSSContent = new Set ( [ { content : '@import \'./assets/scss/foo.scss\';\nbody { background-color: black; }' , lang : 'scss' } ] )
141+ const injectCSSContent = new Set ( [ {
142+ content : '@import \'./assets/scss/foo.scss\';\nbody { background-color: black; }' ,
143+ lang : 'scss' ,
144+ styleTagIndex : 0 ,
145+ } ] )
128146 const descriptor = {
129147 styles : [
130148 {
@@ -140,7 +158,8 @@ describe('inject-css', () => {
140158 } ,
141159 ] ,
142160 }
143- const result = injectCssOnBuild ( code , injectCSSContent , descriptor as any )
144- expect ( result ) . toMatchSnapshot ( )
161+ const mgcStr = new MagicString ( code )
162+ const result = injectCssOnBuild ( mgcStr , injectCSSContent , descriptor as any )
163+ expect ( result . toString ( ) ) . toMatchSnapshot ( )
145164 } )
146165} )
0 commit comments