boxcar_agent_spec.rb 1.9KB

    require 'rails_helper' describe Agents::BoxcarAgent do before(:each) do @valid_params = { 'user_credentials' => 'access_token', 'title' => 'Sample Title', 'body' => 'Sample Body' } @checker = Agents::BoxcarAgent.new(:name => "boxcartest", :options => @valid_params) @checker.user = users(:bob) @checker.save! @event = Event.new @event.agent = agents(:bob_weather_agent) @event.payload = { :body => 'Sample message' } @event.save! end describe 'validating' do before do expect(@checker).to be_valid end it "should require access token" do @checker.options['user_credentials'] = nil expect(@checker).not_to be_valid end end describe '#working?' do it "should not be working until the first event was received" do expect(@checker).not_to be_working @checker.last_receive_at = Time.now expect(@checker).to be_working end end describe "#receive" do it "sends a message" do stub(HTTParty).post { {"id" => 1, "message" => "blah", "title" => "blah","source_name" => "Custom Notification"} } @checker.receive([@event]) end it "should raise error when invalid response arrives" do stub(HTTParty).post { {"blah" => "blah"} } expect { @checker.send_notification({}) }.to raise_error(StandardError, /Invalid response from Boxcar:/) end it "should raise error when response says unauthorized" do stub(HTTParty).post { {"Response" => "Not authorized"} } expect { @checker.send_notification({}) }.to raise_error(StandardError, /Not authorized/) end it "should raise error when response has an error" do stub(HTTParty).post { {"error" => {"message" => "Sample error"}} } expect { @checker.send_notification({}) }.to raise_error(StandardError, /Sample error/) end end end