Browse Source

Add initial specs

Daniel O'Connor 10 years ago
parent
commit
b8604777b6
2 changed files with 59 additions and 0 deletions
  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 @@
+require 'spec_helper'
+require 'mqtt'
+require './spec/support/fake_mqtt_server'
+
+require 'pry'
+
+describe Agents::MqttAgent do
+	before :each do
+    # 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"})
+    # 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"})
+    @error_log = StringIO.new
+    @server = MQTT::FakeServer.new(1234, '127.0.0.1')
+    @server.just_one = true
+    @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' => 1
+    }
+
+		@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 check that initial run creates an event" do
+      expect { @checker.check }.to change { Event.count }.by(2)
+		end
+	end
+
+	describe "#working?" do
+		it "checks if its generating events as scheduled" do
+			@checker.should_not be_working
+			@checker.check
+			@checker.reload.should be_working
+			three_days_from_now = 3.days.from_now
+			stub(Time).now { three_days_from_now }
+			@checker.should_not be_working
+		end
+	end
+end

+ 6 - 0
spec/support/fake_mqtt_server.rb

@@ -108,6 +108,12 @@ class MQTT::FakeServer
             :payload => "hello #{topic}",
             :retain => true
           )
+          client.write MQTT::Packet::Publish.new(
+            :topic => topic,
+            :payload => "did you know about #{topic}",
+            :retain => true
+          )
+
         when MQTT::Packet::Pingreq
           client.write MQTT::Packet::Pingresp.new
           @pings_received += 1