use of com.apollographql.apollo.cache.normalized.NormalizedCache in project apollo-android by apollographql.
the class CacheHeadersTest method testHeadersReceived.
@Test
@SuppressWarnings("CheckReturnValue")
public void testHeadersReceived() throws ApolloException, IOException {
final AtomicBoolean hasHeader = new AtomicBoolean();
final NormalizedCache normalizedCache = new NormalizedCache() {
@Nullable
@Override
public Record loadRecord(@NonNull String key, @NonNull CacheHeaders cacheHeaders) {
hasHeader.set(cacheHeaders.hasHeader(ApolloCacheHeaders.DO_NOT_STORE));
return null;
}
@Nonnull
@Override
public Set<String> merge(@NonNull Record record, @NonNull CacheHeaders cacheHeaders) {
hasHeader.set(cacheHeaders.hasHeader(ApolloCacheHeaders.DO_NOT_STORE));
return emptySet();
}
@Override
public void clearAll() {
}
@Override
public boolean remove(@Nonnull CacheKey cacheKey) {
return false;
}
@Nonnull
@Override
protected Set<String> performMerge(@Nonnull Record apolloRecord, @Nonnull CacheHeaders cacheHeaders) {
return emptySet();
}
};
final NormalizedCacheFactory<NormalizedCache> cacheFactory = new NormalizedCacheFactory<NormalizedCache>() {
@Override
public NormalizedCache create(RecordFieldJsonAdapter recordFieldAdapter) {
return normalizedCache;
}
};
ApolloClient apolloClient = ApolloClient.builder().normalizedCache(cacheFactory, new IdFieldCacheKeyResolver()).serverUrl(server.url("/")).okHttpClient(new OkHttpClient.Builder().dispatcher(new Dispatcher(Utils.immediateExecutorService())).build()).dispatcher(Utils.immediateExecutor()).build();
server.enqueue(mockResponse("HeroAndFriendsNameResponse.json"));
CacheHeaders cacheHeaders = CacheHeaders.builder().addHeader(ApolloCacheHeaders.DO_NOT_STORE, "true").build();
Rx2Apollo.from(apolloClient.query(new HeroAndFriendsNamesQuery(Input.fromNullable(Episode.NEWHOPE))).cacheHeaders(cacheHeaders)).test();
assertThat(hasHeader.get()).isTrue();
}
use of com.apollographql.apollo.cache.normalized.NormalizedCache in project apollo-android by apollographql.
the class LruNormalizedCacheTest method testDualCacheMultipleRecord.
@Test
public void testDualCacheMultipleRecord() {
LruNormalizedCacheFactory secondaryCacheFactory = new LruNormalizedCacheFactory(EvictionPolicy.NO_EVICTION);
NormalizedCache primaryCache = new LruNormalizedCacheFactory(EvictionPolicy.NO_EVICTION).chain(secondaryCacheFactory).createChain(basicFieldAdapter);
Record.Builder recordBuilder = Record.builder("root1");
recordBuilder.addField("bar", "bar");
final Record record1 = recordBuilder.build();
recordBuilder = Record.builder("root2");
recordBuilder.addField("bar", "bar");
final Record record2 = recordBuilder.build();
recordBuilder = Record.builder("root3");
recordBuilder.addField("bar", "bar");
final Record record3 = recordBuilder.build();
Collection<Record> records = Arrays.asList(record1, record2, record3);
Collection<String> keys = Arrays.asList(record1.key(), record2.key(), record3.key());
primaryCache.merge(records, CacheHeaders.NONE);
assertThat(primaryCache.loadRecords(keys, CacheHeaders.NONE).size()).isEqualTo(3);
// verify write through behavior
assertThat(primaryCache.loadRecords(keys, CacheHeaders.NONE).size()).isEqualTo(3);
assertThat(primaryCache.nextCache().get().loadRecords(keys, CacheHeaders.NONE).size()).isEqualTo(3);
}
use of com.apollographql.apollo.cache.normalized.NormalizedCache in project apollo-android by apollographql.
the class LruNormalizedCacheTest method testClearAll.
@Test
public void testClearAll() {
LruNormalizedCacheFactory secondaryCacheFactory = new LruNormalizedCacheFactory(EvictionPolicy.NO_EVICTION);
NormalizedCache primaryCacheStore = new LruNormalizedCacheFactory(EvictionPolicy.NO_EVICTION).chain(secondaryCacheFactory).createChain(basicFieldAdapter);
Record record = Record.builder("key").build();
primaryCacheStore.merge(record, CacheHeaders.NONE);
primaryCacheStore.clearAll();
assertThat(primaryCacheStore.loadRecord("key", CacheHeaders.NONE)).isNull();
}
use of com.apollographql.apollo.cache.normalized.NormalizedCache in project apollo-android by apollographql.
the class LruNormalizedCacheTest method testClearSecondaryCache.
@Test
public void testClearSecondaryCache() {
LruNormalizedCacheFactory secondaryCacheFactory = new LruNormalizedCacheFactory(EvictionPolicy.NO_EVICTION);
NormalizedCache primaryCache = new LruNormalizedCacheFactory(EvictionPolicy.NO_EVICTION).chain(secondaryCacheFactory).createChain(basicFieldAdapter);
Record record = Record.builder("key").build();
primaryCache.merge(record, CacheHeaders.NONE);
primaryCache.nextCache().get().clearAll();
assertThat(primaryCache.nextCache().get().loadRecord("key", CacheHeaders.NONE)).isNull();
}
use of com.apollographql.apollo.cache.normalized.NormalizedCache in project apollo-android by apollographql.
the class CacheHeadersTest method testDefaultHeadersReceived.
@Test
@SuppressWarnings("CheckReturnValue")
public void testDefaultHeadersReceived() throws Exception {
final AtomicBoolean hasHeader = new AtomicBoolean();
final NormalizedCache normalizedCache = new NormalizedCache() {
@Nullable
@Override
public Record loadRecord(@NonNull String key, @NonNull CacheHeaders cacheHeaders) {
hasHeader.set(cacheHeaders.hasHeader(ApolloCacheHeaders.DO_NOT_STORE));
return null;
}
@Nonnull
@Override
public Set<String> merge(@NonNull Record record, @NonNull CacheHeaders cacheHeaders) {
hasHeader.set(cacheHeaders.hasHeader(ApolloCacheHeaders.DO_NOT_STORE));
return emptySet();
}
@Override
public void clearAll() {
}
@Override
public boolean remove(@Nonnull CacheKey cacheKey) {
return false;
}
@Nonnull
@Override
protected Set<String> performMerge(@Nonnull Record apolloRecord, @Nonnull CacheHeaders cacheHeaders) {
return emptySet();
}
};
final NormalizedCacheFactory<NormalizedCache> cacheFactory = new NormalizedCacheFactory<NormalizedCache>() {
@Override
public NormalizedCache create(RecordFieldJsonAdapter recordFieldAdapter) {
return normalizedCache;
}
};
CacheHeaders cacheHeaders = CacheHeaders.builder().addHeader(ApolloCacheHeaders.DO_NOT_STORE, "true").build();
ApolloClient apolloClient = ApolloClient.builder().normalizedCache(cacheFactory, new IdFieldCacheKeyResolver()).serverUrl(server.url("/")).okHttpClient(new OkHttpClient.Builder().dispatcher(new Dispatcher(Utils.immediateExecutorService())).build()).dispatcher(Utils.immediateExecutor()).defaultCacheHeaders(cacheHeaders).build();
server.enqueue(mockResponse("HeroAndFriendsNameResponse.json"));
Rx2Apollo.from(apolloClient.query(new HeroAndFriendsNamesQuery(Input.fromNullable(Episode.NEWHOPE))).cacheHeaders(cacheHeaders)).test();
assertThat(hasHeader.get()).isTrue();
}
Aggregations