8000 (test) full battery of tests for postcss version · geddski/csstyle@00efa4e · GitHub
[go: up one dir, main page]

Skip to content

Commit 00efa4e

Browse files
committed
(test) full battery of tests for postcss version
1 parent 920fdbc commit 00efa4e

File tree

11 files changed

+107
-27
lines changed

11 files changed

+107
-27
lines changed

package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,13 @@
99
"lodash": "^3.2.0"
1010
},
1111
"devDependencies": {
12+
"fs-extra": "^0.16.3",
1213
"glob": "^4.3.5",
1314
"postcss": "^4.0.4",
1415
"postcss-nested": "^0.2.1",
16+
"postcss-simple-vars": "^0.2.3",
1517
"shelljs": "~0.3.0",
16-
"specificity": "~0.1.4",
17-
"fs-extra": "^0.16.3"
18+
"specificity": "~0.1.4"
1819
},
1920
"scripts": {
2021
"test": "jasmine-node spec"

spec/csstyle-spec.js

Lines changed: 46 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ describe("component", function(){
1414
describe("option", function(){
1515
it("appends a --class to the component", function(){
1616
[
17-
getSelector('spec/scss/fixtures/option.css', 1)
18-
// getSelector('spec/postcss/fixtures/option.css', 1)
17+
getSelector('spec/scss/fixtures/option.css', 1),
18+
getSelector('spec/postcss/fixtures/option.css', 1)
1919
]
2020
.forEach(function(selector){
2121
expect(selector.value).toBe(".tweet.\\--promoted");
@@ -27,8 +27,8 @@ describe("option", function(){
2727
describe("part", function(){
2828
it("appends a __class to the component", function(){
2929
[
30-
getSelector('spec/scss/fixtures/part.css', 1)
31-
// getSelector('spec/postcss/fixtures/part.css', 1)
30+
getSelector('spec/scss/fixtures/part.css', 1),
31+
getSelector('spec/postcss/fixtures/part.css', 1)
3232
]
3333
.forEach(function(selector){
3434
expect(selector.value).toBe(".tweet__image");
@@ -38,37 +38,62 @@ describe("part", function(){
3838

3939
describe("parts nested in parts", function(){
4040
it("creates a single class with both part names ", function(){
41-
var selector = getSelector('spec/scss/fixtures/parts-in-parts.css', 2);
42-
expect(selector.value).toBe(".tweet__message__title");
43-
expect(selector.score).toBe('0,0,1,0');
41+
[
42+
getSelector('spec/scss/fixtures/parts-in-parts.css', 2),
43+
getSelector('spec/postcss/fixtures/parts-in-parts.css', 2)
44+
]
45+
.forEach(function(selector){
46+
expect(selector.value).toBe(".tweet__message__title");
47+
expect(selector.score).toBe( 6D47 9;0,0,1,0');
48+
});
4449
});
4550

4651
describe("with own options", function(){
4752
it("should append the option to the part class", function(){
48-
var selector = getSelector('spec/scss/fixtures/parts-in-parts.css', 3);
49-
expect(selector.value).toBe(".tweet__message__title.\\--special");
50-
expect(selector.score).toBe('0,0,2,0');
53+
[
54+
getSelector('spec/scss/fixtures/parts-in-parts.css', 3),
55+
getSelector('spec/postcss/fixtures/parts-in-parts.css', 3)
56+
]
57+
.forEach(function(selector){
58+
expect(selector.value).toBe(".tweet__message__title.\\--special");
59+
expect(selector.score).toBe('0,0,2,0');
60+
});
5161
});
5262
});
5363
});
5464

5565
describe("parts inside of options", function(){
5666
it("responds correctly to component options", function(){
57-
var selector = getSelector('spec/scss/fixtures/parts-in-options.css', 2);
58-
expect(selector.value).toBe(".tweet.\\--promoted .tweet__profile");
59-
expect(selector.score).toBe("0,0,3,0");
67+
[
68+
getSelector('spec/scss/fixtures/parts-in-options.css', 2),
69+
getSelector('spec/postcss/fixtures/parts-in-options.css', 2)
70+
]
71+
.forEach(function(selector){
72+
expect(selector.value).toBe(".tweet.\\--promoted .tweet__profile");
73+
expect(selector.score).toBe("0,0,3,0");
74+
});
6075
});
6176

6277
describe("nested parts inside of options", function(){
6378
it("should concat the part names and preserve the component option", function(){
64-
var selector = getSelector('spec/scss/fixtures/parts-in-options.css', 3);
65-
expect(selector.value).toBe(".tweet.\\--promoted .tweet__profile__img");
79+
[
80+
getSelector('spec/scss/fixtures/parts-in-options.css', 3),
81+
getSelector('spec/postcss/fixtures/parts-in-options.css', 3)
82+
]
83+
.forEach(function(selector){
84+
expect(selector.value).toBe(".tweet.\\--promoted .tweet__profile__img");
85+
});
6686
});
6787

6888
describe("even nested n levels deep", function(){
6989
it("should work the same", function(){
70-
var selector = getSelector('spec/scss/fixtures/parts-in-options.css', 4);
71-
expect(selector.value).toBe(".tweet.\\--promoted .tweet__profile__img__header");
90+
[
91+
getSelector('spec/scss/fixtures/parts-in-options.css', 4),
92+
getSelector('spec/postcss/fixtures/parts-in-options.css', 4)
93+
]
94+
.forEach(function(selector){
95+
expect(selector.value).toBe(".tweet.\\--promoted .tweet__profile__img__header");
96+
});
7297
});
7398
});
7499
});
@@ -78,8 +103,8 @@ describe("part", function(){
78103
describe("tweak", function(){
79104
it("defines a +class after csstyle id", function(){
80105
[
81-
getSelector('spec/scss/fixtures/tweak.css')
82-
// getSelector('spec/postcss/fixtures/tweak.css')
106+
getSelector('spec/scss/fixtures/tweak.css'),
107+
getSelector('spec/postcss/fixtures/tweak.css')
83108
]
84109
.forEach(function(selector){
85110
// waiting on https://github.com/keeganstreet/specificity/issues/10
@@ -92,8 +117,8 @@ describe("tweak", function(){
92117
describe("location", function(){
93118
it("defines a @class after csstyle id", function(){
94119
[
95-
getSelector('spec/scss/fixtures/location.css')
96-
// getSelector('spec/postcss/fixtures/location.css')
120+
getSelector('spec/scss/fixtures/location.css'),
121+
getSelector('spec/postcss/fixtures/location.css')
97122
]
98123
.forEach(function(selector){
99124
expect(selector.value).toBe("#csstyle .\\@home");
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
.tweet {
1+
component(tweet) {
22
background: #fff;
3-
color: tweet;
43
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
location(home){
2+
padding: 20px;
3+
}

spec/postcss/fixtures/option.pcss

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
component(tweet){
2+
background: #fff;
3+
4+
option(promoted){
5+
border-bottom: 1px solid yellow;
6+
}
7+
}

spec/postcss/fixtures/part.pcss

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
component(tweet){
2+
background: #fff;
3+
4+
part(image){
5+
float: left;
6+
}
7+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
component(tweet){
2+
background: #fff;
3+
4+
option(promoted){
5+
border-bottom: 1px solid yellow;
6+
7+
part(profile){
8+
border: 5px solid green;
9+
10+
part(img){
11+
float: left;
12+
13+
part(header){
14+
clear: both;
15+
}
16+
17+
}
18+
}
19+
}
20+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
component(tweet){
2+
background: #fff;
3+
4+
part(message){
5+
float: left;
6+
7+
part(title){
8+
font-size: 20px;
9+
10+
option(special){
11+
color: orange;
12+
}
13+
}
14+
}
15+
}

spec/postcss/fixtures/tweak.pcss

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
tweak(rounded){
2+
border-radius: 5px;
3+
}

spec/selector-helper.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ module.exports = {
99
getSelector: function(file, number){
1010
number = number || 0;
1111
var contents = fs.readFileSync(path.resolve(file)).toString();
12-
var selector = contents.match(/.*\{/g)[number].split(' {')[0];
12+
var selector = contents.match(/.*\{/g)[number].split('{')[0].trim();
1313
var score = specificity.calculate(selector)[0].specificity;
1414

1515
return {

0 commit comments

Comments
 (0)
0