##// END OF EJS Templates
remove trailing white-spaces from test/unit/lib/redmine/helpers/gantt_test.rb....
Toshi MARUYAMA -
r6668:98e7d125f160
parent child
Show More
@@ -1,779 +1,779
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 Redmine::Helpers::GanttTest < ActiveSupport::TestCase
20 class Redmine::Helpers::GanttTest < ActiveSupport::TestCase
21 # Utility methods and classes so assert_select can be used.
21 # Utility methods and classes so assert_select can be used.
22 class GanttViewTest < ActionView::Base
22 class GanttViewTest < ActionView::Base
23 include ActionView::Helpers::UrlHelper
23 include ActionView::Helpers::UrlHelper
24 include ActionView::Helpers::TextHelper
24 include ActionView::Helpers::TextHelper
25 include ActionController::UrlWriter
25 include ActionController::UrlWriter
26 include ApplicationHelper
26 include ApplicationHelper
27 include ProjectsHelper
27 include ProjectsHelper
28 include IssuesHelper
28 include IssuesHelper
29
29
30 def self.default_url_options
30 def self.default_url_options
31 {:only_path => true }
31 {:only_path => true }
32 end
32 end
33
33
34 end
34 end
35
35
36 include ActionController::Assertions::SelectorAssertions
36 include ActionController::Assertions::SelectorAssertions
37
37
38 def setup
38 def setup
39 @response = ActionController::TestResponse.new
39 @response = ActionController::TestResponse.new
40 # Fixtures
40 # Fixtures
41 ProjectCustomField.delete_all
41 ProjectCustomField.delete_all
42 Project.destroy_all
42 Project.destroy_all
43
43
44 User.current = User.find(1)
44 User.current = User.find(1)
45 end
45 end
46
46
47 def build_view
47 def build_view
48 @view = GanttViewTest.new
48 @view = GanttViewTest.new
49 end
49 end
50
50
51 def html_document
51 def html_document
52 HTML::Document.new(@response.body)
52 HTML::Document.new(@response.body)
53 end
53 end
54
54
55 # Creates a Gantt chart for a 4 week span
55 # Creates a Gantt chart for a 4 week span
56 def create_gantt(project=Project.generate!, options={})
56 def create_gantt(project=Project.generate!, options={})
57 @project = project
57 @project = project
58 @gantt = Redmine::Helpers::Gantt.new(options)
58 @gantt = Redmine::Helpers::Gantt.new(options)
59 @gantt.project = @project
59 @gantt.project = @project
60 @gantt.query = Query.generate_default!(:project => @project)
60 @gantt.query = Query.generate_default!(:project => @project)
61 @gantt.view = build_view
61 @gantt.view = build_view
62 @gantt.instance_variable_set('@date_from', options[:date_from] || 2.weeks.ago.to_date)
62 @gantt.instance_variable_set('@date_from', options[:date_from] || 2.weeks.ago.to_date)
63 @gantt.instance_variable_set('@date_to', options[:date_to] || 2.weeks.from_now.to_date)
63 @gantt.instance_variable_set('@date_to', options[:date_to] || 2.weeks.from_now.to_date)
64 end
64 end
65
65
66 context "#number_of_rows" do
66 context "#number_of_rows" do
67
67
68 context "with one project" do
68 context "with one project" do
69 should "return the number of rows just for that project"
69 should "return the number of rows just for that project"
70 end
70 end
71
71
72 context "with no project" do
72 context "with no project" do
73 should "return the total number of rows for all the projects, resursively"
73 should "return the total number of rows for all the projects, resursively"
74 end
74 end
75
75
76 should "not exceed max_rows option" do
76 should "not exceed max_rows option" do
77 p = Project.generate!
77 p = Project.generate!
78 5.times do
78 5.times do
79 Issue.generate_for_project!(p)
79 Issue.generate_for_project!(p)
80 end
80 end
81
81
82 create_gantt(p)
82 create_gantt(p)
83 @gantt.render
83 @gantt.render
84 assert_equal 6, @gantt.number_of_rows
84 assert_equal 6, @gantt.number_of_rows
85 assert !@gantt.truncated
85 assert !@gantt.truncated
86
86
87 create_gantt(p, :max_rows => 3)
87 create_gantt(p, :max_rows => 3)
88 @gantt.render
88 @gantt.render
89 assert_equal 3, @gantt.number_of_rows
89 assert_equal 3, @gantt.number_of_rows
90 assert @gantt.truncated
90 assert @gantt.truncated
91 end
91 end
92 end
92 end
93
93
94 context "#number_of_rows_on_project" do
94 context "#number_of_rows_on_project" do
95 setup do
95 setup do
96 create_gantt
96 create_gantt
97 end
97 end
98
98
99 should "count 0 for an empty the project" do
99 should "count 0 for an empty the project" do
100 assert_equal 0, @gantt.number_of_rows_on_project(@project)
100 assert_equal 0, @gantt.number_of_rows_on_project(@project)
101 end
101 end
102
102
103 should "count the number of issues without a version" do
103 should "count the number of issues without a version" do
104 @project.issues << Issue.generate_for_project!(@project, :fixed_version => nil)
104 @project.issues << Issue.generate_for_project!(@project, :fixed_version => nil)
105 assert_equal 2, @gantt.number_of_rows_on_project(@project)
105 assert_equal 2, @gantt.number_of_rows_on_project(@project)
106 end
106 end
107
107
108 should "count the number of issues on versions, including cross-project" do
108 should "count the number of issues on versions, including cross-project" do
109 version = Version.generate!
109 version = Version.generate!
110 @project.versions << version
110 @project.versions << version
111 @project.issues << Issue.generate_for_project!(@project, :fixed_version => version)
111 @project.issues << Issue.generate_for_project!(@project, :fixed_version => version)
112
112
113 assert_equal 3, @gantt.number_of_rows_on_project(@project)
113 assert_equal 3, @gantt.number_of_rows_on_project(@project)
114 end
114 end
115 end
115 end
116
116
117 # TODO: more of an integration test
117 # TODO: more of an integration test
118 context "#subjects" do
118 context "#subjects" do
119 setup do
119 setup do
120 create_gantt
120 create_gantt
121 @project.enabled_module_names = [:issue_tracking]
121 @project.enabled_module_names = [:issue_tracking]
122 @tracker = Tracker.generate!
122 @tracker = Tracker.generate!
123 @project.trackers << @tracker
123 @project.trackers << @tracker
124 @version = Version.generate!(:effective_date => 1.week.from_now.to_date, :sharing => 'none')
124 @version = Version.generate!(:effective_date => 1.week.from_now.to_date, :sharing => 'none')
125 @project.versions << @version
125 @project.versions << @version
126
126
127 @issue = Issue.generate!(:fixed_version => @version,
127 @issue = Issue.generate!(:fixed_version => @version,
128 :subject => "gantt#line_for_project",
128 :subject => "gantt#line_for_project",
129 :tracker => @tracker,
129 :tracker => @tracker,
130 :project => @project,
130 :project => @project,
131 :done_ratio => 30,
131 :done_ratio => 30,
132 :start_date => Date.yesterday,
132 :start_date => Date.yesterday,
133 :due_date => 1.week.from_now.to_date)
133 :due_date => 1.week.from_now.to_date)
134 @project.issues << @issue
134 @project.issues << @issue
135 end
135 end
136
136
137 context "project" do
137 context "project" do
138 should "be rendered" do
138 should "be rendered" do
139 @response.body = @gantt.subjects
139 @response.body = @gantt.subjects
140 assert_select "div.project-name a", /#{@project.name}/
140 assert_select "div.project-name a", /#{@project.name}/
141 end
141 end
142
142
143 should "have an indent of 4" do
143 should "have an indent of 4" do
144 @response.body = @gantt.subjects
144 @response.body = @gantt.subjects
145 assert_select "div.project-name[style*=left:4px]"
145 assert_select "div.project-name[style*=left:4px]"
146 end
146 end
147 end
147 end
148
148
149 context "version" do
149 context "version" do
150 should "be rendered" do
150 should "be rendered" do
151 @response.body = @gantt.subjects
151 @response.body = @gantt.subjects
152 assert_select "div.version-name a", /#{@version.name}/
152 assert_select "div.version-name a", /#{@version.name}/
153 end
153 end
154
154
155 should "be indented 24 (one level)" do
155 should "be indented 24 (one level)" do
156 @response.body = @gantt.subjects
156 @response.body = @gantt.subjects
157 assert_select "div.version-name[style*=left:24px]"
157 assert_select "div.version-name[style*=left:24px]"
158 end
158 end
159
159
160 context "without assigned issues" do
160 context "without assigned issues" do
161 setup do
161 setup do
162 @version = Version.generate!(:effective_date => 2.week.from_now.to_date, :sharing => 'none', :name => 'empty_version')
162 @version = Version.generate!(:effective_date => 2.week.from_now.to_date, :sharing => 'none', :name => 'empty_version')
163 @project.versions << @version
163 @project.versions << @version
164 end
164 end
165
165
166 should "not be rendered" do
166 should "not be rendered" do
167 @response.body = @gantt.subjects
167 @response.body = @gantt.subjects
168 assert_select "div.version-name a", :text => /#{@version.name}/, :count => 0
168 assert_select "div.version-name a", :text => /#{@version.name}/, :count => 0
169 end
169 end
170 end
170 end
171 end
171 end
172
172
173 context "issue" do
173 context "issue" do
174 should "be rendered" do
174 should "be rendered" do
175 @response.body = @gantt.subjects
175 @response.body = @gantt.subjects
176 assert_select "div.issue-subject", /#{@issue.subject}/
176 assert_select "div.issue-subject", /#{@issue.subject}/
177 end
177 end
178
178
179 should "be indented 44 (two levels)" do
179 should "be indented 44 (two levels)" do
180 @response.body = @gantt.subjects
180 @response.body = @gantt.subjects
181 assert_select "div.issue-subject[style*=left:44px]"
181 assert_select "div.issue-subject[style*=left:44px]"
182 end
182 end
183
183
184 context "assigned to a shared version of another project" do
184 context "assigned to a shared version of another project" do
185 setup do
185 setup do
186 p = Project.generate!
186 p = Project.generate!
187 p.trackers << @tracker
187 p.trackers << @tracker
188 p.enabled_module_names = [:issue_tracking]
188 p.enabled_module_names = [:issue_tracking]
189 @shared_version = Version.generate!(:sharing => 'system')
189 @shared_version = Version.generate!(:sharing => 'system')
190 p.versions << @shared_version
190 p.versions << @shared_version
191 # Reassign the issue to a shared version of another project
191 # Reassign the issue to a shared version of another project
192
192
193 @issue = Issue.generate!(:fixed_version => @shared_version,
193 @issue = Issue.generate!(:fixed_version => @shared_version,
194 :subject => "gantt#assigned_to_shared_version",
194 :subject => "gantt#assigned_to_shared_version",
195 :tracker => @tracker,
195 :tracker => @tracker,
196 :project => @project,
196 :project => @project,
197 :done_ratio => 30,
197 :done_ratio => 30,
198 :start_date => Date.yesterday,
198 :start_date => Date.yesterday,
199 :due_date => 1.week.from_now.to_date)
199 :due_date => 1.week.from_now.to_date)
200 @project.issues << @issue
200 @project.issues << @issue
201 end
201 end
202
202
203 should "be rendered" do
203 should "be rendered" do
204 @response.body = @gantt.subjects
204 @response.body = @gantt.subjects
205 assert_select "div.issue-subject", /#{@issue.subject}/
205 assert_select "div.issue-subject", /#{@issue.subject}/
206 end
206 end
207 end
207 end
208
208
209 context "with subtasks" do
209 context "with subtasks" do
210 setup do
210 setup do
211 attrs = {:project => @project, :tracker => @tracker, :fixed_version => @version}
211 attrs = {:project => @project, :tracker => @tracker, :fixed_version => @version}
212 @child1 = Issue.generate!(attrs.merge(:subject => 'child1', :parent_issue_id => @issue.id, :start_date => Date.yesterday, :due_date => 2.day.from_now.to_date))
212 @child1 = Issue.generate!(attrs.merge(:subject => 'child1', :parent_issue_id => @issue.id, :start_date => Date.yesterday, :due_date => 2.day.from_now.to_date))
213 @child2 = Issue.generate!(attrs.merge(:subject => 'child2', :parent_issue_id => @issue.id, :start_date => Date.today, :due_date => 1.week.from_now.to_date))
213 @child2 = Issue.generate!(attrs.merge(:subject => 'child2', :parent_issue_id => @issue.id, :start_date => Date.today, :due_date => 1.week.from_now.to_date))
214 @grandchild = Issue.generate!(attrs.merge(:subject => 'grandchild', :parent_issue_id => @child1.id, :start_date => Date.yesterday, :due_date => 2.day.from_now.to_date))
214 @grandchild = Issue.generate!(attrs.merge(:subject => 'grandchild', :parent_issue_id => @child1.id, :start_date => Date.yesterday, :due_date => 2.day.from_now.to_date))
215 end
215 end
216
216
217 should "indent subtasks" do
217 should "indent subtasks" do
218 @response.body = @gantt.subjects
218 @response.body = @gantt.subjects
219 # parent task 44px
219 # parent task 44px
220 assert_select "div.issue-subject[style*=left:44px]", /#{@issue.subject}/
220 assert_select "div.issue-subject[style*=left:44px]", /#{@issue.subject}/
221 # children 64px
221 # children 64px
222 assert_select "div.issue-subject[style*=left:64px]", /child1/
222 assert_select "div.issue-subject[style*=left:64px]", /child1/
223 assert_select "div.issue-subject[style*=left:64px]", /child2/
223 assert_select "div.issue-subject[style*=left:64px]", /child2/
224 # grandchild 84px
224 # grandchild 84px
225 assert_select "div.issue-subject[style*=left:84px]", /grandchild/, @response.body
225 assert_select "div.issue-subject[style*=left:84px]", /grandchild/, @response.body
226 end
226 end
227 end
227 end
228 end
228 end
229 end
229 end
230
230
231 context "#lines" do
231 context "#lines" do
232 setup do
232 setup do
233 create_gantt
233 create_gantt
234 @project.enabled_module_names = [:issue_tracking]
234 @project.enabled_module_names = [:issue_tracking]
235 @tracker = Tracker.generate!
235 @tracker = Tracker.generate!
236 @project.trackers << @tracker
236 @project.trackers << @tracker
237 @version = Version.generate!(:effective_date => 1.week.from_now.to_date)
237 @version = Version.generate!(:effective_date => 1.week.from_now.to_date)
238 @project.versions << @version
238 @project.versions << @version
239 @issue = Issue.generate!(:fixed_version => @version,
239 @issue = Issue.generate!(:fixed_version => @version,
240 :subject => "gantt#line_for_project",
240 :subject => "gantt#line_for_project",
241 :tracker => @tracker,
241 :tracker => @tracker,
242 :project => @project,
242 :project => @project,
243 :done_ratio => 30,
243 :done_ratio => 30,
244 :start_date => Date.yesterday,
244 :start_date => Date.yesterday,
245 :due_date => 1.week.from_now.to_date)
245 :due_date => 1.week.from_now.to_date)
246 @project.issues << @issue
246 @project.issues << @issue
247
247
248 @response.body = @gantt.lines
248 @response.body = @gantt.lines
249 end
249 end
250
250
251 context "project" do
251 context "project" do
252 should "be rendered" do
252 should "be rendered" do
253 assert_select "div.project.task_todo"
253 assert_select "div.project.task_todo"
254 assert_select "div.project.starting"
254 assert_select "div.project.starting"
255 assert_select "div.project.ending"
255 assert_select "div.project.ending"
256 assert_select "div.label.project", /#{@project.name}/
256 assert_select "div.label.project", /#{@project.name}/
257 end
257 end
258 end
258 end
259
259
260 context "version" do
260 context "version" do
261 should "be rendered" do
261 should "be rendered" do
262 assert_select "div.version.task_todo"
262 assert_select "div.version.task_todo"
263 assert_select "div.version.starting"
263 assert_select "div.version.starting"
264 assert_select "div.version.ending"
264 assert_select "div.version.ending"
265 assert_select "div.label.version", /#{@version.name}/
265 assert_select "div.label.version", /#{@version.name}/
266 end
266 end
267 end
267 end
268
268
269 context "issue" do
269 context "issue" do
270 should "be rendered" do
270 should "be rendered" do
271 assert_select "div.task_todo"
271 assert_select "div.task_todo"
272 assert_select "div.task.label", /#{@issue.done_ratio}/
272 assert_select "div.task.label", /#{@issue.done_ratio}/
273 assert_select "div.tooltip", /#{@issue.subject}/
273 assert_select "div.tooltip", /#{@issue.subject}/
274 end
274 end
275 end
275 end
276 end
276 end
277
277
278 context "#render_project" do
278 context "#render_project" do
279 should "be tested"
279 should "be tested"
280 end
280 end
281
281
282 context "#render_issues" do
282 context "#render_issues" do
283 should "be tested"
283 should "be tested"
284 end
284 end
285
285
286 context "#render_version" do
286 context "#render_version" do
287 should "be tested"
287 should "be tested"
288 end
288 end
289
289
290 context "#subject_for_project" do
290 context "#subject_for_project" do
291 setup do
291 setup do
292 create_gantt
292 create_gantt
293 end
293 end
294
294
295 context ":html format" do
295 context ":html format" do
296 should "add an absolute positioned div" do
296 should "add an absolute positioned div" do
297 @response.body = @gantt.subject_for_project(@project, {:format => :html})
297 @response.body = @gantt.subject_for_project(@project, {:format => :html})
298 assert_select "div[style*=absolute]"
298 assert_select "div[style*=absolute]"
299 end
299 end
300
300
301 should "use the indent option to move the div to the right" do
301 should "use the indent option to move the div to the right" do
302 @response.body = @gantt.subject_for_project(@project, {:format => :html, :indent => 40})
302 @response.body = @gantt.subject_for_project(@project, {:format => :html, :indent => 40})
303 assert_select "div[style*=left:40]"
303 assert_select "div[style*=left:40]"
304 end
304 end
305
305
306 should "include the project name" do
306 should "include the project name" do
307 @response.body = @gantt.subject_for_project(@project, {:format => :html})
307 @response.body = @gantt.subject_for_project(@project, {:format => :html})
308 assert_select 'div', :text => /#{@project.name}/
308 assert_select 'div', :text => /#{@project.name}/
309 end
309 end
310
310
311 should "include a link to the project" do
311 should "include a link to the project" do
312 @response.body = @gantt.subject_for_project(@project, {:format => :html})
312 @response.body = @gantt.subject_for_project(@project, {:format => :html})
313 assert_select 'a[href=?]', "/projects/#{@project.identifier}", :text => /#{@project.name}/
313 assert_select 'a[href=?]', "/projects/#{@project.identifier}", :text => /#{@project.name}/
314 end
314 end
315
315
316 should "style overdue projects" do
316 should "style overdue projects" do
317 @project.enabled_module_names = [:issue_tracking]
317 @project.enabled_module_names = [:issue_tracking]
318 @project.versions << Version.generate!(:effective_date => Date.yesterday)
318 @project.versions << Version.generate!(:effective_date => Date.yesterday)
319
319
320 assert @project.overdue?, "Need an overdue project for this test"
320 assert @project.overdue?, "Need an overdue project for this test"
321 @response.body = @gantt.subject_for_project(@project, {:format => :html})
321 @response.body = @gantt.subject_for_project(@project, {:format => :html})
322
322
323 assert_select 'div span.project-overdue'
323 assert_select 'div span.project-overdue'
324 end
324 end
325
325
326
326
327 end
327 end
328
328
329 should "test the PNG format"
329 should "test the PNG format"
330 should "test the PDF format"
330 should "test the PDF format"
331 end
331 end
332
332
333 context "#line_for_project" do
333 context "#line_for_project" do
334 setup do
334 setup do
335 create_gantt
335 create_gantt
336 @project.enabled_module_names = [:issue_tracking]
336 @project.enabled_module_names = [:issue_tracking]
337 @tracker = Tracker.generate!
337 @tracker = Tracker.generate!
338 @project.trackers << @tracker
338 @project.trackers << @tracker
339 @version = Version.generate!(:effective_date => Date.yesterday)
339 @version = Version.generate!(:effective_date => Date.yesterday)
340 @project.versions << @version
340 @project.versions << @version
341
341
342 @project.issues << Issue.generate!(:fixed_version => @version,
342 @project.issues << Issue.generate!(:fixed_version => @version,
343 :subject => "gantt#line_for_project",
343 :subject => "gantt#line_for_project",
344 :tracker => @tracker,
344 :tracker => @tracker,
345 :project => @project,
345 :project => @project,
346 :done_ratio => 30,
346 :done_ratio => 30,
347 :start_date => 1.week.ago.to_date,
347 :start_date => 1.week.ago.to_date,
348 :due_date => 1.week.from_now.to_date)
348 :due_date => 1.week.from_now.to_date)
349 end
349 end
350
350
351 context ":html format" do
351 context ":html format" do
352 context "todo line" do
352 context "todo line" do
353 should "start from the starting point on the left" do
353 should "start from the starting point on the left" do
354 @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
354 @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
355 assert_select "div.project.task_todo[style*=left:28px]", true, @response.body
355 assert_select "div.project.task_todo[style*=left:28px]", true, @response.body
356 end
356 end
357
357
358 should "be the total width of the project" do
358 should "be the total width of the project" do
359 @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
359 @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
360 assert_select "div.project.task_todo[style*=width:58px]", true, @response.body
360 assert_select "div.project.task_todo[style*=width:58px]", true, @response.body
361 end
361 end
362
362
363 end
363 end
364
364
365 context "late line" do
365 context "late line" do
366 should_eventually "start from the starting point on the left" do
366 should_eventually "start from the starting point on the left" do
367 @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
367 @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
368 assert_select "div.project.task_late[style*=left:28px]", true, @response.body
368 assert_select "div.project.task_late[style*=left:28px]", true, @response.body
369 end
369 end
370
370
371 should_eventually "be the total delayed width of the project" do
371 should_eventually "be the total delayed width of the project" do
372 @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
372 @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
373 assert_select "div.project.task_late[style*=width:30px]", true, @response.body
373 assert_select "div.project.task_late[style*=width:30px]", true, @response.body
374 end
374 end
375 end
375 end
376
376
377 context "done line" do
377 context "done line" do
378 should_eventually "start from the starting point on the left" do
378 should_eventually "start from the starting point on the left" do
379 @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
379 @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
380 assert_select "div.project.task_done[style*=left:28px]", true, @response.body
380 assert_select "div.project.task_done[style*=left:28px]", true, @response.body
381 end
381 end
382
382
383 should_eventually "Be the total done width of the project" do
383 should_eventually "Be the total done width of the project" do
384 @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
384 @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
385 assert_select "div.project.task_done[style*=width:18px]", true, @response.body
385 assert_select "div.project.task_done[style*=width:18px]", true, @response.body
386 end
386 end
387 end
387 end
388
388
389 context "starting marker" do
389 context "starting marker" do
390 should "not appear if the starting point is off the gantt chart" do
390 should "not appear if the starting point is off the gantt chart" do
391 # Shift the date range of the chart
391 # Shift the date range of the chart
392 @gantt.instance_variable_set('@date_from', Date.today)
392 @gantt.instance_variable_set('@date_from', Date.today)
393
393
394 @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
394 @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
395 assert_select "div.project.starting", false, @response.body
395 assert_select "div.project.starting", false, @response.body
396 end
396 end
397
397
398 should "appear at the starting point" do
398 should "appear at the starting point" do
399 @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
399 @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
400 assert_select "div.project.starting[style*=left:28px]", true, @response.body
400 assert_select "div.project.starting[style*=left:28px]", true, @response.body
401 end
401 end
402 end
402 end
403
403
404 context "ending marker" do
404 context "ending marker" do
405 should "not appear if the starting point is off the gantt chart" do
405 should "not appear if the starting point is off the gantt chart" do
406 # Shift the date range of the chart
406 # Shift the date range of the chart
407 @gantt.instance_variable_set('@date_to', 2.weeks.ago.to_date)
407 @gantt.instance_variable_set('@date_to', 2.weeks.ago.to_date)
408
408
409 @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
409 @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
410 assert_select "div.project.ending", false, @response.body
410 assert_select "div.project.ending", false, @response.body
411
411
412 end
412 end
413
413
414 should "appear at the end of the date range" do
414 should "appear at the end of the date range" do
415 @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
415 @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
416 assert_select "div.project.ending[style*=left:88px]", true, @response.body
416 assert_select "div.project.ending[style*=left:88px]", true, @response.body
417 end
417 end
418 end
418 end
419
419
420 context "status content" do
420 context "status content" do
421 should "appear at the far left, even if it's far in the past" do
421 should "appear at the far left, even if it's far in the past" do
422 @gantt.instance_variable_set('@date_to', 2.weeks.ago.to_date)
422 @gantt.instance_variable_set('@date_to', 2.weeks.ago.to_date)
423
423
424 @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
424 @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
425 assert_select "div.project.label", /#{@project.name}/
425 assert_select "div.project.label", /#{@project.name}/
426 end
426 end
427
427
428 should "show the project name" do
428 should "show the project name" do
429 @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
429 @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
430 assert_select "div.project.label", /#{@project.name}/
430 assert_select "div.project.label", /#{@project.name}/
431 end
431 end
432
432
433 should_eventually "show the percent complete" do
433 should_eventually "show the percent complete" do
434 @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
434 @response.body = @gantt.line_for_project(@project, {:format => :html, :zoom => 4})
435 assert_select "div.project.label", /0%/
435 assert_select "div.project.label", /0%/
436 end
436 end
437 end
437 end
438 end
438 end
439
439
440 should "test the PNG format"
440 should "test the PNG format"
441 should "test the PDF format"
441 should "test the PDF format"
442 end
442 end
443
443
444 context "#subject_for_version" do
444 context "#subject_for_version" do
445 setup do
445 setup do
446 create_gantt
446 create_gantt
447 @project.enabled_module_names = [:issue_tracking]
447 @project.enabled_module_names = [:issue_tracking]
448 @tracker = Tracker.generate!
448 @tracker = Tracker.generate!
449 @project.trackers << @tracker
449 @project.trackers << @tracker
450 @version = Version.generate!(:effective_date => Date.yesterday)
450 @version = Version.generate!(:effective_date => Date.yesterday)
451 @project.versions << @version
451 @project.versions << @version
452
452
453 @project.issues << Issue.generate!(:fixed_version => @version,
453 @project.issues << Issue.generate!(:fixed_version => @version,
454 :subject => "gantt#subject_for_version",
454 :subject => "gantt#subject_for_version",
455 :tracker => @tracker,
455 :tracker => @tracker,
456 :project => @project,
456 :project => @project,
457 :start_date => Date.today)
457 :start_date => Date.today)
458
458
459 end
459 end
460
460
461 context ":html format" do
461 context ":html format" do
462 should "add an absolute positioned div" do
462 should "add an absolute positioned div" do
463 @response.body = @gantt.subject_for_version(@version, {:format => :html})
463 @response.body = @gantt.subject_for_version(@version, {:format => :html})
464 assert_select "div[style*=absolute]"
464 assert_select "div[style*=absolute]"
465 end
465 end
466
466
467 should "use the indent option to move the div to the right" do
467 should "use the indent option to move the div to the right" do
468 @response.body = @gantt.subject_for_version(@version, {:format => :html, :indent => 40})
468 @response.body = @gantt.subject_for_version(@version, {:format => :html, :indent => 40})
469 assert_select "div[style*=left:40]"
469 assert_select "div[style*=left:40]"
470 end
470 end
471
471
472 should "include the version name" do
472 should "include the version name" do
473 @response.body = @gantt.subject_for_version(@version, {:format => :html})
473 @response.body = @gantt.subject_for_version(@version, {:format => :html})
474 assert_select 'div', :text => /#{@version.name}/
474 assert_select 'div', :text => /#{@version.name}/
475 end
475 end
476
476
477 should "include a link to the version" do
477 should "include a link to the version" do
478 @response.body = @gantt.subject_for_version(@version, {:format => :html})
478 @response.body = @gantt.subject_for_version(@version, {:format => :html})
479 assert_select 'a[href=?]', Regexp.escape("/versions/#{@version.to_param}"), :text => /#{@version.name}/
479 assert_select 'a[href=?]', Regexp.escape("/versions/#{@version.to_param}"), :text => /#{@version.name}/
480 end
480 end
481
481
482 should "style late versions" do
482 should "style late versions" do
483 assert @version.overdue?, "Need an overdue version for this test"
483 assert @version.overdue?, "Need an overdue version for this test"
484 @response.body = @gantt.subject_for_version(@version, {:format => :html})
484 @response.body = @gantt.subject_for_version(@version, {:format => :html})
485
485
486 assert_select 'div span.version-behind-schedule'
486 assert_select 'div span.version-behind-schedule'
487 end
487 end
488
488
489 should "style behind schedule versions" do
489 should "style behind schedule versions" do
490 assert @version.behind_schedule?, "Need a behind schedule version for this test"
490 assert @version.behind_schedule?, "Need a behind schedule version for this test"
491 @response.body = @gantt.subject_for_version(@version, {:format => :html})
491 @response.body = @gantt.subject_for_version(@version, {:format => :html})
492
492
493 assert_select 'div span.version-behind-schedule'
493 assert_select 'div span.version-behind-schedule'
494 end
494 end
495 end
495 end
496 should "test the PNG format"
496 should "test the PNG format"
497 should "test the PDF format"
497 should "test the PDF format"
498 end
498 end
499
499
500 context "#line_for_version" do
500 context "#line_for_version" do
501 setup do
501 setup do
502 create_gantt
502 create_gantt
503 @project.enabled_module_names = [:issue_tracking]
503 @project.enabled_module_names = [:issue_tracking]
504 @tracker = Tracker.generate!
504 @tracker = Tracker.generate!
505 @project.trackers << @tracker
505 @project.trackers << @tracker
506 @version = Version.generate!(:effective_date => 1.week.from_now.to_date)
506 @version = Version.generate!(:effective_date => 1.week.from_now.to_date)
507 @project.versions << @version
507 @project.versions << @version
508
508
509 @project.issues << Issue.generate!(:fixed_version => @version,
509 @project.issues << Issue.generate!(:fixed_version => @version,
510 :subject => "gantt#line_for_project",
510 :subject => "gantt#line_for_project",
511 :tracker => @tracker,
511 :tracker => @tracker,
512 :project => @project,
512 :project => @project,
513 :done_ratio => 30,
513 :done_ratio => 30,
514 :start_date => 1.week.ago.to_date,
514 :start_date => 1.week.ago.to_date,
515 :due_date => 1.week.from_now.to_date)
515 :due_date => 1.week.from_now.to_date)
516 end
516 end
517
517
518 context ":html format" do
518 context ":html format" do
519 context "todo line" do
519 context "todo line" do
520 should "start from the starting point on the left" do
520 should "start from the starting point on the left" do
521 @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
521 @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
522 assert_select "div.version.task_todo[style*=left:28px]", true, @response.body
522 assert_select "div.version.task_todo[style*=left:28px]", true, @response.body
523 end
523 end
524
524
525 should "be the total width of the version" do
525 should "be the total width of the version" do
526 @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
526 @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
527 assert_select "div.version.task_todo[style*=width:58px]", true, @response.body
527 assert_select "div.version.task_todo[style*=width:58px]", true, @response.body
528 end
528 end
529
529
530 end
530 end
531
531
532 context "late line" do
532 context "late line" do
533 should "start from the starting point on the left" do
533 should "start from the starting point on the left" do
534 @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
534 @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
535 assert_select "div.version.task_late[style*=left:28px]", true, @response.body
535 assert_select "div.version.task_late[style*=left:28px]", true, @response.body
536 end
536 end
537
537
538 should "be the total delayed width of the version" do
538 should "be the total delayed width of the version" do
539 @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
539 @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
540 assert_select "div.version.task_late[style*=width:30px]", true, @response.body
540 assert_select "div.version.task_late[style*=width:30px]", true, @response.body
541 end
541 end
542 end
542 end
543
543
544 context "done line" do
544 context "done line" do
545 should "start from the starting point on the left" do
545 should "start from the starting point on the left" do
546 @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
546 @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
547 assert_select "div.version.task_done[style*=left:28px]", true, @response.body
547 assert_select "div.version.task_done[style*=left:28px]", true, @response.body
548 end
548 end
549
549
550 should "be the total done width of the version" do
550 should "be the total done width of the version" do
551 @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
551 @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
552 assert_select "div.version.task_done[style*=width:16px]", true, @response.body
552 assert_select "div.version.task_done[style*=width:16px]", true, @response.body
553 end
553 end
554 end
554 end
555
555
556 context "starting marker" do
556 context "starting marker" do
557 should "not appear if the starting point is off the gantt chart" do
557 should "not appear if the starting point is off the gantt chart" do
558 # Shift the date range of the chart
558 # Shift the date range of the chart
559 @gantt.instance_variable_set('@date_from', Date.today)
559 @gantt.instance_variable_set('@date_from', Date.today)
560
560
561 @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
561 @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
562 assert_select "div.version.starting", false
562 assert_select "div.version.starting", false
563 end
563 end
564
564
565 should "appear at the starting point" do
565 should "appear at the starting point" do
566 @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
566 @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
567 assert_select "div.version.starting[style*=left:28px]", true, @response.body
567 assert_select "div.version.starting[style*=left:28px]", true, @response.body
568 end
568 end
569 end
569 end
570
570
571 context "ending marker" do
571 context "ending marker" do
572 should "not appear if the starting point is off the gantt chart" do
572 should "not appear if the starting point is off the gantt chart" do
573 # Shift the date range of the chart
573 # Shift the date range of the chart
574 @gantt.instance_variable_set('@date_to', 2.weeks.ago.to_date)
574 @gantt.instance_variable_set('@date_to', 2.weeks.ago.to_date)
575
575
576 @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
576 @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
577 assert_select "div.version.ending", false
577 assert_select "div.version.ending", false
578
578
579 end
579 end
580
580
581 should "appear at the end of the date range" do
581 should "appear at the end of the date range" do
582 @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
582 @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
583 assert_select "div.version.ending[style*=left:88px]", true, @response.body
583 assert_select "div.version.ending[style*=left:88px]", true, @response.body
584 end
584 end
585 end
585 end
586
586
587 context "status content" do
587 context "status content" do
588 should "appear at the far left, even if it's far in the past" do
588 should "appear at the far left, even if it's far in the past" do
589 @gantt.instance_variable_set('@date_to', 2.weeks.ago.to_date)
589 @gantt.instance_variable_set('@date_to', 2.weeks.ago.to_date)
590
590
591 @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
591 @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
592 assert_select "div.version.label", /#{@version.name}/
592 assert_select "div.version.label", /#{@version.name}/
593 end
593 end
594
594
595 should "show the version name" do
595 should "show the version name" do
596 @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
596 @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
597 assert_select "div.version.label", /#{@version.name}/
597 assert_select "div.version.label", /#{@version.name}/
598 end
598 end
599
599
600 should "show the percent complete" do
600 should "show the percent complete" do
601 @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
601 @response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
602 assert_select "div.version.label", /30%/
602 assert_select "div.version.label", /30%/
603 end
603 end
604 end
604 end
605 end
605 end
606
606
607 should "test the PNG format"
607 should "test the PNG format"
608 should "test the PDF format"
608 should "test the PDF format"
609 end
609 end
610
610
611 context "#subject_for_issue" do
611 context "#subject_for_issue" do
612 setup do
612 setup do
613 create_gantt
613 create_gantt
614 @project.enabled_module_names = [:issue_tracking]
614 @project.enabled_module_names = [:issue_tracking]
615 @tracker = Tracker.generate!
615 @tracker = Tracker.generate!
616 @project.trackers << @tracker
616 @project.trackers << @tracker
617
617
618 @issue = Issue.generate!(:subject => "gantt#subject_for_issue",
618 @issue = Issue.generate!(:subject => "gantt#subject_for_issue",
619 :tracker => @tracker,
619 :tracker => @tracker,
620 :project => @project,
620 :project => @project,
621 :start_date => 3.days.ago.to_date,
621 :start_date => 3.days.ago.to_date,
622 :due_date => Date.yesterday)
622 :due_date => Date.yesterday)
623 @project.issues << @issue
623 @project.issues << @issue
624
624
625 end
625 end
626
626
627 context ":html format" do
627 context ":html format" do
628 should "add an absolute positioned div" do
628 should "add an absolute positioned div" do
629 @response.body = @gantt.subject_for_issue(@issue, {:format => :html})
629 @response.body = @gantt.subject_for_issue(@issue, {:format => :html})
630 assert_select "div[style*=absolute]"
630 assert_select "div[style*=absolute]"
631 end
631 end
632
632
633 should "use the indent option to move the div to the right" do
633 should "use the indent option to move the div to the right" do
634 @response.body = @gantt.subject_for_issue(@issue, {:format => :html, :indent => 40})
634 @response.body = @gantt.subject_for_issue(@issue, {:format => :html, :indent => 40})
635 assert_select "div[style*=left:40]"
635 assert_select "div[style*=left:40]"
636 end
636 end
637
637
638 should "include the issue subject" do
638 should "include the issue subject" do
639 @response.body = @gantt.subject_for_issue(@issue, {:format => :html})
639 @response.body = @gantt.subject_for_issue(@issue, {:format => :html})
640 assert_select 'div', :text => /#{@issue.subject}/
640 assert_select 'div', :text => /#{@issue.subject}/
641 end
641 end
642
642
643 should "include a link to the issue" do
643 should "include a link to the issue" do
644 @response.body = @gantt.subject_for_issue(@issue, {:format => :html})
644 @response.body = @gantt.subject_for_issue(@issue, {:format => :html})
645 assert_select 'a[href=?]', Regexp.escape("/issues/#{@issue.to_param}"), :text => /#{@tracker.name} ##{@issue.id}/
645 assert_select 'a[href=?]', Regexp.escape("/issues/#{@issue.to_param}"), :text => /#{@tracker.name} ##{@issue.id}/
646 end
646 end
647
647
648 should "style overdue issues" do
648 should "style overdue issues" do
649 assert @issue.overdue?, "Need an overdue issue for this test"
649 assert @issue.overdue?, "Need an overdue issue for this test"
650 @response.body = @gantt.subject_for_issue(@issue, {:format => :html})
650 @response.body = @gantt.subject_for_issue(@issue, {:format => :html})
651
651
652 assert_select 'div span.issue-overdue'
652 assert_select 'div span.issue-overdue'
653 end
653 end
654
654
655 end
655 end
656 should "test the PNG format"
656 should "test the PNG format"
657 should "test the PDF format"
657 should "test the PDF format"
658 end
658 end
659
659
660 context "#line_for_issue" do
660 context "#line_for_issue" do
661 setup do
661 setup do
662 create_gantt
662 create_gantt
663 @project.enabled_module_names = [:issue_tracking]
663 @project.enabled_module_names = [:issue_tracking]
664 @tracker = Tracker.generate!
664 @tracker = Tracker.generate!
665 @project.trackers << @tracker
665 @project.trackers << @tracker
666 @version = Version.generate!(:effective_date => 1.week.from_now.to_date)
666 @version = Version.generate!(:effective_date => 1.week.from_now.to_date)
667 @project.versions << @version
667 @project.versions << @version
668 @issue = Issue.generate!(:fixed_version => @version,
668 @issue = Issue.generate!(:fixed_version => @version,
669 :subject => "gantt#line_for_project",
669 :subject => "gantt#line_for_project",
670 :tracker => @tracker,
670 :tracker => @tracker,
671 :project => @project,
671 :project => @project,
672 :done_ratio => 30,
672 :done_ratio => 30,
673 :start_date => 1.week.ago.to_date,
673 :start_date => 1.week.ago.to_date,
674 :due_date => 1.week.from_now.to_date)
674 :due_date => 1.week.from_now.to_date)
675 @project.issues << @issue
675 @project.issues << @issue
676 end
676 end
677
677
678 context ":html format" do
678 context ":html format" do
679 context "todo line" do
679 context "todo line" do
680 should "start from the starting point on the left" do
680 should "start from the starting point on the left" do
681 @response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
681 @response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
682 assert_select "div.task_todo[style*=left:28px]", true, @response.body
682 assert_select "div.task_todo[style*=left:28px]", true, @response.body
683 end
683 end
684
684
685 should "be the total width of the issue" do
685 should "be the total width of the issue" do
686 @response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
686 @response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
687 assert_select "div.task_todo[style*=width:58px]", true, @response.body
687 assert_select "div.task_todo[style*=width:58px]", true, @response.body
688 end
688 end
689
689
690 end
690 end
691
691
692 context "late line" do
692 context "late line" do
693 should "start from the starting point on the left" do
693 should "start from the starting point on the left" do
694 @response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
694 @response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
695 assert_select "div.task_late[style*=left:28px]", true, @response.body
695 assert_select "div.task_late[style*=left:28px]", true, @response.body
696 end
696 end
697
697
698 should "be the total delayed width of the issue" do
698 should "be the total delayed width of the issue" do
699 @response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
699 @response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
700 assert_select "div.task_late[style*=width:30px]", true, @response.body
700 assert_select "div.task_late[style*=width:30px]", true, @response.body
701 end
701 end
702 end
702 end
703
703
704 context "done line" do
704 context "done line" do
705 should "start from the starting point on the left" do
705 should "start from the starting point on the left" do
706 @response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
706 @response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
707 assert_select "div.task_done[style*=left:28px]", true, @response.body
707 assert_select "div.task_done[style*=left:28px]", true, @response.body
708 end
708 end
709
709
710 should "be the total done width of the issue" do
710 should "be the total done width of the issue" do
711 @response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
711 @response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
712 # 15 days * 4 px * 30% - 2 px for borders = 16 px
712 # 15 days * 4 px * 30% - 2 px for borders = 16 px
713 assert_select "div.task_done[style*=width:16px]", true, @response.body
713 assert_select "div.task_done[style*=width:16px]", true, @response.body
714 end
714 end
715
715
716 should "not be the total done width if the chart starts after issue start date" do
716 should "not be the total done width if the chart starts after issue start date" do
717 create_gantt(@project, :date_from => 5.days.ago.to_date)
717 create_gantt(@project, :date_from => 5.days.ago.to_date)
718
718
719 @response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
719 @response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
720 assert_select "div.task_done[style*=left:0px]", true, @response.body
720 assert_select "div.task_done[style*=left:0px]", true, @response.body
721 assert_select "div.task_done[style*=width:8px]", true, @response.body
721 assert_select "div.task_done[style*=width:8px]", true, @response.body
722 end
722 end
723
723
724 context "for completed issue" do
724 context "for completed issue" do
725 setup do
725 setup do
726 @issue.done_ratio = 100
726 @issue.done_ratio = 100
727 end
727 end
728
728
729 should "be the total width of the issue" do
729 should "be the total width of the issue" do
730 @response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
730 @response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
731 assert_select "div.task_done[style*=width:58px]", true, @response.body
731 assert_select "div.task_done[style*=width:58px]", true, @response.body
732 end
732 end
733
733
734 should "be the total width of the issue with due_date=start_date" do
734 should "be the total width of the issue with due_date=start_date" do
735 @issue.due_date = @issue.start_date
735 @issue.due_date = @issue.start_date
736 @response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
736 @response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
737 assert_select "div.task_done[style*=width:2px]", true, @response.body
737 assert_select "div.task_done[style*=width:2px]", true, @response.body
738 end
738 end
739 end
739 end
740 end
740 end
741
741
742 context "status content" do
742 context "status content" do
743 should "appear at the far left, even if it's far in the past" do
743 should "appear at the far left, even if it's far in the past" do
744 @gantt.instance_variable_set('@date_to', 2.weeks.ago.to_date)
744 @gantt.instance_variable_set('@date_to', 2.weeks.ago.to_date)
745
745
746 @response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
746 @response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
747 assert_select "div.task.label", true, @response.body
747 assert_select "div.task.label", true, @response.body
748 end
748 end
749
749
750 should "show the issue status" do
750 should "show the issue status" do
751 @response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
751 @response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
752 assert_select "div.task.label", /#{@issue.status.name}/
752 assert_select "div.task.label", /#{@issue.status.name}/
753 end
753 end
754
754
755 should "show the percent complete" do
755 should "show the percent complete" do
756 @response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
756 @response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
757 assert_select "div.task.label", /30%/
757 assert_select "div.task.label", /30%/
758 end
758 end
759 end
759 end
760 end
760 end
761
761
762 should "have an issue tooltip" do
762 should "have an issue tooltip" do
763 @response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
763 @response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
764 assert_select "div.tooltip", /#{@issue.subject}/
764 assert_select "div.tooltip", /#{@issue.subject}/
765 end
765 end
766
766
767 should "test the PNG format"
767 should "test the PNG format"
768 should "test the PDF format"
768 should "test the PDF format"
769 end
769 end
770
770
771 context "#to_image" do
771 context "#to_image" do
772 should "be tested"
772 should "be tested"
773 end
773 end
774
774
775 context "#to_pdf" do
775 context "#to_pdf" do
776 should "be tested"
776 should "be tested"
777 end
777 end
778
778
779 end
779 end
General Comments 0
You need to be logged in to leave comments. Login now