@prismicio/mock
Version:
Generate mock Prismic documents, fields, Slices, and models for development and testing environments
49 lines (40 loc) • 1.07 kB
text/typescript
import * as prismic from "@prismicio/client";
import { sentenceCase } from "../../lib/changeCase";
import { createFaker } from "../../lib/createFaker";
import { MockRichTextValueConfig } from "../../types";
const patterns = {
short: {
minItems: 1,
maxItems: 3,
},
medium: {
minItems: 3,
maxItems: 6,
},
long: {
minItems: 6,
maxItems: 12,
},
} as const;
type MockRichTextOListValueConfig = {
pattern?: keyof typeof patterns;
} & MockRichTextValueConfig;
export const oList = (
config: MockRichTextOListValueConfig,
): prismic.RTOListItemNode[] | undefined => {
const faker = config.faker || createFaker(config.seed);
const patternKey =
config.pattern ||
faker.randomElement(Object.keys(patterns) as (keyof typeof patterns)[]);
const pattern = patterns[patternKey];
const itemsCount = faker.range(pattern.minItems, pattern.maxItems);
return Array(itemsCount)
.fill(undefined)
.map(() => {
return {
type: prismic.RichTextNodeType.oListItem,
text: sentenceCase(faker.words(faker.range(5, 15))),
spans: [],
};
});
};