chore: translations were still missing
This commit is contained in:
62
tests/renderer/components/SettingsView.i18n.test.tsx
Normal file
62
tests/renderer/components/SettingsView.i18n.test.tsx
Normal file
@@ -0,0 +1,62 @@
|
||||
import React from 'react';
|
||||
import { describe, it, expect, beforeEach, vi } from 'vitest';
|
||||
import { render, screen } from '@testing-library/react';
|
||||
import { SettingsView } from '../../../src/renderer/components/SettingsView/SettingsView';
|
||||
import { useAppStore } from '../../../src/renderer/store';
|
||||
import { I18nProvider, UI_LANGUAGE_STORAGE_KEY } from '../../../src/renderer/i18n';
|
||||
|
||||
describe('SettingsView i18n', () => {
|
||||
beforeEach(() => {
|
||||
vi.clearAllMocks();
|
||||
localStorage.clear();
|
||||
localStorage.setItem(UI_LANGUAGE_STORAGE_KEY, 'de');
|
||||
(window.electronAPI.app as { getSystemLanguage?: () => Promise<string> }).getSystemLanguage = async () => 'de-DE';
|
||||
|
||||
useAppStore.setState({
|
||||
activeProject: {
|
||||
id: 'project-1',
|
||||
name: 'Testprojekt',
|
||||
slug: 'testprojekt',
|
||||
isActive: true,
|
||||
createdAt: new Date().toISOString(),
|
||||
updatedAt: new Date().toISOString(),
|
||||
},
|
||||
gitDiffPreferences: {
|
||||
wordWrap: true,
|
||||
viewStyle: 'inline',
|
||||
hideUnchangedRegions: false,
|
||||
},
|
||||
} as never);
|
||||
|
||||
(window as Window & { electronAPI: any }).electronAPI = {
|
||||
...(window as Window & { electronAPI: any }).electronAPI,
|
||||
app: {
|
||||
...(window as Window & { electronAPI: any }).electronAPI?.app,
|
||||
getDefaultProjectPath: vi.fn().mockResolvedValue('/repo/path'),
|
||||
},
|
||||
meta: {
|
||||
...(window as Window & { electronAPI: any }).electronAPI?.meta,
|
||||
getCategories: vi.fn().mockResolvedValue(['article', 'picture', 'aside', 'page']),
|
||||
getProjectMetadata: vi.fn().mockResolvedValue({}),
|
||||
},
|
||||
chat: {
|
||||
...(window as Window & { electronAPI: any }).electronAPI?.chat,
|
||||
getSystemPrompt: vi.fn().mockResolvedValue({ success: true, prompt: '' }),
|
||||
getApiKey: vi.fn().mockResolvedValue({ hasKey: false, maskedKey: '' }),
|
||||
getAvailableModels: vi.fn().mockResolvedValue({ success: true, models: [], selectedModel: '' }),
|
||||
},
|
||||
};
|
||||
});
|
||||
|
||||
it('renders project section labels in selected UI language', async () => {
|
||||
render(
|
||||
<I18nProvider>
|
||||
<SettingsView />
|
||||
</I18nProvider>
|
||||
);
|
||||
|
||||
expect(await screen.findByText('Projekt')).toBeInTheDocument();
|
||||
expect(screen.getByText('Projektname')).toBeInTheDocument();
|
||||
expect(screen.getByText('Projekteinstellungen speichern')).toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
34
tests/renderer/components/Sidebar.i18n.test.tsx
Normal file
34
tests/renderer/components/Sidebar.i18n.test.tsx
Normal file
@@ -0,0 +1,34 @@
|
||||
import React from 'react';
|
||||
import { describe, it, expect, beforeEach, vi } from 'vitest';
|
||||
import { render, screen } from '@testing-library/react';
|
||||
import { Sidebar } from '../../../src/renderer/components/Sidebar/Sidebar';
|
||||
import { useAppStore } from '../../../src/renderer/store';
|
||||
import { I18nProvider, UI_LANGUAGE_STORAGE_KEY } from '../../../src/renderer/i18n';
|
||||
|
||||
describe('Sidebar i18n', () => {
|
||||
beforeEach(() => {
|
||||
vi.clearAllMocks();
|
||||
localStorage.clear();
|
||||
localStorage.setItem(UI_LANGUAGE_STORAGE_KEY, 'de');
|
||||
(window.electronAPI.app as { getSystemLanguage?: () => Promise<string> }).getSystemLanguage = async () => 'de-DE';
|
||||
|
||||
useAppStore.setState({
|
||||
activeView: 'settings',
|
||||
sidebarVisible: true,
|
||||
tabs: [],
|
||||
activeTabId: null,
|
||||
} as never);
|
||||
});
|
||||
|
||||
it('renders settings navigation labels in selected UI language', async () => {
|
||||
render(
|
||||
<I18nProvider>
|
||||
<Sidebar />
|
||||
</I18nProvider>
|
||||
);
|
||||
|
||||
expect(await screen.findByText('EINSTELLUNGEN')).toBeInTheDocument();
|
||||
expect(screen.getByText('Projekt')).toBeInTheDocument();
|
||||
expect(screen.getByText('Texteditor')).toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
@@ -1,8 +1,9 @@
|
||||
import React from 'react';
|
||||
import { describe, it, expect, beforeEach, vi } from 'vitest';
|
||||
import { render, screen } from '@testing-library/react';
|
||||
import { fireEvent, render, screen } from '@testing-library/react';
|
||||
import { StatusBar } from '../../../src/renderer/components/StatusBar/StatusBar';
|
||||
import { useAppStore } from '../../../src/renderer/store';
|
||||
import { I18nProvider } from '../../../src/renderer/i18n';
|
||||
|
||||
vi.mock('../../../src/renderer/components/ProjectSelector', () => ({
|
||||
ProjectSelector: () => <div data-testid="project-selector">Project</div>,
|
||||
@@ -11,6 +12,8 @@ vi.mock('../../../src/renderer/components/ProjectSelector', () => ({
|
||||
describe('StatusBar', () => {
|
||||
beforeEach(() => {
|
||||
vi.clearAllMocks();
|
||||
localStorage.clear();
|
||||
(window.electronAPI.app as { getSystemLanguage?: () => Promise<string> }).getSystemLanguage = async () => 'de-DE';
|
||||
useAppStore.setState({
|
||||
media: [],
|
||||
tasks: [],
|
||||
@@ -20,9 +23,31 @@ describe('StatusBar', () => {
|
||||
} as any);
|
||||
});
|
||||
|
||||
it('shows the currently applied theme', () => {
|
||||
render(<StatusBar />);
|
||||
it('shows the currently applied theme', async () => {
|
||||
render(
|
||||
<I18nProvider>
|
||||
<StatusBar />
|
||||
</I18nProvider>
|
||||
);
|
||||
|
||||
await screen.findByTestId('statusbar-language-select');
|
||||
|
||||
expect(screen.getByText('Theme: slate')).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('shows ui language badge and allows switching language', async () => {
|
||||
render(
|
||||
<I18nProvider>
|
||||
<StatusBar />
|
||||
</I18nProvider>
|
||||
);
|
||||
|
||||
const languageSelect = await screen.findByTestId('statusbar-language-select');
|
||||
expect(languageSelect).toHaveValue('de');
|
||||
|
||||
fireEvent.change(languageSelect, { target: { value: 'fr' } });
|
||||
expect(languageSelect).toHaveValue('fr');
|
||||
|
||||
expect(localStorage.setItem).toHaveBeenCalledWith('bds-ui-language', 'fr');
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user