From 2018cbab7fb87ef73201dd7d8ff04f40a33e6087 Mon Sep 17 00:00:00 2001 From: lttb Date: Fri, 22 Dec 2017 04:20:47 +0300 Subject: [PATCH 1/2] Fix nested styles order --- src/StyleSheet.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/StyleSheet.js b/src/StyleSheet.js index 34e3818bc..ad6f9ff6f 100644 --- a/src/StyleSheet.js +++ b/src/StyleSheet.js @@ -89,7 +89,7 @@ export default class StyleSheet { if (!this.deployed) return rule // Don't insert rule directly if there is no stringified version yet. // It will be inserted all together when .attach is called. - if (queue) queue.push(rule) + if (queue) queue.unshift(rule) else { this.insertRule(rule) if (this.queue) { From 94ffff20b9e6dda875f309f5f98167a9da1ddd9a Mon Sep 17 00:00:00 2001 From: lttb Date: Fri, 22 Dec 2017 05:10:44 +0300 Subject: [PATCH 2/2] Add tests for added nested rules order --- tests/integration/plugins.js | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/tests/integration/plugins.js b/tests/integration/plugins.js index 4584438c4..3ea4312b1 100644 --- a/tests/integration/plugins.js +++ b/tests/integration/plugins.js @@ -1,9 +1,14 @@ import expect from 'expect.js' import {stripIndent} from 'common-tags' +import jssNested from 'jss-nested' import {create} from '../../src' import StyleSheet from '../../src/StyleSheet' -import {createGenerateClassName} from '../utils' import PluginsRegistry from '../../src/PluginsRegistry' +import { + createGenerateClassName, + getCssFromSheet, + removeWhitespace +} from '../utils' describe('Integration: plugins', () => { let jss @@ -416,4 +421,29 @@ describe('Integration: plugins', () => { `) }) }) + + describe('jss-nested', () => { + let sheet + + beforeEach(() => { + jss.use(jssNested()) + + sheet = jss.createStyleSheet({}, { + link: true, + }).attach() + + sheet.addRule('b', {color: 'green'}) + sheet.addRule('a', { + '&:hover': { + '& $b': { + color: 'red', + }, + }, + }) + }) + + it('should save the added nested rules order', () => { + expect(getCssFromSheet(sheet)).to.be(removeWhitespace(sheet.toString())) + }) + }) })