amanpay / web /src /pages /ActivityPage.test.tsx
MHamdan's picture
CI deploy 895c0ed
adb91eb verified
Raw
History Blame Contribute Delete
1.74 kB
import { describe, it, expect, beforeEach } from 'vitest'
import { render, screen, fireEvent } from '@testing-library/react'
import { I18nProvider } from '../i18n'
import { ActivityPage } from './ActivityPage'
import { _resetActivity, addActivity } from '../activity/store'
const renderAct = (locale: 'en' | 'ar' = 'en') =>
render(<I18nProvider initial={locale}><ActivityPage /></I18nProvider>)
describe('ActivityPage', () => {
beforeEach(() => _resetActivity())
it('labels the list as session-only (honest, not permanent history)', () => {
renderAct()
expect(screen.getByText('Activity from this session')).toBeInTheDocument()
expect(screen.getByText(/not permanent account history/i)).toBeInTheDocument()
})
it('shows an empty state when there is no session activity', () => {
renderAct()
expect(screen.getByTestId('activity-empty')).toBeInTheDocument()
})
it('lists a recorded event and filters by tab', () => {
addActivity({ kind: 'payment', title: 'Blue Bottle', status: 'succeeded', amount: '150.50 SAR' })
addActivity({ kind: 'security-demo', title: 'New payee', status: 'deny', reasonCodes: ['NEW_PAYEE'] })
renderAct()
expect(screen.getAllByTestId('activity-item').length).toBe(2)
fireEvent.click(screen.getByRole('tab', { name: 'Payments' }))
expect(screen.getAllByTestId('activity-item').length).toBe(1)
expect(screen.getByText('Blue Bottle')).toBeInTheDocument()
})
it('never renders full IBANs or capability text', () => {
addActivity({ kind: 'payment', title: 'Blue Bottle', status: 'succeeded', reference: 'p1' })
const { container } = renderAct()
expect(container.textContent).not.toMatch(/SA\d{22}|CapabilityGrant|signature/i)
})
})