summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarius Mathiesen <marius@shortcut.no>2009-12-07 14:14:45 +0100
committerMarius Mathiesen <marius@shortcut.no>2009-12-07 14:18:15 +0100
commite17f11563aeb7612b78583e8e4ed8f28cd1d2167 (patch)
tree14317f34ee069a9ffdef9b779a5d1c75a9dbcc3e
parent2bd6ef4a7f02db37021263e4c9a257b20948c57f (diff)
downloadgitorious-mainline-outdated-e17f11563aeb7612b78583e8e4ed8f28cd1d2167.zip
gitorious-mainline-outdated-e17f11563aeb7612b78583e8e4ed8f28cd1d2167.tar.gz
gitorious-mainline-outdated-e17f11563aeb7612b78583e8e4ed8f28cd1d2167.tar.bz2
Projects can be favorited too (no link in the GUI yet, but still)
-rw-r--r--app/helpers/favorites_helper.rb2
-rw-r--r--app/models/favorite.rb7
-rw-r--r--app/models/project.rb1
-rw-r--r--app/views/users/show.html.erb4
-rw-r--r--test/functional/users_controller_test.rb16
-rw-r--r--test/unit/favorite_test.rb25
6 files changed, 50 insertions, 5 deletions
diff --git a/app/helpers/favorites_helper.rb b/app/helpers/favorites_helper.rb
index 9d78fa8..6206280 100644
--- a/app/helpers/favorites_helper.rb
+++ b/app/helpers/favorites_helper.rb
@@ -55,7 +55,7 @@ module FavoritesHelper
watchable.target_repository,
watchable]))
else
- link_to(favorite.inspect, "/")
+ link_to(h(watchable.title), watchable)
end
end
diff --git a/app/models/favorite.rb b/app/models/favorite.rb
index 58c3bc0..37e9510 100644
--- a/app/models/favorite.rb
+++ b/app/models/favorite.rb
@@ -34,10 +34,13 @@ class Favorite < ActiveRecord::Base
end
def project
- if MergeRequest === watchable
+ case watchable
+ when MergeRequest
watchable.target_repository.project
- else
+ when Repository
watchable.project
+ when Project
+ watchable
end
end
diff --git a/app/models/project.rb b/app/models/project.rb
index 3c372a1..6f6c0fc 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -27,6 +27,7 @@ class Project < ActiveRecord::Base
acts_as_taggable
include RecordThrottling
include UrlLinting
+ include Watchable
belongs_to :user
belongs_to :owner, :polymorphic => true
diff --git a/app/views/users/show.html.erb b/app/views/users/show.html.erb
index d48b0b1..7d874a5 100644
--- a/app/views/users/show.html.erb
+++ b/app/views/users/show.html.erb
@@ -89,8 +89,8 @@
<% if is_current_user?(@user) %>
<ul class="tab-bar">
<% [["Your activities", params[:events].blank?, {}],
- ["Watched activities", params[:events] == "watched", {:events => "watched"}]]
- .each do |label, on_display, event_params| -%>
+ ["Watched activities", params[:events] == "watched", {:events => "watched"}]
+ ].each do |label, on_display, event_params| -%>
<li class="<%= on_display ? 'on' : 'off' -%>">
<%= link_to(label, user_path(@user, event_params)) -%>
</li>
diff --git a/test/functional/users_controller_test.rb b/test/functional/users_controller_test.rb
index 358630b..995e0ec 100644
--- a/test/functional/users_controller_test.rb
+++ b/test/functional/users_controller_test.rb
@@ -492,6 +492,22 @@ class UsersControllerTest < ActionController::TestCase
end
end
+ context "Viewing ones own favorites" do
+ setup {
+ login_as(:johan)
+ @user = users(:johan)
+ @merge_request = merge_requests(:moes_to_johans)
+ @user.favorites.create(:watchable => @merge_request)
+ @project = projects(:johans)
+ @user.favorites.create(:watchable => @project)
+ }
+
+ should "render all" do
+ get :show, :id => @user.login
+ assert_response :success
+ end
+ end
+
context 'Creation from OpenID' do
setup do
@valid_session_options = {:openid_url => 'http://moe.example/', :openid_nickname => 'schmoe'}
diff --git a/test/unit/favorite_test.rb b/test/unit/favorite_test.rb
index ac62b00..643b8f7 100644
--- a/test/unit/favorite_test.rb
+++ b/test/unit/favorite_test.rb
@@ -73,5 +73,30 @@ class FavoriteTest < ActiveSupport::TestCase
assert favorite.event_exists?
end
end
+
+ context "Watching merge requests" do
+ setup {
+ @user = users(:mike)
+ }
+
+ should "return the target repository's project as project" do
+ merge_request = merge_requests(:moes_to_johans)
+ favorite = @user.favorites.create(:watchable => merge_request)
+ assert_equal(merge_request.target_repository.project,
+ favorite.project)
+ end
+ end
+
+ context "Watching projects" do
+ setup {
+ @user = users(:moe)
+ }
+
+ should "return the project as project" do
+ @project = projects(:johans)
+ favorite = @user.favorites.create(:watchable => @project)
+ assert_equal @project, favorite.project
+ end
+ end
end