|
- 'use strict';
-
- var _templateObject = _taggedTemplateLiteral(['\n .a-id:hover {\n color: red;\n }\n @media {\n .a-id:hover {\n color: green;\n }\n }\n '], ['\n .a-id:hover {\n color: red;\n }\n @media {\n .a-id:hover {\n color: green;\n }\n }\n ']),
- _templateObject2 = _taggedTemplateLiteral(['\n .a-id:hover {\n color: red;\n }\n '], ['\n .a-id:hover {\n color: red;\n }\n ']),
- _templateObject3 = _taggedTemplateLiteral(['\n .a-id:hover {\n color: green;\n }\n '], ['\n .a-id:hover {\n color: green;\n }\n ']);
-
- var _expect = require('expect.js');
-
- var _expect2 = _interopRequireDefault(_expect);
-
- var _commonTags = require('common-tags');
-
- var _ = require('./');
-
- var _2 = _interopRequireDefault(_);
-
- var _jssExtend = require('jss-extend');
-
- var _jssExtend2 = _interopRequireDefault(_jssExtend);
-
- var _jss = require('jss');
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- function _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } /* eslint-disable no-underscore-dangle */
-
- var settings = {
- createGenerateClassName: function createGenerateClassName() {
- return function (rule) {
- return rule.key + '-id';
- };
- }
- };
-
- describe('jss-nested', function () {
- var jss = void 0;
- var warning = void 0;
-
- beforeEach(function () {
- _2.default.__Rewire__('warning', function (condition, message) {
- warning = message;
- });
-
- jss = (0, _jss.create)(settings).use((0, _2.default)());
- });
-
- afterEach(function () {
- _2.default.__ResetDependency__('warning');
- warning = undefined;
- });
-
- describe('nesting with space', function () {
- var sheet = void 0;
-
- beforeEach(function () {
- sheet = jss.createStyleSheet({
- a: {
- float: 'left',
- '& b': { float: 'left' }
- }
- });
- });
-
- it('should add rules', function () {
- (0, _expect2.default)(sheet.getRule('a')).to.not.be(undefined);
- (0, _expect2.default)(sheet.getRule('.a-id b')).to.not.be(undefined);
- });
-
- it('should generate correct CSS', function () {
- (0, _expect2.default)(sheet.toString()).to.be('.a-id {\n' + ' float: left;\n' + '}\n' + '.a-id b {\n' + ' float: left;\n' + '}');
- });
- });
-
- describe('nesting without space', function () {
- var sheet = void 0;
-
- beforeEach(function () {
- sheet = jss.createStyleSheet({
- a: {
- float: 'left',
- '&b': { float: 'left' }
- }
- });
- });
-
- it('should add rules', function () {
- (0, _expect2.default)(sheet.getRule('a')).to.not.be(undefined);
- (0, _expect2.default)(sheet.getRule('.a-idb')).to.not.be(undefined);
- });
-
- it('should generate correct CSS', function () {
- (0, _expect2.default)(sheet.toString()).to.be('.a-id {\n' + ' float: left;\n' + '}\n' + '.a-idb {\n' + ' float: left;\n' + '}');
- });
- });
-
- describe('multi nesting', function () {
- var sheet = void 0;
-
- beforeEach(function () {
- sheet = jss.createStyleSheet({
- a: {
- float: 'left',
- '&b': { float: 'left' },
- '& c': { float: 'left' }
- }
- });
- });
-
- it('should add rules', function () {
- (0, _expect2.default)(sheet.getRule('a')).to.not.be(undefined);
- (0, _expect2.default)(sheet.getRule('.a-idb')).to.not.be(undefined);
- (0, _expect2.default)(sheet.getRule('.a-id c')).to.not.be(undefined);
- });
-
- it('should generate correct CSS', function () {
- (0, _expect2.default)(sheet.toString()).to.be('.a-id {\n' + ' float: left;\n' + '}\n' + '.a-idb {\n' + ' float: left;\n' + '}\n' + '.a-id c {\n' + ' float: left;\n' + '}');
- });
- });
-
- describe('multi nesting in one selector', function () {
- var sheet = void 0;
-
- beforeEach(function () {
- sheet = jss.createStyleSheet({
- a: {
- float: 'left',
- '&b, &c': { float: 'left' }
- }
- });
- });
-
- it('should add rules', function () {
- (0, _expect2.default)(sheet.getRule('a')).to.not.be(undefined);
- (0, _expect2.default)(sheet.getRule('.a-idb, .a-idc')).to.not.be(undefined);
- });
-
- it('should generate correct CSS', function () {
- (0, _expect2.default)(sheet.toString()).to.be('.a-id {\n' + ' float: left;\n' + '}\n' + '.a-idb, .a-idc {\n' + ' float: left;\n' + '}');
- });
- });
-
- describe('.addRules()', function () {
- var sheet = void 0;
-
- beforeEach(function () {
- sheet = jss.createStyleSheet({
- a: {
- height: '1px'
- }
- });
-
- sheet.addRules({
- b: {
- height: '2px',
- '& c': {
- height: '3px'
- }
- }
- });
- });
-
- it('should generate correct CSS', function () {
- (0, _expect2.default)(sheet.toString()).to.be('.a-id {\n' + ' height: 1px;\n' + '}\n' + '.b-id {\n' + ' height: 2px;\n' + '}\n' + '.b-id c {\n' + ' height: 3px;\n' + '}');
- });
- });
-
- describe('nesting in a conditional', function () {
- var sheet = void 0;
-
- beforeEach(function () {
- sheet = jss.createStyleSheet({
- a: {
- color: 'green'
- },
- '@media': {
- a: {
- '&:hover': { color: 'red' }
- }
- }
- });
- });
-
- it('should add rules', function () {
- (0, _expect2.default)(sheet.getRule('a')).to.not.be(undefined);
- (0, _expect2.default)(sheet.getRule('@media')).to.not.be(undefined);
- });
-
- it('should generate correct CSS', function () {
- (0, _expect2.default)(sheet.toString()).to.be('.a-id {\n' + ' color: green;\n' + '}\n' + '@media {\n' + ' .a-id:hover {\n' + ' color: red;\n' + ' }\n' + '}');
- });
- });
-
- describe('nesting a conditional rule inside a regular rule', function () {
- var sheet = void 0;
-
- beforeEach(function () {
- sheet = jss.createStyleSheet({
- a: {
- color: 'green',
- '@media': {
- width: '200px'
- }
- },
- b: {
- color: 'red'
- }
- });
- });
-
- it('should add rules', function () {
- (0, _expect2.default)(sheet.getRule('a')).to.not.be(undefined);
- (0, _expect2.default)(sheet.getRule('@media')).to.not.be(undefined);
- (0, _expect2.default)(sheet.getRule('b')).to.not.be(undefined);
- });
-
- it('should generate correct CSS', function () {
- (0, _expect2.default)(sheet.toString()).to.be('.a-id {\n' + ' color: green;\n' + '}\n' + '@media {\n' + ' .a-id {\n' + ' width: 200px;\n' + ' }\n' + '}\n' + '.b-id {\n' + ' color: red;\n' + '}');
- });
- });
-
- describe('nesting a conditional rule inside of a nested rule', function () {
- var sheet = void 0;
-
- beforeEach(function () {
- sheet = jss.createStyleSheet({
- a: {
- '&:hover': {
- color: 'red',
- '@media': {
- color: 'green'
- }
- }
- }
- });
- });
-
- it('should generate correct CSS', function () {
- (0, _expect2.default)(sheet.toString()).to.be((0, _commonTags.stripIndent)(_templateObject));
- });
- });
-
- describe('order of nested conditionals', function () {
- var sheet = void 0;
-
- beforeEach(function () {
- sheet = jss.createStyleSheet({
- a: {
- '@media a': {
- color: 'red'
- },
- '@media b': {
- color: 'green'
- }
- }
- });
- });
-
- it('should add rules', function () {
- (0, _expect2.default)(sheet.getRule('@media a')).to.not.be(undefined);
- (0, _expect2.default)(sheet.getRule('@media b')).to.not.be(undefined);
- });
-
- it('should generate correct CSS', function () {
- (0, _expect2.default)(sheet.toString()).to.be('@media a {\n' + ' .a-id {\n' + ' color: red;\n' + ' }\n' + '}\n' + '@media b {\n' + ' .a-id {\n' + ' color: green;\n' + ' }\n' + '}');
- });
- });
-
- describe('adding a rule with a conditional rule', function () {
- var sheet = void 0;
-
- beforeEach(function () {
- sheet = jss.createStyleSheet();
- sheet.addRule('a', {
- color: 'green',
- '@media': {
- width: '200px'
- }
- });
- });
-
- it('should add rules', function () {
- (0, _expect2.default)(sheet.getRule('a')).to.not.be(undefined);
- (0, _expect2.default)(sheet.getRule('@media')).to.not.be(undefined);
- });
-
- it('should generate correct CSS', function () {
- (0, _expect2.default)(sheet.toString()).to.be('.a-id {\n' + ' color: green;\n' + '}\n' + '@media {\n' + ' .a-id {\n' + ' width: 200px;\n' + ' }\n' + '}');
- });
- });
-
- describe('do not merge nested conditional to container conditional with existing rule', function () {
- var sheet = void 0;
-
- beforeEach(function () {
- sheet = jss.createStyleSheet({
- a: {
- color: 'green',
- '@media': {
- width: '200px'
- },
- '@media large': {
- width: '300px'
- }
- },
- '@media': {
- b: {
- color: 'blue'
- }
- },
- c: {
- color: 'red'
- }
- });
- });
-
- it('should add rules', function () {
- (0, _expect2.default)(sheet.getRule('a')).to.not.be(undefined);
- (0, _expect2.default)(sheet.getRule('@media')).to.not.be(undefined);
- (0, _expect2.default)(sheet.getRule('c')).to.not.be(undefined);
- });
-
- it('should generate correct CSS', function () {
- (0, _expect2.default)(sheet.toString()).to.be('.a-id {\n' + ' color: green;\n' + '}\n' + '@media {\n' + ' .a-id {\n' + ' width: 200px;\n' + ' }\n' + '}\n' + '@media large {\n' + ' .a-id {\n' + ' width: 300px;\n' + ' }\n' + '}\n' + '@media {\n' + ' .b-id {\n' + ' color: blue;\n' + ' }\n' + '}\n' + '.c-id {\n' + ' color: red;\n' + '}');
- });
- });
-
- describe('warnings', function () {
- it('should warn when referenced rule is not found', function () {
- jss.createStyleSheet({
- a: {
- '& $b': { float: 'left' }
- }
- });
-
- (0, _expect2.default)(warning).to.be('[JSS] Could not find the referenced rule %s in %s.');
- });
- });
-
- describe('local refs', function () {
- var sheet = void 0;
-
- beforeEach(function () {
- sheet = jss.createStyleSheet({
- a: {
- float: 'left',
- '& $b': { float: 'left' },
- '& $b-warn': { float: 'right' }
- },
- b: {
- color: 'red'
- },
- 'b-warn': {
- color: 'orange'
- }
- });
- });
-
- it('should generate correct CSS', function () {
- (0, _expect2.default)(sheet.toString()).to.be('.a-id {\n' + ' float: left;\n' + '}\n' + '.a-id .b-id {\n' + ' float: left;\n' + '}\n' + '.a-id .b-warn-id {\n' + ' float: right;\n' + '}\n' + '.b-id {\n' + ' color: red;\n' + '}\n' + '.b-warn-id {\n' + ' color: orange;\n' + '}');
- });
- });
-
- describe('nesting conditionals in combination with extend plugin', function () {
- var sheet = void 0;
-
- beforeEach(function () {
- var localJss = (0, _jss.create)(settings).use((0, _jssExtend2.default)(), (0, _2.default)());
- sheet = localJss.createStyleSheet({
- button: {
- color: 'green',
- 'background-color': 'aqua',
- '@media': {
- width: '200px'
- }
- },
- redButton: {
- extend: 'button',
- color: 'red'
- }
- });
- });
-
- it('should add rules', function () {
- (0, _expect2.default)(sheet.getRule('button')).to.not.be(undefined);
- (0, _expect2.default)(sheet.getRule('@media')).to.not.be(undefined);
- (0, _expect2.default)(sheet.getRule('redButton')).to.not.be(undefined);
- });
-
- it('should generate correct CSS', function () {
- (0, _expect2.default)(sheet.toString()).to.be('.button-id {\n' + ' color: green;\n' + ' background-color: aqua;\n' + '}\n' + '@media {\n' + ' .button-id {\n' + ' width: 200px;\n' + ' }\n' + '}\n' + '.redButton-id {\n' + ' color: red;\n' + ' background-color: aqua;\n' + '}\n' + '@media {\n' + ' .redButton-id {\n' + ' width: 200px;\n' + ' }\n' + '}');
- });
- });
-
- describe('deep nesting', function () {
- var sheet = void 0;
-
- beforeEach(function () {
- var localJss = (0, _jss.create)(settings).use((0, _jssExtend2.default)(), (0, _2.default)());
- sheet = localJss.createStyleSheet({
- button: {
- color: 'black',
- '& .a': {
- color: 'red',
- '& .c': {
- color: 'gold'
- }
- }
- }
- });
- });
-
- it('should add rules', function () {
- (0, _expect2.default)(sheet.getRule('button')).to.not.be(undefined);
- (0, _expect2.default)(sheet.getRule('.button-id .a')).to.not.be(undefined);
- (0, _expect2.default)(sheet.getRule('.button-id .a .c')).to.not.be(undefined);
- });
-
- it('should generate correct CSS', function () {
- (0, _expect2.default)(sheet.toString()).to.be('.button-id {\n' + ' color: black;\n' + '}\n' + '.button-id .a {\n' + ' color: red;\n' + '}\n' + '.button-id .a .c {\n' + ' color: gold;\n' + '}');
- });
- });
-
- describe('deep nesting with multiple nestings in one selector', function () {
- var sheet = void 0;
-
- beforeEach(function () {
- sheet = jss.createStyleSheet({
- button: {
- color: 'black',
- '& .a, .b': {
- color: 'red',
- '& .c, &:hover': {
- color: 'gold'
- }
- }
- }
- });
- });
-
- it('should add rules', function () {
- (0, _expect2.default)(sheet.getRule('button')).to.not.be(undefined);
- (0, _expect2.default)(sheet.getRule('.button-id .a, .button-id .b')).to.not.be(undefined);
- (0, _expect2.default)(sheet.getRule('.button-id .a .c, .button-id .a:hover, ' + '.button-id .b .c, .button-id .b:hover')).to.not.be(undefined);
- });
-
- it('should generate correct CSS', function () {
- (0, _expect2.default)(sheet.toString()).to.be('.button-id {\n' + ' color: black;\n' + '}\n' + '.button-id .a, .button-id .b {\n' + ' color: red;\n' + '}\n' + '.button-id .a .c, .button-id .a:hover, ' + '.button-id .b .c, .button-id .b:hover {\n' + ' color: gold;\n' + '}');
- });
- });
-
- describe('support & at any position', function () {
- var sheet = void 0;
-
- beforeEach(function () {
- sheet = jss.createStyleSheet({
- a: {
- 'input:focus + &': {
- color: 'red'
- }
- }
- });
- });
-
- it('should generate correct CSS', function () {
- (0, _expect2.default)(sheet.toString()).to.be('input:focus + .a-id {\n' + ' color: red;\n' + '}');
- });
- });
-
- describe('function values', function () {
- var sheet = void 0;
-
- beforeEach(function () {
- sheet = jss.createStyleSheet({
- a: {
- '&:hover': {
- color: function color(_ref) {
- var _color = _ref.color;
- return _color;
- }
- }
- }
- });
- });
-
- it('should generate color red', function () {
- sheet.update({ color: 'red' });
- (0, _expect2.default)(sheet.toString()).to.be((0, _commonTags.stripIndent)(_templateObject2));
- });
-
- it('should generate color green', function () {
- sheet.update({ color: 'green' });
- (0, _expect2.default)(sheet.toString()).to.be((0, _commonTags.stripIndent)(_templateObject3));
- });
- });
- });
|