]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/blob - test/plugins/test_points.rb
plugin(points): +/- must come after, closes #34
[user/henk/code/ruby/rbot.git] / test / plugins / test_points.rb
1 $:.unshift File.join(File.dirname(__FILE__), '..', '..', 'lib')
2 $:.unshift File.join(File.dirname(__FILE__), '..', '..')
3
4 require 'test/unit'
5 require 'test/mock'
6
7 require 'rbot/ircbot'
8 require 'rbot/registry'
9 require 'rbot/plugins'
10 require 'rbot/language'
11
12 class PointsPluginTest < Test::Unit::TestCase
13   def setup
14     manager = Irc::Bot::Plugins.manager
15     manager.bot_associate(MockBot.new)
16     manager.load_botmodule_file('./data/rbot/plugins/points.rb')
17     @plugin = manager.get_plugin('points')
18   end
19
20   def test_points
21     assert_not_nil(@plugin)
22     assert_not_empty(@plugin.help(nil))
23
24     m = MockMessage.new('', 'user')
25     @plugin.points(m, key: 'linux')
26     assert_equal('linux has zero points', m.replies.first)
27
28     m = MockMessage.new('linux++', 'user')
29     @plugin.message(m)
30     assert_equal('linux now has 1 points!', m.replies.first)
31
32     m = MockMessage.new('linux++', 'user')
33     @plugin.message(m)
34     assert_equal('linux now has 2 points!', m.replies.first)
35
36     m = MockMessage.new('linux++', 'linux')
37     @plugin.message(m)
38     assert_empty(m.replies)
39
40     m = MockMessage.new('', 'user')
41     @plugin.points(m, key: 'linux')
42     assert_equal('points for linux: 2', m.replies.first)
43
44     m = MockMessage.new('', 'linux')
45     @plugin.points(m, {})
46     assert_equal('points for linux: 2', m.replies.first)
47
48     m = MockMessage.new('alice++', 'user')
49     @plugin.message(m)
50     assert_equal('alice now has 1 points!', m.replies.first)
51
52     ignored = [
53       '++alice',
54       '--alice',
55       'something something --github',
56       'ls --sort time',
57       '-- foo',
58       '++ foo',
59     ]
60     ignored.each do |ignore|
61       m = MockMessage.new(ignore, 'user')
62       @plugin.message(m)
63       assert_empty(m.replies, "message should've been ignored: #{ignore.inspect}")
64     end
65
66     m = MockMessage.new('bob++', 'user')
67     @plugin.message(m)
68     assert_equal('bob now has 1 points!', m.replies.first)
69
70     m = MockMessage.new('bot++', 'user')
71     @plugin.message(m)
72     assert_include(MockBot.new.lang.strings['thanks'], m.replies.first)
73   end
74 end