/** * @jest-environment jsdom */ import { Application } from "stimulus"; import variant_controller from "controllers/variant_controller"; describe("VariantController", () => { beforeAll(() => { // Requires global var from page global.ofn_available_units_sorted = { "weight": { "1.0":{"name":"g","system":"metric"}, "1000.0":{"name":"kg","system":"metric"}, "1000000.0":{"name":"T","system":"metric"} }, "volume":{ "0.001":{"name":"mL","system":"metric"}, "1.0":{"name":"L","system":"metric"}, "4.54609":{"name":"gal","system":"imperial"}, "1000.0":{"name":"kL","system":"metric"} } }; const mockedT = jest.fn(); mockedT.mockImplementation((string, opts) => (string + ', ' + JSON.stringify(opts))); global.I18n = { t: mockedT }; const application = Application.start(); application.register("variant", variant_controller); }); afterAll(() => { delete global.I18n; }) describe("variant_unit_with_scale", () => { beforeEach(() => { document.body.innerHTML = `
`; }); describe("change", () => { it("weight_1000", () => { variant_unit_with_scale.selectedIndex = 1; variant_unit_with_scale.dispatchEvent(new Event("change")); expect(variant_unit.value).toBe("weight"); expect(variant_unit_scale.value).toBe("1000"); }); it("volume_4.54609", () => { variant_unit_with_scale.selectedIndex = 2; variant_unit_with_scale.dispatchEvent(new Event("change")); expect(variant_unit.value).toBe("volume"); expect(variant_unit_scale.value).toBe("4.54609"); }); it("items", () => { variant_unit_with_scale.selectedIndex = 3; variant_unit_with_scale.dispatchEvent(new Event("change")); expect(variant_unit.value).toBe("items"); expect(variant_unit_scale.value).toBe(""); }); }) }); });