summaryrefslogtreecommitdiff
path: root/test/plugins/test_points.rb
blob: 83018e2eb65131c02bafe17099ce2f493b573040 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
$:.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'
require 'rbot/language'

class PointsPluginTest < Test::Unit::TestCase
  def setup
    manager = Irc::Bot::Plugins.manager
    manager.bot_associate(MockBot.new)
    manager.load_botmodule_file('./data/rbot/plugins/points.rb')
    @plugin = manager.get_plugin('points')
  end

  def test_points
    assert_not_nil(@plugin)
    assert_not_empty(@plugin.help(nil))

    m = MockMessage.new('', 'user')
    @plugin.points(m, key: 'linux')
    assert_equal('linux has zero points', m.replies.first)

    m = MockMessage.new('linux++', 'user')
    @plugin.message(m)
    assert_equal('linux now has 1 points!', m.replies.first)

    m = MockMessage.new('linux++', 'user')
    @plugin.message(m)
    assert_equal('linux now has 2 points!', m.replies.first)

    m = MockMessage.new('linux++', 'linux')
    @plugin.message(m)
    assert_empty(m.replies)

    m = MockMessage.new('', 'user')
    @plugin.points(m, key: 'linux')
    assert_equal('points for linux: 2', m.replies.first)

    m = MockMessage.new('', 'linux')
    @plugin.points(m, {})
    assert_equal('points for linux: 2', m.replies.first)

    m = MockMessage.new('alice++', 'user')
    @plugin.message(m)
    assert_equal('alice now has 1 points!', m.replies.first)

    ignored = [
      '++alice',
      '--alice',
      'something something --github',
      'ls --sort time',
      '-- foo',
      '++ foo',
    ]
    ignored.each do |ignore|
      m = MockMessage.new(ignore, 'user')
      @plugin.message(m)
      assert_empty(m.replies, "message should've been ignored: #{ignore.inspect}")
    end

    m = MockMessage.new('bob++', 'user')
    @plugin.message(m)
    assert_equal('bob now has 1 points!', m.replies.first)

    m = MockMessage.new('bot++', 'user')
    @plugin.message(m)
    assert_include(MockBot.new.lang.strings['thanks'], m.replies.first)
  end
end