/*
Copyright 2025 New Vector Ltd.

SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial
Please see LICENSE files in the repository root for full details.
*/

import { test, expect } from "../../element-web-test";
import { getSampleFilePath } from "../../sample-files";

test.describe("Module loading", () => {
    test.use({
        displayName: "Manny",
    });

    test.describe("Example Module", () => {
        test.use({
            config: {
                brand: "TestBrand",
                modules: ["/modules/example-module.js"],
            },
            page: async ({ page }, use) => {
                await page.route("/modules/example-module.js", async (route) => {
                    await route.fulfill({ path: getSampleFilePath("example-module.js") });
                });
                await use(page);
            },
        });

        const testCases = [
            ["en", "TestBrand module loading successful!"],
            ["de", "TestBrand-Module erfolgreich geladen!"],
        ];

        for (const [lang, message] of testCases) {
            test.describe(`language-${lang}`, () => {
                test.use({
                    config: async ({ config }, use) => {
                        await use({
                            ...config,
                            setting_defaults: {
                                language: lang,
                            },
                        });
                    },
                });

                test("should show alert", async ({ page }) => {
                    const dialogPromise = page.waitForEvent("dialog");
                    await page.goto("/");
                    const dialog = await dialogPromise;
                    expect(dialog.message()).toBe(message);
                });
            });
        }
    });
});
