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(); }); }); }); });