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
|
# encoding=utf-8
"""Test suite for alot.commands.__init__ module."""
import argparse
import unittest
from unittest import mock
from alot import commands
from alot.commands import thread
# Good descriptive test names often don't fit PEP8, which is meant to cover
# functions meant to be called by humans.
# pylint: disable=invalid-name
# These are tests, don't worry about names like "foo" and "bar"
# pylint: disable=blacklisted-name
class TestLookupCommand(unittest.TestCase):
def test_look_up_save_attachment_command_in_thread_mode(self):
cmd, parser, kwargs = commands.lookup_command('save', 'thread')
# TODO do some more tests with these return values
self.assertEqual(cmd, thread.SaveAttachmentCommand)
self.assertIsInstance(parser, argparse.ArgumentParser)
self.assertDictEqual(kwargs, {})
class TestCommandFactory(unittest.TestCase):
def test_create_save_attachment_command_with_arguments(self):
cmd = commands.commandfactory('save --all /foo', mode='thread')
self.assertIsInstance(cmd, thread.SaveAttachmentCommand)
self.assertTrue(cmd.all)
self.assertEqual(cmd.path, '/foo')
class TestRegisterCommand(unittest.TestCase):
"""Tests for the registerCommand class."""
def test_registered(self):
"""using registerCommand adds to the COMMANDS dict."""
with mock.patch('alot.commands.COMMANDS', {'foo': {}}):
@commands.registerCommand('foo', 'test')
def foo(): # pylint: disable=unused-variable
pass
self.assertIn('test', commands.COMMANDS['foo'])
|