This diff has been collapsed as it changes many lines, (525 lines changed) Show them Hide them | |||
@@ -18,16 +18,8 | |||
|
18 | 18 | require File.expand_path('../../../../../test_helper', __FILE__) |
|
19 | 19 | |
|
20 | 20 | class Redmine::Helpers::GanttHelperTest < ActionView::TestCase |
|
21 |
fixtures |
|
|
22 | :journals, :journal_details, | |
|
23 | :enumerations, :users, :issue_categories, | |
|
24 | :projects_trackers, | |
|
25 | :roles, | |
|
26 | :member_roles, | |
|
27 | :members, | |
|
28 | :enabled_modules, | |
|
29 | :versions, | |
|
30 | :groups_users | |
|
21 | fixtures :trackers, :issue_statuses, | |
|
22 | :enumerations, :users, :issue_categories | |
|
31 | 23 | |
|
32 | 24 | include ProjectsHelper |
|
33 | 25 | include IssuesHelper |
@@ -44,12 +36,16 class Redmine::Helpers::GanttHelperTest < ActionView::TestCase | |||
|
44 | 36 | end |
|
45 | 37 | private :today |
|
46 | 38 | |
|
39 | def gantt_start | |
|
40 | @gantt.date_from | |
|
41 | end | |
|
42 | ||
|
47 | 43 | # Creates a Gantt chart for a 4 week span |
|
48 | 44 | def create_gantt(project=Project.generate!, options={}) |
|
49 | 45 | @project = project |
|
50 | 46 | @gantt = Redmine::Helpers::Gantt.new(options) |
|
51 | 47 | @gantt.project = @project |
|
52 |
@gantt.query = IssueQuery. |
|
|
48 | @gantt.query = IssueQuery.new(:project => @project, :name => 'Gantt') | |
|
53 | 49 | @gantt.view = self |
|
54 | 50 | @gantt.instance_variable_set('@date_from', options[:date_from] || (today - 14)) |
|
55 | 51 | @gantt.instance_variable_set('@date_to', options[:date_to] || (today + 14)) |
@@ -132,11 +128,6 class Redmine::Helpers::GanttHelperTest < ActionView::TestCase | |||
|
132 | 128 | setup_subjects |
|
133 | 129 | @output_buffer = @gantt.subjects |
|
134 | 130 | assert_select "div.project-name a", /#{@project.name}/ |
|
135 | end | |
|
136 | ||
|
137 | test "#subjects project should have an indent of 4" do | |
|
138 | setup_subjects | |
|
139 | @output_buffer = @gantt.subjects | |
|
140 | 131 | assert_select "div.project-name[style*=left:4px]" |
|
141 | 132 | end |
|
142 | 133 | |
@@ -144,11 +135,6 class Redmine::Helpers::GanttHelperTest < ActionView::TestCase | |||
|
144 | 135 | setup_subjects |
|
145 | 136 | @output_buffer = @gantt.subjects |
|
146 | 137 | assert_select "div.version-name a", /#{@version.name}/ |
|
147 | end | |
|
148 | ||
|
149 | test "#subjects version should be indented 24 (one level)" do | |
|
150 | setup_subjects | |
|
151 | @output_buffer = @gantt.subjects | |
|
152 | 138 | assert_select "div.version-name[style*=left:24px]" |
|
153 | 139 | end |
|
154 | 140 | |
@@ -166,11 +152,6 class Redmine::Helpers::GanttHelperTest < ActionView::TestCase | |||
|
166 | 152 | setup_subjects |
|
167 | 153 | @output_buffer = @gantt.subjects |
|
168 | 154 | assert_select "div.issue-subject", /#{@issue.subject}/ |
|
169 | end | |
|
170 | ||
|
171 | test "#subjects issue should be indented 44 (two levels)" do | |
|
172 | setup_subjects | |
|
173 | @output_buffer = @gantt.subjects | |
|
174 | 155 | assert_select "div.issue-subject[style*=left:44px]" |
|
175 | 156 | end |
|
176 | 157 | |
@@ -224,8 +205,7 class Redmine::Helpers::GanttHelperTest < ActionView::TestCase | |||
|
224 | 205 | assert_select "div.issue-subject[style*=left:84px]", /grandchild/, @output_buffer |
|
225 | 206 | end |
|
226 | 207 | |
|
227 |
|
|
|
228 | setup do | |
|
208 | test "#lines" do | |
|
229 | 209 |
|
|
230 | 210 |
|
|
231 | 211 |
|
@@ -241,443 +221,201 class Redmine::Helpers::GanttHelperTest < ActionView::TestCase | |||
|
241 | 221 |
|
|
242 | 222 |
|
|
243 | 223 |
|
|
244 | end | |
|
245 | 224 | |
|
246 | context "project" do | |
|
247 | should "be rendered" do | |
|
248 | 225 |
|
|
249 | 226 |
|
|
250 | 227 |
|
|
251 | 228 |
|
|
252 | end | |
|
253 | end | |
|
254 | 229 | |
|
255 | context "version" do | |
|
256 | should "be rendered" do | |
|
257 | 230 |
|
|
258 | 231 |
|
|
259 | 232 |
|
|
260 | 233 |
|
|
261 | end | |
|
262 | end | |
|
263 | 234 | |
|
264 | context "issue" do | |
|
265 | should "be rendered" do | |
|
266 | 235 |
|
|
267 | 236 |
|
|
268 | 237 |
|
|
269 | 238 |
|
|
270 | end | |
|
271 | end | |
|
272 | 239 | |
|
273 |
|
|
|
274 | setup do | |
|
240 | test "#subject_for_project" do | |
|
275 | 241 |
|
|
276 | end | |
|
277 | ||
|
278 | context ":html format" do | |
|
279 | should "add an absolute positioned div" do | |
|
280 | @output_buffer = @gantt.subject_for_project(@project, {:format => :html}) | |
|
281 | assert_select "div[style*=absolute]" | |
|
282 | end | |
|
283 | ||
|
284 | should "use the indent option to move the div to the right" do | |
|
285 | @output_buffer = @gantt.subject_for_project(@project, {:format => :html, :indent => 40}) | |
|
286 | assert_select "div[style*=left:40]" | |
|
287 | end | |
|
288 | ||
|
289 | should "include the project name" do | |
|
290 | @output_buffer = @gantt.subject_for_project(@project, {:format => :html}) | |
|
291 | assert_select 'div', :text => /#{@project.name}/ | |
|
292 | end | |
|
293 | ||
|
294 | should "include a link to the project" do | |
|
295 | @output_buffer = @gantt.subject_for_project(@project, {:format => :html}) | |
|
242 | @output_buffer = @gantt.subject_for_project(@project, :format => :html) | |
|
296 | 243 |
|
|
297 | 244 |
|
|
298 | 245 | |
|
299 |
|
|
|
300 | @project.enabled_module_names = [:issue_tracking] | |
|
301 | @project.versions << Version.generate!(:effective_date => (today - 1)) | |
|
302 | assert @project.reload.overdue?, "Need an overdue project for this test" | |
|
303 | @output_buffer = @gantt.subject_for_project(@project, {:format => :html}) | |
|
246 | test "#subject_for_project should style overdue projects" do | |
|
247 | create_gantt | |
|
248 | @project.stubs(:overdue?).returns(true) | |
|
249 | @output_buffer = @gantt.subject_for_project(@project, :format => :html) | |
|
304 | 250 |
|
|
305 | 251 |
|
|
306 | end | |
|
307 | end | |
|
308 | 252 | |
|
309 |
|
|
|
310 | setup do | |
|
253 | test "#subject_for_version" do | |
|
311 | 254 |
|
|
312 | @project.enabled_module_names = [:issue_tracking] | |
|
313 | @tracker = Tracker.generate! | |
|
314 | @project.trackers << @tracker | |
|
315 | @version = Version.generate!(:effective_date => (today - 1)) | |
|
316 | @project.versions << @version | |
|
317 | @project.issues << Issue.generate!(:fixed_version => @version, | |
|
318 | :subject => "gantt#line_for_project", | |
|
319 | :tracker => @tracker, | |
|
320 | :project => @project, | |
|
321 | :done_ratio => 30, | |
|
322 | :start_date => (today - 7), | |
|
323 | :due_date => (today + 7)) | |
|
255 | version = Version.generate!(:name => 'Foo', :effective_date => today, :project => @project) | |
|
256 | @output_buffer = @gantt.subject_for_version(version, :format => :html) | |
|
257 | assert_select 'a[href=?]', "/versions/#{version.to_param}", :text => /Foo/ | |
|
324 | 258 |
|
|
325 | 259 | |
|
326 | context ":html format" do | |
|
327 | context "todo line" do | |
|
328 | should "start from the starting point on the left" do | |
|
329 | @output_buffer = @gantt.line_for_project(@project, {:format => :html, :zoom => 4}) | |
|
330 | assert_select "div.project.task_todo[style*=left:28px]", true, @output_buffer | |
|
331 | end | |
|
332 | ||
|
333 | should "be the total width of the project" do | |
|
334 | @output_buffer = @gantt.line_for_project(@project, {:format => :html, :zoom => 4}) | |
|
335 | assert_select "div.project.task_todo[style*=width:58px]", true, @output_buffer | |
|
336 | end | |
|
337 | end | |
|
338 | ||
|
339 | context "starting marker" do | |
|
340 | should "not appear if the starting point is off the gantt chart" do | |
|
341 | # Shift the date range of the chart | |
|
342 | @gantt.instance_variable_set('@date_from', today) | |
|
343 | @output_buffer = @gantt.line_for_project(@project, {:format => :html, :zoom => 4}) | |
|
344 | assert_select "div.project.starting", false, @output_buffer | |
|
345 | end | |
|
346 | ||
|
347 | should "appear at the starting point" do | |
|
348 | @output_buffer = @gantt.line_for_project(@project, {:format => :html, :zoom => 4}) | |
|
349 | assert_select "div.project.starting[style*=left:28px]", true, @output_buffer | |
|
350 | end | |
|
351 | end | |
|
352 | ||
|
353 | context "ending marker" do | |
|
354 | should "not appear if the starting point is off the gantt chart" do | |
|
355 | # Shift the date range of the chart | |
|
356 | @gantt.instance_variable_set('@date_to', (today - 14)) | |
|
357 | @output_buffer = @gantt.line_for_project(@project, {:format => :html, :zoom => 4}) | |
|
358 | assert_select "div.project.ending", false, @output_buffer | |
|
359 | end | |
|
360 | ||
|
361 | should "appear at the end of the date range" do | |
|
362 | @output_buffer = @gantt.line_for_project(@project, {:format => :html, :zoom => 4}) | |
|
363 | assert_select "div.project.ending[style*=left:88px]", true, @output_buffer | |
|
364 | end | |
|
365 | end | |
|
366 | ||
|
367 | context "status content" do | |
|
368 | should "appear at the far left, even if it's far in the past" do | |
|
369 | @gantt.instance_variable_set('@date_to', (today - 14)) | |
|
370 | @output_buffer = @gantt.line_for_project(@project, {:format => :html, :zoom => 4}) | |
|
371 | assert_select "div.project.label", /#{@project.name}/ | |
|
372 | end | |
|
373 | ||
|
374 | should "show the project name" do | |
|
375 | @output_buffer = @gantt.line_for_project(@project, {:format => :html, :zoom => 4}) | |
|
376 | assert_select "div.project.label", /#{@project.name}/ | |
|
377 | end | |
|
378 | end | |
|
379 | end | |
|
380 | end | |
|
381 | ||
|
382 | context "#subject_for_version" do | |
|
383 | setup do | |
|
260 | test "#subject_for_version should style overdue versions" do | |
|
384 | 261 |
|
|
385 | @project.enabled_module_names = [:issue_tracking] | |
|
386 | @tracker = Tracker.generate! | |
|
387 | @project.trackers << @tracker | |
|
388 | @version = Version.generate!(:effective_date => (today - 1)) | |
|
389 | @project.versions << @version | |
|
390 | @project.issues << Issue.generate!(:fixed_version => @version, | |
|
391 | :subject => "gantt#subject_for_version", | |
|
392 | :tracker => @tracker, | |
|
393 | :project => @project, | |
|
394 | :start_date => today) | |
|
395 | ||
|
396 | end | |
|
397 | ||
|
398 | context ":html format" do | |
|
399 | should "add an absolute positioned div" do | |
|
400 | @output_buffer = @gantt.subject_for_version(@version, {:format => :html}) | |
|
401 | assert_select "div[style*=absolute]" | |
|
402 | end | |
|
403 | ||
|
404 | should "use the indent option to move the div to the right" do | |
|
405 | @output_buffer = @gantt.subject_for_version(@version, {:format => :html, :indent => 40}) | |
|
406 | assert_select "div[style*=left:40]" | |
|
407 | end | |
|
408 | ||
|
409 | should "include the version name" do | |
|
410 | @output_buffer = @gantt.subject_for_version(@version, {:format => :html}) | |
|
411 | assert_select 'div', :text => /#{@version.name}/ | |
|
412 | end | |
|
413 | ||
|
414 | should "include a link to the version" do | |
|
415 | @output_buffer = @gantt.subject_for_version(@version, {:format => :html}) | |
|
416 | assert_select 'a[href=?]', Regexp.escape("/versions/#{@version.to_param}"), :text => /#{@version.name}/ | |
|
262 | version = Version.generate!(:name => 'Foo', :effective_date => today, :project => @project) | |
|
263 | version.stubs(:overdue?).returns(true) | |
|
264 | @output_buffer = @gantt.subject_for_version(version, :format => :html) | |
|
265 | assert_select 'div span.version-overdue' | |
|
417 | 266 |
|
|
418 | 267 | |
|
419 | should "style late versions" do | |
|
420 | assert @version.overdue?, "Need an overdue version for this test" | |
|
421 | @output_buffer = @gantt.subject_for_version(@version, {:format => :html}) | |
|
268 | test "#subject_for_version should style behind schedule versions" do | |
|
269 | create_gantt | |
|
270 | version = Version.generate!(:name => 'Foo', :effective_date => today, :project => @project) | |
|
271 | version.stubs(:behind_schedule?).returns(true) | |
|
272 | @output_buffer = @gantt.subject_for_version(version, :format => :html) | |
|
422 | 273 |
|
|
423 | 274 |
|
|
424 | 275 | |
|
425 | should "style behind schedule versions" do | |
|
426 | assert @version.behind_schedule?, "Need a behind schedule version for this test" | |
|
427 | @output_buffer = @gantt.subject_for_version(@version, {:format => :html}) | |
|
428 | assert_select 'div span.version-behind-schedule' | |
|
429 | end | |
|
430 | end | |
|
431 | end | |
|
432 | ||
|
433 | context "#line_for_version" do | |
|
434 | setup do | |
|
276 | test "#subject_for_issue" do | |
|
435 | 277 |
|
|
436 | @project.enabled_module_names = [:issue_tracking] | |
|
437 | @tracker = Tracker.generate! | |
|
438 | @project.trackers << @tracker | |
|
439 | @version = Version.generate!(:effective_date => (today + 7)) | |
|
440 | @project.versions << @version | |
|
441 | @project.issues << Issue.generate!(:fixed_version => @version, | |
|
442 | :subject => "gantt#line_for_project", | |
|
443 | :tracker => @tracker, | |
|
444 | :project => @project, | |
|
445 | :done_ratio => 30, | |
|
446 | :start_date => (today - 7), | |
|
447 | :due_date => (today + 7)) | |
|
448 | end | |
|
449 | ||
|
450 | context ":html format" do | |
|
451 | context "todo line" do | |
|
452 | should "start from the starting point on the left" do | |
|
453 | @output_buffer = @gantt.line_for_version(@version, {:format => :html, :zoom => 4}) | |
|
454 | assert_select "div.version.task_todo[style*=left:28px]", true, @output_buffer | |
|
455 | end | |
|
456 | ||
|
457 | should "be the total width of the version" do | |
|
458 | @output_buffer = @gantt.line_for_version(@version, {:format => :html, :zoom => 4}) | |
|
459 | assert_select "div.version.task_todo[style*=width:58px]", true, @output_buffer | |
|
460 | end | |
|
461 | end | |
|
462 | ||
|
463 | context "late line" do | |
|
464 | should "start from the starting point on the left" do | |
|
465 | @output_buffer = @gantt.line_for_version(@version, {:format => :html, :zoom => 4}) | |
|
466 | assert_select "div.version.task_late[style*=left:28px]", true, @output_buffer | |
|
467 | end | |
|
468 | ||
|
469 | should "be the total delayed width of the version" do | |
|
470 | @output_buffer = @gantt.line_for_version(@version, {:format => :html, :zoom => 4}) | |
|
471 | assert_select "div.version.task_late[style*=width:30px]", true, @output_buffer | |
|
472 | end | |
|
473 | end | |
|
474 | ||
|
475 | context "done line" do | |
|
476 | should "start from the starting point on the left" do | |
|
477 | @output_buffer = @gantt.line_for_version(@version, {:format => :html, :zoom => 4}) | |
|
478 | assert_select "div.version.task_done[style*=left:28px]", true, @output_buffer | |
|
479 | end | |
|
480 | ||
|
481 | should "be the total done width of the version" do | |
|
482 | @output_buffer = @gantt.line_for_version(@version, {:format => :html, :zoom => 4}) | |
|
483 | assert_select "div.version.task_done[style*=width:16px]", true, @output_buffer | |
|
484 | end | |
|
485 | end | |
|
486 | ||
|
487 | context "starting marker" do | |
|
488 | should "not appear if the starting point is off the gantt chart" do | |
|
489 | # Shift the date range of the chart | |
|
490 | @gantt.instance_variable_set('@date_from', today) | |
|
491 | @output_buffer = @gantt.line_for_version(@version, {:format => :html, :zoom => 4}) | |
|
492 | assert_select "div.version.starting", false | |
|
278 | issue = Issue.generate!(:project => @project) | |
|
279 | @output_buffer = @gantt.subject_for_issue(issue, :format => :html) | |
|
280 | assert_select 'div', :text => /#{issue.subject}/ | |
|
281 | assert_select 'a[href=?]', "/issues/#{issue.to_param}", :text => /#{issue.tracker.name} ##{issue.id}/ | |
|
493 | 282 |
|
|
494 | 283 | |
|
495 | should "appear at the starting point" do | |
|
496 | @output_buffer = @gantt.line_for_version(@version, {:format => :html, :zoom => 4}) | |
|
497 | assert_select "div.version.starting[style*=left:28px]", true, @output_buffer | |
|
498 | end | |
|
499 | end | |
|
500 | ||
|
501 | context "ending marker" do | |
|
502 | should "not appear if the starting point is off the gantt chart" do | |
|
503 | # Shift the date range of the chart | |
|
504 | @gantt.instance_variable_set('@date_to', (today - 14)) | |
|
505 | @output_buffer = @gantt.line_for_version(@version, {:format => :html, :zoom => 4}) | |
|
506 | assert_select "div.version.ending", false | |
|
507 | end | |
|
508 | ||
|
509 | should "appear at the end of the date range" do | |
|
510 | @output_buffer = @gantt.line_for_version(@version, {:format => :html, :zoom => 4}) | |
|
511 | assert_select "div.version.ending[style*=left:88px]", true, @output_buffer | |
|
512 | end | |
|
513 | end | |
|
514 | ||
|
515 | context "status content" do | |
|
516 | should "appear at the far left, even if it's far in the past" do | |
|
517 | @gantt.instance_variable_set('@date_to', (today - 14)) | |
|
518 | @output_buffer = @gantt.line_for_version(@version, {:format => :html, :zoom => 4}) | |
|
519 | assert_select "div.version.label", /#{@version.name}/ | |
|
520 | end | |
|
521 | ||
|
522 | should "show the version name" do | |
|
523 | @output_buffer = @gantt.line_for_version(@version, {:format => :html, :zoom => 4}) | |
|
524 | assert_select "div.version.label", /#{@version.name}/ | |
|
525 | end | |
|
526 | ||
|
527 | should "show the percent complete" do | |
|
528 | @output_buffer = @gantt.line_for_version(@version, {:format => :html, :zoom => 4}) | |
|
529 | assert_select "div.version.label", /30%/ | |
|
530 | end | |
|
531 | end | |
|
532 | end | |
|
533 | end | |
|
534 | ||
|
535 | context "#subject_for_issue" do | |
|
536 | setup do | |
|
284 | test "#subject_for_issue should style overdue issues" do | |
|
537 | 285 |
|
|
538 | @project.enabled_module_names = [:issue_tracking] | |
|
539 | @tracker = Tracker.generate! | |
|
540 | @project.trackers << @tracker | |
|
541 | @issue = Issue.generate!(:subject => "gantt#subject_for_issue", | |
|
542 | :tracker => @tracker, | |
|
543 | :project => @project, | |
|
544 | :start_date => (today - 3), | |
|
545 | :due_date => (today - 1)) | |
|
546 | @project.issues << @issue | |
|
286 | issue = Issue.generate!(:project => @project) | |
|
287 | issue.stubs(:overdue?).returns(true) | |
|
288 | @output_buffer = @gantt.subject_for_issue(issue, :format => :html) | |
|
289 | assert_select 'div span.issue-overdue' | |
|
547 | 290 |
|
|
548 | 291 | |
|
549 | context ":html format" do | |
|
550 | should "add an absolute positioned div" do | |
|
551 |
|
|
|
552 |
|
|
|
292 | test "#subject should add an absolute positioned div" do | |
|
293 | create_gantt | |
|
294 | @output_buffer = @gantt.subject('subject', :format => :html) | |
|
295 | assert_select "div[style*=absolute]", :text => 'subject' | |
|
553 | 296 |
|
|
554 | 297 | |
|
555 |
|
|
|
556 | @output_buffer = @gantt.subject_for_issue(@issue, {:format => :html, :indent => 40}) | |
|
298 | test "#subject should use the indent option to move the div to the right" do | |
|
299 | create_gantt | |
|
300 | @output_buffer = @gantt.subject('subject', :format => :html, :indent => 40) | |
|
557 | 301 |
|
|
558 | 302 |
|
|
559 | 303 | |
|
560 | should "include the issue subject" do | |
|
561 | @output_buffer = @gantt.subject_for_issue(@issue, {:format => :html}) | |
|
562 | assert_select 'div', :text => /#{@issue.subject}/ | |
|
563 | end | |
|
564 | ||
|
565 | should "include a link to the issue" do | |
|
566 | @output_buffer = @gantt.subject_for_issue(@issue, {:format => :html}) | |
|
567 | assert_select 'a[href=?]', Regexp.escape("/issues/#{@issue.to_param}"), :text => /#{@tracker.name} ##{@issue.id}/ | |
|
304 | test "#line_for_project" do | |
|
305 | create_gantt | |
|
306 | @project.stubs(:start_date).returns(today - 7) | |
|
307 | @project.stubs(:due_date).returns(today + 7) | |
|
308 | @output_buffer = @gantt.line_for_project(@project, :format => :html) | |
|
309 | assert_select "div.project.label", :text => @project.name | |
|
568 | 310 |
|
|
569 | 311 | |
|
570 | should "style overdue issues" do | |
|
571 | assert @issue.overdue?, "Need an overdue issue for this test" | |
|
572 | @output_buffer = @gantt.subject_for_issue(@issue, {:format => :html}) | |
|
573 | assert_select 'div span.issue-overdue' | |
|
574 | end | |
|
575 | end | |
|
312 | test "#line_for_version" do | |
|
313 | create_gantt | |
|
314 | version = Version.generate!(:name => 'Foo', :project => @project) | |
|
315 | version.stubs(:start_date).returns(today - 7) | |
|
316 | version.stubs(:due_date).returns(today + 7) | |
|
317 | version.stubs(:completed_percent).returns(30) | |
|
318 | @output_buffer = @gantt.line_for_version(version, :format => :html) | |
|
319 | assert_select "div.version.label", :text => /Foo/ | |
|
320 | assert_select "div.version.label", :text => /30%/ | |
|
576 | 321 | end |
|
577 | 322 | |
|
578 |
|
|
|
579 | setup do | |
|
323 | test "#line_for_issue" do | |
|
580 | 324 |
|
|
581 | @project.enabled_module_names = [:issue_tracking] | |
|
582 | @tracker = Tracker.generate! | |
|
583 | @project.trackers << @tracker | |
|
584 | @version = Version.generate!(:effective_date => (today + 7)) | |
|
585 | @project.versions << @version | |
|
586 | @issue = Issue.generate!(:fixed_version => @version, | |
|
587 | :subject => "gantt#line_for_project", | |
|
588 | :tracker => @tracker, | |
|
589 | :project => @project, | |
|
590 | :done_ratio => 30, | |
|
591 | :start_date => (today - 7), | |
|
592 | :due_date => (today + 7)) | |
|
593 | @project.issues << @issue | |
|
325 | issue = Issue.generate!(:project => @project, :start_date => today - 7, :due_date => today + 7, :done_ratio => 30) | |
|
326 | @output_buffer = @gantt.line_for_issue(issue, :format => :html) | |
|
327 | assert_select "div.task.label", :text => /#{issue.status.name}/ | |
|
328 | assert_select "div.task.label", :text => /30%/ | |
|
329 | assert_select "div.tooltip", /#{issue.subject}/ | |
|
594 | 330 |
|
|
595 | 331 | |
|
596 | context ":html format" do | |
|
597 | context "todo line" do | |
|
598 | should "start from the starting point on the left" do | |
|
599 | @output_buffer = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4}) | |
|
600 | assert_select "div.task_todo[style*=left:28px]", true, @output_buffer | |
|
332 | test "#line todo line should start from the starting point on the left" do | |
|
333 | create_gantt | |
|
334 | @output_buffer = @gantt.line(today - 7, today + 7, 30, false, 'line', :format => :html, :zoom => 4) | |
|
335 | assert_select "div.task_todo[style*=left:28px]", 1 | |
|
601 | 336 |
|
|
602 | 337 | |
|
603 |
|
|
|
604 | @output_buffer = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4}) | |
|
605 | assert_select "div.task_todo[style*=width:58px]", true, @output_buffer | |
|
606 | end | |
|
338 | test "#line todo line should be the total width" do | |
|
339 | create_gantt | |
|
340 | @output_buffer = @gantt.line(today - 7, today + 7, 30, false, 'line', :format => :html, :zoom => 4) | |
|
341 | assert_select "div.task_todo[style*=width:58px]", 1 | |
|
607 | 342 |
|
|
608 | 343 | |
|
609 | context "late line" do | |
|
610 | should "start from the starting point on the left" do | |
|
611 |
|
|
|
612 |
|
|
|
344 | test "#line late line should start from the starting point on the left" do | |
|
345 | create_gantt | |
|
346 | @output_buffer = @gantt.line(today - 7, today + 7, 30, false, 'line', :format => :html, :zoom => 4) | |
|
347 | assert_select "div.task_late[style*=left:28px]", 1 | |
|
613 | 348 |
|
|
614 | 349 | |
|
615 |
|
|
|
616 | @output_buffer = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4}) | |
|
617 | assert_select "div.task_late[style*=width:30px]", true, @output_buffer | |
|
618 | end | |
|
350 | test "#line late line should be the total delayed width" do | |
|
351 | create_gantt | |
|
352 | @output_buffer = @gantt.line(today - 7, today + 7, 30, false, 'line', :format => :html, :zoom => 4) | |
|
353 | assert_select "div.task_late[style*=width:30px]", 1 | |
|
619 | 354 |
|
|
620 | 355 | |
|
621 | context "done line" do | |
|
622 | should "start from the starting point on the left" do | |
|
623 |
|
|
|
624 |
|
|
|
356 | test "#line done line should start from the starting point on the left" do | |
|
357 | create_gantt | |
|
358 | @output_buffer = @gantt.line(today - 7, today + 7, 30, false, 'line', :format => :html, :zoom => 4) | |
|
359 | assert_select "div.task_done[style*=left:28px]", 1 | |
|
625 | 360 |
|
|
626 | 361 | |
|
627 |
|
|
|
628 | @output_buffer = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4}) | |
|
362 | test "#line done line should be the width for the done ratio" do | |
|
363 | create_gantt | |
|
364 | @output_buffer = @gantt.line(today - 7, today + 7, 30, false, 'line', :format => :html, :zoom => 4) | |
|
629 | 365 |
|
|
630 |
|
|
|
366 | assert_select "div.task_done[style*=width:16px]", 1 | |
|
631 | 367 |
|
|
632 | 368 | |
|
633 | should "not be the total done width if the chart starts after issue start date" do | |
|
634 | create_gantt(@project, :date_from => (today - 5)) | |
|
635 |
|
|
|
636 | assert_select "div.task_done[style*=left:0px]", true, @output_buffer | |
|
637 |
|
|
|
369 | test "#line done line should be the total width for 100% done ratio" do | |
|
370 | create_gantt | |
|
371 | @output_buffer = @gantt.line(today - 7, today + 7, 100, false, 'line', :format => :html, :zoom => 4) | |
|
372 | # 15 days * 4 px - 2 px for borders = 58 px | |
|
373 | assert_select "div.task_done[style*=width:58px]", 1 | |
|
638 | 374 |
|
|
639 | 375 | |
|
640 | context "for completed issue" do | |
|
641 | setup do | |
|
642 | @issue.done_ratio = 100 | |
|
376 | test "#line done line should be the total width for 100% done ratio with same start and end dates" do | |
|
377 | create_gantt | |
|
378 | @output_buffer = @gantt.line(today + 7, today + 7, 100, false, 'line', :format => :html, :zoom => 4) | |
|
379 | assert_select "div.task_done[style*=width:2px]", 1 | |
|
643 | 380 | end |
|
644 | 381 | |
|
645 | should "be the total width of the issue" do | |
|
646 | @output_buffer = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4}) | |
|
647 | assert_select "div.task_done[style*=width:58px]", true, @output_buffer | |
|
382 | test "#line done line should not be the total done width if the gantt starts after start date" do | |
|
383 | create_gantt | |
|
384 | @output_buffer = @gantt.line(today - 16, today - 2, 30, false, 'line', :format => :html, :zoom => 4) | |
|
385 | assert_select "div.task_done[style*=left:0px]", 1 | |
|
386 | assert_select "div.task_done[style*=width:8px]", 1 | |
|
648 | 387 | end |
|
649 | 388 | |
|
650 | should "be the total width of the issue with due_date=start_date" do | |
|
651 | @issue.due_date = @issue.start_date | |
|
652 |
|
|
|
653 | assert_select "div.task_done[style*=width:2px]", true, @output_buffer | |
|
654 | end | |
|
655 | end | |
|
389 | test "#line starting marker should appear at the start date" do | |
|
390 | create_gantt | |
|
391 | @output_buffer = @gantt.line(today - 7, today + 7, 30, true, 'line', :format => :html, :zoom => 4) | |
|
392 | assert_select "div.starting", 1 | |
|
393 | assert_select "div.starting[style*=left:28px]", 1 | |
|
656 | 394 |
|
|
657 | 395 | |
|
658 | context "status content" do | |
|
659 | should "appear at the far left, even if it's far in the past" do | |
|
660 | @gantt.instance_variable_set('@date_to', (today - 14)) | |
|
661 | @output_buffer = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4}) | |
|
662 | assert_select "div.task.label", true, @output_buffer | |
|
396 | test "#line starting marker should not appear if the start date is before gantt start date" do | |
|
397 | create_gantt | |
|
398 | @output_buffer = @gantt.line(gantt_start - 2, today + 7, 30, true, 'line', :format => :html, :zoom => 4) | |
|
399 | assert_select "div.starting", 0 | |
|
663 | 400 |
|
|
664 | 401 | |
|
665 | should "show the issue status" do | |
|
666 | @output_buffer = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4}) | |
|
667 | assert_select "div.task.label", /#{@issue.status.name}/ | |
|
402 | test "#line ending marker should appear at the end date" do | |
|
403 | create_gantt | |
|
404 | @output_buffer = @gantt.line(today - 7, today + 7, 30, true, 'line', :format => :html, :zoom => 4) | |
|
405 | assert_select "div.ending", 1 | |
|
406 | assert_select "div.ending[style*=left:88px]", 1 | |
|
668 | 407 |
|
|
669 | 408 | |
|
670 | should "show the percent complete" do | |
|
671 | @output_buffer = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4}) | |
|
672 | assert_select "div.task.label", /30%/ | |
|
673 | end | |
|
674 | end | |
|
409 | test "#line ending marker should not appear if the end date is before gantt start date" do | |
|
410 | create_gantt | |
|
411 | @output_buffer = @gantt.line(gantt_start - 30, gantt_start - 21, 30, true, 'line', :format => :html) | |
|
412 | assert_select "div.ending", 0 | |
|
675 | 413 |
|
|
676 | 414 | |
|
677 | should "have an issue tooltip" do | |
|
678 | @output_buffer = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4}) | |
|
679 | assert_select "div.tooltip", /#{@issue.subject}/ | |
|
680 | end | |
|
415 | test "#line label should appear at the far left, even if it's before gantt start date" do | |
|
416 | create_gantt | |
|
417 | @output_buffer = @gantt.line(gantt_start - 30, gantt_start - 21, 30, true, 'line', :format => :html) | |
|
418 | assert_select "div.label", :text => 'line' | |
|
681 | 419 | end |
|
682 | 420 | |
|
683 | 421 | def test_sort_issues_no_date |
@@ -749,11 +487,12 class Redmine::Helpers::GanttHelperTest < ActionView::TestCase | |||
|
749 | 487 | |
|
750 | 488 | def test_sort_versions |
|
751 | 489 | project = Project.generate! |
|
752 | version1 = Version.create!(:project => project, :name => 'test1') | |
|
753 |
version |
|
|
754 |
version |
|
|
755 |
version |
|
|
490 | versions = [] | |
|
491 | versions << Version.create!(:project => project, :name => 'test1') | |
|
492 | versions << Version.create!(:project => project, :name => 'test2', :effective_date => '2013-10-25') | |
|
493 | versions << Version.create!(:project => project, :name => 'test3') | |
|
494 | versions << Version.create!(:project => project, :name => 'test4', :effective_date => '2013-10-02') | |
|
756 | 495 | |
|
757 | assert_equal versions.sort, Redmine::Helpers::Gantt.sort_versions!(versions) | |
|
496 | assert_equal versions.sort, Redmine::Helpers::Gantt.sort_versions!(versions.dup) | |
|
758 | 497 | end |
|
759 | 498 | end |
General Comments 0
You need to be logged in to leave comments.
Login now