import React from 'react';
import { describe, it, expect, beforeEach, vi } from 'vitest';
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: () =>
Project
,
}));
describe('StatusBar', () => {
beforeEach(() => {
vi.clearAllMocks();
localStorage.clear();
(window.electronAPI.app as { getSystemLanguage?: () => Promise }).getSystemLanguage = async () => 'de-DE';
useAppStore.setState({
media: [],
tasks: [],
selectedPostId: null,
totalPosts: 0,
picoTheme: 'slate',
} as any);
});
it('shows the currently applied theme', async () => {
render(
);
await screen.findByTestId('statusbar-language-select');
expect(screen.getByText('Theme: slate')).toBeInTheDocument();
});
it('shows ui language badge and allows switching language', async () => {
render(
);
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');
});
});