UNPKG

@prismicio/mock

Version:

Generate mock Prismic documents, fields, Slices, and models for development and testing environments

35 lines (28 loc) 1.11 kB
import * as prismic from "@prismicio/client" import { capitalCase, pascalCase, sentenceCase, snakeCase } from "../lib/changeCase" import { createFaker } from "../lib/createFaker" import type { MockModelConfig } from "../types" export type MockSharedSliceModelConfig<Variation extends prismic.SharedSliceModelVariation> = { id?: string name?: string variations?: Variation[] } & MockModelConfig export const sharedSlice = <Variation extends prismic.SharedSliceModelVariation>( config: MockSharedSliceModelConfig<Variation>, ): prismic.SharedSliceModel<string, Variation> => { const faker = config.faker || createFaker(config.seed) let name: string = config.name || capitalCase(faker.words(faker.range(1, 2))) let id: string = config.id || snakeCase(name) if (config.id && !config.name) { name = pascalCase(config.id) } else if (config.name && !config.id) { id = snakeCase(config.name) } return { type: prismic.CustomTypeModelSliceType.SharedSlice, id, name, description: sentenceCase(faker.words(faker.range(5, 10))), variations: config.variations || ([] as Variation[]), } }