refactor(series): extract loadPublicSeries helper
This commit is contained in:
parent
a2f881e805
commit
27e73e969a
6 changed files with 68 additions and 56 deletions
|
|
@ -3,9 +3,9 @@ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'
|
|||
import { requireAuth, getOptionalMember } from '../../../server/utils/auth.js'
|
||||
import { validateBody as importedValidateBody } from '../../../server/utils/validateBody.js'
|
||||
import { loadPublicEvent } from '../../../server/utils/loadEvent.js'
|
||||
import { loadPublicSeries } from '../../../server/utils/loadSeries.js'
|
||||
import { PAYMENT_METADATA_TYPES } from '../../../server/utils/paymentTypes.js'
|
||||
import Member from '../../../server/models/member.js'
|
||||
import Series from '../../../server/models/series.js'
|
||||
import initPaymentHandler from '../../../server/api/helcim/initialize-payment.post.js'
|
||||
import verifyPaymentHandler from '../../../server/api/helcim/verify-payment.post.js'
|
||||
import { createMockEvent } from '../helpers/createMockEvent.js'
|
||||
|
|
@ -17,8 +17,8 @@ vi.mock('../../../server/utils/auth.js', () => ({
|
|||
vi.mock('../../../server/utils/validateBody.js', () => ({ validateBody: vi.fn() }))
|
||||
vi.mock('../../../server/utils/schemas.js', () => ({ paymentVerifySchema: {} }))
|
||||
vi.mock('../../../server/utils/loadEvent.js', () => ({ loadPublicEvent: vi.fn() }))
|
||||
vi.mock('../../../server/utils/loadSeries.js', () => ({ loadPublicSeries: vi.fn() }))
|
||||
vi.mock('../../../server/models/member.js', () => ({ default: { findOne: vi.fn() } }))
|
||||
vi.mock('../../../server/models/series.js', () => ({ default: { findOne: vi.fn() } }))
|
||||
|
||||
// helcimInitializePaymentSchema is a Nitro auto-import used by validateBody
|
||||
vi.stubGlobal('helcimInitializePaymentSchema', {})
|
||||
|
|
@ -34,7 +34,7 @@ describe('initialize-payment endpoint', () => {
|
|||
vi.clearAllMocks()
|
||||
getOptionalMember.mockResolvedValue(null)
|
||||
Member.findOne.mockResolvedValue(null)
|
||||
Series.findOne.mockResolvedValue(null)
|
||||
loadPublicSeries.mockResolvedValue(null)
|
||||
})
|
||||
|
||||
afterEach(() => {
|
||||
|
|
@ -188,13 +188,13 @@ describe('initialize-payment endpoint', () => {
|
|||
})
|
||||
})
|
||||
|
||||
it('re-derives series_ticket price via Series.findOne + calculateSeriesTicketPrice', async () => {
|
||||
it('re-derives series_ticket price via loadPublicSeries + calculateSeriesTicketPrice', async () => {
|
||||
const body = {
|
||||
amount: 100, // tampered
|
||||
metadata: { type: 'series_ticket', seriesId: 'ser-x' }
|
||||
}
|
||||
globalThis.validateBody.mockResolvedValue(body)
|
||||
Series.findOne.mockResolvedValue({
|
||||
loadPublicSeries.mockResolvedValue({
|
||||
_id: 'ser-x',
|
||||
title: 'Coop Foundations',
|
||||
tickets: { enabled: true, public: { available: true, price: 7500 } }
|
||||
|
|
@ -219,7 +219,7 @@ describe('initialize-payment endpoint', () => {
|
|||
expect(sentBody.amount).toBe(7500)
|
||||
expect(sentBody.paymentType).toBe('purchase')
|
||||
expect(result.amount).toBe(7500)
|
||||
expect(Series.findOne).toHaveBeenCalled()
|
||||
expect(loadPublicSeries).toHaveBeenCalled()
|
||||
})
|
||||
|
||||
it('uses member pricing when metadata.email matches an active member', async () => {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue