Add initial specs

Daniel O'Connor vor 10 Jahren
Ursprung
Commit
b8604777b6
2 geänderte Dateien mit 59 neuen Zeilen und 0 gelöschten Zeilen
  1. 53 0
      spec/models/agents/mqtt_agent_spec.rb
  2. 6 0
      spec/support/fake_mqtt_server.rb

+ 53 - 0
spec/models/agents/mqtt_agent_spec.rb

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

+ 6 - 0
spec/support/fake_mqtt_server.rb

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