diff --git a/plugins/plugin-measurements/src/index.mjs b/plugins/plugin-measurements/src/index.mjs index c25950326a9..5e2ac7a8d1c 100644 --- a/plugins/plugin-measurements/src/index.mjs +++ b/plugins/plugin-measurements/src/index.mjs @@ -5,31 +5,31 @@ export const plugin = { version, hooks: { preDraft: function ({ settings }) { - if (settings.measurements) { - if ( - typeof settings.measurements.seatBack !== 'undefined' && - typeof settings.measurements.seat !== 'undefined' - ) { - settings.measurements.seatFront = - settings.measurements.seat - settings.measurements.seatBack - settings.measurements.seatBackArc = settings.measurements.seatBack / 2 - settings.measurements.seatFrontArc = settings.measurements.seatFront / 2 - } - if ( - typeof settings.measurements.waist !== 'undefined' && - typeof settings.measurements.waistBack !== 'undefined' - ) { - settings.measurements.waistFront = - settings.measurements.waist - settings.measurements.waistBack - settings.measurements.waistBackArc = settings.measurements.waistBack / 2 - settings.measurements.waistFrontArc = settings.measurements.waistFront / 2 - } - if ( - typeof settings.measurements.crossSeam !== 'undefined' && - typeof settings.measurements.crossSeamFront !== 'undefined' - ) { - settings.measurements.crossSeamBack = - settings.measurements.crossSeam - settings.measurements.crossSeamFront + for (const set of settings) { + if (set.measurements) { + if ( + typeof set.measurements.seatBack !== 'undefined' && + typeof set.measurements.seat !== 'undefined' + ) { + set.measurements.seatFront = set.measurements.seat - set.measurements.seatBack + set.measurements.seatBackArc = set.measurements.seatBack / 2 + set.measurements.seatFrontArc = set.measurements.seatFront / 2 + } + if ( + typeof set.measurements.waist !== 'undefined' && + typeof set.measurements.waistBack !== 'undefined' + ) { + set.measurements.waistFront = set.measurements.waist - set.measurements.waistBack + set.measurements.waistBackArc = set.measurements.waistBack / 2 + set.measurements.waistFrontArc = set.measurements.waistFront / 2 + } + if ( + typeof set.measurements.crossSeam !== 'undefined' && + typeof set.measurements.crossSeamFront !== 'undefined' + ) { + set.measurements.crossSeamBack = + set.measurements.crossSeam - set.measurements.crossSeamFront + } } } }, diff --git a/plugins/plugin-measurements/tests/plugin.test.mjs b/plugins/plugin-measurements/tests/plugin.test.mjs index 2d558136917..005a5e57df9 100644 --- a/plugins/plugin-measurements/tests/plugin.test.mjs +++ b/plugins/plugin-measurements/tests/plugin.test.mjs @@ -12,62 +12,47 @@ const measurements = { crossSeam: 100, crossSeamFront: 42, } - const part = { name: 'test', - draft: ({ points, Point }) => { + draft: ({ points, Point, part }) => { points.from = new Point(10, 20) points.to = new Point(10, 230) + + return part }, + measurements: Object.keys(measurements), + plugins: [plugin], } -const Pattern = new Design({ plugins: [plugin], parts: [part] }) -const pattern = new Pattern({ measurements }) -pattern.draft() +const Pattern = new Design({ parts: [part] }) describe('Measurements Plugin Tests', () => { it('Should set the extra measurements', () => { - expect(pattern.settings.measurements.seatFront).to.equal(40) - expect(pattern.settings.measurements.seatFrontArc).to.equal(20) - expect(pattern.settings.measurements.seatBackArc).to.equal(30) - expect(pattern.settings.measurements.waistFront).to.equal(55) - expect(pattern.settings.measurements.waistFrontArc).to.equal(27.5) - expect(pattern.settings.measurements.crossSeamBack).to.equal(58) + const pattern = new Pattern({ measurements }) + pattern.draft() + expect(pattern.settings[0].measurements.seatFront).to.equal(40) + expect(pattern.settings[0].measurements.seatFrontArc).to.equal(20) + expect(pattern.settings[0].measurements.seatBackArc).to.equal(30) + expect(pattern.settings[0].measurements.waistFront).to.equal(55) + expect(pattern.settings[0].measurements.waistFrontArc).to.equal(27.5) + expect(pattern.settings[0].measurements.crossSeamBack).to.equal(58) }) it('Should calculate seatFront from seat and seatBack', function () { - const testPattern = new Design({ - measurements: {}, - plugins: [plugin], - }) - const pattern = new testPattern() - const userMeasurements = { seat: 50, seatBack: 20 } - pattern.settings.measurements = userMeasurements + const pattern = new Pattern({ measurements: { seat: 50, seatBack: 20 } }) pattern.draft() - expect(pattern.settings.measurements.seatFront).to.equal(30) + expect(pattern.settings[0].measurements.seatFront).to.equal(30) }) it('Should calculate waistFrontArc and waistBackArc from waist and waistBack', function () { - const testPattern = new Design({ - measurements: {}, - plugins: [plugin], - }) - const pattern = new testPattern() - const userMeasurements = { waist: 50, waistBack: 20 } - pattern.settings.measurements = userMeasurements + const pattern = new Pattern({ measurements: { waist: 50, waistBack: 20 } }) pattern.draft() - expect(pattern.settings.measurements.waistFrontArc).to.equal(15) - expect(pattern.settings.measurements.waistBackArc).to.equal(10) + expect(pattern.settings[0].measurements.waistFrontArc).to.equal(15) + expect(pattern.settings[0].measurements.waistBackArc).to.equal(10) }) it('Should calculate crossSeamBack from crossSeam and crossSeamFront', function () { - const testPattern = new Design({ - measurements: {}, - plugins: [plugin], - }) - const pattern = new testPattern() - const userMeasurements = { crossSeam: 50, crossSeamFront: 20 } - pattern.settings.measurements = userMeasurements + const pattern = new Pattern({ measurements: { crossSeam: 50, crossSeamFront: 20 } }) pattern.draft() - expect(pattern.settings.measurements.crossSeamBack).to.equal(30) + expect(pattern.settings[0].measurements.crossSeamBack).to.equal(30) }) })