Exemple #1
0
    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)
Exemple #2
0
    def test_merge_non_broadcasts(self):
        """Ensure merging two non-broadcast."""
        from sosbeacon.event.student_marker import StudentMarker

        left = StudentMarker(last_broadcast=None)
        right = StudentMarker(last_broadcast=None)
        left.merge(right)
        self.assertFalse(left.last_broadcast)
Exemple #3
0
    def test_merge_different_names(self):
        """Ensure merging with different name."""
        from sosbeacon.event.student_marker import StudentMarker

        left = StudentMarker(name="billy")
        right = StudentMarker(name="joe")
        left.merge(right)
        self.assertEqual("billy", left.name)
Exemple #4
0
    def test_merge_name_with_no_name(self):
        """Ensure merging name with missing name."""
        from sosbeacon.event.student_marker import StudentMarker

        left = StudentMarker(name="joe")
        right = StudentMarker()
        left.merge(right)
        self.assertEqual("joe", left.name)
Exemple #5
0
    def test_merge_no_name(self):
        """Ensure merging without name."""
        from sosbeacon.event.student_marker import StudentMarker

        left = StudentMarker()
        right = StudentMarker()
        left.merge(right)
        self.assertFalse(left.name)
Exemple #6
0
    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)
Exemple #7
0
    def test_merge_broadcast(self):
        """Ensure merging broadcast markers."""
        from datetime import datetime

        from sosbeacon.event.student_marker import StudentMarker

        broadcasted = datetime.now()

        left = StudentMarker(last_broadcast=broadcasted)
        right = StudentMarker(last_broadcast=broadcasted)
        left.merge(right)
        self.assertEqual(broadcasted, left.last_broadcast)
Exemple #8
0
    def test_merge_broadcast_with_older(self):
        """Ensure merging more recently broadcast marker with older marker."""
        from datetime import datetime, timedelta

        from sosbeacon.event.student_marker import StudentMarker

        broadcasted = datetime.now()
        prior_broadcasted = datetime.now() + timedelta(minutes=-5)

        left = StudentMarker(last_broadcast=broadcasted)
        right = StudentMarker(last_broadcast=prior_broadcasted)
        left.merge(right)
        self.assertEqual(broadcasted, left.last_broadcast)
Exemple #9
0
    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)