diff options
author | Marius Mathiesen <marius@shortcut.no> | 2010-02-01 13:40:20 +0100 |
---|---|---|
committer | Marius Mathiesen <marius@shortcut.no> | 2010-02-01 13:40:20 +0100 |
commit | 3c10e23d548ae99645cb04e1509cfa07b51d1a08 (patch) | |
tree | fd71e7c53e425ead347cc56ee834927a36630ea1 | |
parent | 33c6095805d5c808081a030dab4405ea9af126f0 (diff) | |
download | gitorious-mainline-outdated-3c10e23d548ae99645cb04e1509cfa07b51d1a08.zip gitorious-mainline-outdated-3c10e23d548ae99645cb04e1509cfa07b51d1a08.tar.gz gitorious-mainline-outdated-3c10e23d548ae99645cb04e1509cfa07b51d1a08.tar.bz2 |
Send a message to MQ when a MergeRequestVersion is deleted in order for a processor to delete the tracking branch.
-rw-r--r-- | app/models/merge_request_version.rb | 18 | ||||
-rw-r--r-- | config/messaging.rb | 1 | ||||
-rw-r--r-- | test/unit/merge_request_version_test.rb | 27 |
3 files changed, 46 insertions, 0 deletions
diff --git a/app/models/merge_request_version.rb b/app/models/merge_request_version.rb index 98ffae9..cc6d65a 100644 --- a/app/models/merge_request_version.rb +++ b/app/models/merge_request_version.rb @@ -17,8 +17,11 @@ #++ class MergeRequestVersion < ActiveRecord::Base + include ActiveMessaging::MessageSender + belongs_to :merge_request has_many :comments, :as => :target, :include => :user + before_destroy :schedule_branch_deletion def affected_commits Rails.cache.fetch(cache_key + '/affected_commits') do @@ -106,6 +109,21 @@ class MergeRequestVersion < ActiveRecord::Base end end + # The unserialized message that is sent to the message queue + # for deleting the tracking branch + def branch_deletion_message + { + :source_repository_path => merge_request.source_repository.full_repository_path, + :target_repository_path => merge_request.target_repository.full_repository_path, + :target_branch_name => merge_request.merge_branch_name(version) + } + end + + def schedule_branch_deletion + message = branch_deletion_message.to_json + publish :merge_request_version_deletion, message + end + private # Returns a string representation of a sha range def sha_range_string(string_or_range) diff --git a/config/messaging.rb b/config/messaging.rb index 99a1956..c2d6575 100644 --- a/config/messaging.rb +++ b/config/messaging.rb @@ -15,4 +15,5 @@ ActiveMessaging::Gateway.define do |s| s.destination :cc_message, '/queue/GitoriousEmailNotifications' s.destination :mirror_merge_request, '/queue/GitoriousMergeRequestCreation' s.destination :merge_request_backend_updates, '/queue/GitoriousMergeRequestBackend' + s.destination :merge_request_version_deletion, '/queue/GitoriousMergeRequestVersionDeletion' end diff --git a/test/unit/merge_request_version_test.rb b/test/unit/merge_request_version_test.rb index 090a26b..799f8ca 100644 --- a/test/unit/merge_request_version_test.rb +++ b/test/unit/merge_request_version_test.rb @@ -163,4 +163,31 @@ class MergeRequestVersionTest < ActiveSupport::TestCase assert_equal([], @first_version.comments_for_path_and_sha("foo/bar.rb", "ffac-aafc")) end end + + context "Deletion of branches" do + setup { + @version = merge_request_versions(:first_version_of_johans_to_mikes) + @merge_request = @version.merge_request + } + + should "send a deletion notification when destroyed" do + @version.expects(:schedule_branch_deletion) + @version.destroy + end + + should "build a message for deleting the tracking branch" do + result = { + :source_repository_path => @merge_request.source_repository.full_repository_path, + :target_repository_path => @merge_request.target_repository.full_repository_path, + :target_branch_name => @merge_request.merge_branch_name(@version.version) + } + assert_equal result, @version.branch_deletion_message + end + + should "send the deletion message to the message queue" do + connection = ActiveMessaging::Gateway.connection + connection.expects(:send) + @version.schedule_branch_deletion + end + end end |