diff --git a/test/towerops/coverages/coverage_test.exs b/test/towerops/coverages/coverage_test.exs index 2ec4cecb..5b6b5cbe 100644 --- a/test/towerops/coverages/coverage_test.exs +++ b/test/towerops/coverages/coverage_test.exs @@ -220,6 +220,44 @@ defmodule Towerops.Coverages.CoverageTest do end end + describe "statuses/0" do + test "returns the canonical list of valid status values" do + list = Coverage.statuses() + assert is_list(list) + assert "draft" in list + assert "computing" in list + end + end + + describe "eirp_dbm/2" do + test "returns tx_power + antenna_gain - cable_loss" do + coverage = %Coverage{tx_power_dbm: 23.0, cable_loss_db: 0.5} + assert Coverage.eirp_dbm(coverage, 16.0) == 23.0 + 16.0 - 0.5 + end + + test "treats nil tx_power and cable_loss as zero" do + coverage = %Coverage{tx_power_dbm: nil, cable_loss_db: nil} + assert Coverage.eirp_dbm(coverage, 10.5) == 10.5 + end + end + + describe "location/1" do + test "returns the per-coverage override when set" do + coverage = %Coverage{latitude_override: 30.27, longitude_override: -97.74} + assert Coverage.location(coverage) == {30.27, -97.74} + end + + test "falls back to site coordinates when override is unset" do + coverage = %Coverage{site: %{latitude: 32.0, longitude: -96.5}} + assert Coverage.location(coverage) == {32.0, -96.5} + end + + test "returns nil when neither override nor site coordinates are present" do + assert Coverage.location(%Coverage{}) == nil + assert Coverage.location(%Coverage{site: %{latitude: nil, longitude: nil}}) == nil + end + end + defp changeset_error?(changeset, field) do Keyword.has_key?(changeset.errors, field) end