prop/test/microwaveprop/radio/contact_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

47 lines
1.4 KiB
Elixir

defmodule Microwaveprop.Radio.ContactTest do
use Microwaveprop.DataCase, async: true
alias Microwaveprop.Radio.Contact
@valid_attrs %{
station1: "W1AW",
station2: "K3LR",
qso_timestamp: ~U[2026-03-28 12:00:00Z],
grid1: "FN31pr",
grid2: "EN91jm",
pos1: %{lat: 41.714, lng: -72.727},
pos2: %{lat: 41.049, lng: -80.166},
mode: "SSB",
band: Decimal.new("144.2"),
distance_km: Decimal.new("623.4")
}
describe "changeset/2" do
test "valid attributes" do
changeset = Contact.changeset(%Contact{}, @valid_attrs)
assert changeset.valid?
end
test "requires station1, station2, qso_timestamp, mode, and band" do
changeset = Contact.changeset(%Contact{}, %{})
assert %{
station1: ["can't be blank"],
station2: ["can't be blank"],
qso_timestamp: ["can't be blank"],
mode: ["can't be blank"],
band: ["can't be blank"]
} = errors_on(changeset)
end
test "persists to the database" do
changeset = Contact.changeset(%Contact{}, @valid_attrs)
assert {:ok, contact} = Repo.insert(changeset)
assert contact.station1 == "W1AW"
assert contact.station2 == "K3LR"
assert contact.mode == "SSB"
assert Decimal.equal?(contact.band, Decimal.new("144.2"))
assert Decimal.equal?(contact.distance_km, Decimal.new("623.4"))
end
end
end