import { Component, mount, xml } from "../../src"; import { makeTestFixture, snapshotEverything } from "../helpers"; let fixture: HTMLElement; snapshotEverything(); beforeEach(() => { fixture = makeTestFixture(); }); describe("translation support", () => { test("can translate node content", async () => { class SomeComponent extends Component { static template = xml`
word
`; } await mount(SomeComponent, fixture, { translateFn: (expr: string) => (expr === "word" ? "mot" : expr), }); expect(fixture.innerHTML).toBe("
mot
"); }); test("does not translate node content if disabled", async () => { class SomeComponent extends Component { static template = xml`
word word
`; } await mount(SomeComponent, fixture, { translateFn: (expr: string) => (expr === "word" ? "mot" : expr), }); expect(fixture.innerHTML).toBe("
motword
"); }); test("some attributes are translated", async () => { class SomeComponent extends Component { static template = xml`

word

word

word

word

word

`; } await mount(SomeComponent, fixture, { translateFn: (expr: string) => (expr === "word" ? "mot" : expr), }); expect(fixture.innerHTML).toBe( '

mot

mot

mot

mot

mot

' ); }); test("can set and remove translatable attributes", async () => { class SomeComponent extends Component { static template = xml`
text
`; } await mount(SomeComponent, fixture, { translateFn: (expr: string) => (expr === "word" ? "mot" : expr), translatableAttributes: ["potato", "-label"], }); expect(fixture.innerHTML).toBe( '
text
' ); }); test("translation is done on the trimmed text, with extra spaces readded after", async () => { class SomeComponent extends Component { static template = xml`
word
`; } const translateFn = jest.fn((expr: string) => (expr === "word" ? "mot" : expr)); await mount(SomeComponent, fixture, { translateFn }); expect(fixture.innerHTML).toBe("
mot
"); expect(translateFn).toHaveBeenCalledWith("word"); }); });