diff --git a/packages/plugin-bundle/CHANGELOG.md b/packages/plugin-bundle/CHANGELOG.md index d0c14d1030b..4768b3607b0 100644 --- a/packages/plugin-bundle/CHANGELOG.md +++ b/packages/plugin-bundle/CHANGELOG.md @@ -1,6 +1,12 @@ # Change log for: @freesewing/plugin-bundle +## unreleased (NaN-NaN-NaN) + +### Added + + - Added (esm) unit tests + ## 2.17.0 (2021-07-01) ### Changed diff --git a/packages/plugin-bundle/package.json b/packages/plugin-bundle/package.json index 1a8ae3b9a29..ab0d1280cc7 100644 --- a/packages/plugin-bundle/package.json +++ b/packages/plugin-bundle/package.json @@ -31,18 +31,22 @@ "clean": "rimraf dist", "build": "rollup -c", "lernabuild": "rollup -c", - "test": "BABEL_ENV=production ../../node_modules/.bin/_mocha tests/*.test.js --require @babel/register", + "test": "BABEL_ENV=production ../../node_modules/.bin/_mocha tests/*.test.mjs --require @babel/register", "pubtest": "npm publish --registry http://localhost:6662", "pubforce": "npm publish", "symlink": "mkdir -p ./node_modules/@freesewing && cd ./node_modules/@freesewing && ln -s -f ../../../* . && cd -", "start": "rollup -c -w", - "prettier": "npx prettier --write 'src/*.js' 'tests/*.js'" + "testci": "BABEL_ENV=production ../../node_modules/.bin/_mocha tests/*.test.mjs --require @babel/register", + "prettier": "npx prettier --write 'src/*.js' 'tests/*.mjs'" }, "peerDependencies": { "@freesewing/core": "^2.19.5" }, "dependencies": {}, "devDependencies": { + "mocha": "^9.1.1", + "chai": "^4.2.0", + "@babel/register": "^7.10.5", "@freesewing/plugin-buttons": "^2.19.5", "@freesewing/plugin-cutonfold": "^2.19.5", "@freesewing/plugin-dimension": "^2.19.5", diff --git a/packages/plugin-bundle/src/index.js b/packages/plugin-bundle/src/index.js index 5e854ecdabb..486b3702b2e 100644 --- a/packages/plugin-bundle/src/index.js +++ b/packages/plugin-bundle/src/index.js @@ -13,7 +13,7 @@ import sprinkle from '@freesewing/plugin-sprinkle' import measurements from '@freesewing/plugin-measurements' import { version, name } from '../package.json' -let bundle = [ +const bundle = [ buttons, cutonfold, dimension, diff --git a/packages/plugin-bundle/tests/bundle.test.js b/packages/plugin-bundle/tests/bundle.test.js deleted file mode 100644 index 6846112cf1b..00000000000 --- a/packages/plugin-bundle/tests/bundle.test.js +++ /dev/null @@ -1,12 +0,0 @@ -import freesewing from '@freesewing/core' -let expect = require('chai').expect -let plugin = require('../dist/index.js') -let bundle = ['cutonfold', 'dimension', 'grainline', 'logo', 'title', 'scalebox'] - -it('Should set the plugins name:version attribute', () => { - let pattern = new freesewing.Pattern() - pattern.use(plugin).render() - for (let plug of bundle) { - expect(typeof pattern.svg.attributes.get('freesewing:plugin-' + plug)).to.equal('string') - } -}) diff --git a/packages/plugin-bundle/tests/cutonfold.test.js b/packages/plugin-bundle/tests/cutonfold.test.js deleted file mode 100644 index feff8787697..00000000000 --- a/packages/plugin-bundle/tests/cutonfold.test.js +++ /dev/null @@ -1,59 +0,0 @@ -import freesewing from '@freesewing/core' -import { version } from '../../plugin-cutonfold/package.json' - -const round = freesewing.utils.round -const expect = require('chai').expect -const plugin = require('../dist/index.js') - -describe('plugin-cutonfold', function () { - it('Should set the plugin name:version attribute', () => { - const pattern = new freesewing.Pattern().use(plugin) - pattern.render() - expect(pattern.svg.attributes.get('freesewing:plugin-cutonfold')).to.equal(version) - }) - - it('Should run the default cutonfold macro', () => { - const pattern = new freesewing.Pattern().use(plugin) - pattern.parts.test = new pattern.Part() - pattern.parts.test.points.from = new pattern.Point(10, 20) - pattern.parts.test.points.to = new pattern.Point(10, 220) - const { macro } = pattern.parts.test.shorthand() - macro('cutonfold', { - from: pattern.parts.test.points.from, - to: pattern.parts.test.points.to, - }) - const c = pattern.parts.test.paths.cutonfold - expect(c.attributes.get('class')).to.equal('note') - expect(c.attributes.get('marker-start')).to.equal('url(#cutonfoldFrom)') - expect(c.attributes.get('marker-end')).to.equal('url(#cutonfoldTo)') - expect(c.attributes.get('data-text')).to.equal('cutOnFold') - expect(c.attributes.get('data-text-class')).to.equal('center fill-note') - expect(c.ops[0].type).to.equal('move') - expect(c.ops[1].type).to.equal('line') - expect(c.ops[2].type).to.equal('line') - expect(c.ops[3].type).to.equal('line') - expect(round(c.ops[0].to.x)).to.equal(10) - expect(round(c.ops[0].to.y)).to.equal(30) - expect(round(c.ops[1].to.x)).to.equal(25) - expect(round(c.ops[1].to.y)).to.equal(30) - expect(round(c.ops[2].to.x)).to.equal(25) - expect(round(c.ops[2].to.y)).to.equal(210) - expect(round(c.ops[3].to.x)).to.equal(10) - expect(round(c.ops[3].to.y)).to.equal(210) - }) - - it('Should run the cutonfold/grainline macro', () => { - const pattern = new freesewing.Pattern().use(plugin) - pattern.parts.test = new pattern.Part() - pattern.parts.test.points.from = new pattern.Point(10, 20) - pattern.parts.test.points.to = new pattern.Point(10, 230) - const { macro } = pattern.parts.test.shorthand() - macro('cutonfold', { - from: pattern.parts.test.points.from, - to: pattern.parts.test.points.to, - grainline: true, - }) - const c = pattern.parts.test.paths.cutonfold - expect(c.attributes.get('data-text')).to.equal('cutOnFoldAndGrainline') - }) -}) diff --git a/packages/plugin-bundle/tests/dimension.test.js b/packages/plugin-bundle/tests/dimension.test.js deleted file mode 100644 index 375d28b22ab..00000000000 --- a/packages/plugin-bundle/tests/dimension.test.js +++ /dev/null @@ -1,222 +0,0 @@ -import freesewing from '@freesewing/core' -import { version } from '../package.json' -let expect = require('chai').expect -let plugin = require('../dist/index.js') -let round = freesewing.utils.round - -describe('The dimension plugin', function () { - it('Should set the plugin name:version attribute', () => { - let pattern = new freesewing.Pattern().use(plugin) - pattern.render() - expect(pattern.svg.attributes.get('freesewing:plugin-dimension')).to.equal(version) - }) - - describe('Measures horizontal dimensions', function () { - let pattern = new freesewing.Pattern() - pattern.draft = function () {} - pattern.use(plugin) - pattern.parts.test = new pattern.Part() - pattern.parts.test.points.from = new pattern.Point(10, 20) - pattern.parts.test.points.to = new pattern.Point(200, 20) - let { macro } = pattern.parts.test.shorthand() - macro('hd', { - from: pattern.parts.test.points.from, - to: pattern.parts.test.points.to, - y: 35, - }) - - it('should draw a line and add text to indicate its length', () => { - let c = pattern.parts.test.paths['__paperless1'] - expect(c.attributes.get('class')).to.equal('mark') - expect(c.attributes.get('marker-start')).to.equal('url(#dimensionFrom)') - expect(c.attributes.get('marker-end')).to.equal('url(#dimensionTo)') - expect(c.attributes.get('data-text')).to.equal('19cm') - expect(c.attributes.get('data-text-class')).to.equal('fill-mark center') - expect(c.ops[0].type).to.equal('move') - expect(c.ops[1].type).to.equal('line') - expect(c.ops[0].to.x).to.equal(10) - expect(c.ops[0].to.y).to.equal(35) - expect(c.ops[1].to.x).to.equal(200) - expect(c.ops[1].to.y).to.equal(35) - }) - - it('should draw the start marker', () => { - let c = pattern.parts.test.paths['__paperless1_ls'] - expect(c.attributes.get('class')).to.equal('mark dotted') - expect(c.ops[0].type).to.equal('move') - expect(c.ops[1].type).to.equal('line') - expect(c.ops[0].to.x).to.equal(10) - expect(c.ops[0].to.y).to.equal(20) - expect(c.ops[1].to.x).to.equal(10) - expect(c.ops[1].to.y).to.equal(35) - }) - - it('should draw the end marker', () => { - let c = pattern.parts.test.paths['__paperless1_le'] - expect(c.attributes.get('class')).to.equal('mark dotted') - expect(c.ops[0].type).to.equal('move') - expect(c.ops[1].type).to.equal('line') - expect(c.ops[0].to.x).to.equal(200) - expect(c.ops[0].to.y).to.equal(20) - expect(c.ops[1].to.x).to.equal(200) - expect(c.ops[1].to.y).to.equal(35) - }) - }) - - describe('Measures vertical dimensions', () => { - let pattern = new freesewing.Pattern() - pattern.draft = function () {} - pattern.use(plugin) - pattern.parts.test = new pattern.Part() - pattern.parts.test.points.from = new pattern.Point(10, 20) - pattern.parts.test.points.to = new pattern.Point(10, 200) - let { macro } = pattern.parts.test.shorthand() - macro('vd', { - from: pattern.parts.test.points.from, - to: pattern.parts.test.points.to, - x: 25, - }) - - it('Should draw a line and add text to indicate its length', () => { - let c = pattern.parts.test.paths['__paperless1'] - expect(c.attributes.get('class')).to.equal('mark') - expect(c.attributes.get('marker-start')).to.equal('url(#dimensionFrom)') - expect(c.attributes.get('marker-end')).to.equal('url(#dimensionTo)') - expect(c.attributes.get('data-text')).to.equal('18cm') - expect(c.attributes.get('data-text-class')).to.equal('fill-mark center') - expect(c.ops[0].type).to.equal('move') - expect(c.ops[1].type).to.equal('line') - expect(c.ops[0].to.x).to.equal(25) - expect(c.ops[0].to.y).to.equal(20) - expect(c.ops[1].to.x).to.equal(25) - expect(c.ops[1].to.y).to.equal(200) - }) - - it('Should draw the start marker', () => { - let c = pattern.parts.test.paths['__paperless1_ls'] - expect(c.attributes.get('class')).to.equal('mark dotted') - expect(c.ops[0].type).to.equal('move') - expect(c.ops[1].type).to.equal('line') - expect(c.ops[0].to.x).to.equal(10) - expect(c.ops[0].to.y).to.equal(20) - expect(c.ops[1].to.x).to.equal(25) - expect(c.ops[1].to.y).to.equal(20) - }) - - it('Should draw the end marker', () => { - let c = pattern.parts.test.paths['__paperless1_le'] - expect(c.attributes.get('class')).to.equal('mark dotted') - expect(c.ops[0].type).to.equal('move') - expect(c.ops[1].type).to.equal('line') - expect(c.ops[0].to.x).to.equal(10) - expect(c.ops[0].to.y).to.equal(200) - expect(c.ops[1].to.x).to.equal(25) - expect(c.ops[1].to.y).to.equal(200) - }) - }) - - describe('Measures the length of straight lines', () => { - let pattern = new freesewing.Pattern() - pattern.draft = function () {} - pattern.use(plugin) - pattern.parts.test = new pattern.Part() - pattern.parts.test.points.from = new pattern.Point(10, 10) - pattern.parts.test.points.to = new pattern.Point(100, 100) - let { macro } = pattern.parts.test.shorthand() - macro('ld', { - from: pattern.parts.test.points.from, - to: pattern.parts.test.points.to, - d: 15, - }) - - it('Should draw a line and add text to indicate its length', () => { - let c = pattern.parts.test.paths['__paperless1'] - expect(c.attributes.get('class')).to.equal('mark') - expect(c.attributes.get('marker-start')).to.equal('url(#dimensionFrom)') - expect(c.attributes.get('marker-end')).to.equal('url(#dimensionTo)') - expect(c.attributes.get('data-text')).to.equal('12.73cm') - expect(c.attributes.get('data-text-class')).to.equal('fill-mark center') - expect(c.ops[0].type).to.equal('move') - expect(c.ops[1].type).to.equal('line') - expect(round(c.ops[0].to.x)).to.equal(20.61) - expect(round(c.ops[0].to.y)).to.equal(-0.61) - expect(round(c.ops[1].to.x)).to.equal(110.61) - expect(round(c.ops[1].to.y)).to.equal(89.39) - }) - - it('Should draw the start marker', () => { - let c = pattern.parts.test.paths['__paperless1_ls'] - expect(c.attributes.get('class')).to.equal('mark dotted') - expect(c.ops[0].type).to.equal('move') - expect(c.ops[1].type).to.equal('line') - expect(round(c.ops[0].to.x)).to.equal(10) - expect(round(c.ops[0].to.y)).to.equal(10) - expect(round(c.ops[1].to.x)).to.equal(20.61) - expect(round(c.ops[1].to.y)).to.equal(-0.61) - }) - - it('Should draw the end marker', () => { - let c = pattern.parts.test.paths['__paperless1_le'] - expect(c.attributes.get('class')).to.equal('mark dotted') - expect(c.ops[0].type).to.equal('move') - expect(c.ops[1].type).to.equal('line') - expect(round(c.ops[0].to.x)).to.equal(100) - expect(round(c.ops[0].to.y)).to.equal(100) - expect(round(c.ops[1].to.x)).to.equal(110.61) - expect(round(c.ops[1].to.y)).to.equal(89.39) - }) - }) - - describe('Measures curved lines', () => { - let pattern = new freesewing.Pattern() - pattern.draft = function () {} - pattern.use(plugin) - pattern.parts.test = new pattern.Part() - let from = new pattern.Point(10, 10) - let cp1 = new pattern.Point(100, 10) - let cp2 = new pattern.Point(10, 100) - let to = new pattern.Point(100, 100) - let { macro } = pattern.parts.test.shorthand() - macro('pd', { - path: new pattern.Path().move(from).curve(cp1, cp2, to), - d: 15, - }) - - it('Should draw a line and add text to indicate the length', () => { - let c = pattern.parts.test.paths['__paperless1'] - expect(c.attributes.get('class')).to.equal('mark') - expect(c.attributes.get('marker-start')).to.equal('url(#dimensionFrom)') - expect(c.attributes.get('marker-end')).to.equal('url(#dimensionTo)') - expect(c.attributes.get('data-text')).to.equal('15.09cm') - expect(c.attributes.get('data-text-class')).to.equal('fill-mark center') - expect(c.ops[0].type).to.equal('move') - expect(c.ops[1].type).to.equal('curve') - expect(round(c.ops[0].to.x)).to.equal(10) - expect(round(c.ops[0].to.y)).to.equal(25) - expect(round(c.ops[1].to.x)).to.equal(37.15) - expect(round(c.ops[1].to.y)).to.equal(32.79) - }) - - it('Should draw the start marker', () => { - let c = pattern.parts.test.paths['__paperless1_ls'] - expect(c.attributes.get('class')).to.equal('mark dotted') - expect(c.ops[0].type).to.equal('move') - expect(c.ops[1].type).to.equal('line') - expect(c.ops[0].to.x).to.equal(10) - expect(c.ops[0].to.y).to.equal(10) - expect(c.ops[1].to.x).to.equal(10) - expect(c.ops[1].to.y).to.equal(25) - }) - - it('Should draw the end marker', () => { - let c = pattern.parts.test.paths['__paperless1_le'] - expect(c.attributes.get('class')).to.equal('mark dotted') - expect(c.ops[0].type).to.equal('move') - expect(c.ops[1].type).to.equal('line') - expect(c.ops[0].to.x).to.equal(100) - expect(c.ops[0].to.y).to.equal(100) - expect(c.ops[1].to.x).to.equal(100) - expect(c.ops[1].to.y).to.equal(115) - }) - }) -}) diff --git a/packages/plugin-bundle/tests/grainline.test.js b/packages/plugin-bundle/tests/grainline.test.js deleted file mode 100644 index d001e5d6038..00000000000 --- a/packages/plugin-bundle/tests/grainline.test.js +++ /dev/null @@ -1,39 +0,0 @@ -import freesewing from '@freesewing/core' -import { version } from '../../plugin-grainline/package.json' -let round = freesewing.utils.round -let expect = require('chai').expect -let plugin = require('../dist/index.js') - -describe('plugin-grainline', function () { - it('Should set the plugin name:version attribute', () => { - let pattern = new freesewing.Pattern().use(plugin) - pattern.render() - expect(pattern.svg.attributes.get('freesewing:plugin-grainline')).to.equal(version) - }) - - it('Should run the default grainline macro', () => { - let pattern = new freesewing.Pattern() - pattern.draft = function () {} - pattern.use(plugin) - pattern.parts.test = new pattern.Part() - pattern.parts.test.points.from = new pattern.Point(10, 20) - pattern.parts.test.points.to = new pattern.Point(10, 230) - let { macro } = pattern.parts.test.shorthand() - macro('grainline', { - from: pattern.parts.test.points.from, - to: pattern.parts.test.points.to, - }) - let c = pattern.parts.test.paths.grainline - expect(c.attributes.get('class')).to.equal('note') - expect(c.attributes.get('marker-start')).to.equal('url(#grainlineFrom)') - expect(c.attributes.get('marker-end')).to.equal('url(#grainlineTo)') - expect(c.attributes.get('data-text')).to.equal('grainline') - expect(c.attributes.get('data-text-class')).to.equal('center fill-note') - expect(c.ops[0].type).to.equal('move') - expect(c.ops[1].type).to.equal('line') - expect(round(c.ops[0].to.x)).to.equal(10) - expect(c.ops[0].to.y).to.equal(30.5) - expect(round(c.ops[1].to.x)).to.equal(10) - expect(c.ops[1].to.y).to.equal(219.5) - }) -}) diff --git a/packages/plugin-bundle/tests/plugin.test.mjs b/packages/plugin-bundle/tests/plugin.test.mjs new file mode 100644 index 00000000000..0ef1e70c86d --- /dev/null +++ b/packages/plugin-bundle/tests/plugin.test.mjs @@ -0,0 +1,16 @@ +import chai from 'chai' +import freesewing from '@freesewing/core' +import plugin from '../dist/index.mjs' + +const expect = chai.expect +const bundle = ['cutonfold', 'dimension', 'grainline', 'logo', 'title', 'scalebox'] + +describe('Bundle Plugin Tests', () => { + it('Should set the plugins name:version attribute', () => { + const pattern = new freesewing.Pattern().use(plugin) + pattern.draft().render() + for (const plug of bundle) { + expect(typeof pattern.svg.attributes.get('freesewing:plugin-' + plug)).to.equal('string') + } + }) +}) diff --git a/packages/plugin-bundle/tests/round.test.js b/packages/plugin-bundle/tests/round.test.js deleted file mode 100644 index 421c7e2e813..00000000000 --- a/packages/plugin-bundle/tests/round.test.js +++ /dev/null @@ -1,12 +0,0 @@ -import freesewing from '@freesewing/core' -import { version } from '../../plugin-round/package.json' -let expect = require('chai').expect -let plugin = require('../dist/index.js') - -describe('plugin-round', function () { - it('Should set the plugin name:version attribute', () => { - let pattern = new freesewing.Pattern().use(plugin) - pattern.render() - expect(pattern.svg.attributes.get('freesewing:plugin-round')).to.equal(version) - }) -}) diff --git a/packages/plugin-bundle/tests/scalebox.test.js b/packages/plugin-bundle/tests/scalebox.test.js deleted file mode 100644 index 307898538e7..00000000000 --- a/packages/plugin-bundle/tests/scalebox.test.js +++ /dev/null @@ -1,198 +0,0 @@ -import freesewing from '@freesewing/core' -import { version } from '../../plugin-scalebox/package.json' - -const round = freesewing.utils.round -const expect = require('chai').expect -const plugin = require('../dist/index.js') - -describe('plugin-scalebox', function () { - it('Should set the plugin name:version attribute', () => { - const pattern = new freesewing.Pattern().use(plugin) - pattern.render() - expect(pattern.svg.attributes.get('freesewing:plugin-scalebox')).to.equal(version) - }) - - it('Should run the default scalebox macro', () => { - const pattern = new freesewing.Pattern().use(plugin) - pattern.parts.test = new pattern.Part() - pattern.parts.test.points.anchor = new pattern.Point(100, 200) - const { macro } = pattern.parts.test.shorthand() - macro('scalebox', { - at: pattern.parts.test.points.anchor, - }) - let p = pattern.parts.test.points - /* - * { - anchor: Point { x: 100, y: 200, attributes: Attributes { list: {} } }, - __scaleboxMetricTopLeft: Point { x: 50, y: 175, attributes: Attributes { list: {} } }, - __scaleboxMetricTopRight: Point { x: 150, y: 175, attributes: Attributes { list: {} } }, - __scaleboxMetricBottomLeft: Point { x: 50, y: 225, attributes: Attributes { list: {} } }, - __scaleboxMetricBottomRight: Point { x: 150, y: 225, attributes: Attributes { list: {} } }, - __scaleboxImperialTopLeft: Point { x: 49.2, y: 174.6, attributes: Attributes { list: {} } }, - __scaleboxImperialTopRight: Point { x: 150.8, y: 174.6, attributes: Attributes { list: {} } }, - __scaleboxImperialBottomLeft: Point { x: 49.2, y: 225.4, attributes: Attributes { list: {} } }, - __scaleboxImperialBottomRight: Point { x: 150.8, y: 225.4, attributes: Attributes { list: {} } }, - __scaleboxLead: Point { x: 55, y: 185, attributes: Attributes { list: [Object] } }, - __scaleboxTitle: Point { x: 55, y: 195, attributes: Attributes { list: [Object] } }, - __scaleboxText: Point { x: 55, y: 207, attributes: Attributes { list: [Object] } }, - __scaleboxLink: Point { x: 55, y: 212, attributes: Attributes { list: [Object] } }, - __scaleboxMetric: Point { x: 100, y: 220, attributes: Attributes { list: [Object] } }, - __scaleboxImperial: Point { x: 100, y: 224, attributes: Attributes { list: [Object] } } -} - - */ - expect(round(p.__scaleboxMetricTopLeft.x)).to.equal(50) - expect(round(p.__scaleboxMetricTopLeft.y)).to.equal(175) - expect(round(p.__scaleboxMetricTopRight.x)).to.equal(150) - expect(round(p.__scaleboxMetricTopRight.y)).to.equal(175) - expect(round(p.__scaleboxMetricBottomLeft.x)).to.equal(50) - expect(round(p.__scaleboxMetricBottomLeft.y)).to.equal(225) - expect(round(p.__scaleboxMetricBottomRight.x)).to.equal(150) - expect(round(p.__scaleboxMetricBottomRight.y)).to.equal(225) - expect(round(p.__scaleboxImperialTopLeft.x)).to.equal(49.2) - expect(round(p.__scaleboxImperialTopLeft.y)).to.equal(174.6) - expect(round(p.__scaleboxImperialTopRight.x)).to.equal(150.8) - expect(round(p.__scaleboxImperialTopRight.y)).to.equal(174.6) - expect(round(p.__scaleboxImperialBottomLeft.x)).to.equal(49.2) - expect(round(p.__scaleboxImperialBottomLeft.y)).to.equal(225.4) - expect(round(p.__scaleboxImperialBottomRight.x)).to.equal(150.8) - expect(round(p.__scaleboxImperialBottomRight.y)).to.equal(225.4) - expect(round(p.__scaleboxLead.x)).to.equal(55) - expect(round(p.__scaleboxLead.y)).to.equal(185) - expect(round(p.__scaleboxTitle.x)).to.equal(55) - expect(round(p.__scaleboxTitle.y)).to.equal(195) - expect(round(p.__scaleboxText.x)).to.equal(55) - expect(round(p.__scaleboxText.y)).to.equal(207) - expect(round(p.__scaleboxLink.x)).to.equal(55) - expect(round(p.__scaleboxLink.y)).to.equal(212) - expect(round(p.__scaleboxMetric.x)).to.equal(100) - expect(round(p.__scaleboxMetric.y)).to.equal(220) - expect(round(p.__scaleboxImperial.x)).to.equal(100) - expect(round(p.__scaleboxImperial.y)).to.equal(224) - p = pattern.parts.test.paths.__scaleboxMetric - expect(p.attributes.get('class')).to.equal('scalebox metric') - expect(p.ops[0].type).to.equal('move') - expect(p.ops[1].type).to.equal('line') - expect(p.ops[2].type).to.equal('line') - expect(p.ops[3].type).to.equal('line') - expect(p.ops[4].type).to.equal('close') - expect(round(p.ops[0].to.x)).to.equal(50) - expect(round(p.ops[0].to.y)).to.equal(175) - expect(round(p.ops[1].to.x)).to.equal(50) - expect(round(p.ops[1].to.y)).to.equal(225) - expect(round(p.ops[2].to.x)).to.equal(150) - expect(round(p.ops[2].to.y)).to.equal(225) - expect(round(p.ops[3].to.x)).to.equal(150) - expect(round(p.ops[3].to.y)).to.equal(175) - p = pattern.parts.test.paths.__scaleboxImperial - expect(p.attributes.get('class')).to.equal('scalebox imperial') - expect(p.ops[0].type).to.equal('move') - expect(p.ops[1].type).to.equal('line') - expect(p.ops[2].type).to.equal('line') - expect(p.ops[3].type).to.equal('line') - expect(p.ops[4].type).to.equal('close') - expect(round(p.ops[0].to.x)).to.equal(49.2) - expect(round(p.ops[0].to.y)).to.equal(174.6) - expect(round(p.ops[1].to.x)).to.equal(49.2) - expect(round(p.ops[1].to.y)).to.equal(225.4) - expect(round(p.ops[2].to.x)).to.equal(150.8) - expect(round(p.ops[2].to.y)).to.equal(225.4) - expect(round(p.ops[3].to.x)).to.equal(150.8) - expect(round(p.ops[3].to.y)).to.equal(174.6) - }) - - it('Should run the scalebox macro with rotation', () => { - let pattern = new freesewing.Pattern() - pattern.draft = function () {} - pattern.use(plugin) - pattern.parts.test = new pattern.Part() - pattern.parts.test.points.anchor = new pattern.Point(100, 200) - let { macro } = pattern.parts.test.shorthand() - macro('scalebox', { - at: pattern.parts.test.points.anchor, - rotate: 90, - }) - let p = pattern.parts.test.points - expect(round(p.__scaleboxMetricTopLeft.x)).to.equal(75) - expect(round(p.__scaleboxMetricTopLeft.y)).to.equal(250) - expect(round(p.__scaleboxMetricTopRight.x)).to.equal(75) - expect(round(p.__scaleboxMetricTopRight.y)).to.equal(150) - expect(round(p.__scaleboxMetricBottomLeft.x)).to.equal(125) - expect(round(p.__scaleboxMetricBottomLeft.y)).to.equal(250) - expect(round(p.__scaleboxMetricBottomRight.x)).to.equal(125) - expect(round(p.__scaleboxMetricBottomRight.y)).to.equal(150) - expect(round(p.__scaleboxImperialTopLeft.x)).to.equal(74.6) - expect(round(p.__scaleboxImperialTopLeft.y)).to.equal(250.8) - expect(round(p.__scaleboxImperialTopRight.x)).to.equal(74.6) - expect(round(p.__scaleboxImperialTopRight.y)).to.equal(149.2) - expect(round(p.__scaleboxImperialBottomLeft.x)).to.equal(125.4) - expect(round(p.__scaleboxImperialBottomLeft.y)).to.equal(250.8) - expect(round(p.__scaleboxImperialBottomRight.x)).to.equal(125.4) - expect(round(p.__scaleboxImperialBottomRight.y)).to.equal(149.2) - expect(round(p.__scaleboxLead.x)).to.equal(85) - expect(round(p.__scaleboxLead.y)).to.equal(245) - expect(round(p.__scaleboxTitle.x)).to.equal(95) - expect(round(p.__scaleboxTitle.y)).to.equal(245) - expect(round(p.__scaleboxText.x)).to.equal(107) - expect(round(p.__scaleboxText.y)).to.equal(245) - expect(round(p.__scaleboxLink.x)).to.equal(112) - expect(round(p.__scaleboxLink.y)).to.equal(245) - expect(round(p.__scaleboxMetric.x)).to.equal(120) - expect(round(p.__scaleboxMetric.y)).to.equal(200) - expect(round(p.__scaleboxImperial.x)).to.equal(124) - expect(round(p.__scaleboxImperial.y)).to.equal(200) - }) - - it('Should run the scalebox macro with default text', () => { - let pattern = new freesewing.Pattern({ - name: 'unitTest', - version: 99, - }) - pattern.draft = function () {} - pattern.use(plugin) - pattern.parts.test = new pattern.Part() - pattern.parts.test.points.anchor = new pattern.Point(100, 200) - let { macro } = pattern.parts.test.shorthand() - macro('scalebox', { - at: pattern.parts.test.points.anchor, - }) - let p = pattern.parts.test.points.__scaleboxLead.attributes - expect(p.get('data-text')).to.equal('FreeSewing') - expect(p.get('data-text-class')).to.equal('text-sm') - p = pattern.parts.test.points.__scaleboxTitle.attributes - expect(p.get('data-text')).to.equal('unitTest v99') - expect(p.get('data-text-class')).to.equal('text-lg') - p = pattern.parts.test.points.__scaleboxText.attributes - expect(p.get('data-text-class')).to.equal('text-xs') - expect(p.get('data-text-lineheight')).to.equal('4') - expect(p.list['data-text'][0]).to.equal('supportFreesewingBecomeAPatron') - }) - - it('Should run the scalebox macro with custom text', () => { - let pattern = new freesewing.Pattern({ - name: 'unitTest', - version: 99, - }) - pattern.draft = function () {} - pattern.use(plugin) - pattern.parts.test = new pattern.Part() - pattern.parts.test.points.anchor = new pattern.Point(100, 200) - let { macro } = pattern.parts.test.shorthand() - macro('scalebox', { - at: pattern.parts.test.points.anchor, - lead: 'theLead', - title: 'theTitle', - text: 'theText', - }) - let p = pattern.parts.test.points.__scaleboxLead.attributes - expect(p.get('data-text')).to.equal('theLead') - expect(p.get('data-text-class')).to.equal('text-sm') - p = pattern.parts.test.points.__scaleboxTitle.attributes - expect(p.get('data-text')).to.equal('theTitle') - expect(p.get('data-text-class')).to.equal('text-lg') - p = pattern.parts.test.points.__scaleboxText.attributes - expect(p.get('data-text')).to.equal('theText') - expect(p.get('data-text-class')).to.equal('text-xs') - expect(p.get('data-text-lineheight')).to.equal('4') - }) -}) diff --git a/packages/plugin-bundle/tests/shared.test.mjs b/packages/plugin-bundle/tests/shared.test.mjs new file mode 100644 index 00000000000..42cd98f4655 --- /dev/null +++ b/packages/plugin-bundle/tests/shared.test.mjs @@ -0,0 +1,10 @@ +// This file is auto-generated. +// Changes you make will be overwritten. +import freesewing from '@freesewing/core' +import chai from 'chai' +import plugin from '../dist/index.mjs' +import { sharedPluginTests } from '../../../tests/plugins/shared.mjs' + + +// Run shared tests +sharedPluginTests(plugin, freesewing, chai.expect) diff --git a/packages/plugin-bundle/tests/sprinkle.test.js b/packages/plugin-bundle/tests/sprinkle.test.js deleted file mode 100644 index d10f45cf2ea..00000000000 --- a/packages/plugin-bundle/tests/sprinkle.test.js +++ /dev/null @@ -1,12 +0,0 @@ -import freesewing from '@freesewing/core' -import { version } from '../../plugin-sprinkle/package.json' -let expect = require('chai').expect -let plugin = require('../dist/index.js') - -describe('plugin-sprinkle', function () { - it('Should set the plugin name:version attribute', () => { - let pattern = new freesewing.Pattern().use(plugin) - pattern.render() - expect(pattern.svg.attributes.get('freesewing:plugin-sprinkle')).to.equal(version) - }) -}) diff --git a/packages/plugin-bundle/tests/title.test.js b/packages/plugin-bundle/tests/title.test.js deleted file mode 100644 index df70ef47ccf..00000000000 --- a/packages/plugin-bundle/tests/title.test.js +++ /dev/null @@ -1,101 +0,0 @@ -import freesewing from '@freesewing/core' -import { version } from '../../plugin-title/package.json' -let expect = require('chai').expect -let plugin = require('../dist/index.js') - -describe('plugin-title', function () { - it('Should set the plugin name:version attribute', () => { - let pattern = new freesewing.Pattern() - pattern.use(plugin) - pattern.render() - expect(pattern.svg.attributes.get('freesewing:plugin-title')).to.equal(version) - }) - - it('Should run the title macro', () => { - let pattern = new freesewing.Pattern({ name: 'testPattern', version: 99 }) - pattern.draft = function () {} - pattern.use(plugin) - pattern.parts.test = new pattern.Part() - pattern.parts.test.points.anchor = new pattern.Point(-12, -34) - let { macro } = pattern.parts.test.shorthand() - macro('title', { - at: pattern.parts.test.points.anchor, - nr: 3, - title: 'unitTest', - }) - pattern.render() - let p = pattern.parts.test.points.__titleNr - expect(p.x).to.equal(-12) - expect(p.y).to.equal(-34) - expect(p.attributes.get('data-text')).to.equal('3') - expect(p.attributes.get('data-text-class')).to.equal('title-nr note fill-note') - expect(p.attributes.get('data-text-x')).to.equal('-12') - expect(p.attributes.get('data-text-y')).to.equal('-34') - p = pattern.parts.test.points.__titleName - expect(p.attributes.get('data-text')).to.equal('unitTest') - expect(p.attributes.get('data-text-class')).to.equal('title-name') - expect(p.attributes.get('data-text-x')).to.equal('-12') - expect(p.attributes.get('data-text-y')).to.equal('-21') - p = pattern.parts.test.points.__titlePattern - expect(p.attributes.get('data-text')).to.equal('testPattern v99') - expect(p.attributes.get('data-text-class')).to.equal('title-pattern fill-note') - expect(p.attributes.get('data-text-x')).to.equal('-12') - expect(p.attributes.get('data-text-y')).to.equal('-14') - }) - - it('Should run the title macro with append flag', () => { - let pattern = new freesewing.Pattern({ name: 'testPattern', version: 99 }) - pattern.use(plugin) - pattern.draft = function () {} - pattern.parts.test = new pattern.Part() - pattern.parts.test.points.anchor = new pattern.Point(-12, -34).attr('data-text', '#') - let { macro } = pattern.parts.test.shorthand() - macro('title', { - at: pattern.parts.test.points.anchor, - nr: 3, - title: 'unitTest', - append: true, - }) - pattern.render() - let p = pattern.parts.test.points.__titleNr - expect(p.x).to.equal(-12) - expect(p.y).to.equal(-34) - expect(p.attributes.get('data-text')).to.equal('# 3') - expect(p.attributes.get('data-text-class')).to.equal('title-nr note fill-note') - expect(p.attributes.get('data-text-x')).to.equal('-12') - expect(p.attributes.get('data-text-y')).to.equal('-34') - }) - - it('Should run the title macro with point prefix', () => { - let pattern = new freesewing.Pattern({ name: 'testPattern', version: 99 }) - pattern.draft = function () {} - pattern.use(plugin) - pattern.parts.test = new pattern.Part() - pattern.parts.test.points.anchor = new pattern.Point(-12, -34).attr('data-text', '#') - let { macro } = pattern.parts.test.shorthand() - macro('title', { - at: pattern.parts.test.points.anchor, - nr: 3, - title: 'unitTest', - prefix: 'foo', - }) - pattern.render() - let p = pattern.parts.test.points._foo_titleNr - expect(p.x).to.equal(-12) - expect(p.y).to.equal(-34) - expect(p.attributes.get('data-text')).to.equal('3') - expect(p.attributes.get('data-text-class')).to.equal('title-nr note fill-note') - expect(p.attributes.get('data-text-x')).to.equal('-12') - expect(p.attributes.get('data-text-y')).to.equal('-34') - p = pattern.parts.test.points._foo_titleName - expect(p.attributes.get('data-text')).to.equal('unitTest') - expect(p.attributes.get('data-text-class')).to.equal('title-name') - expect(p.attributes.get('data-text-x')).to.equal('-12') - expect(p.attributes.get('data-text-y')).to.equal('-21') - p = pattern.parts.test.points._foo_titlePattern - expect(p.attributes.get('data-text')).to.equal('testPattern v99') - expect(p.attributes.get('data-text-class')).to.equal('title-pattern fill-note') - expect(p.attributes.get('data-text-x')).to.equal('-12') - expect(p.attributes.get('data-text-y')).to.equal('-14') - }) -})