Add some specs for our Rufus::Scheduler extension.

Akinori MUSHA 9 years ago
parent
commit
51f8c8b805
1 changed files with 57 additions and 0 deletions
  1. 57 0
      spec/lib/huginn_scheduler_spec.rb

+ 57 - 0
spec/lib/huginn_scheduler_spec.rb

@@ -0,0 +1,57 @@
1
+require 'spec_helper'
2
+require 'huginn_scheduler'
3
+
4
+describe Rufus::Scheduler do
5
+  before :each do
6
+    @taoe, Thread.abort_on_exception = Thread.abort_on_exception, false
7
+    @oso, @ose, $stdout, $stderr = $stdout, $stderr, StringIO.new, StringIO.new
8
+
9
+    @scheduler = Rufus::Scheduler.new
10
+
11
+    stub.any_instance_of(Agents::SchedulerAgent).second_precision_enabled { true }
12
+
13
+    @agent1 = Agents::SchedulerAgent.new(name: 'Scheduler 1', options: { schedule: '*/1 * * * * *' }).tap { |a|
14
+      a.user = users(:bob)
15
+      a.save!
16
+    }
17
+    @agent2 = Agents::SchedulerAgent.new(name: 'Scheduler 2', options: { schedule: '*/1 * * * * *' }).tap { |a|
18
+      a.user = users(:bob)
19
+      a.save!
20
+    }
21
+  end
22
+
23
+  after :each do
24
+    @scheduler.shutdown
25
+
26
+    Thread.abort_on_exception = @taoe
27
+    $stdout, $stderr = @oso, @ose
28
+  end
29
+
30
+  describe '#schedule_scheduler_agents' do
31
+    it 'registers active SchedulerAgents' do
32
+      @scheduler.schedule_scheduler_agents
33
+
34
+      expect(@scheduler.scheduler_agent_jobs.map(&:scheduler_agent)).to eq([@agent1, @agent2])
35
+    end
36
+
37
+    it 'unregisters disabled SchedulerAgents' do
38
+      @scheduler.schedule_scheduler_agents
39
+
40
+      @agent1.update!(disabled: true)
41
+
42
+      @scheduler.schedule_scheduler_agents
43
+
44
+      expect(@scheduler.scheduler_agent_jobs.map(&:scheduler_agent)).to eq([@agent2])
45
+    end
46
+
47
+    it 'unregisters deleted SchedulerAgents' do
48
+      @scheduler.schedule_scheduler_agents
49
+
50
+      @agent2.delete
51
+
52
+      @scheduler.schedule_scheduler_agents
53
+
54
+      expect(@scheduler.scheduler_agent_jobs.map(&:scheduler_agent)).to eq([@agent1])
55
+    end
56
+  end
57
+end