@@ -3,15 +3,14 @@ import postcss from "postcss";
33import stripIndent from "strip-indent" ;
44import plugin from "../src" ;
55
6- const strip = input =>
7- stripIndent ( input ) . replace ( / ^ \n / , "" ) . replace ( / \s + $ / , "" ) ;
6+ const strip = input => stripIndent ( input ) . trim ( ) ;
87const compile = ( input , options ) =>
98 postcss ( [ plugin ( options ) ] )
109 . process ( input , options )
1110 . catch ( e => Promise . reject ( e . message ) ) ;
1211const 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 ) ;
1514} ;
1615
1716const runCSS = ( { fixture, expected, options } ) => {
@@ -29,14 +28,25 @@ const runError = ({ fixture, error, options }) => {
2928 ) ;
3029} ;
3130
32- const runMessages = ( { fixture, inputMessages, outputMessages, expected } ) => {
31+ const runMessages = ( {
32+ fixture,
33+ inputMessages = [ ] ,
34+ outputMessages,
35+ warnings = [ ] ,
36+ expected
37+ } ) => {
3338 const processor = postcss ( [
3439 messagesPlugin ( inputMessages ) ,
3540 plugin ( { generateScopedName } )
3641 ] ) . process ( strip ( fixture ) ) ;
3742 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+ }
4050 } ) ;
4151} ;
4252
@@ -718,6 +728,7 @@ test("icss-scoped contract", () => {
718728 }
719729 .foo {}
720730 .bar {}
731+ .foo {}
721732 ` ,
722733 expected : `
723734 :export {
@@ -726,14 +737,11 @@ test("icss-scoped contract", () => {
726737 }
727738 .__scope__foo {}
728739 .__scope__bar {}
740+ .__scope__foo {}
729741 ` ,
742+ inputMessages,
730743 outputMessages : [
731744 ...inputMessages ,
732- {
733- plugin : "postcss-icss-selectors" ,
734- type : "warning" ,
735- text : `'foo' already declared by 'previous-plugin'`
736- } ,
737745 {
738746 plugin : "postcss-icss-selectors" ,
739747 type : "icss-scoped" ,
@@ -746,7 +754,8 @@ test("icss-scoped contract", () => {
746754 name : "bar" ,
747755 value : "__scope__bar"
748756 }
749- ]
757+ ] ,
758+ warnings : [ `'foo' already declared` ]
750759 } ) ;
751760} ) ;
752761
@@ -778,8 +787,8 @@ test("icss-composed contract", () => {
778787 expected : `
779788 :export {
780789 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
783792 }
784793 .__scope__foo {}
785794 .__scope__bar {}
0 commit comments