backlog 0.32.0 → 0.33.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. data/History.txt +22 -1
  2. data/app/controllers/works_controller.rb +10 -5
  3. data/app/models/period.rb +1 -1
  4. data/app/models/task.rb +2 -0
  5. data/app/views/tasks/_completed.rhtml +3 -1
  6. data/app/views/tasks/_task.rhtml +2 -0
  7. data/app/views/works/_new_row.rhtml +1 -1
  8. data/app/views/works/_weekly_work_sheet_buttons.rhtml +4 -2
  9. data/app/views/works/daily_work_sheet.rhtml +7 -5
  10. data/app/views/works/list.rhtml +0 -4
  11. data/app/views/works/update_row.rjs +4 -0
  12. data/app/views/works/weekly_work_sheet.rhtml +18 -3
  13. data/bin/backlog +0 -0
  14. data/bin/backlog_init.d +0 -0
  15. data/bin/copy_production2development.rb +0 -0
  16. data/config/war.rb +3 -3
  17. data/db/migrate/017_insert_datek_projects.rb +1 -1
  18. data/db/schema.rb +13 -13
  19. data/lang/en.yaml +1 -0
  20. data/lang/no.yaml +1 -0
  21. data/public/dispatch.cgi +0 -0
  22. data/public/dispatch.fcgi +0 -0
  23. data/public/dispatch.rb +0 -0
  24. data/public/images/blank.png +0 -0
  25. data/script/about +0 -0
  26. data/script/breakpointer +0 -0
  27. data/script/console +0 -0
  28. data/script/destroy +0 -0
  29. data/script/generate +0 -0
  30. data/script/performance/benchmarker +0 -0
  31. data/script/performance/profiler +0 -0
  32. data/script/plugin +0 -0
  33. data/script/process/inspector +0 -0
  34. data/script/process/reaper +0 -0
  35. data/script/process/spawner +0 -0
  36. data/script/runner +0 -0
  37. data/script/server +0 -0
  38. data/test/functional/works_controller_test.rb +28 -0
  39. data/test/unit/user_test.rb +1 -1
  40. data/vendor/plugins/goldspike/test/war_config_test_config.rb +0 -0
  41. data/vendor/plugins/will_paginate/test/console +0 -0
  42. metadata +5 -4
data/History.txt CHANGED
@@ -1,4 +1,25 @@
1
- == 0.32.0 2008-05-06
1
+ == 0.33.0 2008-05-09
2
+
3
+ == Features
4
+
5
+ * Upgraded JRuby to version 1.1.1 for the WAR distribution.
6
+
7
+ === Fixes
8
+
9
+ * Changed to set the most commonly used backlog as default backlog for a new task.
10
+ * Copied the list of users that have grabbed a task when the task is moved to another period.
11
+ * Changed setting of start time for a new work record in the daily work sheet
12
+ to to completion time of the last work record on the same day,
13
+ or blank if there are no work records or the last work record was not completed yet..
14
+ * Added user_id parameter when navigating links in the daily and weekly work sheets.
15
+ * Changed to display expected number of hours per week instead of
16
+ adding 8 hours for public holidays and absences.
17
+ * Fixed wrong indent in Show Sprint view.
18
+ * Always show start time in works list.
19
+ * Fixed migrations to work with PostgreSQL 8.3
20
+ * Removed automatic setting of "completed at" time for works.
21
+
22
+ == 0.32.0 2008-05-08
2
23
 
3
24
  == Features
4
25
 
@@ -65,7 +65,7 @@ class WorksController < ApplicationController
65
65
  end
66
66
  @work = Work.new(params[:work])
67
67
  @work.started_on ||= Date.today
68
- @work.completed_at = Time.now unless @work.start_time || @work.completed_at
68
+ #@work.completed_at = Time.now unless @work.start_time || @work.completed_at
69
69
  @work.calculate_hours! unless @work.hours && @work.hours.to_f > 0
70
70
  @work.user_id = current_user.id
71
71
  end
@@ -86,7 +86,11 @@ class WorksController < ApplicationController
86
86
 
87
87
  @work.task.estimates.create!(params[:estimate]) if @work.task && params[:estimate]
