summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Thomas <nick@gitlab.com>2018-08-06 10:51:37 +0000
committerNick Thomas <nick@gitlab.com>2018-08-06 10:51:37 +0000
commitf6e6faee68e16fde00e44caa9b8c0c527aa79689 (patch)
treea5a357c4e596c27a96d4a12e2b83f982939588ca
parentbc1f851fdfaf9cc2bba5b67fd762e8802023bf5c (diff)
parent79d90cb6bd99b7af572c65af89597c2e55217aea (diff)
downloadgitlab-ce-f6e6faee68e16fde00e44caa9b8c0c527aa79689.tar.gz
Merge branch 'jr-archive-hook' into 'master'
Trigger `project_update` system hook when archiving projects See merge request gitlab-org/gitlab-ce!20995
-rw-r--r--app/controllers/projects_controller.rb4
-rw-r--r--app/models/project.rb8
-rw-r--r--changelogs/unreleased/jr-archive-hook.yml5
-rw-r--r--lib/api/projects.rb4
-rw-r--r--spec/features/explore/groups_list_spec.rb4
-rw-r--r--spec/features/groups/issues_spec.rb3
-rw-r--r--spec/finders/labels_finder_spec.rb2
-rw-r--r--spec/finders/move_to_project_finder_spec.rb2
-rw-r--r--spec/requests/api/internal_spec.rb2
-rw-r--r--spec/requests/api/projects_spec.rb4
10 files changed, 18 insertions, 20 deletions
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index 9d1c44db137..4d7e33d7b11 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -148,7 +148,7 @@ class ProjectsController < Projects::ApplicationController
def archive
return access_denied! unless can?(current_user, :archive_project, @project)
- @project.archive!
+ ::Projects::UpdateService.new(@project, current_user, archived: true).execute
respond_to do |format|
format.html { redirect_to project_path(@project) }
@@ -158,7 +158,7 @@ class ProjectsController < Projects::ApplicationController
def unarchive
return access_denied! unless can?(current_user, :archive_project, @project)
- @project.unarchive!
+ ::Projects::UpdateService.new(@project, current_user, archived: false).execute
respond_to do |format|
format.html { redirect_to project_path(@project) }
diff --git a/app/models/project.rb b/app/models/project.rb
index 02e956911a9..cb4d2610e0d 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -1320,14 +1320,6 @@ class Project < ActiveRecord::Base
:visibility_level
end
- def archive!
- update_attribute(:archived, true)
- end
-
- def unarchive!
- update_attribute(:archived, false)
- end
-
def change_head(branch)
if repository.branch_exists?(branch)
repository.before_change_head
diff --git a/changelogs/unreleased/jr-archive-hook.yml b/changelogs/unreleased/jr-archive-hook.yml
new file mode 100644
index 00000000000..56c13f1370e
--- /dev/null
+++ b/changelogs/unreleased/jr-archive-hook.yml
@@ -0,0 +1,5 @@
+---
+title: Trigger system hooks when project is archived/unarchived
+merge_request: 20995
+author:
+type: added
diff --git a/lib/api/projects.rb b/lib/api/projects.rb
index 7adde79d6c3..5738bf220c6 100644
--- a/lib/api/projects.rb
+++ b/lib/api/projects.rb
@@ -321,7 +321,7 @@ module API
post ':id/archive' do
authorize!(:archive_project, user_project)
- user_project.archive!
+ ::Projects::UpdateService.new(user_project, current_user, archived: true).execute
present user_project, with: Entities::Project
end
@@ -332,7 +332,7 @@ module API
post ':id/unarchive' do
authorize!(:archive_project, user_project)
- user_project.unarchive!
+ ::Projects::UpdateService.new(@project, current_user, archived: false).execute
present user_project, with: Entities::Project
end
diff --git a/spec/features/explore/groups_list_spec.rb b/spec/features/explore/groups_list_spec.rb
index ad02b454aee..8ed4051856e 100644
--- a/spec/features/explore/groups_list_spec.rb
+++ b/spec/features/explore/groups_list_spec.rb
@@ -53,14 +53,14 @@ describe 'Explore Groups page', :js do
expect(find('.js-groups-list-holder .content-list li:first-child .stats .number-projects')).to have_text("1")
# Archive project
- empty_project.archive!
+ ::Projects::UpdateService.new(empty_project, user, archived: true).execute
visit explore_groups_path
# Check project count
expect(find('.js-groups-list-holder .content-list li:first-child .stats .number-projects')).to have_text("0")
# Unarchive project
- empty_project.unarchive!
+ ::Projects::UpdateService.new(empty_project, user, archived: false).execute
visit explore_groups_path
# Check project count
diff --git a/spec/features/groups/issues_spec.rb b/spec/features/groups/issues_spec.rb
index 97d8776b15a..176f4a668ff 100644
--- a/spec/features/groups/issues_spec.rb
+++ b/spec/features/groups/issues_spec.rb
@@ -52,6 +52,7 @@ describe 'Group issues page' do
context 'issues list', :nested_groups do
let(:subgroup) { create(:group, parent: group) }
let(:subgroup_project) { create(:project, :public, group: subgroup)}
+ let(:user_in_group) { create(:group_member, :maintainer, user: create(:user), group: group ).user }
let!(:issue) { create(:issue, project: project, title: 'root group issue') }
let!(:subgroup_issue) { create(:issue, project: subgroup_project, title: 'subgroup issue') }
@@ -67,7 +68,7 @@ describe 'Group issues page' do
context 'when project is archived' do
before do
- project.archive!
+ ::Projects::UpdateService.new(project, user_in_group, archived: true).execute
end
it 'does not render issue' do
diff --git a/spec/finders/labels_finder_spec.rb b/spec/finders/labels_finder_spec.rb
index eb2a4576e30..f5cec8e349a 100644
--- a/spec/finders/labels_finder_spec.rb
+++ b/spec/finders/labels_finder_spec.rb
@@ -55,7 +55,7 @@ describe LabelsFinder do
context 'filtering by group_id' do
it 'returns labels available for any non-archived project within the group' do
group_1.add_developer(user)
- project_1.archive!
+ ::Projects::UpdateService.new(project_1, user, archived: true).execute
finder = described_class.new(user, group_id: group_1.id)
expect(finder.execute).to eq [group_label_2, group_label_1, project_label_5]
diff --git a/spec/finders/move_to_project_finder_spec.rb b/spec/finders/move_to_project_finder_spec.rb
index 1511cb0e04c..1b3f44cced1 100644
--- a/spec/finders/move_to_project_finder_spec.rb
+++ b/spec/finders/move_to_project_finder_spec.rb
@@ -36,7 +36,7 @@ describe MoveToProjectFinder do
it 'does not return archived projects' do
reporter_project.add_reporter(user)
- reporter_project.archive!
+ ::Projects::UpdateService.new(reporter_project, user, archived: true).execute
other_reporter_project = create(:project)
other_reporter_project.add_reporter(user)
diff --git a/spec/requests/api/internal_spec.rb b/spec/requests/api/internal_spec.rb
index b537b6e1667..85c93f35c20 100644
--- a/spec/requests/api/internal_spec.rb
+++ b/spec/requests/api/internal_spec.rb
@@ -429,7 +429,7 @@ describe API::Internal do
context "archived project" do
before do
project.add_developer(user)
- project.archive!
+ ::Projects::UpdateService.new(project, user, archived: true).execute
end
context "git pull" do
diff --git a/spec/requests/api/projects_spec.rb b/spec/requests/api/projects_spec.rb
index 71e3436fa76..eb41750bf47 100644
--- a/spec/requests/api/projects_spec.rb
+++ b/spec/requests/api/projects_spec.rb
@@ -1677,7 +1677,7 @@ describe API::Projects do
context 'on an archived project' do
before do
- project.archive!
+ ::Projects::UpdateService.new(project, user, archived: true).execute
end
it 'remains archived' do
@@ -1713,7 +1713,7 @@ describe API::Projects do
context 'on an archived project' do
before do
- project.archive!
+ ::Projects::UpdateService.new(project, user, archived: true).execute
end
it 'unarchives the project' do