diff options
-rw-r--r-- | app/helpers/favorites_helper.rb | 2 | ||||
-rw-r--r-- | app/models/favorite.rb | 7 | ||||
-rw-r--r-- | app/models/project.rb | 1 | ||||
-rw-r--r-- | app/views/users/show.html.erb | 4 | ||||
-rw-r--r-- | test/functional/users_controller_test.rb | 16 | ||||
-rw-r--r-- | test/unit/favorite_test.rb | 25 |
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 |