Skip to content

Commit 961ce2d

Browse files
Merge pull request #242 from Wooshaah/feature/zod-mock/support-readonly-schema
feat(zod-mock): add support for readonly fields
2 parents f2ea719 + 486eb3a commit 961ce2d

File tree

2 files changed

+10
-0
lines changed

2 files changed

+10
-0
lines changed

packages/zod-mock/src/lib/zod-mock.spec.ts

+2
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ describe('zod-mock', () => {
3232
z.object({ discriminator: z.literal('a'), a: z.boolean() }),
3333
z.object({ discriminator: z.literal('b'), b: z.string() }),
3434
]),
35+
readonly: z.boolean().readonly(),
3536
});
3637

3738
const mockData = generateMock(schema);
@@ -58,6 +59,7 @@ describe('zod-mock', () => {
5859
expect(mockData.set).toBeTruthy();
5960
expect(mockData.map).toBeTruthy();
6061
expect(mockData.discriminatedUnion).toBeTruthy();
62+
expect(typeof mockData.readonly).toEqual('boolean');
6163
});
6264

6365
it('should generate mock data of the appropriate type when the field names overlap Faker properties that are not valid functions', () => {

packages/zod-mock/src/lib/zod-mock.ts

+8
Original file line numberDiff line numberDiff line change
@@ -536,6 +536,13 @@ function parseLazy(
536536
return generateMock(zodRef._def.getter(), options);
537537
}
538538

539+
function parseReadonly(
540+
zodRef: z.ZodReadonly<ZodTypeAny>,
541+
options?: GenerateMockOptions
542+
) {
543+
return generateMock(zodRef._def.innerType, options);
544+
}
545+
539546
const workerMap = {
540547
ZodObject: parseObject,
541548
ZodRecord: parseRecord,
@@ -565,6 +572,7 @@ const workerMap = {
565572
ZodBranded: parseBranded,
566573
ZodNull: () => null,
567574
ZodNaN: () => NaN,
575+
ZodReadonly: parseReadonly,
568576
};
569577

570578
type WorkerKeys = keyof typeof workerMap;

0 commit comments

Comments
 (0)