def test_sort_place_holders(self, find_markers_for_methods_mock):
        """Ensure multiple place holders are sorted correctly."""
        from google.appengine.ext import ndb

        from sosbeacon.event.contact_marker import ContactMarker
        from sosbeacon.event.contact_marker import get_marker_for_methods
        from sosbeacon.event.event import Event

        marker1_key = mock.Mock(spec=ndb.Key)
        marker1_key.kind.return_value = "ContactMarker"
        marker1 = ContactMarker(key=marker1_key, short_id='A')
        marker1_key.get.return_value = marker1

        marker2_key = mock.Mock(spec=ndb.Key)
        marker2_key.kind.return_value = "ContactMarker"
        marker2 = ContactMarker(key=marker2_key, short_id='Z')
        marker2_key.get.return_value = marker2

        find_markers_for_methods_mock.return_value = (
            ContactMarker(place_holder=marker1_key),
            ContactMarker(place_holder=marker2_key),
            ContactMarker(place_holder=marker1_key),
            ContactMarker(place_holder=marker2_key),
            ContactMarker(place_holder=marker1_key),
        )

        event_key = ndb.Key(Event, 'EVENTKEY')

        ret_value = get_marker_for_methods(event_key, ['123'])

        self.assertIs(marker1, ret_value)
Ejemplo n.º 2
0
    def test_sort_place_holders(self, find_markers_for_methods_mock):
        """Ensure multiple place holders are sorted correctly."""
        from google.appengine.ext import ndb

        from sosbeacon.event.contact_marker import ContactMarker
        from sosbeacon.event.contact_marker import get_marker_for_methods
        from sosbeacon.event.event import Event

        marker1_key = mock.Mock(spec=ndb.Key)
        marker1_key.kind.return_value = "ContactMarker"
        marker1 = ContactMarker(key=marker1_key, short_id='A')
        marker1_key.get.return_value = marker1

        marker2_key = mock.Mock(spec=ndb.Key)
        marker2_key.kind.return_value = "ContactMarker"
        marker2 = ContactMarker(key=marker2_key, short_id='Z')
        marker2_key.get.return_value = marker2

        find_markers_for_methods_mock.return_value = (
            ContactMarker(place_holder=marker1_key),
            ContactMarker(place_holder=marker2_key),
            ContactMarker(place_holder=marker1_key),
            ContactMarker(place_holder=marker2_key),
            ContactMarker(place_holder=marker1_key),
        )

        event_key = ndb.Key(Event, 'EVENTKEY')

        ret_value = get_marker_for_methods(event_key, ['123'])

        self.assertIs(marker1, ret_value)
    def test_matching_markers(self, find_markers_for_methods_mock):
        """Ensure a marker is returned when there are multiple existing
        markers.
        """
        from google.appengine.ext import ndb

        from sosbeacon.event.contact_marker import ContactMarker
        from sosbeacon.event.contact_marker import get_marker_for_methods
        from sosbeacon.event.event import Event

        marker1_key = mock.Mock(spec=ndb.Key)
        marker1_key.kind.return_value = "ContactMarker"
        marker1 = ContactMarker(key=marker1_key, short_id='A')

        marker2_key = mock.Mock(spec=ndb.Key)
        marker2_key.kind.return_value = "ContactMarker"
        marker2 = ContactMarker(key=marker2_key, short_id='Z')

        find_markers_for_methods_mock.return_value = (marker1, marker2)

        event_key = ndb.Key(Event, 'EVENTKEY')

        ret_value = get_marker_for_methods(event_key, ['123'])

        self.assertIn(ret_value, (marker1, marker2))
Ejemplo n.º 4
0
    def test_matching_markers(self, find_markers_for_methods_mock):
        """Ensure a marker is returned when there are multiple existing
        markers.
        """
        from google.appengine.ext import ndb

        from sosbeacon.event.contact_marker import ContactMarker
        from sosbeacon.event.contact_marker import get_marker_for_methods
        from sosbeacon.event.event import Event

        marker1_key = mock.Mock(spec=ndb.Key)
        marker1_key.kind.return_value = "ContactMarker"
        marker1 = ContactMarker(key=marker1_key, short_id='A')

        marker2_key = mock.Mock(spec=ndb.Key)
        marker2_key.kind.return_value = "ContactMarker"
        marker2 = ContactMarker(key=marker2_key, short_id='Z')

        find_markers_for_methods_mock.return_value = (marker1, marker2)

        event_key = ndb.Key(Event, 'EVENTKEY')

        ret_value = get_marker_for_methods(event_key, ['123'])

        self.assertIn(ret_value, (marker1, marker2))
