@@ -0,0 +1,53 @@ |
||
| 1 |
+require 'spec_helper' |
|
| 2 |
+require 'mqtt' |
|
| 3 |
+require './spec/support/fake_mqtt_server' |
|
| 4 |
+ |
|
| 5 |
+require 'pry' |
|
| 6 |
+ |
|
| 7 |
+describe Agents::MqttAgent do |
|
| 8 |
+ before :each do |
|
| 9 |
+ # 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"})
|
|
| 10 |
+ # 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"})
|
|
| 11 |
+ @error_log = StringIO.new |
|
| 12 |
+ @server = MQTT::FakeServer.new(1234, '127.0.0.1') |
|
| 13 |
+ @server.just_one = true |
|
| 14 |
+ @server.logger = Logger.new(@error_log) |
|
| 15 |
+ @server.logger.level = Logger::DEBUG |
|
| 16 |
+ @server.start |
|
| 17 |
+ |
|
| 18 |
+ @valid_params = {
|
|
| 19 |
+ 'uri' => "mqtt://#{@server.address}:#{@server.port}",
|
|
| 20 |
+ 'topic' => '/#', |
|
| 21 |
+ 'max_read_time' => 1 |
|
| 22 |
+ } |
|
| 23 |
+ |
|
| 24 |
+ @checker = Agents::MqttAgent.new( |
|
| 25 |
+ :name => "somename", |
|
| 26 |
+ :options => @valid_params, |
|
| 27 |
+ :schedule => "midnight", |
|
| 28 |
+ ) |
|
| 29 |
+ @checker.user = users(:jane) |
|
| 30 |
+ @checker.save! |
|
| 31 |
+ end |
|
| 32 |
+ |
|
| 33 |
+ after :each do |
|
| 34 |
+ @server.stop |
|
| 35 |
+ end |
|
| 36 |
+ |
|
| 37 |
+ describe "#check" do |
|
| 38 |
+ it "should check that initial run creates an event" do |
|
| 39 |
+ expect { @checker.check }.to change { Event.count }.by(2)
|
|
| 40 |
+ end |
|
| 41 |
+ end |
|
| 42 |
+ |
|
| 43 |
+ describe "#working?" do |
|
| 44 |
+ it "checks if its generating events as scheduled" do |
|
| 45 |
+ @checker.should_not be_working |
|
| 46 |
+ @checker.check |
|
| 47 |
+ @checker.reload.should be_working |
|
| 48 |
+ three_days_from_now = 3.days.from_now |
|
| 49 |
+ stub(Time).now { three_days_from_now }
|
|
| 50 |
+ @checker.should_not be_working |
|
| 51 |
+ end |
|
| 52 |
+ end |
|
| 53 |
+end |
@@ -108,6 +108,12 @@ class MQTT::FakeServer |
||
| 108 | 108 |
:payload => "hello #{topic}",
|
| 109 | 109 |
:retain => true |
| 110 | 110 |
) |
| 111 |
+ client.write MQTT::Packet::Publish.new( |
|
| 112 |
+ :topic => topic, |
|
| 113 |
+ :payload => "did you know about #{topic}",
|
|
| 114 |
+ :retain => true |
|
| 115 |
+ ) |
|
| 116 |
+ |
|
| 111 | 117 |
when MQTT::Packet::Pingreq |
| 112 | 118 |
client.write MQTT::Packet::Pingresp.new |
| 113 | 119 |
@pings_received += 1 |