mqtt_agent_spec.rb 1.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. require 'spec_helper'
  2. require 'mqtt'
  3. require './spec/support/fake_mqtt_server'
  4. describe Agents::MqttAgent do
  5. before :each do
  6. # stub_request(:get, /parse/).to_return(:body => File.read(Rails.root.join("spec/data_fixtures/adioso_parse.json")), :status => 200, :headers => {"Content-Type" => "text/json"})
  7. # stub_request(:get, /fares/).to_return(:body => File.read(Rails.root.join("spec/data_fixtures/adioso_fare.json")), :status => 200, :headers => {"Content-Type" => "text/json"})
  8. @error_log = StringIO.new
  9. @server = MQTT::FakeServer.new(1234, '127.0.0.1')
  10. @server.just_one = true
  11. @server.logger = Logger.new(@error_log)
  12. @server.logger.level = Logger::DEBUG
  13. @server.start
  14. @valid_params = {
  15. 'uri' => "mqtt://#{@server.address}:#{@server.port}",
  16. 'topic' => '/#',
  17. 'max_read_time' => 1,
  18. 'expected_update_period_in_days' => "2"
  19. }
  20. @checker = Agents::MqttAgent.new(
  21. :name => "somename",
  22. :options => @valid_params,
  23. :schedule => "midnight",
  24. )
  25. @checker.user = users(:jane)
  26. @checker.save!
  27. end
  28. after :each do
  29. @server.stop
  30. end
  31. describe "#check" do
  32. it "should check that initial run creates an event" do
  33. expect { @checker.check }.to change { Event.count }.by(2)
  34. end
  35. end
  36. describe "#working?" do
  37. it "checks if its generating events as scheduled" do
  38. @checker.should_not be_working
  39. @checker.check
  40. @checker.reload.should be_working
  41. three_days_from_now = 3.days.from_now
  42. stub(Time).now { three_days_from_now }
  43. @checker.should_not be_working
  44. end
  45. end
  46. end