slack_agent_spec.rb 1.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. require 'spec_helper'
  2. require 'models/concerns/liquid_interpolatable'
  3. describe Agents::SlackAgent do
  4. it_behaves_like LiquidInterpolatable
  5. before(:each) do
  6. @valid_params = {
  7. 'auth_token' => 'token',
  8. 'team_name' => 'testteam',
  9. 'channel' => '#random',
  10. 'username' => "{{username}}",
  11. 'message' => "{{message}}"
  12. }
  13. @checker = Agents::SlackAgent.new(:name => "slacker", :options => @valid_params)
  14. @checker.user = users(:jane)
  15. @checker.save!
  16. @event = Event.new
  17. @event.agent = agents(:bob_weather_agent)
  18. @event.payload = { :channel => '#random', :message => 'Looks like its going to rain', username: "Huggin user"}
  19. @event.save!
  20. end
  21. describe "validating" do
  22. before do
  23. expect(@checker).to be_valid
  24. end
  25. it "should require a auth_token" do
  26. @checker.options['auth_token'] = nil
  27. expect(@checker).not_to be_valid
  28. end
  29. it "should require a channel" do
  30. @checker.options['channel'] = nil
  31. expect(@checker).not_to be_valid
  32. end
  33. it "should require a team_name" do
  34. @checker.options['team_name'] = 'nil'
  35. expect(@checker).to be_valid
  36. end
  37. end
  38. describe "#receive" do
  39. it "receive an event without errors" do
  40. any_instance_of(Slack::Notifier) do |obj|
  41. mock(obj).ping(@event.payload[:message],
  42. channel: @event.payload[:channel],
  43. username: @event.payload[:username]
  44. )
  45. end
  46. lambda { @checker.receive([@event]) }.should_not raise_error
  47. end
  48. end
  49. describe "#working?" do
  50. it "should call received_event_without_error?" do
  51. mock(@checker).received_event_without_error?
  52. @checker.working?
  53. end
  54. end
  55. end