@@ -22,6 +22,7 @@ import com.apollographql.cache.normalized.storeReceivedDate
2222import com.apollographql.mockserver.MockResponse
2323import com.apollographql.mockserver.MockServer
2424import declarative.GetUserNameQuery
25+ import declarative.cache.Cache.cache
2526import kotlinx.coroutines.flow.Flow
2627import kotlinx.coroutines.test.runTest
2728import kotlin.test.Test
@@ -97,4 +98,34 @@ class StaleTest {
9798 awaitComplete()
9899 }
99100 }
101+
102+ @Test
103+ fun unknownAgeConsideredStale () = runTest {
104+ val apolloClient = ApolloClient .Builder ()
105+ .serverUrl(" http://unused" )
106+ .cache(MemoryCacheFactory ())
107+ .build()
108+
109+ apolloClient.apolloStore.writeOperation(
110+ operation = GetUserNameQuery (),
111+ data = GetUserNameQuery .Data (
112+ GetUserNameQuery .User (
113+ __typename = " User" ,
114+ name = " John Doe" ,
115+ ),
116+ ),
117+ )
118+ val response = apolloClient
119+ .query(GetUserNameQuery ())
120+ .fetchPolicy(FetchPolicy .CacheOnly )
121+ .execute()
122+
123+ // No stored received date, so age can't be computed -> considered stale
124+ assertIs<ApolloResponse <GetUserNameQuery .Data >>(response)
125+ assertEquals(true , response.cacheInfo?.isStale)
126+ assertNull(response.data)
127+ assertNotNull(response.exception)
128+ assertIs<CacheMissException >(response.exception)
129+ assertEquals(true , response.isFromCache)
130+ }
100131}
0 commit comments