@prismicio/mock 0.0.9 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/index.cjs +153 -149
- package/dist/api/index.cjs.map +1 -1
- package/dist/api/index.d.ts +51 -5
- package/dist/api/index.js +153 -149
- package/dist/api/index.js.map +1 -1
- package/dist/index.cjs +609 -357
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +240 -70
- package/dist/index.js +602 -358
- package/dist/index.js.map +1 -1
- package/dist/model/index.cjs +236 -66
- package/dist/model/index.cjs.map +1 -1
- package/dist/model/index.d.ts +113 -27
- package/dist/model/index.js +236 -66
- package/dist/model/index.js.map +1 -1
- package/dist/value/index.cjs +347 -315
- package/dist/value/index.cjs.map +1 -1
- package/dist/value/index.d.ts +90 -38
- package/dist/value/index.js +347 -315
- package/dist/value/index.js.map +1 -1
- package/package.json +14 -15
- package/src/api/createAPIMockFactory.ts +56 -0
- package/src/api/query.ts +2 -2
- package/src/api/ref.ts +3 -3
- package/src/api/repository.ts +7 -9
- package/src/api/tags.ts +5 -2
- package/src/createMockFactory.ts +52 -0
- package/src/index.ts +15 -0
- package/src/lib/buildEmbedField.ts +13 -4
- package/src/lib/buildImageFieldImage.ts +16 -5
- package/src/lib/createFaker.ts +14 -15
- package/src/lib/generateCustomTypeId.ts +12 -4
- package/src/lib/generateFieldId.ts +12 -4
- package/src/lib/generateTags.ts +13 -4
- package/src/lib/getMockEmbedData.ts +12 -4
- package/src/lib/getMockImageData.ts +12 -4
- package/src/lib/valueForModel.ts +47 -30
- package/src/lib/valueForModelMap.ts +24 -4
- package/src/model/boolean.ts +5 -5
- package/src/model/buildMockGroupFieldMap.ts +4 -4
- package/src/model/color.ts +2 -2
- package/src/model/contentRelationship.ts +2 -2
- package/src/model/createModelMockFactory.ts +213 -0
- package/src/model/customType.ts +3 -3
- package/src/model/date.ts +2 -2
- package/src/model/embed.ts +2 -2
- package/src/model/geoPoint.ts +2 -2
- package/src/model/group.ts +6 -6
- package/src/model/image.ts +3 -3
- package/src/model/index.ts +2 -0
- package/src/model/integrationFields.ts +2 -2
- package/src/model/keyText.ts +2 -2
- package/src/model/link.ts +3 -3
- package/src/model/linkToMedia.ts +3 -3
- package/src/model/number.ts +2 -2
- package/src/model/richText.ts +2 -2
- package/src/model/select.ts +3 -3
- package/src/model/sharedSlice.ts +3 -3
- package/src/model/sharedSliceVariation.ts +6 -6
- package/src/model/slice.ts +3 -3
- package/src/model/sliceZone.ts +7 -4
- package/src/model/timestamp.ts +2 -2
- package/src/model/title.ts +2 -2
- package/src/model/uid.ts +2 -2
- package/src/types.ts +67 -25
- package/src/value/boolean.ts +3 -5
- package/src/value/color.ts +2 -2
- package/src/value/contentRelationship.ts +18 -15
- package/src/value/createValueMockFactory.ts +236 -0
- package/src/value/customType.ts +7 -7
- package/src/value/date.ts +6 -2
- package/src/value/embed.ts +6 -3
- package/src/value/geoPoint.ts +2 -2
- package/src/value/group.ts +5 -5
- package/src/value/image.ts +26 -18
- package/src/value/integrationFields.ts +12 -26
- package/src/value/keyText.ts +2 -2
- package/src/value/link.ts +9 -7
- package/src/value/linkToMedia.ts +2 -2
- package/src/value/number.ts +2 -2
- package/src/value/richText/embed.ts +6 -3
- package/src/value/richText/heading.ts +29 -17
- package/src/value/richText/image.ts +6 -3
- package/src/value/richText/index.ts +71 -43
- package/src/value/richText/list.ts +2 -2
- package/src/value/richText/oList.ts +2 -2
- package/src/value/richText/paragraph.ts +2 -2
- package/src/value/richText/preformatted.ts +2 -2
- package/src/value/select.ts +10 -6
- package/src/value/sharedSlice.ts +4 -4
- package/src/value/sharedSliceVariation.ts +9 -10
- package/src/value/slice.ts +9 -9
- package/src/value/sliceZone.ts +10 -8
- package/src/value/timestamp.ts +2 -2
- package/src/value/title.ts +7 -3
- package/src/value/uid.ts +5 -3
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as prismicT from "@prismicio/types";
|
|
2
2
|
|
|
3
3
|
import { buildImageFieldImage } from "../../lib/buildImageFieldImage";
|
|
4
|
+
import { createFaker } from "../../lib/createFaker";
|
|
4
5
|
import { getMockImageData } from "../../lib/getMockImageData";
|
|
5
6
|
|
|
6
7
|
import { MockRichTextValueConfig } from "../../types";
|
|
@@ -8,11 +9,13 @@ import { MockRichTextValueConfig } from "../../types";
|
|
|
8
9
|
type MockRichTextImageValueConfig = MockRichTextValueConfig;
|
|
9
10
|
|
|
10
11
|
export const image = (
|
|
11
|
-
config: MockRichTextImageValueConfig
|
|
12
|
+
config: MockRichTextImageValueConfig,
|
|
12
13
|
): prismicT.RTImageNode | undefined => {
|
|
13
|
-
const
|
|
14
|
+
const faker = config.faker || createFaker(config.seed);
|
|
15
|
+
|
|
16
|
+
const imageData = getMockImageData({ faker });
|
|
14
17
|
const imageField = buildImageFieldImage({
|
|
15
|
-
|
|
18
|
+
faker,
|
|
16
19
|
imageData,
|
|
17
20
|
state: "filled",
|
|
18
21
|
});
|
|
@@ -2,7 +2,10 @@ import * as prismicT from "@prismicio/types";
|
|
|
2
2
|
|
|
3
3
|
import { createFaker } from "../../lib/createFaker";
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
MockRichTextValueConfig as BaseMockRichTextValueConfig,
|
|
7
|
+
MockValueStateConfig,
|
|
8
|
+
} from "../../types";
|
|
6
9
|
|
|
7
10
|
import * as modelGen from "../../model";
|
|
8
11
|
import { heading } from "./heading";
|
|
@@ -28,10 +31,6 @@ const patterns = {
|
|
|
28
31
|
},
|
|
29
32
|
} as const;
|
|
30
33
|
|
|
31
|
-
export type MockRichTextValueConfig = {
|
|
32
|
-
pattern?: keyof typeof patterns;
|
|
33
|
-
} & BaseMockRichTextValueConfig<prismicT.CustomTypeModelRichTextField>;
|
|
34
|
-
|
|
35
34
|
const generators = {
|
|
36
35
|
[prismicT.RichTextNodeType.heading1]: heading,
|
|
37
36
|
[prismicT.RichTextNodeType.heading2]: heading,
|
|
@@ -47,48 +46,77 @@ const generators = {
|
|
|
47
46
|
[prismicT.RichTextNodeType.embed]: embed,
|
|
48
47
|
};
|
|
49
48
|
|
|
50
|
-
export
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
49
|
+
export type MockRichTextValueConfig<
|
|
50
|
+
Model extends prismicT.CustomTypeModelRichTextField = prismicT.CustomTypeModelRichTextField,
|
|
51
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
52
|
+
> = {
|
|
53
|
+
pattern?: keyof typeof patterns;
|
|
54
|
+
} & BaseMockRichTextValueConfig<Model> &
|
|
55
|
+
MockValueStateConfig<State>;
|
|
56
|
+
|
|
57
|
+
export type MockRichTextValue<
|
|
58
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
59
|
+
> = prismicT.RichTextField<State>;
|
|
54
60
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
const
|
|
62
|
-
const types = (
|
|
63
|
-
"multi" in model.config ? model.config.multi : model.config.single
|
|
64
|
-
)
|
|
65
|
-
.split(",")
|
|
66
|
-
.filter((type) =>
|
|
67
|
-
Object.keys(generators).includes(type),
|
|
68
|
-
) as prismicT.RTNode["type"][];
|
|
61
|
+
export const richText = <
|
|
62
|
+
Model extends prismicT.CustomTypeModelRichTextField = prismicT.CustomTypeModelRichTextField,
|
|
63
|
+
State extends prismicT.FieldState = prismicT.FieldState,
|
|
64
|
+
>(
|
|
65
|
+
config: MockRichTextValueConfig<Model, State>,
|
|
66
|
+
): MockRichTextValue<State> => {
|
|
67
|
+
const faker = config.faker || createFaker(config.seed);
|
|
69
68
|
|
|
70
|
-
if (
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
69
|
+
if (config.state === "empty") {
|
|
70
|
+
return [] as MockRichTextValue<State>;
|
|
71
|
+
} else {
|
|
72
|
+
const model =
|
|
73
|
+
config.model ||
|
|
74
|
+
modelGen.richText({
|
|
75
|
+
faker,
|
|
76
|
+
withMultipleBlocks: true,
|
|
77
|
+
});
|
|
78
|
+
const supportsMultipleBlocks = model.config && "multi" in model.config;
|
|
75
79
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
80
|
+
let types: prismicT.RTNode["type"][] = [];
|
|
81
|
+
if (model.config) {
|
|
82
|
+
if ("multi" in model.config && model.config.multi) {
|
|
83
|
+
types = model.config.multi
|
|
84
|
+
.split(",")
|
|
85
|
+
.filter((type): type is prismicT.RTNode["type"] =>
|
|
86
|
+
Object.keys(generators).includes(type),
|
|
87
|
+
);
|
|
88
|
+
} else if ("single" in model.config && model.config.single) {
|
|
89
|
+
types = model.config.single
|
|
90
|
+
.split(",")
|
|
91
|
+
.filter((type): type is prismicT.RTNode["type"] =>
|
|
92
|
+
Object.keys(generators).includes(type),
|
|
93
|
+
);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
79
96
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
97
|
+
if (types.length > 0) {
|
|
98
|
+
const patternKey =
|
|
99
|
+
config.pattern ||
|
|
100
|
+
faker.randomElement(Object.keys(patterns) as (keyof typeof patterns)[]);
|
|
101
|
+
const pattern = patterns[patternKey];
|
|
85
102
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
103
|
+
const blockCount = supportsMultipleBlocks
|
|
104
|
+
? faker.range(pattern.blockCountMin, pattern.blockCountMax)
|
|
105
|
+
: 1;
|
|
106
|
+
|
|
107
|
+
return Array(blockCount)
|
|
108
|
+
.fill(undefined)
|
|
109
|
+
.map(() => {
|
|
110
|
+
const type = faker.randomElement(types);
|
|
111
|
+
const generator = generators[type];
|
|
112
|
+
|
|
113
|
+
return generator({ faker, model });
|
|
114
|
+
})
|
|
115
|
+
.flat()
|
|
116
|
+
.filter((block): block is prismicT.RTNode => block !== undefined)
|
|
117
|
+
.slice(0, blockCount) as MockRichTextValue<State>;
|
|
118
|
+
} else {
|
|
119
|
+
return [] as MockRichTextValue<State>;
|
|
120
|
+
}
|
|
93
121
|
}
|
|
94
122
|
};
|
|
@@ -25,9 +25,9 @@ type MockRichTextListValueConfig = {
|
|
|
25
25
|
} & MockRichTextValueConfig;
|
|
26
26
|
|
|
27
27
|
export const list = (
|
|
28
|
-
config: MockRichTextListValueConfig
|
|
28
|
+
config: MockRichTextListValueConfig,
|
|
29
29
|
): prismicT.RTListItemNode[] | undefined => {
|
|
30
|
-
const faker = createFaker(config.seed);
|
|
30
|
+
const faker = config.faker || createFaker(config.seed);
|
|
31
31
|
|
|
32
32
|
const patternKey =
|
|
33
33
|
config.pattern ||
|
|
@@ -25,9 +25,9 @@ type MockRichTextOListValueConfig = {
|
|
|
25
25
|
} & MockRichTextValueConfig;
|
|
26
26
|
|
|
27
27
|
export const oList = (
|
|
28
|
-
config: MockRichTextOListValueConfig
|
|
28
|
+
config: MockRichTextOListValueConfig,
|
|
29
29
|
): prismicT.RTOListItemNode[] | undefined => {
|
|
30
|
-
const faker = createFaker(config.seed);
|
|
30
|
+
const faker = config.faker || createFaker(config.seed);
|
|
31
31
|
|
|
32
32
|
const patternKey =
|
|
33
33
|
config.pattern ||
|
|
@@ -22,9 +22,9 @@ type MockRichTextParagraphValueConfig = {
|
|
|
22
22
|
} & MockRichTextValueConfig;
|
|
23
23
|
|
|
24
24
|
export const paragraph = (
|
|
25
|
-
config: MockRichTextParagraphValueConfig
|
|
25
|
+
config: MockRichTextParagraphValueConfig,
|
|
26
26
|
): prismicT.RTParagraphNode | undefined => {
|
|
27
|
-
const faker = createFaker(config.seed);
|
|
27
|
+
const faker = config.faker || createFaker(config.seed);
|
|
28
28
|
|
|
29
29
|
const patternKey =
|
|
30
30
|
config.pattern ||
|
|
@@ -22,9 +22,9 @@ type MockRichTextPreformattedValueConfig = {
|
|
|
22
22
|
} & MockRichTextValueConfig;
|
|
23
23
|
|
|
24
24
|
export const preformatted = (
|
|
25
|
-
config: MockRichTextPreformattedValueConfig
|
|
25
|
+
config: MockRichTextPreformattedValueConfig,
|
|
26
26
|
): prismicT.RTPreformattedNode | undefined => {
|
|
27
|
-
const faker = createFaker(config.seed);
|
|
27
|
+
const faker = config.faker || createFaker(config.seed);
|
|
28
28
|
|
|
29
29
|
const patternKey =
|
|
30
30
|
config.pattern ||
|
package/src/value/select.ts
CHANGED
|
@@ -14,18 +14,22 @@ export type MockSelectValueConfig<
|
|
|
14
14
|
export type MockSelectValue<
|
|
15
15
|
Model extends prismicT.CustomTypeModelSelectField = prismicT.CustomTypeModelSelectField,
|
|
16
16
|
State extends prismicT.FieldState = prismicT.FieldState,
|
|
17
|
-
> = prismicT.SelectField<
|
|
17
|
+
> = prismicT.SelectField<
|
|
18
|
+
NonNullable<NonNullable<Model["config"]>["options"]>[number],
|
|
19
|
+
State
|
|
20
|
+
>;
|
|
18
21
|
|
|
19
22
|
export const select = <
|
|
20
23
|
Model extends prismicT.CustomTypeModelSelectField = prismicT.CustomTypeModelSelectField,
|
|
21
24
|
State extends prismicT.FieldState = "filled",
|
|
22
25
|
>(
|
|
23
|
-
config: MockSelectValueConfig<Model, State
|
|
26
|
+
config: MockSelectValueConfig<Model, State>,
|
|
24
27
|
): MockSelectValue<Model, State> => {
|
|
25
|
-
const faker = createFaker(config.seed);
|
|
28
|
+
const faker = config.faker || createFaker(config.seed);
|
|
26
29
|
|
|
27
|
-
const model = config.model || modelGen.select({
|
|
28
|
-
const defaultValue = model.config
|
|
30
|
+
const model = config.model || modelGen.select({ faker });
|
|
31
|
+
const defaultValue = model.config?.default_value;
|
|
32
|
+
const options = model.config?.options || [];
|
|
29
33
|
|
|
30
34
|
if (config.state === "empty") {
|
|
31
35
|
return null as MockSelectValue<Model, State>;
|
|
@@ -33,7 +37,7 @@ export const select = <
|
|
|
33
37
|
return (
|
|
34
38
|
typeof defaultValue === "string" && faker.boolean()
|
|
35
39
|
? defaultValue
|
|
36
|
-
: faker.randomElement(
|
|
40
|
+
: faker.randomElement(options)
|
|
37
41
|
) as MockSelectValue<Model, State>;
|
|
38
42
|
}
|
|
39
43
|
};
|
package/src/value/sharedSlice.ts
CHANGED
|
@@ -21,15 +21,15 @@ export type MockSharedSliceValueConfig<
|
|
|
21
21
|
export const sharedSlice = <
|
|
22
22
|
Model extends prismicT.SharedSliceModel = prismicT.SharedSliceModel,
|
|
23
23
|
>(
|
|
24
|
-
config: MockSharedSliceValueConfig<Model
|
|
24
|
+
config: MockSharedSliceValueConfig<Model>,
|
|
25
25
|
): ModelValue<Model> => {
|
|
26
|
-
const faker = createFaker(config.seed);
|
|
26
|
+
const faker = config.faker || createFaker(config.seed);
|
|
27
27
|
|
|
28
|
-
const model = config.model || modelGen.sharedSlice({
|
|
28
|
+
const model = config.model || modelGen.sharedSlice({ faker });
|
|
29
29
|
const variationModel = faker.randomElement(model.variations);
|
|
30
30
|
|
|
31
31
|
return sharedSliceVariation({
|
|
32
|
-
|
|
32
|
+
faker,
|
|
33
33
|
model: variationModel,
|
|
34
34
|
itemsCount: config.itemsCount,
|
|
35
35
|
type: model.id,
|
|
@@ -24,17 +24,16 @@ export type MockSharedSliceVariationValueConfig<
|
|
|
24
24
|
export const sharedSliceVariation = <
|
|
25
25
|
Model extends prismicT.SharedSliceModelVariation = prismicT.SharedSliceModelVariation,
|
|
26
26
|
>(
|
|
27
|
-
config: MockSharedSliceVariationValueConfig<Model
|
|
27
|
+
config: MockSharedSliceVariationValueConfig<Model>,
|
|
28
28
|
): ModelValue<Model> => {
|
|
29
|
-
const faker = createFaker(config.seed);
|
|
29
|
+
const faker = config.faker || createFaker(config.seed);
|
|
30
30
|
|
|
31
|
-
const model =
|
|
32
|
-
config.model || modelGen.sharedSliceVariation({ seed: config.seed });
|
|
31
|
+
const model = config.model || modelGen.sharedSliceVariation({ faker });
|
|
33
32
|
|
|
34
|
-
const sliceType = config.type ?? generateFieldId({
|
|
33
|
+
const sliceType = config.type ?? generateFieldId({ faker });
|
|
35
34
|
|
|
36
35
|
const itemsCount =
|
|
37
|
-
Object.keys(model.items).length > 0
|
|
36
|
+
model.items && Object.keys(model.items).length > 0
|
|
38
37
|
? config.itemsCount ?? faker.range(1, 6)
|
|
39
38
|
: 0;
|
|
40
39
|
|
|
@@ -44,16 +43,16 @@ export const sharedSliceVariation = <
|
|
|
44
43
|
variation: model.id,
|
|
45
44
|
version: faker.hash(7),
|
|
46
45
|
primary: valueForModelMap({
|
|
47
|
-
|
|
48
|
-
map: model.primary,
|
|
46
|
+
faker,
|
|
47
|
+
map: model.primary || {},
|
|
49
48
|
configs: config.primaryFieldConfigs,
|
|
50
49
|
}),
|
|
51
50
|
items: Array(itemsCount)
|
|
52
51
|
.fill(undefined)
|
|
53
52
|
.map(() => {
|
|
54
53
|
return valueForModelMap({
|
|
55
|
-
|
|
56
|
-
map: model.items,
|
|
54
|
+
faker,
|
|
55
|
+
map: model.items || {},
|
|
57
56
|
configs: config.itemsFieldConfigs,
|
|
58
57
|
});
|
|
59
58
|
}),
|
package/src/value/slice.ts
CHANGED
|
@@ -25,20 +25,20 @@ export type MockSliceValueConfig<
|
|
|
25
25
|
export const slice = <
|
|
26
26
|
Model extends prismicT.CustomTypeModelSlice = prismicT.CustomTypeModelSlice,
|
|
27
27
|
>(
|
|
28
|
-
config: MockSliceValueConfig<Model
|
|
28
|
+
config: MockSliceValueConfig<Model>,
|
|
29
29
|
): ModelValue<Model> => {
|
|
30
|
-
const faker = createFaker(config.seed);
|
|
30
|
+
const faker = config.faker || createFaker(config.seed);
|
|
31
31
|
|
|
32
|
-
const model = config.model || modelGen.slice({
|
|
32
|
+
const model = config.model || modelGen.slice({ faker });
|
|
33
33
|
|
|
34
|
-
const sliceType = config.type ?? generateFieldId({
|
|
34
|
+
const sliceType = config.type ?? generateFieldId({ faker });
|
|
35
35
|
const sliceLabel =
|
|
36
36
|
config.label !== undefined
|
|
37
37
|
? config.label
|
|
38
38
|
: changeCase.capitalCase(faker.words(faker.range(1, 2)));
|
|
39
39
|
|
|
40
40
|
const itemsCount =
|
|
41
|
-
Object.keys(model.repeat).length > 0
|
|
41
|
+
model.repeat && Object.keys(model.repeat).length > 0
|
|
42
42
|
? config.itemsCount ?? faker.range(1, 6)
|
|
43
43
|
: 0;
|
|
44
44
|
|
|
@@ -46,16 +46,16 @@ export const slice = <
|
|
|
46
46
|
slice_type: sliceType,
|
|
47
47
|
slice_label: sliceLabel,
|
|
48
48
|
primary: valueForModelMap({
|
|
49
|
-
|
|
50
|
-
map: model["non-repeat"],
|
|
49
|
+
faker,
|
|
50
|
+
map: model["non-repeat"] || {},
|
|
51
51
|
configs: config.primaryFieldConfigs,
|
|
52
52
|
}),
|
|
53
53
|
items: Array(itemsCount)
|
|
54
54
|
.fill(undefined)
|
|
55
55
|
.map(() => {
|
|
56
56
|
return valueForModelMap({
|
|
57
|
-
|
|
58
|
-
map: model.repeat,
|
|
57
|
+
faker,
|
|
58
|
+
map: model.repeat || {},
|
|
59
59
|
configs: config.itemsFieldConfigs,
|
|
60
60
|
});
|
|
61
61
|
}),
|
package/src/value/sliceZone.ts
CHANGED
|
@@ -25,31 +25,33 @@ export const sliceZone = <
|
|
|
25
25
|
Model extends prismicT.CustomTypeModelSliceZoneField = prismicT.CustomTypeModelSliceZoneField,
|
|
26
26
|
State extends prismicT.FieldState = prismicT.FieldState,
|
|
27
27
|
>(
|
|
28
|
-
config: MockSliceZoneValueConfig<Model, State
|
|
28
|
+
config: MockSliceZoneValueConfig<Model, State>,
|
|
29
29
|
): ModelValue<Model, State> => {
|
|
30
30
|
if (config.state === "empty") {
|
|
31
31
|
return [] as ModelValue<Model, State>;
|
|
32
32
|
} else {
|
|
33
|
-
const faker = createFaker(config.seed);
|
|
33
|
+
const faker = config.faker || createFaker(config.seed);
|
|
34
34
|
|
|
35
|
-
const model = config.model || modelGen.sliceZone({
|
|
35
|
+
const model = config.model || modelGen.sliceZone({ faker });
|
|
36
36
|
|
|
37
|
-
if (Object.keys(model.config.choices).length > 0) {
|
|
37
|
+
if (model.config?.choices && Object.keys(model.config.choices).length > 0) {
|
|
38
38
|
const itemsCount = config.itemsCount ?? faker.range(1, 6);
|
|
39
39
|
|
|
40
40
|
return Array(itemsCount)
|
|
41
41
|
.fill(undefined)
|
|
42
42
|
.map(() => {
|
|
43
|
-
const choices =
|
|
43
|
+
const choices =
|
|
44
|
+
(model.config?.choices && Object.entries(model.config.choices)) ||
|
|
45
|
+
[];
|
|
44
46
|
const [choiceType, choiceModel] = faker.randomElement(choices);
|
|
45
47
|
|
|
46
|
-
const choiceLabels = model.config
|
|
48
|
+
const choiceLabels = model.config?.labels?.[choiceType] || [];
|
|
47
49
|
const choiceLabel = faker.randomElement(choiceLabels);
|
|
48
50
|
|
|
49
51
|
switch (choiceModel.type) {
|
|
50
52
|
case prismicT.CustomTypeModelSliceType.Slice: {
|
|
51
53
|
return slice({
|
|
52
|
-
|
|
54
|
+
faker,
|
|
53
55
|
model: choiceModel,
|
|
54
56
|
type: choiceType,
|
|
55
57
|
label: choiceLabel ? choiceLabel.name : null,
|
|
@@ -65,7 +67,7 @@ export const sliceZone = <
|
|
|
65
67
|
|
|
66
68
|
if (sharedSliceModel) {
|
|
67
69
|
return sharedSlice({
|
|
68
|
-
|
|
70
|
+
faker,
|
|
69
71
|
model: sharedSliceModel,
|
|
70
72
|
primaryFieldConfigs: config.primaryFieldConfigs,
|
|
71
73
|
itemsFieldConfigs: config.itemsFieldConfigs,
|
package/src/value/timestamp.ts
CHANGED
|
@@ -21,9 +21,9 @@ export const timestamp = <
|
|
|
21
21
|
Model extends prismicT.CustomTypeModelTimestampField = prismicT.CustomTypeModelTimestampField,
|
|
22
22
|
State extends prismicT.FieldState = "filled",
|
|
23
23
|
>(
|
|
24
|
-
config: MockTimestampValueConfig<Model, State
|
|
24
|
+
config: MockTimestampValueConfig<Model, State>,
|
|
25
25
|
): MockTimestampValue<State> => {
|
|
26
|
-
const faker = createFaker(config.seed);
|
|
26
|
+
const faker = config.faker || createFaker(config.seed);
|
|
27
27
|
|
|
28
28
|
if (config.state === "empty") {
|
|
29
29
|
return null as MockTimestampValue<State>;
|
package/src/value/title.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import * as prismicT from "@prismicio/types";
|
|
2
2
|
|
|
3
|
+
import { createFaker } from "../lib/createFaker";
|
|
4
|
+
|
|
3
5
|
import { MockValueConfig, MockValueStateConfig } from "../types";
|
|
4
6
|
|
|
5
7
|
import { heading, MockRichTextHeadingValueConfig } from "./richText/heading";
|
|
@@ -18,17 +20,19 @@ export type MockTitleValue<
|
|
|
18
20
|
|
|
19
21
|
export const title = <
|
|
20
22
|
Model extends prismicT.CustomTypeModelTitleField = prismicT.CustomTypeModelTitleField,
|
|
21
|
-
State extends prismicT.FieldState =
|
|
23
|
+
State extends prismicT.FieldState = "filled",
|
|
22
24
|
>(
|
|
23
|
-
config: MockTitleValueConfig<Model, State
|
|
25
|
+
config: MockTitleValueConfig<Model, State>,
|
|
24
26
|
): MockTitleValue<State> => {
|
|
27
|
+
const faker = config.faker || createFaker(config.seed);
|
|
28
|
+
|
|
25
29
|
if (config.state === "empty") {
|
|
26
30
|
return [] as MockTitleValue<State>;
|
|
27
31
|
} else {
|
|
28
32
|
return [
|
|
29
33
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
30
34
|
heading({
|
|
31
|
-
|
|
35
|
+
faker,
|
|
32
36
|
model: config.model,
|
|
33
37
|
pattern: config.pattern,
|
|
34
38
|
})!,
|
package/src/value/uid.ts
CHANGED
|
@@ -9,10 +9,12 @@ export type MockUIDValueConfig<
|
|
|
9
9
|
Model extends prismicT.CustomTypeModelUIDField = prismicT.CustomTypeModelUIDField,
|
|
10
10
|
> = MockValueConfig<Model>;
|
|
11
11
|
|
|
12
|
-
export const uid =
|
|
13
|
-
|
|
12
|
+
export const uid = <
|
|
13
|
+
Model extends prismicT.CustomTypeModelUIDField = prismicT.CustomTypeModelUIDField,
|
|
14
|
+
>(
|
|
15
|
+
config: MockUIDValueConfig<Model>,
|
|
14
16
|
): NonNullable<prismicT.PrismicDocument["uid"]> => {
|
|
15
|
-
const faker = createFaker(config.seed);
|
|
17
|
+
const faker = config.faker || createFaker(config.seed);
|
|
16
18
|
|
|
17
19
|
return changeCase.snakeCase(faker.words(faker.range(1, 3)));
|
|
18
20
|
};
|