|
|
@@ -0,0 +1,44 @@
|
|
|
+import { zz } from '../../../zodHelpers'
|
|
|
+import { describe, expect, it } from 'vitest'
|
|
|
+import mongodb from 'mongodb'
|
|
|
+
|
|
|
+const { ObjectId } = mongodb
|
|
|
+
|
|
|
+describe('zodHelpers', () => {
|
|
|
+ describe('objectId', () => {
|
|
|
+ it('fails to parse when provided with an invalid ObjectId', () => {
|
|
|
+ const parsed = zz.objectId().safeParse('aa')
|
|
|
+ expect(parsed.success).toBe(false)
|
|
|
+ expect(parsed.error?.issues).toHaveLength(1)
|
|
|
+ expect(parsed.error?.issues).toMatchObject([
|
|
|
+ expect.objectContaining({
|
|
|
+ message: 'invalid Mongo ObjectId',
|
|
|
+ }),
|
|
|
+ ])
|
|
|
+ })
|
|
|
+
|
|
|
+ it('parses successfully when provided with a valid ObjectId', () => {
|
|
|
+ const parsed = zz.objectId().safeParse('507f1f77bcf86cd799439011')
|
|
|
+ expect(parsed.success).toBe(true)
|
|
|
+ expect(parsed.data).toBe('507f1f77bcf86cd799439011')
|
|
|
+ })
|
|
|
+ })
|
|
|
+ describe('coercedObjectId', () => {
|
|
|
+ it('fails to parse when provided with an invalid ObjectId', () => {
|
|
|
+ const parsed = zz.coercedObjectId().safeParse('aa')
|
|
|
+ expect(parsed.success).toBe(false)
|
|
|
+ expect(parsed.error?.issues).toHaveLength(1)
|
|
|
+ expect(parsed.error?.issues).toMatchObject([
|
|
|
+ expect.objectContaining({
|
|
|
+ message: 'invalid Mongo ObjectId',
|
|
|
+ }),
|
|
|
+ ])
|
|
|
+ })
|
|
|
+ it('parses to an ObjectId when provided with a valid ObjectId string', () => {
|
|
|
+ const parsed = zz.coercedObjectId().safeParse('507f1f77bcf86cd799439011')
|
|
|
+ expect(parsed.success).toBe(true)
|
|
|
+ expect(parsed.data).toBeInstanceOf(ObjectId)
|
|
|
+ expect(parsed.data?.toString()).toBe('507f1f77bcf86cd799439011')
|
|
|
+ })
|
|
|
+ })
|
|
|
+})
|