styled-components
Version:
Visual primitives for the component age. Use the best bits of ES6 and CSS to style your apps without stress 💅
96 lines (85 loc) • 4.26 kB
JavaScript
;
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _expect = require('expect');
var _expect2 = _interopRequireDefault(_expect);
var _flatten = require('../flatten');
var _flatten2 = _interopRequireDefault(_flatten);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
describe('flatten', function () {
it('doesnt merge strings', function () {
(0, _expect2.default)((0, _flatten2.default)(['foo', 'bar', 'baz'])).toEqual(['foo', 'bar', 'baz']);
});
it('drops nulls', function () {
(0, _expect2.default)((0, _flatten2.default)(['foo', false, 'bar', undefined, 'baz', null])).toEqual(['foo', 'bar', 'baz']);
});
it('doesnt drop any numbers', function () {
(0, _expect2.default)((0, _flatten2.default)(['foo', 0, 'bar', NaN, 'baz', -1])).toEqual(['foo', '0', 'bar', 'NaN', 'baz', '-1']);
});
it('toStrings everything', function () {
(0, _expect2.default)((0, _flatten2.default)([1, true])).toEqual(['1', 'true']);
});
it('hypenates objects', function () {
var obj = {
fontSize: '14px',
WebkitFilter: 'blur(2px)'
};
var css = 'font-size: 14px; -webkit-filter: blur(2px);';
(0, _expect2.default)((0, _flatten2.default)([obj])).toEqual([css]);
(0, _expect2.default)((0, _flatten2.default)(['some:thing;', obj, 'something: else;'])).toEqual(['some:thing;', css, 'something: else;']);
});
it('toStrings class instances', function () {
var SomeClass = function () {
function SomeClass() {
_classCallCheck(this, SomeClass);
}
_createClass(SomeClass, [{
key: 'toString',
value: function toString() {
return 'some: thing;';
}
}]);
return SomeClass;
}();
(0, _expect2.default)((0, _flatten2.default)([new SomeClass()])).toEqual(['some: thing;']);
});
it('flattens subarrays', function () {
(0, _expect2.default)((0, _flatten2.default)([1, 2, [3, 4, 5], 'come:on;', 'lets:ride;'])).toEqual(['1', '2', '3', '4', '5', 'come:on;', 'lets:ride;']);
});
it('defers functions', function () {
var func = function func() {
return 'bar';
};
var funcWFunc = function funcWFunc() {
return ['static', function (subfunc) {
return subfunc ? 'bar' : 'baz';
}];
};
(0, _expect2.default)((0, _flatten2.default)(['foo', func, 'baz'])).toEqual(['foo', func, 'baz']);
(0, _expect2.default)((0, _flatten2.default)(['foo', funcWFunc, 'baz'])).toEqual(['foo', funcWFunc, 'baz']);
});
it('executes functions', function () {
var func = function func() {
return 'bar';
};
(0, _expect2.default)((0, _flatten2.default)(['foo', func, 'baz'], { bool: true })).toEqual(['foo', 'bar', 'baz']);
});
it('passes values to function', function () {
var func = function func(_ref) {
var bool = _ref.bool;
return bool ? 'bar' : 'baz';
};
(0, _expect2.default)((0, _flatten2.default)(['foo', func], { bool: true })).toEqual(['foo', 'bar']);
(0, _expect2.default)((0, _flatten2.default)(['foo', func], { bool: false })).toEqual(['foo', 'baz']);
});
it('recursively calls functions', function () {
var func = function func() {
return ['static', function (_ref2) {
var bool = _ref2.bool;
return bool ? 'bar' : 'baz';
}];
};
(0, _expect2.default)((0, _flatten2.default)(['foo', func], { bool: true })).toEqual(['foo', 'static', 'bar']);
(0, _expect2.default)((0, _flatten2.default)(['foo', func], { bool: false })).toEqual(['foo', 'static', 'baz']);
});
});