Skip to content

Commit 088e790

Browse files
ekulabuhovmichael-ciniawsky
authored andcommitted
test(#188): Local Scope and Local Scope + Useable (@ekulabuhov)
1 parent 1ae44f8 commit 088e790

File tree

3 files changed

+66
-5
lines changed

3 files changed

+66
-5
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"author": "Tobias Koppers @sokra",
55
"description": "style loader module for webpack",
66
"devDependencies": {
7-
"css-loader": "~0.8.0",
7+
"css-loader": "^0.27.3",
88
"file-loader": "^0.10.1",
99
"jsdom": "^9.11.0",
1010
"memory-fs": "^0.4.1",

test/basicTest.js

Lines changed: 52 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ describe("basic tests", function() {
1111

1212
var requiredCss = ".required { color: blue }",
1313
requiredCssTwo = ".requiredTwo { color: cyan }",
14+
localScopedCss = ":local(.className) { background: red; }",
1415
requiredStyle = `<style type="text/css">${requiredCss}</style>`,
1516
existingStyle = "<style>.existing { color: yellow }</style>",
1617
rootDir = path.resolve(__dirname + "/../") + "/",
@@ -65,6 +66,7 @@ describe("basic tests", function() {
6566
fs.writeFileSync(rootDir + "main.js", "var css = require('./style.css');");
6667
fs.writeFileSync(rootDir + "style.css", requiredCss);
6768
fs.writeFileSync(rootDir + "styleTwo.css", requiredCssTwo);
69+
fs.writeFileSync(rootDir + "localScoped.css", localScopedCss);
6870
}); // before each
6971

7072
it("insert at bottom", function(done) {
@@ -143,8 +145,7 @@ describe("basic tests", function() {
143145
it("useable", function(done) {
144146
cssRule.use = [
145147
{
146-
loader: "style-loader/useable",
147-
options: {}
148+
loader: "style-loader/useable"
148149
},
149150
"css-loader"
150151
];
@@ -168,4 +169,53 @@ describe("basic tests", function() {
168169

169170
runCompilerTest(expected, done);
170171
}); // it useable
172+
173+
it("local scope", function(done) {
174+
cssRule.use = [
175+
{
176+
loader: "style-loader"
177+
},
178+
{
179+
loader: "css-loader",
180+
options: {
181+
localIdentName: '[name].[local]_[hash:base64:7]'
182+
}
183+
}
184+
];
185+
186+
fs.writeFileSync(
187+
rootDir + "main.js",
188+
[
189+
"css = require('./localScoped.css');"
190+
].join("\n")
191+
);
192+
193+
let expected = 'localScoped-className_3dIU6Uf';
194+
runCompilerTest(expected, done, function() { return this.css.className; });
195+
}); // it local scope
196+
197+
it("local scope, useable", function(done) {
198+
cssRule.use = [
199+
{
200+
loader: "style-loader/useable"
201+
},
202+
{
203+
loader: "css-loader",
204+
options: {
205+
localIdentName: '[name].[local]_[hash:base64:7]'
206+
}
207+
}
208+
];
209+
210+
fs.writeFileSync(
211+
rootDir + "main.js",
212+
[
213+
"css = require('./localScoped.css');"
214+
].join("\n")
215+
);
216+
217+
let expected = 'localScoped-className_3dIU6Uf';
218+
runCompilerTest(expected, done, function() { return this.css.locals.className; });
219+
}); // it local scope
220+
171221
}); // describe

test/utils.js

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,13 @@ module.exports = {
5151

5252
return fs;
5353
},
54-
runCompilerTest: function(expected, done) {
54+
55+
/*
56+
* @param {string} expected - Expected value.
57+
* @param {function} done - Async callback from Mocha.
58+
* @param {function} actual - Executed in the context of jsdom window, should return a string to compare to.
59+
*/
60+
runCompilerTest: function(expected, done, actual) {
5561
compiler.run(function(err, stats) {
5662
if (stats.compilation.errors.length) {
5763
throw new Error(stats.compilation.errors);
@@ -62,8 +68,13 @@ module.exports = {
6268
jsdom.env({
6369
html: jsdomHtml,
6470
src: [bundleJs],
71+
virtualConsole: jsdom.createVirtualConsole().sendTo(console),
6572
done: function(err, window) {
66-
assert.equal(window.document.head.innerHTML.trim(), expected);
73+
if (typeof actual === 'function') {
74+
assert.equal(actual.apply(window), expected);
75+
} else {
76+
assert.equal(window.document.head.innerHTML.trim(), expected);
77+
}
6778
// free memory associated with the window
6879
window.close();
6980

0 commit comments

Comments
 (0)