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.
47 lines
1.4 KiB
Elixir
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
|