Example #1
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)
    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)
Example #4
0
    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)
Example #5
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)
    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)
Example #7
0
    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)
Example #10
0
    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)
Example #12
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)