diff --git a/lib/__tests__/test.js b/lib/__tests__/test.js index a2a3e3c..13479df 100644 --- a/lib/__tests__/test.js +++ b/lib/__tests__/test.js @@ -11,14 +11,7 @@ test(`Should throw an error if config has error`, () => { order: 'Justice Rains From Above', }; - const pluginRun = postcss([plugin(opts)]) - .process('', { from: undefined }) - .then(() => { - expect('Plugin should throw an error').toBeFalst(); - }) - .catch((err) => { - throw err; - }); - - expect(pluginRun).rejects.toBeTruthy(); + return expect(postcss([plugin(opts)]).process('', { from: undefined })).rejects.toThrow( + 'postcss-sorting: order: Should be an array' + ); }); diff --git a/lib/properties-order/__tests__/fixtures/properties-alphabetical-case-insensitive.css b/lib/properties-order/__tests__/fixtures/properties-alphabetical-case-insensitive.css new file mode 100644 index 0000000..185c451 --- /dev/null +++ b/lib/properties-order/__tests__/fixtures/properties-alphabetical-case-insensitive.css @@ -0,0 +1,6 @@ +a { + Border: red; + align-content: center; + font-family: sans-serif; + Display: block; +} diff --git a/lib/properties-order/__tests__/fixtures/properties-alphabetical-case-insensitive.expected.css b/lib/properties-order/__tests__/fixtures/properties-alphabetical-case-insensitive.expected.css new file mode 100644 index 0000000..47d722a --- /dev/null +++ b/lib/properties-order/__tests__/fixtures/properties-alphabetical-case-insensitive.expected.css @@ -0,0 +1,6 @@ +a { + align-content: center; + Border: red; + Display: block; + font-family: sans-serif; +} diff --git a/lib/properties-order/__tests__/fixtures/properties-have-same-name-4.css b/lib/properties-order/__tests__/fixtures/properties-have-same-name-4.css new file mode 100644 index 0000000..02ab582 --- /dev/null +++ b/lib/properties-order/__tests__/fixtures/properties-have-same-name-4.css @@ -0,0 +1,11 @@ +div { + position: fixed; + top: 0; + Top: 0; +} + +div { + position: fixed; + Top: 0; + top: 0; +} diff --git a/lib/properties-order/__tests__/fixtures/properties-have-same-name-4.expected.css b/lib/properties-order/__tests__/fixtures/properties-have-same-name-4.expected.css new file mode 100644 index 0000000..02ab582 --- /dev/null +++ b/lib/properties-order/__tests__/fixtures/properties-have-same-name-4.expected.css @@ -0,0 +1,11 @@ +div { + position: fixed; + top: 0; + Top: 0; +} + +div { + position: fixed; + Top: 0; + top: 0; +} diff --git a/lib/properties-order/__tests__/fixtures/properties-have-same-name-5.css b/lib/properties-order/__tests__/fixtures/properties-have-same-name-5.css new file mode 100644 index 0000000..ee7d0e9 --- /dev/null +++ b/lib/properties-order/__tests__/fixtures/properties-have-same-name-5.css @@ -0,0 +1,9 @@ +.header { + Padding-bottom: 20px; + Justify-content: space-between; + display: -webkit-box; + Display: -ms-flexbox; + display: flex; + Align-items: center; + flex-wrap: wrap; +} diff --git a/lib/properties-order/__tests__/fixtures/properties-have-same-name-5.expected.css b/lib/properties-order/__tests__/fixtures/properties-have-same-name-5.expected.css new file mode 100644 index 0000000..cbdbdf1 --- /dev/null +++ b/lib/properties-order/__tests__/fixtures/properties-have-same-name-5.expected.css @@ -0,0 +1,9 @@ +.header { + Align-items: center; + display: -webkit-box; + Display: -ms-flexbox; + display: flex; + flex-wrap: wrap; + Justify-content: space-between; + Padding-bottom: 20px; +} diff --git a/lib/properties-order/__tests__/properties-order.js b/lib/properties-order/__tests__/properties-order.js index 10c5e3c..754c6b5 100644 --- a/lib/properties-order/__tests__/properties-order.js +++ b/lib/properties-order/__tests__/properties-order.js @@ -91,6 +91,24 @@ test('Should preserve order if properties have same name', () => __dirname )); +test('Should preserve order if properties have same name (case insensitive)', () => + runTest( + 'properties-have-same-name-4', + { + 'properties-order': ['position', 'z-index'], + }, + __dirname + )); + +test('Should preserve order if properties have same name (case insensitive)', () => + runTest( + 'properties-have-same-name-5', + { + 'properties-order': 'alphabetical', + }, + __dirname + )); + test(`Should not remove first comment in the rule if it's not on separate line (properties-order)`, () => runTest( 'first-comment-in-the-rule', @@ -145,6 +163,16 @@ test('Should sort properties alphabetically', () => __dirname )); +test('Should sort properties alphabetically regardless of case', () => { + runTest( + 'properties-alphabetical-case-insensitive', + { + 'properties-order': 'alphabetical', + }, + __dirname + ); +}); + test('Should sort shorthand properties before their longhand versions', () => runTest( 'properties-alphabetical-shorthand', diff --git a/lib/properties-order/sortNodeProperties.js b/lib/properties-order/sortNodeProperties.js index 9c15667..e14b4bf 100644 --- a/lib/properties-order/sortNodeProperties.js +++ b/lib/properties-order/sortNodeProperties.js @@ -25,7 +25,7 @@ module.exports = function sortNodeProperties(node, { order, unspecifiedPropertie isStandardSyntaxProperty(childNode.prop) && !isCustomProperty(childNode.prop) ) { - let unprefixedPropName = vendor.unprefixed(childNode.prop); + let unprefixedPropName = vendor.unprefixed(childNode.prop).toLowerCase(); // Hack to allow -moz-osx-font-smoothing to be understood // just like -webkit-font-smoothing