Initialize project with basic structure, including Docker configuration, backend and frontend setup, environment configuration, and essential files for development.
Some checks failed
CI / backend (push) Has been cancelled
CI / frontend (push) Has been cancelled
CI / compose (push) Has been cancelled

This commit is contained in:
2026-07-19 00:17:31 +03:00
parent d401e9009c
commit 1239fcee08
69 changed files with 12391 additions and 10 deletions

View File

@@ -0,0 +1,27 @@
import { cleanup, fireEvent, render, screen, waitFor } from '@testing-library/react'
import { afterEach, describe, expect, it } from 'vitest'
import { LanguageProvider, LanguageSelector } from './i18n'
afterEach(() => {
cleanup()
localStorage.clear()
})
describe('runtime language selection', () => {
it('switches UI text to Russian and persists the choice', async () => {
localStorage.setItem('mixmaker-language', 'en')
render(<LanguageProvider><LanguageSelector /><p>Your events</p></LanguageProvider>)
fireEvent.change(screen.getByRole('combobox'), { target: { value: 'ru' } })
await waitFor(() => expect(screen.getByText('Ваши события')).toBeInTheDocument())
expect(localStorage.getItem('mixmaker-language')).toBe('ru')
expect(document.documentElement.lang).toBe('ru')
})
it('restores English after switching back', async () => {
localStorage.setItem('mixmaker-language', 'ru')
render(<LanguageProvider><LanguageSelector /><p>Your events</p></LanguageProvider>)
await waitFor(() => expect(screen.getByText('Ваши события')).toBeInTheDocument())
fireEvent.change(screen.getByRole('combobox'), { target: { value: 'en' } })
await waitFor(() => expect(screen.getByText('Your events')).toBeInTheDocument())
})
})