import { expect, test } from "vitest";
import { withLanguageTagToLocaleMigration } from "./withLanguageTagToLocaleMigration.js";
test("it should set sourceLanguageTag and languageTags if non-existent to make v1 plugins work", async () => {
    const settings = {
        baseLocale: "en",
        locales: ["en", "de"],
    };
    const withMigration = withLanguageTagToLocaleMigration(settings);
    expect(withMigration.baseLocale).toBe("en");
    expect(withMigration.sourceLanguageTag).toBe("en");
    expect(withMigration.locales).toEqual(["en", "de"]);
    expect(withMigration.languageTags).toEqual(["en", "de"]);
});
test("it should set baseLocale and locales if non-existent to ensure first load of an old project works", async () => {
    const settings = {
        sourceLanguageTag: "en",
        languageTags: ["en", "de"],
    };
    const withMigration = withLanguageTagToLocaleMigration(settings);
    expect(withMigration.baseLocale).toBe("en");
    expect(withMigration.sourceLanguageTag).toBe("en");
    expect(withMigration.languageTags).toEqual(["en", "de"]);
    expect(withMigration.locales).toEqual(["en", "de"]);
});
/**
 * Users are expected to treat baseLocale and locales as the source of truth.
 * The alternative is complicated merging logic which is not worth the effort.
 */
test("it should treat baseLocale and locales as source of truth", async () => {
    const settings = {
        baseLocale: "de",
        locales: ["de", "en", "fr", "es"],
        sourceLanguageTag: "en",
        languageTags: ["en", "nl"],
    };
    const withMigration = withLanguageTagToLocaleMigration(settings);
    expect(withMigration.baseLocale).toBe("de");
    expect(withMigration.sourceLanguageTag).toBe("de");
    expect(withMigration.languageTags).toEqual(["de", "en", "fr", "es"]);
    expect(withMigration.locales).toEqual(["de", "en", "fr", "es"]);
});
//# sourceMappingURL=withLanguageTagToLocaleMigration.test.js.map