summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarius Mathiesen <marius@shortcut.no>2009-12-15 14:00:13 +0100
committerMarius Mathiesen <marius@shortcut.no>2009-12-15 14:00:28 +0100
commit72d9310014fe588c7ba2bca0e17472813e86ab1d (patch)
tree8256b8e29d2de5a5d961af8987638eadfc459493
parentfdc44ac950835e272b8ca7ff30a2e5e291b483d5 (diff)
downloadgitorious-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.rb6
-rw-r--r--lib/authenticated_test_helper.rb9
-rw-r--r--test/functional/comments_controller_test.rb33
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