backlog 0.13.0 → 0.13.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (35) hide show
  1. data/History.txt +15 -1
  2. data/Rakefile +2 -0
  3. data/app/controllers/application.rb +3 -6
  4. data/app/controllers/backlogs_controller.rb +84 -4
  5. data/app/controllers/estimates_controller.rb +1 -5
  6. data/app/controllers/periods_controller.rb +84 -2
  7. data/app/controllers/tasks_controller.rb +0 -51
  8. data/app/controllers/works_controller.rb +7 -3
  9. data/app/helpers/application_helper.rb +9 -0
  10. data/app/helpers/backlogs_helper.rb +62 -0
  11. data/app/helpers/periods_helper.rb +63 -0
  12. data/app/helpers/tasks_helper.rb +0 -72
  13. data/app/models/period.rb +17 -7
  14. data/app/models/task.rb +11 -6
  15. data/app/views/backlogs/_buttons.rhtml +1 -0
  16. data/app/views/backlogs/_tasks.rhtml +9 -11
  17. data/app/views/backlogs/finish_task.rjs +3 -0
  18. data/app/views/backlogs/move_task_to_period.rjs +3 -0
  19. data/app/views/backlogs/reopen_task.rjs +3 -0
  20. data/app/views/{tasks/finish.rjs → periods/finish_task.rjs} +0 -0
  21. data/app/views/{tasks/move_to_period.rjs → periods/move_task_to_period.rjs} +0 -0
  22. data/app/views/{tasks/reopen.rjs → periods/reopen_task.rjs} +0 -0
  23. data/app/views/tasks/_completed.rhtml +10 -11
  24. data/app/views/tasks/_fields_header.rhtml +3 -3
  25. data/app/views/tasks/_task.rhtml +6 -6
  26. data/app/views/tasks/update_estimate.rjs +2 -0
  27. data/app/views/works/_form.rhtml +1 -1
  28. data/app/views/works/update_time.rjs +1 -1
  29. data/cruise_config.rb +1 -2
  30. data/test/functional/periods_controller_test.rb +116 -0
  31. data/test/functional/tasks_controller_test.rb +0 -116
  32. data/test/functional/works_controller_test.rb +9 -1
  33. data/test/performance/test_threaded.rb +38 -18
  34. metadata +9 -6
  35. data/app/views/estimates/create_ajax.rjs +0 -11
@@ -206,122 +206,6 @@ class TasksControllerTest < Test::Unit::TestCase
206
206
  assert_equal 3, subtask_after.position
207
207
  end
208
208
 
209
- def test_move_to_next_period
210
- before = Task.find(tasks(:another).id)
211
-
212
- post :move_to_next_period, :id => tasks(:another).id
213
-
214
- assert_response :success
215
-
216
- after = Task.find(tasks(:another).id)
217
- assert_equal tasks(:another).period_id, after.period_id
218
-
219
- new_task = Task.find_by_period_id_and_previous_task_id(periods(:future).id, before.id)
220
- assert_nil new_task.finished_at
221
- assert_nil new_task.resolution
222
- assert_equal 1, new_task.position
223
- end
224
-
225
- def test_move_to_next_period_from_past
226
- task = tasks(:first)
227
- before = Task.find(task.id)
228
-
229
- post :move_to_next_period, :id => task.id
230
-
231
- assert_response :success
232
-
233
- after = Task.find(task.id)
234
- assert_equal task.period_id, after.period_id
235
-
236
- new_task = Task.find_by_period_id_and_previous_task_id(periods(:active).id, task.id)
237
- assert_nil new_task.finished_at
238
- assert_nil new_task.resolution
239
- assert_equal 1, new_task.position
240
- end
241
-
242
- def test_move_to_next_period_at_end
243
- before = Task.find(tasks(:in_last_period).id)
244
- assert_equal tasks(:in_last_period).period_id, before.period_id
245
-
246
- post :move_to_next_period, :id => tasks(:in_last_period).id
247
-
248
- assert_response :success
249
-
250
- before.reload
251
- assert_equal tasks(:in_last_period).period_id, before.period_id
252
-
253
- after = Task.find(tasks(:in_last_period).id)
254
- assert_equal before.period_id, after.period_id
255
- end
256
-
257
- def test_move_to_next_period_from_ancient
258
- before = tasks(:in_ancient)
259
- previous_last_id = Task.find(:first, :order => 'id DESC').id
260
-
261
- post :move_to_next_period, :id => before.id
262
-
263
- assert_response :success
264
-
265
- after = Task.find(before.id)
266
- assert_equal before.period_id, after.period_id
267
- assert_equal Task::POSTPONED, after.resolution
268
- assert_not_nil after.finished_at
269
-
270
- new = Task.find(:first, :order => 'id DESC', :conditions => "id > #{previous_last_id}")
271
- assert_not_nil new
272
- assert_equal before.id, new.previous_task_id
273
- assert_equal 1, new.position
274
- end
275
-
276
- def test_move_to_period
277
- highest = Task.find(:first, :order => 'id DESC')
278
-
279
- post :move_to_period, :id => "task_#{tasks(:another).id}",
280
- :detour => {:action => 'show_no_layout', :id => periods(:active).id, :controller => 'periods'},
281
- :period_id => periods(:future).id
282
-
283
- new_task = Task.find(:first, :order => 'id DESC')
284
- assert new_task.id != highest.id
285
- assert_equal periods(:future).id, new_task.period_id
286
- end
287
-
288
- def test_move_to_period_past
289
- post :move_to_period, :id => "task_#{tasks(:another).id}",
290
- :detour => {:action => 'show_no_layout', :id => periods(:active).id, :controller => 'periods'},
291
- :period_id => periods(:past).id
292
- assert_equal periods(:active).id, tasks(:another).period_id
293
- end
294
-
295
- def test_move_to_period_back_to_earlier_period
296
- task_to_move = tasks(:in_last_period)
297
- target_task = tasks(:postponed)
298
- target_period = periods(:active)
299
-
300
- post :move_to_period, {"id"=> task_to_move.id,
301
- "detour"=>{"action"=>"edit_no_layout", "id"=>"39", "controller"=>"backlogs"},
302
- "period_id"=> target_period.id
303
- }
304
-
305
- old_task = Task.find(task_to_move.id)
306
- assert_not_nil old_task.finished_at
307
- assert_equal Task::POSTPONED, old_task.resolution
308
- assert_nil old_task.position
309
-
310
- new_task = Task.find(target_task.id)
311
- new_task.reload
312
- assert_nil new_task.finished_at
313
- assert_nil new_task.resolution
314
- assert_equal 1, new_task.position
315
- end
316
-
317
- def test_abort
318
- post :abort, :id => tasks(:first).id
319
-
320
- after = Task.find(tasks(:first).id)
321
- assert_not_nil after.finished_at
322
- assert_equal Task::ABORTED, after.resolution
323
- end
324
-
325
209
  def test_start_work
