@Override public Task<T> call(ParseSQLiteDatabase db) { return fetchLocallyAsync(object, db); } });
@Override public Task<Void> then(Task<Void> task) { return store.fetchLocallyAsync(ParseObject.this).makeVoid(); } });
/** * Loads data from the local datastore into this object, if it has not been fetched from the * server already. If the object is not stored in the local datastore, this method with do * nothing. */ @SuppressWarnings("unchecked") <T extends ParseObject> Task<T> fetchFromLocalDatastoreAsync() { if (!Parse.isLocalDatastoreEnabled()) { throw new IllegalStateException("Method requires Local Datastore. " + "Please refer to `Parse#enableLocalDatastore(Context)`."); } return Parse.getLocalDatastore().fetchLocallyAsync((T) this); }
tasks.add(fetchLocallyAsync(obj, db).makeVoid());
@Test public void testFetchIncludesCollection() throws ParseException { OfflineStore store = mock(OfflineStore.class); when(store.fetchLocallyAsync(any(ParseObject.class), any(ParseSQLiteDatabase.class))) .thenReturn(Task.<ParseObject>forResult(null)); ParseSQLiteDatabase db = mock(ParseSQLiteDatabase.class); ParseQuery.State<ParseObject> query = new ParseQuery.State.Builder<>("TestObject") .include("foo") .build(); ParseObject object = mock(ParseObject.class); ParseObject unfetchedObject = mock(ParseObject.class); Collection<ParseObject> objects = new ArrayList<>(); objects.add(unfetchedObject); when(object.get("foo")).thenReturn(objects); ParseTaskUtils.wait(OfflineQueryLogic.fetchIncludesAsync(store, object, query, db)); verify(store).fetchLocallyAsync(object, db); verify(store).fetchLocallyAsync(unfetchedObject, db); verifyNoMoreInteractions(store); }
@Test public void testFetchIncludesMap() throws ParseException { OfflineStore store = mock(OfflineStore.class); when(store.fetchLocallyAsync(any(ParseObject.class), any(ParseSQLiteDatabase.class))) .thenReturn(Task.<ParseObject>forResult(null)); ParseSQLiteDatabase db = mock(ParseSQLiteDatabase.class); ParseQuery.State<ParseObject> query = new ParseQuery.State.Builder<>("TestObject") .include("foo.bar") .build(); ParseObject object = mock(ParseObject.class); ParseObject unfetchedObject = mock(ParseObject.class); Map<String, ParseObject> objects = new HashMap<>(); objects.put("bar", unfetchedObject); when(object.get("foo")).thenReturn(objects); ParseTaskUtils.wait(OfflineQueryLogic.fetchIncludesAsync(store, object, query, db)); verify(store).fetchLocallyAsync(object, db); verify(store).fetchLocallyAsync(unfetchedObject, db); verifyNoMoreInteractions(store); }
@Test public void testFetchIncludesJSONArray() throws ParseException { OfflineStore store = mock(OfflineStore.class); when(store.fetchLocallyAsync(any(ParseObject.class), any(ParseSQLiteDatabase.class))) .thenReturn(Task.<ParseObject>forResult(null)); ParseSQLiteDatabase db = mock(ParseSQLiteDatabase.class); ParseQuery.State<ParseObject> query = new ParseQuery.State.Builder<>("TestObject") .include("foo") .build(); ParseObject object = mock(ParseObject.class); ParseObject unfetchedObject = mock(ParseObject.class); JSONArray objects = new JSONArray(); objects.put(unfetchedObject); when(object.get("foo")).thenReturn(objects); ParseTaskUtils.wait(OfflineQueryLogic.fetchIncludesAsync(store, object, query, db)); verify(store).fetchLocallyAsync(object, db); verify(store).fetchLocallyAsync(unfetchedObject, db); verifyNoMoreInteractions(store); }
@Test public void testFetchIncludesJSONObject() throws Exception { OfflineStore store = mock(OfflineStore.class); when(store.fetchLocallyAsync(any(ParseObject.class), any(ParseSQLiteDatabase.class))) .thenReturn(Task.<ParseObject>forResult(null)); ParseSQLiteDatabase db = mock(ParseSQLiteDatabase.class); ParseQuery.State<ParseObject> query = new ParseQuery.State.Builder<>("TestObject") .include("foo.bar") .build(); ParseObject object = mock(ParseObject.class); ParseObject unfetchedObject = mock(ParseObject.class); JSONObject objects = new JSONObject(); objects.put("bar", unfetchedObject); when(object.get("foo")).thenReturn(objects); ParseTaskUtils.wait(OfflineQueryLogic.fetchIncludesAsync(store, object, query, db)); verify(store).fetchLocallyAsync(object, db); verify(store).fetchLocallyAsync(unfetchedObject, db); verifyNoMoreInteractions(store); }
@Test public void testFetchIncludesParseObject() throws ParseException { OfflineStore store = mock(OfflineStore.class); when(store.fetchLocallyAsync(any(ParseObject.class), any(ParseSQLiteDatabase.class))) .thenReturn(Task.<ParseObject>forResult(null)); ParseSQLiteDatabase db = mock(ParseSQLiteDatabase.class); ParseQuery.State<ParseObject> query = new ParseQuery.State.Builder<>("TestObject") .include("foo") .build(); ParseObject object = new ParseObject("TestObject"); ParseObject unfetchedObject = new ParseObject("TestObject"); object.put("foo", unfetchedObject); ParseTaskUtils.wait(OfflineQueryLogic.fetchIncludesAsync(store, object, query, db)); verify(store).fetchLocallyAsync(object, db); verify(store).fetchLocallyAsync(unfetchedObject, db); verifyNoMoreInteractions(store); }
@Test public void testFetchIncludesDoesNotExist() throws ParseException { OfflineStore store = mock(OfflineStore.class); when(store.fetchLocallyAsync(any(ParseObject.class), any(ParseSQLiteDatabase.class))) .thenReturn(Task.<ParseObject>forResult(null)); ParseQuery.State<ParseObject> query = new ParseQuery.State.Builder<>("TestObject") .include("foo") .build(); ParseObject object = new ParseObject("TestObject"); ParseTaskUtils.wait(OfflineQueryLogic.fetchIncludesAsync(store, object, query, null)); // only itself verify(store, times(1)) .fetchLocallyAsync(any(ParseObject.class), any(ParseSQLiteDatabase.class)); }
@Test public void testFetchIncludesNull() throws ParseException { OfflineStore store = mock(OfflineStore.class); when(store.fetchLocallyAsync(any(ParseObject.class), any(ParseSQLiteDatabase.class))) .thenReturn(Task.<ParseObject>forResult(null)); ParseQuery.State<ParseObject> query = new ParseQuery.State.Builder<>("TestObject") .include("foo") .build(); ParseObject object = new ParseObject("TestObject"); object.put("foo", JSONObject.NULL); ParseTaskUtils.wait(OfflineQueryLogic.fetchIncludesAsync(store, object, query, null)); // only itself verify(store, times(1)) .fetchLocallyAsync(any(ParseObject.class), any(ParseSQLiteDatabase.class)); }
@Test public void testFetchIncludesNestedNull() throws Exception { OfflineStore store = mock(OfflineStore.class); when(store.fetchLocallyAsync(any(ParseObject.class), any(ParseSQLiteDatabase.class))) .thenReturn(Task.<ParseObject>forResult(null)); ParseQuery.State<ParseObject> query = new ParseQuery.State.Builder<>("TestObject") .include("foo.bar") .build(); ParseObject object = new ParseObject("TestObject"); object.put("foo", JSONObject.NULL); ParseTaskUtils.wait(OfflineQueryLogic.fetchIncludesAsync(store, object, query, null)); // only itself verify(store, times(1)) .fetchLocallyAsync(any(ParseObject.class), any(ParseSQLiteDatabase.class)); }
@Test public void testFetchIncludesNonParseObject() throws ParseException { OfflineStore store = mock(OfflineStore.class); when(store.fetchLocallyAsync(any(ParseObject.class), any(ParseSQLiteDatabase.class))) .thenReturn(Task.<ParseObject>forResult(null)); ParseQuery.State<ParseObject> query = new ParseQuery.State.Builder<>("TestObject") .include("foo") .build(); ParseObject object = new ParseObject("TestObject"); object.put("foo", 1); thrown.expect(ParseException.class); ParseTaskUtils.wait(OfflineQueryLogic.fetchIncludesAsync(store, object, query, null)); // only itself verify(store, times(1)) .fetchLocallyAsync(any(ParseObject.class), any(ParseSQLiteDatabase.class)); }
@Test public void testFetchIncludesNestedNonParseObject() throws Exception { OfflineStore store = mock(OfflineStore.class); when(store.fetchLocallyAsync(any(ParseObject.class), any(ParseSQLiteDatabase.class))) .thenReturn(Task.<ParseObject>forResult(null)); ParseQuery.State<ParseObject> query = new ParseQuery.State.Builder<>("TestObject") .include("foo.bar") .build(); ParseObject object = new ParseObject("TestObject"); object.put("foo", 1); thrown.expect(IllegalStateException.class); ParseTaskUtils.wait(OfflineQueryLogic.fetchIncludesAsync(store, object, query, null)); // only itself verify(store, times(1)) .fetchLocallyAsync(any(ParseObject.class), any(ParseSQLiteDatabase.class)); } }
} else if (container instanceof ParseObject) { ParseObject object = (ParseObject) container; return store.fetchLocallyAsync(object, db).makeVoid(); } else { return Task.forError(new ParseException(