def test_merge_overlapping_students_incomplete_contacts(self): """Ensure merging students with overlaps with different contacts.""" from sosbeacon.event.contact_marker import ContactMarker students_1 = { '123': [{ 'name': 'Billy Bob', 'methods': ['324321', '*****@*****.**'] }], '345': [{ 'name': 'Josh Jones', 'methods': ['443241', '*****@*****.**'] }] } students_2 = { '123': [{ 'name': 'Sam Smith', 'methods': ['123432', '*****@*****.**'] }], '345': [{ 'name': 'Jenny Benny', 'methods': ['234232', '*****@*****.**'] }] } left = ContactMarker(students=copy.deepcopy(students_1)) right = ContactMarker(students=copy.deepcopy(students_2)) left.merge(right) for key in students_1: students_1[key].extend(students_2[key]) self.assertEqual(students_1, left.students)
def test_merge_students(self): """Ensure merging students.""" from sosbeacon.event.contact_marker import ContactMarker students_1 = { '123': [{ 'name': 'Sam Smith', 'methods': ['123432', '*****@*****.**'] }], '345': [{ 'name': 'Josh Jones', 'methods': ['443241', '*****@*****.**'] }], '231': [{ 'name': 'Betty Boop', 'methods': ['321133', '*****@*****.**'] }], } students_2 = { 'ABC': [{ 'name': 'Julie James', 'methods': ['5433423', '*****@*****.**'] }], } left = ContactMarker(students=copy.deepcopy(students_1)) right = ContactMarker(students=copy.deepcopy(students_2)) left.merge(right) students_1.update(students_2) self.assertEqual(students_1, left.students)
def test_merge_ack_to_non_ack(self): """Ensure merging acked to non-acked acks.""" from sosbeacon.event.contact_marker import ContactMarker left = ContactMarker(acknowledged=False) right = ContactMarker(acknowledged=True) left.merge(right) self.assertTrue(left.acknowledged)
def test_merge_no_students(self): """Ensure merging with no students.""" from sosbeacon.event.contact_marker import ContactMarker left = ContactMarker() right = ContactMarker() left.merge(right) self.assertIsNone(left.students)
def test_merge_different_name(self): """Ensure merging with two different names.""" from sosbeacon.event.contact_marker import ContactMarker left = ContactMarker(name='Name 3') right = ContactMarker(name='Name 4') left.merge(right) self.assertEqual('Name 3', left.name)
def test_merge_non_ack(self): """Ensure merging two non-acked doesn't ack.""" from sosbeacon.event.contact_marker import ContactMarker left = ContactMarker(acknowledged=False) right = ContactMarker(acknowledged=False) left.merge(right) self.assertFalse(left.acknowledged)
def test_merge_missing_name(self): """Ensure merging missing name with name.""" from sosbeacon.event.contact_marker import ContactMarker left = ContactMarker(name='Name 2') right = ContactMarker() left.merge(right) self.assertEqual('Name 2', left.name)
def test_merge_new_name(self): """Ensure merging no name with new name.""" from sosbeacon.event.contact_marker import ContactMarker left = ContactMarker() right = ContactMarker(name='Name 1') left.merge(right) self.assertEqual('Name 1', left.name)
def test_merge_no_names(self): """Ensure merging with no names.""" from sosbeacon.event.contact_marker import ContactMarker left = ContactMarker() right = ContactMarker() left.merge(right) self.assertEqual(None, left.name)
def test_merge_different_short_id(self): """Ensure merging with different short ids.""" from sosbeacon.event.contact_marker import ContactMarker left = ContactMarker(short_id='N123') right = ContactMarker(short_id='Z312') left.merge(right) self.assertEqual('N123', left.short_id)
def test_merge_last_viewed_date_with_same(self): """Ensure merging acked with acked preserves ack date.""" from sosbeacon.event.contact_marker import ContactMarker left = ContactMarker(last_viewed_date=334) right = ContactMarker(last_viewed_date=334) left.merge(right) self.assertEqual(334, left.last_viewed_date)
def test_merge_last_viewed_date(self): """Ensure merging acked to non-acked sets view date.""" from sosbeacon.event.contact_marker import ContactMarker left = ContactMarker(last_viewed_date=0) right = ContactMarker(last_viewed_date=12345) left.merge(right) self.assertEqual(12345, left.last_viewed_date)
def test_merge_unviewed(self): """Ensure merging two non-acked doesn't set view date.""" from sosbeacon.event.contact_marker import ContactMarker left = ContactMarker() right = ContactMarker() left.merge(right) self.assertEqual(0, left.last_viewed_date)
def test_merge_last_viewed_date_with_non_acked(self): """Ensure merging non-acked with acked preserves view date.""" from sosbeacon.event.contact_marker import ContactMarker left = ContactMarker(last_viewed_date=321123) right = ContactMarker(last_viewed_date=0) left.merge(right) self.assertEqual(321123, left.last_viewed_date)
def test_merge_acks(self): """Ensure merging two acked stays acked.""" from sosbeacon.event.contact_marker import ContactMarker left = ContactMarker(acknowledged=True) right = ContactMarker(acknowledged=True) left.merge(right) self.assertTrue(left.acknowledged)
def test_merge_missing_short_id(self): """Ensure merging short id with no short id.""" from sosbeacon.event.contact_marker import ContactMarker left = ContactMarker(short_id='N213') right = ContactMarker() left.merge(right) self.assertEqual('N213', left.short_id)
def test_merge_no_methods_with_methods(self): """Ensure merging no methods with methods preserves methods.""" from sosbeacon.event.contact_marker import ContactMarker methods = ['123312', '*****@*****.**'] left = ContactMarker() right = ContactMarker(methods=methods[:]) left.merge(right) self.assertEqual(sorted(methods), sorted(left.methods))
def test_merge_last_viewed_date_with_larger(self): """Ensure merging more recently acked with earlier acked keeps most recent ack date. """ from sosbeacon.event.contact_marker import ContactMarker left = ContactMarker(last_viewed_date=20) right = ContactMarker(last_viewed_date=200) left.merge(right) self.assertEqual(200, left.last_viewed_date)
def test_merge_same_methods(self): """Ensure merging same methods doesn't dupe.""" from sosbeacon.event.contact_marker import ContactMarker methods = [ '1234567890', '*****@*****.**', '2098765432', '*****@*****.**' ] left = ContactMarker(methods=methods[:]) right = ContactMarker(methods=methods[:]) left.merge(right) self.assertEqual(sorted(set(methods[:])), sorted(left.methods))
def test_merge_methods_with_overlapping_methods(self): """Ensure merging new methods with overlapping methods doesn't dupe.""" from sosbeacon.event.contact_marker import ContactMarker base_methods = [ '1234567890', '*****@*****.**', '2098765432', '*****@*****.**' ] methods_1 = base_methods + ['123312', '*****@*****.**'] methods_2 = base_methods + ['848423', '*****@*****.**'] left = ContactMarker(methods=methods_1[:]) right = ContactMarker(methods=methods_2[:]) left.merge(right) self.assertEqual(sorted(set(methods_1 + methods_2)), sorted(left.methods))
def test_merge_no_students_with_students(self): """Ensure merging no students with students.""" from sosbeacon.event.contact_marker import ContactMarker students = { '123': [{ 'name': 'Sam Smith', 'methods': ['123432', '*****@*****.**'] }], '345': [{ 'name': 'Josh Jones', 'methods': ['443241', '*****@*****.**'] }], '231': [{ 'name': 'Betty Boop', 'methods': ['321133', '*****@*****.**'] }], } left = ContactMarker() right = ContactMarker(students=copy.deepcopy(students)) left.merge(right) self.assertEqual(students, left.students)