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() 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) }) })