From 6dff05b5e60c4180fe950fa89e04963acf922bac Mon Sep 17 00:00:00 2001 From: Malaber <32635600+Malaber@users.noreply.github.com> Date: Thu, 13 Jun 2019 00:45:44 +0200 Subject: [PATCH] Test AdvanceTeamsInIntermediateStage Interactor --- ...s_in_intermediate_stage_interactor_spec.rb | 40 +++++++++++++++++-- 1 file changed, 37 insertions(+), 3 deletions(-) diff --git a/spec/interactors/advance_teams_in_intermediate_stage_interactor_spec.rb b/spec/interactors/advance_teams_in_intermediate_stage_interactor_spec.rb index cdb13ce..d6c2165 100644 --- a/spec/interactors/advance_teams_in_intermediate_stage_interactor_spec.rb +++ b/spec/interactors/advance_teams_in_intermediate_stage_interactor_spec.rb @@ -1,18 +1,52 @@ # frozen_string_literal: true RSpec.describe AdvanceTeamsInIntermediateStage do + shared_examples_for 'succeeding context' do + it 'succeeds' do + expect(context).to be_a_success + end + end + + shared_examples_for 'failing context' do + it 'fails' do + expect(context).to be_a_failure + end + end + context 'intermediate_stage is nil' do let(:context) do AdvanceTeamsInIntermediateStage.call(intermediate_stage: nil) end - it 'succeeds' do - expect(context).to be_a_success - end + it_behaves_like 'succeeding context' it 'doesn\'t call PopulateMatchBelow' do expect(PopulateMatchBelowAndSave).not_to receive(:call) context end end + + context 'intermediate_stage is an realistic stage' do + let(:context) do + AdvanceTeamsInIntermediateStage.call(intermediate_stage: create(:playoff_stage, match_type: :single_team_match)) + end + + context 'PopulateMatchBelow succeeds' do + before do + expect(class_double('PopulateMatchBelowAndSave').as_stubbed_const(transfer_nested_constants: true)) + .to receive(:call).exactly(4).times.and_return(double(:context, success?: true)) + end + + it_behaves_like 'succeeding context' + end + + context 'PopulateMatchBelow fails' do + before do + expect(class_double('PopulateMatchBelowAndSave').as_stubbed_const(transfer_nested_constants: true)) + .to receive(:call).and_return(double(:context, success?: false)) + end + + it_behaves_like 'failing context' + end + end end