From 3887712d23c4e177a78f63b637770fd63f9774b9 Mon Sep 17 00:00:00 2001 From: Graham McIntire Date: Fri, 24 Apr 2026 08:25:36 -0500 Subject: [PATCH] test: LeaderElection cluster status aggregation --- test/aprsme/cluster/leader_election_test.exs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/test/aprsme/cluster/leader_election_test.exs b/test/aprsme/cluster/leader_election_test.exs index 2a0119f..21d07b3 100644 --- a/test/aprsme/cluster/leader_election_test.exs +++ b/test/aprsme/cluster/leader_election_test.exs @@ -341,6 +341,26 @@ defmodule Aprsme.Cluster.LeaderElectionTest do end end + describe "get_cluster_aprs_status/0 clustered mode" do + setup do + original = Application.get_env(:aprsme, :cluster_enabled) + on_exit(fn -> Application.put_env(:aprsme, :cluster_enabled, original || false) end) + :ok + end + + test "clustered mode aggregates local status with cluster_info" do + Application.put_env(:aprsme, :cluster_enabled, true) + status = LeaderElection.get_cluster_aprs_status() + assert is_map(status) + # In clustered mode, cluster_info is added. + if Map.has_key?(status, :cluster_info) do + assert is_map(status.cluster_info) + assert Map.has_key?(status.cluster_info, :total_nodes) + assert Map.has_key?(status.cluster_info, :connected_nodes) + end + end + end + describe "handle_info(:check_cluster_and_elect) direct callback" do test "no-ops when election already forced" do state = %LeaderElection{