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
path: root/qa
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-09-20 15:11:04 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2021-09-20 15:11:04 +0300
commit41a63a43b8d0c498638af0b14cf854d6a446a35b (patch)
treeef76eae534402b4a2a75ba27b5e81153c2582014 /qa
parent9cc74486f532cbcbf9da100ee00bfe00b145971a (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'qa')
-rw-r--r--qa/qa/resource/group_badge.rb73
-rw-r--r--qa/qa/resource/group_base.rb16
-rw-r--r--qa/qa/specs/features/api/1_manage/bulk_import_group_spec.rb13
3 files changed, 100 insertions, 2 deletions
diff --git a/qa/qa/resource/group_badge.rb b/qa/qa/resource/group_badge.rb
new file mode 100644
index 00000000000..fd76f066e8b
--- /dev/null
+++ b/qa/qa/resource/group_badge.rb
@@ -0,0 +1,73 @@
+# frozen_string_literal: true
+
+module QA
+ module Resource
+ class GroupBadge < Base
+ attributes :id,
+ :name,
+ :link_url,
+ :image_url,
+ :group
+
+ # API get path
+ #
+ # @return [String]
+ def api_get_path
+ "/groups/#{CGI.escape(group.full_path)}/badges/#{id}"
+ end
+
+ # API post path
+ #
+ # @return [String]
+ def api_post_path
+ "/groups/#{CGI.escape(group.full_path)}/badges"
+ end
+
+ # Params for label creation
+ #
+ # @return [Hash]
+ def api_post_body
+ {
+ link_url: link_url,
+ image_url: image_url
+ }
+ end
+
+ # Override base method as this particular resource does not expose a web_url property
+ #
+ # @param [Hash] resource
+ # @return [String]
+ def resource_web_url(_resource); end
+
+ # Object comparison
+ #
+ # @param [QA::Resource::GroupBadge] other
+ # @return [Boolean]
+ def ==(other)
+ other.is_a?(GroupBadge) && comparable_badge == other.comparable_badge
+ end
+
+ # Override inspect for a better rspec failure diff output
+ #
+ # @return [String]
+ def inspect
+ JSON.pretty_generate(comparable_badge)
+ end
+
+ protected
+
+ # Return subset of fields for comparing badges
+ #
+ # @return [Hash]
+ def comparable_badge
+ reload! unless api_response
+
+ api_response.slice(
+ :name,
+ :link_url,
+ :image_url
+ )
+ end
+ end
+ end
+end
diff --git a/qa/qa/resource/group_base.rb b/qa/qa/resource/group_base.rb
index a1e5b19f409..a483a8e0462 100644
--- a/qa/qa/resource/group_base.rb
+++ b/qa/qa/resource/group_base.rb
@@ -46,6 +46,22 @@ module QA
end
end
+ # Get group badges
+ #
+ # @return [Array<QA::Resource::GroupBadge>]
+ def badges
+ parse_body(api_get_from("#{api_get_path}/badges")).map do |badge|
+ GroupBadge.init do |resource|
+ resource.api_client = api_client
+ resource.group = self
+ resource.id = badge[:id]
+ resource.name = badge[:name]
+ resource.link_url = badge[:link_url]
+ resource.image_url = badge[:image_url]
+ end
+ end
+ end
+
# API get path
#
# @return [String]
diff --git a/qa/qa/specs/features/api/1_manage/bulk_import_group_spec.rb b/qa/qa/specs/features/api/1_manage/bulk_import_group_spec.rb
index 1422dd5a029..cf81802ee13 100644
--- a/qa/qa/specs/features/api/1_manage/bulk_import_group_spec.rb
+++ b/qa/qa/specs/features/api/1_manage/bulk_import_group_spec.rb
@@ -89,7 +89,7 @@ module QA
end
end
- context 'with milestones' do
+ context 'with milestones and badges' do
let(:source_milestone) do
Resource::GroupMilestone.fabricate_via_api! do |milestone|
milestone.api_client = api_client
@@ -99,10 +99,17 @@ module QA
before do
source_milestone
+
+ Resource::GroupBadge.fabricate_via_api! do |badge|
+ badge.api_client = api_client
+ badge.group = source_group
+ badge.link_url = "http://example.com/badge"
+ badge.image_url = "http://shields.io/badge"
+ end
end
it(
- 'successfully imports group milestones',
+ 'successfully imports group milestones and badges',
testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/quality/test_cases/2245'
) do
expect { imported_group.import_status }.to eventually_eq('finished').within(import_wait_duration)
@@ -113,6 +120,8 @@ module QA
expect(imported_milestone.iid).to eq(source_milestone.iid)
expect(imported_milestone.created_at).to eq(source_milestone.created_at)
expect(imported_milestone.updated_at).to eq(source_milestone.updated_at)
+
+ expect(imported_group.badges).to eq(source_group.badges)
end
end
end