
Note that the tests for Lumina are failing, but that's not related to the chai upgrade, rather it seems these tests fail because of issues in the design that we'll tackle later (it's a brand new design yet to be released).
93 lines
2.8 KiB
JavaScript
93 lines
2.8 KiB
JavaScript
import { expect } from 'chai'
|
|
import { Design } from '../src/index.mjs'
|
|
|
|
describe('Design', () => {
|
|
it('Design constructor should return pattern constructor', () => {
|
|
const Pattern = new Design()
|
|
expect(typeof Pattern).to.equal('function')
|
|
})
|
|
|
|
it('Design constructor should load the default config', () => {
|
|
const Pattern = new Design()
|
|
const config = Pattern.designConfig
|
|
expect(Array.isArray(config.parts)).to.equal(true)
|
|
expect(config.parts.length).to.equal(0)
|
|
expect(typeof config.data).to.equal('object')
|
|
expect(Object.keys(config.data).length).to.equal(0)
|
|
})
|
|
|
|
it(`Design constructor should add options to config`, () => {
|
|
const settings = {
|
|
options: {
|
|
one: { pct: 50, min: 0, max: 100 },
|
|
two: { deg: 10, min: 5, max: 15 },
|
|
},
|
|
}
|
|
const Pattern = new Design(settings)
|
|
const o = Pattern.designConfig.options
|
|
expect(Object.keys(o).length).to.equal(2)
|
|
expect(o.one.pct).to.equal(50)
|
|
expect(o.one.min).to.equal(0)
|
|
expect(o.one.max).to.equal(100)
|
|
expect(o.two.deg).to.equal(10)
|
|
expect(o.two.min).to.equal(5)
|
|
expect(o.two.max).to.equal(15)
|
|
})
|
|
|
|
it(`Design constructor should generate configuration`, () => {
|
|
const partA = {
|
|
name: 'test.partA',
|
|
measurements: ['head', 'knee'],
|
|
optionalMeasurements: ['chest', 'waist'],
|
|
options: {
|
|
optA: { pct: 40, min: 20, max: 80 },
|
|
},
|
|
draft: ({ part }) => part,
|
|
}
|
|
const partB = {
|
|
name: 'test.partB',
|
|
measurements: ['hpsToWaist', 'shoulderToWrist'],
|
|
optionalMeasurements: ['neck'],
|
|
after: partA,
|
|
plugins: [
|
|
{
|
|
name: 'testPlugin',
|
|
hooks: {
|
|
preRender: () => {},
|
|
},
|
|
},
|
|
],
|
|
options: {
|
|
optB: { deg: 40, min: 20, max: 80 },
|
|
},
|
|
draft: ({ part }) => part,
|
|
}
|
|
const partC = {
|
|
name: 'test.partC',
|
|
measurements: ['seat', 'ankle'],
|
|
optionalMeasurements: ['knee', 'hpsToWaist'],
|
|
from: partB,
|
|
options: {
|
|
optC: { pct: 20, min: 10, max: 30 },
|
|
},
|
|
draft: ({ part }) => part,
|
|
}
|
|
const design = new Design({
|
|
data: {
|
|
name: 'test',
|
|
version: '1.2.3',
|
|
},
|
|
parts: [partC],
|
|
})
|
|
expect(design.designConfig.data.name).to.equal('test')
|
|
expect(design.designConfig.data.version).to.equal('1.2.3')
|
|
expect(design.patternConfig.measurements.length).to.equal(6)
|
|
for (const m of ['seat', 'ankle', 'hpsToWaist', 'shoulderToWrist', 'head', 'knee']) {
|
|
expect(design.patternConfig.measurements.includes(m)).to.equal(true)
|
|
}
|
|
for (const m of ['neck', 'chest', 'waist']) {
|
|
expect(design.patternConfig.optionalMeasurements.includes(m)).to.equal(true)
|
|
}
|
|
expect(design.patternConfig.plugins.testPlugin.name).to.equal('testPlugin')
|
|
})
|
|
})
|