
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).
141 lines
3.7 KiB
JavaScript
141 lines
3.7 KiB
JavaScript
import { adult, doll, giant } from '@freesewing/models'
|
|
import { getShortName, isUtilityDesign } from './config.mjs'
|
|
import { expect } from 'chai'
|
|
import { timingPlugin } from '@freesewing/plugin-timing'
|
|
|
|
const ciTimeout = 10000
|
|
|
|
/*
|
|
* This runs unit tests for pattern drafting
|
|
* It expects the following:
|
|
*
|
|
* @param object Pattern: pattern constructor
|
|
* @param boolean log: Set to true to log errors
|
|
*/
|
|
export const testPatternDrafting = (Pattern, log = false) => {
|
|
const design = getShortName(Pattern.designConfig.data.name)
|
|
|
|
// Helper method to try/catch pattern drafting
|
|
const doesItDraftAndRender = (pattern, log = false) => {
|
|
try {
|
|
pattern.draft().render()
|
|
if (log) {
|
|
console.log(pattern.store.logs)
|
|
console.log(pattern.setStores[0].logs)
|
|
}
|
|
if (pattern.store.logs.error.length < 1 && pattern.setStores[0].logs.error.length < 1)
|
|
return true
|
|
return false
|
|
} catch (err) {
|
|
if (log) console.log(err)
|
|
|
|
return false
|
|
}
|
|
}
|
|
|
|
/*
|
|
* Draft pattern for different models
|
|
*/
|
|
if (!isUtilityDesign(design)) {
|
|
describe('Draft for humans:', function () {
|
|
this.timeout(ciTimeout)
|
|
for (const type of ['cisFemale', 'cisMale']) {
|
|
describe(type, () => {
|
|
for (const size in adult[type]) {
|
|
it(` - Drafting for size ${size}`, () => {
|
|
expect(
|
|
doesItDraftAndRender(
|
|
new Pattern({
|
|
measurements: adult[type][size],
|
|
}).use(timingPlugin),
|
|
log
|
|
)
|
|
).to.equal(true)
|
|
})
|
|
}
|
|
})
|
|
}
|
|
})
|
|
|
|
// Do the same for fantastical models (doll, giant)
|
|
const fams = { doll, giant }
|
|
for (const family of ['doll', 'giant']) {
|
|
describe(`Draft for ${family}:`, function () {
|
|
this.timeout(ciTimeout)
|
|
for (const type of ['cisFemale', 'cisMale']) {
|
|
describe(type, () => {
|
|
for (const size in fams[family][type]) {
|
|
it(` - Drafting at ${size}%`, () => {
|
|
expect(
|
|
doesItDraftAndRender(
|
|
new Pattern({
|
|
measurements: fams[family][type][size],
|
|
}),
|
|
log
|
|
)
|
|
).to.equal(true)
|
|
})
|
|
}
|
|
})
|
|
}
|
|
})
|
|
}
|
|
} else {
|
|
// Utility pattern - Just draft them once
|
|
// FIXME: This hangs when running all tests, not sure why
|
|
//it(` - Draft utility pattern`, function() {
|
|
// this.timeout(5000);
|
|
// expect(
|
|
// doesItDraftAndRender(
|
|
// new Pattern({
|
|
// measurements: adult.cisFemale[34]
|
|
// }), log
|
|
// )
|
|
// ).to.equal(true)
|
|
// done()
|
|
//})
|
|
}
|
|
}
|
|
|
|
/*
|
|
* Draft parts individually
|
|
*/
|
|
/*
|
|
it('Draft parts individually:', () => true)
|
|
for (const name of parts) {
|
|
it(` - ${name} should draft and render on its own`, () => {
|
|
expect(
|
|
doesItDraftAndRender(
|
|
new Pattern({
|
|
measurements: ourModels.size34,
|
|
only: [name]
|
|
}), log
|
|
)
|
|
).to.equal(true)
|
|
})
|
|
}
|
|
*/
|
|
|
|
/*
|
|
* Draft a paperless non-detailed pattern
|
|
*/
|
|
/*
|
|
it('Draft paperless non-detailed pattern:', () => true)
|
|
if (family !== 'utilities') {
|
|
for (const sa of [0,10]) {
|
|
it(` - Drafting paperless non-detailed pattern for size-40 (${breasts ? 'with' : 'no'} breasts) sa: ${sa}`, () => {
|
|
expect(
|
|
doesItDraftAndRender(
|
|
new Pattern({
|
|
measurements: ourModels.size40,
|
|
complete: false,
|
|
paperless: true,
|
|
sa
|
|
}), log
|
|
)
|
|
).to.equal(true)
|
|
})
|
|
}
|
|
}
|
|
}
|
|
*/
|