import { waitFor, screen } from '@testing-library/dom';
import { TolgeeCore, JioTranslateInstance } from '@jiotranslate/core-beta';
import { TOLGEE_ATTRIBUTE_NAME } from '../constants';
import { InContextTools } from '../InContextTools';
(['invisible', 'text'] as const).forEach((observerType) => {
describe(`observer ${observerType}`, () => {
const MyTolgee = () =>
TolgeeCore()
.use(InContextTools())
.updateDefaults({
language: 'en',
staticData: { en: { test: 'Hello world' } },
observerType,
});
let tolgee: JioTranslateInstance;
afterEach(() => {
tolgee.stop();
});
it('pass to parent', async () => {
tolgee = MyTolgee().init({ observerOptions: { passToParent: ['b'] } });
await tolgee.run();
document.body.innerHTML = `
${tolgee.t('test')}
`;
await waitFor(() => {
const element = screen.queryByTestId('parent');
expect(element?.getAttribute(TOLGEE_ATTRIBUTE_NAME)).not.toBeFalsy();
});
});
it('pass to parent function', async () => {
tolgee = MyTolgee().init({
observerOptions: {
passToParent: (e) => e.tagName.toLowerCase() === 'b',
},
});
await tolgee.run();
document.body.innerHTML = `
${tolgee.t('test')}
${tolgee.t('test')}
`;
await waitFor(() => {
expect(
screen.queryByTestId('parent')?.getAttribute(TOLGEE_ATTRIBUTE_NAME)
).not.toBeFalsy();
expect(
screen.queryByTestId('child-i')?.getAttribute(TOLGEE_ATTRIBUTE_NAME)
).not.toBeFalsy();
});
});
it('restricted elements', async () => {
tolgee = MyTolgee().init({
observerOptions: {
restrictedElements: ['main'],
},
});
await tolgee.run();
document.body.innerHTML = `
${tolgee.t('test')}
${tolgee.t('test')}
`;
await waitFor(() => {
const ignored = screen.queryByTestId('ignored');
expect(ignored?.getAttribute(TOLGEE_ATTRIBUTE_NAME)).toBeFalsy();
const normal = screen.queryByTestId('normal');
expect(normal?.getAttribute(TOLGEE_ATTRIBUTE_NAME)).not.toBeFalsy();
});
});
it('tag attributes', async () => {
tolgee = MyTolgee().init({
observerOptions: {
tagAttributes: {
main: ['test'],
'*': ['title'],
},
},
});
await tolgee.run();
document.body.innerHTML = `
`;
await waitFor(() => {
expect(
screen.queryByTestId('main-foo')?.getAttribute(TOLGEE_ATTRIBUTE_NAME)
).toBeFalsy();
expect(
screen.queryByTestId('main-test')?.getAttribute(TOLGEE_ATTRIBUTE_NAME)
).not.toBeFalsy();
expect(
screen
.queryByTestId('main-title')
?.getAttribute(TOLGEE_ATTRIBUTE_NAME)
).not.toBeFalsy();
expect(
screen.queryByTestId('div-test')?.getAttribute(TOLGEE_ATTRIBUTE_NAME)
).toBeFalsy();
expect(
screen.queryByTestId('div-title')?.getAttribute(TOLGEE_ATTRIBUTE_NAME)
).not.toBeFalsy();
});
});
});
});