import { dataBuilder } from "@helpers/datas/dataBuilder"; import { lorem } from "@helpers/ui/lipsum"; import { dataOffer, get_random_dataOffer } from "@mocks/dataOffer.mock"; import { get_random_image } from "@mocks/image.mock"; import { get_random_namedResource } from "@mocks/namedResource.mock"; import { get_random_service, service } from "@mocks/service.mock"; import { type Provider, RDFTYPE_PROVIDER } from "@src/rdf"; export const provider: Provider = { "@id": "store://local.sample-object/providers/1/", "@type": RDFTYPE_PROVIDER, creation_date: "2024-11-11T14:03:03.534000Z", update_date: "2024-11-18T13:59:20.223723Z", name: "Provider 1", image: get_random_image(), 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 ), data_offers: [dataOffer], services: [service], contact_url: "/", }; export type providerParameters = { allowRemovables?: boolean; // false }; export const get_random_provider = (parameters: providerParameters = {}): Provider => { const removables: string[] = []; const replacements: Provider = { "@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), image: get_random_image(), description: lorem.generateParagraphs(Math.floor(Math.random() * 2) + 1), categories: Array.from( { length: Math.floor(Math.random() * 2) }, get_random_namedResource ), data_offers: Array.from( { length: Math.floor(Math.random() * 3) }, get_random_dataOffer ), services: Array.from( { length: Math.floor(Math.random() * 3) }, get_random_service ), contact_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("image"); removableGenerator("description"); removableGenerator("categories"); removableGenerator("data_offers"); removableGenerator("services"); removableGenerator("contact_url"); } return dataBuilder(provider, removables, replacements, true) as Provider; };