import { dataBuilder } from "@helpers/datas/dataBuilder"; import { lorem } from "@helpers/ui/lipsum"; import { get_random_namedResource } from "@mocks/namedResource.mock"; import { type Asset, RDFTYPE_ASSET } from "@src/rdf"; export const asset: Asset = { "@id": "store://local.sample-object/assets/1/", "@type": RDFTYPE_ASSET, name: "SampleAsset", size: "10MiB", format: { "@id": "store://local.sample-object/formats/1/", "@type": "tems:Format", name: ".obj", }, categories: [ { "@id": "store://local.sample-object/categories/1/", "@type": "tems:Category", name: "Sample", }, ], }; export const assetWithoutCategories = dataBuilder(asset, ["categories"]); export const assetWithoutFormat = dataBuilder(asset, ["format"]); export const minimalAsset = dataBuilder(asset, [ "categories", "format", "size", ]); export const assets = [ asset, dataBuilder(asset, ["@id"], { "@id": "store://local.sample-object/assets/2/", }), ]; export const get_random_asset = (): Asset => { const removables: string[] = []; const replacements: Asset = { "@id": `store://local.sample-object/${Math.floor(Math.random() * 1000)}/`, name: lorem.generateWords(Math.floor(Math.random() * 3) + 1), size: lorem.generateWords(1), format: get_random_namedResource(), categories: Array.from({ length: Math.floor(Math.random() * 2) }, () => get_random_namedResource(), ), }; if (Math.random() < 0.1) { removables.push("name"); } if (Math.random() < 0.5) { removables.push("categories"); } if (Math.random() < 0.5) { removables.push("format"); } if (Math.random() < 0.5) { removables.push("size"); } return dataBuilder(asset, removables, replacements, true) as Asset; };