summaryrefslogtreecommitdiffstats
path: root/test/integration
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2013-01-30 20:51:21 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2013-01-30 20:51:21 +0000
commita0158eff9643b836488bf40667669d07d8653429 (patch)
tree3bdf34a6bb3e2ad3114f3e0d3deaa371d5716abb /test/integration
parentf2fd78f7b868c184e4ab2058e41a27043640843a (diff)
downloadredmine-a0158eff9643b836488bf40667669d07d8653429.tar.gz
redmine-a0158eff9643b836488bf40667669d07d8653429.zip
Add/remove issue watchers via the REST API (#6727).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11290 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'test/integration')
-rw-r--r--test/integration/api_test/issues_test.rb51
-rw-r--r--test/integration/routing/watchers_test.rb10
2 files changed, 61 insertions, 0 deletions
diff --git a/test/integration/api_test/issues_test.rb b/test/integration/api_test/issues_test.rb
index 3917f8618..176c18105 100644
--- a/test/integration/api_test/issues_test.rb
+++ b/test/integration/api_test/issues_test.rb
@@ -453,6 +453,21 @@ class Redmine::ApiTest::IssuesTest < Redmine::ApiTest::Base
end
end
+ test "GET /issues/:id.xml?include=watchers should include watchers" do
+ Watcher.create!(:user_id => 3, :watchable => Issue.find(1))
+
+ get '/issues/1.xml?include=watchers', {}, credentials('jsmith')
+
+ assert_response :ok
+ assert_equal 'application/xml', response.content_type
+ assert_select 'issue' do
+ assert_select 'watchers', Issue.find(1).watchers.count
+ assert_select 'watchers' do
+ assert_select 'user[id=3]'
+ end
+ end
+ end
+
context "POST /issues.xml" do
should_allow_api_authentication(
:post,
@@ -478,6 +493,18 @@ class Redmine::ApiTest::IssuesTest < Redmine::ApiTest::Base
end
end
+ test "POST /issues.xml with watcher_user_ids should create issue with watchers" do
+ assert_difference('Issue.count') do
+ post '/issues.xml',
+ {:issue => {:project_id => 1, :subject => 'Watchers',
+ :tracker_id => 2, :status_id => 3, :watcher_user_ids => [3, 1]}}, credentials('jsmith')
+ assert_response :created
+ end
+ issue = Issue.order('id desc').first
+ assert_equal 2, issue.watchers.size
+ assert_equal [1, 3], issue.watcher_user_ids.sort
+ end
+
context "POST /issues.xml with failure" do
should "have an errors tag" do
assert_no_difference('Issue.count') do
@@ -720,6 +747,30 @@ class Redmine::ApiTest::IssuesTest < Redmine::ApiTest::Base
end
end
+ test "POST /issues/:id/watchers.xml should add watcher" do
+ assert_difference 'Watcher.count' do
+ post '/issues/1/watchers.xml', {:user_id => 3}, credentials('jsmith')
+
+ assert_response :ok
+ assert_equal '', response.body
+ end
+ watcher = Watcher.order('id desc').first
+ assert_equal Issue.find(1), watcher.watchable
+ assert_equal User.find(3), watcher.user
+ end
+
+ test "DELETE /issues/:id/watchers/:user_id.xml should remove watcher" do
+ Watcher.create!(:user_id => 3, :watchable => Issue.find(1))
+
+ assert_difference 'Watcher.count', -1 do
+ delete '/issues/1/watchers/3.xml', {}, credentials('jsmith')
+
+ assert_response :ok
+ assert_equal '', response.body
+ end
+ assert_equal false, Issue.find(1).watched_by?(User.find(3))
+ end
+
def test_create_issue_with_uploaded_file
set_tmp_attachments_directory
# upload the file
diff --git a/test/integration/routing/watchers_test.rb b/test/integration/routing/watchers_test.rb
index 1b8b629b7..3c203f4bc 100644
--- a/test/integration/routing/watchers_test.rb
+++ b/test/integration/routing/watchers_test.rb
@@ -47,5 +47,15 @@ class RoutingWatchersTest < ActionController::IntegrationTest
{ :method => 'post', :path => "/watchers/unwatch" },
{ :controller => 'watchers', :action => 'unwatch' }
)
+ assert_routing(
+ { :method => 'post', :path => "/issues/12/watchers.xml" },
+ { :controller => 'watchers', :action => 'create',
+ :object_type => 'issue', :object_id => '12', :format => 'xml' }
+ )
+ assert_routing(
+ { :method => 'delete', :path => "/issues/12/watchers/3.xml" },
+ { :controller => 'watchers', :action => 'destroy',
+ :object_type => 'issue', :object_id => '12', :user_id => '3', :format => 'xml'}
+ )
end
end