hyperstyles
Version:
Transparently apply CSS Modules to hyperscript-compatible DOM builders, such as virtual-hyperscript and React.
104 lines (80 loc) • 3.11 kB
JavaScript
var test = require('tape');
var common = require('../common');
var hyperstyles = require('../../');
var virtualHyperscript = require('virtual-dom/virtual-hyperscript');
var virtualHyperscriptSVG = require('virtual-dom/virtual-hyperscript/svg');
test('virtual-hyperscript', function (t) {
var h = hyperstyles(virtualHyperscript, common.styles);
t.plan(12);
t.equal(
h('div').tagName,
virtualHyperscript('div').tagName
);
t.equal(
h('div', common.props).properties.id,
virtualHyperscript('div', common.props).properties.id
);
t.equal(
h('div', common.props).properties.className,
virtualHyperscript('div', common.props).properties.className
);
t.deepEqual(
h('div', common.children).children,
virtualHyperscript('div', common.children).children
);
t.equal(
h('div', common.props, common.children).properties.id,
virtualHyperscript('div', common.props, common.children).properties.id
);
t.equal(
h('div', common.props, common.children).properties.className,
virtualHyperscript('div', common.props, common.children).properties.className
);
t.deepEqual(
h('div', common.props, common.children).children,
virtualHyperscript('div', common.props, common.children).children
);
t.equal(
h('div.thing').properties.className,
virtualHyperscript('div', {className: common.styles.thing}).properties.className
);
t.equal(
h('div#x.thing').properties.className,
virtualHyperscript('div', {className: common.styles.thing}).properties.className
);
t.equal(
h('div.thing', {className: 'blah'}).properties.className,
virtualHyperscript('div', {className: 'blah ' + common.styles.thing}).properties.className
);
t.equal(
h('div', {styleName: 'thing'}).properties.className,
virtualHyperscript('div', {className: common.styles.thing}).properties.className
);
t.equal(
h('div', {styleName: 'thing', className: 'blah'}).properties.className,
virtualHyperscript('div', {className: 'blah ' + common.styles.thing}).properties.className
);
});
test('virtual-hyperscript (partial application)', function (t) {
var partialHyperstyles, h, hAlt;
t.plan(2);
partialHyperstyles = hyperstyles(virtualHyperscript);
h = partialHyperstyles(common.styles);
hAlt = partialHyperstyles(common.stylesAlt);
t.equal(
h('div.thing').properties.className,
virtualHyperscript('div', {className: common.styles.thing}).properties.className
);
t.equal(
hAlt('div.thing').properties.className,
virtualHyperscript('div', {className: common.stylesAlt.thing}).properties.className
);
});
test('virtual-hyperscript/svg', function (t) {
var h = hyperstyles(virtualHyperscriptSVG)(common.styles);
t.plan(1);
t.equal(
h('svg.thing').properties.className,
virtualHyperscriptSVG('svg', {className: common.styles.thing}).properties.className
);
});