1
0
Fork 0

chore(core): Linting and more tests

This commit is contained in:
joostdecock 2022-09-25 09:29:41 +02:00
parent b3679ede55
commit 47a7a71b61
8 changed files with 159 additions and 520 deletions

View file

@ -4,7 +4,6 @@ import { Design } from '../src/index.mjs'
const expect = chai.expect
describe('Pattern', () => {
it('Should log an error when a part does not have a name', () => {
const part = { draft: ({ part }) => part }
const design = new Design()
@ -20,52 +19,56 @@ describe('Pattern', () => {
noDraft: ({ points, part }) => {
points.test = false
return part
}
},
}
const to = {
name: 'testTo',
from,
draft: ({ points, part }) => {
return part
}
draft: ({ part }) => part,
}
const design = new Design({ parts: [ to ]})
const design = new Design({ parts: [to] })
const pattern = new design()
pattern.draft()
expect(pattern.setStores[0].logs.error.length).to.equal(1)
expect(pattern.setStores[0].logs.error[0]).to.equal('Unable to draft pattern part __test__. Part.draft() is not callable')
expect(pattern.setStores[0].logs.error[0]).to.equal(
'Unable to draft pattern part __test__. Part.draft() is not callable'
)
})
it('Not returning the part from the draft method should log an error', () => {
const test = {
name: 'test',
draft: ({ points, part }) => {}
draft: () => {},
}
const design = new Design({ parts: [ test ]})
const design = new Design({ parts: [test] })
const pattern = new design()
pattern.draft()
expect(pattern.setStores[0].logs.error.length).to.equal(1)
expect(pattern.setStores[0].logs.error[0]).to.equal('Result of drafting part test was undefined. Did you forget to return the part?')
expect(pattern.setStores[0].logs.error[0]).to.equal(
'Result of drafting part test was undefined. Did you forget to return the part?'
)
})
it('Should skip unneeded parts', () => {
const test = {
name: 'test',
draft: ({ points, part }) => part
draft: ({ part }) => part,
}
const design = new Design({ parts: [ test ]})
const design = new Design({ parts: [test] })
const pattern = new design({ only: ['you'] })
pattern.draft()
expect(pattern.setStores[0].logs.debug.length).to.equal(4)
expect(pattern.setStores[0].logs.debug[3]).to.equal('Part `test` is not needed. Skipping draft and setting hidden to `true`')
expect(pattern.setStores[0].logs.debug[3]).to.equal(
'Part `test` is not needed. Skipping draft and setting hidden to `true`'
)
})
it('Should return the initialized config', () => {
const test = {
name: 'test',
draft: ({ points, part }) => part
draft: ({ part }) => part,
}
const design = new Design({ parts: [ test ]})
const design = new Design({ parts: [test] })
const pattern = new design({ only: ['you'] })
const config = pattern.getConfig()
expect(config.draftOrder.length).to.equal(1)
@ -75,10 +78,10 @@ describe('Pattern', () => {
it('Should skip a plugin that is loaded twice', () => {
const test = {
name: 'test',
draft: ({ points, part }) => part
draft: ({ part }) => part,
}
const plugin = { name: 'test' }
const design = new Design({ parts: [ test ]})
const design = new Design({ parts: [test] })
const pattern = new design({ only: ['you'] })
pattern.use(plugin)
pattern.use(plugin)
@ -100,10 +103,10 @@ describe('Pattern', () => {
const test = {
name: 'test',
hidden: true,
draft: ({ points, part }) => part
draft: ({ part }) => part,
}
const design = new Design()
const pattern = new design({ only: ['test']})
const design = new Design({ parts: [test] })
const pattern = new design({ only: ['test'] })
pattern.__init()
expect(pattern.__isPartHidden('test')).to.equal(false)
})
@ -111,14 +114,14 @@ describe('Pattern', () => {
it('Stacks with parts in only are never hidden', () => {
const part = {
name: 'test',
draft: ({ points, Point, paths, Path, part }) => {
draft: ({ points, Point, part }) => {
points.test = new Point(3, 3)
return part
},
}
const design = new Design({ parts: [part] })
const pattern = new design({ only: [ 'test' ] })
const pattern = new design({ only: ['test'] })
pattern.draft().render()
expect(pattern.__isStackHidden('test')).to.equal(false)
})
@ -126,24 +129,24 @@ describe('Pattern', () => {
it('Stacks with parts in only are never hidden', () => {
const part = {
name: 'test',
draft: ({ points, Point, paths, Path, part }) => {
draft: ({ points, Point, part }) => {
points.test = new Point(3, 3)
return part
},
}
const design = new Design({ parts: [part] })
const pattern = new design({ only: [ 'test' ] })
const pattern = new design({ only: ['test'] })
pattern.draft().render()
expect(pattern.__isStackHidden('test')).to.equal(false)
})
it('Drafts with errors should not get packed', () => {
const part= {
const part = {
name: 'test',
draft: ({ points, Point, paths, Path, part }) => {
draft: ({ points, Point, part }) => {
points.test = new Point(3, 3)
joints.foo = 'bar'
joints.foo = 'bar' // eslint-disable-line no-undef
return part
},
@ -155,19 +158,23 @@ describe('Pattern', () => {
expect(pattern.setStores[0].logs.error[0][0]).to.equal('Unable to draft part `test` (set 0)')
})
// FIXME: Add assertions here
it('Handle layout object', () => {
const part = {
name: 'test',
draft: ({ points, Point, paths, Path, part }) => {
draft: ({ points, Point, part }) => {
points.test = new Point(3, 3)
return part
},
}
const design = new Design({ parts: [part] })
const pattern = new design({ layout: { stacks: { test: { flipX: true } } } })
const pattern = new design({
layout: { stacks: { test: { flipX: true } }, width: 300, height: 400 },
})
const props = pattern.draft().getRenderProps()
// FIXME: Add assertions here
//expect(pattern.__isStackHidden('test')).to.equal(false)
expect(props.stacks.test.attributes.get('transform')).to.equal('scale(-1 1)')
expect(props.width).to.equal(300)
expect(props.height).to.equal(400)
})
})