Browse Source

Add some specs for our Rufus::Scheduler extension.

Akinori MUSHA 10 năm trước cách đây
mục cha
commit
51f8c8b805
1 tập tin đã thay đổi với 57 bổ sung0 xóa
  1. 57 0
      spec/lib/huginn_scheduler_spec.rb

+ 57 - 0
spec/lib/huginn_scheduler_spec.rb

@@ -0,0 +1,57 @@
+require 'spec_helper'
+require 'huginn_scheduler'
+
+describe Rufus::Scheduler do
+  before :each do
+    @taoe, Thread.abort_on_exception = Thread.abort_on_exception, false
+    @oso, @ose, $stdout, $stderr = $stdout, $stderr, StringIO.new, StringIO.new
+
+    @scheduler = Rufus::Scheduler.new
+
+    stub.any_instance_of(Agents::SchedulerAgent).second_precision_enabled { true }
+
+    @agent1 = Agents::SchedulerAgent.new(name: 'Scheduler 1', options: { schedule: '*/1 * * * * *' }).tap { |a|
+      a.user = users(:bob)
+      a.save!
+    }
+    @agent2 = Agents::SchedulerAgent.new(name: 'Scheduler 2', options: { schedule: '*/1 * * * * *' }).tap { |a|
+      a.user = users(:bob)
+      a.save!
+    }
+  end
+
+  after :each do
+    @scheduler.shutdown
+
+    Thread.abort_on_exception = @taoe
+    $stdout, $stderr = @oso, @ose
+  end
+
+  describe '#schedule_scheduler_agents' do
+    it 'registers active SchedulerAgents' do
+      @scheduler.schedule_scheduler_agents
+
+      expect(@scheduler.scheduler_agent_jobs.map(&:scheduler_agent)).to eq([@agent1, @agent2])
+    end
+
+    it 'unregisters disabled SchedulerAgents' do
+      @scheduler.schedule_scheduler_agents
+
+      @agent1.update!(disabled: true)
+
+      @scheduler.schedule_scheduler_agents
+
+      expect(@scheduler.scheduler_agent_jobs.map(&:scheduler_agent)).to eq([@agent2])
+    end
+
+    it 'unregisters deleted SchedulerAgents' do
+      @scheduler.schedule_scheduler_agents
+
+      @agent2.delete
+
+      @scheduler.schedule_scheduler_agents
+
+      expect(@scheduler.scheduler_agent_jobs.map(&:scheduler_agent)).to eq([@agent1])
+    end
+  end
+end