@prismicio/mock 0.0.10 → 0.1.0
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 -14
- 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 +63 -21
- 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
package/src/lib/valueForModel.ts
CHANGED
|
@@ -1,27 +1,35 @@
|
|
|
1
1
|
import * as prismicT from "@prismicio/types";
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
MockValueConfigForModel,
|
|
6
|
-
ModelValue,
|
|
7
|
-
SetRequired,
|
|
8
|
-
} from "../types";
|
|
3
|
+
import { MockValueConfigForModel, ModelValue, Seed } from "../types";
|
|
4
|
+
import * as value from "../value";
|
|
9
5
|
|
|
10
|
-
|
|
11
|
-
config?: Omit<MockValueConfigForModel<Model>, "seed" | "model">;
|
|
12
|
-
} & SetRequired<MockValueConfig<Model>, "model">;
|
|
6
|
+
import { createFaker, Faker } from "./createFaker";
|
|
13
7
|
|
|
14
|
-
|
|
8
|
+
type ValueForModelConfig<Model extends prismicT.CustomTypeModelField> = {
|
|
9
|
+
model: Model;
|
|
10
|
+
config?: Omit<MockValueConfigForModel<Model>, "faker" | "seed" | "model">;
|
|
11
|
+
} & (
|
|
12
|
+
| {
|
|
13
|
+
seed: Seed;
|
|
14
|
+
faker?: never;
|
|
15
|
+
}
|
|
16
|
+
| {
|
|
17
|
+
faker: Faker;
|
|
18
|
+
seed?: never;
|
|
19
|
+
}
|
|
20
|
+
);
|
|
15
21
|
|
|
16
22
|
export const valueForModel = <Model extends prismicT.CustomTypeModelField>(
|
|
17
23
|
config: ValueForModelConfig<Model>,
|
|
18
24
|
): ModelValue<Model> => {
|
|
25
|
+
const faker = config.faker || createFaker(config.seed);
|
|
26
|
+
|
|
19
27
|
const model = config.model;
|
|
20
28
|
|
|
21
29
|
switch (model.type) {
|
|
22
30
|
case prismicT.CustomTypeModelFieldType.Boolean: {
|
|
23
31
|
return value.boolean({
|
|
24
|
-
|
|
32
|
+
faker,
|
|
25
33
|
model,
|
|
26
34
|
...config.config,
|
|
27
35
|
}) as ModelValue<Model>;
|
|
@@ -29,17 +37,17 @@ export const valueForModel = <Model extends prismicT.CustomTypeModelField>(
|
|
|
29
37
|
|
|
30
38
|
case prismicT.CustomTypeModelFieldType.Color: {
|
|
31
39
|
return value.color({
|
|
32
|
-
|
|
40
|
+
faker,
|
|
33
41
|
model,
|
|
34
42
|
...config.config,
|
|
35
43
|
}) as ModelValue<Model>;
|
|
36
44
|
}
|
|
37
45
|
|
|
38
46
|
case prismicT.CustomTypeModelFieldType.Link: {
|
|
39
|
-
switch (model.config
|
|
47
|
+
switch (model.config?.select) {
|
|
40
48
|
case prismicT.CustomTypeModelLinkSelectType.Document: {
|
|
41
49
|
return value.contentRelationship({
|
|
42
|
-
|
|
50
|
+
faker,
|
|
43
51
|
model: model as prismicT.CustomTypeModelContentRelationshipField,
|
|
44
52
|
...config.config,
|
|
45
53
|
}) as ModelValue<Model>;
|
|
@@ -47,7 +55,7 @@ export const valueForModel = <Model extends prismicT.CustomTypeModelField>(
|
|
|
47
55
|
|
|
48
56
|
case prismicT.CustomTypeModelLinkSelectType.Media: {
|
|
49
57
|
return value.linkToMedia({
|
|
50
|
-
|
|
58
|
+
faker,
|
|
51
59
|
model: model as prismicT.CustomTypeModelLinkToMediaField,
|
|
52
60
|
...config.config,
|
|
53
61
|
}) as ModelValue<Model>;
|
|
@@ -55,7 +63,7 @@ export const valueForModel = <Model extends prismicT.CustomTypeModelField>(
|
|
|
55
63
|
|
|
56
64
|
default: {
|
|
57
65
|
return value.link({
|
|
58
|
-
|
|
66
|
+
faker,
|
|
59
67
|
model: model as prismicT.CustomTypeModelLinkField,
|
|
60
68
|
...config.config,
|
|
61
69
|
}) as ModelValue<Model>;
|
|
@@ -65,7 +73,7 @@ export const valueForModel = <Model extends prismicT.CustomTypeModelField>(
|
|
|
65
73
|
|
|
66
74
|
case prismicT.CustomTypeModelFieldType.Date: {
|
|
67
75
|
return value.date({
|
|
68
|
-
|
|
76
|
+
faker,
|
|
69
77
|
model,
|
|
70
78
|
...config.config,
|
|
71
79
|
}) as ModelValue<Model>;
|
|
@@ -73,7 +81,7 @@ export const valueForModel = <Model extends prismicT.CustomTypeModelField>(
|
|
|
73
81
|
|
|
74
82
|
case prismicT.CustomTypeModelFieldType.Embed: {
|
|
75
83
|
return value.embed({
|
|
76
|
-
|
|
84
|
+
faker,
|
|
77
85
|
model,
|
|
78
86
|
...config.config,
|
|
79
87
|
}) as ModelValue<Model>;
|
|
@@ -81,7 +89,7 @@ export const valueForModel = <Model extends prismicT.CustomTypeModelField>(
|
|
|
81
89
|
|
|
82
90
|
case prismicT.CustomTypeModelFieldType.GeoPoint: {
|
|
83
91
|
return value.geoPoint({
|
|
84
|
-
|
|
92
|
+
faker,
|
|
85
93
|
model,
|
|
86
94
|
...config.config,
|
|
87
95
|
}) as ModelValue<Model>;
|
|
@@ -89,7 +97,7 @@ export const valueForModel = <Model extends prismicT.CustomTypeModelField>(
|
|
|
89
97
|
|
|
90
98
|
case prismicT.CustomTypeModelFieldType.Image: {
|
|
91
99
|
return value.image({
|
|
92
|
-
|
|
100
|
+
faker,
|
|
93
101
|
model,
|
|
94
102
|
...config.config,
|
|
95
103
|
}) as ModelValue<Model>;
|
|
@@ -97,7 +105,7 @@ export const valueForModel = <Model extends prismicT.CustomTypeModelField>(
|
|
|
97
105
|
|
|
98
106
|
case prismicT.CustomTypeModelFieldType.Text: {
|
|
99
107
|
return value.keyText({
|
|
100
|
-
|
|
108
|
+
faker,
|
|
101
109
|
model,
|
|
102
110
|
...config.config,
|
|
103
111
|
}) as ModelValue<Model>;
|
|
@@ -105,7 +113,7 @@ export const valueForModel = <Model extends prismicT.CustomTypeModelField>(
|
|
|
105
113
|
|
|
106
114
|
case prismicT.CustomTypeModelFieldType.Number: {
|
|
107
115
|
return value.number({
|
|
108
|
-
|
|
116
|
+
faker,
|
|
109
117
|
model,
|
|
110
118
|
...config.config,
|
|
111
119
|
}) as ModelValue<Model>;
|
|
@@ -113,7 +121,7 @@ export const valueForModel = <Model extends prismicT.CustomTypeModelField>(
|
|
|
113
121
|
|
|
114
122
|
case prismicT.CustomTypeModelFieldType.Select: {
|
|
115
123
|
return value.select({
|
|
116
|
-
|
|
124
|
+
faker,
|
|
117
125
|
model,
|
|
118
126
|
...config.config,
|
|
119
127
|
}) as ModelValue<Model>;
|
|
@@ -121,7 +129,7 @@ export const valueForModel = <Model extends prismicT.CustomTypeModelField>(
|
|
|
121
129
|
|
|
122
130
|
case prismicT.CustomTypeModelFieldType.Timestamp: {
|
|
123
131
|
return value.timestamp({
|
|
124
|
-
|
|
132
|
+
faker,
|
|
125
133
|
model,
|
|
126
134
|
...config.config,
|
|
127
135
|
}) as ModelValue<Model>;
|
|
@@ -129,19 +137,21 @@ export const valueForModel = <Model extends prismicT.CustomTypeModelField>(
|
|
|
129
137
|
|
|
130
138
|
case prismicT.CustomTypeModelFieldType.StructuredText: {
|
|
131
139
|
if (
|
|
140
|
+
model.config &&
|
|
132
141
|
"single" in model.config &&
|
|
142
|
+
model.config.single &&
|
|
133
143
|
model.config.single
|
|
134
144
|
.split(",")
|
|
135
145
|
.every((element) => /heading[1-6]/.test(element.trim()))
|
|
136
146
|
) {
|
|
137
147
|
return value.title({
|
|
138
|
-
|
|
148
|
+
faker,
|
|
139
149
|
model: model as prismicT.CustomTypeModelTitleField,
|
|
140
150
|
...config.config,
|
|
141
151
|
}) as ModelValue<Model>;
|
|
142
152
|
} else {
|
|
143
153
|
return value.richText({
|
|
144
|
-
|
|
154
|
+
faker,
|
|
145
155
|
model,
|
|
146
156
|
...config.config,
|
|
147
157
|
}) as ModelValue<Model>;
|
|
@@ -150,7 +160,7 @@ export const valueForModel = <Model extends prismicT.CustomTypeModelField>(
|
|
|
150
160
|
|
|
151
161
|
case prismicT.CustomTypeModelFieldType.IntegrationFields: {
|
|
152
162
|
return value.integrationFields({
|
|
153
|
-
|
|
163
|
+
faker,
|
|
154
164
|
model,
|
|
155
165
|
...config.config,
|
|
156
166
|
}) as ModelValue<Model>;
|
|
@@ -158,7 +168,7 @@ export const valueForModel = <Model extends prismicT.CustomTypeModelField>(
|
|
|
158
168
|
|
|
159
169
|
case prismicT.CustomTypeModelFieldType.UID: {
|
|
160
170
|
return value.uid({
|
|
161
|
-
|
|
171
|
+
faker,
|
|
162
172
|
model,
|
|
163
173
|
...config.config,
|
|
164
174
|
}) as ModelValue<Model>;
|
|
@@ -166,18 +176,25 @@ export const valueForModel = <Model extends prismicT.CustomTypeModelField>(
|
|
|
166
176
|
|
|
167
177
|
case prismicT.CustomTypeModelFieldType.Group: {
|
|
168
178
|
return value.group({
|
|
169
|
-
|
|
179
|
+
faker,
|
|
170
180
|
model,
|
|
171
181
|
...config.config,
|
|
172
182
|
}) as ModelValue<Model>;
|
|
173
183
|
}
|
|
174
184
|
|
|
185
|
+
case prismicT.CustomTypeModelFieldType.LegacySlices:
|
|
175
186
|
case prismicT.CustomTypeModelFieldType.Slices: {
|
|
176
187
|
return value.sliceZone({
|
|
177
|
-
|
|
188
|
+
faker,
|
|
178
189
|
model,
|
|
179
190
|
...config.config,
|
|
180
191
|
}) as ModelValue<Model>;
|
|
181
192
|
}
|
|
193
|
+
|
|
194
|
+
default: {
|
|
195
|
+
throw new Error(
|
|
196
|
+
`The "${model.type}" field type is not supported in @prismicio/mock.`,
|
|
197
|
+
);
|
|
198
|
+
}
|
|
182
199
|
}
|
|
183
200
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as prismicT from "@prismicio/types";
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { ModelValue, ModelValueMap, Seed } from "../types";
|
|
4
4
|
import {
|
|
5
5
|
MockBooleanValueConfig,
|
|
6
6
|
MockColorValueConfig,
|
|
@@ -24,6 +24,7 @@ import {
|
|
|
24
24
|
} from "../value";
|
|
25
25
|
|
|
26
26
|
import { valueForModel } from "./valueForModel";
|
|
27
|
+
import { createFaker, Faker } from "./createFaker";
|
|
27
28
|
|
|
28
29
|
const getValueConfigType = <Model extends prismicT.CustomTypeModelField>(
|
|
29
30
|
model: Model,
|
|
@@ -51,7 +52,7 @@ const getValueConfigType = <Model extends prismicT.CustomTypeModelField>(
|
|
|
51
52
|
return "image";
|
|
52
53
|
|
|
53
54
|
case prismicT.CustomTypeModelFieldType.Link: {
|
|
54
|
-
switch (model.config
|
|
55
|
+
switch (model.config?.select) {
|
|
55
56
|
case prismicT.CustomTypeModelLinkSelectType.Document:
|
|
56
57
|
return "contentRelationship";
|
|
57
58
|
case prismicT.CustomTypeModelLinkSelectType.Media:
|
|
@@ -69,7 +70,9 @@ const getValueConfigType = <Model extends prismicT.CustomTypeModelField>(
|
|
|
69
70
|
|
|
70
71
|
case prismicT.CustomTypeModelFieldType.StructuredText: {
|
|
71
72
|
if (
|
|
73
|
+
model.config &&
|
|
72
74
|
"single" in model.config &&
|
|
75
|
+
model.config.single &&
|
|
73
76
|
model.config.single
|
|
74
77
|
.split(",")
|
|
75
78
|
.every((element) => /heading{1,6}/.test(element.trim()))
|
|
@@ -94,6 +97,12 @@ const getValueConfigType = <Model extends prismicT.CustomTypeModelField>(
|
|
|
94
97
|
|
|
95
98
|
case prismicT.CustomTypeModelFieldType.Slices:
|
|
96
99
|
return "sliceZone";
|
|
100
|
+
|
|
101
|
+
default: {
|
|
102
|
+
throw new Error(
|
|
103
|
+
`The "${model.type}" field type is not supported in @prismicio/mock.`,
|
|
104
|
+
);
|
|
105
|
+
}
|
|
97
106
|
}
|
|
98
107
|
};
|
|
99
108
|
|
|
@@ -124,13 +133,24 @@ type ValueForModelMapConfig<
|
|
|
124
133
|
> = {
|
|
125
134
|
map: ModelMap;
|
|
126
135
|
configs?: ValueForModelMapConfigs;
|
|
127
|
-
} &
|
|
136
|
+
} & (
|
|
137
|
+
| {
|
|
138
|
+
seed: Seed;
|
|
139
|
+
faker?: never;
|
|
140
|
+
}
|
|
141
|
+
| {
|
|
142
|
+
faker: Faker;
|
|
143
|
+
seed?: never;
|
|
144
|
+
}
|
|
145
|
+
);
|
|
128
146
|
|
|
129
147
|
export const valueForModelMap = <
|
|
130
148
|
ModelMap extends Record<string, prismicT.CustomTypeModelField>,
|
|
131
149
|
>(
|
|
132
150
|
config: ValueForModelMapConfig<ModelMap>,
|
|
133
151
|
): ModelValueMap<ModelMap> => {
|
|
152
|
+
const faker = config.faker || createFaker(config.seed);
|
|
153
|
+
|
|
134
154
|
const result = {} as ModelValueMap<ModelMap>;
|
|
135
155
|
|
|
136
156
|
for (const fieldId in config.map) {
|
|
@@ -139,7 +159,7 @@ export const valueForModelMap = <
|
|
|
139
159
|
const fieldConfig = config.configs?.[fieldConfigType];
|
|
140
160
|
|
|
141
161
|
result[fieldId] = valueForModel({
|
|
142
|
-
|
|
162
|
+
faker,
|
|
143
163
|
model: fieldModel as prismicT.CustomTypeModelField,
|
|
144
164
|
config: fieldConfig,
|
|
145
165
|
}) as ModelValue<typeof fieldModel>;
|
package/src/model/boolean.ts
CHANGED
|
@@ -7,10 +7,10 @@ import { MockModelConfig } from "../types";
|
|
|
7
7
|
|
|
8
8
|
export type MockBooleanModelConfig = MockModelConfig;
|
|
9
9
|
|
|
10
|
-
export
|
|
11
|
-
config: MockBooleanModelConfig
|
|
12
|
-
): prismicT.CustomTypeModelBooleanField
|
|
13
|
-
const faker = createFaker(config.seed);
|
|
10
|
+
export function boolean(
|
|
11
|
+
config: MockBooleanModelConfig,
|
|
12
|
+
): prismicT.CustomTypeModelBooleanField {
|
|
13
|
+
const faker = config.faker || createFaker(config.seed);
|
|
14
14
|
|
|
15
15
|
return {
|
|
16
16
|
type: prismicT.CustomTypeModelFieldType.Boolean,
|
|
@@ -18,4 +18,4 @@ export const boolean = (
|
|
|
18
18
|
label: changeCase.capitalCase(faker.word()),
|
|
19
19
|
},
|
|
20
20
|
};
|
|
21
|
-
}
|
|
21
|
+
}
|
|
@@ -42,9 +42,9 @@ const mockModelFns = {
|
|
|
42
42
|
export type BuildMockGroupFieldMapConfig = MockModelConfig;
|
|
43
43
|
|
|
44
44
|
export const buildMockGroupFieldMap = (
|
|
45
|
-
config: BuildMockGroupFieldMapConfig
|
|
45
|
+
config: BuildMockGroupFieldMapConfig,
|
|
46
46
|
): GroupFieldModelMap => {
|
|
47
|
-
const faker = createFaker(config.seed);
|
|
47
|
+
const faker = config.faker || createFaker(config.seed);
|
|
48
48
|
|
|
49
49
|
const fields: GroupFieldModelMap = {};
|
|
50
50
|
|
|
@@ -53,12 +53,12 @@ export const buildMockGroupFieldMap = (
|
|
|
53
53
|
);
|
|
54
54
|
|
|
55
55
|
for (const fieldType of fieldTypes) {
|
|
56
|
-
const fieldId = generateFieldId({
|
|
56
|
+
const fieldId = generateFieldId({ faker });
|
|
57
57
|
const mockModelFn = mockModelFns[fieldType] as (
|
|
58
58
|
config: MockModelConfig,
|
|
59
59
|
) => ValueOf<GroupFieldModelMap>;
|
|
60
60
|
|
|
61
|
-
fields[fieldId] = mockModelFn({
|
|
61
|
+
fields[fieldId] = mockModelFn({ faker });
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
return fields;
|
package/src/model/color.ts
CHANGED
|
@@ -8,9 +8,9 @@ import { MockModelConfig } from "../types";
|
|
|
8
8
|
export type MockColorModelConfig = MockModelConfig;
|
|
9
9
|
|
|
10
10
|
export const color = (
|
|
11
|
-
config: MockColorModelConfig
|
|
11
|
+
config: MockColorModelConfig,
|
|
12
12
|
): prismicT.CustomTypeModelColorField => {
|
|
13
|
-
const faker = createFaker(config.seed);
|
|
13
|
+
const faker = config.faker || createFaker(config.seed);
|
|
14
14
|
|
|
15
15
|
return {
|
|
16
16
|
type: prismicT.CustomTypeModelFieldType.Color,
|
|
@@ -17,9 +17,9 @@ export const contentRelationship = <
|
|
|
17
17
|
CustomTypeIDs extends string,
|
|
18
18
|
Tags extends string,
|
|
19
19
|
>(
|
|
20
|
-
config: MockContentRelationshipModelConfig<CustomTypeIDs, Tags
|
|
20
|
+
config: MockContentRelationshipModelConfig<CustomTypeIDs, Tags>,
|
|
21
21
|
): prismicT.CustomTypeModelContentRelationshipField<CustomTypeIDs, Tags> => {
|
|
22
|
-
const faker = createFaker(config.seed);
|
|
22
|
+
const faker = config.faker || createFaker(config.seed);
|
|
23
23
|
|
|
24
24
|
return {
|
|
25
25
|
type: prismicT.CustomTypeModelFieldType.Link,
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
import * as prismicT from "@prismicio/types";
|
|
2
|
+
|
|
3
|
+
import { createFaker, Faker } from "../lib/createFaker";
|
|
4
|
+
|
|
5
|
+
import { GroupFieldModelMap, Seed, WithoutFakerConfig } from "../types";
|
|
6
|
+
|
|
7
|
+
import { boolean, MockBooleanModelConfig } from "./boolean";
|
|
8
|
+
import {
|
|
9
|
+
buildMockGroupFieldMap,
|
|
10
|
+
BuildMockGroupFieldMapConfig,
|
|
11
|
+
} from "./buildMockGroupFieldMap";
|
|
12
|
+
import { color, MockColorModelConfig } from "./color";
|
|
13
|
+
import {
|
|
14
|
+
contentRelationship,
|
|
15
|
+
MockContentRelationshipModelConfig,
|
|
16
|
+
} from "./contentRelationship";
|
|
17
|
+
import { customType, MockCustomTypeModelConfig } from "./customType";
|
|
18
|
+
import { date, MockDateModelConfig } from "./date";
|
|
19
|
+
import { embed, MockEmbedModelConfig } from "./embed";
|
|
20
|
+
import { geoPoint, MockGeoPointModelConfig } from "./geoPoint";
|
|
21
|
+
import { group, MockGroupModelConfig } from "./group";
|
|
22
|
+
import { image, MockImageModelConfig } from "./image";
|
|
23
|
+
import {
|
|
24
|
+
integrationFields,
|
|
25
|
+
MockIntegrationFieldsModelConfig,
|
|
26
|
+
} from "./integrationFields";
|
|
27
|
+
import { keyText, MockKeyTextModelConfig } from "./keyText";
|
|
28
|
+
import { link, MockLinkModelConfig } from "./link";
|
|
29
|
+
import { linkToMedia, MockLinkToMediaModelConfig } from "./linkToMedia";
|
|
30
|
+
import { number, MockNumberModelConfig } from "./number";
|
|
31
|
+
import { richText, MockRichTextModelConfig } from "./richText";
|
|
32
|
+
import { select, MockSelectModelConfig } from "./select";
|
|
33
|
+
import { sharedSlice, MockSharedSliceModelConfig } from "./sharedSlice";
|
|
34
|
+
import { sharedSliceChoice } from "./sharedSliceChoice";
|
|
35
|
+
import {
|
|
36
|
+
sharedSliceVariation,
|
|
37
|
+
MockSharedSliceVariationModelConfig,
|
|
38
|
+
} from "./sharedSliceVariation";
|
|
39
|
+
import { slice, MockSliceModelConfig } from "./slice";
|
|
40
|
+
import { sliceZone, MockSliceZoneModelConfig } from "./sliceZone";
|
|
41
|
+
import { timestamp, MockTimestampModelConfig } from "./timestamp";
|
|
42
|
+
import { title, MockTitleModelConfig } from "./title";
|
|
43
|
+
import { uid, MockUIDModelConfig } from "./uid";
|
|
44
|
+
|
|
45
|
+
export const createModelMockFactory = (
|
|
46
|
+
...args: ConstructorParameters<typeof ModelMockFactory>
|
|
47
|
+
): ModelMockFactory => {
|
|
48
|
+
return new ModelMockFactory(...args);
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
type ModelMockFactoryConfig =
|
|
52
|
+
| {
|
|
53
|
+
seed: Seed;
|
|
54
|
+
}
|
|
55
|
+
| {
|
|
56
|
+
faker: Faker;
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
export class ModelMockFactory {
|
|
60
|
+
private faker: Faker;
|
|
61
|
+
|
|
62
|
+
constructor(config: ModelMockFactoryConfig) {
|
|
63
|
+
this.faker = "faker" in config ? config.faker : createFaker(config.seed);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
get seed() {
|
|
67
|
+
return this.faker.seed;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
buildMockGroupFieldMap(
|
|
71
|
+
config?: WithoutFakerConfig<BuildMockGroupFieldMapConfig>,
|
|
72
|
+
) {
|
|
73
|
+
return buildMockGroupFieldMap({ ...config, faker: this.faker });
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
boolean(config?: WithoutFakerConfig<MockBooleanModelConfig>) {
|
|
77
|
+
return boolean({ ...config, faker: this.faker });
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
color(config?: WithoutFakerConfig<MockColorModelConfig>) {
|
|
81
|
+
return color({ ...config, faker: this.faker });
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
contentRelationship<CustomTypeIDs extends string, Tags extends string>(
|
|
85
|
+
config?: WithoutFakerConfig<
|
|
86
|
+
MockContentRelationshipModelConfig<CustomTypeIDs, Tags>
|
|
87
|
+
>,
|
|
88
|
+
) {
|
|
89
|
+
return contentRelationship({ ...config, faker: this.faker });
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
customType<
|
|
93
|
+
Definition extends
|
|
94
|
+
| prismicT.CustomTypeModelTab
|
|
95
|
+
| prismicT.CustomTypeModelDefinition,
|
|
96
|
+
>(config?: WithoutFakerConfig<MockCustomTypeModelConfig<Definition>>) {
|
|
97
|
+
return customType({ ...config, faker: this.faker });
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
date(config?: WithoutFakerConfig<MockDateModelConfig>) {
|
|
101
|
+
return date({ ...config, faker: this.faker });
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
embed(config?: WithoutFakerConfig<MockEmbedModelConfig>) {
|
|
105
|
+
return embed({ ...config, faker: this.faker });
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
geoPoint(config?: WithoutFakerConfig<MockGeoPointModelConfig>) {
|
|
109
|
+
return geoPoint({ ...config, faker: this.faker });
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
group<Fields extends GroupFieldModelMap>(
|
|
113
|
+
config?: WithoutFakerConfig<MockGroupModelConfig<Fields>>,
|
|
114
|
+
) {
|
|
115
|
+
return group({ ...config, faker: this.faker });
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
image<ThumbnailNames extends string = string>(
|
|
119
|
+
config?: WithoutFakerConfig<MockImageModelConfig<ThumbnailNames>>,
|
|
120
|
+
) {
|
|
121
|
+
return image({ ...config, faker: this.faker });
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
integrationFields(
|
|
125
|
+
config?: WithoutFakerConfig<MockIntegrationFieldsModelConfig>,
|
|
126
|
+
) {
|
|
127
|
+
return integrationFields({ ...config, faker: this.faker });
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
keyText(config?: WithoutFakerConfig<MockKeyTextModelConfig>) {
|
|
131
|
+
return keyText({ ...config, faker: this.faker });
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
link<AllowTargetBlank extends boolean = boolean>(
|
|
135
|
+
config?: WithoutFakerConfig<MockLinkModelConfig<AllowTargetBlank>>,
|
|
136
|
+
) {
|
|
137
|
+
return link({ ...config, faker: this.faker });
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
linkToMedia(config?: WithoutFakerConfig<MockLinkToMediaModelConfig>) {
|
|
141
|
+
return linkToMedia({ ...config, faker: this.faker });
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
number(config?: WithoutFakerConfig<MockNumberModelConfig>) {
|
|
145
|
+
return number({ ...config, faker: this.faker });
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
richText<WithMultipleBlocks extends boolean = boolean>(
|
|
149
|
+
config?: WithoutFakerConfig<MockRichTextModelConfig<WithMultipleBlocks>>,
|
|
150
|
+
) {
|
|
151
|
+
return richText({ ...config, faker: this.faker });
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
select<Option extends string, DefaultOption extends Option>(
|
|
155
|
+
config?: WithoutFakerConfig<MockSelectModelConfig<Option, DefaultOption>>,
|
|
156
|
+
) {
|
|
157
|
+
return select({ ...config, faker: this.faker });
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
sharedSlice<Variation extends prismicT.SharedSliceModelVariation>(
|
|
161
|
+
config?: WithoutFakerConfig<MockSharedSliceModelConfig<Variation>>,
|
|
162
|
+
) {
|
|
163
|
+
return sharedSlice({ ...config, faker: this.faker });
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
sharedSliceChoice() {
|
|
167
|
+
return sharedSliceChoice();
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
sharedSliceVariation<
|
|
171
|
+
ID extends string,
|
|
172
|
+
PrimaryFields extends GroupFieldModelMap,
|
|
173
|
+
ItemsFields extends GroupFieldModelMap,
|
|
174
|
+
>(
|
|
175
|
+
config?: WithoutFakerConfig<
|
|
176
|
+
MockSharedSliceVariationModelConfig<ID, PrimaryFields, ItemsFields>
|
|
177
|
+
>,
|
|
178
|
+
) {
|
|
179
|
+
return sharedSliceVariation({ ...config, faker: this.faker });
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
slice<
|
|
183
|
+
NonRepeatFields extends GroupFieldModelMap,
|
|
184
|
+
RepeatFields extends GroupFieldModelMap,
|
|
185
|
+
>(
|
|
186
|
+
config?: WithoutFakerConfig<
|
|
187
|
+
MockSliceModelConfig<NonRepeatFields, RepeatFields>
|
|
188
|
+
>,
|
|
189
|
+
) {
|
|
190
|
+
return slice({ ...config, faker: this.faker });
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
sliceZone<
|
|
194
|
+
Slices extends Record<
|
|
195
|
+
string,
|
|
196
|
+
prismicT.CustomTypeModelSlice | prismicT.CustomTypeModelSharedSlice
|
|
197
|
+
>,
|
|
198
|
+
>(config?: WithoutFakerConfig<MockSliceZoneModelConfig<Slices>>) {
|
|
199
|
+
return sliceZone({ ...config, faker: this.faker });
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
timestamp(config?: WithoutFakerConfig<MockTimestampModelConfig>) {
|
|
203
|
+
return timestamp({ ...config, faker: this.faker });
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
title(config?: WithoutFakerConfig<MockTitleModelConfig>) {
|
|
207
|
+
return title({ ...config, faker: this.faker });
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
uid(config?: WithoutFakerConfig<MockUIDModelConfig>) {
|
|
211
|
+
return uid({ ...config, faker: this.faker });
|
|
212
|
+
}
|
|
213
|
+
}
|
package/src/model/customType.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { createFaker } from "../lib/createFaker";
|
|
|
5
5
|
|
|
6
6
|
import { MockModelConfig } from "../types";
|
|
7
7
|
|
|
8
|
-
type MockCustomTypeModelConfig<
|
|
8
|
+
export type MockCustomTypeModelConfig<
|
|
9
9
|
Definition extends
|
|
10
10
|
| prismicT.CustomTypeModelTab
|
|
11
11
|
| prismicT.CustomTypeModelDefinition =
|
|
@@ -43,9 +43,9 @@ export const customType = <
|
|
|
43
43
|
| prismicT.CustomTypeModelTab
|
|
44
44
|
| prismicT.CustomTypeModelDefinition,
|
|
45
45
|
>(
|
|
46
|
-
config: MockCustomTypeModelConfig<Definition
|
|
46
|
+
config: MockCustomTypeModelConfig<Definition>,
|
|
47
47
|
): MockCustomTypeModel<Definition> => {
|
|
48
|
-
const faker = createFaker(config.seed);
|
|
48
|
+
const faker = config.faker || createFaker(config.seed);
|
|
49
49
|
|
|
50
50
|
let label: string =
|
|
51
51
|
config.label || changeCase.capitalCase(faker.words(faker.range(1, 2)));
|
package/src/model/date.ts
CHANGED
|
@@ -8,9 +8,9 @@ import { MockModelConfig } from "../types";
|
|
|
8
8
|
export type MockDateModelConfig = MockModelConfig;
|
|
9
9
|
|
|
10
10
|
export const date = (
|
|
11
|
-
config: MockDateModelConfig
|
|
11
|
+
config: MockDateModelConfig,
|
|
12
12
|
): prismicT.CustomTypeModelDateField => {
|
|
13
|
-
const faker = createFaker(config.seed);
|
|
13
|
+
const faker = config.faker || createFaker(config.seed);
|
|
14
14
|
|
|
15
15
|
return {
|
|
16
16
|
type: prismicT.CustomTypeModelFieldType.Date,
|
package/src/model/embed.ts
CHANGED
|
@@ -8,9 +8,9 @@ import { MockModelConfig } from "../types";
|
|
|
8
8
|
export type MockEmbedModelConfig = MockModelConfig;
|
|
9
9
|
|
|
10
10
|
export const embed = (
|
|
11
|
-
config: MockEmbedModelConfig
|
|
11
|
+
config: MockEmbedModelConfig,
|
|
12
12
|
): prismicT.CustomTypeModelEmbedField => {
|
|
13
|
-
const faker = createFaker(config.seed);
|
|
13
|
+
const faker = config.faker || createFaker(config.seed);
|
|
14
14
|
|
|
15
15
|
return {
|
|
16
16
|
type: prismicT.CustomTypeModelFieldType.Embed,
|
package/src/model/geoPoint.ts
CHANGED
|
@@ -8,9 +8,9 @@ import { MockModelConfig } from "../types";
|
|
|
8
8
|
export type MockGeoPointModelConfig = MockModelConfig;
|
|
9
9
|
|
|
10
10
|
export const geoPoint = (
|
|
11
|
-
config: MockGeoPointModelConfig
|
|
11
|
+
config: MockGeoPointModelConfig,
|
|
12
12
|
): prismicT.CustomTypeModelGeoPointField => {
|
|
13
|
-
const faker = createFaker(config.seed);
|
|
13
|
+
const faker = config.faker || createFaker(config.seed);
|
|
14
14
|
|
|
15
15
|
return {
|
|
16
16
|
type: prismicT.CustomTypeModelFieldType.GeoPoint,
|
package/src/model/group.ts
CHANGED
|
@@ -5,14 +5,14 @@ import { createFaker } from "../lib/createFaker";
|
|
|
5
5
|
|
|
6
6
|
import { GroupFieldModelMap, MockModelConfig } from "../types";
|
|
7
7
|
|
|
8
|
-
type MockGroupModelConfig<Fields extends GroupFieldModelMap> = {
|
|
8
|
+
export type MockGroupModelConfig<Fields extends GroupFieldModelMap> = {
|
|
9
9
|
fields?: Fields;
|
|
10
10
|
} & MockModelConfig;
|
|
11
11
|
|
|
12
|
-
export
|
|
13
|
-
config: MockGroupModelConfig<Fields
|
|
14
|
-
): prismicT.CustomTypeModelGroupField<Fields>
|
|
15
|
-
const faker = createFaker(config.seed);
|
|
12
|
+
export function group<Fields extends GroupFieldModelMap>(
|
|
13
|
+
config: MockGroupModelConfig<Fields>,
|
|
14
|
+
): prismicT.CustomTypeModelGroupField<Fields> {
|
|
15
|
+
const faker = config.faker || createFaker(config.seed);
|
|
16
16
|
|
|
17
17
|
return {
|
|
18
18
|
type: prismicT.CustomTypeModelFieldType.Group,
|
|
@@ -21,4 +21,4 @@ export const group = <Fields extends GroupFieldModelMap>(
|
|
|
21
21
|
fields: config.fields || ({} as Fields),
|
|
22
22
|
},
|
|
23
23
|
};
|
|
24
|
-
}
|
|
24
|
+
}
|