import { describe, expect, it } from "vitest"

import { ergebnisText } from "./HistorienImport"

/* Der Ergebnissatz ist die einzige Stelle des Imports, die aus Zahlen Sprache
   macht - und die einzige mit Regeln, die man beim Umbauen versehentlich
   verletzt (Einzahl/Mehrzahl, Weglassen leerer Posten). Der Rest der
   Komponente ist Fenster-Verwaltung und wird vom Seiten-Rendertest
   mitgenommen. */
describe("ergebnisText", () => {
  it("nennt angelegte Fahrten immer, auch wenn es keine waren", () => {
    expect(ergebnisText({ fahrten_angelegt: 0 })).toBe("0 Fahrten angelegt")
  })

  it("setzt die Einzahl bei genau einer Fahrt", () => {
    expect(ergebnisText({ fahrten_angelegt: 1 })).toBe("1 Fahrt angelegt")
  })

  it("laesst leere Posten weg statt Nullen aufzuzaehlen", () => {
    const text = ergebnisText({
      fahrten_angelegt: 3,
      fahrten_uebersprungen: 0,
      tankvorgaenge_angelegt: 0,
      batterie_tage: 0,
    })
    expect(text).toBe("3 Fahrten angelegt")
  })

  it("haengt die uebrigen Posten in fester Reihenfolge an", () => {
    const text = ergebnisText({
      fahrten_angelegt: 2,
      fahrten_uebersprungen: 5,
      fahrten_zu_kurz: 1,
      tankvorgaenge_angelegt: 1,
      batterie_tage: 12,
    })
    expect(text).toBe(
      "2 Fahrten angelegt · 5 bereits vorhanden · 1 Zündung zu kurz für eine Fahrt · " +
        "1 Tankvorgang · 12 Tage Batteriespannung",
    )
  })

  it("setzt auch bei Tankvorgang und Batterietag die Einzahl", () => {
    const text = ergebnisText({ fahrten_angelegt: 0, tankvorgaenge_angelegt: 1, batterie_tage: 1 })
    expect(text).toBe("0 Fahrten angelegt · 1 Tankvorgang · 1 Tag Batteriespannung")
  })

  it("vertraegt ein leeres Ergebnis, ohne undefined auszugeben", () => {
    expect(ergebnisText({})).toBe("0 Fahrten angelegt")
  })
})
