require 'spec_helper' describe Agents::TranslationAgent do before do @valid_params = { :name => "somename", :options => { :client_id => "xxxxxx", :client_secret => "xxxxxx" , :to => "fi", :expected_receive_period_in_days => 1, :content => { :text => "{{message}}", :content => "{{xyz}}" } } } @checker = Agents::TranslationAgent.new(@valid_params) @checker.user = users(:jane) @checker.save! @event = Event.new @event.agent = agents(:jane_weather_agent) @event.payload = { :message => "somevalue", :xyz => "someothervalue" } stub_request(:any, /microsoft/).to_return(:body => "response", :status => 200) stub_request(:any, /windows/).to_return(:body => JSON.dump({ :access_token => 'xxx'}), :status => 200) end describe "#receive" do it "checks if it can handle multiple events" do event1 = Event.new event1.agent = agents(:bob_weather_agent) event1.payload = { :xyz => "value1", :message => "value2" } expect { @checker.receive([@event,event1]) }.to change { Event.count }.by(2) end end describe "#working?" do it "checks if events have been received within expected receive period" do expect(@checker).not_to be_working Agents::TranslationAgent.async_receive @checker.id, [@event.id] expect(@checker.reload).to be_working two_days_from_now = 2.days.from_now stub(Time).now { two_days_from_now } expect(@checker.reload).not_to be_working end end describe "validation" do before do expect(@checker).to be_valid end it "should validate presence of content key" do @checker.options[:content] = nil expect(@checker).not_to be_valid end it "should validate presence of expected_receive_period_in_days key" do @checker.options[:expected_receive_period_in_days] = nil expect(@checker).not_to be_valid end it "should validate presence of client_id key" do @checker.options[:client_id] = "" expect(@checker).not_to be_valid end it "should validate presence of client_secret key" do @checker.options[:client_secret] = "" expect(@checker).not_to be_valid end it "should validate presence of 'to' key" do @checker.options[:to] = "" expect(@checker).not_to be_valid end end end