From: martyntaylor <[email protected]>
---
src/app/models/task_observer.rb | 7 ++++++-
src/spec/models/task_observer_spec.rb | 21 +++++++++++++++++++++
2 files changed, 27 insertions(+), 1 deletions(-)
diff --git a/src/app/models/task_observer.rb b/src/app/models/task_observer.rb
index ca11bc1..d1834c4 100644
--- a/src/app/models/task_observer.rb
+++ b/src/app/models/task_observer.rb
@@ -1,5 +1,8 @@
class TaskObserver < ActiveRecord::Observer
- def after_save(a_task)
+
+ END_STATES = [ Task::STATE_CANCELED, Task::STATE_FAILED,
Task::STATE_FINISHED ]
+
+ def after_save(a_task)
if a_task.changed?
change = a_task.changes['state']
if change
@@ -13,6 +16,8 @@ class TaskObserver < ActiveRecord::Observer
a_task.time_started = Time.now
elsif state_to == Task::STATE_PENDING
a_task.time_submitted = Time.now
+ elsif END_STATES.include?(state_to)
+ a_task.time_ended = Time.now
end
end
diff --git a/src/spec/models/task_observer_spec.rb
b/src/spec/models/task_observer_spec.rb
index 5d31693..98f899a 100644
--- a/src/spec/models/task_observer_spec.rb
+++ b/src/spec/models/task_observer_spec.rb
@@ -21,4 +21,25 @@ describe TaskObserver do
@task.time_submitted.should >= @timestamp
end
+ it "should set ended timestamp when the task has finished" do
+ @task.state = Task::STATE_FINISHED
+ @task.save
+
+ @task.time_ended.should >= @timestamp
+ end
+
+ it "should set ended timestamp when the task is cancelled" do
+ @task.state = Task::STATE_CANCELED
+ @task.save
+
+ @task.time_ended.should >= @timestamp
+ end
+
+ it "should set ended timestamp when the task has failed" do
+ @task.state = Task::STATE_FAILED
+ @task.save
+
+ @task.time_ended.should >= @timestamp
+ end
+
end
\ No newline at end of file
--
1.6.6.1
_______________________________________________
deltacloud-devel mailing list
[email protected]
https://fedorahosted.org/mailman/listinfo/deltacloud-devel