From 4aaa15fad757589db22523e0500a707c54bae3f7 Mon Sep 17 00:00:00 2001
From: Rajendra Kadam <rajendrakadam249@gmail.com>
Date: Fri, 17 Jul 2020 11:34:14 +0000
Subject: [PATCH] Fix Rails/SaveBang RuboCop offenses for projects controllers

---
 .rubocop_todo.yml                                      |  7 -------
 changelogs/unreleased/rails-save-bang-3.yml            |  5 +++++
 .../projects/environments_controller_spec.rb           |  2 +-
 ee/spec/controllers/projects/issues_controller_spec.rb |  2 +-
 .../merge_requests/creations_controller_spec.rb        |  8 ++++----
 .../projects/merge_requests_controller_spec.rb         | 10 +++++-----
 .../projects/project_members_controller_spec.rb        |  6 +++---
 .../projects/subscriptions_controller_spec.rb          |  4 ++--
 .../projects/vulnerability_feedback_controller_spec.rb |  2 +-
 9 files changed, 22 insertions(+), 24 deletions(-)
 create mode 100644 changelogs/unreleased/rails-save-bang-3.yml

diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml
index 43801e2733bf2..e54d970c67107 100644
--- a/.rubocop_todo.yml
+++ b/.rubocop_todo.yml
@@ -853,14 +853,7 @@ Style/SymbolProc:
 # Configuration parameters: AllowImplicitReturn, AllowedReceivers.
 Rails/SaveBang:
   Exclude:
-    - 'ee/spec/controllers/projects/environments_controller_spec.rb'
-    - 'ee/spec/controllers/projects/issues_controller_spec.rb'
-    - 'ee/spec/controllers/projects/merge_requests/creations_controller_spec.rb'
     - 'ee/spec/controllers/projects/merge_requests_controller_spec.rb'
-    - 'ee/spec/controllers/projects/project_members_controller_spec.rb'
-    - 'ee/spec/controllers/projects/service_desk_controller_spec.rb'
-    - 'ee/spec/controllers/projects/subscriptions_controller_spec.rb'
-    - 'ee/spec/controllers/projects/vulnerability_feedback_controller_spec.rb'
     - 'ee/spec/controllers/subscriptions_controller_spec.rb'
     - 'ee/spec/factories/ci/job_artifacts.rb'
     - 'ee/spec/factories/epics.rb'
diff --git a/changelogs/unreleased/rails-save-bang-3.yml b/changelogs/unreleased/rails-save-bang-3.yml
new file mode 100644
index 0000000000000..70760d6c038b9
--- /dev/null
+++ b/changelogs/unreleased/rails-save-bang-3.yml
@@ -0,0 +1,5 @@
+---
+title: Refactor projects controllers specs to fix SaveBang Cop
+merge_request: 36920
+author: Rajendra Kadam
+type: fixed
diff --git a/ee/spec/controllers/projects/environments_controller_spec.rb b/ee/spec/controllers/projects/environments_controller_spec.rb
index 1672da7d1eb3a..81736236872f8 100644
--- a/ee/spec/controllers/projects/environments_controller_spec.rb
+++ b/ee/spec/controllers/projects/environments_controller_spec.rb
@@ -99,7 +99,7 @@
 
       context 'when user has access to it' do
         before do
-          protected_environment.deploy_access_levels.create(user: user)
+          protected_environment.deploy_access_levels.create!(user: user)
 
           get :terminal, params: environment_params
         end
diff --git a/ee/spec/controllers/projects/issues_controller_spec.rb b/ee/spec/controllers/projects/issues_controller_spec.rb
index 6cc27103f62bf..49ceffd1c4c8c 100644
--- a/ee/spec/controllers/projects/issues_controller_spec.rb
+++ b/ee/spec/controllers/projects/issues_controller_spec.rb
@@ -184,7 +184,7 @@ def perform(method, action, opts = {})
       before do
         sign_in(user)
         allow(Gitlab).to receive(:com?).and_return(true)
-        discussion.update(author: user)
+        discussion.update!(author: user)
       end
 
       shared_context 'non inclusion of gitlab team member badge' do |result|
diff --git a/ee/spec/controllers/projects/merge_requests/creations_controller_spec.rb b/ee/spec/controllers/projects/merge_requests/creations_controller_spec.rb
index d34260d2efead..5a97d775272af 100644
--- a/ee/spec/controllers/projects/merge_requests/creations_controller_spec.rb
+++ b/ee/spec/controllers/projects/merge_requests/creations_controller_spec.rb
@@ -32,7 +32,7 @@ def create_merge_request(overrides = {})
 
     context 'the approvals_before_merge param' do
       before do
-        project.update(approvals_before_merge: 2)
+        project.update!(approvals_before_merge: 2)
       end
 
       context 'when it is less than the one in the target project' do
@@ -83,8 +83,8 @@ def create_merge_request(overrides = {})
       context 'when the target project is a fork of a deleted project' do
         before do
           original_project = create(:project)
