@@ -5,15 +5,25 @@ import plugin from "../src";
55
66const strip = input => stripIndent ( input ) . trim ( ) ;
77
8- const compile = input => postcss ( [ plugin ] ) . process ( strip ( input ) ) ;
8+ const messagesPlugin = messages => ( css , result ) =>
9+ result . messages . push ( ...messages ) ;
10+
11+ const compile = ( input , messages ) =>
12+ postcss ( [ messagesPlugin ( messages ) , plugin ] ) . process ( strip ( input ) ) ;
913
1014const getWarnings = result => result . warnings ( ) . map ( warning => warning . text ) ;
1115
1216const getMessages = result =>
1317 result . messages . filter ( msg => msg . type !== "warning" ) ;
1418
15- const run = ( { fixture, expected, warnings = [ ] , messages = [ ] } ) =>
16- compile ( fixture ) . then ( result => {
19+ const run = ( {
20+ fixture,
21+ expected,
22+ warnings = [ ] ,
23+ inputMessages = [ ] ,
24+ messages = [ ]
25+ } ) =>
26+ compile ( fixture , inputMessages ) . then ( result => {
1727 expect ( result . css . trim ( ) ) . toEqual ( strip ( expected ) ) ;
1828 expect ( getWarnings ( result ) ) . toEqual ( warnings ) ;
1929 expect ( getMessages ( result ) ) . toEqual ( messages ) ;
@@ -428,3 +438,29 @@ test("warn on using dot or hash in value name", () => {
428438 ]
429439 } ) ;
430440} ) ;
441+
442+ test ( "icss-scoped contract" , ( ) => {
443+ const inputMessages = [
444+ { type : "icss-scoped" , name : "a" , value : "__scope__a" }
445+ ] ;
446+ return run ( {
447+ fixture : `
448+ :export {
449+ a: __scope__a
450+ }
451+ @value a from 'path';
452+ .__scope__a {}
453+ ` ,
454+ inputMessages,
455+ expected : `
456+ :import('path') {
457+ __value__a__0: a
458+ }
459+ :export {
460+ a: __value__a__0
461+ }
462+ .__value__a__0 {}
463+ ` ,
464+ messages : [ ...inputMessages , getMsg ( "a" , "__value__a__0" ) ]
465+ } ) ;
466+ } ) ;
0 commit comments