예제 #1
0
    def test_get_group_members(self):
        book = AddressBook()
        family = Group('family')
        friends = Group('friends')
        work = Group('work')
        book.add_group(family)
        book.add_group(friends)
        book.add_group(work)

        book.add_person(Person('John', 'Doe', Address('New York'),
                               Email('*****@*****.**'),
                               PhoneNumber('88005553535'),
                               friends))
        book.add_person(Person('Jane', 'Doe', Address('Chicago'),
                               Email('*****@*****.**'),
                               PhoneNumber('2128506'),
                               [friends, work]))

        entries = book.get_group_members(work)
        self.assertEqual(len(entries), 1)

        entries = book.get_group_members(friends)
        self.assertEqual(len(entries), 2)
        self.assertEqual({entries[0].first_name, entries[1].first_name}, {'John', 'Jane'})

        entries = book.get_group_members(family)
        self.assertEqual(len(entries), 0)
예제 #2
0
class AddressBookTestCase(unittest.TestCase):
    def setUp(self):
        self.address_book = AddressBook()
        self.person1 = Person(first_name='p1fn',
                              last_name='p1ln',
                              emails=['p1em1@com', 'p1em2@com'])
        self.person2 = Person(first_name='p2fn',
                              last_name='p2ln',
                              emails=['p2em1@com', 'p2em2@com'])
        self.person3 = Person(first_name='p3fn',
                              last_name='p3ln',
                              emails=['p3em1@com', 'p3em2@com'])
        self.group1 = Group(name='Group1', persons=self.person1)
        self.group2 = Group(name='Group2',
                            persons=[self.person3, self.person1])

    def test_wrong_creation(self):
        with self.assertRaises(TypeError):
            test_group = Group()
        with self.assertRaises(TypeError):
            test_person = Person()

    def test_add_person(self):
        self.address_book.add_person(self.person1)
        self.assertTrue(id(self.person1) in self.address_book.persons)
        self.address_book.add_person(self.person2)
        self.assertTrue(id(self.person2) in self.address_book.persons)

    def test_add_group(self):
        self.address_book.add_group(self.group2)
        self.assertTrue(self.group2.name in self.address_book.groups)
        group_persons = copy(self.group2.persons)
        address_persons = copy(self.address_book.persons)
        self.assertTrue(set(group_persons).intersection(address_persons))

    def test_get_belongs_groups(self):
        groups_from_address = self.address_book.get_belongs_groups(
            self.person1)
        for group in groups_from_address:
            self.assertTrue(id(self.person1) in group.persons.keys())

    def test_get_persons_from_group(self):
        person_from_group = self.address_book.get_persons_from_group(
            self.group2)
        for person in person_from_group:
            self.assertTrue(id(person) in self.address_book.persons.keys())

    def test_find_person_by_name(self):
        persons = self.address_book.find_person_by_name('p1fn')
        for p in persons:
            self.assertEqual('p1fn', p.first_name)

    def test_find_person_by_email(self):
        persons1 = self.address_book.find_person_by_email('p1em1@com')
        for p1 in persons1:
            self.assertTrue(p1.check_email('p1em1@com'))
        persons2 = self.address_book.find_person_by_email('p1em1')
        for p2 in persons2:
            self.assertTrue(p2.check_email('p1em1@com'))
예제 #3
0
 def test_add_person(self):
     address_book = AddressBook()
     person = Person(
         'John',
         'Doe',
         ['Russian Federation, Kemerovo region, Kemerovo, Kirova street 23, apt. 42'],
         ['+79834772053'],
         ['*****@*****.**']
     )
     address_book.add_person(person)
     self.assertIn(person, address_book)
예제 #4
0
 def test_find_by_first_name(self):
     book = AddressBook()
     book.add_person(Person('John', 'Doe', Address('New York'),
                            Email('*****@*****.**'),
                            PhoneNumber('88005553535')))
     entries = book.find_by_name('John')
     self.assertEqual(len(entries), 1)
     entry = entries[0]
     self.assertEqual(entry.first_name, 'John')
     self.assertEqual(entry.last_name, 'Doe')
     self.assertEqual(entry.street_addresses[0].address, 'New York')
     self.assertEqual(entry.emails[0].email, '*****@*****.**')
     self.assertEqual(entry.phone_numbers[0].number, '88005553535')
     self.assertEqual(entry.groups, [])
예제 #5
0
    def test_find_by_last_name(self):
        book = AddressBook()
        book.add_person(Person('John', 'Doe', Address('New York'),
                               Email('*****@*****.**'),
                               PhoneNumber('88005553535')))
        book.add_person(Person('Jane', 'Doe', Address('Chicago'),
                               Email('*****@*****.**'),
                               PhoneNumber('2128506')))
        entries = book.find_by_name('Doe')
        self.assertEqual(len(entries), 2)
        self.assertEqual(entries[0].last_name, 'Doe')
        self.assertEqual(entries[1].last_name, 'Doe')

        self.assertEqual(len(book.find_by_name('Ivanov')), 0)
예제 #6
0
 def test_find_person_by_email(self):
     address_book = AddressBook()
     john_person = Person(
         'John',
         'Doe',
         ['Russian Federation, Kemerovo region, Kemerovo, Kirova street 23, apt. 42'],
         ['+79834772053'],
         ['*****@*****.**']
     )
     ivan_person = Person(
         'Ivan',
         'Sidorov',
         ['Russian Federation, Kemerovo region, Belovo, Kirova street 42, apt. 13'],
         ['+79834771122'],
         ['*****@*****.**']
     )
     address_book.add_person(john_person)
     address_book.add_person(ivan_person)
     found_person = address_book.find(email='*****@*****.**')
     self.assertEqual(found_person, ivan_person)
예제 #7
0
 def test_find_person_by_full_name(self):
     address_book = AddressBook()
     ivan_popov_person = Person(
         'Ivan',
         'Popov',
         ['Russian Federation, Kemerovo region, Kemerovo, Kirova street 23, apt. 42'],
         ['+79834772053'],
         ['*****@*****.**']
     )
     ivan_sidorov_person = Person(
         'Ivan',
         'Sidorov',
         ['Russian Federation, Kemerovo region, Belovo, Kirova street 42, apt. 13'],
         ['+79834771122'],
         ['*****@*****.**']
     )
     address_book.add_person(ivan_popov_person)
     address_book.add_person(ivan_sidorov_person)
     found_person = address_book.find(first_name='Ivan', last_name='Sidorov')
     self.assertEqual(found_person, ivan_sidorov_person)
예제 #8
0
 def test_find_person_by_set_of_emails_prefix(self):
     address_book = AddressBook()
     john_person = Person(
         'John',
         'Doe',
         ['Russian Federation, Kemerovo region, Kemerovo, Kirova street 23, apt. 42'],
         ['+79834772053'],
         ['*****@*****.**']
     )
     ivan_person = Person(
         'Ivan',
         'Sidorov',
         ['Russian Federation, Kemerovo region, Belovo, Kirova street 42, apt. 13'],
         ['+79834771122'],
         ['*****@*****.**']
     )
     address_book.add_person(john_person)
     address_book.add_person(ivan_person)
     found_person = address_book.find(emails=['*****@*****.**', '*****@*****.**'])
     self.assertIsNone(found_person)
     ivan_person.add_email('*****@*****.**')
     found_person = address_book.find(emails=['sn0', 'iv'])
     self.assertEqual(found_person, ivan_person)