From 5165883f30ce5160ac65a617e842f5e23e1e79c0 Mon Sep 17 00:00:00 2001 From: "Daniel (dB.) Doubrovkine" Date: Thu, 13 Jul 2023 08:14:24 -0400 Subject: [PATCH] Fix: avoid constantly pinging an inactive team for status. --- slack-gamebot/api/presenters/status_presenter.rb | 2 +- spec/api/endpoints/status_endpoint_spec.rb | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/slack-gamebot/api/presenters/status_presenter.rb b/slack-gamebot/api/presenters/status_presenter.rb index 09b13824..d7b0cf5e 100644 --- a/slack-gamebot/api/presenters/status_presenter.rb +++ b/slack-gamebot/api/presenters/status_presenter.rb @@ -27,7 +27,7 @@ def games h[game.name][:matches_count] = game.matches.count h[game.name][:seasons_count] = game.seasons.count team = game.teams.active.asc(:_id).first - h[game.name][:ping] = team.ping! if team + h[game.name][:ping] = team.ping_if_active! if team end end diff --git a/spec/api/endpoints/status_endpoint_spec.rb b/spec/api/endpoints/status_endpoint_spec.rb index 039cb6fc..e7234980 100644 --- a/spec/api/endpoints/status_endpoint_spec.rb +++ b/spec/api/endpoints/status_endpoint_spec.rb @@ -25,6 +25,22 @@ end end + context 'with a team that has an inactive account' do + let!(:team) { Fabricate(:team, api: true, active: true) } + before do + expect_any_instance_of(Team).to receive(:ping!) { raise Slack::Web::Api::Errors::SlackError, 'account_inactive' } + end + it 'returns a status and deactivates team' do + status = client.status + expect(status.games_count).to eq 1 + game = status.games[team.game.name] + expect(game['teams_count']).to eq 1 + expect(game['active_teams_count']).to eq 1 + expect(game['api_teams_count']).to eq 1 + expect(team.reload.active).to be false + end + end + context 'with a team with api off' do let!(:team) { Fabricate(:team, api: false) } it 'returns total counts anyway' do