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
|
# 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)
|