admin/features/events/eventCapacity.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

22 lines
935 B
TypeScript

import { describe, expect, it } from 'vitest'
import { capacityToneFromRemaining, isOccupancyFull, remainingSeatCount } from '@/features/events/eventCapacity'
describe('event occupancy', () => {
it('treats pending bookings as occupied when computing remaining seats', () => {
expect(remainingSeatCount(10, 7, 0)).toBe(3)
expect(remainingSeatCount(10, 7, 3)).toBe(0)
expect(isOccupancyFull(10, 7, 4)).toBe(true)
})
it('maps remaining capacity ratio to badge tone', () => {
expect(capacityToneFromRemaining(60, 100)).toBe('neutral')
expect(capacityToneFromRemaining(50, 100)).toBe('neutral')
expect(capacityToneFromRemaining(49, 100)).toBe('warning')
expect(capacityToneFromRemaining(20, 100)).toBe('warning')
expect(capacityToneFromRemaining(19, 100)).toBe('danger')
expect(capacityToneFromRemaining(0, 100)).toBe('danger')
expect(capacityToneFromRemaining(1, 0)).toBe('danger')
})
})