211 lines
5.3 KiB
Python
211 lines
5.3 KiB
Python
|
# coding=utf-8
|
||
|
"""Tests for message formatting"""
|
||
|
from __future__ import unicode_literals, absolute_import, print_function, division
|
||
|
|
||
|
import pytest
|
||
|
|
||
|
from sopel.trigger import PreTrigger, Trigger
|
||
|
from sopel.test_tools import MockSopel, MockSopelWrapper
|
||
|
from sopel.tools import Identifier
|
||
|
from sopel import module
|
||
|
|
||
|
|
||
|
@pytest.fixture
|
||
|
def sopel():
|
||
|
bot = MockSopel('Sopel')
|
||
|
bot.config.core.owner = 'Bar'
|
||
|
return bot
|
||
|
|
||
|
|
||
|
@pytest.fixture
|
||
|
def bot(sopel, pretrigger):
|
||
|
bot = MockSopelWrapper(sopel, pretrigger)
|
||
|
bot.privileges = dict()
|
||
|
bot.privileges[Identifier('#Sopel')] = dict()
|
||
|
bot.privileges[Identifier('#Sopel')][Identifier('Foo')] = module.VOICE
|
||
|
return bot
|
||
|
|
||
|
|
||
|
@pytest.fixture
|
||
|
def pretrigger():
|
||
|
line = ':Foo!foo@example.com PRIVMSG #Sopel :Hello, world'
|
||
|
return PreTrigger(Identifier('Foo'), line)
|
||
|
|
||
|
|
||
|
@pytest.fixture
|
||
|
def pretrigger_pm():
|
||
|
line = ':Foo!foo@example.com PRIVMSG Sopel :Hello, world'
|
||
|
return PreTrigger(Identifier('Foo'), line)
|
||
|
|
||
|
|
||
|
@pytest.fixture
|
||
|
def trigger_owner(bot):
|
||
|
line = ':Bar!bar@example.com PRIVMSG #Sopel :Hello, world'
|
||
|
return Trigger(bot.config, PreTrigger(Identifier('Bar'), line), None)
|
||
|
|
||
|
|
||
|
@pytest.fixture
|
||
|
def trigger(bot, pretrigger):
|
||
|
return Trigger(bot.config, pretrigger, None)
|
||
|
|
||
|
|
||
|
@pytest.fixture
|
||
|
def trigger_pm(bot, pretrigger_pm):
|
||
|
return Trigger(bot.config, pretrigger_pm, None)
|
||
|
|
||
|
|
||
|
def test_unblockable():
|
||
|
@module.unblockable
|
||
|
def mock(bot, trigger, match):
|
||
|
return True
|
||
|
assert mock.unblockable is True
|
||
|
|
||
|
|
||
|
def test_interval():
|
||
|
@module.interval(5)
|
||
|
def mock(bot, trigger, match):
|
||
|
return True
|
||
|
assert mock.interval == [5]
|
||
|
|
||
|
|
||
|
def test_rule():
|
||
|
@module.rule('.*')
|
||
|
def mock(bot, trigger, match):
|
||
|
return True
|
||
|
assert mock.rule == ['.*']
|
||
|
|
||
|
|
||
|
def test_thread():
|
||
|
@module.thread(True)
|
||
|
def mock(bot, trigger, match):
|
||
|
return True
|
||
|
assert mock.thread is True
|
||
|
|
||
|
|
||
|
def test_commands():
|
||
|
@module.commands('sopel')
|
||
|
def mock(bot, trigger, match):
|
||
|
return True
|
||
|
assert mock.commands == ['sopel']
|
||
|
|
||
|
|
||
|
def test_nick_commands():
|
||
|
@module.nickname_commands('sopel')
|
||
|
def mock(bot, trigger, match):
|
||
|
return True
|
||
|
assert mock.rule == ["""
|
||
|
^
|
||
|
$nickname[:,]? # Nickname.
|
||
|
\s+(sopel) # Command as group 1.
|
||
|
(?:\s+ # Whitespace to end command.
|
||
|
( # Rest of the line as group 2.
|
||
|
(?:(\S+))? # Parameters 1-4 as groups 3-6.
|
||
|
(?:\s+(\S+))?
|
||
|
(?:\s+(\S+))?
|
||
|
(?:\s+(\S+))?
|
||
|
.* # Accept anything after the parameters. Leave it up to
|
||
|
# the module to parse the line.
|
||
|
))? # Group 1 must be None, if there are no parameters.
|
||
|
$ # EoL, so there are no partial matches.
|
||
|
"""]
|
||
|
|
||
|
|
||
|
def test_priority():
|
||
|
@module.priority('high')
|
||
|
def mock(bot, trigger, match):
|
||
|
return True
|
||
|
assert mock.priority == 'high'
|
||
|
|
||
|
|
||
|
def test_event():
|
||
|
@module.event('301')
|
||
|
def mock(bot, trigger, match):
|
||
|
return True
|
||
|
assert mock.event == ['301']
|
||
|
|
||
|
|
||
|
def test_intent():
|
||
|
@module.intent('ACTION')
|
||
|
def mock(bot, trigger, match):
|
||
|
return True
|
||
|
assert mock.intents == ['ACTION']
|
||
|
|
||
|
|
||
|
def test_rate():
|
||
|
@module.rate(5)
|
||
|
def mock(bot, trigger, match):
|
||
|
return True
|
||
|
assert mock.rate == 5
|
||
|
|
||
|
|
||
|
def test_require_privmsg(bot, trigger, trigger_pm):
|
||
|
@module.require_privmsg('Try again in a PM')
|
||
|
def mock(bot, trigger, match=None):
|
||
|
return True
|
||
|
assert mock(bot, trigger) is not True
|
||
|
assert mock(bot, trigger_pm) is True
|
||
|
|
||
|
@module.require_privmsg
|
||
|
def mock_(bot, trigger, match=None):
|
||
|
return True
|
||
|
assert mock_(bot, trigger) is not True
|
||
|
assert mock_(bot, trigger_pm) is True
|
||
|
|
||
|
|
||
|
def test_require_chanmsg(bot, trigger, trigger_pm):
|
||
|
@module.require_chanmsg('Try again in a channel')
|
||
|
def mock(bot, trigger, match=None):
|
||
|
return True
|
||
|
assert mock(bot, trigger) is True
|
||
|
assert mock(bot, trigger_pm) is not True
|
||
|
|
||
|
@module.require_chanmsg
|
||
|
def mock_(bot, trigger, match=None):
|
||
|
return True
|
||
|
assert mock(bot, trigger) is True
|
||
|
assert mock(bot, trigger_pm) is not True
|
||
|
|
||
|
|
||
|
def test_require_privilege(bot, trigger):
|
||
|
@module.require_privilege(module.VOICE)
|
||
|
def mock_v(bot, trigger, match=None):
|
||
|
return True
|
||
|
assert mock_v(bot, trigger) is True
|
||
|
|
||
|
@module.require_privilege(module.OP, 'You must be at least opped!')
|
||
|
def mock_o(bot, trigger, match=None):
|
||
|
return True
|
||
|
assert mock_o(bot, trigger) is not True
|
||
|
|
||
|
|
||
|
def test_require_admin(bot, trigger, trigger_owner):
|
||
|
@module.require_admin('You must be an admin')
|
||
|
def mock(bot, trigger, match=None):
|
||
|
return True
|
||
|
assert mock(bot, trigger) is not True
|
||
|
|
||
|
@module.require_admin
|
||
|
def mock_(bot, trigger, match=None):
|
||
|
return True
|
||
|
assert mock_(bot, trigger_owner) is True
|
||
|
|
||
|
|
||
|
def test_require_owner(bot, trigger, trigger_owner):
|
||
|
@module.require_owner('You must be an owner')
|
||
|
def mock(bot, trigger, match=None):
|
||
|
return True
|
||
|
assert mock(bot, trigger) is not True
|
||
|
|
||
|
@module.require_owner
|
||
|
def mock_(bot, trigger, match=None):
|
||
|
return True
|
||
|
assert mock_(bot, trigger_owner) is True
|
||
|
|
||
|
|
||
|
def test_example(bot, trigger):
|
||
|
@module.commands('mock')
|
||
|
@module.example('.mock', 'True')
|
||
|
def mock(bot, trigger, match=None):
|
||
|
return True
|
||
|
assert mock(bot, trigger) is True
|