defmodule ToweropsWeb.ConfigTimelineLiveHelpersTest do use ExUnit.Case, async: true alias ToweropsWeb.ConfigTimelineLive describe "change_size_class/1" do test "> 50 returns error styling" do assert "bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-400" == ConfigTimelineLive.change_size_class(51) assert "bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-400" == ConfigTimelineLive.change_size_class(1_000) end test "21..50 returns warning styling" do assert "bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-400" == ConfigTimelineLive.change_size_class(21) assert "bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-400" == ConfigTimelineLive.change_size_class(50) end test "<= 20 returns info styling" do assert "bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-400" == ConfigTimelineLive.change_size_class(0) assert "bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-400" == ConfigTimelineLive.change_size_class(20) end test "non-integer returns info styling" do assert "bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-400" == ConfigTimelineLive.change_size_class(nil) assert "bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-400" == ConfigTimelineLive.change_size_class("foo") end end describe "timeline_event/1" do test "serializes to ISO timestamp map" do changed_at = ~U[2026-01-15 12:00:00Z] event = %{ id: "evt-1", changed_at: changed_at, sections_changed: ["dhcp", "ospf"], change_size: 42 } assert %{ id: "evt-1", t: "2026-01-15T12:00:00Z", sections: ["dhcp", "ospf"], size: 42 } == ConfigTimelineLive.timeline_event(event) end end end