diff --git a/lib/teiserver_web/controllers/api/spads_controller.ex b/lib/teiserver_web/controllers/api/spads_controller.ex index cc31352bf..ae233c03b 100644 --- a/lib/teiserver_web/controllers/api/spads_controller.ex +++ b/lib/teiserver_web/controllers/api/spads_controller.ex @@ -152,7 +152,7 @@ defmodule TeiserverWeb.API.SpadsController do opts }) - if balance_result do + if is_non_empty_balance_result?(balance_result) do # Get some counts for later team_count = balance_result.team_sizes @@ -215,6 +215,14 @@ defmodule TeiserverWeb.API.SpadsController do end end + def is_non_empty_balance_result?(balance_result) do + cond do + balance_result == nil -> false + balance_result.team_sizes == %{} -> false + true -> true + end + end + @spec get_member_lobby(non_neg_integer()) :: T.lobby() | nil defp get_member_lobby(userid) do case Account.get_client_by_id(userid) do diff --git a/test/teiserver_web/controllers/api/spads_controller_test.exs b/test/teiserver_web/controllers/api/spads_controller_test.exs index 3bf81e04b..13f8c930a 100644 --- a/test/teiserver_web/controllers/api/spads_controller_test.exs +++ b/test/teiserver_web/controllers/api/spads_controller_test.exs @@ -6,6 +6,7 @@ defmodule TeiserverWeb.API.SpadsControllerTest do alias Teiserver.Coordinator alias Teiserver.Account.ClientLib alias Teiserver.Client + alias TeiserverWeb.API.SpadsController import Teiserver.TeiserverTestLib, only: [ @@ -104,5 +105,25 @@ defmodule TeiserverWeb.API.SpadsControllerTest do assert data == %{} end + + test "can detect empty balance result" do + # This is the default balance result when no players + # Defined inside balance_lib.ex + balance_result = %{ + logs: [], + time_taken: 0, + captains: %{}, + deviation: 0, + ratings: %{}, + team_groups: %{}, + team_players: %{}, + team_sizes: %{}, + means: %{}, + stdevs: %{}, + has_parties?: false + } + + assert SpadsController.is_non_empty_balance_result?(balance_result) == false + end end end