From 0a74e2e211bbac398b4e368e702480c79afebea4 Mon Sep 17 00:00:00 2001 From: Jonathan Druart <jonathan.druart@bugs.koha-community.org> Date: Wed, 12 Mar 2025 13:17:35 +0100 Subject: [PATCH] Bug 39315: MockData - generate full objects for libraries and item types Signed-off-by: David Nind <david@davidnind.com> --- t/cypress/integration/t/mockData.ts | 22 +++++++++++++++ t/cypress/plugins/mockData.js | 44 +++++++++++++++++++++++++---- 2 files changed, 60 insertions(+), 6 deletions(-) diff --git a/t/cypress/integration/t/mockData.ts b/t/cypress/integration/t/mockData.ts index 60c1c2118d..8c63fb75f7 100644 --- a/t/cypress/integration/t/mockData.ts +++ b/t/cypress/integration/t/mockData.ts @@ -53,3 +53,25 @@ describe("Generate Random Libraries", () => { ); }); }); + +describe("Generate objects", () => { + it("should generate an object for library", () => { + cy.task("buildSampleObject", { object: "item" }).then(mockItem => { + expect(mockItem.home_library).to.have.property("library_id"); + expect(mockItem.home_library).to.have.property("name"); + expect(mockItem.home_library_id).to.equal( + mockItem.home_library.library_id + ); + expect(mockItem.holding_library).to.have.property("library_id"); + expect(mockItem.holding_library).to.have.property("name"); + expect(mockItem.holding_library_id).to.equal( + mockItem.holding_library.library_id + ); + expect(mockItem.item_type).to.have.property("item_type_id"); + expect(mockItem.item_type).to.have.property("description"); + expect(mockItem.item_type_id).to.equal( + mockItem.item_type.item_type_id + ); + }); + }); +}); diff --git a/t/cypress/plugins/mockData.js b/t/cypress/plugins/mockData.js index 48219e6257..0f9c292df8 100644 --- a/t/cypress/plugins/mockData.js +++ b/t/cypress/plugins/mockData.js @@ -3,9 +3,6 @@ const { readYamlFile } = require("./../plugins/readYamlFile.js"); const fs = require("fs"); const generateMockData = (type, properties) => { - if (Array.isArray(type)) { - type = type.filter(t => t != '"null"')[0]; - } switch (type) { case "string": if (properties?.maxLength) { @@ -36,17 +33,52 @@ const generateMockData = (type, properties) => { const generateDataFromSchema = (properties, values = {}) => { const mockData = {}; + const ids = {}; Object.entries(properties).forEach(([key, value]) => { if (values.hasOwnProperty(key)) { mockData[key] = values[key]; } else { - let type = + let data; + let type = value.type; + if (Array.isArray(type)) { + type = type.filter(t => t != '"null"')[0]; + } + + type = value?.format == "date" || value?.format == "date-time" ? value.format - : value.type; - mockData[key] = generateMockData(type, value); + : type; + let fk_name; + if (type == "object") { + switch (key) { + case "home_library": + case "holding_library": + data = buildSampleObject({ object: "library" }); + fk_name = "library_id"; + break; + case "item_type": + data = buildSampleObject({ object: "item_type" }); + fk_name = "item_type_id"; + break; + default: + data = generateMockData(type, value); + } + if (typeof data === "object") { + ids[key] = data[fk_name]; + } + } else { + data = generateMockData(type, value); + } + mockData[key] = data; } }); + + Object.keys(ids).forEach(k => { + if (mockData.hasOwnProperty(k + "_id")) { + mockData[k + "_id"] = ids[k]; + } + }); + return mockData; }; -- 2.39.5