Skip to content

Commit 98e5277

Browse files
committed
Test contracts
1 parent f7848d0 commit 98e5277

File tree

1 file changed

+198
-0
lines changed

1 file changed

+198
-0
lines changed

test/test.js

Lines changed: 198 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ const compile = (input, options) =>
1010
.process(input, options)
1111
.catch(e => Promise.reject(e.message));
1212
const generateScopedName = name => `__scope__${name}`;
13+
const messagesPlugin = messages => () => (css, result) => {
14+
result.push(...messages);
15+
};
1316

1417
const runCSS = ({ fixture, expected, options }) => {
1518
return expect(
@@ -26,6 +29,17 @@ const runError = ({ fixture, error, options }) => {
2629
);
2730
};
2831

32+
const runMessages = ({ fixture, inputMessages, outputMessages, expected }) => {
33+
const processor = postcss([
34+
messagesPlugin(inputMessages),
35+
plugin({ generateScopedName })
36+
]).process(strip(fixture));
37+
return processor.then(result => {
38+
expect(result.messages).toEqual(outputMessages);
39+
expect(result.css).toEqual(strip(expected));
40+
});
41+
};
42+
2943
test("scope selectors", () => {
3044
return runCSS({
3145
fixture: `
@@ -657,3 +671,187 @@ test("save :import statemtents", () => {
657671
`
658672
});
659673
});
674+
675+
test("dispatch messages with all locals", () => {
676+
return runMessages({
677+
fixture: `
678+
.foo {}
679+
.foo .bar {}
680+
:global .baz :local(.zab) {}
681+
`,
682+
outputMessages: [
683+
{
684+
plugin: "postcss-icss-selectors",
685+
type: "icss-scoped",
686+
name: "foo",
687+
value: "__scope__foo"
688+
},
689+
{
690+
plugin: "postcss-icss-selectors",
691+
type: "icss-scoped",
692+
name: "bar",
693+
value: "__scope__bar"
694+
},
695+
{
696+
plugin: "postcss-icss-selectors",
697+
type: "icss-scoped",
698+
name: "zab",
699+
value: "__scope__zab"
700+
}
701+
]
702+
});
703+
});
704+
705+
test("icss-scoped contract", () => {
706+
const inputMessages = [
707+
{
708+
plugin: "previous-plugin",
709+
type: "icss-scoped",
710+
name: "foo",
711+
value: "__declared__foo"
712+
}
713+
];
714+
return runMessages({
715+
fixture: `
716+
:export {
717+
foo: __declared__foo
718+
}
719+
.foo {}
720+
.bar {}
721+
`,
722+
expected: `
723+
:export {
724+
foo: __scope__foo;
725+
bar: __scope__bar
726+
}
727+
.__scope__foo {}
728+
.__scope__bar {}
729+
`,
730+
outputMessages: [
731+
...inputMessages,
732+
{
733+
plugin: "postcss-icss-selectors",
734+
type: "warning",
735+
text: `'foo' already declared by 'previous-plugin'`
736+
},
737+
{
738+
plugin: "postcss-icss-selectors",
739+
type: "icss-scoped",
740+
name: "foo",
741+
value: "__scope__foo"
742+
},
743+
{
744+
plugin: "postcss-icss-selectors",
745+
type: "icss-scoped",
746+
name: "bar",
747+
value: "__scope__bar"
748+
}
749+
]
750+
});
751+
});
752+
753+
test("icss-composed contract", () => {
754+
const inputMessages = [
755+
{
756+
plugin: "previous-plugin",
757+
type: "icss-composed",
758+
name: "foo",
759+
value: "__compose__foo"
760+
},
761+
{
762+
plugin: "previous-plugin",
763+
type: "icss-composed",
764+
name: "bar",
765+
value: "__compose__bar"
766+
}
767+
];
768+
return runMessages({
769+
fixture: `
770+
:export {
771+
foo: __compose__foo;
772+
baz: __declared__baz
773+
}
774+
.foo {}
775+
.bar {}
776+
.baz {}
777+
`,
778+
expected: `
779+
:export {
780+
foo: __scope__foo __compose__foo;
781+
bar: __scope__bar __compose__bar;
782+
baz: __scope__baz
783+
}
784+
.__scope__foo {}
785+
.__scope__bar {}
786+
.__scope__baz {}
787+
`,
788+
inputMessages,
789+
outputMessages: [
790+
...inputMessages,
791+
{
792+
plugin: "postcss-icss-selectors",
793+
type: "icss-scoped",
794+
name: "foo",
795+
value: "__scope__foo"
796+
},
797+
{
798+
plugin: "postcss-icss-selectors",
799+
type: "icss-scoped",
800+
name: "bar",
801+
value: "__scope__bar"
802+
},
803+
{
804+
plugin: "postcss-icss-selectors",
805+
type: "icss-scoped",
806+
name: "baz",
807+
value: "__scope__baz"
808+
}
809+
]
810+
});
811+
});
812+
813+
test("icss-value contract", () => {
814+
const inputMessages = [
815+
{
816+
plugin: "previous-plugin",
817+
type: "icss-value",
818+
name: "foo",
819+
value: "__declared__foo"
820+
},
821+
{
822+
plugin: "previous-plugin",
823+
type: "icss-value",
824+
name: "bar",
825+
value: "__declared__bar"
826+
}
827+
];
828+
return runMessages({
829+
fixture: `
830+
:export {
831+
foo: __declared__foo
832+
}
833+
.__declared__foo {}
834+
.__declared__bar {}
835+
.baz {}
836+
`,
837+
expected: `
838+
:export {
839+
foo: __declared__foo;
840+
baz: __scope__baz
841+
}
842+
.__declared__foo {}
843+
.__declared__bar {}
844+
.__scope__baz {}
845+
`,
846+
inputMessages,
847+
outputMessages: [
848+
...inputMessages,
849+
{
850+
plugin: "postcss-icss-selectors",
851+
type: "icss-scoped",
852+
name: "baz",
853+
value: "__scope__baz"
854+
}
855+
]
856+
});
857+
});

0 commit comments

Comments
 (0)