From 51f8c8b8057f2fe2535c558f43c826ce0f741be9 Mon Sep 17 00:00:00 2001 From: Akinori MUSHA Date: Wed, 3 Sep 2014 13:20:18 +0900 Subject: [PATCH] Add some specs for our Rufus::Scheduler extension. --- spec/lib/huginn_scheduler_spec.rb | 57 +++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 spec/lib/huginn_scheduler_spec.rb diff --git a/spec/lib/huginn_scheduler_spec.rb b/spec/lib/huginn_scheduler_spec.rb new file mode 100644 index 00000000..f39bfddf --- /dev/null +++ b/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