diff options
Diffstat (limited to 'tests/addressbook/test_init.py')
-rw-r--r-- | tests/addressbook/test_init.py | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/tests/addressbook/test_init.py b/tests/addressbook/test_init.py new file mode 100644 index 00000000..d8f96af2 --- /dev/null +++ b/tests/addressbook/test_init.py @@ -0,0 +1,74 @@ +# Copyright (C) 2017 Lucas Hoffmann +# This file is released under the GNU GPL, version 3 or a later revision. +# For further details see the COPYING file +import unittest + +from alot import addressbook + + +class _AddressBook(addressbook.AddressBook): + + """Implements stubs for ABC methods. The return value for get_contacts can + be set on instance creation.""" + + def __init__(self, contacts, **kwargs): + self._contacts = contacts + super(_AddressBook, self).__init__(**kwargs) + + def get_contacts(self): + return self._contacts + + +class TestAddressBook(unittest.TestCase): + + def test_lookup_will_match_names(self): + contacts = [('foo', 'x@example.com'), ('bar', 'y@example.com'), + ('baz', 'z@example.com')] + abook = _AddressBook(contacts) + actual = abook.lookup('bar') + expected = [contacts[1]] + self.assertListEqual(actual, expected) + + def test_lookup_will_match_emails(self): + contacts = [('foo', 'x@example.com'), ('bar', 'y@example.com'), + ('baz', 'z@example.com')] + abook = _AddressBook(contacts) + actual = abook.lookup('y@example.com') + expected = [contacts[1]] + self.assertListEqual(actual, expected) + + def test_lookup_ignores_case_by_default(self): + contacts = [('name', 'email@example.com'), + ('Name', 'other@example.com'), + ('someone', 'someone@example.com')] + abook = _AddressBook(contacts) + actual = abook.lookup('name') + expected = [contacts[0], contacts[1]] + self.assertListEqual(actual, expected) + + def test_lookup_can_match_case(self): + contacts = [('name', 'email@example.com'), + ('Name', 'other@example.com'), + ('someone', 'someone@example.com')] + abook = _AddressBook(contacts, ignorecase=False) + actual = abook.lookup('name') + expected = [contacts[0]] + self.assertListEqual(actual, expected) + + def test_lookup_will_match_partial_in_the_middle(self): + contacts = [('name', 'email@example.com'), + ('My Own Name', 'other@example.com'), + ('someone', 'someone@example.com')] + abook = _AddressBook(contacts) + actual = abook.lookup('Own') + expected = [contacts[1]] + self.assertListEqual(actual, expected) + + def test_lookup_can_handle_special_regex_chars(self): + contacts = [('name [work]', 'email@example.com'), + ('My Own Name', 'other@example.com'), + ('someone', 'someone@example.com')] + abook = _AddressBook(contacts) + actual = abook.lookup('[wor') + expected = [contacts[0]] + self.assertListEqual(actual, expected) |