chore: Add tests for calculateDeltaAndAngle

This commit is contained in:
Sidharth Vinod
2023-11-24 10:25:50 +05:30
parent 78e118c876
commit 55ce05fc75
5 changed files with 55 additions and 6 deletions

View File

@@ -117,6 +117,9 @@ export const getBuildConfig = ({ minify, core, watch, entryName }: BuildOptions)
output, output,
}, },
}, },
define: {
'import.meta.vitest': 'undefined',
},
resolve: { resolve: {
extensions: [], extensions: [],
}, },

View File

@@ -2,7 +2,7 @@ import mermaid from './mermaid.js';
import { mermaidAPI } from './mermaidAPI.js'; import { mermaidAPI } from './mermaidAPI.js';
import './diagram-api/diagram-orchestration.js'; import './diagram-api/diagram-orchestration.js';
import { addDiagrams } from './diagram-api/diagram-orchestration.js'; import { addDiagrams } from './diagram-api/diagram-orchestration.js';
import { beforeAll, describe, it, expect, vi } from 'vitest'; import { beforeAll, describe, it, expect, vi, afterEach } from 'vitest';
import type { DiagramDefinition } from './diagram-api/types.js'; import type { DiagramDefinition } from './diagram-api/types.js';
beforeAll(async () => { beforeAll(async () => {

View File

@@ -19,14 +19,14 @@ const markerOffsets = {
* @returns The angle, deltaX and deltaY * @returns The angle, deltaX and deltaY
*/ */
function calculateDeltaAndAngle( function calculateDeltaAndAngle(
point1: Point | [number, number], point1?: Point | [number, number],
point2: Point | [number, number] point2?: Point | [number, number]
): { angle: number; deltaX: number; deltaY: number } { ): { angle: number; deltaX: number; deltaY: number } {
point1 = pointTransformer(point1);
point2 = pointTransformer(point2);
if (point1 === undefined || point2 === undefined) { if (point1 === undefined || point2 === undefined) {
return { angle: 0, deltaX: 0, deltaY: 0 }; return { angle: 0, deltaX: 0, deltaY: 0 };
} }
point1 = pointTransformer(point1);
point2 = pointTransformer(point2);
const [x1, y1] = [point1.x, point1.y]; const [x1, y1] = [point1.x, point1.y];
const [x2, y2] = [point2.x, point2.y]; const [x2, y2] = [point2.x, point2.y];
const deltaX = x2 - x1; const deltaX = x2 - x1;
@@ -93,3 +93,44 @@ export const getLineFunctionsWithOffset = (
}, },
}; };
}; };
if (import.meta.vitest) {
const { it, expect, describe } = import.meta.vitest;
describe('calculateDeltaAndAngle', () => {
it('should calculate the angle and deltas between two points', () => {
expect(calculateDeltaAndAngle([0, 0], [0, 1])).toStrictEqual({
angle: 1.5707963267948966,
deltaX: 0,
deltaY: 1,
});
expect(calculateDeltaAndAngle([1, 0], [0, -1])).toStrictEqual({
angle: 0.7853981633974483,
deltaX: -1,
deltaY: -1,
});
expect(calculateDeltaAndAngle({ x: 1, y: 0 }, [0, -1])).toStrictEqual({
angle: 0.7853981633974483,
deltaX: -1,
deltaY: -1,
});
expect(calculateDeltaAndAngle({ x: 1, y: 0 }, { x: 1, y: 0 })).toStrictEqual({
angle: NaN,
deltaX: 0,
deltaY: 0,
});
});
it('should calculate the angle and deltas if one point in undefined', () => {
expect(calculateDeltaAndAngle(undefined, [0, 1])).toStrictEqual({
angle: 0,
deltaX: 0,
deltaY: 0,
});
expect(calculateDeltaAndAngle([0, 1], undefined)).toStrictEqual({
angle: 0,
deltaX: 0,
deltaY: 0,
});
});
});
}

View File

@@ -2,7 +2,8 @@
"extends": "../../tsconfig.json", "extends": "../../tsconfig.json",
"compilerOptions": { "compilerOptions": {
"rootDir": "./src", "rootDir": "./src",
"outDir": "./dist" "outDir": "./dist",
"types": ["vitest/importMeta"]
}, },
"include": ["./src/**/*.ts", "./package.json"] "include": ["./src/**/*.ts", "./package.json"]
} }

View File

@@ -24,6 +24,7 @@ export default defineConfig({
reportsDirectory: './coverage/vitest', reportsDirectory: './coverage/vitest',
exclude: ['**/node_modules/**', '**/tests/**', '**/__mocks__/**'], exclude: ['**/node_modules/**', '**/tests/**', '**/__mocks__/**'],
}, },
includeSource: ['packages/*/src/**/*.{js,ts}'],
}, },
build: { build: {
/** If you set esmExternals to true, this plugins assumes that /** If you set esmExternals to true, this plugins assumes that
@@ -33,4 +34,7 @@ export default defineConfig({
esmExternals: true, esmExternals: true,
}, },
}, },
define: {
'import.meta.vitest': 'undefined',
},
}); });