1
0
Fork 0
freesewing/packages/core/tests/attributes.test.mjs

77 lines
2.4 KiB
JavaScript
Raw Normal View History

import chai from 'chai'
import { Point } from '../src/index.mjs'
2022-08-25 11:47:54 +02:00
const expect = chai.expect
const newAttr = () => new Point(0, 0).attributes
const a = newAttr()
describe('Attributes', () => {
it('Should set an attribute', () => {
a.set('hold', 'me')
expect(a.get('hold')).to.equal('me')
})
it('Should remove an attribute', () => {
a.remove('hold')
expect(a.get('hold')).to.equal(false)
})
it('Should only set an unset attribute', () => {
a.setIfUnset('hold', 'me')
expect(a.get('hold')).to.equal('me')
a.setIfUnset('hold', 'thatDudeOverThere')
expect(a.get('hold')).to.equal('me')
})
it('Should return false when getting an unset attribute', () => {
let a = newAttr()
expect(a.get('test')).to.equal(false)
})
it('Should render attributes correctly', () => {
let a = newAttr().set('class', 'test').add('class', 'render').set('transform', 'scale(1)')
expect(a.render()).to.equal(' class="test render" transform="scale(1)"')
})
it('Should render attributes with given prefix only', () => {
let a = newAttr()
.set('class', 'test')
.add('class', 'render')
.add('data-text', 'foo')
.add('data-text', 'bar')
.add('data-mode', 'test')
.set('transform', 'scale(1)')
expect(a.renderIfPrefixIs('data-')).to.equal(' text="foo bar" mode="test"')
})
2022-07-23 17:00:48 +02:00
it('Should return attributes as array', () => {
let a = newAttr().set('class', 'test').add('class', 'render')
expect(JSON.stringify(a.getAsArray('class'))).to.equal(JSON.stringify(['test', 'render']))
expect(a.getAsArray('nope')).to.equal(false)
})
2022-07-23 17:00:48 +02:00
it('Should render attributes as CSS', () => {
let a = newAttr().set('line-height', 1.2).add('border', '1px solid red')
expect(a.renderAsCss()).to.equal(' line-height:1.2; border:1px solid red;')
})
it('Should return attributes as props and filter a prefix', () => {
const a = newAttr()
.set('line-height', 1.2)
.add('border', '1px solid red')
.set('data-text', 'This is a test')
.set('data-text-class', 'center')
const props = a.asPropsIfPrefixIs('data-')
expect(props.text).to.equal('This is a test')
expect(props['text-class']).to.equal('center')
})
it('Should return attributes as props and handle special class case', () => {
const a = newAttr().set('class', 'fabric')
const props = a.asPropsIfPrefixIs('')
expect(props.className).to.equal('fabric')
})
})