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)
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'))
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)
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, [])
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)
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)
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)
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)