diff --git a/cardinal/test_util.py b/cardinal/test_util.py index 4f81bf3..c494508 100644 --- a/cardinal/test_util.py +++ b/cardinal/test_util.py @@ -7,6 +7,33 @@ from cardinal import util +@pytest.mark.parametrize('message,expected', ( + ('\x01ACTION tests\x01', True), + ('\x01ACTION tests', True), + ('\x01ACTION', True), + ('ACTION tests', False), +)) +def test_is_action(message, expected): + assert util.is_action(message) == expected + + +@pytest.mark.parametrize('nick,message,expected', ( + ('Cardinal', '\x01ACTION tests\x01', '* Cardinal tests'), + ('Cardinal', '\x01ACTION tests', '* Cardinal tests'), + ('Cardinal', '\x01ACTION \x01', '* Cardinal'), + ('Cardinal', '\x01ACTION ', '* Cardinal'), + ('Cardinal', '\x01ACTION\x01', '* Cardinal'), + ('Cardinal', '\x01ACTION', '* Cardinal'), +)) +def test_parse_action(nick, message, expected): + assert util.parse_action(nick, message) == expected + + +def test_parse_action_raises(): + with pytest.raises(ValueError): + util.parse_action('Cardinal', 'this is not an action!') + + @pytest.mark.parametrize("input_,expected", ( ('\x02bold\x02', 'bold'), ('\x0309colored\x03', 'colored'), diff --git a/cardinal/util.py b/cardinal/util.py index 612ca45..c2ac8cf 100644 --- a/cardinal/util.py +++ b/cardinal/util.py @@ -19,12 +19,12 @@ def parse_action(nick, message): raise ValueError("This message is not an ACTION message") message = message[len("\x01ACTION "):] - if message[-1] == "\x01": + if message and message[-1] == "\x01": message = message[:-1] - return "* {} {}".format( + return "* {}{}".format( nick, - message, + " " + message if message else "", ) @@ -111,5 +111,6 @@ def light_grey(text): reset = "\x03" + # alias as this will be used commonly F = formatting