package com.apollographql.apollo.internal; import com.apollographql.apollo.ApolloClient; import com.apollographql.apollo.api.OperationName; import com.apollographql.apollo.api.Query; import com.apollographql.apollo.api.ResponseFieldMapper; import com.apollographql.apollo.api.ResponseReader; import com.apollographql.apollo.cache.http.HttpCachePolicy; import com.apollographql.apollo.cache.normalized.CacheControl; import com.apollographql.apollo.internal.cache.http.HttpCacheFetchStrategy; import org.junit.Before; import org.junit.Test; import java.io.IOException; import javax.annotation.Nonnull; import okhttp3.OkHttpClient; import static com.google.common.truth.Truth.assertThat; public class CacheControlTest { private OkHttpClient okHttpClient; private Query emptyQuery; @Before public void setUp() { okHttpClient = new OkHttpClient.Builder().build(); emptyQuery = new Query() { @Override public String queryDocument() { return ""; } @Override public Variables variables() { return EMPTY_VARIABLES; } @Override public ResponseFieldMapper<Data> responseFieldMapper() { return new ResponseFieldMapper<Data>() { @Override public Data map(ResponseReader responseReader) throws IOException { return null; } }; } @Nonnull @Override public OperationName name() { return null; } @Override public Object wrapData(Data data) { return data; } }; } @Test public void setDefaultCachePolicy() { ApolloClient apolloClient = ApolloClient.builder() .serverUrl("http://google.com") .okHttpClient(okHttpClient) .defaultHttpCachePolicy(HttpCachePolicy.CACHE_ONLY) .defaultCacheControl(CacheControl.NETWORK_ONLY) .build(); RealApolloCall realApolloCall = (RealApolloCall) apolloClient.query(emptyQuery); assertThat(realApolloCall.httpCachePolicy.fetchStrategy).isEqualTo(HttpCacheFetchStrategy.CACHE_ONLY); assertThat(realApolloCall.cacheControl).isEqualTo(CacheControl.NETWORK_ONLY); } @Test public void defaultCacheControl() { ApolloClient apolloClient = ApolloClient.builder() .serverUrl("http://google.com") .okHttpClient(okHttpClient) .build(); RealApolloCall realApolloCall = (RealApolloCall) apolloClient.query(emptyQuery); assertThat(realApolloCall.httpCachePolicy.fetchStrategy).isEqualTo(HttpCacheFetchStrategy.NETWORK_ONLY); assertThat(realApolloCall.cacheControl).isEqualTo(CacheControl.CACHE_FIRST); } }