summaryrefslogtreecommitdiff
path: root/qa/spec/support/formatters/allure_metadata_formatter_spec.rb
blob: d84e190fd56b9c00e26ab36d1f562c80670639bd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# frozen_string_literal: true

describe QA::Support::Formatters::AllureMetadataFormatter do
  include QA::Support::Helpers::StubEnv

  let(:formatter) { described_class.new(StringIO.new) }

  let(:rspec_example_notification) { double('RSpec::Core::Notifications::ExampleNotification', example: rspec_example) }
  let(:rspec_example) do
    double(
      'RSpec::Core::Example',
      tms: nil,
      issue: nil,
      add_link: nil,
      attempts: 0,
      file_path: 'file/path/spec.rb',
      execution_result: instance_double("RSpec::Core::Example::ExecutionResult", status: :passed),
      metadata: {
        testcase: 'testcase',
        quarantine: { issue: 'issue' }
      }
    )
  end

  let(:ci_job) { 'ee:relative 5' }
  let(:ci_job_url) { 'url' }

  before do
    stub_env('CI', 'true')
    stub_env('CI_JOB_NAME', ci_job)
    stub_env('CI_JOB_URL', ci_job_url)
  end

  it "adds additional data to report" do
    formatter.example_finished(rspec_example_notification)

    aggregate_failures do
      expect(rspec_example).to have_received(:issue).with('Quarantine issue', 'issue')
      expect(rspec_example).to have_received(:add_link).with(name: "Job(#{ci_job})", url: ci_job_url)
      expect(rspec_example).to have_received(:issue).with(
        'Failure issues',
        'https://gitlab.com/gitlab-org/gitlab/-/issues?scope=all&state=opened&search=spec.rb'
      )
    end
  end
end