73 lines
2.3 KiB
TypeScript
73 lines
2.3 KiB
TypeScript
import {afterEach, describe, expect, it, vi} from 'vitest'
|
|
import {buildMeshFromDiagramEntity} from './buildMeshFromDiagramEntity'
|
|
import {DiagramEntityType} from "../types/diagramEntity";
|
|
import {Vector3} from "@babylonjs/core";
|
|
|
|
describe('buildMeshFromDiagramEntity', () => {
|
|
afterEach(() => {
|
|
vi.restoreAllMocks();
|
|
})
|
|
it('should return null if entity is null', () => {
|
|
|
|
const scene = {
|
|
getMeshById: () => null
|
|
}
|
|
const entity = buildMeshFromDiagramEntity(null, scene as any);
|
|
expect(entity).toBe(null);
|
|
});
|
|
it('should return existing mesh if id exists in scene', () => {
|
|
const material = 'material';
|
|
const scene = {
|
|
getMeshById: (id) => {
|
|
return {
|
|
id: id,
|
|
material: material
|
|
}
|
|
}
|
|
}
|
|
const dEntity = {
|
|
type: DiagramEntityType.USER,
|
|
}
|
|
const entity = buildMeshFromDiagramEntity(dEntity, scene as any);
|
|
expect(entity.material).toBe(material);
|
|
});
|
|
it('should generate new mesh if id is missing', () => {
|
|
|
|
vi.mock('../diagramConnection', () => {
|
|
const DiagramConnection = vi.fn();
|
|
DiagramConnection.prototype.mesh =
|
|
{
|
|
id: 'id',
|
|
material: 'material',
|
|
getChildren: vi.fn(),
|
|
getScene: vi.fn()
|
|
}
|
|
return {DiagramConnection}
|
|
});
|
|
const scene = {
|
|
getMeshById: () => {
|
|
return null;
|
|
},
|
|
}
|
|
const dEntity = {
|
|
type: DiagramEntityType.USER,
|
|
template: "#connection-template",
|
|
color: "$FF00FF",
|
|
position: {x: 1, y: 2, z: 3},
|
|
rotation: {x: 4, y: 5, z: 6},
|
|
scale: {x: 7, y: 8, z: 9},
|
|
text: 'new text'
|
|
|
|
}
|
|
const entity = buildMeshFromDiagramEntity(dEntity, scene as any);
|
|
|
|
expect(entity.id).toBe('id');
|
|
expect(entity.material).toBe('material');
|
|
expect(entity.position).toEqual(new Vector3(1, 2, 3));
|
|
expect(entity.rotation).toEqual(new Vector3(4, 5, 6));
|
|
expect(entity.scaling).toEqual(new Vector3(7, 8, 9));
|
|
expect(entity.metadata.text).toEqual('new text');
|
|
});
|
|
|
|
|
|
}); |