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