Skip to content

Commit 3bb8649

Browse files
author
Ernest
committed
fix: it should apply Object.freeze on faked data for readonly
1 parent b64107a commit 3bb8649

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

src/zod-readonly-faker.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ import { ZodTypeFaker } from './zod-type-faker'
44

55
export class ZodReadonlyFaker<T extends z.ZodReadonly<z.ZodTypeAny>> extends ZodTypeFaker<T> {
66
fake(): z.infer<T> {
7-
return fake(this.schema._def.innerType)
7+
return Object.freeze(fake(this.schema._def.innerType))
88
}
99
}

tests/zod-readonly-faker.test.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,18 @@ import * as z from 'zod'
22
import { install, fake } from '../src'
33
import { expectType, TypeEqual } from 'ts-expect'
44

5+
test('freeze', () => {
6+
const schema = z.object({ key: z.string() }).readonly()
7+
8+
install()
9+
const data = fake(schema)
10+
11+
expect(() => {
12+
// @ts-expect-error
13+
data.key = 'b'
14+
}).toThrow()
15+
})
16+
517
test('object', () => {
618
const schema = z.object({ key: z.string() }).readonly()
719

0 commit comments

Comments
 (0)