88
88
 
89
- back_or_redirect_to :controller => 'periods', :action => 'show', :id => @work.task && @work.task.period, :task_id => @work.task && @work.task.id
89
+ if @work.task
90
+ back_or_redirect_to :controller => 'periods', :action => 'show', :id => @work.task && @work.task.period, :task_id => @work.task && @work.task.id
91
+ else
92
+ back_or_redirect_to :controller => 'works', :action => 'daily_work_sheet', :id => @work.started_on.strftime('%Y-%m-%d')
93
+ end
90
94
  end
91
95
 
92
96
 
@@ -139,13 +143,14 @@ class WorksController < ApplicationController
139
143
  if update_work
140
144
  #flash.discard
141
145
  @next_field = params[:next_field] || 'description'
142
- works = Work.find_work_for_day((@work.started_on || @work.completed_at).to_date)
143
- @day_total = works.inject(BigDecimal('0')){|total,work|total+=work.hours}
146
+ @works = Work.find_work_for_day((@work.started_on || @work.completed_at).to_date)
147
+ @day_total = @works.inject(BigDecimal('0')){|total,work|total+=work.hours}
144
148
  else
145
149
  @next_field = params[:field] || 'description'
146
150
  end
147
151
  @work_accounts = WorkAccount.find(:all, :order => :name)
148
152
  @customers = Customer.find(:all, :order => :name)
153
+ @new_work = flash[:work] || Work.new(@works.last && @works.last.completed_at ? {:started_at => @works.last.completed_at} : nil)
149
154
  end
150
155
 
151
156
  def update_time
@@ -198,7 +203,7 @@ class WorksController < ApplicationController
198
203
  @works = Work.find_work_for_day(@date, @user)
199
204
  @customers = Customer.find(:all, :order => :name)
200
205
  @started_works = Task.find_started
201
- @new_work = flash[:work] || Work.new(:started_at => Time.now)
206
+ @new_work = flash[:work] || Work.new(@works.last && @works.last.completed_at ? {:started_at => @works.last.completed_at} : nil)
202
207
  @work_accounts = WorkAccount.find(:all, :order => :name)
203
208
  @absence = Absence.find(:first, :conditions => {:on => @date, :user_id => @user.id})
204
209
  @public_holiday = PublicHoliday.find(:first, :conditions => {:on => @date})
data/app/models/period.rb CHANGED
@@ -45,7 +45,7 @@ class Period < ActiveRecord::Base
45
45
  freq[b.id] ||= 0
46
46
  freq[b.id] += 1
47
47
  end
48
- freq.to_a.sort_by {|backlog, count| count}.first[0]
48
+ freq.to_a.sort_by {|backlog, count| -count}.first[0]
49
49
  end
50
50
 
51
51
  def active?(check_tasks = false)
data/app/models/task.rb CHANGED
@@ -179,6 +179,7 @@ class Task < ActiveRecord::Base
179
179
  existing_task.open
180
180
  existing_task.previous_task_id = self.previous_task_id || self.id
181
181
  existing_task.description = self.description
182
+ existing_task.users = self.users
182
183
  existing_task.save!
183
184
  existing_task.estimate(old_todo)
184
185
  return existing_task
@@ -195,6 +196,7 @@ class Task < ActiveRecord::Base
195
196
  new_task.description = self.description
196
197
  new_task.initial_estimate = self.initial_estimate
197
198
  new_task.position = nil
199
+ new_task.users = self.users
198
200
  new_task.save!
199
201
  new_task.insert_at 1
200
202
  new_task.estimate(old_todo)
@@ -7,7 +7,9 @@
7
7
  <%=render :partial => '/tasks/fields_header', :locals => {:backlog => @backlog, :active => false, :track_times => false, :work_done => work_done} %>
8
8
  <ul id="completed_tasks_<%=period && period.id%>" class="task_list" style="width: 100%;">
9
9
  <% @completed_tasks.select {|t| t.period == period}.each do |task| %>
