From b2cca66ed9ccd817b4058f1477e1c0259dccbbf4 Mon Sep 17 00:00:00 2001
From: Piotr Gawron <p.gawron@atcomp.pl>
Date: Fri, 26 Apr 2024 13:45:07 +0200
Subject: [PATCH] adjust tests for the new zod model

---
 src/models/fixtures/projectFixture.ts          | 17 +++++++++++++++--
 src/models/generators/diseaseGenerator.ts      | 18 ++++++++++++++++++
 src/models/generators/diseaseNameGenerator.ts  | 10 ++++++++++
 src/models/generators/organismGenerator.ts     | 16 ++++++++++++++++
 src/models/generators/organismNameGenerator.ts | 10 ++++++++++
 .../generators/topOverviewImageGenerator.ts    | 16 ++++++++++++++++
 6 files changed, 85 insertions(+), 2 deletions(-)
 create mode 100644 src/models/generators/diseaseGenerator.ts
 create mode 100644 src/models/generators/diseaseNameGenerator.ts
 create mode 100644 src/models/generators/organismGenerator.ts
 create mode 100644 src/models/generators/organismNameGenerator.ts
 create mode 100644 src/models/generators/topOverviewImageGenerator.ts

diff --git a/src/models/fixtures/projectFixture.ts b/src/models/fixtures/projectFixture.ts
index 06868af6..f228879d 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 00000000..1e8ae525
--- /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 00000000..427c74b8
--- /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 00000000..ae654656
--- /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 00000000..25bd5c0f
--- /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 00000000..fbdb047c
--- /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 },
+    }),
+});
-- 
GitLab