diff --git a/src/models/fixtures/projectFixture.ts b/src/models/fixtures/projectFixture.ts index 06868af6d5692a22d0e0e5d733508cf56357d781..f228879defbd3933931013a7df3df918f342e40e 100644 --- a/src/models/fixtures/projectFixture.ts +++ b/src/models/fixtures/projectFixture.ts @@ -1,9 +1,22 @@ import { ZOD_SEED } from '@/constants'; // eslint-disable-next-line import/no-extraneous-dependencies -import { createFixture } from 'zod-fixture'; +import { Fixture } from 'zod-fixture'; +import { diseaseNameGenerator } from '@/models/generators/diseaseNameGenerator'; +import { diseaseGenerator } from '@/models/generators/diseaseGenerator'; +import { organismGenerator } from '@/models/generators/organismGenerator'; +import { organismNameGenerator } from '@/models/generators/organismNameGenerator'; +import { topOverviewImageGenerator } from '@/models/generators/topOverviewImageGenerator'; import { projectSchema } from '../projectSchema'; -export const projectFixture = createFixture(projectSchema, { +const projectFixtureGenerator = new Fixture({ seed: ZOD_SEED }).extend([ + diseaseNameGenerator, + diseaseGenerator, + organismNameGenerator, + organismGenerator, + topOverviewImageGenerator, +]); + +export const projectFixture = projectFixtureGenerator.fromSchema(projectSchema, { seed: ZOD_SEED, array: { min: 1, max: 1 }, }); diff --git a/src/models/generators/diseaseGenerator.ts b/src/models/generators/diseaseGenerator.ts new file mode 100644 index 0000000000000000000000000000000000000000..1e8ae525f101fe84da27ec49f665e0481af429aa --- /dev/null +++ b/src/models/generators/diseaseGenerator.ts @@ -0,0 +1,18 @@ +// eslint-disable-next-line import/no-extraneous-dependencies +import { createFixture, Generator } from 'zod-fixture'; +import { disease } from '@/models/disease'; +import { ZOD_SEED } from '@/constants'; +import { ZodNullable } from 'zod'; + +export const diseaseGenerator = Generator({ + schema: ZodNullable, + filter: ({ context }) => { + // eslint-disable-next-line no-magic-numbers + return context.path.at(-1) === 'disease'; + }, + output: () => + createFixture(disease, { + seed: ZOD_SEED, + array: { min: 2, max: 2 }, + }), +}); diff --git a/src/models/generators/diseaseNameGenerator.ts b/src/models/generators/diseaseNameGenerator.ts new file mode 100644 index 0000000000000000000000000000000000000000..427c74b810e0b03f51711bd63c5dc25c1dbc5b3a --- /dev/null +++ b/src/models/generators/diseaseNameGenerator.ts @@ -0,0 +1,10 @@ +import { ZodNullable, ZodString } from 'zod'; +// eslint-disable-next-line import/no-extraneous-dependencies +import { Generator } from 'zod-fixture'; + +export const diseaseNameGenerator = Generator({ + schema: ZodNullable<ZodString>, + // eslint-disable-next-line no-magic-numbers + filter: ({ context }) => context.path.at(-1) === 'diseaseName', + output: ({ transform }) => transform.utils.random.string({}), +}); diff --git a/src/models/generators/organismGenerator.ts b/src/models/generators/organismGenerator.ts new file mode 100644 index 0000000000000000000000000000000000000000..ae654656ca5554f2364c9e6fb8b46bdd3a919bdc --- /dev/null +++ b/src/models/generators/organismGenerator.ts @@ -0,0 +1,16 @@ +// eslint-disable-next-line import/no-extraneous-dependencies +import { createFixture, Generator } from 'zod-fixture'; +import { ZOD_SEED } from '@/constants'; +import { ZodNullable } from 'zod'; +import { organism } from '@/models/organism'; + +export const organismGenerator = Generator({ + schema: ZodNullable, + // eslint-disable-next-line no-magic-numbers + filter: ({ context }) => context.path.at(-1) === 'organism', + output: () => + createFixture(organism, { + seed: ZOD_SEED, + array: { min: 2, max: 2 }, + }), +}); diff --git a/src/models/generators/organismNameGenerator.ts b/src/models/generators/organismNameGenerator.ts new file mode 100644 index 0000000000000000000000000000000000000000..25bd5c0fa491a874a4d08e471cfc5ae033ee35a9 --- /dev/null +++ b/src/models/generators/organismNameGenerator.ts @@ -0,0 +1,10 @@ +import { ZodNullable, ZodString } from 'zod'; +// eslint-disable-next-line import/no-extraneous-dependencies +import { Generator } from 'zod-fixture'; + +export const organismNameGenerator = Generator({ + schema: ZodNullable<ZodString>, + // eslint-disable-next-line no-magic-numbers + filter: ({ context }) => context.path.at(-1) === 'organismName', + output: ({ transform }) => transform.utils.random.string({}), +}); diff --git a/src/models/generators/topOverviewImageGenerator.ts b/src/models/generators/topOverviewImageGenerator.ts new file mode 100644 index 0000000000000000000000000000000000000000..fbdb047cac3cfa0de0a97e74e77b6a821ecbbbca --- /dev/null +++ b/src/models/generators/topOverviewImageGenerator.ts @@ -0,0 +1,16 @@ +// eslint-disable-next-line import/no-extraneous-dependencies +import { createFixture, Generator } from 'zod-fixture'; +import { ZOD_SEED } from '@/constants'; +import { ZodNullable } from 'zod'; +import { overviewImageView } from '@/models/overviewImageView'; + +export const topOverviewImageGenerator = Generator({ + schema: ZodNullable, + // eslint-disable-next-line no-magic-numbers + filter: ({ context }) => context.path.at(-1) === 'topOverviewImage', + output: () => + createFixture(overviewImageView, { + seed: ZOD_SEED, + array: { min: 2, max: 2 }, + }), +});