prop/test/mix/tasks/reset_enrichment_test.exs
Graham McIntire 254e64dedc
Rename qsos to contacts throughout codebase, keep DB table name
Rename all modules, functions, variables, routes, and UI text from
qso/qsos to contact/contacts. Database table stays as "qsos" to avoid
migration. Add /qsos -> /contacts redirects for old URLs.
2026-04-01 11:25:04 -05:00

65 lines
1.7 KiB
Elixir

defmodule Mix.Tasks.ResetEnrichmentTest do
use Microwaveprop.DataCase, async: true
alias Microwaveprop.Radio.Contact
alias Mix.Tasks.ResetEnrichment
defp create_queued_qso do
import Ecto.Query
default = %{
station1: "W5XD",
station2: "K5TR",
qso_timestamp: ~U[2026-03-28 18:00:00Z],
mode: "CW",
band: Decimal.new("1296"),
grid1: "EM12",
grid2: "EM00",
pos1: %{"lat" => 32.9, "lon" => -97.0},
pos2: %{"lat" => 30.3, "lon" => -97.7},
distance_km: Decimal.new("295")
}
{:ok, contact} =
%Contact{}
|> Contact.changeset(default)
|> Repo.insert()
# Set all queued flags to true (not in changeset cast)
Contact
|> where([q], q.id == ^contact.id)
|> Repo.update_all(set: [weather_queued: true, hrrr_queued: true, iemre_queued: true, terrain_queued: true])
Repo.get!(Contact, contact.id)
end
describe "run/1" do
test "resets weather_queued, hrrr_queued, and iemre_queued to false" do
contact = create_queued_qso()
assert contact.weather_queued == true
assert contact.hrrr_queued == true
assert contact.iemre_queued == true
ResetEnrichment.run([])
updated = Repo.get!(Contact, contact.id)
assert updated.weather_queued == false
assert updated.hrrr_queued == false
assert updated.iemre_queued == false
end
test "does not reset terrain_queued" do
contact = create_queued_qso()
ResetEnrichment.run([])
updated = Repo.get!(Contact, contact.id)
assert updated.terrain_queued == true
end
test "handles empty database" do
assert :ok = ResetEnrichment.run([])
end
end
end