mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-06-19 13:21:46 +00:00
fix(i18n): standardize ellipsis to three dots (...) for consistency
Revert common.loading and common.saving from Unicode ellipsis (…) back to three dots (...) to match the rest of the project (e.g. "Optional caption..."). Update 4 test files that were incorrectly using the Unicode ellipsis character.
This commit is contained in:
@@ -47,7 +47,7 @@ describe('AuditLogPanel', () => {
|
|||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
render(<AuditLogPanel serverTimezone="UTC" />);
|
render(<AuditLogPanel serverTimezone="UTC" />);
|
||||||
expect(screen.getByText('Loading…')).toBeInTheDocument();
|
expect(screen.getByText('Loading...')).toBeInTheDocument();
|
||||||
expect(document.querySelector('table')).not.toBeInTheDocument();
|
expect(document.querySelector('table')).not.toBeInTheDocument();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ describe('GitHubPanel', () => {
|
|||||||
|
|
||||||
it('FE-ADMIN-GH-002: all support links have correct href and target=_blank', async () => {
|
it('FE-ADMIN-GH-002: all support links have correct href and target=_blank', async () => {
|
||||||
render(<GitHubPanel />);
|
render(<GitHubPanel />);
|
||||||
await waitFor(() => expect(screen.queryByText('Loading…')).not.toBeInTheDocument());
|
await waitFor(() => expect(screen.queryByText('Loading...')).not.toBeInTheDocument());
|
||||||
|
|
||||||
const kofi = screen.getByText('Ko-fi').closest('a')!;
|
const kofi = screen.getByText('Ko-fi').closest('a')!;
|
||||||
expect(kofi).toHaveAttribute('href', 'https://ko-fi.com/mauriceboe');
|
expect(kofi).toHaveAttribute('href', 'https://ko-fi.com/mauriceboe');
|
||||||
@@ -272,7 +272,7 @@ describe('GitHubPanel', () => {
|
|||||||
|
|
||||||
it('FE-ADMIN-GH-016: support card hover effects fire without error', async () => {
|
it('FE-ADMIN-GH-016: support card hover effects fire without error', async () => {
|
||||||
render(<GitHubPanel />);
|
render(<GitHubPanel />);
|
||||||
await waitFor(() => expect(screen.queryByText('Loading…')).not.toBeInTheDocument());
|
await waitFor(() => expect(screen.queryByText('Loading...')).not.toBeInTheDocument());
|
||||||
|
|
||||||
const kofiLink = screen.getByText('Ko-fi').closest('a')!;
|
const kofiLink = screen.getByText('Ko-fi').closest('a')!;
|
||||||
fireEvent.mouseEnter(kofiLink);
|
fireEvent.mouseEnter(kofiLink);
|
||||||
|
|||||||
@@ -35,14 +35,14 @@ describe('NotificationsTab', () => {
|
|||||||
http.get('/api/notifications/preferences', () => new Promise(() => {})),
|
http.get('/api/notifications/preferences', () => new Promise(() => {})),
|
||||||
);
|
);
|
||||||
render(<NotificationsTab />);
|
render(<NotificationsTab />);
|
||||||
expect(screen.getByText('Loading…')).toBeInTheDocument();
|
expect(screen.getByText('Loading...')).toBeInTheDocument();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('FE-COMP-NOTIFICATIONS-002: renders the matrix after preferences load', async () => {
|
it('FE-COMP-NOTIFICATIONS-002: renders the matrix after preferences load', async () => {
|
||||||
render(<NotificationsTab />);
|
render(<NotificationsTab />);
|
||||||
// The event label is translated; fallback is the key itself
|
// The event label is translated; fallback is the key itself
|
||||||
await waitFor(() => {
|
await waitFor(() => {
|
||||||
expect(screen.queryByText('Loading…')).not.toBeInTheDocument();
|
expect(screen.queryByText('Loading...')).not.toBeInTheDocument();
|
||||||
});
|
});
|
||||||
// Should render a toggle (ToggleSwitch renders a button)
|
// Should render a toggle (ToggleSwitch renders a button)
|
||||||
const toggles = await screen.findAllByRole('button');
|
const toggles = await screen.findAllByRole('button');
|
||||||
@@ -52,7 +52,7 @@ describe('NotificationsTab', () => {
|
|||||||
it('FE-COMP-NOTIFICATIONS-003: renders channel header labels', async () => {
|
it('FE-COMP-NOTIFICATIONS-003: renders channel header labels', async () => {
|
||||||
render(<NotificationsTab />);
|
render(<NotificationsTab />);
|
||||||
await waitFor(() => {
|
await waitFor(() => {
|
||||||
expect(screen.queryByText('Loading…')).not.toBeInTheDocument();
|
expect(screen.queryByText('Loading...')).not.toBeInTheDocument();
|
||||||
});
|
});
|
||||||
// inapp channel header should appear (either translated or raw key)
|
// inapp channel header should appear (either translated or raw key)
|
||||||
const headers = screen.getAllByText(/inapp|in.?app/i);
|
const headers = screen.getAllByText(/inapp|in.?app/i);
|
||||||
@@ -72,7 +72,7 @@ describe('NotificationsTab', () => {
|
|||||||
);
|
);
|
||||||
render(<NotificationsTab />);
|
render(<NotificationsTab />);
|
||||||
await waitFor(() => {
|
await waitFor(() => {
|
||||||
expect(screen.queryByText('Loading…')).not.toBeInTheDocument();
|
expect(screen.queryByText('Loading...')).not.toBeInTheDocument();
|
||||||
});
|
});
|
||||||
// Should show noChannels message (translated or key)
|
// Should show noChannels message (translated or key)
|
||||||
const noChannelEl = await screen.findByText(/no.*channel|noChannels/i);
|
const noChannelEl = await screen.findByText(/no.*channel|noChannels/i);
|
||||||
@@ -97,7 +97,7 @@ describe('NotificationsTab', () => {
|
|||||||
);
|
);
|
||||||
render(<NotificationsTab />);
|
render(<NotificationsTab />);
|
||||||
await waitFor(() => {
|
await waitFor(() => {
|
||||||
expect(screen.queryByText('Loading…')).not.toBeInTheDocument();
|
expect(screen.queryByText('Loading...')).not.toBeInTheDocument();
|
||||||
});
|
});
|
||||||
// A dash should appear for non-implemented combos
|
// A dash should appear for non-implemented combos
|
||||||
const dashes = await screen.findAllByText('—');
|
const dashes = await screen.findAllByText('—');
|
||||||
@@ -116,7 +116,7 @@ describe('NotificationsTab', () => {
|
|||||||
|
|
||||||
render(<NotificationsTab />);
|
render(<NotificationsTab />);
|
||||||
await waitFor(() => {
|
await waitFor(() => {
|
||||||
expect(screen.queryByText('Loading…')).not.toBeInTheDocument();
|
expect(screen.queryByText('Loading...')).not.toBeInTheDocument();
|
||||||
});
|
});
|
||||||
|
|
||||||
// minimalMatrix has inapp:true and email:false for trip_invite
|
// minimalMatrix has inapp:true and email:false for trip_invite
|
||||||
@@ -144,7 +144,7 @@ describe('NotificationsTab', () => {
|
|||||||
|
|
||||||
render(<NotificationsTab />);
|
render(<NotificationsTab />);
|
||||||
await waitFor(() => {
|
await waitFor(() => {
|
||||||
expect(screen.queryByText('Loading…')).not.toBeInTheDocument();
|
expect(screen.queryByText('Loading...')).not.toBeInTheDocument();
|
||||||
});
|
});
|
||||||
|
|
||||||
// Find the inapp toggle for trip_invite — it starts as "on"
|
// Find the inapp toggle for trip_invite — it starts as "on"
|
||||||
@@ -156,8 +156,8 @@ describe('NotificationsTab', () => {
|
|||||||
|
|
||||||
// After the error, the toggle should revert back (still rendered in the DOM)
|
// After the error, the toggle should revert back (still rendered in the DOM)
|
||||||
await waitFor(() => {
|
await waitFor(() => {
|
||||||
expect(screen.queryByText('Loading…')).not.toBeInTheDocument();
|
expect(screen.queryByText('Loading...')).not.toBeInTheDocument();
|
||||||
expect(screen.queryByText('Saving…')).not.toBeInTheDocument();
|
expect(screen.queryByText('Saving...')).not.toBeInTheDocument();
|
||||||
});
|
});
|
||||||
|
|
||||||
// The toggle should still be present (not removed on error)
|
// The toggle should still be present (not removed on error)
|
||||||
@@ -178,20 +178,20 @@ describe('NotificationsTab', () => {
|
|||||||
|
|
||||||
render(<NotificationsTab />);
|
render(<NotificationsTab />);
|
||||||
await waitFor(() => {
|
await waitFor(() => {
|
||||||
expect(screen.queryByText('Loading…')).not.toBeInTheDocument();
|
expect(screen.queryByText('Loading...')).not.toBeInTheDocument();
|
||||||
});
|
});
|
||||||
|
|
||||||
const toggleButtons = await screen.findAllByRole('button');
|
const toggleButtons = await screen.findAllByRole('button');
|
||||||
await user.click(toggleButtons[0]);
|
await user.click(toggleButtons[0]);
|
||||||
|
|
||||||
await waitFor(() => {
|
await waitFor(() => {
|
||||||
expect(screen.getByText('Saving…')).toBeInTheDocument();
|
expect(screen.getByText('Saving...')).toBeInTheDocument();
|
||||||
});
|
});
|
||||||
|
|
||||||
resolveRequest();
|
resolveRequest();
|
||||||
|
|
||||||
await waitFor(() => {
|
await waitFor(() => {
|
||||||
expect(screen.queryByText('Saving…')).not.toBeInTheDocument();
|
expect(screen.queryByText('Saving...')).not.toBeInTheDocument();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -209,7 +209,7 @@ describe('NotificationsTab', () => {
|
|||||||
|
|
||||||
render(<NotificationsTab />);
|
render(<NotificationsTab />);
|
||||||
await waitFor(() => {
|
await waitFor(() => {
|
||||||
expect(screen.queryByText('Loading…')).not.toBeInTheDocument();
|
expect(screen.queryByText('Loading...')).not.toBeInTheDocument();
|
||||||
});
|
});
|
||||||
|
|
||||||
// Webhook URL input should be present
|
// Webhook URL input should be present
|
||||||
@@ -238,7 +238,7 @@ describe('NotificationsTab', () => {
|
|||||||
|
|
||||||
render(<NotificationsTab />);
|
render(<NotificationsTab />);
|
||||||
await waitFor(() => {
|
await waitFor(() => {
|
||||||
expect(screen.queryByText('Loading…')).not.toBeInTheDocument();
|
expect(screen.queryByText('Loading...')).not.toBeInTheDocument();
|
||||||
});
|
});
|
||||||
|
|
||||||
const input = await screen.findByRole('textbox');
|
const input = await screen.findByRole('textbox');
|
||||||
@@ -265,7 +265,7 @@ describe('NotificationsTab', () => {
|
|||||||
|
|
||||||
render(<NotificationsTab />);
|
render(<NotificationsTab />);
|
||||||
await waitFor(() => {
|
await waitFor(() => {
|
||||||
expect(screen.queryByText('Loading…')).not.toBeInTheDocument();
|
expect(screen.queryByText('Loading...')).not.toBeInTheDocument();
|
||||||
});
|
});
|
||||||
|
|
||||||
const input = await screen.findByRole('textbox');
|
const input = await screen.findByRole('textbox');
|
||||||
@@ -297,7 +297,7 @@ describe('NotificationsTab', () => {
|
|||||||
|
|
||||||
render(<NotificationsTab />);
|
render(<NotificationsTab />);
|
||||||
await waitFor(() => {
|
await waitFor(() => {
|
||||||
expect(screen.queryByText('Loading…')).not.toBeInTheDocument();
|
expect(screen.queryByText('Loading...')).not.toBeInTheDocument();
|
||||||
});
|
});
|
||||||
|
|
||||||
await screen.findByRole('textbox');
|
await screen.findByRole('textbox');
|
||||||
@@ -330,7 +330,7 @@ describe('NotificationsTab', () => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
await waitFor(() => {
|
await waitFor(() => {
|
||||||
expect(screen.queryByText('Loading…')).not.toBeInTheDocument();
|
expect(screen.queryByText('Loading...')).not.toBeInTheDocument();
|
||||||
});
|
});
|
||||||
|
|
||||||
const input = await screen.findByRole('textbox');
|
const input = await screen.findByRole('textbox');
|
||||||
@@ -371,7 +371,7 @@ describe('NotificationsTab', () => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
await waitFor(() => {
|
await waitFor(() => {
|
||||||
expect(screen.queryByText('Loading…')).not.toBeInTheDocument();
|
expect(screen.queryByText('Loading...')).not.toBeInTheDocument();
|
||||||
});
|
});
|
||||||
|
|
||||||
const input = await screen.findByRole('textbox');
|
const input = await screen.findByRole('textbox');
|
||||||
|
|||||||
@@ -284,6 +284,6 @@ describe('TripFormModal', () => {
|
|||||||
const submitBtns = screen.getAllByText('Create New Trip');
|
const submitBtns = screen.getAllByText('Create New Trip');
|
||||||
const submitBtn = submitBtns.find(el => el.closest('button'))!;
|
const submitBtn = submitBtns.find(el => el.closest('button'))!;
|
||||||
await user.click(submitBtn.closest('button')!);
|
await user.click(submitBtn.closest('button')!);
|
||||||
await waitFor(() => expect(screen.getByText('Saving…')).toBeInTheDocument());
|
await waitFor(() => expect(screen.getByText('Saving...')).toBeInTheDocument());
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ const en: Record<string, string | { name: string; category: string }[]> = {
|
|||||||
'common.delete': 'Delete',
|
'common.delete': 'Delete',
|
||||||
'common.edit': 'Edit',
|
'common.edit': 'Edit',
|
||||||
'common.add': 'Add',
|
'common.add': 'Add',
|
||||||
'common.loading': 'Loading…',
|
'common.loading': 'Loading...',
|
||||||
'common.import': 'Import',
|
'common.import': 'Import',
|
||||||
'common.error': 'Error',
|
'common.error': 'Error',
|
||||||
'common.unknownError': 'Unknown error',
|
'common.unknownError': 'Unknown error',
|
||||||
@@ -27,7 +27,7 @@ const en: Record<string, string | { name: string; category: string }[]> = {
|
|||||||
'common.name': 'Name',
|
'common.name': 'Name',
|
||||||
'common.email': 'Email',
|
'common.email': 'Email',
|
||||||
'common.password': 'Password',
|
'common.password': 'Password',
|
||||||
'common.saving': 'Saving…',
|
'common.saving': 'Saving...',
|
||||||
'common.justNow': 'just now',
|
'common.justNow': 'just now',
|
||||||
'common.hoursAgo': '{count}h ago',
|
'common.hoursAgo': '{count}h ago',
|
||||||
'common.daysAgo': '{count}d ago',
|
'common.daysAgo': '{count}d ago',
|
||||||
|
|||||||
Reference in New Issue
Block a user