326
210
  task_id = tasks(:first).id
327
211
 
@@ -80,6 +80,14 @@ class WorksControllerTest < Test::Unit::TestCase
80
80
  assert_redirected_to :controller => 'periods', :action => 'show', :id => periods(:past).id
81
81
  end
82
82
 
83
+ def test_update_time
84
+ post :update_time, :id => 1, :work => {"started_at_time"=>"8:15"}
85
+ assert_response :success
86
+ now = Time.now
87
+ expected_time = Time.local(now.year , now.month, now.day, 8, 15)
88
+ assert_equal expected_time.iso8601, assigns(:work).started_at.iso8601
89
+ end
90
+
83
91
  def test_destroy
84
92
  assert_not_nil Work.find(1)
85
93
 
@@ -106,7 +114,7 @@ class WorksControllerTest < Test::Unit::TestCase
106
114
  assert_equal num_tasks, Task.count
107
115
  assert_equal num_open_tasks - 1, Task.find_open.size
108
116
  end
109
-
117
+
110
118
  def test_weekly_work_sheet
111
119
  get :weekly_work_sheet, :id => 24
112
120
  end
@@ -1,27 +1,45 @@
1
1
  require File.dirname(__FILE__) + '/../test_helper'
2
2
 
3
- # TODO (uwe): Start application for test. Don't use production environment...
4
-
5
3
  class BacklogsControllerTest < Test::Unit::TestCase
4
+ PORT = 4000
5
+
6
+ def setup
7
+ @server_thread = IO.popen("script/server -e test -p #{PORT}")
8
+ Thread.start do
9
+ loop do
10
+ lines = @server_thread.readline
11
+ #puts lines
12
+ end
13
+ end
14
+ sleep 4
15
+ end
16
+
17
+ def teardown
18
+ if @server_thread
19
+ Process.kill("TERM", @server_thread.pid)
20
+ end
21
+ end
22
+
6
23
  def test_lots_of_requests
7
- runs = 5
8
- no_of_threads = 10
9
- hits_per_thread = 20
24
+ runs = 3
25
+ no_of_threads = 2
26
+ hits_per_thread = 5
10
27
 
11
- duration = with_timing("First") {hit}
12
- assert duration <= 5
28
+ duration = with_timing("First") {get_burn_down_chart}
29
+ first_hit_limit = 12
30
+ assert duration <= first_hit_limit, "Request took #{duration} seconds. Should be less than #{first_hit_limit} seconds."
13
31
 
14
32
  runs.times do |run_no|
15
- threads = (1..no_of_threads).map do |i|
16
- Thread.new do
17
- hits_per_thread.times {hit}
18
- end
19
- end
20
33
  duration = with_timing((run_no+1)*no_of_threads*hits_per_thread, no_of_threads*hits_per_thread) do
21
- threads.each {|thread| thread.run}
34
+ threads = (1..no_of_threads).map do |i|
35
+ Thread.new do
36
+ hits_per_thread.times {get_burn_down_chart}
37
+ end
38
+ end
22
39
  threads.each {|thread| thread.join}
