|
require 'spec_helper'
describe Agents::TwilioAgent do
before do
@checker = Agents::TwilioAgent.new(:name => "somename", :options => {:account_sid => "x",:auth_token => "x",:sender_cell => "x", :receiver_cell => "x", :expected_receive_period_in_days => "1"})
@checker.user = users(:bob)
@checker.save!
@event = Event.new
@event.agent = agents(:bob_weather_agent)
@event.payload = {:message => "Gonna rain.."}
@event.save!
stub.any_instance_of(Agents::TwilioAgent).send_message {}
end
describe "#receive" do
it "should queue any payload it receives" do
event1 = Event.new
event1.agent = agents(:bob_rain_notifier_agent)
event1.payload = "Some payload"
event1.save!
event2 = Event.new
event2.agent = agents(:bob_weather_agent)
event2.payload = "More payload"
event2.save!
Agents::TwilioAgent.async_receive(@checker.id, [event1.id,event2.id])
@checker.reload.memory[:queue].should == ["Some payload", "More payload"]
end
end
describe "#working?" do
it "checks if events have been received within expected receive period" do
@checker.should_not be_working # No events received
Agents::TwilioAgent.async_receive @checker.id, [@event.id]
@checker.reload.should be_working # Just received events
two_days_from_now = 2.days.from_now
stub(Time).now { two_days_from_now }
@checker.reload.should_not be_working # More time have passed than expected receive period without sign of any new event
end
end
describe "#check" do
before do
Agents::TwilioAgent.async_receive @checker.id, [@event.id]
end
it "should send text message and Memory should be empty after that" do
@checker.reload.memory[:queue].should == [{:message => "Gonna rain.."}]
Agents::TwilioAgent.async_check(@checker.id)
@checker.reload.memory[:queue].should == []
end
end
end
|