import * as React from 'react'; import { render, fireEvent } from '@testing-library/react'; import i18next from 'i18next'; import { ThemeProvider, DefaultTheme } from 'styled-components'; import { LanguageSwitch } from '..'; import { themes } from 'styles/theme/themes'; import { i18n } from 'locales/i18n'; import { translations } from 'locales/translations'; const renderLanguageSwitch = (theme?: DefaultTheme) => render( , ); describe('', () => { it('should have 2 radio buttons', () => { const languageSwitch = renderLanguageSwitch(); expect(languageSwitch.queryAllByRole('radio').length).toBe(2); }); it('should have translated FormLabel ', async () => { const t = await i18n; i18next.changeLanguage('en'); let languageSwitch = renderLanguageSwitch(); let label = languageSwitch.queryByText( t(translations.i18nFeature.selectLanguage) as string, ); expect(label).toBeInTheDocument(); languageSwitch.unmount(); i18next.changeLanguage('de'); languageSwitch = renderLanguageSwitch(); label = languageSwitch.queryByText( t(translations.i18nFeature.selectLanguage) as string, ); expect(label).toBeInTheDocument(); }); it('should change language on click', async () => { i18next.changeLanguage('en'); const languageSwitch = renderLanguageSwitch(); const radio2 = languageSwitch.queryAllByRole('radio')[1]; fireEvent.click(radio2); expect(i18next.language).toEqual('de'); }); });