@@ -5,15 +5,25 @@ import plugin from "../src";
5
5
6
6
const strip = input => stripIndent ( input ) . trim ( ) ;
7
7
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 ) ) ;
9
13
10
14
const getWarnings = result => result . warnings ( ) . map ( warning => warning . text ) ;
11
15
12
16
const getMessages = result =>
13
17
result . messages . filter ( msg => msg . type !== "warning" ) ;
14
18
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 => {
17
27
expect ( result . css . trim ( ) ) . toEqual ( strip ( expected ) ) ;
18
28
expect ( getWarnings ( result ) ) . toEqual ( warnings ) ;
19
29
expect ( getMessages ( result ) ) . toEqual ( messages ) ;
@@ -428,3 +438,29 @@ test("warn on using dot or hash in value name", () => {
428
438
]
429
439
} ) ;
430
440
} ) ;
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