diff options
Diffstat (limited to 'spec/lib/gitlab/ci/reports/test_case_spec.rb')
-rw-r--r-- | spec/lib/gitlab/ci/reports/test_case_spec.rb | 55 |
1 files changed, 23 insertions, 32 deletions
diff --git a/spec/lib/gitlab/ci/reports/test_case_spec.rb b/spec/lib/gitlab/ci/reports/test_case_spec.rb index 7fb208213c1..a142846fc18 100644 --- a/spec/lib/gitlab/ci/reports/test_case_spec.rb +++ b/spec/lib/gitlab/ci/reports/test_case_spec.rb @@ -6,39 +6,26 @@ RSpec.describe Gitlab::Ci::Reports::TestCase do describe '#initialize' do let(:test_case) { described_class.new(params) } - context 'when both classname and name are given' do - context 'when test case is passed' do - let(:job) { build(:ci_build) } - let(:params) { attributes_for(:test_case).merge!(job: job) } - - it 'initializes an instance' do - expect { test_case }.not_to raise_error - - expect(test_case.name).to eq('test-1') - expect(test_case.classname).to eq('trace') - expect(test_case.file).to eq('spec/trace_spec.rb') - expect(test_case.execution_time).to eq(1.23) - expect(test_case.status).to eq(described_class::STATUS_SUCCESS) - expect(test_case.system_output).to be_nil - expect(test_case.job).to be_present - end - end + context 'when required params are given' do + let(:job) { build(:ci_build) } + let(:params) { attributes_for(:test_case).merge!(job: job) } - context 'when test case is failed' do - let(:job) { build(:ci_build) } - let(:params) { attributes_for(:test_case, :failed).merge!(job: job) } - - it 'initializes an instance' do - expect { test_case }.not_to raise_error - - expect(test_case.name).to eq('test-1') - expect(test_case.classname).to eq('trace') - expect(test_case.file).to eq('spec/trace_spec.rb') - expect(test_case.execution_time).to eq(1.23) - expect(test_case.status).to eq(described_class::STATUS_FAILED) - expect(test_case.system_output) - .to eq('Failure/Error: is_expected.to eq(300) expected: 300 got: -100') - end + it 'initializes an instance', :aggregate_failures do + expect { test_case }.not_to raise_error + + expect(test_case).to have_attributes( + suite_name: params[:suite_name], + name: params[:name], + classname: params[:classname], + file: params[:file], + execution_time: params[:execution_time], + status: params[:status], + system_output: params[:system_output], + job: params[:job] + ) + + key = "#{test_case.suite_name}_#{test_case.classname}_#{test_case.name}" + expect(test_case.key).to eq(Digest::SHA256.hexdigest(key)) end end @@ -53,6 +40,10 @@ RSpec.describe Gitlab::Ci::Reports::TestCase do end end + context 'when suite_name is missing' do + it_behaves_like 'param is missing', :suite_name + end + context 'when classname is missing' do it_behaves_like 'param is missing', :classname end |