Commit 86217866 authored by Grzegorz Bizon's avatar Grzegorz Bizon

Fix warnings argument memoization in CI/CD stage

parent 73fcfb29
...@@ -46,7 +46,11 @@ module Ci ...@@ -46,7 +46,11 @@ module Ci
end end
def has_warnings? def has_warnings?
@warnings ||= statuses.latest.failed_but_allowed.any? if @warnings.nil?
statuses.latest.failed_but_allowed.any?
else
@warnings
end
end end
end end
end end
...@@ -169,10 +169,22 @@ describe Ci::Stage, models: true do ...@@ -169,10 +169,22 @@ describe Ci::Stage, models: true do
describe '#has_warnings?' do describe '#has_warnings?' do
context 'when stage has warnings' do context 'when stage has warnings' do
context 'when using memoized warnings flag' do context 'when using memoized warnings flag' do
let(:stage) { build(:ci_stage, warnings: true) } context 'when there are warnings' do
let(:stage) { build(:ci_stage, warnings: true) }
it 'has warnings' do it 'has memoized warnings' do
expect(stage).to have_warnings expect(stage).not_to receive(:statuses)
expect(stage).to have_warnings
end
end
context 'when there are no warnings' do
let(:stage) { build(:ci_stage, warnings: false) }
it 'has memoized warnings' do
expect(stage).not_to receive(:statuses)
expect(stage).not_to have_warnings
end
end end
end end
...@@ -182,7 +194,8 @@ describe Ci::Stage, models: true do ...@@ -182,7 +194,8 @@ describe Ci::Stage, models: true do
stage: stage_name, pipeline: pipeline) stage: stage_name, pipeline: pipeline)
end end
it 'has warnings' do it 'has warnings calculated from statuses' do
expect(stage).to receive(:statuses).and_call_original
expect(stage).to have_warnings expect(stage).to have_warnings
end end
end end
...@@ -194,7 +207,8 @@ describe Ci::Stage, models: true do ...@@ -194,7 +207,8 @@ describe Ci::Stage, models: true do
pipeline: pipeline) pipeline: pipeline)
end end
it 'does not have warnings' do it 'does not have warnings calculated from statuses' do
expect(stage).to receive(:statuses).and_call_original
expect(stage).not_to have_warnings expect(stage).not_to have_warnings
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment