1- import { ZodError } from "zod" ;
1+ import { ZodError as ZodErrorV3 } from "zod" ;
2+ import { ZodError , z } from "zod/v4" ;
23import { faker } from "@faker-js/faker" ;
3- import { IDSchema , RGBHexSchema , TimezoneSchema } from "@core/types/type.utils" ;
4+ import {
5+ IDSchema ,
6+ IDSchemaV4 ,
7+ RGBHexSchema ,
8+ TimezoneSchema ,
9+ } from "@core/types/type.utils" ;
410
511describe ( "IDSchema" , ( ) => {
612 it ( "validates a correct ObjectId string" , ( ) => {
@@ -13,11 +19,30 @@ describe("IDSchema", () => {
1319 const invalidId = faker . string . ulid ( ) ;
1420 const result = IDSchema . safeParse ( invalidId ) ;
1521
22+ expect ( result . success ) . toBe ( false ) ;
23+ expect ( result . error ) . toBeInstanceOf ( ZodErrorV3 ) ;
24+ expect ( result . error ?. errors ) . toEqual (
25+ expect . arrayContaining ( [
26+ expect . objectContaining ( { message : "Invalid id" } ) ,
27+ ] ) ,
28+ ) ;
29+ } ) ;
30+ } ) ;
31+
32+ describe ( "IDSchemaV4" , ( ) => {
33+ it ( "validates a correct ObjectId string" , ( ) => {
34+ const validId = faker . database . mongodbObjectId ( ) ;
35+
36+ expect ( IDSchemaV4 . safeParse ( validId ) . success ) . toBe ( true ) ;
37+ } ) ;
38+
39+ it ( "rejects an invalid ObjectId string" , ( ) => {
40+ const invalidId = faker . string . ulid ( ) ;
41+ const result = IDSchemaV4 . safeParse ( invalidId ) ;
42+
1643 expect ( result . success ) . toBe ( false ) ;
1744 expect ( result . error ) . toBeInstanceOf ( ZodError ) ;
18- expect ( result . error ?. errors ) . toEqual ( [
19- { message : "Invalid id" , path : [ ] , code : "custom" } ,
20- ] ) ;
45+ expect ( z . treeifyError ( result . error ! ) . errors ) . toEqual ( [ "Invalid id" ] ) ;
2146 } ) ;
2247} ) ;
2348
@@ -34,9 +59,7 @@ describe("TimezoneSchema", () => {
3459
3560 expect ( result . success ) . toBe ( false ) ;
3661 expect ( result . error ) . toBeInstanceOf ( ZodError ) ;
37- expect ( result . error ?. errors ) . toEqual ( [
38- { message : "Invalid timezone" , path : [ ] , code : "custom" } ,
39- ] ) ;
62+ expect ( z . treeifyError ( result . error ! ) . errors ) . toEqual ( [ "Invalid timezone" ] ) ;
4063 } ) ;
4164
4265 describe ( "RGBHexSchema" , ( ) => {
@@ -58,13 +81,8 @@ describe("TimezoneSchema", () => {
5881
5982 expect ( result . success ) . toBe ( false ) ;
6083 expect ( result . error ) . toBeInstanceOf ( ZodError ) ;
61- expect ( result . error ?. errors ) . toEqual ( [
62- {
63- message : "Invalid color. Must be a 7-character hex color code." ,
64- path : [ ] ,
65- code : "invalid_string" ,
66- validation : "regex" ,
67- } ,
84+ expect ( z . treeifyError ( result . error ! ) . errors ) . toEqual ( [
85+ "Invalid color. Must be a 7-character hex color code." ,
6886 ] ) ;
6987 } ) ;
7088
@@ -74,13 +92,8 @@ describe("TimezoneSchema", () => {
7492
7593 expect ( result . success ) . toBe ( false ) ;
7694 expect ( result . error ) . toBeInstanceOf ( ZodError ) ;
77- expect ( result . error ?. errors ) . toEqual ( [
78- {
79- message : "Invalid color. Must be a 7-character hex color code." ,
80- path : [ ] ,
81- code : "invalid_string" ,
82- validation : "regex" ,
83- } ,
95+ expect ( z . treeifyError ( result . error ! ) . errors ) . toEqual ( [
96+ "Invalid color. Must be a 7-character hex color code." ,
8497 ] ) ;
8598 } ) ;
8699
@@ -90,13 +103,8 @@ describe("TimezoneSchema", () => {
90103
91104 expect ( result . success ) . toBe ( false ) ;
92105 expect ( result . error ) . toBeInstanceOf ( ZodError ) ;
93- expect ( result . error ?. errors ) . toEqual ( [
94- {
95- message : "Invalid color. Must be a 7-character hex color code." ,
96- path : [ ] ,
97- code : "invalid_string" ,
98- validation : "regex" ,
99- } ,
106+ expect ( z . treeifyError ( result . error ! ) . errors ) . toEqual ( [
107+ "Invalid color. Must be a 7-character hex color code." ,
100108 ] ) ;
101109 } ) ;
102110 } ) ;
0 commit comments