/* package */ Task<List<T>> findAsync(State<T> state, ParseUser user, Task<Void> cancellationToken) { return ParseQuery.getQueryController().findAsync(state, user, cancellationToken); }
@Override public <T extends ParseObject> Task<List<T>> findAsync( ParseQuery.State<T> state, ParseUser user, Task<Void> cancellationToken) { if (state.isFromLocalDatastore()) { return offlineStore.findFromPinAsync(state.pinName(), state, user); } else { return networkController.findAsync(state, user, cancellationToken); } }
@Test public void testGetAsyncFromLDS() throws Exception { Parse.enableLocalDatastore(null); ParseUser user = mock(ParseUser.class); ParseQueryController queryController = mock(ParseQueryController.class); //noinspection unchecked when(queryController.findAsync( any(ParseQuery.State.class), any(ParseUser.class), any(Task.class)) ).thenReturn(Task.forResult(Collections.singletonList(user))); ParseCorePlugins.getInstance().registerQueryController(queryController); OfflineObjectStore<ParseUser> store = new OfflineObjectStore<>(ParseUser.class, PIN_NAME, null); ParseUser userAgain = ParseTaskUtils.wait(store.getAsync()); //noinspection unchecked verify(queryController, times(1)) .findAsync(any(ParseQuery.State.class), any(ParseUser.class), any(Task.class)); assertSame(user, userAgain); }
@Test public void testGetAsyncFromLDSWithTooManyObjects() throws Exception { Parse.enableLocalDatastore(null); ParseQueryController queryController = mock(ParseQueryController.class); //noinspection unchecked when(queryController.findAsync( any(ParseQuery.State.class), any(ParseUser.class), any(Task.class)) ).thenReturn(Task.forResult(Arrays.asList(mock(ParseUser.class), mock(ParseUser.class)))); ParseCorePlugins.getInstance().registerQueryController(queryController); OfflineStore lds = mock(OfflineStore.class); when(lds.unpinAllObjectsAsync(anyString())).thenReturn(Task.<Void>forResult(null)); Parse.setLocalDatastore(lds); @SuppressWarnings("unchecked") ParseObjectStore<ParseUser> legacy = mock(ParseObjectStore.class); when(legacy.getAsync()).thenReturn(Task.<ParseUser>forResult(null)); OfflineObjectStore<ParseUser> store = new OfflineObjectStore<>(ParseUser.class, PIN_NAME, legacy); ParseUser user = ParseTaskUtils.wait(store.getAsync()); //noinspection unchecked verify(queryController, times(1)) .findAsync(any(ParseQuery.State.class), any(ParseUser.class), any(Task.class)); verify(lds, times(1)).unpinAllObjectsAsync(PIN_NAME); assertNull(user); }
ParseQueryController queryController = mock(ParseQueryController.class); when(queryController.findAsync( any(ParseQuery.State.class), any(ParseUser.class), .findAsync(any(ParseQuery.State.class), any(ParseUser.class), any(Task.class)); verify(legacy, times(1)).getAsync(); verify(legacy, times(1)).deleteAsync();
@Test public void testBlockingFind() throws ParseException { ParseQueryController queryController = mock(ParseQueryController.class); ParseCorePlugins.getInstance().registerQueryController(queryController); Task<List<ParseUser>> task = Task.forResult(Arrays.asList(mock(ParseUser.class), mock(ParseUser.class), mock(ParseUser.class))); when(queryController.findAsync(any(ParseQuery.State.class), any(ParseUser.class), any(Task.class))).thenReturn(task); ParseQuery<ParseUser> query = ParseQuery.getQuery(ParseUser.class); assertThat(query.find()).isEqualTo(rx.parse2.ParseObservable.find(query).toList().blockingGet()); }
@Test public void testParseObservableFindNextAfterCompleted() { List<ParseUser> users = Arrays.asList(mock(ParseUser.class), mock(ParseUser.class), mock(ParseUser.class)); ParseQueryController queryController = mock(ParseQueryController.class); ParseCorePlugins.getInstance().registerQueryController(queryController); Task<List<ParseUser>> task = Task.forResult(users); when(queryController.findAsync( any(ParseQuery.State.class), any(ParseUser.class), any(Task.class)) ).thenReturn(task); //).thenThrow(IllegalStateException.class); ParseQuery<ParseUser> query = ParseQuery.getQuery(ParseUser.class); query.setUser(new ParseUser()); rx.parse2.ParseObservable.find(query) .test() .assertNoErrors() //.assertValue(users) .assertComplete(); try { ParseTaskUtils.wait(task); } catch (Exception e) { // do nothing } }
when(queryController.findAsync( any(ParseQuery.State.class), any(ParseUser.class),