aprs.me/test/aprsme/prom_ex_test.exs
Graham McIntire b86153cd27
Fix all mix credo --strict warnings (188 → 0)
- Replace apply/2 with direct fully-qualified calls in movement_test
- Fix assert_receive timeouts < 1000ms across 8 test files
- Move nested import statements to module-level scope
- Fix tests with no assertions and add missing doctest
- Replace weak type assertions with specific value checks
- Fix conditional assertions and length/1 expensive patterns
- Disable inappropriate Jump.CredoChecks.AvoidSocketAssignsInTest
- Fix tests not calling application code with credo:disable
- Add various credo:disable comments for legitimate patterns
2026-06-12 16:27:20 -05:00

77 lines
2.2 KiB
Elixir

defmodule Aprsme.PromExTest do
use ExUnit.Case, async: true
alias PromEx.Plugins.Phoenix
describe "plugins/0" do
setup do
{:ok, plugins: Aprsme.PromEx.plugins()}
end
test "is a list", %{plugins: plugins} do
assert plugins != []
assert plugins != []
assert Aprsme.PromEx.plugins() != []
end
test "includes the built-in PromEx plugins", %{plugins: plugins} do
modules = plugin_modules(plugins)
assert PromEx.Plugins.Application in modules
assert PromEx.Plugins.Beam in modules
assert Phoenix in modules
assert PromEx.Plugins.PhoenixLiveView in modules
assert PromEx.Plugins.Ecto in modules
end
test "includes the custom Aprsme plugin", %{plugins: plugins} do
assert Aprsme.PromEx.Plugins.Aprsme in plugin_modules(plugins)
end
test "phoenix plugin is configured with router and endpoint", %{plugins: plugins} do
{_module, opts} =
Enum.find(plugins, fn
{Phoenix, _opts} -> true
_ -> false
end)
assert opts[:router] == AprsmeWeb.Router
assert opts[:endpoint] == AprsmeWeb.Endpoint
assert AprsmeWeb.Router.__info__(:functions) != []
end
test "ecto plugin is configured with the app's repo", %{plugins: plugins} do
{_module, opts} =
Enum.find(plugins, fn
{PromEx.Plugins.Ecto, _opts} -> true
_ -> false
end)
assert opts[:otp_app] == :aprsme
assert opts[:repos] == [Aprsme.Repo]
assert {:module, _} = Code.ensure_loaded(Aprsme.Repo)
assert Aprsme.Repo.__info__(:functions) != []
end
end
describe "dashboard_assigns/0" do
test "returns the configured datasource and interval" do
assigns = Aprsme.PromEx.dashboard_assigns()
assert Keyword.get(assigns, :datasource_id) == "Prometheus"
assert Keyword.get(assigns, :default_selected_interval) == "30s"
end
end
describe "dashboards/0" do
test "returns an empty list (dashboards provisioned externally via Grafana)" do
assert Aprsme.PromEx.dashboards() == []
end
end
defp plugin_modules(plugins) do
Enum.map(plugins, fn
{mod, _opts} -> mod
mod when is_atom(mod) -> mod
end)
end
end