12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- require 'rails_helper'
- describe Agents::SentimentAgent do
- before do
- @valid_params = {
- :name => "somename",
- :options => {
- :content => "$.message",
- :expected_receive_period_in_days => 1
- }
- }
- @checker = Agents::SentimentAgent.new(@valid_params)
- @checker.user = users(:jane)
- @checker.save!
- @event = Event.new
- @event.agent = agents(:jane_weather_agent)
- @event.payload = {
- :message => "value1"
- }
- @event.save!
- end
- describe "#working?" do
- it "checks if events have been received within expected receive period" do
- expect(@checker).not_to be_working
- Agents::SentimentAgent.async_receive @checker.id, [@event.id]
- expect(@checker.reload).to be_working
- two_days_from_now = 2.days.from_now
- allow(Time).to receive(: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
- end
- describe "#receive" do
- it "checks if content key is working fine" do
- @checker.receive([@event])
- expect(Event.last.payload[:content]).to eq("value1")
- expect(Event.last.payload[:original_event]).to eq({ 'message' => "value1" })
- end
- it "should handle multiple events" do
- event1 = Event.new
- event1.agent = agents(:bob_weather_agent)
- event1.payload = {
- :message => "The quick brown fox jumps over the lazy dog"
- }
- event2 = Event.new
- event2.agent = agents(:jane_weather_agent)
- event2.payload = {
- :message => "The quick brown fox jumps over the lazy dog"
- }
- expect {
- @checker.receive([@event,event1,event2])
- }.to change { Event.count }.by(3)
- end
- end
- end
|