/** * A helper method to concisely send a push message to a query. This method is equivalent to * ParsePush push = new ParsePush(); push.setMessage(message); push.setQuery(query); * push.sendInBackground(callback); * * @param message The message that will be shown in the notification. * @param query A ParseInstallation query which specifies the recipients of a push. * @param callback callback.done(e) is called when the send completes. */ public static void sendMessageInBackground(String message, ParseQuery<ParseInstallation> query, SendCallback callback) { ParseTaskUtils.callbackOnMainThreadAsync(sendMessageInBackground(message, query), callback); }
@Test public void testSendMessageInBackground() throws Exception { // Mock controller ParsePushController controller = mock(ParsePushController.class); when(controller.sendInBackground(any(ParsePush.State.class), anyString())) .thenReturn(Task.<Void>forResult(null)); ParseCorePlugins.getInstance().registerPushController(controller); // Make sample ParsePush data and call method ParseQuery<ParseInstallation> query = ParseInstallation.getQuery(); query.getBuilder() .whereEqualTo("foo", "bar"); ParseTaskUtils.wait(ParsePush.sendMessageInBackground("test", query)); // Make sure controller is executed and state parameter is correct ArgumentCaptor<ParsePush.State> stateCaptor = ArgumentCaptor.forClass(ParsePush.State.class); verify(controller, times(1)).sendInBackground(stateCaptor.capture(), anyString()); ParsePush.State state = stateCaptor.getValue(); // Verify query state ParseQuery.State<ParseInstallation> queryState = state.queryState(); JSONObject queryStateJson = queryState.toJSON(PointerEncoder.get()); assertEquals("bar", queryStateJson.getJSONObject("where").getString("foo")); // Verify message assertEquals("test", state.data().getString(ParsePush.KEY_DATA_MESSAGE)); }
final Semaphore done = new Semaphore(0); final Capture<Exception> exceptionCapture = new Capture<>(); ParsePush.sendMessageInBackground("test", query, new SendCallback() { @Override public void done(ParseException e) {
@NonNull public static Completable send(@NonNull final String message, @NonNull final ParseQuery<ParseInstallation> query) { return RxTask.completable(() -> ParsePush.sendMessageInBackground(message, query)); }