Skip to content

Commit 01ced44

Browse files
committed
Added some more specs for parsing @Keyframes variants and assert that the _vendorPrefix property gets set correctly.
1 parent 89deaac commit 01ced44

1 file changed

Lines changed: 89 additions & 2 deletions

File tree

spec/parse.spec.js

Lines changed: 89 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -707,13 +707,99 @@ var TESTS = [
707707
return result;
708708
})()
709709
},
710+
{
711+
// Non-vendor prefixed @keyframes rule, from Twitter Bootstrap (progress-bars):
712+
input: '@keyframes progress-bar-stripes {\n from { background-position: 0 0; }\n to { background-position: 40px 0; }\n}',
713+
result: (function () {
714+
var result = {
715+
cssRules: [
716+
{
717+
name: "progress-bar-stripes",
718+
_vendorPrefix: undefined,
719+
cssRules: [
720+
{
721+
keyText: "from",
722+
style: {
723+
0: "background-position",
724+
'background-position': "0 0",
725+
length: 1
726+
}
727+
},
728+
{
729+
keyText: "to",
730+
style: {
731+
0: "background-position",
732+
'background-position': "40px 0",
733+
length: 1
734+
}
735+
}
736+
],
737+
parentRule: null
738+
}
739+
],
740+
parentStyleSheet: null
741+
};
742+
result.cssRules[0].parentStyleSheet = result.cssRules[0].cssRules[0].parentStyleSheet = result.cssRules[0].cssRules[1].parentStyleSheet = result;
743+
result.cssRules[0].cssRules[0].parentRule = result.cssRules[0].cssRules[1].parentRule = result.cssRules[0];
744+
result.cssRules[0].cssRules[0].style.parentRule = result.cssRules[0].cssRules[0];
745+
result.cssRules[0].cssRules[1].style.parentRule = result.cssRules[0].cssRules[1];
746+
return result;
747+
})()
748+
},
749+
{
750+
input: "@-some-ridiculously-long-vendor-prefix-that-must-be-supported-keyframes therulename /*comment*/{0%{top:0px; left:0px; background:red;}100% {top:4em; left:40px; background:maroon;}}",
751+
result: (function() {
752+
var result = {
753+
cssRules: [
754+
{
755+
name: "therulename",
756+
_vendorPrefix: '-some-ridiculously-long-vendor-prefix-that-must-be-supported-',
757+
cssRules: [
758+
{
759+
keyText: "0%",
760+
style: {
761+
0: "top",
762+
1: "left",
763+
2: "background",
764+
top: "0px",
765+
left: "0px",
766+
background: "red",
767+
length: 3
768+
}
769+
},
770+
{
771+
keyText: "100%",
772+
style: {
773+
0: "top",
774+
1: "left",
775+
2: "background",
776+
top: "4em",
777+
left: "40px",
778+
background: "maroon",
779+
length: 3
780+
}
781+
}
782+
],
783+
parentRule: null
784+
}
785+
],
786+
parentStyleSheet: null
787+
};
788+
result.cssRules[0].parentStyleSheet = result.cssRules[0].cssRules[0].parentStyleSheet = result.cssRules[0].cssRules[1].parentStyleSheet = result;
789+
result.cssRules[0].cssRules[0].parentRule = result.cssRules[0].cssRules[1].parentRule = result.cssRules[0];
790+
result.cssRules[0].cssRules[0].style.parentRule = result.cssRules[0].cssRules[0];
791+
result.cssRules[0].cssRules[1].style.parentRule = result.cssRules[0].cssRules[1];
792+
return result;
793+
})()
794+
},
710795
{
711796
input: "@-webkit-keyframes mymove {\nfrom {top:0px}\nto {top:200px}\n}",
712797
result: (function() {
713798
var result = {
714799
cssRules: [
715800
{
716801
name: "mymove",
802+
_vendorPrefix: '-webkit-',
717803
cssRules: [
718804
{
719805
keyText: "from",
@@ -751,6 +837,7 @@ var TESTS = [
751837
cssRules: [
752838
{
753839
name: "mymovepercent",
840+
_vendorPrefix: '-webkit-',
754841
cssRules: [
755842
{
756843
keyText: "0%",
@@ -813,7 +900,7 @@ describe('parse', function() {
813900
});
814901

815902
/**
816-
* Recurcively remove all keys which start with '_'
903+
* Recursively remove all keys which start with '_', except "_vendorPrefix", which needs to be tested against.
817904
* @param {Object} object
818905
*/
819906
function removeUnderscored(object) {
@@ -823,7 +910,7 @@ function removeUnderscored(object) {
823910
var keys = Object.keys(object);
824911
for (var i = 0, length = keys.length; i < length; i++) {
825912
var key = keys[i];
826-
if (key[0] === '_') {
913+
if (key[0] === '_' && key !== '_vendorPrefix') {
827914
delete object[key];
828915
} else {
829916
var value = object[key];

0 commit comments

Comments
 (0)