import { faker } from '@faker-js/faker'; import { DataOverlayAnnotationFaker } from '@test/fakers/data-overlay-annotation.faker'; import { DataOverlayAngleFaker } from '@test/fakers/data-overlay-angle.faker'; import { DataOverlayLengthFaker } from '@test/fakers/data-overlay-length.faker'; import { DataOverlayPolygonFaker } from '@test/fakers/data-overlay-polygon.faker'; import { DataOverlayType, InteractionType } from '@3cr/types-ts'; import { DataOverlayInteractionFaker } from '@test/fakers/data-overlay-interaction.faker'; import { DataOverlayData, DataOverlayAnnotation, DataOverlayInteraction, DataOverlayDataRaw, DataOverlayLength, DataOverlayPolygon, DataOverlayAngle } from '@3cr/viewer-types-ts'; export class DataOverlayDataFaker { static annotation(): DataOverlayData { return DataOverlayDataFaker.random(DataOverlayAnnotationFaker.random(), DataOverlayType.Annotation); } static annotationEvent(type: InteractionType): DataOverlayData> { return DataOverlayDataFaker.random(DataOverlayInteractionFaker.annotation(type), DataOverlayType.Annotation); } static annotationRaw(): DataOverlayDataRaw { return DataOverlayDataFaker.randomRaw(DataOverlayAnnotationFaker.randomRaw(), DataOverlayType.Annotation); } static annotationEventRaw(type: InteractionType): DataOverlayDataRaw { return DataOverlayDataFaker.randomRaw(DataOverlayInteractionFaker.annotationRaw(type), DataOverlayType.Annotation); } static length(): DataOverlayData { return DataOverlayDataFaker.random(DataOverlayLengthFaker.random(), DataOverlayType.Length); } static lengthEvent(type: InteractionType): DataOverlayData> { return DataOverlayDataFaker.random(DataOverlayInteractionFaker.length(type), DataOverlayType.Length); } static lengthRaw(): DataOverlayDataRaw { return DataOverlayDataFaker.randomRaw(DataOverlayLengthFaker.randomRaw(), DataOverlayType.Length); } static lengthEventRaw(type: InteractionType): DataOverlayDataRaw { return DataOverlayDataFaker.randomRaw(DataOverlayInteractionFaker.lengthRaw(type), DataOverlayType.Length); } static polygon(): DataOverlayData { return DataOverlayDataFaker.random(DataOverlayPolygonFaker.random(), DataOverlayType.Polygon); } static polygonEvent(type: InteractionType): DataOverlayData> { return DataOverlayDataFaker.random(DataOverlayInteractionFaker.polygon(type), DataOverlayType.Polygon); } static polygonRaw(): DataOverlayDataRaw { return DataOverlayDataFaker.randomRaw(DataOverlayPolygonFaker.randomRaw(), DataOverlayType.Polygon); } static polygonEventRaw(type: InteractionType): DataOverlayDataRaw { return DataOverlayDataFaker.randomRaw(DataOverlayInteractionFaker.polygonRaw(type), DataOverlayType.Polygon); } static angle(): DataOverlayData { return DataOverlayDataFaker.random(DataOverlayAngleFaker.random(), DataOverlayType.Angle); } static angleEvent(type: InteractionType): DataOverlayData> { return DataOverlayDataFaker.random(DataOverlayInteractionFaker.angle(type), DataOverlayType.Angle); } static angleRaw(): DataOverlayDataRaw { return DataOverlayDataFaker.randomRaw(DataOverlayAngleFaker.randomRaw(), DataOverlayType.Angle); } static angleEventRaw(type: InteractionType): DataOverlayDataRaw { return DataOverlayDataFaker.randomRaw(DataOverlayInteractionFaker.angleRaw(type), DataOverlayType.Angle); } private static random(data: T, dataType: DataOverlayType): DataOverlayData { return { Version: faker.system.semver(), Id: faker.string.uuid(), DataType: dataType, Data: data }; } private static randomRaw(data: T, dataType: DataOverlayType): DataOverlayDataRaw { return { Version: faker.system.semver(), Id: faker.string.uuid(), DataType: dataType, Data: JSON.stringify(data) }; } }