12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- require 'rails_helper'
- require 'mqtt'
- require './spec/support/fake_mqtt_server'
- describe Agents::MqttAgent do
- before :each do
- @error_log = StringIO.new
- @server = MQTT::FakeServer.new('127.0.0.1')
- @server.logger = Logger.new(@error_log)
- @server.logger.level = Logger::DEBUG
- @server.start
- @valid_params = {
- 'uri' => "mqtt://#{@server.address}:#{@server.port}",
- 'topic' => '/#',
- 'max_read_time' => '0.1',
- 'expected_update_period_in_days' => "2"
- }
- @checker = Agents::MqttAgent.new(
- :name => "somename",
- :options => @valid_params,
- :schedule => "midnight",
- )
- @checker.user = users(:jane)
- @checker.save!
- end
- after :each do
- @server.stop
- end
- describe "#check" do
- it "should create events in the initial run" do
- expect { @checker.check }.to change { Event.count }.by(2)
- end
- it "should ignore retained messages that are previously received" do
- expect { @checker.check }.to change { Event.count }.by(2)
- expect { @checker.check }.to change { Event.count }.by(1)
- expect { @checker.check }.to change { Event.count }.by(1)
- expect { @checker.check }.to change { Event.count }.by(2)
- end
- end
- describe "#working?" do
- it "checks if its generating events as scheduled" do
- expect(@checker).not_to be_working
- @checker.check
- expect(@checker.reload).to be_working
- three_days_from_now = 3.days.from_now
- allow(Time).to receive(:now) { three_days_from_now }
- expect(@checker).not_to be_working
- end
- end
- end
|