@@ -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 |