diff options
author | Marius Mathiesen <marius@shortcut.no> | 2009-12-15 14:00:13 +0100 |
---|---|---|
committer | Marius Mathiesen <marius@shortcut.no> | 2009-12-15 14:00:28 +0100 |
commit | 72d9310014fe588c7ba2bca0e17472813e86ab1d (patch) | |
tree | 8256b8e29d2de5a5d961af8987638eadfc459493 | |
parent | fdc44ac950835e272b8ca7ff30a2e5e291b483d5 (diff) | |
download | gitorious-mainline-outdated-72d9310014fe588c7ba2bca0e17472813e86ab1d.zip gitorious-mainline-outdated-72d9310014fe588c7ba2bca0e17472813e86ab1d.tar.gz gitorious-mainline-outdated-72d9310014fe588c7ba2bca0e17472813e86ab1d.tar.bz2 |
Support for watching a merge request version through commenting.
Also (finally) added support for login_as(<User>)
-rw-r--r-- | app/controllers/comments_controller.rb | 6 | ||||
-rw-r--r-- | lib/authenticated_test_helper.rb | 9 | ||||
-rw-r--r-- | test/functional/comments_controller_test.rb | 33 |
3 files changed, 36 insertions, 12 deletions
diff --git a/app/controllers/comments_controller.rb b/app/controllers/comments_controller.rb index f7eb88d..9f44b04 100644 --- a/app/controllers/comments_controller.rb +++ b/app/controllers/comments_controller.rb @@ -115,7 +115,11 @@ class CommentsController < ApplicationController end def add_to_favorites - current_user.favorites.create!(:watchable => @target) + favorite_target.watched_by!(current_user) + end + + def favorite_target + @target.is_a?(MergeRequest) ? @target : @target.merge_request end def comment_was_invalid diff --git a/lib/authenticated_test_helper.rb b/lib/authenticated_test_helper.rb index 2654482..b7c915e 100644 --- a/lib/authenticated_test_helper.rb +++ b/lib/authenticated_test_helper.rb @@ -1,10 +1,15 @@ module AuthenticatedTestHelper # Sets the current user in the session from the user fixtures. def login_as(user) - @request.session[:user_id] = user ? users(user).id : nil + @request.session[:user_id] = user ? user_instance(user).id : nil end def authorize_as(user) @request.env["HTTP_AUTHORIZATION"] = user ? "Basic #{Base64.encode64("#{users(user).email}:test")}" : nil end -end
\ No newline at end of file + + # Sometimes user is a User + def user_instance(sym_or_obj) + sym_or_obj.is_a?(User) ? sym_or_obj : users(sym_or_obj) + end +end diff --git a/test/functional/comments_controller_test.rb b/test/functional/comments_controller_test.rb index 3de4be4..17be462 100644 --- a/test/functional/comments_controller_test.rb +++ b/test/functional/comments_controller_test.rb @@ -154,32 +154,35 @@ class CommentsControllerTest < ActionController::TestCase setup do @repo = @merge_request.target_repository @project = @repo.project + @user = users(:moe) end should "be watched when user wants it" do - login_as :moe -# @controller.expects(:add_to_favorites) - assert_incremented_by(users(:moe).favorites, :size, 1) do + login_as @user + assert_incremented_by(@user.favorites, :size, 1) do post(:create, :project_id => @project.to_param, :repository_id => @repo.to_param, + :merge_request_id => @merge_request.to_param, :comment => { :body => "This feature is highly anticipated!" }, :add_to_favorites => "1") - users(:moe).favorites.reload + @user.favorites.reload end end should "only be watched if so wanted" do - login_as :moe + login_as @user @controller.expects(:add_to_favorites).never post(:create, :project_id => @project.to_param, :repository_id => @repo.to_param, + :merge_request_id => @merge_request.to_param, :comment => { :body => "This feature is highly anticipated!" }) end end + context "Merge request versions" do should "set the merge request version as polymorphic parent" do @@ -236,6 +239,13 @@ class CommentsControllerTest < ActionController::TestCase assert_not_nil json["file-diff"] assert_not_nil json["comment"] end + + should "be added to current_user's favorites if she wants" do + @version = create_new_version + create_merge_request_version_comment(@version, :add_to_favorites => "1") + user = users(:johan) + assert_equal(@merge_request, user.favorites.reload.last.watchable) + end end should "redirect back to the merge request on POST create if that's the target" do @@ -334,12 +344,17 @@ class CommentsControllerTest < ActionController::TestCase return version end - def create_merge_request_version_comment(version) - post :create, :project_id => @project.slug, :repository_id => @repository.to_param, - :merge_request_version_id => version.to_param, :comment => { + def create_merge_request_version_comment(version, extra_options={}) + request_options = { + :project_id => @project.slug, + :repository_id => @repository.to_param, + :merge_request_version_id => version.to_param, + :comment => { :path => "LICENSE", :lines => "1-1:13-13+14", :sha1 => "ffac01-ffab99", - :body => "Needs more cowbell"}, :format => "js" + :body => "Needs more cowbell"}, + :format => "js"}.merge(extra_options) + post :create, request_options end end |