Spaces:
Running
Running
| import ArrowLine from '@/extension/arrowLine'; | |
| describe('ArrowLine', () => { | |
| let ctx, arrowLine, linePath; | |
| function assertPointsToMatchSnapshots() { | |
| const [firstPoint] = ctx.moveTo.mock.calls; | |
| const [secondPoint] = ctx.lineTo.mock.calls; | |
| const [, lastPoint] = ctx.lineTo.mock.calls; | |
| expect(firstPoint).toMatchSnapshot(); | |
| expect(secondPoint).toMatchSnapshot(); | |
| expect(lastPoint).toMatchSnapshot(); | |
| } | |
| beforeEach(() => { | |
| ctx = { | |
| lineWidth: 1, | |
| beginPath: jest.fn(), | |
| moveTo: jest.fn(), | |
| lineTo: jest.fn(), | |
| closePath: jest.fn(), | |
| }; | |
| arrowLine = new ArrowLine(); | |
| arrowLine.ctx = ctx; | |
| linePath = { | |
| fromX: 1, | |
| fromY: 1, | |
| toX: 10, | |
| toY: 10, | |
| }; | |
| }); | |
| it('should draw the "v" calculated according to the angle around the "tail" of the line when attaching the "chevron" type to the end point', () => { | |
| arrowLine.arrowType = { tail: 'chevron' }; | |
| arrowLine._drawDecoratorPath(linePath); | |
| assertPointsToMatchSnapshots(); | |
| }); | |
| it('should draw the "v" calculated according to the angle around the "head" of the line when attaching the "chevron" type to the start point', () => { | |
| arrowLine.arrowType = { head: 'chevron' }; | |
| arrowLine._drawDecoratorPath(linePath); | |
| assertPointsToMatchSnapshots(); | |
| }); | |
| it('should be a triangular shape that closes the path with closePath after drawing', () => { | |
| arrowLine.arrowType = { head: 'triangle' }; | |
| arrowLine._drawDecoratorPath(linePath); | |
| assertPointsToMatchSnapshots(); | |
| expect(ctx.closePath).toBeCalledTimes(1); | |
| }); | |
| }); | |