comparison .svn/pristine/d8/d87bb15034cb1df578fd9d349f69712ac9695482.svn-base @ 1295:622f24f53b42 redmine-2.3

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