Bug 39315: MockData - generate full objects for libraries and item types

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Martin Renvoize <martin.renvoize@openfifth.co.uk>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
This commit is contained in:
Jonathan Druart 2025-03-12 13:17:35 +01:00 committed by Katrin Fischer
parent d3ae289b0f
commit cb384b2a1c
No known key found for this signature in database
GPG Key ID: 0EF6E2C03357A834
2 changed files with 60 additions and 6 deletions

View File

@ -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
);
});
});
});

View File

@ -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;
};