From 6805b22945097712ebf5c128945358497c428582 Mon Sep 17 00:00:00 2001 From: lukemelia Date: Tue, 28 Aug 2007 12:38:16 +0000 Subject: [PATCH] add completed_at to projects table per ticket #550. Note that this changeset includes a migration, so don't forget to rake db:migrate. git-svn-id: http://www.rousette.org.uk/svn/tracks-repos/trunk@578 a4c988fc-2ded-0310-b66e-134b36920a42 --- tracks/app/models/context.rb | 2 +- tracks/app/models/project.rb | 2 +- tracks/app/models/user.rb | 2 +- tracks/db/migrate/036_add_project_completed_at_column.rb | 9 +++++++++ tracks/db/schema.rb | 3 ++- tracks/test/unit/project_test.rb | 3 +++ 6 files changed, 17 insertions(+), 4 deletions(-) create mode 100644 tracks/db/migrate/036_add_project_completed_at_column.rb diff --git a/tracks/app/models/context.rb b/tracks/app/models/context.rb index f7070d4a..5ee1bf38 100644 --- a/tracks/app/models/context.rb +++ b/tracks/app/models/context.rb @@ -1,6 +1,6 @@ class Context < ActiveRecord::Base - has_many :todos, :dependent => :delete_all, :include => :project, :order => "completed_at DESC" + has_many :todos, :dependent => :delete_all, :include => :project, :order => "todos.completed_at DESC" belongs_to :user acts_as_list :scope => :user diff --git a/tracks/app/models/project.rb b/tracks/app/models/project.rb index 13b90cb6..b2e023e0 100644 --- a/tracks/app/models/project.rb +++ b/tracks/app/models/project.rb @@ -16,7 +16,7 @@ class Project < ActiveRecord::Base state :active state :hidden, :enter => :hide_todos, :exit => :unhide_todos - state :completed + state :completed#, :enter => Proc.new { |p| p.completed_at = Time.now.utc }, :exit => Proc.new { |p| p.completed_at = nil } event :activate do transitions :to => :active, :from => [:hidden, :completed] diff --git a/tracks/app/models/user.rb b/tracks/app/models/user.rb index 6d357d0c..c1bfe056 100644 --- a/tracks/app/models/user.rb +++ b/tracks/app/models/user.rb @@ -53,7 +53,7 @@ class User < ActiveRecord::Base end end has_many :todos, - :order => 'completed_at DESC, todos.created_at DESC', + :order => 'todos.completed_at DESC, todos.created_at DESC', :dependent => :delete_all has_many :deferred_todos, :class_name => 'Todo', diff --git a/tracks/db/migrate/036_add_project_completed_at_column.rb b/tracks/db/migrate/036_add_project_completed_at_column.rb new file mode 100644 index 00000000..e011e714 --- /dev/null +++ b/tracks/db/migrate/036_add_project_completed_at_column.rb @@ -0,0 +1,9 @@ +class AddProjectCompletedAtColumn < ActiveRecord::Migration + def self.up + add_column :projects, :completed_at, :datetime + end + + def self.down + remove_column :projects, :completed_at + end +end diff --git a/tracks/db/schema.rb b/tracks/db/schema.rb index 207527e6..d6cfadcb 100644 --- a/tracks/db/schema.rb +++ b/tracks/db/schema.rb @@ -2,7 +2,7 @@ # migrations feature of ActiveRecord to incrementally modify your database, and # then regenerate this schema definition. -ActiveRecord::Schema.define(:version => 34) do +ActiveRecord::Schema.define(:version => 36) do create_table "bow_wows", :force => true do |t| t.column "name", :string @@ -132,6 +132,7 @@ ActiveRecord::Schema.define(:version => 34) do t.column "created_at", :datetime t.column "updated_at", :datetime t.column "default_context_id", :integer + t.column "completed_at", :datetime end add_index "projects", ["user_id"], :name => "index_projects_on_user_id" diff --git a/tracks/test/unit/project_test.rb b/tracks/test/unit/project_test.rb index 52aa752a..969cd74c 100644 --- a/tracks/test/unit/project_test.rb +++ b/tracks/test/unit/project_test.rb @@ -57,9 +57,12 @@ class ProjectTest < Test::Rails::TestCase end def test_complete_project + assert_nil @timemachine.completed_at @timemachine.complete! assert_equal :completed, @timemachine.current_state assert @timemachine.completed? + assert_not_nil @timemachine.completed_at, "completed_at not expected to be nil" + assert_in_delta Time.now, @timemachine.completed_at, 1 end def test_find_project_by_namepart_with_exact_match