23
40
  end
24
- assert duration <= 90
41
+ maximum_duration = 6.0 * no_of_threads * hits_per_thread
42
+ assert duration <= maximum_duration, "Performance to low. Expected #{maximum_duration} or less, took #{duration}."
25
43
  end
26
44
  end
27
45
 
@@ -36,10 +54,12 @@ class BacklogsControllerTest < Test::Unit::TestCase
36
54
  duration
37
55
  end
38
56
 
39
- def hit
40
- path = 'parties/burn_down_chart/1'
41
- system 'GET http://localhost:3000/#{path} >/dev/null'
42
- #system 'GET http://localhost:8080/backlog/#{path} >/dev/null'
57
+ def get_burn_down_chart
58
+ path = '/parties/burn_down_chart/1'
59
+ Net::HTTP::start('localhost', port = PORT) do |http|
60
+ response = http.get path
61
+ assert response.body =~ /^.PNG/
62
+ end
43
63
  end
44
64
 
45
65
  end
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.4
3
3
  specification_version: 1
4
4
  name: backlog
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.13.0
7
- date: 2007-11-14 00:00:00 +01:00
6
+ version: 0.13.1
7
+ date: 2007-11-17 00:00:00 +01:00
8
8
  summary: Application to aid collecting, processing, organizing, reviewing and doing tasks.
9
9
  require_paths:
10
10
  - lib
@@ -433,16 +433,18 @@ files:
433
433
  - app/views/layouts/_notice.rhtml
434
434
  - app/views/layouts/_headers.rhtml
435
435
  - app/views/backlogs
436
+ - app/views/backlogs/move_task_to_period.rjs
436
437
  - app/views/backlogs/_name_list.rhtml
437
438
  - app/views/backlogs/list.rhtml
438
439
  - app/views/backlogs/_buttons.rhtml
440
+ - app/views/backlogs/finish_task.rjs
439
441
  - app/views/backlogs/show.rhtml
440
442
  - app/views/backlogs/_form.rhtml
441
443
  - app/views/backlogs/new.rhtml
442
444
  - app/views/backlogs/edit.rhtml
443
445
  - app/views/backlogs/_tasks.rhtml
446
+ - app/views/backlogs/reopen_task.rjs
444
447
  - app/views/estimates
445
- - app/views/estimates/create_ajax.rjs
446
448
  - app/views/groups
447
449
  - app/views/groups/list.rhtml
448
450
  - app/views/groups/_form.rhtml
@@ -461,17 +463,15 @@ files:
461
463
  - app/views/tasks
462
464
  - app/views/tasks/_backlog_header.rhtml
463
465
  - app/views/tasks/list.rhtml
464
- - app/views/tasks/move_to_period.rjs
465
466
  - app/views/tasks/_form.rhtml
466
467
  - app/views/tasks/_period_header.rhtml
467
- - app/views/tasks/finish.rjs
468
+ - app/views/tasks/update_estimate.rjs
468
469
  - app/views/tasks/new.rhtml
469
470
  - app/views/tasks/start_work.rjs
470
471
  - app/views/tasks/_fields_header.rhtml
471
472
  - app/views/tasks/_completed.rhtml
472
473
  - app/views/tasks/edit.rhtml
473
474
  - app/views/tasks/list_started.rhtml
474
- - app/views/tasks/reopen.rjs
475
475
  - app/views/tasks/_task.rhtml
476
476
  - app/views/customers
477
477
  - app/views/customers/list.rhtml
@@ -503,6 +503,8 @@ files:
503
503
  - app/views/user_notify/signup_en.rhtml
504
504
  - app/views/redirect.rjs
505
505
  - app/views/periods
506
+ - app/views/periods/move_task_to_period.rjs
507
+ - app/views/periods/finish_task.rjs
506
508
  - app/views/periods/show.rhtml
507
509
  - app/views/periods/_show_active.rhtml
508
510
  - app/views/periods/_form.rhtml
@@ -511,6 +513,7 @@ files:
511
513
  - app/views/periods/_title.rhtml
512
514
  - app/views/periods/_link.rhtml
513
515
  - app/views/periods/_burn_down_chart.rhtml
516
+ - app/views/periods/reopen_task.rjs
514
517
  test_files:
515
518
  - test/performance/test_threaded.rb
516
519
  - test/test_helper.rb
@@ -1,11 +0,0 @@
1
- page.replace_html :notice, @message
2
- page.visual_effect(:appear, :notice)
3
- if @success
4
- if @task.completed?
5
- page.visual_effect :fade, "task_#{@task.id}"
6
- page.remove "task_#{@task.id}"
7
- page.insert_html :bottom, :completed_tasks, :partial => '/tasks/task'
8
- page.visual_effect :appear, "task_#{@task.id}"
9
- end
10
- update_burn_down_chart(page)
11
- end