def test_merge_contacts_into_ack_info(self): """Ensure merging contact list into ack info works.""" from sosbeacon.event.student_marker import StudentMarker from sosbeacon.event.student_marker import _build_contact_map contacts = _build_contact_map([{ 'name': 'Sam Smith', 'methods': [{ 'value': '123432' }, { 'value': '*****@*****.**' }] }, { 'name': 'Josh Jones', 'methods': [{ 'value': '443241' }, { 'value': '*****@*****.**' }] }, { 'name': 'Betty Boop', 'methods': [{ 'value': '321133' }, { 'value': '*****@*****.**' }] }]) acked_contact = _build_contact_map([{ 'name': 'Sam Smith', 'methods': [{ 'value': '123432' }, { 'value': '*****@*****.**' }], 'acked': True, 'acked_at': 1234231, 'sent': 232311, }]) left = StudentMarker(contacts=copy.deepcopy(acked_contact)) right = StudentMarker(contacts=copy.deepcopy(contacts)) left.merge(right) contacts.update(acked_contact) self.assertEqual(contacts, left.contacts) self.assertEqual(True, left.acknowledged) self.assertEqual(1234231, left.acknowledged_at)
def test_merge_overlapping_contacts(self): """Ensure merging overlapping contacts.""" from sosbeacon.event.student_marker import StudentMarker from sosbeacon.event.student_marker import _build_contact_map contacts = _build_contact_map([ { 'name': 'Sam Smith', 'methods': [{'value': '123432'}, {'value': '*****@*****.**'}] }, { 'name': 'Josh Jones', 'methods': [{'value': '443241'}, {'value': '*****@*****.**'}] }, { 'name': 'Betty Boop', 'methods': [{'value': '321133'}, {'value': '*****@*****.**'}] } ]) left = StudentMarker(contacts=copy.deepcopy(contacts)) right = StudentMarker(contacts=copy.deepcopy(contacts)) left.merge(right) for contact in contacts.values(): contact['acked'] = None contact['acked_at'] = None contact['sent'] = None self.assertEqual(contacts, left.contacts)
def test_merge_no_contacts_with_contacts(self): """Ensure merging no contacts with contacts.""" from sosbeacon.event.student_marker import StudentMarker from sosbeacon.event.student_marker import _build_contact_map contacts = _build_contact_map([ { 'name': 'Sam Smith', 'methods': [{'value': '123432'}, {'value': '*****@*****.**'}], 'acked': True }, { 'name': 'Josh Jones', 'methods': [{'value': '443241'}, {'value': '*****@*****.**'}], 'acked_at': 123432 }, { 'name': 'Betty Boop', 'methods': [{'value': '321133'}, {'value': '*****@*****.**'}], 'sent': 23423 } ]) left = StudentMarker() right = StudentMarker(contacts=copy.deepcopy(contacts)) left.merge(right) self.assertEqual(contacts, left.contacts)
def test_duplicate_contacts(self): """Ensure building map from list with duplicate contacts works.""" import copy from sosbeacon.event.student_marker import _hash_contact from sosbeacon.event.student_marker import _build_contact_map contacts = [{ 'name': 'joe', 'methods': [{ 'value': 123 }] }, { 'name': 'joe', 'methods': [{ 'value': 123 }] }] contact_map = _build_contact_map(copy.deepcopy(contacts)) good_map = { _hash_contact(contacts[0]): contacts[0], } self.assertEqual(good_map, contact_map)
def test_contacts_with_no_contacts(self): """Ensure merging contacts with no contacts.""" from sosbeacon.event.student_marker import StudentMarker from sosbeacon.event.student_marker import _build_contact_map contacts = _build_contact_map([{ 'name': 'Sam Smith', 'methods': [{ 'value': '123432' }, { 'value': '*****@*****.**' }] }, { 'name': 'Josh Jones', 'methods': [{ 'value': '443241' }, { 'value': '*****@*****.**' }] }, { 'name': 'Betty Boop', 'methods': [{ 'value': '321133' }, { 'value': '*****@*****.**' }] }]) left = StudentMarker(contacts=copy.deepcopy(contacts)) right = StudentMarker() left.merge(right) self.assertEqual(contacts, left.contacts)
def test_no_contacts(self): """Ensure building map of no contacts doesn't blow up.""" from sosbeacon.event.student_marker import _build_contact_map contacts = [] contact_map = _build_contact_map(contacts[:]) self.assertEqual({}, contact_map)
def test_merge_contacts_into_ack_info(self): """Ensure merging contact list into ack info works.""" from sosbeacon.event.student_marker import StudentMarker from sosbeacon.event.student_marker import _build_contact_map contacts = _build_contact_map([ { 'name': 'Sam Smith', 'methods': [{'value': '123432'}, {'value': '*****@*****.**'}] }, { 'name': 'Josh Jones', 'methods': [{'value': '443241'}, {'value': '*****@*****.**'}] }, { 'name': 'Betty Boop', 'methods': [{'value': '321133'}, {'value': '*****@*****.**'}] } ]) acked_contact = _build_contact_map([ { 'name': 'Sam Smith', 'methods': [{'value': '123432'}, {'value': '*****@*****.**'}], 'acked': True, 'acked_at': 1234231, 'sent': 232311, } ]) left = StudentMarker(contacts=copy.deepcopy(acked_contact)) right = StudentMarker(contacts=copy.deepcopy(contacts)) left.merge(right) contacts.update(acked_contact) self.assertEqual(contacts, left.contacts) self.assertEqual(True, left.acknowledged) self.assertEqual(1234231, left.acknowledged_at)
def test_one_contact(self): """Ensure building map of one contact works.""" import copy from sosbeacon.event.student_marker import _hash_contact from sosbeacon.event.student_marker import _build_contact_map contacts = [{'name': 'joe', 'methods': [{'value': 123}]}] contact_map = _build_contact_map(copy.deepcopy(contacts)) contact_hash = _hash_contact(contacts[0]) self.assertEqual({contact_hash: contacts[0]}, contact_map)
def test_duplicate_contacts(self): """Ensure building map from list with duplicate contacts works.""" import copy from sosbeacon.event.student_marker import _hash_contact from sosbeacon.event.student_marker import _build_contact_map contacts = [{'name': 'joe', 'methods': [{'value': 123}]}, {'name': 'joe', 'methods': [{'value': 123}]}] contact_map = _build_contact_map(copy.deepcopy(contacts)) good_map = { _hash_contact(contacts[0]): contacts[0], } self.assertEqual(good_map, contact_map)
def test_merge_overlapping_contacts(self): """Ensure merging overlapping contacts.""" from sosbeacon.event.student_marker import StudentMarker from sosbeacon.event.student_marker import _build_contact_map contacts = _build_contact_map([{ 'name': 'Sam Smith', 'methods': [{ 'value': '123432' }, { 'value': '*****@*****.**' }] }, { 'name': 'Josh Jones', 'methods': [{ 'value': '443241' }, { 'value': '*****@*****.**' }] }, { 'name': 'Betty Boop', 'methods': [{ 'value': '321133' }, { 'value': '*****@*****.**' }] }]) left = StudentMarker(contacts=copy.deepcopy(contacts)) right = StudentMarker(contacts=copy.deepcopy(contacts)) left.merge(right) for contact in contacts.values(): contact['acked'] = None contact['acked_at'] = None contact['sent'] = None self.assertEqual(contacts, left.contacts)