import { describe, expect, it } from "vitest" import { DEFAULT_LOCALE_ENV_VAR, FALLBACK_LOCALE, isLocale, LOCALE_COOKIE_MAX_AGE_SECONDS, LOCALE_COOKIE_NAME, resolveDefaultLocale, resolveLocale, SUPPORTED_LOCALES, } from "@/i18n/locales" describe("i18n locales", () => { it("defines exactly English and Spanish with an env-configured default", () => { expect(SUPPORTED_LOCALES).toEqual(["en", "es"]) expect(FALLBACK_LOCALE).toBe("en") expect(DEFAULT_LOCALE_ENV_VAR).toBe("STOCK_MANAGER_DEFAULT_LOCALE") expect(LOCALE_COOKIE_NAME).toBe("stock-manager-locale") expect(LOCALE_COOKIE_MAX_AGE_SECONDS).toBe(60 * 60 * 24 * 365) }) it("accepts only exact supported locale codes", () => { expect(isLocale("en")).toBe(true) expect(isLocale("es")).toBe(true) for (const value of ["", "ES", "es-MX", "fr", undefined, null, 1]) { expect(isLocale(value)).toBe(false) } }) it("resolves valid locale cookie values and falls back to the configured default for invalid values", () => { expect(resolveLocale("es", "en")).toBe("es") expect(resolveLocale("en", "es")).toBe("en") for (const value of ["", "ES", "es-MX", "fr", undefined, null, 1]) { expect(resolveLocale(value, "es")).toBe("es") expect(resolveLocale(value, "en")).toBe("en") } }) it("resolves the configured default locale from env-like values with a safe English fallback", () => { expect(resolveDefaultLocale("es")).toBe("es") expect(resolveDefaultLocale("en")).toBe("en") for (const value of ["", "ES", "es-MX", "fr", undefined, null, 1]) { expect(resolveDefaultLocale(value)).toBe("en") } }) })