jest.autoMockOff(); import '@testing-library/jest-dom'; import { render, screen, waitFor } from '@testing-library/vue'; import { TolgeeProvider, TolgeeInstance, Tolgee, DevTools, VueTolgee, } from '..'; import { FormatIcu } from '@tolgee/format-icu'; import { mockCoreFetchAsync } from '@tolgee/testing/fetchMock'; const API_URL = 'http://localhost'; const API_KEY = 'dummyApiKey'; const TestComponent = { template: `
{{ $t("hello_world") }}
{{ $t('english_fallback', 'Default value') }}
{{ $t("non_existant", "Default value") }}
`, }; const WrapperComponent = { components: { TestComponent, TolgeeProvider }, template: ` `, props: ['tolgee'], }; describe('TolgeeProvider integration', () => { let tolgee: TolgeeInstance; describe('regular settings', () => { let resolveEnglish; let resolveCzech; beforeEach(async () => { const fetchMock = mockCoreFetchAsync(); resolveCzech = fetchMock.csTranslations.resolve; resolveEnglish = fetchMock.enTranslations.resolve; fetchMock.fetch.enableMocks(); tolgee = Tolgee().use(DevTools()).use(FormatIcu()).init({ apiKey: API_KEY, apiUrl: API_URL, defaultLanguage: 'cs', fallbackLanguage: 'en', }); render(WrapperComponent, { props: { tolgee, fallback: 'Loading...', }, global: { plugins: [[VueTolgee, { tolgee }]] }, }); }); it('shows correctly loading, fallback and default value', async () => { await waitFor(() => { expect(screen.queryByText('Loading...')?.innerHTML).toContain( 'Loading...' ); }); resolveCzech(); await waitFor(() => { expect(screen.queryByText('Loading...')?.innerHTML).toContain( 'Loading...' ); }); resolveEnglish(); await waitFor(() => { expect(screen.queryByTestId('hello_world').innerHTML).toContain( 'Ahoj světe!' ); expect(screen.queryByTestId('english_fallback').innerHTML).toContain( 'English fallback' ); expect(screen.queryByTestId('non_existant').innerHTML).toContain( 'Default value' ); }); }); }); });