diff --git a/app/controllers/my_profile/tasks_controller.rb b/app/controllers/my_profile/tasks_controller.rb index a2fb611..f257ecf 100644 --- a/app/controllers/my_profile/tasks_controller.rb +++ b/app/controllers/my_profile/tasks_controller.rb @@ -9,7 +9,7 @@ class TasksController < MyProfileController end def processed - @tasks = Task.to(profile).finished.sort_by(&:created_at) + @tasks = Task.to(profile).closed.sort_by(&:created_at) end VALID_DECISIONS = [ 'finish', 'cancel', 'skip' ] diff --git a/app/models/task.rb b/app/models/task.rb index 878ea89..8a6acf1 100644 --- a/app/models/task.rb +++ b/app/models/task.rb @@ -267,7 +267,10 @@ class Task < ActiveRecord::Base end named_scope :pending, :conditions => { :status => Task::Status::ACTIVE } - named_scope :finished, :conditions => { :status => [Task::Status::CANCELLED, Task::Status::FINISHED] } + named_scope :hidden, :conditions => { :status => Task::Status::HIDDEN } + named_scope :finished, :conditions => { :status => Task::Status::FINISHED } + named_scope :canceled, :conditions => { :status => Task::Status::CANCELLED } + named_scope :closed, :conditions => { :status => [Task::Status::CANCELLED, Task::Status::FINISHED] } named_scope :opened, :conditions => { :status => [Task::Status::ACTIVE, Task::Status::HIDDEN] } named_scope :of, lambda { |type| conditions = type ? "type LIKE '#{type}'" : "1=1"; {:conditions => [conditions]} } named_scope :order_by, lambda { |attribute, ord| {:order => "#{attribute} #{ord}"} } diff --git a/test/unit/task_test.rb b/test/unit/task_test.rb index f8edbe0..db4c9e6 100644 --- a/test/unit/task_test.rb +++ b/test/unit/task_test.rb @@ -335,6 +335,43 @@ class TaskTest < ActiveSupport::TestCase assert_equal [t4,t3,t2,t1], Task.order_by('status', 'asc') end + should 'retrieve tasks by status' do + pending = fast_create(Task, :status => Task::Status::ACTIVE) + hidden = fast_create(Task, :status => Task::Status::HIDDEN) + finished = fast_create(Task, :status => Task::Status::FINISHED) + canceled = fast_create(Task, :status => Task::Status::CANCELLED) + + assert_includes Task.pending, pending + assert_not_includes Task.pending, hidden + assert_not_includes Task.pending, finished + assert_not_includes Task.pending, canceled + + assert_not_includes Task.hidden, pending + assert_includes Task.hidden, hidden + assert_not_includes Task.hidden, finished + assert_not_includes Task.hidden, canceled + + assert_not_includes Task.finished, pending + assert_not_includes Task.finished, hidden + assert_includes Task.finished, finished + assert_not_includes Task.finished, canceled + + assert_not_includes Task.canceled, pending + assert_not_includes Task.canceled, hidden + assert_not_includes Task.canceled, finished + assert_includes Task.canceled, canceled + + assert_includes Task.opened, pending + assert_includes Task.opened, hidden + assert_not_includes Task.opened, finished + assert_not_includes Task.opened, canceled + + assert_not_includes Task.closed, pending + assert_not_includes Task.closed, hidden + assert_includes Task.closed, finished + assert_includes Task.closed, canceled + end + protected def sample_user -- libgit2 0.21.2