defmodule Microwaveprop.Radio.ContactCommonVolumeRadarTest do use Microwaveprop.DataCase, async: true alias Ecto.Changeset alias Microwaveprop.Radio.ContactCommonVolumeRadar @contact_id "00000000-0000-0000-0000-000000000001" @valid_attrs %{ contact_id: "00000000-0000-0000-0000-000000000001", observed_at: ~U[2026-03-28 12:00:00Z] } @all_attrs Map.merge(@valid_attrs, %{ common_volume_km2: 150_000.5, pixel_count: 10_000, rain_pixel_count: 500, heavy_rain_pixel_count: 50, core_pixel_count: 5, max_dbz: 65.5, mean_dbz: 12.3, coverage_pct: 85.2 }) describe "changeset/2" do test "valid with minimum required fields" do changeset = ContactCommonVolumeRadar.changeset(%ContactCommonVolumeRadar{}, @valid_attrs) assert changeset.valid? end test "rejects missing contact_id" do changeset = ContactCommonVolumeRadar.changeset(%ContactCommonVolumeRadar{}, %{ observed_at: ~U[2026-03-28 12:00:00Z] }) assert %{contact_id: ["can't be blank"]} = errors_on(changeset) end test "rejects missing observed_at" do changeset = ContactCommonVolumeRadar.changeset(%ContactCommonVolumeRadar{}, %{ contact_id: @contact_id }) assert %{observed_at: ["can't be blank"]} = errors_on(changeset) end test "accepts all optional fields" do changeset = ContactCommonVolumeRadar.changeset(%ContactCommonVolumeRadar{}, @all_attrs) assert changeset.valid? assert Changeset.get_field(changeset, :common_volume_km2) == 150_000.5 assert Changeset.get_field(changeset, :pixel_count) == 10_000 assert Changeset.get_field(changeset, :rain_pixel_count) == 500 assert Changeset.get_field(changeset, :heavy_rain_pixel_count) == 50 assert Changeset.get_field(changeset, :core_pixel_count) == 5 assert Changeset.get_field(changeset, :max_dbz) == 65.5 assert Changeset.get_field(changeset, :mean_dbz) == 12.3 assert Changeset.get_field(changeset, :coverage_pct) == 85.2 end test "has unique_constraint on contact_id" do changeset = ContactCommonVolumeRadar.changeset(%ContactCommonVolumeRadar{}, @valid_attrs) assert Enum.any?(changeset.constraints, &(&1.type == :unique)) end end end