]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/commitdiff
plugin(note): test cases added, closes #24
authorMatthias Hecker <mail@apoc.cc>
Tue, 7 Apr 2020 17:57:49 +0000 (19:57 +0200)
committerMatthias Hecker <mail@apoc.cc>
Tue, 7 Apr 2020 17:57:49 +0000 (19:57 +0200)
test/mock.rb
test/plugins/test_note.rb [new file with mode: 0644]

index 511daaba414c5cba844e34fe484791baa50da957..ba6326dbf3930feff354c4b38af3e36f1566083e 100644 (file)
@@ -1,7 +1,7 @@
 $:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
 $:.unshift File.join(File.dirname(__FILE__), '..')
-#require 'rbot/logger'
-#Irc::Bot::LoggerManager.instance.set_level(5)
+require 'rbot/logger'
+Irc::Bot::LoggerManager.instance.set_level(5)
 
 module Irc
 class Bot
@@ -14,11 +14,18 @@ end
 
 
 class MockBot
-  attr_reader :filters, :lang
+  attr_reader :filters, :lang, :messages
+  attr_accessor :config
 
   def initialize
     @filters = {}
+    @config = {}
     @lang = Irc::Bot::Language.new(self, 'english')
+    @messages = []
+  end
+
+  def say(target, message)
+    @messages << [target, message]
   end
 
   def register_filter(name, &block)
@@ -51,11 +58,13 @@ class MockMessage
   attr_reader :message
   attr_reader :replies
   attr_reader :channel
+  attr_reader :replyto
   attr_reader :sourcenick
 
   def initialize(message='', source='user')
     @message = message
     @sourcenick = source
+    @replyto = source
     @channel = Irc::Channel.new('#test', '', ['bob'], server: nil)
     @replies = []
   end
@@ -64,9 +73,17 @@ class MockMessage
     @replies << message
   end
 
+  def okay
+    reply 'okay'
+  end
+
   def public?
     true
   end
+
+  def private?
+    false
+  end
 end
 
 
diff --git a/test/plugins/test_note.rb b/test/plugins/test_note.rb
new file mode 100644 (file)
index 0000000..b832096
--- /dev/null
@@ -0,0 +1,40 @@
+$:.unshift File.join(File.dirname(__FILE__), '..', '..', 'lib')
+$:.unshift File.join(File.dirname(__FILE__), '..', '..')
+
+require 'test/unit'
+require 'test/mock'
+
+require 'rbot/ircbot'
+require 'rbot/registry'
+require 'rbot/plugins'
+
+
+class NotePluginTest < Test::Unit::TestCase
+  def setup
+    @bot = MockBot.new
+    @bot.config['note.private_message'] = false
+    manager = Irc::Bot::Plugins.manager
+    manager.bot_associate(@bot)
+    manager.load_botmodule_file('./data/rbot/plugins/note.rb')
+    @plugin = manager.get_plugin('note')
+  end
+
+  def test_note
+    assert_not_nil(@plugin)
+    assert_equal(@plugin.help(nil), 'note <nick> <string> => stores a note (<string>) for <nick>')
+
+
+    m = MockMessage.new
+    @plugin.note(m, {nick: 'AlIcE', string: 'Hello Alice!'})
+    assert_equal(1, m.replies.size)
+    assert_equal('okay', m.replies.first)
+
+    m = MockMessage.new('', 'Alice')
+    @plugin.message(m)
+    assert_equal(1, @bot.messages.size)
+    to, message = @bot.messages.first
+    assert_equal('Alice', to)
+    assert_match(/you have notes!/, message)
+    assert_match(/<user> Hello Alice!/, message)
+  end
+end