82 lines
2.2 KiB
JavaScript
82 lines
2.2 KiB
JavaScript
/* global describe, it, before */
|
|
|
|
import chai from 'chai';
|
|
import {
|
|
makeDataAttributeString,
|
|
getCSSString,
|
|
buildCSSRule,
|
|
removeCSSRule
|
|
} from '../src/utils.js';
|
|
|
|
chai.expect();
|
|
const expect = chai.expect;
|
|
|
|
describe('#utils', () => {
|
|
describe('makeDataAttributeString', () => {
|
|
it('should return the correct data-attr string', () => {
|
|
const props = {
|
|
isHeader: 1,
|
|
colIndex: 0,
|
|
rowIndex: 4
|
|
};
|
|
|
|
expect(makeDataAttributeString(props))
|
|
.to.be.equal('data-is-header="1" data-col-index="0" data-row-index="4"');
|
|
});
|
|
});
|
|
|
|
describe('getCSSString', () => {
|
|
it('should return CSS key value pairs', () => {
|
|
const style = {
|
|
width: '2px',
|
|
height: '4px',
|
|
'margin-top': '3px'
|
|
};
|
|
|
|
expect(getCSSString(style))
|
|
.to.be.equal('width: 2px; height: 4px; margin-top: 3px;');
|
|
});
|
|
});
|
|
|
|
describe('buildCSSRule', () => {
|
|
it('should return CSS rule string with updated properties', () => {
|
|
const rule = '.test';
|
|
const style = {
|
|
width: '2px',
|
|
height: '4px',
|
|
'margin-top': '3px'
|
|
};
|
|
|
|
const ruleString = buildCSSRule(rule, style);
|
|
|
|
expect(ruleString)
|
|
.to.be.equal('.test { width: 2px; height: 4px; margin-top: 3px; }');
|
|
|
|
const updatedRuleString = buildCSSRule(rule, { width: '5px' }, ruleString);
|
|
|
|
expect(updatedRuleString)
|
|
.to.be.equal('.test { width: 5px; height: 4px; margin-top: 3px; }');
|
|
|
|
const updatedRuleString2 = buildCSSRule(rule, { height: '19px' }, updatedRuleString);
|
|
|
|
expect(updatedRuleString2)
|
|
.to.be.equal('.test { width: 5px; height: 19px; margin-top: 3px; }');
|
|
|
|
const updatedRuleString3 = buildCSSRule('.test2', { height: '45px' }, updatedRuleString2);
|
|
|
|
expect(updatedRuleString3)
|
|
.to.be.equal('.test { width: 5px; height: 19px; margin-top: 3px; }.test2 { height: 45px; }');
|
|
});
|
|
});
|
|
|
|
describe('removeCSSRule', () => {
|
|
it('should remove the css rule based on the selector', () => {
|
|
const rule = '.test';
|
|
const cssRuleString = `.test {margin-top: 2px;} .test2 {color: blue;}`;
|
|
|
|
expect(removeCSSRule(rule, cssRuleString))
|
|
.to.be.equal('.test2 {color: blue;}');
|
|
})
|
|
})
|
|
});
|