10
- <%=render :partial => '/tasks/task', :locals => { :task => task, :i => i, :active => false, :highlight_task => task == @selected_task, :hidden => false, :show_backlog => controller.class != BacklogsController } %>
10
+ <%=render :partial => '/tasks/task', :locals => { :task => task, :i => i, :active => false,
11
+ :highlight_task => task == @selected_task, :hidden => false,
12
+ :show_backlog => controller.class != BacklogsController, :update => :spotlight } %>
11
13
  <% i += 1 %>
12
14
  <% end %>
13
15
  </ul>
@@ -6,6 +6,8 @@
6
6
  <%=image_button_to('add.png', l(:specify), {:controller => 'tasks', :action => :specify, :id => @task.id},
7
7
  :style => "margin-left: #{@task.depth * 2}em") %>
8
8
  <% end %>
9
+ <% else %>
10
+ <%=image_tag 'blank.png', :class => 'image-submit', :style => "margin-left: 0em; padding: 0px" %>
9
11
  <% end %>
10
12
  </div>
11
13
  <div style="float: left" style="border: 3px solid red">
@@ -56,7 +56,7 @@
56
56
  </td>
57
57
  <td id="work_start_time_cell" align="right" valign="bottom">
58
58
  <% field = 'start_time'; next_field = 'completed_at_time' %>
