import { dataBuilder } from "@helpers/datas/dataBuilder"; import { get_random_asset } from "@mocks/asset.mock"; import { get_random_namedResource } from "@mocks/namedResource.mock"; import { get_random_object, type objectParameters, sampleObject, } from "@mocks/object.mock"; import { type Object_MediaObject, RDFTYPE_MEDIA_OBJECT, RDFTYPE_OBJECT, } from "@src/rdf"; export const sampleMediaObject: Object_MediaObject = { ...sampleObject, "@type": [RDFTYPE_OBJECT, RDFTYPE_MEDIA_OBJECT], keywords: Array.from( { length: Math.floor(Math.random() * 5) }, get_random_namedResource ), assets: Array.from( { length: Math.floor(Math.random() * 3) }, get_random_asset ), publication_date: new Date( Date.now() - Math.random() * 365 * 24 * 60 * 60 * 1000 ).toISOString(), language: get_random_namedResource(), }; export const get_random_mediaObject = ( parameters: objectParameters = {} ): Object_MediaObject => { const removables: string[] = []; const replacements: Object_MediaObject = { ...get_random_object(parameters), "@type": [RDFTYPE_OBJECT, RDFTYPE_MEDIA_OBJECT], keywords: Array.from( { length: Math.floor(Math.random() * 5) }, get_random_namedResource ), assets: Array.from( { length: Math.floor(Math.random() * 3) }, get_random_asset ), publication_date: new Date( Date.now() - Math.random() * 365 * 24 * 60 * 60 * 1000 ).toISOString(), language: get_random_namedResource(), }; if (parameters.allowRemovables) { const removableGenerator = (key: string) => { // Between 0 and 25% chance if (Math.random() < Math.random() * 0.25) { removables.push(key); } }; removableGenerator("keywords"); removableGenerator("assets"); } return dataBuilder( sampleMediaObject, removables, replacements, true ) as Object_MediaObject; };