diff --git a/react-spa/src/components/HierarchicalRulesTable.tsx b/react-spa/src/components/HierarchicalRulesTable.tsx index dc31b414..78f244f9 100644 --- a/react-spa/src/components/HierarchicalRulesTable.tsx +++ b/react-spa/src/components/HierarchicalRulesTable.tsx @@ -127,8 +127,8 @@ export const HierarchicalRulesTable: React.FC = ({ )} {t('hierarchicalRulesTable.columnDomainRule')} - Estado - {!readOnly && Acciones} + Status + {!readOnly && Actions} diff --git a/react-spa/src/hooks/useDashboardViewModel.ts b/react-spa/src/hooks/useDashboardViewModel.ts index dd0cf14a..4f81b556 100644 --- a/react-spa/src/hooks/useDashboardViewModel.ts +++ b/react-spa/src/hooks/useDashboardViewModel.ts @@ -35,17 +35,17 @@ export interface DashboardGroup { export type DashboardSortOption = 'name' | 'rules' | 'recent'; export const DASHBOARD_SORT_OPTIONS: { value: DashboardSortOption; label: string }[] = [ - { value: 'name', label: 'Nombre (A-Z)' }, + { value: 'name', label: 'Name (A-Z)' }, { value: 'rules', label: 'Most rules' }, - { value: 'recent', label: 'Recientes' }, + { value: 'recent', label: 'Recent' }, ]; export function useDashboardSortOptions(): { value: DashboardSortOption; label: string }[] { const t = useT(); return [ - { value: 'name', label: 'Nombre (A-Z)' }, + { value: 'name', label: 'Name (A-Z)' }, { value: 'rules', label: t('dashboard.sort.mostRules') }, - { value: 'recent', label: 'Recientes' }, + { value: 'recent', label: 'Recent' }, ]; } diff --git a/react-spa/src/hooks/useRulesManagerViewModel.ts b/react-spa/src/hooks/useRulesManagerViewModel.ts index d9316b58..2104a86b 100644 --- a/react-spa/src/hooks/useRulesManagerViewModel.ts +++ b/react-spa/src/hooks/useRulesManagerViewModel.ts @@ -12,22 +12,22 @@ import { export function buildRulesManagerTabs(counts: ManagedRulesCounts) { return [ - { id: 'all' as ManagedRulesFilterType, label: 'Todos', count: counts.all }, + { id: 'all' as ManagedRulesFilterType, label: 'All', count: counts.all }, { id: 'allowed' as ManagedRulesFilterType, - label: 'Permitidas', + label: 'Allowed', count: counts.allowed, icon: createElement(Check, { size: 14 }), }, { id: 'blocked' as ManagedRulesFilterType, - label: 'Bloqueadas', + label: 'Blocked', count: counts.blocked, icon: createElement(Ban, { size: 14 }), }, { id: 'disabled' as ManagedRulesFilterType, - label: 'Inhabilitadas', + label: 'Disabled', count: counts.disabled, icon: createElement(PowerOff, { size: 14 }), }, diff --git a/react-spa/src/lib/__tests__/exportUsers.test.ts b/react-spa/src/lib/__tests__/exportUsers.test.ts index ba5f4bbb..41c68ce5 100644 --- a/react-spa/src/lib/__tests__/exportUsers.test.ts +++ b/react-spa/src/lib/__tests__/exportUsers.test.ts @@ -38,7 +38,7 @@ describe('buildUsersCsvExport', () => { expect(result.mimeType).toBe(USERS_CSV_EXPORT_MIME_TYPE); expect(result.content).toBe( [ - 'Nombre,Email,Roles,Estado,Roles_codigo,Estado_codigo', + 'Name,Email,Roles,Status,Roles_code,Status_code', 'Admin QA,admin@example.com,Admin,Active,admin,Active', 'Teacher QA,teacher@example.com,Teacher,Inactive,teacher,Inactive', ].join('\n') @@ -50,7 +50,7 @@ describe('buildUsersCsvExport', () => { expect(result.content).toBe( [ - 'Nombre,Email,Roles,Estado', + 'Name,Email,Roles,Status', 'Admin QA,admin@example.com,Admin,Active', 'Teacher QA,teacher@example.com,Teacher,Inactive', ].join('\n') diff --git a/react-spa/src/lib/exportUsers.ts b/react-spa/src/lib/exportUsers.ts index 9e32b131..b5ad02aa 100644 --- a/react-spa/src/lib/exportUsers.ts +++ b/react-spa/src/lib/exportUsers.ts @@ -22,8 +22,8 @@ export function buildUsersCsvExport( } { const includeCodeColumns = options.includeCodeColumns ?? true; - const headers = ['Nombre', 'Email', 'Roles', 'Estado']; - if (includeCodeColumns) headers.push('Roles_codigo', 'Estado_codigo'); + const headers = ['Name', 'Email', 'Roles', 'Status']; + if (includeCodeColumns) headers.push('Roles_code', 'Status_code'); const rows = users.map((user) => { const rolesLabel = user.roles.map((role) => getUserRoleLabel(role, t)).join('|'); diff --git a/react-spa/src/views/__tests__/Dashboard.test.tsx b/react-spa/src/views/__tests__/Dashboard.test.tsx index 6b1a2f25..143b3294 100644 --- a/react-spa/src/views/__tests__/Dashboard.test.tsx +++ b/react-spa/src/views/__tests__/Dashboard.test.tsx @@ -454,7 +454,7 @@ describe('Dashboard', () => { renderDashboard({ onNavigateToRules }); await waitFor(() => { - expect(screen.getByText(/Nombre \(A-Z\)/)).toBeInTheDocument(); + expect(screen.getByText(/Name \(A-Z\)/)).toBeInTheDocument(); }); }); diff --git a/react-spa/src/views/__tests__/RulesManager.wiring.test.tsx b/react-spa/src/views/__tests__/RulesManager.wiring.test.tsx index f76d6dcc..91fa65d0 100644 --- a/react-spa/src/views/__tests__/RulesManager.wiring.test.tsx +++ b/react-spa/src/views/__tests__/RulesManager.wiring.test.tsx @@ -147,10 +147,10 @@ vi.mock('../../hooks/useRulesManagerViewModel', () => ({ detectedType: { type: 'whitelist' as const, confidence: 'high' as const }, validationError: '', tabs: [ - { id: 'all' as const, label: 'Todos', count: 51 }, - { id: 'allowed' as const, label: 'Permitidas', count: 50 }, - { id: 'blocked' as const, label: 'Bloqueadas', count: 1 }, - { id: 'disabled' as const, label: 'Inhabilitadas', count: 0 }, + { id: 'all' as const, label: 'All', count: 51 }, + { id: 'allowed' as const, label: 'Allowed', count: 50 }, + { id: 'blocked' as const, label: 'Blocked', count: 1 }, + { id: 'disabled' as const, label: 'Disabled', count: 0 }, ], emptyMessage: 'No rules configured', handleAddRule: mockViewModel.handleAddRule, diff --git a/react-spa/src/views/__tests__/Users.test.tsx b/react-spa/src/views/__tests__/Users.test.tsx index 384e903e..2acfc8c2 100644 --- a/react-spa/src/views/__tests__/Users.test.tsx +++ b/react-spa/src/views/__tests__/Users.test.tsx @@ -263,7 +263,7 @@ describe('Users View', () => { expect(filename).toBe('users.csv'); expect(mimeType).toBe('text/csv;charset=utf-8'); - expect(csvContent).toContain('Nombre,Email,Roles,Estado'); + expect(csvContent).toContain('Name,Email,Roles,Status'); expect(csvContent).toContain('Admin QA,admin@example.com,Admin,Active'); expect(csvContent).toContain('Teacher QA,teacher@example.com,Teacher,Inactive'); });