59
- <%=text_field :work, :start_time, :value => last_work && last_work.completed_at && last_work.completed_at.strftime('%H:%M'), :class => 'task_time',
59
+ <%=text_field :work, :start_time, :value => @new_work.start_time && @new_work.start_time.strftime('%H:%M'), :class => 'task_time',
60
60
  :onchange => remote_function(:url => {:action => :update_new_row, :field => field,
61
61
  :next_field => next_field},
62
62
  :with => "
@@ -1,5 +1,7 @@
1
- <div style="float: left"><%=link_to(image_tag('arrow_left.png'), :year => (@week > 1 ? @year : @year - 1), :week => (@week > 1 ? @week - 1 : 52))%></div>
2
- <div style="float: right"><%=link_to(image_tag('arrow_right.png'), :year => (@week < 52 ? @year : @year + 1), :week => (@week < 52 ? @week + 1 : 1))%></div>
1
+ <% user_parameter = @user != current_user ? @user.id : nil %>
2
+
3
+ <div style="float: left"><%=link_to(image_tag('arrow_left.png'), :year => (@week > 1 ? @year : @year - 1), :week => (@week > 1 ? @week - 1 : 52), :user_id => user_parameter)%></div>
4
+ <div style="float: right"><%=link_to(image_tag('arrow_right.png'), :year => (@week < 52 ? @year : @year + 1), :week => (@week < 52 ? @week + 1 : 1), :user_id => user_parameter)%></div>
3
5
 
4
6
  <div align="right">
5
7
  <% lock_action = @lock ? :unlock : :lock %>
@@ -2,11 +2,13 @@
2
2
 
3
3
  <div id="spotlight">
4
4
 
5
- <div style="float: left"><%=image_link_to('arrow_left.png', l(:previous_week), {:id => @date - 7}, :class => nil)%></div>
6
- <div style="float: left"><%=image_link_to('arrow_left.png', l(:previous_day), {:id => @date-1}, :class => nil)%></div>
7
- <%=link_to l(:weekly_work_sheet), :action => :weekly_work_sheet, :year => @year, :week => @week%>
8
- <div style="float: right"><%=image_link_to('arrow_right.png', l(:next_week), {:id => @date + 7}, :class => nil)%></div>
9
- <div style="float: right"><%=image_link_to('arrow_right.png', l(:next_day), {:id => @date+1}, :class => nil)%></div>
5
+ <% user_parameter = @user != current_user ? @user.id : nil %>
6
+
7
+ <div style="float: left"><%=image_link_to('arrow_left.png', l(:previous_week), {:id => @date - 7, :user_id => user_parameter}, :class => nil)%></div>
8
+ <div style="float: left"><%=image_link_to('arrow_left.png', l(:previous_day), {:id => @date-1, :user_id => user_parameter}, :class => nil)%></div>
9
+ <%=link_to l(:weekly_work_sheet), :action => :weekly_work_sheet, :year => @year, :week => @week, :user_id => user_parameter%>
10
+ <div style="float: right"><%=image_link_to('arrow_right.png', l(:next_week), {:id => @date + 7, :user_id => user_parameter}, :class => nil)%></div>
11
+ <div style="float: right"><%=image_link_to('arrow_right.png', l(:next_day), {:id => @date+1, :user_id => user_parameter}, :class => nil)%></div>
10
12
 
11
13
  <br clear="all" />
12
14
 
@@ -103,9 +103,7 @@
103
103
  <th><%=l :done %></th>
104
104
  <th><%=l :description %></th>
105
105
  <th><%=l :invoice %></th>
106
- <% if @period && @period.track_times? %>
107
106
  <th><%=l :started_at %></th>
108
- <% end %>
109
107
  <th><%=l :completed_at %></th>
110
108
  </tr>
111
109
 
@@ -122,9 +120,7 @@
122
120
  %>
123
121
  <td><%= link_to link, :controller => 'works', :action => 'daily_work_sheet', :id => work.started_on.strftime("%Y-%m-%d") %></td>
124
122
  <td><%=work.invoice ? l(:yes) : '' %></td>
125
- <% if @period && @period.track_times? %>
126
123
  <td><%=work.started_at && work.started_at.strftime('%Y-%m-%d %H:%M:%S') %></td>
127
- <% end %>
128
124
  <td valign="top"><%=work.completed_at && work.completed_at.strftime('%Y-%m-%d %H:%M:%S') %></td>
129
125
  <tr>
130
126
  <% end %>
@@ -11,3 +11,7 @@ end
11
11
  if @day_total
12
12
  page.replace_html "hours_total", "#{t @day_total}"
13
13
  end
14
+
15
+ if @new_work
16
+ page["work_start_time"].value = @new_work.started_at.strftime('%H:%M')
17
+ end
@@ -9,11 +9,25 @@
9
9
  <tr>
10
10
  <th><%=l :work_account %></th>
11
11
  <% [:monday, :tuesday, :wednesday, :thursday, :friday, :saturday, :sunday].each_with_index do |day, i| %>
12
- <th align="center"><%=detour_to "#{l(day)} #{week_date(i+1)}", :action => :daily_work_sheet, :id => (@first_date + i).strftime('%Y-%m-%d'), :user_id => (@user != current_user ? @user : nil) %></th>
12
+ <th align="center"><%=detour_to "#{l(day)} #{week_date(i+1)}", :action => :daily_work_sheet, :id => (@first_date + i).strftime('%Y-%m-%d'), :user_id => (@user != current_user ? @user : nil) %></th>
13
13
  <% end %>
14
14
  <th align="center" nowrap="true"><%=l :week %> <%=@week%></th>
15
15
  </tr>
16
16
 
17
+ <% unless (@absences + @public_holidays).compact.empty? %>
18
+ <tr>
19
+ <th/>
20
+ <% (0..6).each do |i| %>
21
+ <th><span style="color: red">
22
+ <%=l :public_holiday if @public_holidays[i] %>
23
+ <%=l :absent if @absences[i] %>
24
+ </span>
25
+ </th>
26
+ <% end %>
27
+ <th/>
28
+ </tr>
29
+ <% end %>
30
+
17
31
  <% week_totals = Hash.new(0) %>
18
32
  <% day_totals = Array.new(7, 0) %>
19
33
  <% for work_account, totals in @work_accounts %>
@@ -35,12 +49,13 @@
35
49
  <% end %>
36
50
  <tr>
37
51
  <th><%=l :totals%></th>
52
+ <% expected_week_total = BigDecimal('40') %>
38
53
  <% (0..6).each do |day| %>
39
- <% day_totals[day] += BigDecimal('8') if @absences[day] || @public_holidays[day] %>
54
+ <% expected_week_total -= BigDecimal('8') if @absences[day] || @public_holidays[day] %>
40
55
  <th class="hours"><%=t(day_totals[day]) if day_totals[day] > 0%></th>
41
56
  <% end %>
42
57
  <% week_total = day_totals.inject(BigDecimal('0')) {|total, day_total| total + day_total} %>
43
- <th class="hours"><%=t(week_total)%></th>
58
+ <th class="hours"><%=t(week_total)%><%=" (#{t expected_week_total})" unless expected_week_total == 40 %></th>
44
59
  </tr>
45
60
  </table>
46
61
 
data/bin/backlog CHANGED
File without changes
data/bin/backlog_init.d CHANGED
File without changes
File without changes
data/config/war.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # Goldspike configuration
2
2
 
3
3
  # Set the version of JRuby and GoldSpike to use:
4
- maven_library 'org.jruby', 'jruby-complete', '1.1RC3'
4
+ maven_library 'org.jruby', 'jruby-complete', '1.1.1'
5
5
  maven_library 'backport-util-concurrent', 'backport-util-concurrent', '3.0'
6
6
  #maven_library 'org.jruby.extras', 'goldspike', '1.3-SNAPSHOT'
7
7
 
@@ -10,9 +10,9 @@ maven_library 'postgresql', 'postgresql', '8.2-504.jdbc4'
10
10
  #maven_library 'bouncycastle', 'bcprov-jdk16', '136'
11
11
 
12
12
  add_gem('jruby-openssl', '>=0.0.4')
13
- add_gem('rubyforge', '>=0.4.4')
13
+ add_gem('rubyforge', '>=1.0.0')
14
14
  add_gem('rmagick4j', '>=0.3.3')
15
- add_gem('gruff', '>=0.2.8')
15
+ add_gem('gruff', '>=0.3.1')
16
16
  add_gem('slave', '>=1.2.1')
17
17
 
18
18
  exclude_files('pkg')
@@ -53,7 +53,7 @@ class InsertDatekProjects < ActiveRecord::Migration
53
53
  Backlog.reset_column_information
54
54
 
55
55
  projects.each do |invoice_code, name|
56
- if backlog = Backlog.find_by_invoice_code(invoice_code)
56
+ if backlog = Backlog.find_by_invoice_code(invoice_code.to_s)
57
57
  if backlog.invoice_code.nil? || backlog.invoice_code.length >= 31
58
58
  puts "Set Mamut project code to #{invoice_code} for '#{name}'"
59
59
  backlog.invoice_code = invoice_code
data/db/schema.rb CHANGED
@@ -151,29 +151,29 @@ ActiveRecord::Schema.define(:version => 31) do
151
151
 
152
152
  add_foreign_key "absences", ["user_id"], "users", ["party_id"], :name => "absences_user_id_fkey"
153
153
 
154
- add_foreign_key "backlogs", ["customer_id"], "customers", ["id"], :name => "backlogs_customer_id_fkey"
155
154
  add_foreign_key "backlogs", ["work_account_id"], "work_accounts", ["id"], :name => "backlogs_work_account_id_fkey"
155
+ add_foreign_key "backlogs", ["customer_id"], "customers", ["id"], :name => "backlogs_customer_id_fkey"
156
156
 
157
- add_foreign_key "estimates", ["user_id"], "users", ["party_id"], :name => "estimates_user_id_fkey"
158
157
  add_foreign_key "estimates", ["task_id"], "tasks", ["id"], :name => "estimates_task_id_fkey"
158
+ add_foreign_key "estimates", ["user_id"], "users", ["party_id"], :name => "estimates_user_id_fkey"
159
159
 
160
160
  add_foreign_key "groups", ["party_id"], "parties", ["id"], :name => "groups_party_id_fkey"
161
161
 
162
- add_foreign_key "groups_users", ["user_id"], "users", ["party_id"], :name => "groups_users_user_id_fkey"
163
162
  add_foreign_key "groups_users", ["group_id"], "groups", ["party_id"], :name => "groups_users_group_id_fkey"
163
+ add_foreign_key "groups_users", ["user_id"], "users", ["party_id"], :name => "groups_users_user_id_fkey"
164
164
 
165
165
  add_foreign_key "periods", ["party_id"], "parties", ["id"], :name => "periods_party_id_fkey"
166
166
 
167
167
  add_foreign_key "task_files", ["task_id"], "tasks", ["id"], :name => "task_files_task_id_fkey"
168
168
 
169
- add_foreign_key "tasks", ["updated_by"], "users", ["party_id"], :name => "tasks_updated_by_fkey"
170
- add_foreign_key "tasks", ["created_by"], "users", ["party_id"], :name => "tasks_created_by_fkey"
171
- add_foreign_key "tasks", ["customer_id"], "customers", ["id"], :name => "tasks_customer_id_fkey"
172
- add_foreign_key "tasks", ["work_account_id"], "work_accounts", ["id"], :name => "tasks_work_account_id_fkey"
173
- add_foreign_key "tasks", ["backlog_id"], "backlogs", ["id"], :name => "tasks_backlog_id_fkey"
174
- add_foreign_key "tasks", ["previous_task_id"], "tasks", ["id"], :name => "tasks_previous_task_id_fkey"
175
- add_foreign_key "tasks", ["parent_id"], "tasks", ["id"], :name => "tasks_parent_id_fkey"
176
169
  add_foreign_key "tasks", ["period_id"], "periods", ["id"], :name => "tasks_period_id_fkey"
170
+ add_foreign_key "tasks", ["parent_id"], "tasks", ["id"], :name => "tasks_parent_id_fkey"
171
+ add_foreign_key "tasks", ["previous_task_id"], "tasks", ["id"], :name => "tasks_previous_task_id_fkey"
172
+ add_foreign_key "tasks", ["backlog_id"], "backlogs", ["id"], :name => "tasks_backlog_id_fkey"
173
+ add_foreign_key "tasks", ["work_account_id"], "work_accounts", ["id"], :name => "tasks_work_account_id_fkey"
174
+ add_foreign_key "tasks", ["customer_id"], "customers", ["id"], :name => "tasks_customer_id_fkey"
175
+ add_foreign_key "tasks", ["created_by"], "users", ["party_id"], :name => "tasks_created_by_fkey"
176
+ add_foreign_key "tasks", ["updated_by"], "users", ["party_id"], :name => "tasks_updated_by_fkey"
177
177
 
178
178
  add_foreign_key "tasks_users", ["task_id"], "tasks", ["id"], :name => "tasks_users_task_id_fkey"
179
179
  add_foreign_key "tasks_users", ["user_id"], "users", ["party_id"], :name => "tasks_users_user_id_fkey"
@@ -188,9 +188,9 @@ ActiveRecord::Schema.define(:version => 31) do
188
188
 
189
189
  add_foreign_key "work_locks", ["user_id"], "users", ["party_id"], :name => "work_locks_user_id_fkey"
190
190
 
191
- add_foreign_key "works", ["work_account_id"], "work_accounts", ["id"], :name => "works_work_account_id_fkey"
192
- add_foreign_key "works", ["customer_id"], "customers", ["id"], :name => "works_customer_id_fkey"
193
- add_foreign_key "works", ["user_id"], "users", ["party_id"], :name => "works_user_id_fkey"
194
191
  add_foreign_key "works", ["task_id"], "tasks", ["id"], :name => "works_task_id_fkey"
192
+ add_foreign_key "works", ["user_id"], "users", ["party_id"], :name => "works_user_id_fkey"
193
+ add_foreign_key "works", ["customer_id"], "customers", ["id"], :name => "works_customer_id_fkey"
194
+ add_foreign_key "works", ["work_account_id"], "work_accounts", ["id"], :name => "works_work_account_id_fkey"
195
195
 
196
196
  end
data/lang/en.yaml CHANGED
@@ -2,6 +2,7 @@ file_charset: utf-8
2
2
 
3
3
  abort: Abort
4
4
  aborted: Aborted
5
+ absent: Absent
5
6
  account: Account
6
7
  active: Active
7
8
  administration: Administration
data/lang/no.yaml CHANGED
@@ -2,6 +2,7 @@ file_charset: utf-8
2
2
 
3
3
  abort: Avbryt
4
4
  aborted: Avbrutt
5
+ absent: Fravær
5
6
  account: Konto
6
7
  active: Aktiv
7
8
  administration: Administrasjon
data/public/dispatch.cgi CHANGED
File without changes
data/public/dispatch.fcgi CHANGED
File without changes
data/public/dispatch.rb CHANGED
File without changes
Binary file
data/script/about CHANGED
File without changes
data/script/breakpointer CHANGED
File without changes
data/script/console CHANGED
File without changes
data/script/destroy CHANGED
File without changes
data/script/generate CHANGED
File without changes
File without changes
File without changes
data/script/plugin CHANGED
File without changes
File without changes
File without changes
File without changes
data/script/runner CHANGED
File without changes
data/script/server CHANGED
File without changes
@@ -110,6 +110,34 @@ class WorksControllerTest < Test::Unit::TestCase
110
110
  assert_equal BigDecimal('0.333'), assigns(:work).hours
111
111
  end
112
112
 
113
+ def test_create_with_old_start_date_and_completed_at_time
114
+ num_works = Work.count
115
+
116
+ post :create, :work => {:task_id => 1, :started_on => '2007-07-31', :work_account_id => '1',
117
+ :start_time => '12:00', :completed_at_time => '12:20'}
118
+
119
+ assert_response :redirect
120
+ assert_redirected_to :controller => 'periods', :action => 'show', :id => periods(:past).id, :task_id => 1
121
+
122
+ assert_equal num_works + 1, Work.count
123
+ assert_equal BigDecimal('0.333'), assigns(:work).hours
124
+ assert_equal Time.parse('2007-07-31 12:20'), assigns(:work).completed_at
125
+ end
126
+
127
+ def test_create_with_old_start_date_and_no_times
128
+ num_works = Work.count
129
+
130
+ post :create, :work => {:started_on => '2007-07-31', :work_account_id => '1', :hours_time => '3:00'}
131
+
132
+ assert_response :redirect
133
+ assert_redirected_to :controller => 'works', :action => 'daily_work_sheet', :id => '2007-07-31'
134
+
135
+ assert_equal num_works + 1, Work.count
136
+ assert_equal BigDecimal('3.000'), assigns(:work).hours
137
+ assert_nil assigns(:work).start_time
138
+ assert_nil assigns(:work).completed_at
139
+ end
140
+
113
141
  def test_edit
114
142
  get :edit, :id => 1
115
143
 
@@ -7,7 +7,7 @@ class UserTest < Test::Unit::TestCase
7
7
  def test_authenticate
8
8
  assert_equal users(:tesla), User.authenticate(users(:tesla).login, "atest")
9
9
  assert_nil User.authenticate("nontesla", "atest")
10
- assert_nil User.authenticate(users(:tesla), "wrong password")
10
+ assert_nil User.authenticate(users(:tesla).login, "wrong password")
11
11
  end
12
12
 
13
13
  def test_authenticate_by_token
File without changes
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: backlog
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.32.0
4
+ version: 0.33.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Uwe Kubosch
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-05-08 00:00:00 +02:00
12
+ date: 2008-05-23 00:00:00 +02:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -55,7 +55,7 @@ dependencies:
55
55
  requirements:
56
56
  - - ">="
57
57
  - !ruby/object:Gem::Version
58
- version: 1.5.1
58
+ version: 1.5.3
59
59
  version:
60
60
  description: Welcome to Backlog! Backlog is a tool to help you collect and organize all your tasks, whether you are a single person or a small or large group.
61
61
  email: uwe@kubosch.no
@@ -596,6 +596,7 @@ files:
596
596
  - public/images/rmagick_270.gif
597
597
  - public/images/arrow_right.svg
598
598
  - public/images/arrow_left.png
599
+ - public/images/blank.png
599
600
  - public/images/arrow_right.png
600
601
  - public/images/arrow_down.svg
601
602
  - public/images/grab_gray.png
@@ -757,7 +758,7 @@ requirements:
757
758
  - ImageMagick
758
759
  - PostgreSQL
759
760
  rubyforge_project: backlog
760
- rubygems_version: 1.0.1
761
+ rubygems_version: 1.1.1
761
762
  signing_key:
762
763
  specification_version: 2
763
764
  summary: Application to aid collecting, processing, organizing, reviewing and doing tasks.