Ejemplo n.º 5
0
def create_marker_user(event_key, message_key, user_key):
    """Scan over the given set of groups, sending the broadcast to everyone
    in those groups.
    """
    from sosbeacon.utils import insert_tasks
    from sosbeacon.event.contact_marker import ContactMarker
    from sosbeacon.event.contact_marker import get_marker_for_methods
    from sosbeacon.student import Student
    from sosbeacon.student import DEFAULT_STUDENT_ID

    methods = set()
    if message_key.get().message_type == 'eo':
        methods.add(user_key.get().email)
    else:
        methods.add(user_key.get().phone)
        methods.add(user_key.get().email)

    marker = get_marker_for_methods(event_key, methods)

    student_key = ndb.Key(Student,
                          "%s-%s" % (DEFAULT_STUDENT_ID, user_key.id()),
                          namespace='_x_')

    if not marker:
        # TODO: What needs set?
        short_id = str(ContactMarker.allocate_ids(size=1, parent=event_key)[0])
        key_id = "%s:%s" % (event_key.id(), user_key.id())
        marker = ContactMarker(
            id=key_id,
            event=event_key,
            first_name=user_key.get().first_name,
            last_name=user_key.get().last_name,
            students={str(student_key.id()): []},
            short_id=short_id,
            methods=[user_key.get().email,
                     user_key.get().phone],
            count_comment=0,
            count_visit=0,
            is_user=True)
        marker.acknowledged = True
        marker.put()

    tasks = []
    for method in methods:
        # TODO: Batch tasks or start
        tasks.append(
            get_broadcast_method_to_user_task(event_key, message_key, user_key,
                                              method))

        if len(tasks) > 10:
            insert_tasks(tasks, USER_TX_QUEUE)
            tasks = []

    if tasks:
        insert_tasks(tasks, USER_TX_QUEUE)
Ejemplo n.º 6
0
def create_marker_user(event_key, message_key, user_key):
    """Scan over the given set of groups, sending the broadcast to everyone
    in those groups.
    """
    from sosbeacon.utils import insert_tasks
    from sosbeacon.event.contact_marker import ContactMarker
    from sosbeacon.event.contact_marker import get_marker_for_methods
    from sosbeacon.student import Student
    from sosbeacon.student import DEFAULT_STUDENT_ID

    methods = set()
    if message_key.get().message_type == "eo":
        methods.add(user_key.get().email)
    else:
        methods.add(user_key.get().phone)
        methods.add(user_key.get().email)

    marker = get_marker_for_methods(event_key, methods)

    student_key = ndb.Key(Student, "%s-%s" % (DEFAULT_STUDENT_ID, user_key.id()), namespace="_x_")

    if not marker:
        # TODO: What needs set?
        short_id = str(ContactMarker.allocate_ids(size=1, parent=event_key)[0])
        key_id = "%s:%s" % (event_key.id(), user_key.id())
        marker = ContactMarker(
            id=key_id,
            event=event_key,
            first_name=user_key.get().first_name,
            last_name=user_key.get().last_name,
            students={str(student_key.id()): []},
            short_id=short_id,
            methods=[user_key.get().email, user_key.get().phone],
            count_comment=0,
            count_visit=0,
            is_user=True,
        )
        marker.acknowledged = True
        marker.put()

    tasks = []
    for method in methods:
        # TODO: Batch tasks or start
        tasks.append(get_broadcast_method_to_user_task(event_key, message_key, user_key, method))

        if len(tasks) > 10:
            insert_tasks(tasks, USER_TX_QUEUE)
            tasks = []

    if tasks:
        insert_tasks(tasks, USER_TX_QUEUE)
    def test_no_matches(self, find_markers_for_methods_mock):
        """Ensure a new short id is returned if there are non existing."""
        from google.appengine.ext import ndb

        from sosbeacon.event.contact_marker import get_marker_for_methods
        from sosbeacon.event.event import Event

        find_markers_for_methods_mock.return_value = ()

        event_key = ndb.Key(Event, 'EVENTKEY')

        ret_value = get_marker_for_methods(event_key, ['123'])

        self.assertIsNone(ret_value)
Ejemplo n.º 8
0
    def test_no_matches(self, find_markers_for_methods_mock):
        """Ensure a new short id is returned if there are non existing."""
        from google.appengine.ext import ndb

        from sosbeacon.event.contact_marker import get_marker_for_methods
        from sosbeacon.event.event import Event

        find_markers_for_methods_mock.return_value = ()

        event_key = ndb.Key(Event, 'EVENTKEY')

        ret_value = get_marker_for_methods(event_key, ['123'])

        self.assertIsNone(ret_value)
    def test_matching_marker(self, find_markers_for_methods_mock):
        """Ensure a single existing placeholder is returned."""
        from google.appengine.ext import ndb

        from sosbeacon.event.contact_marker import ContactMarker
        from sosbeacon.event.contact_marker import get_marker_for_methods
        from sosbeacon.event.event import Event

        marker1_key = mock.Mock(spec=ndb.Key)
        marker1_key.kind.return_value = "ContactMarker"
        marker1 = ContactMarker(key=marker1_key, short_id='A')

        find_markers_for_methods_mock.return_value = (marker1,)

        event_key = ndb.Key(Event, 'EVENTKEY')

        ret_value = get_marker_for_methods(event_key, ['123'])

        self.assertIs(marker1, ret_value)
Ejemplo n.º 10
0
    def test_matching_marker(self, find_markers_for_methods_mock):
        """Ensure a single existing placeholder is returned."""
        from google.appengine.ext import ndb

        from sosbeacon.event.contact_marker import ContactMarker
        from sosbeacon.event.contact_marker import get_marker_for_methods
        from sosbeacon.event.event import Event

        marker1_key = mock.Mock(spec=ndb.Key)
        marker1_key.kind.return_value = "ContactMarker"
        marker1 = ContactMarker(key=marker1_key, short_id='A')

        find_markers_for_methods_mock.return_value = (marker1, )

        event_key = ndb.Key(Event, 'EVENTKEY')

        ret_value = get_marker_for_methods(event_key, ['123'])

        self.assertIs(marker1, ret_value)