admin/validation/withdrawal.test.ts
alisaza e1eaf5eff5 feat: initial ghabilee-admin backoffice app
Extract admin dashboard from ghabilee-frontend2 into a dedicated Next.js
app for backoffice.ghabilee.ir (no SEO indexing / Clarity).
2026-09-05 13:12:59 +03:30

27 lines
1.2 KiB
TypeScript

import { describe, expect, it } from 'vitest'
import { CreateBankAccountFormValidation, CreateWithdrawalRequestFormValidation } from '@/validation/withdrawal'
describe('financial form validation', () => {
it('normalizes and validates Iranian IBAN values', () => {
const result = CreateBankAccountFormValidation.parse({
ownerType: 'organizer',
accountHolder: 'علی رضایی',
iban: 'ir12 3456 7890 1234 5678 9012 34',
bankName: 'بانک',
})
expect(result.iban).toBe('IR123456789012345678901234')
})
it.each(['IR123', 'DE123456789012345678901234', 'IR12345678901234567890123A'])('rejects an invalid IBAN: %s', (iban) => {
expect(CreateBankAccountFormValidation.safeParse({ ownerType: 'organizer', accountHolder: 'علی رضایی', iban }).success).toBe(false)
})
it('accepts only positive integer withdrawal amounts', () => {
expect(CreateWithdrawalRequestFormValidation.safeParse({ bankAccountId: 'bank-1', amount: '100000' }).success).toBe(true)
expect(CreateWithdrawalRequestFormValidation.safeParse({ bankAccountId: 'bank-1', amount: '0' }).success).toBe(false)
expect(CreateWithdrawalRequestFormValidation.safeParse({ bankAccountId: 'bank-1', amount: '12.5' }).success).toBe(false)
})
})