49 lines
1.5 KiB
TypeScript
49 lines
1.5 KiB
TypeScript
import { describe, expect, it } from "vitest"
|
|
|
|
import {
|
|
DEFAULT_LOCALE_ENV_VAR,
|
|
FALLBACK_LOCALE,
|
|
isLocale,
|
|
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")
|
|
})
|
|
|
|
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")
|
|
}
|
|
})
|
|
})
|