##// END OF EJS Templates
Rails3: replace "all" fixtures at test/integration/api_test/time_entries_test.rb...
Toshi MARUYAMA -
r7383:ff90cae5d3d9
parent child
Show More
@@ -1,144 +1,152
1 # Redmine - project management software
1 # Redmine - project management software
2 # Copyright (C) 2006-2011 Jean-Philippe Lang
2 # Copyright (C) 2006-2011 Jean-Philippe Lang
3 #
3 #
4 # This program is free software; you can redistribute it and/or
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License
5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2
6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version.
7 # of the License, or (at your option) any later version.
8 #
8 #
9 # This program is distributed in the hope that it will be useful,
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
12 # GNU General Public License for more details.
13 #
13 #
14 # You should have received a copy of the GNU General Public License
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
17
18 require File.expand_path('../../../test_helper', __FILE__)
18 require File.expand_path('../../../test_helper', __FILE__)
19
19
20 class ApiTest::TimeEntriesTest < ActionController::IntegrationTest
20 class ApiTest::TimeEntriesTest < ActionController::IntegrationTest
21 fixtures :all
21 fixtures :projects, :trackers, :issue_statuses, :issues,
22 :enumerations, :users, :issue_categories,
23 :projects_trackers,
24 :roles,
25 :member_roles,
26 :members,
27 :enabled_modules,
28 :workflows,
29 :time_entries
22
30
23 def setup
31 def setup
24 Setting.rest_api_enabled = '1'
32 Setting.rest_api_enabled = '1'
25 end
33 end
26
34
27 context "GET /time_entries.xml" do
35 context "GET /time_entries.xml" do
28 should "return time entries" do
36 should "return time entries" do
29 get '/time_entries.xml', {}, :authorization => credentials('jsmith')
37 get '/time_entries.xml', {}, :authorization => credentials('jsmith')
30 assert_response :success
38 assert_response :success
31 assert_equal 'application/xml', @response.content_type
39 assert_equal 'application/xml', @response.content_type
32 assert_tag :tag => 'time_entries',
40 assert_tag :tag => 'time_entries',
33 :child => {:tag => 'time_entry', :child => {:tag => 'id', :content => '2'}}
41 :child => {:tag => 'time_entry', :child => {:tag => 'id', :content => '2'}}
34 end
42 end
35
43
36 context "with limit" do
44 context "with limit" do
37 should "return limited results" do
45 should "return limited results" do
38 get '/time_entries.xml?limit=2', {}, :authorization => credentials('jsmith')
46 get '/time_entries.xml?limit=2', {}, :authorization => credentials('jsmith')
39 assert_response :success
47 assert_response :success
40 assert_equal 'application/xml', @response.content_type
48 assert_equal 'application/xml', @response.content_type
41 assert_tag :tag => 'time_entries',
49 assert_tag :tag => 'time_entries',
42 :children => {:count => 2}
50 :children => {:count => 2}
43 end
51 end
44 end
52 end
45 end
53 end
46
54
47 context "GET /time_entries/2.xml" do
55 context "GET /time_entries/2.xml" do
48 should "return requested time entry" do
56 should "return requested time entry" do
49 get '/time_entries/2.xml', {}, :authorization => credentials('jsmith')
57 get '/time_entries/2.xml', {}, :authorization => credentials('jsmith')
50 assert_response :success
58 assert_response :success
51 assert_equal 'application/xml', @response.content_type
59 assert_equal 'application/xml', @response.content_type
52 assert_tag :tag => 'time_entry',
60 assert_tag :tag => 'time_entry',
53 :child => {:tag => 'id', :content => '2'}
61 :child => {:tag => 'id', :content => '2'}
54 end
62 end
55 end
63 end
56
64
57 context "POST /time_entries.xml" do
65 context "POST /time_entries.xml" do
58 context "with issue_id" do
66 context "with issue_id" do
59 should "return create time entry" do
67 should "return create time entry" do
60 assert_difference 'TimeEntry.count' do
68 assert_difference 'TimeEntry.count' do
61 post '/time_entries.xml', {:time_entry => {:issue_id => '1', :spent_on => '2010-12-02', :hours => '3.5', :activity_id => '11'}}, :authorization => credentials('jsmith')
69 post '/time_entries.xml', {:time_entry => {:issue_id => '1', :spent_on => '2010-12-02', :hours => '3.5', :activity_id => '11'}}, :authorization => credentials('jsmith')
62 end
70 end
63 assert_response :created
71 assert_response :created
64 assert_equal 'application/xml', @response.content_type
72 assert_equal 'application/xml', @response.content_type
65
73
66 entry = TimeEntry.first(:order => 'id DESC')
74 entry = TimeEntry.first(:order => 'id DESC')
67 assert_equal 'jsmith', entry.user.login
75 assert_equal 'jsmith', entry.user.login
68 assert_equal Issue.find(1), entry.issue
76 assert_equal Issue.find(1), entry.issue
69 assert_equal Project.find(1), entry.project
77 assert_equal Project.find(1), entry.project
70 assert_equal Date.parse('2010-12-02'), entry.spent_on
78 assert_equal Date.parse('2010-12-02'), entry.spent_on
71 assert_equal 3.5, entry.hours
79 assert_equal 3.5, entry.hours
72 assert_equal TimeEntryActivity.find(11), entry.activity
80 assert_equal TimeEntryActivity.find(11), entry.activity
73 end
81 end
74 end
82 end
75
83
76 context "with project_id" do
84 context "with project_id" do
77 should "return create time entry" do
85 should "return create time entry" do
78 assert_difference 'TimeEntry.count' do
86 assert_difference 'TimeEntry.count' do
79 post '/time_entries.xml', {:time_entry => {:project_id => '1', :spent_on => '2010-12-02', :hours => '3.5', :activity_id => '11'}}, :authorization => credentials('jsmith')
87 post '/time_entries.xml', {:time_entry => {:project_id => '1', :spent_on => '2010-12-02', :hours => '3.5', :activity_id => '11'}}, :authorization => credentials('jsmith')
80 end
88 end
81 assert_response :created
89 assert_response :created
82 assert_equal 'application/xml', @response.content_type
90 assert_equal 'application/xml', @response.content_type
83
91
84 entry = TimeEntry.first(:order => 'id DESC')
92 entry = TimeEntry.first(:order => 'id DESC')
85 assert_equal 'jsmith', entry.user.login
93 assert_equal 'jsmith', entry.user.login
86 assert_nil entry.issue
94 assert_nil entry.issue
87 assert_equal Project.find(1), entry.project
95 assert_equal Project.find(1), entry.project
88 assert_equal Date.parse('2010-12-02'), entry.spent_on
96 assert_equal Date.parse('2010-12-02'), entry.spent_on
89 assert_equal 3.5, entry.hours
97 assert_equal 3.5, entry.hours
90 assert_equal TimeEntryActivity.find(11), entry.activity
98 assert_equal TimeEntryActivity.find(11), entry.activity
91 end
99 end
92 end
100 end
93
101
94 context "with invalid parameters" do
102 context "with invalid parameters" do
95 should "return errors" do
103 should "return errors" do
96 assert_no_difference 'TimeEntry.count' do
104 assert_no_difference 'TimeEntry.count' do
97 post '/time_entries.xml', {:time_entry => {:project_id => '1', :spent_on => '2010-12-02', :activity_id => '11'}}, :authorization => credentials('jsmith')
105 post '/time_entries.xml', {:time_entry => {:project_id => '1', :spent_on => '2010-12-02', :activity_id => '11'}}, :authorization => credentials('jsmith')
98 end
106 end
99 assert_response :unprocessable_entity
107 assert_response :unprocessable_entity
100 assert_equal 'application/xml', @response.content_type
108 assert_equal 'application/xml', @response.content_type
101
109
102 assert_tag 'errors', :child => {:tag => 'error', :content => "Hours can't be blank"}
110 assert_tag 'errors', :child => {:tag => 'error', :content => "Hours can't be blank"}
103 end
111 end
104 end
112 end
105 end
113 end
106
114
107 context "PUT /time_entries/2.xml" do
115 context "PUT /time_entries/2.xml" do
108 context "with valid parameters" do
116 context "with valid parameters" do
109 should "update time entry" do
117 should "update time entry" do
110 assert_no_difference 'TimeEntry.count' do
118 assert_no_difference 'TimeEntry.count' do
111 put '/time_entries/2.xml', {:time_entry => {:comments => 'API Update'}}, :authorization => credentials('jsmith')
119 put '/time_entries/2.xml', {:time_entry => {:comments => 'API Update'}}, :authorization => credentials('jsmith')
112 end
120 end
113 assert_response :ok
121 assert_response :ok
114 assert_equal 'API Update', TimeEntry.find(2).comments
122 assert_equal 'API Update', TimeEntry.find(2).comments
115 end
123 end
116 end
124 end
117
125
118 context "with invalid parameters" do
126 context "with invalid parameters" do
119 should "return errors" do
127 should "return errors" do
120 assert_no_difference 'TimeEntry.count' do
128 assert_no_difference 'TimeEntry.count' do
121 put '/time_entries/2.xml', {:time_entry => {:hours => '', :comments => 'API Update'}}, :authorization => credentials('jsmith')
129 put '/time_entries/2.xml', {:time_entry => {:hours => '', :comments => 'API Update'}}, :authorization => credentials('jsmith')
122 end
130 end
123 assert_response :unprocessable_entity
131 assert_response :unprocessable_entity
124 assert_equal 'application/xml', @response.content_type
132 assert_equal 'application/xml', @response.content_type
125
133
126 assert_tag 'errors', :child => {:tag => 'error', :content => "Hours can't be blank"}
134 assert_tag 'errors', :child => {:tag => 'error', :content => "Hours can't be blank"}
127 end
135 end
128 end
136 end
129 end
137 end
130
138
131 context "DELETE /time_entries/2.xml" do
139 context "DELETE /time_entries/2.xml" do
132 should "destroy time entry" do
140 should "destroy time entry" do
133 assert_difference 'TimeEntry.count', -1 do
141 assert_difference 'TimeEntry.count', -1 do
134 delete '/time_entries/2.xml', {}, :authorization => credentials('jsmith')
142 delete '/time_entries/2.xml', {}, :authorization => credentials('jsmith')
135 end
143 end
136 assert_response :ok
144 assert_response :ok
137 assert_nil TimeEntry.find_by_id(2)
145 assert_nil TimeEntry.find_by_id(2)
138 end
146 end
139 end
147 end
140
148
141 def credentials(user, password=nil)
149 def credentials(user, password=nil)
142 ActionController::HttpAuthentication::Basic.encode_credentials(user, password || user)
150 ActionController::HttpAuthentication::Basic.encode_credentials(user, password || user)
143 end
151 end
144 end
152 end
General Comments 0
You need to be logged in to leave comments. Login now