From 3de450f0b668e2b573fdc69a8b2b5d8a168e61dc Mon Sep 17 00:00:00 2001 From: Eugene Obrezkov Date: Sat, 9 May 2020 12:22:58 +0300 Subject: [PATCH] =?UTF-8?q?refactor:=20=F0=9F=92=A1=20swap=20order=20for?= =?UTF-8?q?=20canvas=20and=20declaration=20args=20in=20Slide?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Slide constructor accepted canvas argument at first place and then slide declaration. But, custom canvas is passed rarely, more often slide declaration is passed. So makes sense to swap them and make a slide declaration at first place in arguments and only then canvas. BREAKING CHANGE: 🧨 Slide constructor() has changed its signature from (canvas, declaration) to (declaration, canvas) --- packages/kittik-slide/spec/Slide.spec.ts | 40 ++++++++++++------------ packages/kittik-slide/src/slide/Slide.ts | 8 ++--- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/packages/kittik-slide/spec/Slide.spec.ts b/packages/kittik-slide/spec/Slide.spec.ts index 0cc81b2..71b9aa2 100644 --- a/packages/kittik-slide/spec/Slide.spec.ts +++ b/packages/kittik-slide/spec/Slide.spec.ts @@ -84,7 +84,6 @@ describe('slide', () => { const canvas = new Canvas(); expect(() => new Slide( - canvas, { name: 'Test', @@ -94,7 +93,8 @@ describe('slide', () => { // @ts-expect-error shapes: [{ name: 'Test', type: 'unknown' as const }], order: [{ shape: 'Test' }] - } + }, + canvas )).toThrow( 'You have specified a shape with the name "Test" in slide "Test". ' + 'This shape has an unknown type "unknown". ' + @@ -108,7 +108,6 @@ describe('slide', () => { const canvas = new Canvas(); expect(() => new Slide( - canvas, { name: 'Test', shapes: [{ name: 'Test', type: 'Text' as const, options: {} }], @@ -119,7 +118,8 @@ describe('slide', () => { // @ts-expect-error animations: [{ name: 'Test', type: 'unknown' as const }], order: [{ shape: 'Test' }] - } + }, + canvas )).toThrow( 'You have specified an animation with the name "Test" in slide "Test". ' + 'This animation has an unknown type "unknown". ' + @@ -131,11 +131,11 @@ describe('slide', () => { expect.hasAssertions(); const canvas = new Canvas(); - const slide = new Slide(canvas, { + const slide = new Slide({ name: 'Test', shapes: [], order: [{ shape: 'Not Exists' }] - }); + }, canvas); await expect(slide.render()).rejects.toThrow( 'You specified shape "Not Exists" in slide "Test" as part of ordering, ' + @@ -148,7 +148,7 @@ describe('slide', () => { expect.hasAssertions(); const canvas = new Canvas(); - const slide = Slide.create(canvas, SLIDE_DECLARATION); + const slide = Slide.create(SLIDE_DECLARATION, canvas); const writeSpy = jest.spyOn(canvas, 'write').mockReturnThis(); const eraseScreenSpy = jest.spyOn(canvas, 'eraseScreen').mockReturnThis(); const flushSpy = jest.spyOn(canvas, 'flush').mockReturnThis(); @@ -164,11 +164,11 @@ describe('slide', () => { expect.hasAssertions(); const canvas = new Canvas(); - const slide = Slide.create(canvas, { + const slide = Slide.create({ name: 'Test', shapes: [{ name: 'Test', type: 'Text' as const, options: {} }], order: [{ shape: 'Test' }] - }); + }, canvas); expect(await slide.render()).toBeUndefined(); }); @@ -177,11 +177,11 @@ describe('slide', () => { expect.hasAssertions(); const canvas = new Canvas(); - const slide = Slide.create(canvas, { + const slide = Slide.create({ name: 'Test', shapes: [{ name: 'Test', type: 'Text' as const, options: {} }], order: [{ shape: 'Test', animations: ['Not Exists'] }] - }); + }, canvas); expect(await slide.render()).toBeUndefined(); }); @@ -190,7 +190,7 @@ describe('slide', () => { expect.hasAssertions(); const canvas = new Canvas(); - const slide = Slide.create(canvas, SLIDE_DECLARATION); + const slide = Slide.create(SLIDE_DECLARATION, canvas); expect(slide.toObject()).toStrictEqual(SERIALIZED_SLIDE_DECLARATION); }); @@ -199,7 +199,7 @@ describe('slide', () => { expect.hasAssertions(); const canvas = new Canvas(); - const slide = Slide.create(canvas, SLIDE_DECLARATION); + const slide = Slide.create(SLIDE_DECLARATION, canvas); expect(JSON.parse(slide.toJSON())).toStrictEqual(SERIALIZED_SLIDE_DECLARATION); }); @@ -236,7 +236,7 @@ describe('slide', () => { expect.hasAssertions(); const canvas = new Canvas(); - const slide = new Slide(canvas, { name: 'Test', order: [], shapes: [] }); + const slide = new Slide({ name: 'Test', order: [], shapes: [] }, canvas); expect(slide.canvas).toBeInstanceOf(Canvas); expect(slide.shapes.size).toBe(0); expect(slide.animations.size).toBe(0); @@ -248,12 +248,12 @@ describe('slide', () => { const canvas = new Canvas(); const slide = new Slide( - canvas, { name: 'Test', shapes: [{ name: 'Test', type: 'Text' as const, options: {} }], order: [] - } + }, + canvas ); expect(() => slide.addShape('Test', Text.create())).toThrow( @@ -266,12 +266,12 @@ describe('slide', () => { expect.hasAssertions(); const canvas = new Canvas(); - const slide = new Slide(canvas, { + const slide = new Slide({ name: 'Test', shapes: [], order: [], animations: [{ name: 'Test', type: 'Print' as const, options: {} }] - }); + }, canvas); expect(() => slide.addAnimation('Test', Print.create({}))).toThrow( 'You are trying to add animation with the name "Test" into the slide "Test". ' + @@ -283,7 +283,7 @@ describe('slide', () => { expect.hasAssertions(); const canvas = new Canvas(); - const slide = new Slide(canvas, { name: 'Test', shapes: [], order: [{ shape: 'Test' }] }); + const slide = new Slide({ name: 'Test', shapes: [], order: [{ shape: 'Test' }] }, canvas); expect(() => slide.addOrder('Test')).toThrow( 'You already have specified an ordering for shape "Test" in slide "Test". ' + @@ -296,7 +296,7 @@ describe('slide', () => { expect.hasAssertions(); const canvas = new Canvas(); - const slide = new Slide(canvas, { name: 'Test', shapes: [], order: [{ shape: 'Test' }] }); + const slide = new Slide({ name: 'Test', shapes: [], order: [{ shape: 'Test' }] }, canvas); expect(() => slide.addOrder('Test #2', ['Not Existing'])).toThrow( 'You have provided animations for the shape "Test #2" in slide "Test". ' + diff --git a/packages/kittik-slide/src/slide/Slide.ts b/packages/kittik-slide/src/slide/Slide.ts index fecd174..2819942 100644 --- a/packages/kittik-slide/src/slide/Slide.ts +++ b/packages/kittik-slide/src/slide/Slide.ts @@ -25,7 +25,7 @@ export class Slide { public readonly animations: Map = new Map(); public readonly order: OrderDeclaration[] = []; - public constructor (canvas?: Canvas, declaration?: SlideDeclaration) { + public constructor (declaration?: SlideDeclaration, canvas?: Canvas) { if (typeof canvas !== 'undefined') { this.canvas = canvas; } @@ -47,12 +47,12 @@ export class Slide { } } - public static create (canvas?: Canvas, declaration?: SlideDeclaration): Slide { - return new this(canvas, declaration); + public static create (declaration?: SlideDeclaration, canvas?: Canvas): Slide { + return new this(declaration, canvas); } public static fromObject (obj: SlideDeclaration, canvas?: Canvas): Slide { - return this.create(canvas, obj); + return this.create(obj, canvas); } public static fromJSON (json: string, canvas?: Canvas): Slide {