@prismicio/mock
Version:
Generate mock Prismic documents, fields, Slices, and models for development and testing environments
39 lines (33 loc) • 1.23 kB
text/typescript
import type * as prismic from "@prismicio/client"
import { createFaker } from "../lib/createFaker"
import type { MockValueConfig, MockValueStateConfig } from "../types"
import { heading, type MockRichTextHeadingValueConfig } from "./richText/heading"
export type MockTitleValueConfig<
Model extends prismic.CustomTypeModelTitleField = prismic.CustomTypeModelTitleField,
State extends prismic.FieldState = prismic.FieldState,
> = {
pattern?: MockRichTextHeadingValueConfig["pattern"]
} & MockValueConfig<Model> &
MockValueStateConfig<State>
export type MockTitleValue<State extends prismic.FieldState = prismic.FieldState> =
prismic.TitleField<State>
export const title = <
Model extends prismic.CustomTypeModelTitleField = prismic.CustomTypeModelTitleField,
State extends prismic.FieldState = "filled",
>(
config: MockTitleValueConfig<Model, State>,
): MockTitleValue<State> => {
const faker = config.faker || createFaker(config.seed)
if (config.state === "empty") {
return [] as MockTitleValue<State>
} else {
return [
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
heading({
faker,
model: config.model,
pattern: config.pattern,
})!,
] as MockTitleValue<State>
}
}