diff test/integration/api_test/time_entries_test.rb @ 1115:433d4f72a19b redmine-2.2

Update to Redmine SVN revision 11137 on 2.2-stable branch
author Chris Cannam
date Mon, 07 Jan 2013 12:01:42 +0000
parents cbb26bc654de
children 622f24f53b42 261b3d9a4903
line wrap: on
line diff
--- a/test/integration/api_test/time_entries_test.rb	Wed Jun 27 14:54:18 2012 +0100
+++ b/test/integration/api_test/time_entries_test.rb	Mon Jan 07 12:01:42 2013 +0000
@@ -1,5 +1,5 @@
 # Redmine - project management software
-# Copyright (C) 2006-2011  Jean-Philippe Lang
+# Copyright (C) 2006-2012  Jean-Philippe Lang
 #
 # This program is free software; you can redistribute it and/or
 # modify it under the terms of the GNU General Public License
@@ -34,7 +34,7 @@
 
   context "GET /time_entries.xml" do
     should "return time entries" do
-      get '/time_entries.xml', {}, :authorization => credentials('jsmith')
+      get '/time_entries.xml', {}, credentials('jsmith')
       assert_response :success
       assert_equal 'application/xml', @response.content_type
       assert_tag :tag => 'time_entries',
@@ -43,7 +43,7 @@
 
     context "with limit" do
       should "return limited results" do
-        get '/time_entries.xml?limit=2', {}, :authorization => credentials('jsmith')
+        get '/time_entries.xml?limit=2', {}, credentials('jsmith')
         assert_response :success
         assert_equal 'application/xml', @response.content_type
         assert_tag :tag => 'time_entries',
@@ -54,7 +54,7 @@
 
   context "GET /time_entries/2.xml" do
     should "return requested time entry" do
-      get '/time_entries/2.xml', {}, :authorization => credentials('jsmith')
+      get '/time_entries/2.xml', {}, credentials('jsmith')
       assert_response :success
       assert_equal 'application/xml', @response.content_type
       assert_tag :tag => 'time_entry',
@@ -66,7 +66,7 @@
     context "with issue_id" do
       should "return create time entry" do
         assert_difference 'TimeEntry.count' do
-          post '/time_entries.xml', {:time_entry => {:issue_id => '1', :spent_on => '2010-12-02', :hours => '3.5', :activity_id => '11'}}, :authorization => credentials('jsmith')
+          post '/time_entries.xml', {:time_entry => {:issue_id => '1', :spent_on => '2010-12-02', :hours => '3.5', :activity_id => '11'}}, credentials('jsmith')
         end
         assert_response :created
         assert_equal 'application/xml', @response.content_type
@@ -79,12 +79,27 @@
         assert_equal 3.5, entry.hours
         assert_equal TimeEntryActivity.find(11), entry.activity
       end
+
+      should "accept custom fields" do
+        field = TimeEntryCustomField.create!(:name => 'Test', :field_format => 'string')
+
+        assert_difference 'TimeEntry.count' do
+          post '/time_entries.xml', {:time_entry => {
+            :issue_id => '1', :spent_on => '2010-12-02', :hours => '3.5', :activity_id => '11', :custom_fields => [{:id => field.id.to_s, :value => 'accepted'}]
+          }}, credentials('jsmith')
+        end
+        assert_response :created
+        assert_equal 'application/xml', @response.content_type
+
+        entry = TimeEntry.first(:order => 'id DESC')
+        assert_equal 'accepted', entry.custom_field_value(field)
+      end
     end
 
     context "with project_id" do
       should "return create time entry" do
         assert_difference 'TimeEntry.count' do
-          post '/time_entries.xml', {:time_entry => {:project_id => '1', :spent_on => '2010-12-02', :hours => '3.5', :activity_id => '11'}}, :authorization => credentials('jsmith')
+          post '/time_entries.xml', {:time_entry => {:project_id => '1', :spent_on => '2010-12-02', :hours => '3.5', :activity_id => '11'}}, credentials('jsmith')
         end
         assert_response :created
         assert_equal 'application/xml', @response.content_type
@@ -102,7 +117,7 @@
     context "with invalid parameters" do
       should "return errors" do
         assert_no_difference 'TimeEntry.count' do
-          post '/time_entries.xml', {:time_entry => {:project_id => '1', :spent_on => '2010-12-02', :activity_id => '11'}}, :authorization => credentials('jsmith')
+          post '/time_entries.xml', {:time_entry => {:project_id => '1', :spent_on => '2010-12-02', :activity_id => '11'}}, credentials('jsmith')
         end
         assert_response :unprocessable_entity
         assert_equal 'application/xml', @response.content_type
@@ -116,9 +131,10 @@
     context "with valid parameters" do
       should "update time entry" do
         assert_no_difference 'TimeEntry.count' do
-          put '/time_entries/2.xml', {:time_entry => {:comments => 'API Update'}}, :authorization => credentials('jsmith')
+          put '/time_entries/2.xml', {:time_entry => {:comments => 'API Update'}}, credentials('jsmith')
         end
         assert_response :ok
+        assert_equal '', @response.body
         assert_equal 'API Update', TimeEntry.find(2).comments
       end
     end
@@ -126,7 +142,7 @@
     context "with invalid parameters" do
       should "return errors" do
         assert_no_difference 'TimeEntry.count' do
-          put '/time_entries/2.xml', {:time_entry => {:hours => '', :comments => 'API Update'}}, :authorization => credentials('jsmith')
+          put '/time_entries/2.xml', {:time_entry => {:hours => '', :comments => 'API Update'}}, credentials('jsmith')
         end
         assert_response :unprocessable_entity
         assert_equal 'application/xml', @response.content_type
@@ -139,14 +155,11 @@
   context "DELETE /time_entries/2.xml" do
     should "destroy time entry" do
       assert_difference 'TimeEntry.count', -1 do
-        delete '/time_entries/2.xml', {}, :authorization => credentials('jsmith')
+        delete '/time_entries/2.xml', {}, credentials('jsmith')
       end
       assert_response :ok
+      assert_equal '', @response.body
       assert_nil TimeEntry.find_by_id(2)
     end
   end
-
-  def credentials(user, password=nil)
-    ActionController::HttpAuthentication::Basic.encode_credentials(user, password || user)
-  end
 end