backlog 0.32.0 → 0.33.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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.