1
0
Fork 0
freesewing/plugins/plugin-annotations/tests/cutlist.test.mjs

203 lines
6.1 KiB
JavaScript
Raw Permalink Normal View History

import { expect } from 'chai'
2022-09-14 15:02:39 +02:00
import { Design } from '@freesewing/core'
import { annotationsPlugin } from '../src/index.mjs'
describe('Cutlist Plugin Tests', () => {
2022-09-11 21:40:21 +02:00
it('Draft method should receive added methods', () => {
let methods
const part = {
name: 'example_part',
2023-03-19 20:12:17 -05:00
draft: ({ store, part }) => {
methods = { ...store.cutlist }
return part
2022-09-11 21:40:21 +02:00
},
plugins: [annotationsPlugin],
}
const Test = new Design({ parts: [part], noCorePlugins: true })
const pattern = new Test()
pattern.draft()
2023-03-19 20:12:17 -05:00
expect(methods.addCut).to.be.a('function')
expect(methods.removeCut).to.be.a('function')
expect(methods.setGrain).to.be.a('function')
expect(methods.setCutOnFold).to.be.a('function')
expect(methods.getCutFabrics).to.be.a('function')
})
2022-09-11 21:40:21 +02:00
it('Should handle addCut() with defaults', () => {
const part = {
name: 'example_part',
2023-03-19 20:12:17 -05:00
draft: ({ store, part }) => {
store.cutlist.addCut()
return part
2022-09-11 21:40:21 +02:00
},
plugins: [annotationsPlugin],
}
const Test = new Design({ parts: [part], noCorePlugins: true })
const pattern = new Test()
pattern.draft()
2023-03-09 17:45:10 -06:00
expect(pattern.setStores[0].cutlist.example_part.materials.fabric).to.have.lengthOf(1)
expect(pattern.setStores[0].cutlist.example_part.materials.fabric[0]).to.deep.equal({
cut: 2,
identical: false,
onBias: false,
onFold: false,
2023-03-09 17:45:10 -06:00
})
})
2022-09-11 21:40:21 +02:00
it('Should handle addCut() with non-defaults', () => {
const part = {
name: 'example_part',
2023-03-19 20:12:17 -05:00
draft: ({ store, part }) => {
store.cutlist.addCut({ cut: 3, from: 'lining', identical: true })
return part
2022-09-11 21:40:21 +02:00
},
plugins: [annotationsPlugin],
}
const Test = new Design({ parts: [part], noCorePlugins: true })
const pattern = new Test()
pattern.draft()
2023-03-09 17:45:10 -06:00
expect(pattern.setStores[0].cutlist.example_part.materials.lining).to.have.lengthOf(1)
expect(pattern.setStores[0].cutlist.example_part.materials.lining[0]).to.deep.equal({
cut: 3,
identical: true,
onBias: false,
onFold: false,
2023-03-09 17:45:10 -06:00
})
})
2022-09-11 21:40:21 +02:00
it('Should remove cut info via addCut(false)', () => {
const part = {
name: 'example_part',
2023-03-19 20:12:17 -05:00
draft: ({ store, part }) => {
store.cutlist.addCut(2, 'fabric')
store.cutlist.addCut(4, 'lining', true)
store.cutlist.addCut(false, 'lining')
return part
2022-09-11 21:40:21 +02:00
},
plugins: [annotationsPlugin],
}
const Test = new Design({ parts: [part], noCorePlugins: true })
const pattern = new Test()
pattern.draft()
2023-03-19 20:12:17 -05:00
expect(pattern.setStores[0].cutlist.example_part.materials.lining).to.be.undefined
})
2022-09-11 21:40:21 +02:00
it('Should remove cut info for a material via removeCut()', () => {
const part = {
name: 'example_part',
2023-03-19 20:12:17 -05:00
draft: ({ store, part }) => {
store.cutlist.addCut(2, 'fabric')
store.cutlist.addCut(4, 'lining', true)
store.cutlist.removeCut('lining')
return part
2022-09-11 21:40:21 +02:00
},
plugins: [annotationsPlugin],
}
const Test = new Design({ parts: [part], noCorePlugins: true })
const pattern = new Test()
pattern.draft()
2023-03-19 20:12:17 -05:00
expect(pattern.setStores[0].cutlist.example_part.materials.lining).to.be.undefined
2023-03-09 17:45:10 -06:00
expect(pattern.setStores[0].cutlist.example_part.materials.fabric[0].cut).to.equal(2)
})
2022-09-11 21:40:21 +02:00
it('Should remove cut info for all materials via removeCut(true)', () => {
const part = {
name: 'example_part',
2023-03-19 20:12:17 -05:00
draft: ({ store, part }) => {
store.cutlist.addCut(2, 'fabric')
store.cutlist.addCut(4, 'lining', true)
store.cutlist.removeCut()
return part
2022-09-11 21:40:21 +02:00
},
plugins: [annotationsPlugin],
}
const Test = new Design({ parts: [part], noCorePlugins: true })
const pattern = new Test()
pattern.draft()
2023-03-19 20:12:17 -05:00
expect(pattern.setStores[0].cutlist.example_part.materials).to.be.undefined
})
2022-09-11 21:40:21 +02:00
it('Should set the grain via setGrain()', () => {
const part = {
name: 'example_part',
2023-03-19 20:12:17 -05:00
draft: ({ store, part }) => {
store.cutlist.setGrain(45)
return part
2022-09-11 21:40:21 +02:00
},
plugins: [annotationsPlugin],
}
const Test = new Design({ parts: [part], noCorePlugins: true })
const pattern = new Test()
pattern.draft()
expect(pattern.setStores[0].cutlist.example_part.grain).to.equal(45)
})
2022-09-11 21:40:21 +02:00
it('Should remove the grain via setGrain(false)', () => {
const part = {
name: 'example_part',
2023-03-19 20:12:17 -05:00
draft: ({ store, part }) => {
store.cutlist.setGrain(45)
store.cutlist.setGrain(false)
return part
2022-09-11 21:40:21 +02:00
},
plugins: [annotationsPlugin],
}
const Test = new Design({ parts: [part], noCorePlugins: true })
const pattern = new Test()
pattern.draft()
2023-03-19 20:12:17 -05:00
expect(pattern.setStores[0].cutlist.example_part.grain).to.be.undefined
})
2022-09-11 21:40:21 +02:00
it('Should set the cutOnFold via setCutOnFold(p1, p2)', () => {
const part = {
name: 'example_part',
2023-03-19 20:12:17 -05:00
draft: ({ Point, store, part }) => {
try {
2023-03-19 20:12:17 -05:00
store.cutlist.setCutOnFold(new Point(2, 2), new Point(200, 200))
2022-09-11 21:40:21 +02:00
} catch (err) {
console.log(err)
}
return part
2022-09-11 21:40:21 +02:00
},
plugins: [annotationsPlugin],
}
const Test = new Design({ parts: [part], noCorePlugins: true })
const pattern = new Test()
pattern.draft()
expect(pattern.setStores[0].cutlist.example_part.cutOnFold[0].x).to.equal(2)
expect(pattern.setStores[0].cutlist.example_part.cutOnFold[0].y).to.equal(2)
expect(pattern.setStores[0].cutlist.example_part.cutOnFold[1].x).to.equal(200)
expect(pattern.setStores[0].cutlist.example_part.cutOnFold[1].y).to.equal(200)
})
2022-09-11 21:40:21 +02:00
it('Should removet the cutOnFold via setCutOnFold(false)', () => {
const part = {
name: 'example_part',
2023-03-19 20:12:17 -05:00
draft: ({ Point, store, part }) => {
try {
2023-03-19 20:12:17 -05:00
store.cutlist.setCutOnFold(new Point(2, 2), new Point(200, 200))
store.cutlist.setCutOnFold(false)
2022-09-11 21:40:21 +02:00
} catch (err) {
console.log(err)
}
return part
2022-09-11 21:40:21 +02:00
},
plugins: [annotationsPlugin],
}
const Test = new Design({ parts: [part], noCorePlugins: true })
const pattern = new Test()
pattern.draft()
2023-03-19 20:12:17 -05:00
expect(pattern.setStores[0].cutlist.example_part.cutOnFold).to.be.undefined
})
})