post_agent_spec.rb 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. require 'spec_helper'
  2. describe Agents::PostAgent do
  3. before do
  4. @valid_params = {
  5. :name => "somename",
  6. :options => {
  7. :post_url => "http://www.example.com",
  8. :expected_receive_period_in_days => 1
  9. }
  10. }
  11. @checker = Agents::PostAgent.new(@valid_params)
  12. @checker.user = users(:jane)
  13. @checker.save!
  14. @event = Event.new
  15. @event.agent = agents(:jane_weather_agent)
  16. @event.payload = {
  17. :somekey => "somevalue",
  18. :someotherkey => {
  19. :somekey => "value"
  20. }
  21. }
  22. @sent_messages = []
  23. stub.any_instance_of(Agents::PostAgent).post_event { |uri,event| @sent_messages << event}
  24. end
  25. describe "#receive" do
  26. it "checks if it can handle multiple events" do
  27. event1 = Event.new
  28. event1.agent = agents(:bob_weather_agent)
  29. event1.payload = {
  30. :xyz => "value1",
  31. :message => "value2"
  32. }
  33. lambda {
  34. @checker.receive([@event,event1])
  35. }.should change { @sent_messages.length }.by(2)
  36. end
  37. end
  38. describe "#working?" do
  39. it "checks if events have been received within expected receive period" do
  40. @checker.should_not be_working
  41. Agents::PostAgent.async_receive @checker.id, [@event.id]
  42. @checker.reload.should be_working
  43. two_days_from_now = 2.days.from_now
  44. stub(Time).now { two_days_from_now }
  45. @checker.reload.should_not be_working
  46. end
  47. end
  48. describe "validation" do
  49. before do
  50. @checker.should be_valid
  51. end
  52. it "should validate presence of post_url" do
  53. @checker.options[:post_url] = ""
  54. @checker.should_not be_valid
  55. end
  56. it "should validate presence of expected_receive_period_in_days" do
  57. @checker.options[:expected_receive_period_in_days] = ""
  58. @checker.should_not be_valid
  59. end
  60. end
  61. end