import { dataBuilder } from "@helpers/datas/dataBuilder"; import { lorem } from "@helpers/ui/lipsum"; import { get_random_location } from "@mocks/location.mock"; import { get_random_namedResource } from "@mocks/namedResource.mock"; import { get_random_provider, provider } from "@mocks/provider.mock"; import { RDFTYPE_SENTIMENT, type Sentiment } from "@src/rdf"; export const sampleSentiment: Sentiment = { "@type": RDFTYPE_SENTIMENT, keyword: "Sample Keyword", location: get_random_location(), iframe: "https://example.com", topics: Array.from( { length: Math.floor(Math.random() * 3) }, get_random_namedResource, ), providers: [provider], }; export const get_random_mediaObject = (): Sentiment => { const removables: string[] = []; const replacements: Sentiment = { keyword: lorem.generateWords(Math.floor(Math.random() * 3) + 1), location: get_random_location(), iframe: "", topics: Array.from( { length: Math.floor(Math.random() * 3) }, get_random_namedResource, ), providers: Array.from( { length: Math.floor(Math.random() * 1) }, get_random_provider, ), }; replacements.iframe = `https://placehold.co/420x500?text=${encodeURIComponent( replacements.keyword, )}`; const removableGenerator = (key: string) => { // Between 0 and 25% chance if (Math.random() < Math.random() * 0.25) { removables.push(key); } }; removableGenerator("location"); removableGenerator("iframe"); removableGenerator("topics"); removableGenerator("providers"); return dataBuilder( sampleSentiment, removables, replacements, true, ) as Sentiment; };