-          project.update(forked_from_project: original_project, approvals_before_merge: 4)
-          original_project.update(pending_delete: true)
+          project.update!(forked_from_project: original_project, approvals_before_merge: 4)
+          original_project.update!(pending_delete: true)
 
           create_merge_request(approvals_before_merge: 3)
         end
@@ -105,7 +105,7 @@ def create_merge_request(overrides = {})
 
       before do
         project.add_developer(new_approver)
-        project.update(disable_overriding_approvers_per_merge_request: disable_overriding_approvers_per_merge_request)
+        project.update!(disable_overriding_approvers_per_merge_request: disable_overriding_approvers_per_merge_request)
 
         create_merge_request(
           approval_rules_attributes: [
diff --git a/ee/spec/controllers/projects/merge_requests_controller_spec.rb b/ee/spec/controllers/projects/merge_requests_controller_spec.rb
index 0a20926420155..5337be59f9d50 100644
--- a/ee/spec/controllers/projects/merge_requests_controller_spec.rb
+++ b/ee/spec/controllers/projects/merge_requests_controller_spec.rb
@@ -144,7 +144,7 @@ def update_merge_request(params = {})
 
     context 'when the merge request requires approval' do
       before do
-        project.update(approvals_before_merge: 1)
+        project.update!(approvals_before_merge: 1)
       end
 
       it_behaves_like 'update invalid issuable', MergeRequest
@@ -152,12 +152,12 @@ def update_merge_request(params = {})
 
     context 'overriding approvers per MR' do
       before do
-        project.update(approvals_before_merge: 1)
+        project.update!(approvals_before_merge: 1)
       end
 
       context 'enabled' do
         before do
-          project.update(disable_overriding_approvers_per_merge_request: false)
+          project.update!(disable_overriding_approvers_per_merge_request: false)
         end
 
         it 'updates approvals' do
@@ -195,7 +195,7 @@ def update_merge_request(params = {})
 
         before do
           project.add_developer(new_approver)
-          project.update(disable_overriding_approvers_per_merge_request: true)
+          project.update!(disable_overriding_approvers_per_merge_request: true)
         end
 
         it 'does not update approvals_before_merge' do
@@ -364,7 +364,7 @@ def update_merge_request(params = {})
 
         before do
           upstream.add_developer(user)
-          upstream.update(approvals_before_merge: 2)
+          upstream.update!(approvals_before_merge: 2)
         end
 
         it_behaves_like 'approvals_before_merge param'
diff --git a/ee/spec/controllers/projects/project_members_controller_spec.rb b/ee/spec/controllers/projects/project_members_controller_spec.rb
index decceef4e7d31..6bcd29ed428b9 100644
--- a/ee/spec/controllers/projects/project_members_controller_spec.rb
+++ b/ee/spec/controllers/projects/project_members_controller_spec.rb
@@ -32,7 +32,7 @@
 
       context 'and the project group has membership lock enabled' do
         before do
-          project.namespace.update(membership_lock: true)
+          project.namespace.update!(membership_lock: true)
         end
 
         it 'responds with 403' do
@@ -64,7 +64,7 @@
 
     context 'when project group has membership lock enabled' do
       before do
-        project.namespace.update(membership_lock: true)
+        project.namespace.update!(membership_lock: true)
       end
 
       it 'responds with 403' do
@@ -90,7 +90,7 @@
 
     context 'when project group has membership lock enabled' do
       before do
-        project.namespace.update(membership_lock: true)
+        project.namespace.update!(membership_lock: true)
       end
 
       it 'responds with 403' do
diff --git a/ee/spec/controllers/projects/subscriptions_controller_spec.rb b/ee/spec/controllers/projects/subscriptions_controller_spec.rb
index a2c4d58f8b782..93ce8a9835952 100644
--- a/ee/spec/controllers/projects/subscriptions_controller_spec.rb
+++ b/ee/spec/controllers/projects/subscriptions_controller_spec.rb
@@ -18,7 +18,7 @@
 
     before do
       plan_limits = create(:plan_limits, :default_plan)
-      plan_limits.update(ci_project_subscriptions: 2)
+      plan_limits.update!(ci_project_subscriptions: 2)
     end
 
     context 'when user is authorized' do
@@ -80,7 +80,7 @@
 
           context 'when project is not public' do
             before do
-              upstream_project.update(visibility_level: Gitlab::VisibilityLevel::PRIVATE)
+              upstream_project.update!(visibility_level: Gitlab::VisibilityLevel::PRIVATE)
             end
 
             it 'does not create a new subscription' do
diff --git a/ee/spec/controllers/projects/vulnerability_feedback_controller_spec.rb b/ee/spec/controllers/projects/vulnerability_feedback_controller_spec.rb
index 409b64c7d6114..d06d9329caa7d 100644
--- a/ee/spec/controllers/projects/vulnerability_feedback_controller_spec.rb
+++ b/ee/spec/controllers/projects/vulnerability_feedback_controller_spec.rb
@@ -52,7 +52,7 @@
             pipeline: create(:ci_pipeline)
           )
 
-          feedback.save(validate: false)
+          feedback.save!(validate: false)
         end
 
         it 'ignores feedback in other project' do
-- 
GitLab