import { test, expect } from 'vitest'
import * as z from '../index'
import { ZodError } from '../error'
const stringSchema = z.string()

test('safeparse fail', () => {
  const safe = stringSchema.safeParse(12)
  expect(safe.success).toEqual(false)
  expect(safe.error).toBeInstanceOf(ZodError)
})

test('safeparse pass', () => {
  const safe = stringSchema.safeParse('12')
  expect(safe.success).toEqual(true)
  expect(safe.data).toEqual('12')
})

test('safeparse unexpected error', () => {
  expect(() =>
    stringSchema
      .refine((data) => {
        throw new Error(data)
      })
      .safeParse('12')
  ).toThrow()
})
