Няма описание http://j1x-huginn.herokuapp.com

digest_agent_spec.rb 2.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. require "rails_helper"
  2. describe Agents::DigestAgent do
  3. before do
  4. @checker = Agents::DigestAgent.new(:name => "something", :options => { :expected_receive_period_in_days => "2", :message => "{{ events | map:'data' | join:';' }}" })
  5. @checker.user = users(:bob)
  6. @checker.save!
  7. end
  8. describe "#working?" do
  9. it "checks to see if the Agent has received any events in the last 'expected_receive_period_in_days' days" do
  10. event = Event.new
  11. event.agent = agents(:bob_rain_notifier_agent)
  12. event.payload = { :data => "event" }
  13. event.save!
  14. expect(@checker).not_to be_working # no events have ever been received
  15. Agents::DigestAgent.async_receive(@checker.id, [event.id])
  16. expect(@checker.reload).to be_working # Events received
  17. three_days_from_now = 3.days.from_now
  18. stub(Time).now { three_days_from_now }
  19. expect(@checker.reload).not_to be_working # too much time has passed
  20. end
  21. end
  22. describe "#receive" do
  23. it "queues any payloads it receives" do
  24. event1 = Event.new
  25. event1.agent = agents(:bob_rain_notifier_agent)
  26. event1.payload = { :data => "event1" }
  27. event1.save!
  28. event2 = Event.new
  29. event2.agent = agents(:bob_weather_agent)
  30. event2.payload = { :data => "event2" }
  31. event2.save!
  32. Agents::DigestAgent.async_receive(@checker.id, [event1.id, event2.id])
  33. expect(@checker.reload.memory[:queue]).to eq([event1.id, event2.id])
  34. end
  35. end
  36. describe "#check" do
  37. it "should emit a event" do
  38. expect { Agents::DigestAgent.async_check(@checker.id) }.not_to change { Event.count }
  39. event1 = Event.new
  40. event1.agent = agents(:bob_rain_notifier_agent)
  41. event1.payload = { :data => "event" }
  42. event1.save!
  43. event2 = Event.new
  44. event2.agent = agents(:bob_weather_agent)
  45. event2.payload = { :data => "event" }
  46. event2.save!
  47. Agents::DigestAgent.async_receive(@checker.id, [event1.id, event2.id])
  48. @checker.sources << agents(:bob_rain_notifier_agent) << agents(:bob_weather_agent)
  49. @checker.save!
  50. expect { Agents::DigestAgent.async_check(@checker.id) }.to change { Event.count }.by(1)
  51. @checker.reload
  52. expect(@checker.most_recent_event.payload["events"]).to eq([event1.payload, event2.payload])
  53. expect(@checker.most_recent_event.payload["message"]).to eq("event;event")
  54. expect(@checker.memory[:queue]).to be_empty
  55. end
  56. end
  57. end