From c98fba2148f508f8370f61a59ff3d5afdf72e7b7 Mon Sep 17 00:00:00 2001 From: AkashSrivastava Date: Sun, 1 Jul 2018 01:19:08 +0530 Subject: [PATCH 1/2] Merge request Approvals API --- lib/gitlab/client.rb | 1 + lib/gitlab/client/merge_request_approvals.rb | 110 ++++++++++++++ ...ge_request_mr_approvals_configuration.json | 46 ++++++ .../project_mr_approvals_configuration.json | 35 +++++ .../client/merge_request_approvals_spec.rb | 141 ++++++++++++++++++ 5 files changed, 333 insertions(+) create mode 100644 lib/gitlab/client/merge_request_approvals.rb create mode 100644 spec/fixtures/merge_request_mr_approvals_configuration.json create mode 100644 spec/fixtures/project_mr_approvals_configuration.json create mode 100644 spec/gitlab/client/merge_request_approvals_spec.rb diff --git a/lib/gitlab/client.rb b/lib/gitlab/client.rb index 49b098a62..f6f32dcf6 100644 --- a/lib/gitlab/client.rb +++ b/lib/gitlab/client.rb @@ -20,6 +20,7 @@ class Client < API include Jobs include Keys include Labels + include MergeRequestApprovals include MergeRequests include Milestones include Namespaces diff --git a/lib/gitlab/client/merge_request_approvals.rb b/lib/gitlab/client/merge_request_approvals.rb new file mode 100644 index 000000000..1cde9dcad --- /dev/null +++ b/lib/gitlab/client/merge_request_approvals.rb @@ -0,0 +1,110 @@ +class Gitlab::Client + # Defines methods related to MR Approvals. + # @see https://docs.gitlab.com/ee/api/merge_request_approvals.html + module MergeRequestApprovals + # Gets MR Approval Configuration for a project + # + # @example + # Gitlab.project_mr_approvals_configuration(1) + # + # @param [Integer] project The ID of a project. + # @return [Gitlab::ObjectifiedHash] MR approval configuration information about the project + def project_mr_approvals_configuration(project) + get("/projects/#{url_encode project}/approvals") + end + + # Change MR Approval Configuration for a project + # + # @example + # Gitlab.change_project_mr_approvals_configuration(1, {approvals_before_merge: 3}) + # Gitlab.change_project_mr_approvals_configuration(1, {approvals_before_merge: 3, reset_approvals_on_push: true}) + # Gitlab.change_project_mr_approvals_configuration(1, {approvals_before_merge: 3, disable_overriding_approvers_per_merge_request: false}) + # + # @param [Integer] project(required) The ID of a project. + # @option options [Integer] :approvals_before_merge(optional) How many approvals are required before an MR can be merged + # @option options [Boolean] :reset_approvals_on_push(optional) Reset approvals on a new push + # @option options [Boolean] :disable_overriding_approvers_per_merge_request(optional) Allow/Disallow overriding approvers per MR + # @return [Gitlab::ObjectifiedHash] MR approval configuration information about the project + def change_project_mr_approvals_configuration(project, options = {}) + post("/projects/#{url_encode project}/approvals", body: options) + end + + # Change allowed approvers and approver groups for a project + # + # @example + # Gitlab.change_project_approvers(1, {approver_ids: [5], approver_groups: [1]}) + # + # @param [Integer] project(required) The ID of a project. + # @option options [Array] :approver_ids(optional) An array of User IDs that can approve MRs + # @option options [Array] :approver_group_ids(optional) An array of Group IDs whose members can approve MRs + # @return [Gitlab::ObjectifiedHash] MR approval configuration information about the project + def change_project_approvers(project, options = {}) + put("/projects/#{url_encode project}/approvals", body: options) + end + + # Get Configuration for approvals on a specific Merge Request. + # + # @example + # Gitlab.merge_request_mr_approvals_configuration(1, 5) + # + # @param [Integer] project(required) The ID of a project. + # @param [Integer] merge_request(required) The IID of a merge_request. + # @return [Gitlab::ObjectifiedHash] MR approval configuration information about the merge request + def merge_request_mr_approvals_configuration(project, merge_request) + get("/projects/#{url_encode project}/merge_requests/#{merge_request}/approvals") + end + + # Change configuration for approvals on a specific merge request. + # + # @example + # Gitlab.change_merge_request_mr_approvals_configuration(1, 5, approvals_required: 2) + # + # @param [Integer] project(required) The ID of a project. + # @param [Integer] merge_request(required) The IID of a merge_request. + # @option options [Integer] :approvals_required(required) Approvals required before MR can be merged + # @return [Gitlab::ObjectifiedHash] Updated MR approval configuration information about the merge request + def change_merge_request_mr_approvals_configuration(project, merge_request, options = {}) + post("/projects/#{url_encode project}/merge_requests/#{merge_request}/approvals", body: options) + end + + # Change allowed approvers and approver groups for a merge request + # + # @example + # Gitlab.change_merge_request_approvers(1, 5, {approver_ids: [5], approver_groups: [1]}) + # + # @param [Integer] project(required) The ID of a project. + # @param [Integer] merge_request(required) The IID of a merge_request. + # @option options [Array] :approver_ids(optional) An array of User IDs that can approve MRs + # @option options [Array] :approver_group_ids(optional) An array of Group IDs whose members can approve MRs + # @return [Gitlab::ObjectifiedHash] MR approval configuration information about the project + def change_merge_request_approvers(project, merge_request, options = {}) + put("/projects/#{url_encode project}/merge_requests/#{merge_request}/approvals", body: options) + end + + # Approve a merge request + # + # @example + # Gitlab.approve_merge_request(1, 5) + # Gitlab.approve_merge_request(1, 5, sha: 'fe678da') + # + # @param [Integer] project(required) The ID of a project. + # @param [Integer] merge_request(required) The IID of a merge request. + # @option options [String] :sha(required) The HEAD of the MR + # @return [Gitlab::ObjectifiedHash] MR approval configuration information about the project + def approve_merge_request(project, merge_request, options = {}) + post("/projects/#{url_encode project}/merge_requests/#{merge_request}/approve", body: options) + end + + # Unapprove a merge request + # + # @example + # Gitlab.unapprove_merge_request(1, 5) + # + # @param [Integer] project(required) The ID of a project. + # @param [Integer] merge_request(required) The IID of a merge request. + # @return [void] This API call returns an empty response body. + def unapprove_merge_request(project, merge_request) + post("/projects/#{url_encode project}/merge_requests/#{merge_request}/unapprove") + end + end +end \ No newline at end of file diff --git a/spec/fixtures/merge_request_mr_approvals_configuration.json b/spec/fixtures/merge_request_mr_approvals_configuration.json new file mode 100644 index 000000000..66f385ef7 --- /dev/null +++ b/spec/fixtures/merge_request_mr_approvals_configuration.json @@ -0,0 +1,46 @@ +{ + "id": 5, + "iid": 5, + "project_id": 1, + "title": "Approvals API", + "description": "Test", + "state": "opened", + "created_at": "2016-06-08T00:19:52.638Z", + "updated_at": "2016-06-08T21:20:42.470Z", + "merge_status": "can_be_merged", + "approvals_required": 2, + "approvals_missing": 2, + "approved_by": [], + "approvers": [ + { + "user": { + "name": "Administrator", + "username": "root", + "id": 1, + "state": "active", + "avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80\u0026d=identicon", + "web_url": "http://localhost:3000/u/root" + } + } + ], + "approver_groups": [ + { + "group": { + "id": 5, + "name": "group1", + "path": "group1", + "description": "", + "visibility": "public", + "lfs_enabled": false, + "avatar_url": null, + "web_url": "http://localhost/groups/group1", + "request_access_enabled": false, + "full_name": "group1", + "full_path": "group1", + "parent_id": null, + "ldap_cn": null, + "ldap_access": null + } + } + ] +} diff --git a/spec/fixtures/project_mr_approvals_configuration.json b/spec/fixtures/project_mr_approvals_configuration.json new file mode 100644 index 000000000..799b5c6c6 --- /dev/null +++ b/spec/fixtures/project_mr_approvals_configuration.json @@ -0,0 +1,35 @@ +{ + "approvers": [ + { + "user": { + "id": 5, + "name": "John Doe6", + "username": "user5", + "state":"active","avatar_url":"https://www.gravatar.com/avatar/4aea8cf834ed91844a2da4ff7ae6b491?s=80\u0026d=identicon","web_url":"http://localhost/user5" + } + } + ], + "approver_groups": [ + { + "group": { + "id": 1, + "name": "group1", + "path": "group1", + "description": "", + "visibility": "public", + "lfs_enabled": false, + "avatar_url": null, + "web_url": "http://localhost/groups/group1", + "request_access_enabled": false, + "full_name": "group1", + "full_path": "group1", + "parent_id": null, + "ldap_cn": null, + "ldap_access": null + } + } + ], + "approvals_before_merge": 3, + "reset_approvals_on_push": false, + "disable_overriding_approvers_per_merge_request": true +} diff --git a/spec/gitlab/client/merge_request_approvals_spec.rb b/spec/gitlab/client/merge_request_approvals_spec.rb new file mode 100644 index 000000000..bd01b3c5c --- /dev/null +++ b/spec/gitlab/client/merge_request_approvals_spec.rb @@ -0,0 +1,141 @@ +require 'spec_helper' + +describe Gitlab::Client do + describe '.project_mr_approvals_configuration' do + before do + stub_get("/projects/1/approvals", 'project_mr_approvals_configuration') + @project_mr_approvals_configuration = Gitlab.project_mr_approvals_configuration(1) + end + + it "gets the correct resource" do + expect(a_get("/projects/1/approvals")).to have_been_made + end + + it "returns the correct objectified hash" do + expect(@project_mr_approvals_configuration).to be_a Gitlab::ObjectifiedHash + end + end + + describe '.change_project_mr_approvals_configuration' do + before do + body = { approvals_before_merge: '3', reset_approvals_on_push: 'false', disable_overriding_approvers_per_merge_request: 'true' } + stub_post("/projects/1/approvals", 'project_mr_approvals_configuration').with(body: body) + @project_mr_approvals_configuration = Gitlab.change_project_mr_approvals_configuration(1, approvals_before_merge: 3, reset_approvals_on_push: false, disable_overriding_approvers_per_merge_request: true) + end + + it 'gets the correct resource' do + body = { approvals_before_merge: '3', reset_approvals_on_push: 'false', disable_overriding_approvers_per_merge_request: 'true' } + expect(a_post("/projects/1/approvals"). + with(body: body)).to have_been_made + end + + it "returns the correct updated configuration" do + expect(@project_mr_approvals_configuration).to be_a Gitlab::ObjectifiedHash + expect(@project_mr_approvals_configuration.approvals_before_merge).to eq 3 + expect(@project_mr_approvals_configuration.reset_approvals_on_push).to eq false + expect(@project_mr_approvals_configuration.disable_overriding_approvers_per_merge_request).to eq true + end + end + + describe '.change_project_approvers' do + before do + body = {"approver_ids": ['5'], "approver_group_ids": ['1']} + stub_put("/projects/1/approvals", 'project_mr_approvals_configuration').with(body: body) + @project_mr_approvals_configuration = Gitlab.change_project_approvers(1, approver_ids: [5], approver_group_ids: [1]) + end + + it 'gets the correct resource' do + body = {"approver_ids": ['5'], "approver_group_ids": ['1']} + expect(a_put("/projects/1/approvals"). + with(body: body)).to have_been_made + end + + it 'returns the correct updated configuration' do + expect(@project_mr_approvals_configuration).to be_a Gitlab::ObjectifiedHash + expect(@project_mr_approvals_configuration.approvers.map{|approver| approver['user']['id']}).to eq [5] + expect(@project_mr_approvals_configuration.approver_groups.map{|approver_group| approver_group['group']['id']}).to eq [1] + end + end + + describe '.merge_request_mr_approvals_configuration' do + before do + stub_get("/projects/1/merge_requests/5/approvals", 'merge_request_mr_approvals_configuration') + @merge_request_mr_approvals_configuration = Gitlab.merge_request_mr_approvals_configuration(1, 5) + end + + it 'gets the correct resource' do + expect(a_get("/projects/1/merge_requests/5/approvals")).to have_been_made + end + + it 'returns the correct objectified hash' do + expect(@merge_request_mr_approvals_configuration).to be_a Gitlab::ObjectifiedHash + expect(@merge_request_mr_approvals_configuration.project_id).to eq 1 + expect(@merge_request_mr_approvals_configuration.iid).to eq 5 + end + end + + describe '.change_merge_request_mr_approvals_configuration' do + before do + body = { approvals_required: '2' } + stub_post("/projects/1/merge_requests/5/approvals", 'merge_request_mr_approvals_configuration').with(body: body) + @merge_request_mr_approvals_configuration = Gitlab.change_merge_request_mr_approvals_configuration(1, 5, approvals_required: 2) + end + + it 'gets the correct resource' do + body = { approvals_required: '2' } + expect(a_post("/projects/1/merge_requests/5/approvals").with(body: body)).to have_been_made + end + + it 'returns the correct objectified hash' do + expect(@merge_request_mr_approvals_configuration).to be_a Gitlab::ObjectifiedHash + expect(@merge_request_mr_approvals_configuration.approvals_required).to eq 2 + end + end + + describe '.change_merge_request_approvers' do + before do + body = {"approver_ids": ['1'], "approver_group_ids": ['5']} + stub_put("/projects/1/merge_requests/5/approvals", 'merge_request_mr_approvals_configuration').with(body: body) + @merge_request_mr_approvals_configuration = Gitlab.change_merge_request_approvers(1, 5, approver_ids: [1], approver_group_ids: [5]) + end + + it 'gets the correct resource' do + body = {"approver_ids": ['1'], "approver_group_ids": ['5']} + expect(a_put("/projects/1/merge_requests/5/approvals"). + with(body: body)).to have_been_made + end + + it 'returns the correct updated configuration' do + expect(@merge_request_mr_approvals_configuration).to be_a Gitlab::ObjectifiedHash + expect(@merge_request_mr_approvals_configuration.approvers.map{|approver| approver['user']['id']}).to eq [1] + expect(@merge_request_mr_approvals_configuration.approver_groups.map{|approver_group| approver_group['group']['id']}).to eq [5] + end + end + + describe '.approve_merge_request' do + before do + stub_post("/projects/1/merge_requests/5/approve", 'merge_request_mr_approvals_configuration') + @merge_request_mr_approvals_configuration = Gitlab.approve_merge_request(1, 5) + end + + it 'gets the correct resource' do + expect(a_post("/projects/1/merge_requests/5/approve")).to have_been_made + end + + it 'returns the correct updated configuration' do + expect(@merge_request_mr_approvals_configuration).to be_a Gitlab::ObjectifiedHash + expect(@merge_request_mr_approvals_configuration.merge_status).to eq 'can_be_merged' + end + end + + describe '.unapprove_merge_request' do + before do + stub_post("/projects/1/merge_requests/5/unapprove", 'merge_request_mr_approvals_configuration') + @merge_request_mr_approvals_configuration = Gitlab.unapprove_merge_request(1, 5) + end + + it 'gets the correct resource' do + expect(a_post("/projects/1/merge_requests/5/unapprove")).to have_been_made + end + end +end \ No newline at end of file From 46713df11e6c7b13932ebe8c13f850e736f2c0f3 Mon Sep 17 00:00:00 2001 From: AkashSrivastava Date: Tue, 10 Jul 2018 18:03:39 +0530 Subject: [PATCH 2/2] Changes in MR approval api method names post code review --- lib/gitlab/client/merge_request_approvals.rb | 30 +++---- ...tion.json => merge_request_approvals.json} | 0 ...n => project_merge_request_approvals.json} | 0 .../client/merge_request_approvals_spec.rb | 80 +++++++++---------- 4 files changed, 55 insertions(+), 55 deletions(-) rename spec/fixtures/{merge_request_mr_approvals_configuration.json => merge_request_approvals.json} (100%) rename spec/fixtures/{project_mr_approvals_configuration.json => project_merge_request_approvals.json} (100%) diff --git a/lib/gitlab/client/merge_request_approvals.rb b/lib/gitlab/client/merge_request_approvals.rb index 1cde9dcad..36ea9b83b 100644 --- a/lib/gitlab/client/merge_request_approvals.rb +++ b/lib/gitlab/client/merge_request_approvals.rb @@ -5,79 +5,79 @@ module MergeRequestApprovals # Gets MR Approval Configuration for a project # # @example - # Gitlab.project_mr_approvals_configuration(1) + # Gitlab.project_merge_request_approvals(1) # # @param [Integer] project The ID of a project. # @return [Gitlab::ObjectifiedHash] MR approval configuration information about the project - def project_mr_approvals_configuration(project) + def project_merge_request_approvals(project) get("/projects/#{url_encode project}/approvals") end # Change MR Approval Configuration for a project # # @example - # Gitlab.change_project_mr_approvals_configuration(1, {approvals_before_merge: 3}) - # Gitlab.change_project_mr_approvals_configuration(1, {approvals_before_merge: 3, reset_approvals_on_push: true}) - # Gitlab.change_project_mr_approvals_configuration(1, {approvals_before_merge: 3, disable_overriding_approvers_per_merge_request: false}) + # Gitlab.edit_project_merge_request_approvals(1, {approvals_before_merge: 3}) + # Gitlab.edit_project_merge_request_approvals(1, {approvals_before_merge: 3, reset_approvals_on_push: true}) + # Gitlab.edit_project_merge_request_approvals(1, {approvals_before_merge: 3, disable_overriding_approvers_per_merge_request: false}) # # @param [Integer] project(required) The ID of a project. # @option options [Integer] :approvals_before_merge(optional) How many approvals are required before an MR can be merged # @option options [Boolean] :reset_approvals_on_push(optional) Reset approvals on a new push # @option options [Boolean] :disable_overriding_approvers_per_merge_request(optional) Allow/Disallow overriding approvers per MR # @return [Gitlab::ObjectifiedHash] MR approval configuration information about the project - def change_project_mr_approvals_configuration(project, options = {}) + def edit_project_merge_request_approvals(project, options = {}) post("/projects/#{url_encode project}/approvals", body: options) end # Change allowed approvers and approver groups for a project # # @example - # Gitlab.change_project_approvers(1, {approver_ids: [5], approver_groups: [1]}) + # Gitlab.edit_project_approvers(1, {approver_ids: [5], approver_groups: [1]}) # # @param [Integer] project(required) The ID of a project. # @option options [Array] :approver_ids(optional) An array of User IDs that can approve MRs # @option options [Array] :approver_group_ids(optional) An array of Group IDs whose members can approve MRs # @return [Gitlab::ObjectifiedHash] MR approval configuration information about the project - def change_project_approvers(project, options = {}) + def edit_project_approvers(project, options = {}) put("/projects/#{url_encode project}/approvals", body: options) end # Get Configuration for approvals on a specific Merge Request. # # @example - # Gitlab.merge_request_mr_approvals_configuration(1, 5) + # Gitlab.merge_request_approvals(1, 5) # # @param [Integer] project(required) The ID of a project. # @param [Integer] merge_request(required) The IID of a merge_request. # @return [Gitlab::ObjectifiedHash] MR approval configuration information about the merge request - def merge_request_mr_approvals_configuration(project, merge_request) + def merge_request_approvals(project, merge_request) get("/projects/#{url_encode project}/merge_requests/#{merge_request}/approvals") end # Change configuration for approvals on a specific merge request. # # @example - # Gitlab.change_merge_request_mr_approvals_configuration(1, 5, approvals_required: 2) + # Gitlab.edit_merge_request_approvals(1, 5, approvals_required: 2) # # @param [Integer] project(required) The ID of a project. # @param [Integer] merge_request(required) The IID of a merge_request. # @option options [Integer] :approvals_required(required) Approvals required before MR can be merged # @return [Gitlab::ObjectifiedHash] Updated MR approval configuration information about the merge request - def change_merge_request_mr_approvals_configuration(project, merge_request, options = {}) + def edit_merge_request_approvals(project, merge_request, options = {}) post("/projects/#{url_encode project}/merge_requests/#{merge_request}/approvals", body: options) end # Change allowed approvers and approver groups for a merge request # # @example - # Gitlab.change_merge_request_approvers(1, 5, {approver_ids: [5], approver_groups: [1]}) + # Gitlab.edit_merge_request_approvers(1, 5, {approver_ids: [5], approver_groups: [1]}) # # @param [Integer] project(required) The ID of a project. # @param [Integer] merge_request(required) The IID of a merge_request. # @option options [Array] :approver_ids(optional) An array of User IDs that can approve MRs # @option options [Array] :approver_group_ids(optional) An array of Group IDs whose members can approve MRs # @return [Gitlab::ObjectifiedHash] MR approval configuration information about the project - def change_merge_request_approvers(project, merge_request, options = {}) + def edit_merge_request_approvers(project, merge_request, options = {}) put("/projects/#{url_encode project}/merge_requests/#{merge_request}/approvals", body: options) end @@ -89,7 +89,7 @@ def change_merge_request_approvers(project, merge_request, options = {}) # # @param [Integer] project(required) The ID of a project. # @param [Integer] merge_request(required) The IID of a merge request. - # @option options [String] :sha(required) The HEAD of the MR + # @option options [String] :sha(optional) The HEAD of the MR # @return [Gitlab::ObjectifiedHash] MR approval configuration information about the project def approve_merge_request(project, merge_request, options = {}) post("/projects/#{url_encode project}/merge_requests/#{merge_request}/approve", body: options) diff --git a/spec/fixtures/merge_request_mr_approvals_configuration.json b/spec/fixtures/merge_request_approvals.json similarity index 100% rename from spec/fixtures/merge_request_mr_approvals_configuration.json rename to spec/fixtures/merge_request_approvals.json diff --git a/spec/fixtures/project_mr_approvals_configuration.json b/spec/fixtures/project_merge_request_approvals.json similarity index 100% rename from spec/fixtures/project_mr_approvals_configuration.json rename to spec/fixtures/project_merge_request_approvals.json diff --git a/spec/gitlab/client/merge_request_approvals_spec.rb b/spec/gitlab/client/merge_request_approvals_spec.rb index bd01b3c5c..25bfa9eaf 100644 --- a/spec/gitlab/client/merge_request_approvals_spec.rb +++ b/spec/gitlab/client/merge_request_approvals_spec.rb @@ -1,10 +1,10 @@ require 'spec_helper' describe Gitlab::Client do - describe '.project_mr_approvals_configuration' do + describe '.project_merge_request_approvals' do before do - stub_get("/projects/1/approvals", 'project_mr_approvals_configuration') - @project_mr_approvals_configuration = Gitlab.project_mr_approvals_configuration(1) + stub_get("/projects/1/approvals", 'project_merge_request_approvals') + @project_mr_approvals = Gitlab.project_merge_request_approvals(1) end it "gets the correct resource" do @@ -12,15 +12,15 @@ end it "returns the correct objectified hash" do - expect(@project_mr_approvals_configuration).to be_a Gitlab::ObjectifiedHash + expect(@project_mr_approvals).to be_a Gitlab::ObjectifiedHash end end - describe '.change_project_mr_approvals_configuration' do + describe '.edit_project_merge_request_approvals' do before do body = { approvals_before_merge: '3', reset_approvals_on_push: 'false', disable_overriding_approvers_per_merge_request: 'true' } - stub_post("/projects/1/approvals", 'project_mr_approvals_configuration').with(body: body) - @project_mr_approvals_configuration = Gitlab.change_project_mr_approvals_configuration(1, approvals_before_merge: 3, reset_approvals_on_push: false, disable_overriding_approvers_per_merge_request: true) + stub_post("/projects/1/approvals", 'project_merge_request_approvals').with(body: body) + @project_mr_approvals = Gitlab.edit_project_merge_request_approvals(1, approvals_before_merge: 3, reset_approvals_on_push: false, disable_overriding_approvers_per_merge_request: true) end it 'gets the correct resource' do @@ -30,18 +30,18 @@ end it "returns the correct updated configuration" do - expect(@project_mr_approvals_configuration).to be_a Gitlab::ObjectifiedHash - expect(@project_mr_approvals_configuration.approvals_before_merge).to eq 3 - expect(@project_mr_approvals_configuration.reset_approvals_on_push).to eq false - expect(@project_mr_approvals_configuration.disable_overriding_approvers_per_merge_request).to eq true + expect(@project_mr_approvals).to be_a Gitlab::ObjectifiedHash + expect(@project_mr_approvals.approvals_before_merge).to eq 3 + expect(@project_mr_approvals.reset_approvals_on_push).to eq false + expect(@project_mr_approvals.disable_overriding_approvers_per_merge_request).to eq true end end - describe '.change_project_approvers' do + describe '.edit_project_approvers' do before do body = {"approver_ids": ['5'], "approver_group_ids": ['1']} - stub_put("/projects/1/approvals", 'project_mr_approvals_configuration').with(body: body) - @project_mr_approvals_configuration = Gitlab.change_project_approvers(1, approver_ids: [5], approver_group_ids: [1]) + stub_put("/projects/1/approvals", 'project_merge_request_approvals').with(body: body) + @project_mr_approvals = Gitlab.edit_project_approvers(1, approver_ids: [5], approver_group_ids: [1]) end it 'gets the correct resource' do @@ -51,16 +51,16 @@ end it 'returns the correct updated configuration' do - expect(@project_mr_approvals_configuration).to be_a Gitlab::ObjectifiedHash - expect(@project_mr_approvals_configuration.approvers.map{|approver| approver['user']['id']}).to eq [5] - expect(@project_mr_approvals_configuration.approver_groups.map{|approver_group| approver_group['group']['id']}).to eq [1] + expect(@project_mr_approvals).to be_a Gitlab::ObjectifiedHash + expect(@project_mr_approvals.approvers.map{|approver| approver['user']['id']}).to eq [5] + expect(@project_mr_approvals.approver_groups.map{|approver_group| approver_group['group']['id']}).to eq [1] end end - describe '.merge_request_mr_approvals_configuration' do + describe '.merge_request_approvals' do before do - stub_get("/projects/1/merge_requests/5/approvals", 'merge_request_mr_approvals_configuration') - @merge_request_mr_approvals_configuration = Gitlab.merge_request_mr_approvals_configuration(1, 5) + stub_get("/projects/1/merge_requests/5/approvals", 'merge_request_approvals') + @merge_request_approvals = Gitlab.merge_request_approvals(1, 5) end it 'gets the correct resource' do @@ -68,17 +68,17 @@ end it 'returns the correct objectified hash' do - expect(@merge_request_mr_approvals_configuration).to be_a Gitlab::ObjectifiedHash - expect(@merge_request_mr_approvals_configuration.project_id).to eq 1 - expect(@merge_request_mr_approvals_configuration.iid).to eq 5 + expect(@merge_request_approvals).to be_a Gitlab::ObjectifiedHash + expect(@merge_request_approvals.project_id).to eq 1 + expect(@merge_request_approvals.iid).to eq 5 end end - describe '.change_merge_request_mr_approvals_configuration' do + describe '.edit_merge_request_approvals' do before do body = { approvals_required: '2' } - stub_post("/projects/1/merge_requests/5/approvals", 'merge_request_mr_approvals_configuration').with(body: body) - @merge_request_mr_approvals_configuration = Gitlab.change_merge_request_mr_approvals_configuration(1, 5, approvals_required: 2) + stub_post("/projects/1/merge_requests/5/approvals", 'merge_request_approvals').with(body: body) + @merge_request_approvals = Gitlab.edit_merge_request_approvals(1, 5, approvals_required: 2) end it 'gets the correct resource' do @@ -87,16 +87,16 @@ end it 'returns the correct objectified hash' do - expect(@merge_request_mr_approvals_configuration).to be_a Gitlab::ObjectifiedHash - expect(@merge_request_mr_approvals_configuration.approvals_required).to eq 2 + expect(@merge_request_approvals).to be_a Gitlab::ObjectifiedHash + expect(@merge_request_approvals.approvals_required).to eq 2 end end - describe '.change_merge_request_approvers' do + describe '.edit_merge_request_approvers' do before do body = {"approver_ids": ['1'], "approver_group_ids": ['5']} - stub_put("/projects/1/merge_requests/5/approvals", 'merge_request_mr_approvals_configuration').with(body: body) - @merge_request_mr_approvals_configuration = Gitlab.change_merge_request_approvers(1, 5, approver_ids: [1], approver_group_ids: [5]) + stub_put("/projects/1/merge_requests/5/approvals", 'merge_request_approvals').with(body: body) + @merge_request_approvals = Gitlab.edit_merge_request_approvers(1, 5, approver_ids: [1], approver_group_ids: [5]) end it 'gets the correct resource' do @@ -106,16 +106,16 @@ end it 'returns the correct updated configuration' do - expect(@merge_request_mr_approvals_configuration).to be_a Gitlab::ObjectifiedHash - expect(@merge_request_mr_approvals_configuration.approvers.map{|approver| approver['user']['id']}).to eq [1] - expect(@merge_request_mr_approvals_configuration.approver_groups.map{|approver_group| approver_group['group']['id']}).to eq [5] + expect(@merge_request_approvals).to be_a Gitlab::ObjectifiedHash + expect(@merge_request_approvals.approvers.map{|approver| approver['user']['id']}).to eq [1] + expect(@merge_request_approvals.approver_groups.map{|approver_group| approver_group['group']['id']}).to eq [5] end end describe '.approve_merge_request' do before do - stub_post("/projects/1/merge_requests/5/approve", 'merge_request_mr_approvals_configuration') - @merge_request_mr_approvals_configuration = Gitlab.approve_merge_request(1, 5) + stub_post("/projects/1/merge_requests/5/approve", 'merge_request_approvals') + @merge_request_approvals = Gitlab.approve_merge_request(1, 5) end it 'gets the correct resource' do @@ -123,15 +123,15 @@ end it 'returns the correct updated configuration' do - expect(@merge_request_mr_approvals_configuration).to be_a Gitlab::ObjectifiedHash - expect(@merge_request_mr_approvals_configuration.merge_status).to eq 'can_be_merged' + expect(@merge_request_approvals).to be_a Gitlab::ObjectifiedHash + expect(@merge_request_approvals.merge_status).to eq 'can_be_merged' end end describe '.unapprove_merge_request' do before do - stub_post("/projects/1/merge_requests/5/unapprove", 'merge_request_mr_approvals_configuration') - @merge_request_mr_approvals_configuration = Gitlab.unapprove_merge_request(1, 5) + stub_post("/projects/1/merge_requests/5/unapprove", 'merge_request_approvals') + @merge_request_approvals = Gitlab.unapprove_merge_request(1, 5) end it 'gets the correct resource' do