feat(validation): rename contributionTier → contributionAmount in Zod schemas
This commit is contained in:
parent
55af652263
commit
e4dade18b9
3 changed files with 49 additions and 35 deletions
|
|
@ -138,16 +138,16 @@ describe('helcimSubscriptionSchema', () => {
|
|||
it('accepts valid subscription data', () => {
|
||||
const result = helcimSubscriptionSchema.safeParse({
|
||||
customerId: '12345',
|
||||
contributionTier: '15',
|
||||
contributionAmount: 15,
|
||||
customerCode: 'CST123'
|
||||
})
|
||||
expect(result.success).toBe(true)
|
||||
})
|
||||
|
||||
it('rejects invalid contribution tier', () => {
|
||||
it('rejects negative contributionAmount', () => {
|
||||
const result = helcimSubscriptionSchema.safeParse({
|
||||
customerId: '12345',
|
||||
contributionTier: '999',
|
||||
contributionAmount: -1,
|
||||
customerCode: 'CST123'
|
||||
})
|
||||
expect(result.success).toBe(false)
|
||||
|
|
@ -156,7 +156,7 @@ describe('helcimSubscriptionSchema', () => {
|
|||
it('rejects missing customerCode', () => {
|
||||
const result = helcimSubscriptionSchema.safeParse({
|
||||
customerId: '12345',
|
||||
contributionTier: '15'
|
||||
contributionAmount: 15
|
||||
})
|
||||
expect(result.success).toBe(false)
|
||||
})
|
||||
|
|
@ -164,7 +164,7 @@ describe('helcimSubscriptionSchema', () => {
|
|||
it('accepts cadence: monthly', () => {
|
||||
const result = helcimSubscriptionSchema.safeParse({
|
||||
customerId: '12345',
|
||||
contributionTier: '15',
|
||||
contributionAmount: 15,
|
||||
customerCode: 'CST123',
|
||||
cadence: 'monthly'
|
||||
})
|
||||
|
|
@ -175,7 +175,7 @@ describe('helcimSubscriptionSchema', () => {
|
|||
it('accepts cadence: annual', () => {
|
||||
const result = helcimSubscriptionSchema.safeParse({
|
||||
customerId: '12345',
|
||||
contributionTier: '15',
|
||||
contributionAmount: 15,
|
||||
customerCode: 'CST123',
|
||||
cadence: 'annual'
|
||||
})
|
||||
|
|
@ -186,7 +186,7 @@ describe('helcimSubscriptionSchema', () => {
|
|||
it('rejects cadence: weekly', () => {
|
||||
const result = helcimSubscriptionSchema.safeParse({
|
||||
customerId: '12345',
|
||||
contributionTier: '15',
|
||||
contributionAmount: 15,
|
||||
customerCode: 'CST123',
|
||||
cadence: 'weekly'
|
||||
})
|
||||
|
|
@ -196,7 +196,7 @@ describe('helcimSubscriptionSchema', () => {
|
|||
it('defaults cadence to monthly when omitted', () => {
|
||||
const result = helcimSubscriptionSchema.safeParse({
|
||||
customerId: '12345',
|
||||
contributionTier: '15',
|
||||
contributionAmount: 15,
|
||||
customerCode: 'CST123'
|
||||
})
|
||||
expect(result.success).toBe(true)
|
||||
|
|
@ -334,19 +334,26 @@ describe('eventPaymentSchema', () => {
|
|||
// --- Member schemas ---
|
||||
|
||||
describe('updateContributionSchema', () => {
|
||||
it('accepts valid contribution tier', () => {
|
||||
const result = updateContributionSchema.safeParse({ contributionTier: '15' })
|
||||
it('accepts valid contributionAmount', () => {
|
||||
const result = updateContributionSchema.safeParse({ contributionAmount: 15 })
|
||||
expect(result.success).toBe(true)
|
||||
})
|
||||
|
||||
it('rejects invalid tier', () => {
|
||||
const result = updateContributionSchema.safeParse({ contributionTier: '100' })
|
||||
expect(result.success).toBe(false)
|
||||
it('accepts contributionAmount: 0, 7, 9999', () => {
|
||||
expect(updateContributionSchema.safeParse({ contributionAmount: 0 }).success).toBe(true)
|
||||
expect(updateContributionSchema.safeParse({ contributionAmount: 7 }).success).toBe(true)
|
||||
expect(updateContributionSchema.safeParse({ contributionAmount: 9999 }).success).toBe(true)
|
||||
})
|
||||
|
||||
it('rejects invalid contributionAmount values', () => {
|
||||
expect(updateContributionSchema.safeParse({ contributionAmount: -1 }).success).toBe(false)
|
||||
expect(updateContributionSchema.safeParse({ contributionAmount: 1.5 }).success).toBe(false)
|
||||
expect(updateContributionSchema.safeParse({ contributionAmount: '15' }).success).toBe(false)
|
||||
})
|
||||
|
||||
it('strips unknown fields', () => {
|
||||
const result = updateContributionSchema.safeParse({
|
||||
contributionTier: '15',
|
||||
contributionAmount: 15,
|
||||
role: 'admin'
|
||||
})
|
||||
expect(result.success).toBe(true)
|
||||
|
|
@ -354,24 +361,24 @@ describe('updateContributionSchema', () => {
|
|||
})
|
||||
|
||||
it('accepts cadence: monthly', () => {
|
||||
const result = updateContributionSchema.safeParse({ contributionTier: '15', cadence: 'monthly' })
|
||||
const result = updateContributionSchema.safeParse({ contributionAmount: 15, cadence: 'monthly' })
|
||||
expect(result.success).toBe(true)
|
||||
expect(result.data.cadence).toBe('monthly')
|
||||
})
|
||||
|
||||
it('accepts cadence: annual', () => {
|
||||
const result = updateContributionSchema.safeParse({ contributionTier: '15', cadence: 'annual' })
|
||||
const result = updateContributionSchema.safeParse({ contributionAmount: 15, cadence: 'annual' })
|
||||
expect(result.success).toBe(true)
|
||||
expect(result.data.cadence).toBe('annual')
|
||||
})
|
||||
|
||||
it('rejects cadence: weekly', () => {
|
||||
const result = updateContributionSchema.safeParse({ contributionTier: '15', cadence: 'weekly' })
|
||||
const result = updateContributionSchema.safeParse({ contributionAmount: 15, cadence: 'weekly' })
|
||||
expect(result.success).toBe(false)
|
||||
})
|
||||
|
||||
it('defaults cadence to monthly when omitted', () => {
|
||||
const result = updateContributionSchema.safeParse({ contributionTier: '15' })
|
||||
const result = updateContributionSchema.safeParse({ contributionAmount: 15 })
|
||||
expect(result.success).toBe(true)
|
||||
expect(result.data.cadence).toBe('monthly')
|
||||
})
|
||||
|
|
@ -425,7 +432,7 @@ describe('adminMemberCreateSchema', () => {
|
|||
name: 'Admin Created',
|
||||
email: 'admin-created@example.com',
|
||||
circle: 'founder',
|
||||
contributionTier: '30'
|
||||
contributionAmount: 30
|
||||
})
|
||||
expect(result.success).toBe(true)
|
||||
})
|
||||
|
|
@ -435,7 +442,7 @@ describe('adminMemberCreateSchema', () => {
|
|||
name: 'Admin Created',
|
||||
email: 'admin-created@example.com',
|
||||
circle: 'founder',
|
||||
contributionTier: '30',
|
||||
contributionAmount: 30,
|
||||
role: 'admin'
|
||||
})
|
||||
expect(result.success).toBe(true)
|
||||
|
|
@ -447,7 +454,7 @@ describe('adminMemberCreateSchema', () => {
|
|||
name: 'Admin Created',
|
||||
email: 'admin-created@example.com',
|
||||
circle: 'founder',
|
||||
contributionTier: '30',
|
||||
contributionAmount: 30,
|
||||
status: 'active'
|
||||
})
|
||||
expect(result.success).toBe(true)
|
||||
|
|
@ -459,7 +466,7 @@ describe('adminMemberCreateSchema', () => {
|
|||
name: 'Admin Created',
|
||||
email: 'admin-created@example.com',
|
||||
circle: 'superadmin',
|
||||
contributionTier: '30'
|
||||
contributionAmount: 30
|
||||
})
|
||||
expect(result.success).toBe(false)
|
||||
})
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ describe('memberCreateSchema', () => {
|
|||
email: 'new@example.com',
|
||||
name: 'Test User',
|
||||
circle: 'community',
|
||||
contributionTier: '0'
|
||||
contributionAmount: 0
|
||||
}
|
||||
|
||||
it('accepts valid member data', () => {
|
||||
|
|
@ -80,9 +80,16 @@ describe('memberCreateSchema', () => {
|
|||
expect(result.success).toBe(false)
|
||||
})
|
||||
|
||||
it('rejects invalid contributionTier enum', () => {
|
||||
const result = memberCreateSchema.safeParse({ ...validMember, contributionTier: '999' })
|
||||
expect(result.success).toBe(false)
|
||||
it('accepts contributionAmount: 0, 7, 9999', () => {
|
||||
expect(memberCreateSchema.safeParse({ ...validMember, contributionAmount: 0 }).success).toBe(true)
|
||||
expect(memberCreateSchema.safeParse({ ...validMember, contributionAmount: 7 }).success).toBe(true)
|
||||
expect(memberCreateSchema.safeParse({ ...validMember, contributionAmount: 9999 }).success).toBe(true)
|
||||
})
|
||||
|
||||
it('rejects invalid contributionAmount values', () => {
|
||||
expect(memberCreateSchema.safeParse({ ...validMember, contributionAmount: -1 }).success).toBe(false)
|
||||
expect(memberCreateSchema.safeParse({ ...validMember, contributionAmount: 1.5 }).success).toBe(false)
|
||||
expect(memberCreateSchema.safeParse({ ...validMember, contributionAmount: '15' }).success).toBe(false)
|
||||
})
|
||||
|
||||
it('rejects missing required fields', () => {
|
||||
|
|
@ -246,7 +253,7 @@ describe('validateBody', () => {
|
|||
it('strips unknown fields from output', async () => {
|
||||
const event = createMockEvent({
|
||||
method: 'POST',
|
||||
body: { email: 'test@example.com', name: 'Test', circle: 'community', contributionTier: '0', role: 'admin', _id: 'fake' }
|
||||
body: { email: 'test@example.com', name: 'Test', circle: 'community', contributionAmount: 0, role: 'admin', _id: 'fake' }
|
||||
})
|
||||
const data = await validateBody(event, memberCreateSchema)
|
||||
expect(data).not.toHaveProperty('role')
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue