import * as React from 'react';
import expect from 'expect';
import { render, screen } from '@testing-library/react';
import { useTranslate } from './useTranslate';
import { I18nContext } from './I18nContext';
describe('useTranslate', () => {
const Component = () => {
const translate = useTranslate();
return
{translate('hello')}
;
};
it('should not fail when used outside of a translation provider', () => {
render();
expect(screen.queryAllByText('hello')).toHaveLength(1);
});
it('should use the i18nProvider.translate() method', () => {
render(
'hallo',
changeLocale: () => Promise.resolve(),
getLocale: () => 'de',
}}
>
);
expect(screen.queryAllByText('hello')).toHaveLength(0);
expect(screen.queryAllByText('hallo')).toHaveLength(1);
});
it('should use the i18n provider when using I18nProvider', () => {
render(
'bonjour',
changeLocale: () => Promise.resolve(),
getLocale: () => 'fr',
}}
>
);
expect(screen.queryAllByText('hello')).toHaveLength(0);
expect(screen.queryAllByText('bonjour')).toHaveLength(1);
});
});