summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarius Mathiesen <marius@shortcut.no>2009-12-10 13:26:32 +0100
committerMarius Mathiesen <marius@shortcut.no>2009-12-10 13:28:28 +0100
commit28bace545fd5590c66a4a3c4b45a99b7a9d31270 (patch)
tree9862256371aa2be9e1620c70f2851663ba65a1cb
parent61cfb16a75e65f085cd3480fe954472e63c0d207 (diff)
downloadgitorious-mainline-outdated-28bace545fd5590c66a4a3c4b45a99b7a9d31270.zip
gitorious-mainline-outdated-28bace545fd5590c66a4a3c4b45a99b7a9d31270.tar.gz
gitorious-mainline-outdated-28bace545fd5590c66a4a3c4b45a99b7a9d31270.tar.bz2
Move creation of favorites into controller. Also adding merge request to owner's favorites upon creation
-rw-r--r--app/controllers/favorites_controller.rb2
-rw-r--r--app/models/favorite.rb11
-rw-r--r--app/models/merge_request.rb7
-rw-r--r--test/unit/favorite_test.rb13
-rw-r--r--test/unit/merge_request_test.rb6
5 files changed, 18 insertions, 21 deletions
diff --git a/app/controllers/favorites_controller.rb b/app/controllers/favorites_controller.rb
index 9953265..c2775e8 100644
--- a/app/controllers/favorites_controller.rb
+++ b/app/controllers/favorites_controller.rb
@@ -22,6 +22,7 @@ class FavoritesController < ApplicationController
def create
@favorite = @watchable.watched_by!(current_user)
+ @favorite.create_event
respond_to do |wants|
wants.html {
flash[:notice] = "You are now watching this #{@watchable.class.name.downcase}"
@@ -60,3 +61,4 @@ class FavoritesController < ApplicationController
@watchable = watchable_class.find(params[:watchable_id])
end
end
+ \ No newline at end of file
diff --git a/app/models/favorite.rb b/app/models/favorite.rb
index 1cec3f9..e75845b 100644
--- a/app/models/favorite.rb
+++ b/app/models/favorite.rb
@@ -22,7 +22,6 @@ class Favorite < ActiveRecord::Base
validates_presence_of :user_id, :watchable_id, :watchable_type
validates_uniqueness_of :user_id, :scope => [:watchable_id, :watchable_type]
- after_create :create_event
def event_exists?
!Event.count(:conditions => event_options).zero?
@@ -45,16 +44,8 @@ class Favorite < ActiveRecord::Base
end
end
- def skip_events=(skip)
- @skip_events = skip
- end
-
- def skip_events?
- @skip_events
- end
-
def event_should_be_created?
- !event_exists? && !skip_events?
+ !event_exists?
end
def create_event
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index 9e8c8bb..25cb426 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -35,6 +35,7 @@ class MergeRequest < ActiveRecord::Base
before_destroy :nullify_messages
after_destroy :delete_tracking_branches
+ after_create :add_to_creators_favorites
before_validation_on_create :set_sequence_number
@@ -384,7 +385,7 @@ class MergeRequest < ActiveRecord::Base
end
def add_to_reviewers_favorites(reviewer)
- reviewer.favorites.create(:watchable => self, :skip_events => true)
+ reviewer.favorites.create(:watchable => self)
end
def add_creation_event(owner, user)
@@ -633,4 +634,8 @@ class MergeRequest < ActiveRecord::Base
self.sequence_number = target_repository.next_merge_request_sequence_number
end
end
+
+ def add_to_creators_favorites
+ user.favorites.create(:watchable => self)
+ end
end
diff --git a/test/unit/favorite_test.rb b/test/unit/favorite_test.rb
index 6970c3c..0b1b9f8 100644
--- a/test/unit/favorite_test.rb
+++ b/test/unit/favorite_test.rb
@@ -68,29 +68,22 @@ class FavoriteTest < ActiveSupport::TestCase
should "create an event when a favorite is created" do
favorite = @user.favorites.build(:watchable => @repo)
assert !favorite.event_exists?
- assert favorite.save
+ favorite.create_event
assert_not_nil(favorite_event = @user.events_as_target.last)
assert favorite.event_exists?
end
should "only create an event the first time" do
favorite = @user.favorites.create(:watchable => @repo)
+ favorite.create_event
assert favorite.event_exists?
favorite.destroy
new_favorite = @user.favorites.build(:watchable => @repo)
assert new_favorite.event_exists?
assert_incremented_by @user.events_as_target, :count, 0 do
- assert new_favorite.save
+ new_favorite.create_event
end
end
-
- should "support a skip_events setter" do
- favorite = @user.favorites.build(:skip_events => true, :watchable => @repo)
- assert favorite.skip_events?
- assert !favorite.event_should_be_created?
- assert favorite.save
- assert !favorite.event_exists?
- end
end
context "Watching merge requests" do
diff --git a/test/unit/merge_request_test.rb b/test/unit/merge_request_test.rb
index 9c206e5..0b93f7c 100644
--- a/test/unit/merge_request_test.rb
+++ b/test/unit/merge_request_test.rb
@@ -830,6 +830,12 @@ class MergeRequestTest < ActiveSupport::TestCase
@merge_request.notify_subscribers_about_creation
end
end
+
+ should "be added to creators favorites" do
+ assert_incremented_by(@user.favorites, :size, 1) {
+ @merge_request.save
+ }
+ end
end