Add a spec for how the before_save hook should work.

Akinori MUSHA 9 years ago
parent
commit
26564c575a
1 changed files with 17 additions and 0 deletions
  1. 17 0
      spec/models/agents/scheduler_agent_spec.rb

+ 17 - 0
spec/models/agents/scheduler_agent_spec.rb

@@ -4,6 +4,7 @@ describe Agents::SchedulerAgent do
4 4
   before do
5 5
     @agent = Agents::SchedulerAgent.new(name: 'Example', options: { 'schedule' => '0 * * * *' })
6 6
     @agent.user = users(:bob)
7
+    @agent.save
7 8
   end
8 9
 
9 10
   describe "validation" do
@@ -36,6 +37,22 @@ describe Agents::SchedulerAgent do
36 37
     end
37 38
   end
38 39
 
40
+  describe "save" do
41
+    it "should delete memory['scheduled_at'] if and only if options is changed" do
42
+      time = Time.now.to_i
43
+
44
+      @agent.memory['scheduled_at'] = time
45
+      @agent.save
46
+      @agent.memory['scheduled_at'].should == time
47
+
48
+      @agent.memory['scheduled_at'] = time
49
+      # Currently @agent.options[]= is not detected
50
+      @agent.options = { 'schedule' => '*/5 * * * *' }
51
+      @agent.save
52
+      @agent.memory['scheduled_at'].should be_nil
53
+    end
54
+  end
55
+
39 56
   describe "check!" do
40 57
     it "should run targets" do
41 58
       targets = [agents(:bob_website_agent), agents(:bob_weather_agent)]