towerops/test/towerops_web/live/maintenance_live/helpers_test.exs
Graham McIntire 7aca7a4862 test: increase coverage from 74.24% to 74.84%
Add tests for proto decode/encode validation edge cases, assert/401 plugs,
authorization policy, identifier normalization, telemetry handlers, GeoIP
parsing, agent helpers, maintenance helpers, and Ecto query modules.
2026-05-07 11:20:29 -05:00

56 lines
1.7 KiB
Elixir

defmodule ToweropsWeb.MaintenanceLive.HelpersTest do
use ExUnit.Case, async: true
alias ToweropsWeb.MaintenanceLive.Helpers
describe "status_for/1" do
test "returns active for current windows" do
now = DateTime.utc_now()
window = %{starts_at: DateTime.add(now, -60, :second), ends_at: DateTime.add(now, 60, :second)}
assert Helpers.status_for(window) == :active
end
end
describe "scope_label/1" do
test "formats device, site, and org-wide labels" do
assert Helpers.scope_label(%{device: %{name: "Core"}, site: nil}) == "Device: Core"
assert Helpers.scope_label(%{device: nil, site: %{name: "HQ"}}) == "Site: HQ"
assert Helpers.scope_label(%{device: nil, site: nil}) == "Org-wide"
end
end
describe "status_label/1" do
test "returns Active for :active status" do
assert Helpers.status_label(:active) == "Active"
end
test "returns Upcoming for :upcoming status" do
assert Helpers.status_label(:upcoming) == "Upcoming"
end
test "returns Past for :past status" do
assert Helpers.status_label(:past) == "Past"
end
end
describe "format_datetime/2" do
test "formats the datetime with the provided timezone" do
datetime = ~U[2026-01-15 14:34:00Z]
assert Helpers.format_datetime(datetime, "Etc/UTC") == "Jan 15, 2026 02:34 PM"
end
test "falls back to UTC when timezone is nil" do
datetime = ~U[2026-01-15 14:34:00Z]
assert Helpers.format_datetime(datetime, nil) == "Jan 15, 2026 02:34 PM"
end
test "falls back to UTC formatting for invalid timezone" do
datetime = ~U[2026-01-15 14:34:00Z]
assert Helpers.format_datetime(datetime, "Invalid/Zone") =~ "UTC"
end
end
end