diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-12-23 21:10:19 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-12-23 21:10:19 +0300 |
commit | b8d021cb606ac86f41a0ef9dacd133a9677f8414 (patch) | |
tree | aee1c216ff06acc7e3587a9a28af95f0392734f4 /spec/requests | |
parent | 9dbca64417abbec779a219b9e0df9d289d945032 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/requests')
-rw-r--r-- | spec/requests/api/graphql/mutations/releases/create_spec.rb | 22 | ||||
-rw-r--r-- | spec/requests/api/graphql/mutations/releases/update_spec.rb | 10 | ||||
-rw-r--r-- | spec/requests/api/graphql/project/release_spec.rb | 33 | ||||
-rw-r--r-- | spec/requests/api/releases_spec.rb | 35 |
4 files changed, 72 insertions, 28 deletions
diff --git a/spec/requests/api/graphql/mutations/releases/create_spec.rb b/spec/requests/api/graphql/mutations/releases/create_spec.rb index d745eb3083d..79bdcec7944 100644 --- a/spec/requests/api/graphql/mutations/releases/create_spec.rb +++ b/spec/requests/api/graphql/mutations/releases/create_spec.rb @@ -116,11 +116,9 @@ RSpec.describe 'Creation of a new release' do context 'when all available mutation arguments are provided' do it_behaves_like 'no errors' - # rubocop: disable CodeReuse/ActiveRecord it 'returns the new release data' do create_release - release = mutation_response[:release] expected_direct_asset_url = Gitlab::Routing.url_helpers.project_release_url(project, Release.find_by(tag: tag_name)) << "/downloads#{asset_link[:directAssetPath]}" expected_attributes = { @@ -139,21 +137,17 @@ RSpec.describe 'Creation of a new release' do directAssetUrl: expected_direct_asset_url }] } + }, + milestones: { + nodes: [ + { title: '12.3' }, + { title: '12.4' } + ] } - } - - expect(release).to include(expected_attributes) + }.with_indifferent_access - # Right now the milestones are returned in a non-deterministic order. - # This `milestones` test should be moved up into the expect(release) - # above (and `.to include` updated to `.to eq`) once - # https://gitlab.com/gitlab-org/gitlab/-/issues/259012 is addressed. - expect(release['milestones']['nodes']).to match_array([ - { 'title' => '12.4' }, - { 'title' => '12.3' } - ]) + expect(mutation_response[:release]).to eq(expected_attributes) end - # rubocop: enable CodeReuse/ActiveRecord end context 'when only the required mutation arguments are provided' do diff --git a/spec/requests/api/graphql/mutations/releases/update_spec.rb b/spec/requests/api/graphql/mutations/releases/update_spec.rb index 19320c3393c..c9a6c3abd57 100644 --- a/spec/requests/api/graphql/mutations/releases/update_spec.rb +++ b/spec/requests/api/graphql/mutations/releases/update_spec.rb @@ -116,15 +116,7 @@ RSpec.describe 'Updating an existing release' do it 'updates the correct field and returns the release' do update_release - expect(mutation_response[:release]).to include(expected_attributes.merge(updates).except(:milestones)) - - # Right now the milestones are returned in a non-deterministic order. - # Because of this, we need to test milestones separately to allow - # for them to be returned in any order. - # Once https://gitlab.com/gitlab-org/gitlab/-/issues/259012 has been - # fixed, this special milestone handling can be removed. - expected_milestones = expected_attributes.merge(updates)[:milestones] - expect(mutation_response[:release][:milestones][:nodes]).to match_array(expected_milestones[:nodes]) + expect(mutation_response[:release]).to eq(expected_attributes.merge(updates)) end end diff --git a/spec/requests/api/graphql/project/release_spec.rb b/spec/requests/api/graphql/project/release_spec.rb index 99b15ff00b1..ccc2825da25 100644 --- a/spec/requests/api/graphql/project/release_spec.rb +++ b/spec/requests/api/graphql/project/release_spec.rb @@ -76,11 +76,11 @@ RSpec.describe 'Query.project(fullPath).release(tagName)' do it 'finds all milestones associated to a release' do post_query - expected = release.milestones.map do |milestone| + expected = release.milestones.order_by_dates_and_title.map do |milestone| { 'id' => global_id_of(milestone), 'title' => milestone.title } end - expect(data).to match_array(expected) + expect(data).to eq(expected) end end @@ -427,4 +427,33 @@ RSpec.describe 'Query.project(fullPath).release(tagName)' do end end end + + describe 'milestone order' do + let(:path) { path_prefix } + let(:current_user) { stranger } + let_it_be(:project) { create(:project, :public) } + let_it_be_with_reload(:release) { create(:release, project: project) } + + let(:release_fields) do + query_graphql_field(%{ + milestones { + nodes { + title + } + } + }) + end + + let(:actual_milestone_title_order) do + post_query + + data.dig('milestones', 'nodes').map { |m| m['title'] } + end + + before do + release.update!(milestones: [milestone_2, milestone_1]) + end + + it_behaves_like 'correct release milestone order' + end end diff --git a/spec/requests/api/releases_spec.rb b/spec/requests/api/releases_spec.rb index 58b321a255e..70de2e5330b 100644 --- a/spec/requests/api/releases_spec.rb +++ b/spec/requests/api/releases_spec.rb @@ -16,9 +16,6 @@ RSpec.describe API::Releases do project.add_reporter(reporter) project.add_guest(guest) project.add_developer(developer) - - project.repository.add_tag(maintainer, 'v0.1', commit.id) - project.repository.add_tag(maintainer, 'v0.2', commit.id) end describe 'GET /projects/:id/releases' do @@ -294,6 +291,25 @@ RSpec.describe API::Releases do end end + context 'when release is associated to mutiple milestones' do + context 'milestones order' do + let_it_be(:project) { create(:project, :repository, :public) } + let_it_be_with_reload(:release_with_milestones) { create(:release, tag: 'v3.14', project: project) } + + let(:actual_milestone_title_order) do + get api("/projects/#{project.id}/releases/#{release_with_milestones.tag}", non_project_member) + + json_response['milestones'].map { |m| m['title'] } + end + + before do + release_with_milestones.update!(milestones: [milestone_2, milestone_1]) + end + + it_behaves_like 'correct release milestone order' + end + end + context 'when release has link asset' do let!(:link) do create(:release_link, @@ -461,6 +477,10 @@ RSpec.describe API::Releases do } end + before do + initialize_tags + end + it 'accepts the request' do post api("/projects/#{project.id}/releases", maintainer), params: params @@ -858,6 +878,10 @@ RSpec.describe API::Releases do description: 'Super nice release') end + before do + initialize_tags + end + it 'accepts the request' do put api("/projects/#{project.id}/releases/v0.1", maintainer), params: params @@ -1108,4 +1132,9 @@ RSpec.describe API::Releases do end end end + + def initialize_tags + project.repository.add_tag(maintainer, 'v0.1', commit.id) + project.repository.add_tag(maintainer, 'v0.2', commit.id) + end end |