import { dataBuilder } from "@helpers/datas/dataBuilder"; import { lorem } from "@helpers/ui/lipsum"; import { get_random_image } from "@mocks/image.mock"; import { get_random_licence } from "@mocks/licence.mock"; import { get_random_namedResource } from "@mocks/namedResource.mock"; import { RDFTYPE_SERVICE, type Service } from "@src/rdf"; export const service: Service = { "@id": "store://local.sample-object/services/1/", "@type": RDFTYPE_SERVICE, creation_date: "2024-11-11T14:03:03.534000Z", update_date: "2024-11-18T13:59:20.223723Z", name: "Service 1", description: "A centralized environment for the collection, sharing, and analysis of data related to media trends and personalization services.", long_description: "A centralized environment for the collection, sharing, and analysis of data related to media trends and personalization services.", categories: Array.from( { length: Math.floor(Math.random() * 2) }, get_random_namedResource ), activation_date: null, activation_status: false, licence: get_random_licence(), is_in_app: false, is_external: false, is_api: false, images: Array.from( { length: Math.floor(Math.random() * 3) }, get_random_image ), release_date: "2024-11-18T13:59:20.223723Z", last_update: "2024-11-18T13:59:20.223723Z", developper: get_random_image(), contact_url: "/", documentation_url: "/", }; export type serviceParameters = { allowRemovables?: boolean; // false }; export const get_random_service = ( parameters: serviceParameters = {} ): Service => { const removables: string[] = []; const replacements: Service = { "@id": `store://local.sample-object/${Math.floor(Math.random() * 1000)}/`, creation_date: new Date( Date.now() - Math.random() * 365 * 24 * 60 * 60 * 1000 ).toISOString(), update_date: new Date( Date.now() - Math.random() * 30 * 24 * 60 * 60 * 1000 ).toISOString(), name: lorem.generateWords(Math.floor(Math.random() * 3) + 1), description: lorem.generateSentences(Math.floor(Math.random() * 2) + 1), long_description: lorem.generateParagraphs( Math.floor(Math.random() * 3) + 1 ), categories: Array.from( { length: Math.floor(Math.random() * 2) }, get_random_namedResource ), activation_date: new Date( Date.now() - Math.random() * 30 * 24 * 60 * 60 * 1000 ).toISOString(), activation_status: Math.random() < 0.5, licence: get_random_licence(), is_in_app: Math.random() < 0.5, is_external: Math.random() < 0.5, is_api: Math.random() < 0.5, images: Array.from( { length: Math.floor(Math.random() * 3) }, get_random_image ), release_date: new Date( Date.now() - Math.random() * 365 * 24 * 60 * 60 * 1000 ).toISOString(), last_update: new Date( Date.now() - Math.random() * 30 * 24 * 60 * 60 * 1000 ).toISOString(), developper: get_random_image(), contact_url: `https://example.com/${Math.floor(Math.random() * 1000)}`, documentation_url: `https://example.com/${Math.floor( Math.random() * 1000 )}`, }; if (parameters.allowRemovables) { const removableGenerator = (key: string) => { // Between 0 and 25% chance if (Math.random() < Math.random() * 0.25) { removables.push(key); } }; removableGenerator("name"); removableGenerator("description"); removableGenerator("long_description"); removableGenerator("categories"); removableGenerator("activation_date"); removableGenerator("activation_status"); removableGenerator("licence"); removableGenerator("is_in_app"); removableGenerator("is_external"); removableGenerator("is_api"); removableGenerator("images"); removableGenerator("release_date"); removableGenerator("last_update"); removableGenerator("developper"); removableGenerator("contact_url"); removableGenerator("documentation_url"); } return dataBuilder(service, removables, replacements, true) as Service; };