styled-components
Version:
**This is a work in progress** based off of [this demo](https://github.com/geelen/css-components-demo).
73 lines (62 loc) • 2.78 kB
JavaScript
;
var _expect = require('expect');
var _expect2 = _interopRequireDefault(_expect);
var _toggle = require('../toggle');
var _toggle2 = _interopRequireDefault(_toggle);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
describe('toggle', function () {
it('should handle an empty case', function () {
var namespace = (0, _toggle2.default)('namespace', {});
(0, _expect2.default)(namespace()).toEqual([]);
(0, _expect2.default)(namespace('')).toEqual([]);
(0, _expect2.default)(namespace(' ')).toEqual([]);
});
it('should always inject default even if no input passed', function () {
var namespace = (0, _toggle2.default)('namespace', {
default: 'default: rule'
});
(0, _expect2.default)(namespace()).toEqual(['default: rule;']);
(0, _expect2.default)(namespace('')).toEqual(['default: rule;']);
(0, _expect2.default)(namespace(' ')).toEqual(['default: rule;']);
});
it('should handle any combination of inputs', function () {
var namespace = (0, _toggle2.default)('namespace', {
default: 'default: rule',
a: 'option: a',
b: 'option: b'
});
(0, _expect2.default)(namespace()).toEqual(['default: rule;']);
(0, _expect2.default)(namespace('a')).toEqual(['default: rule;', 'option: a;']);
(0, _expect2.default)(namespace('a b')).toEqual(['default: rule;', 'option: a;', 'option: b;']);
(0, _expect2.default)(namespace('b a')).toEqual(['default: rule;', 'option: b;', 'option: a;']);
(0, _expect2.default)(namespace('b')).toEqual(['default: rule;', 'option: b;']);
});
it('should be ok without a default', function () {
var namespace = (0, _toggle2.default)('namespace', {
a: 'option: a',
b: 'option: b'
});
(0, _expect2.default)(namespace()).toEqual([]);
(0, _expect2.default)(namespace('a')).toEqual(['option: a;']);
(0, _expect2.default)(namespace('a b')).toEqual(['option: a;', 'option: b;']);
(0, _expect2.default)(namespace('b a')).toEqual(['option: b;', 'option: a;']);
(0, _expect2.default)(namespace('b')).toEqual(['option: b;']);
});
it('should throw if passed something not present', function () {
var namespace = (0, _toggle2.default)('namespace', {
a: 'option: a'
});
(0, _expect2.default)(function () {
return namespace('b');
}).toThrow("namespace: Unknown value 'b'. Valid values are:\na");
});
it('should not mention the default as a valid', function () {
var namespace = (0, _toggle2.default)('namespace', {
default: 'default: rule',
a: 'option: a'
});
(0, _expect2.default)(function () {
return namespace('b');
}).toThrow("namespace: Unknown value 'b'. Valid values are:\na");
});
});