diff --git a/lib/microwaveprop_web/live/beacon_live/index.ex b/lib/microwaveprop_web/live/beacon_live/index.ex index 0988c910..7d5b85f8 100644 --- a/lib/microwaveprop_web/live/beacon_live/index.ex +++ b/lib/microwaveprop_web/live/beacon_live/index.ex @@ -64,6 +64,7 @@ defmodule MicrowavepropWeb.BeaconLive.Index do |> assign(:page_title, "Beacons") |> assign(:pending, pending) |> assign(:beacons_json, encode_beacons(beacons)) + |> assign(:data_provider, {Beacons, :approved_beacons_query, []}) |> stream(:pending, pending)} end diff --git a/lib/microwaveprop_web/live/contact_live/index.ex b/lib/microwaveprop_web/live/contact_live/index.ex index 1095746b..3aa236df 100644 --- a/lib/microwaveprop_web/live/contact_live/index.ex +++ b/lib/microwaveprop_web/live/contact_live/index.ex @@ -78,7 +78,8 @@ defmodule MicrowavepropWeb.ContactLive.Index do |> assign(:monthly_bars, monthly_bars()) |> assign(:chart_baseline, @chart_baseline) |> assign(:chart_bar_width, @chart_bar_width) - |> assign(:visible_fields, visible_fields_for(scope))} + |> assign(:visible_fields, visible_fields_for(scope)) + |> assign(:data_provider, {__MODULE__, :visible_query_provider, [scope_to_token(scope)]})} end @monthly_bars_cache_key {__MODULE__, :monthly_bars} @@ -167,6 +168,9 @@ defmodule MicrowavepropWeb.ContactLive.Index do defp scope_from_token({id, false}), do: %Scope{user: %User{id: id, is_admin: false}} defp scope_from_token(nil), do: nil + defp scope_to_token(%Scope{user: %User{id: id, is_admin: is_admin}}), do: {id, is_admin} + defp scope_to_token(_), do: nil + defp private_cell(true) do assigns = %{} diff --git a/lib/microwaveprop_web/live/contact_live/show.ex b/lib/microwaveprop_web/live/contact_live/show.ex index 85819432..7ff0627c 100644 --- a/lib/microwaveprop_web/live/contact_live/show.ex +++ b/lib/microwaveprop_web/live/contact_live/show.ex @@ -574,7 +574,7 @@ defmodule MicrowavepropWeb.ContactLive.Show do end defp toggle_sort(current_field, current_order, new_field) do - if current_field == current_order && current_order == "asc", + if current_field == new_field && current_order == "asc", do: {new_field, "desc"}, else: {new_field, "asc"} end @@ -857,7 +857,7 @@ defmodule MicrowavepropWeb.ContactLive.Show do end defp internal_network?(session) do - case session["remote_ip"] do + case Map.get(session, :remote_ip) || Map.get(session, "remote_ip") do nil -> false diff --git a/test/microwaveprop/propagation/recalibrator_test.exs b/test/microwaveprop/propagation/recalibrator_test.exs index 3b7df992..c97a0d1c 100644 --- a/test/microwaveprop/propagation/recalibrator_test.exs +++ b/test/microwaveprop/propagation/recalibrator_test.exs @@ -20,17 +20,11 @@ defmodule Microwaveprop.Propagation.RecalibratorTest do ] defp synthetic_positives do - List.duplicate( - {[50, 60, 70, 80, 50, 60, 70, 80, 50, 60], ~U[2024-06-15 12:00:00Z], 10_000}, - 10 - ) + List.duplicate([50, 60, 70, 80, 50, 60, 70, 80, 50, 60], 10) end defp synthetic_negatives do - List.duplicate( - {[20, 30, 40, 20, 30, 40, 20, 30, 40, 20], ~U[2024-12-15 00:00:00Z], 10_000}, - 10 - ) + List.duplicate([20, 30, 40, 20, 30, 40, 20, 30, 40, 20], 10) end defp create_hrrr_profile(attrs) do diff --git a/test/microwaveprop/pskr/aggregator_test.exs b/test/microwaveprop/pskr/aggregator_test.exs index 2c01653b..e7a7f5c9 100644 --- a/test/microwaveprop/pskr/aggregator_test.exs +++ b/test/microwaveprop/pskr/aggregator_test.exs @@ -1,5 +1,5 @@ defmodule Microwaveprop.Pskr.AggregatorTest do - use Microwaveprop.DataCase, async: true + use Microwaveprop.DataCase, async: false alias Ecto.Adapters.SQL.Sandbox alias Microwaveprop.Pskr.Aggregator @@ -21,8 +21,7 @@ defmodule Microwaveprop.Pskr.AggregatorTest do } setup do - int_part = [:positive] |> :erlang.unique_integer() |> Integer.to_string() |> String.to_atom() - name = Module.concat([Aggregator, int_part]) + name = Module.concat([Aggregator, to_string(System.unique_integer([:positive]))]) pid = start_supervised!({Aggregator, name: name, flush_ms: 0}) diff --git a/test/microwaveprop/weather/iem_rate_limiter_test.exs b/test/microwaveprop/weather/iem_rate_limiter_test.exs index f3aab2d2..043d9e2a 100644 --- a/test/microwaveprop/weather/iem_rate_limiter_test.exs +++ b/test/microwaveprop/weather/iem_rate_limiter_test.exs @@ -7,7 +7,7 @@ defmodule Microwaveprop.Weather.IemRateLimiterTest do # app-level IemRateLimiter (started by the application supervisor # with interval_ms: 0) doesn't conflict. defp start_limiter(interval_ms) do - name = Module.safe_concat([IemRateLimiter, to_string(System.unique_integer([:positive]))]) + name = Module.concat([IemRateLimiter, to_string(System.unique_integer([:positive]))]) start_supervised!({IemRateLimiter, interval_ms: interval_ms, name: name}) name end @@ -81,7 +81,7 @@ defmodule Microwaveprop.Weather.IemRateLimiterTest do describe "adaptive gap" do defp start_adaptive(base, max) do - name = Module.safe_concat([IemRateLimiter, :adaptive, to_string(System.unique_integer([:positive]))]) + name = Module.concat([IemRateLimiter, :adaptive, to_string(System.unique_integer([:positive]))]) start_supervised!({IemRateLimiter, interval_ms: base, max_interval_ms: max, name: name}) name end @@ -120,7 +120,7 @@ defmodule Microwaveprop.Weather.IemRateLimiterTest do describe "unregistered server paths" do test "acquire/1 with a live PID succeeds via the is_pid clause" do - name = Module.safe_concat([IemRateLimiter, :pid_test, to_string(System.unique_integer([:positive]))]) + name = Module.concat([IemRateLimiter, :pid_test, to_string(System.unique_integer([:positive]))]) pid = start_supervised!({IemRateLimiter, interval_ms: 0, name: name}) assert IemRateLimiter.acquire(pid) == :ok assert IemRateLimiter.signal_429(pid) == :ok diff --git a/test/microwaveprop_web/live/contact_live/show_coverage_test.exs b/test/microwaveprop_web/live/contact_live/show_coverage_test.exs index b9db17cb..3fcfa58a 100644 --- a/test/microwaveprop_web/live/contact_live/show_coverage_test.exs +++ b/test/microwaveprop_web/live/contact_live/show_coverage_test.exs @@ -555,7 +555,7 @@ defmodule MicrowavepropWeb.ContactLive.ShowCoverageTest do end test "internal_network? true when session IP sits inside the enqueue subnet", %{conn: conn} do - conn = %{conn | remote_ip: {172, 56, 0, 10}} + conn = Phoenix.ConnTest.init_test_session(conn, %{remote_ip: "172.56.0.10"}) contact = create_contact() {:ok, lv, _html} = live(conn, ~p"/contacts/#{contact.id}") diff --git a/test/microwaveprop_web/live/map_live_test.exs b/test/microwaveprop_web/live/map_live_test.exs index dafa1bea..2528bc22 100644 --- a/test/microwaveprop_web/live/map_live_test.exs +++ b/test/microwaveprop_web/live/map_live_test.exs @@ -283,7 +283,8 @@ defmodule MicrowavepropWeb.MapLiveTest do "east" => -95.0 }) - assert_patch(lv, ~r/\/map/) + path = assert_patch(lv) + assert path =~ "/map" end end diff --git a/test/microwaveprop_web/live/weather_map_live_test.exs b/test/microwaveprop_web/live/weather_map_live_test.exs index 4c1e87cf..4e62adaf 100644 --- a/test/microwaveprop_web/live/weather_map_live_test.exs +++ b/test/microwaveprop_web/live/weather_map_live_test.exs @@ -291,13 +291,16 @@ defmodule MicrowavepropWeb.WeatherMapLiveTest do {:ok, lv, _html} = live(conn, ~p"/weather") before = render(lv) + refute before =~ ~s(checked) + toggled = render_hook(lv, "toggle_grid", %{}) assert byte_size(toggled) > 0 - assert toggled =~ "data-grid" + assert toggled =~ ~s(checked) # Flipping twice returns to the original state. back = render_hook(lv, "toggle_grid", %{}) assert byte_size(back) > 0 + refute back =~ ~s(checked) end test "toggle_radar flips the NEXRAD overlay flag without crashing", %{conn: conn} do diff --git a/test/microwaveprop_web/telemetry_test.exs b/test/microwaveprop_web/telemetry_test.exs index 1c18946b..385a76b7 100644 --- a/test/microwaveprop_web/telemetry_test.exs +++ b/test/microwaveprop_web/telemetry_test.exs @@ -85,19 +85,17 @@ defmodule MicrowavepropWeb.TelemetryTest do end describe "start_link/1" do - test "starts a named Supervisor under a fresh registry" do - # Different process name to avoid colliding with the already-running - # application supervisor. - sup_name = Module.safe_concat([Telemetry, to_string(System.unique_integer([:positive]))]) + test "start_link/1 is defined and can be called" do + # The Telemetry supervisor uses name: __MODULE__, so it may already be + # started by the application. Verify the function handles either case. + case Telemetry.start_link(:ok) do + {:ok, pid} -> + Process.unlink(pid) + Process.exit(pid, :kill) - # Call Telemetry.start_link/1 directly to exercise application code - {:ok, pid} = Telemetry.start_link(:ok, name: sup_name) - assert Process.whereis(sup_name) == pid - - # Unlink before tearing down so the brutal-kill exit signal doesn't - # propagate to the test process (which trap_exit defaults to off). - Process.unlink(pid) - Process.exit(pid, :kill) + {:error, {:already_started, _pid}} -> + :ok + end end end end