/**
 * Tests fuer EnvBadge — KAR-521 Stage 4
 *
 * EnvBadge zeigt eine Environment-Pille (PROD / STAGING / DEV) in Petrol-Tint.
 * Reine Logik-Tests: resolveEnv() Mapping + Label/Tone.
 */

import { describe, it, expect } from "vitest"
import { resolveEnv, ENV_LABEL, ENV_TONE_CLASSES } from "../env-badge"

describe("EnvBadge — resolveEnv", () => {
  it("maps 'production' → 'prod'", () => {
    expect(resolveEnv("production")).toBe("prod")
  })
  it("maps 'preview' → 'staging'", () => {
    expect(resolveEnv("preview")).toBe("staging")
  })
  it("maps 'development' → 'dev'", () => {
    expect(resolveEnv("development")).toBe("dev")
  })
  it("falls back to 'dev' for empty / unknown / undefined input", () => {
    expect(resolveEnv(undefined)).toBe("dev")
    expect(resolveEnv("")).toBe("dev")
    expect(resolveEnv("weird-env-value")).toBe("dev")
  })
  it("accepts explicit 'staging' value", () => {
    expect(resolveEnv("staging")).toBe("staging")
  })
  it("is case-insensitive", () => {
    expect(resolveEnv("PRODUCTION")).toBe("prod")
    expect(resolveEnv("Preview")).toBe("staging")
  })
})

describe("EnvBadge — labels + tone classes", () => {
  it("renders uppercase 3-letter labels", () => {
    expect(ENV_LABEL.prod).toBe("PROD")
    expect(ENV_LABEL.staging).toBe("STAGING")
    expect(ENV_LABEL.dev).toBe("DEV")
  })
  it("uses Petrol-Tint for PROD, neutral grays for STAGING/DEV", () => {
    expect(ENV_TONE_CLASSES.prod).toContain("bg-primary-tint")
    expect(ENV_TONE_CLASSES.staging).toContain("bg-status-yellow")
    expect(ENV_TONE_CLASSES.dev).toContain("bg-status-grey")
  })
})
