test/unit/plugin_test.rb in robut-0.3.0 vs test/unit/plugin_test.rb in robut-0.4.0

- old
+ new

@@ -2,16 +2,61 @@ class Robut::PluginTest < Test::Unit::TestCase class HandrolledStubPlugin include Robut::Plugin + + match /^message sent to robut with anchor (\w+)/, :sent_to_me => true do |word| + reply word + end + + match /^another message sent to robut with anchor (\w+)/, :sent_to_me => true do |word| + reply word + end + + desc "stop matcher - stop matching messages" + match /stop matcher/ do + true + end + + match /stop matcher b/ do + reply "fail." + end end def setup - @plugin = HandrolledStubPlugin.new(Robut::ConnectionMock.new) + @plugin = HandrolledStubPlugin.new( + Robut::PresenceMock.new( + Robut::ConnectionMock + ) + ) end + def test_sent_to_me_match + @plugin.handle(Time.now, "@john", "@robut message sent to robut with anchor pass") + assert_equal ["pass"], @plugin.reply_to.replies + end + + def test_match_other_message_sent_to_me + @plugin.handle(Time.now, "@john", "@robut another message sent to robut with anchor pass") + assert_equal ["pass"], @plugin.reply_to.replies + end + + def test_no_match_if_not_sent_to_me + @plugin.handle(Time.now, "@john", "message sent to robut with anchor pass") + assert_equal [], @plugin.reply_to.replies + end + + def test_returning_true_stops_matching + @plugin.handle(Time.now, "@john", "stop matcher b") + assert_equal [], @plugin.reply_to.replies + end + + def test_set_description + assert_equal ["stop matcher - stop matching messages"], @plugin.usage + end + def test_sent_to_me? assert @plugin.sent_to_me?("@Robut hello there") assert !@plugin.sent_to_me?("@Robuto hello there") assert !@plugin.sent_to_me?("@David hello there") assert @plugin.sent_to_me?("this is a @Robut message") @@ -23,8 +68,24 @@ assert_equal "do this", @plugin.without_nick("@robut do this") end def test_without_nick_do_this_robut assert_equal "do this @robut", @plugin.without_nick("do this @robut") + end + + def test_sent_to_me_without_mention_configuration_option + setup_connection_without_mention_name + assert @plugin.sent_to_me?("@RobutTRobot hello there"), "sent_to_me? should match the standard HipChat mention format" + assert !@plugin.sent_to_me?("@Robut hello there"), "sent_to_me? should not match @robut if we don't have a mention name set" + end + + private + + def setup_connection_without_mention_name + @plugin = HandrolledStubPlugin.new( + Robut::PresenceMock.new( + Robut::ConnectionMock.new(OpenStruct.new(:nick => 'Robut t. Robot')) + ) + ) end end