60 lines
2.8 KiB
Ruby
60 lines
2.8 KiB
Ruby
require 'spec_helper'
|
|
|
|
describe FarmEvents::Create do
|
|
let(:seq) { FactoryBot.create(:sequence) }
|
|
it 'Builds a farm_event' do
|
|
device = seq.device
|
|
start_time = '2027-02-17T15:16:17.000Z'
|
|
end_time = '2029-02-17T18:19:20.000Z'
|
|
farm_event = FarmEvents::Create.run!(device: device,
|
|
executable_id: seq.id,
|
|
executable_type: seq.class.name,
|
|
executable: seq,
|
|
start_time: start_time,
|
|
end_time: end_time,
|
|
repeat: 4,
|
|
time_unit: 'minutely').reload
|
|
expect(farm_event).to be_kind_of(FarmEvent)
|
|
expect(farm_event.device).to eq(device)
|
|
expect(farm_event.executable).to eq(seq)
|
|
expect(farm_event.start_time.to_time).to eq(Time.parse start_time)
|
|
expect(farm_event.end_time.to_time).to eq(Time.parse end_time)
|
|
expect(farm_event.repeat).to eq(4)
|
|
expect(farm_event.time_unit).to eq('minutely')
|
|
end
|
|
it 'Prevents backwards start/end times' do
|
|
device = seq.device
|
|
start_time = '2015-02-17T15:16:17.000Z'
|
|
end_time = '2099-02-17T18:19:20.000Z'
|
|
farm_event = FarmEvents::Create.run(device: device,
|
|
executable_id: seq.id,
|
|
executable_type: seq.class.name,
|
|
executable: seq,
|
|
start_time: end_time,
|
|
end_time: start_time,
|
|
repeat: 4,
|
|
time_unit: 'minutely')
|
|
expect(farm_event.errors["end_time"]).to be
|
|
expect(farm_event.errors["end_time"].message)
|
|
.to include(FarmEvents::Create::BACKWARDS_END_TIME)
|
|
end
|
|
|
|
|
|
|
|
it "disallows creation of farm events with 5 digit years" do
|
|
device = seq.device
|
|
start_time = "+099999-08-18T12:32:00.000Z"
|
|
end_time = "+099999-08-19T12:32:00.000Z"
|
|
farm_event = FarmEvents::Create.run(device: device,
|
|
executable_id: seq.id,
|
|
executable_type: seq.class.name,
|
|
executable: seq,
|
|
end_time: end_time,
|
|
start_time: start_time,
|
|
repeat: 4,
|
|
time_unit: 'minutely')
|
|
expect(farm_event.errors.message_list.join)
|
|
.to include("too far in the future")
|
|
end
|
|
end
|