From 39ee52f1b168f3c6d2c9f27a3311aa7c785a0b20 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> Date: Fri, 28 Aug 2015 10:23:56 +0200 Subject: [PATCH] Expire cache when merge request source branch was removed Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> --- app/workers/merge_worker.rb | 4 ++++ spec/workers/merge_worker_spec.rb | 28 ++++++++++++++++++++++++++++ spec/workers/post_receive_spec.rb | 2 +- 3 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 spec/workers/merge_worker_spec.rb diff --git a/app/workers/merge_worker.rb b/app/workers/merge_worker.rb index 6a8665c179a..5d1a8555b7d 100644 --- a/app/workers/merge_worker.rb +++ b/app/workers/merge_worker.rb @@ -14,6 +14,10 @@ class MergeWorker if result[:status] == :success && params[:should_remove_source_branch].present? DeleteBranchService.new(merge_request.source_project, current_user). execute(merge_request.source_branch) + + merge_request.source_project.repository.expire_branch_names end + + result end end diff --git a/spec/workers/merge_worker_spec.rb b/spec/workers/merge_worker_spec.rb new file mode 100644 index 00000000000..b11c5de94e3 --- /dev/null +++ b/spec/workers/merge_worker_spec.rb @@ -0,0 +1,28 @@ +require 'spec_helper' + +describe MergeWorker do + describe "remove source branch" do + let!(:merge_request) { create(:merge_request, source_branch: "markdown") } + let!(:source_project) { merge_request.source_project } + let!(:project) { merge_request.project } + let!(:author) { merge_request.author } + + before do + source_project.team << [author, :master] + source_project.repository.expire_branch_names + end + + it 'clears cache of source repo after removing source branch' do + expect(source_project.repository.branch_names).to include('markdown') + + MergeWorker.new.perform( + merge_request.id, merge_request.author_id, + commit_message: 'wow such merge', + should_remove_source_branch: true) + + merge_request.reload + expect(merge_request).to be_merged + expect(source_project.repository.branch_names).not_to include('markdown') + end + end +end diff --git a/spec/workers/post_receive_spec.rb b/spec/workers/post_receive_spec.rb index 46eae9ab081..e4151b9bb6a 100644 --- a/spec/workers/post_receive_spec.rb +++ b/spec/workers/post_receive_spec.rb @@ -4,7 +4,7 @@ describe PostReceive do let(:changes) { "123456 789012 refs/heads/tést\n654321 210987 refs/tags/tag" } let(:wrongly_encoded_changes) { changes.encode("ISO-8859-1").force_encoding("UTF-8") } let(:base64_changes) { Base64.encode64(wrongly_encoded_changes) } - + context "as a resque worker" do it "reponds to #perform" do expect(PostReceive.new).to respond_to(:perform) -- GitLab