mirror of
https://github.com/plashchynski/crono.git
synced 2026-04-17 22:49:52 +02:00
Add Job class
This commit is contained in:
@@ -18,13 +18,6 @@ describe Crono::CLI do
|
||||
end
|
||||
end
|
||||
|
||||
describe "#run_job" do
|
||||
it "should run job in separate thread" do
|
||||
thread = cli.send(:run_job, TestJob).join
|
||||
expect(thread).to be_stop
|
||||
end
|
||||
end
|
||||
|
||||
describe "#start_working_loop" do
|
||||
it "should start working loop"
|
||||
end
|
||||
|
||||
22
spec/job_spec.rb
Normal file
22
spec/job_spec.rb
Normal file
@@ -0,0 +1,22 @@
|
||||
require "spec_helper"
|
||||
|
||||
class TestJob
|
||||
def perform;end
|
||||
end
|
||||
|
||||
describe Crono::Job do
|
||||
let(:period) { Crono::Period.new(2.day) }
|
||||
let(:job) { Crono::Job.new(TestJob, period) }
|
||||
|
||||
it "should contain performer and period" do
|
||||
expect(job.performer).to be TestJob
|
||||
expect(job.period).to be period
|
||||
end
|
||||
|
||||
describe "#perform" do
|
||||
it "should run performer in separate thread" do
|
||||
thread = job.perform.join
|
||||
expect(thread).to be_stop
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -5,8 +5,8 @@ class TestJob
|
||||
end
|
||||
|
||||
describe Crono::PerformerProxy do
|
||||
it "should add job and period to schedule" do
|
||||
expect(Crono.schedule).to receive(:add).with(TestJob, kind_of(Crono::Period))
|
||||
it "should add job to schedule" do
|
||||
expect(Crono.schedule).to receive(:add).with(kind_of(Crono::Job))
|
||||
Crono.perform(TestJob).every(2.days, at: "15:30")
|
||||
end
|
||||
end
|
||||
|
||||
@@ -5,16 +5,23 @@ class TestJob
|
||||
end
|
||||
|
||||
describe Crono::Schedule do
|
||||
before(:each) do
|
||||
@schedule = Crono::Schedule.new
|
||||
@jobs = [
|
||||
Crono::Period.new(3.day, at: "18:55"),
|
||||
Crono::Period.new(1.day, at: "15:30"),
|
||||
Crono::Period.new(7.day, at: "06:05")
|
||||
].map { |period| Crono::Job.new(TestJob, period) }
|
||||
@schedule.schedule = @jobs
|
||||
end
|
||||
|
||||
describe "#next" do
|
||||
it "should return next job in schedule" do
|
||||
@schedule = Crono::Schedule.new
|
||||
[
|
||||
Crono::Period.new(3.day, at: "18:55"),
|
||||
Crono::Period.new(1.day, at: "15:30"),
|
||||
Crono::Period.new(7.day, at: "06:05")
|
||||
].each { |period| @schedule.add(TestJob, period) }
|
||||
expect(@schedule.next).to be @jobs[1]
|
||||
end
|
||||
|
||||
expect(@schedule.next).to be_eql([TestJob, 1.day.from_now.change(hour: 15, min: 30)])
|
||||
it "should return next based on last" do
|
||||
expect(@schedule.next)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user