def test_broadcast_fcm(self): for client_type in ClientType.FCM_CLIENTS: client = MobileClient(parent=ndb.Key(Account, 'user_id'), user_id='user_id', messaging_id='token', client_type=client_type, device_uuid='uuid', display_name='Phone') client_key = client.put() from notifications.base_notification import BaseNotification with patch.object(BaseNotification, 'send') as mock_send: TBANSHelper.broadcast([client_type], 'Broadcast', 'Test broadcast') # Make sure we didn't send to Android mock_send.assert_not_called() # Make sure we'll send to FCM clients tasks = self.taskqueue_stub.get_filtered_tasks( queue_names='push-notifications') self.assertEqual(len(tasks), 1) # Make sure our taskqueue tasks execute what we expect with patch.object(TBANSHelper, '_send_fcm') as mock_send_fcm: deferred.run(tasks[0].payload) mock_send_fcm.assert_called_once_with([client], ANY) # Make sure the notification is a BroadcastNotification notification = mock_send_fcm.call_args[0][1] self.assertTrue(isinstance(notification, BroadcastNotification)) self.taskqueue_stub.FlushQueue('push-notifications') client_key.delete()
def test_broadcast_none(self): from notifications.base_notification import BaseNotification with patch.object(BaseNotification, 'send') as mock_send: TBANSHelper.broadcast([], 'Broadcast', 'Test broadcast') # Make sure we didn't send to Android mock_send.assert_not_called() # Make sure we didn't send to FCM or webhooks tasks = self.taskqueue_stub.GetTasks('push-notifications') self.assertEqual(len(tasks), 0)
def test_broadcast_android(self): client_type = ClientType.OS_ANDROID messaging_id = 'token' client = MobileClient(parent=ndb.Key(Account, 'user_id'), user_id='user_id', messaging_id=messaging_id, client_type=client_type, device_uuid='uuid', display_name='Phone') client.put() from notifications.broadcast import BroadcastNotification with patch.object(BroadcastNotification, 'send') as mock_send: TBANSHelper.broadcast([client_type], 'Broadcast', 'Test broadcast') mock_send.assert_called_once_with({client_type: [messaging_id]}) # Make sure we didn't send to FCM or webhooks tasks = self.taskqueue_stub.GetTasks('push-notifications') self.assertEqual(len(tasks), 0)