@prismicio/mock
Version:
Generate mock Prismic documents, fields, Slices, and models for development and testing environments
64 lines (55 loc) • 1.74 kB
text/typescript
import { createFaker } from "../lib/createFaker"
import { generateFieldId } from "../lib/generateFieldId"
import { boolean } from "../model/boolean"
import { color } from "../model/color"
import { contentRelationship } from "../model/contentRelationship"
import { date } from "../model/date"
import { embed } from "../model/embed"
import { geoPoint } from "../model/geoPoint"
import { image } from "../model/image"
import { integration } from "../model/integration"
import { keyText } from "../model/keyText"
import { link } from "../model/link"
import { linkToMedia } from "../model/linkToMedia"
import { number } from "../model/number"
import { richText } from "../model/richText"
import { select } from "../model/select"
import { timestamp } from "../model/timestamp"
import { title } from "../model/title"
import type { MockModelConfig, NestedGroupFieldModelMap, ValueOf } from "../types"
const mockModelFns = {
boolean,
color,
contentRelationship,
date,
embed,
geoPoint,
image,
integration,
keyText,
link,
linkToMedia,
number,
richText,
select,
timestamp,
title,
}
export type BuildMockGroupFieldMapConfig = MockModelConfig
export const buildMockGroupFieldMap = (
config: BuildMockGroupFieldMapConfig,
): NestedGroupFieldModelMap => {
const faker = config.faker || createFaker(config.seed)
const fields: NestedGroupFieldModelMap = {}
const fieldTypes = faker.randomElements(
Object.keys(mockModelFns) as (keyof typeof mockModelFns)[],
)
for (const fieldType of fieldTypes) {
const fieldId = generateFieldId({ faker })
const mockModelFn = mockModelFns[fieldType] as (
config: MockModelConfig,
) => ValueOf<NestedGroupFieldModelMap>
fields[fieldId] = mockModelFn({ faker })
}
return fields
}