Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'qa/spec/tools/reliable_report_spec.rb')
-rw-r--r--qa/spec/tools/reliable_report_spec.rb76
1 files changed, 68 insertions, 8 deletions
diff --git a/qa/spec/tools/reliable_report_spec.rb b/qa/spec/tools/reliable_report_spec.rb
index 318b0833f62..d5c898779b8 100644
--- a/qa/spec/tools/reliable_report_spec.rb
+++ b/qa/spec/tools/reliable_report_spec.rb
@@ -5,7 +5,6 @@ describe QA::Tools::ReliableReport do
subject(:run) { described_class.run(range: range, report_in_issue_and_slack: create_issue) }
- let(:gitlab_response) { instance_double("RestClient::Response", code: 200, body: { web_url: issue_url }.to_json) }
let(:slack_notifier) { instance_double("Slack::Notifier", post: nil) }
let(:influx_client) { instance_double("InfluxDB2::Client", create_query_api: query_api) }
let(:query_api) { instance_double("InfluxDB2::QueryApi") }
@@ -71,6 +70,7 @@ describe QA::Tools::ReliableReport do
|> filter(fn: (r) => r.status != "pending" and
r.merge_request == "false" and
r.quarantined == "false" and
+ r.smoke == "false" and
r.reliable == "#{reliable}" and
r._field == "id"
)
@@ -117,7 +117,7 @@ describe QA::Tools::ReliableReport do
stub_env("CI_API_V4_URL", "gitlab_api_url")
stub_env("GITLAB_ACCESS_TOKEN", "gitlab_token")
- allow(RestClient::Request).to receive(:execute).and_return(gitlab_response)
+ allow(RestClient::Request).to receive(:execute)
allow(Slack::Notifier).to receive(:new).and_return(slack_notifier)
allow(InfluxDB2::Client).to receive(:new).and_return(influx_client)
@@ -138,6 +138,37 @@ describe QA::Tools::ReliableReport do
context "with report creation" do
let(:create_issue) { "true" }
+ let(:iid) { 2 }
+ let(:old_iid) { 1 }
+ let(:issue_endpoint) { "gitlab_api_url/projects/278964/issues" }
+
+ let(:common_api_args) do
+ {
+ verify_ssl: false,
+ headers: { "PRIVATE-TOKEN" => "gitlab_token" }
+ }
+ end
+
+ let(:create_issue_response) do
+ instance_double(
+ "RestClient::Response",
+ code: 200,
+ body: { web_url: issue_url, iid: iid }.to_json
+ )
+ end
+
+ let(:open_issues_response) do
+ instance_double(
+ "RestClient::Response",
+ code: 200,
+ body: [{ web_url: issue_url, iid: iid }, { web_url: issue_url, iid: old_iid }].to_json
+ )
+ end
+
+ let(:success_response) do
+ instance_double("RestClient::Response", code: 200, body: {}.to_json)
+ end
+
let(:issue_body) do
<<~TXT.strip
[[_TOC_]]
@@ -156,19 +187,48 @@ describe QA::Tools::ReliableReport do
TXT
end
- it "creates report issue", :aggregate_failures do
+ before do
+ allow(RestClient::Request).to receive(:execute).exactly(4).times.and_return(
+ create_issue_response,
+ open_issues_response,
+ success_response,
+ success_response
+ )
+ end
+
+ it "creates report issue" do
expect { run }.to output.to_stdout
expect(RestClient::Request).to have_received(:execute).with(
method: :post,
- url: "gitlab_api_url/projects/278964/issues",
- verify_ssl: false,
- headers: { "PRIVATE-TOKEN" => "gitlab_token" },
+ url: issue_endpoint,
payload: {
title: "Reliable e2e test report",
description: issue_body,
- labels: "Quality,test,type::maintenance,reliable test report,automation:ml"
- }
+ labels: "reliable test report,Quality,test,type::maintenance,automation:ml"
+ },
+ **common_api_args
+ )
+ expect(RestClient::Request).to have_received(:execute).with(
+ method: :get,
+ url: "#{issue_endpoint}?labels=reliable test report&state=opened",
+ **common_api_args
+ )
+ expect(RestClient::Request).to have_received(:execute).with(
+ method: :put,
+ url: "#{issue_endpoint}/#{old_iid}",
+ payload: {
+ state_event: "close"
+ },
+ **common_api_args
+ )
+ expect(RestClient::Request).to have_received(:execute).with(
+ method: :post,
+ url: "#{issue_endpoint}/#{old_iid}/notes",
+ payload: {
+ body: "Closed issue in favor of ##{iid}"
+ },
+ **common_api_args
)
expect(slack_notifier).to have_received(:post).with(
icon_emoji: ":tanuki-protect:",