@@ -3,15 +3,14 @@ import postcss from "postcss";
3
3
import stripIndent from "strip-indent" ;
4
4
import plugin from "../src" ;
5
5
6
- const strip = input =>
7
- stripIndent ( input ) . replace ( / ^ \n / , "" ) . replace ( / \s + $ / , "" ) ;
6
+ const strip = input => stripIndent ( input ) . trim ( ) ;
8
7
const compile = ( input , options ) =>
9
8
postcss ( [ plugin ( options ) ] )
10
9
. process ( input , options )
11
10
. catch ( e => Promise . reject ( e . message ) ) ;
12
11
const generateScopedName = name => `__scope__${ name } ` ;
13
- const messagesPlugin = messages => ( ) => ( css , result ) => {
14
- result . push ( ...messages ) ;
12
+ const messagesPlugin = messages => ( css , result ) => {
13
+ result . messages . push ( ...messages ) ;
15
14
} ;
16
15
17
16
const runCSS = ( { fixture, expected, options } ) => {
@@ -29,14 +28,25 @@ const runError = ({ fixture, error, options }) => {
29
28
) ;
30
29
} ;
31
30
32
- const runMessages = ( { fixture, inputMessages, outputMessages, expected } ) => {
31
+ const runMessages = ( {
32
+ fixture,
33
+ inputMessages = [ ] ,
34
+ outputMessages,
35
+ warnings = [ ] ,
36
+ expected
37
+ } ) => {
33
38
const processor = postcss ( [
34
39
messagesPlugin ( inputMessages ) ,
35
40
plugin ( { generateScopedName } )
36
41
] ) . process ( strip ( fixture ) ) ;
37
42
return processor . then ( result => {
38
- expect ( result . messages ) . toEqual ( outputMessages ) ;
39
- expect ( result . css ) . toEqual ( strip ( expected ) ) ;
43
+ expect ( result . messages . filter ( msg => msg . type !== "warning" ) ) . toEqual (
44
+ outputMessages
45
+ ) ;
46
+ expect ( result . warnings ( ) . map ( msg => msg . text ) ) . toEqual ( warnings ) ;
47
+ if ( expected ) {
48
+ expect ( result . css ) . toEqual ( strip ( expected ) ) ;
49
+ }
40
50
} ) ;
41
51
} ;
42
52
@@ -718,6 +728,7 @@ test("icss-scoped contract", () => {
718
728
}
719
729
.foo {}
720
730
.bar {}
731
+ .foo {}
721
732
` ,
722
733
expected : `
723
734
:export {
@@ -726,14 +737,11 @@ test("icss-scoped contract", () => {
726
737
}
727
738
.__scope__foo {}
728
739
.__scope__bar {}
740
+ .__scope__foo {}
729
741
` ,
742
+ inputMessages,
730
743
outputMessages : [
731
744
...inputMessages ,
732
- {
733
- plugin : "postcss-icss-selectors" ,
734
- type : "warning" ,
735
- text : `'foo' already declared by 'previous-plugin'`
736
- } ,
737
745
{
738
746
plugin : "postcss-icss-selectors" ,
739
747
type : "icss-scoped" ,
@@ -746,7 +754,8 @@ test("icss-scoped contract", () => {
746
754
name : "bar" ,
747
755
value : "__scope__bar"
748
756
}
749
- ]
757
+ ] ,
758
+ warnings : [ `'foo' already declared` ]
750
759
} ) ;
751
760
} ) ;
752
761
@@ -778,8 +787,8 @@ test("icss-composed contract", () => {
778
787
expected : `
779
788
:export {
780
789
foo: __scope__foo __compose__foo;
781
- bar: __scope__bar __compose__bar ;
782
- baz: __scope__baz
790
+ baz: __scope__baz ;
791
+ bar: __scope__bar __compose__bar
783
792
}
784
793
.__scope__foo {}
785
794
.__scope__bar {}
0 commit comments