@prismicio/mock
Version:
Generate mock Prismic documents, fields, Slices, and models for development and testing environments
25 lines (19 loc) • 978 B
text/typescript
import type * as prismic from "@prismicio/client"
import { sentenceCase } from "../lib/changeCase"
import { createFaker } from "../lib/createFaker"
import type { MockValueStateConfig, MockValueConfig } from "../types"
export type MockKeyTextValueConfig<
Model extends prismic.CustomTypeModelKeyTextField = prismic.CustomTypeModelKeyTextField,
State extends prismic.FieldState = prismic.FieldState,
> = MockValueConfig<Model> & MockValueStateConfig<State>
export type MockKeyTextValue<State extends prismic.FieldState = prismic.FieldState> =
prismic.KeyTextField<State>
export const keyText = <
Model extends prismic.CustomTypeModelKeyTextField = prismic.CustomTypeModelKeyTextField,
State extends prismic.FieldState = "filled",
>(
config: MockKeyTextValueConfig<Model, State>,
): MockKeyTextValue<State> => {
const faker = config.faker || createFaker(config.seed)
return (config.state === "empty" ? null : sentenceCase(faker.words(3))) as MockKeyTextValue<State>
}