Search in sources :

Example 1 with CacheReference

use of com.apollographql.apollo.cache.normalized.CacheReference in project apollo-android by apollographql.

the class ResponseNormalizationTest method testHeroAndFriendsNamesQueryWithIDs.

@Test
public void testHeroAndFriendsNamesQueryWithIDs() throws Exception {
    assertHasNoErrors("HeroAndFriendsNameWithIdsResponse.json", new HeroAndFriendsNamesWithIDsQuery(Input.fromNullable(JEDI)));
    Record record = normalizedCache.loadRecord(QUERY_ROOT_KEY, CacheHeaders.NONE);
    CacheReference heroReference = (CacheReference) record.field(TEST_FIELD_KEY_JEDI);
    assertThat(heroReference).isEqualTo(new CacheReference("2001"));
    final Record heroRecord = normalizedCache.loadRecord(heroReference.key(), CacheHeaders.NONE);
    assertThat(heroRecord.field("name")).isEqualTo("R2-D2");
    assertThat(heroRecord.field("friends")).isEqualTo(Arrays.asList(new CacheReference("1000"), new CacheReference("1002"), new CacheReference("1003")));
    final Record luke = normalizedCache.loadRecord("1000", CacheHeaders.NONE);
    assertThat(luke.field("name")).isEqualTo("Luke Skywalker");
}
Also used : HeroAndFriendsNamesWithIDsQuery(com.apollographql.apollo.integration.normalizer.HeroAndFriendsNamesWithIDsQuery) Record(com.apollographql.apollo.cache.normalized.Record) CacheReference(com.apollographql.apollo.cache.normalized.CacheReference) Test(org.junit.Test)

Example 2 with CacheReference

use of com.apollographql.apollo.cache.normalized.CacheReference in project apollo-android by apollographql.

the class ResponseNormalizationTest method testHeroAndFriendsNamesWithIDForParentOnly.

@Test
public void testHeroAndFriendsNamesWithIDForParentOnly() throws Exception {
    assertHasNoErrors("HeroAndFriendsNameWithIdsParentOnlyResponse.json", new HeroAndFriendsNamesWithIDForParentOnlyQuery(Input.fromNullable(JEDI)));
    Record record = normalizedCache.loadRecord(QUERY_ROOT_KEY, CacheHeaders.NONE);
    CacheReference heroReference = (CacheReference) record.field(TEST_FIELD_KEY_JEDI);
    assertThat(heroReference).isEqualTo(new CacheReference("2001"));
    final Record heroRecord = normalizedCache.loadRecord(heroReference.key(), CacheHeaders.NONE);
    assertThat(heroRecord.field("name")).isEqualTo("R2-D2");
    assertThat(heroRecord.field("friends")).isEqualTo(Arrays.asList(new CacheReference("2001.friends.0"), new CacheReference("2001.friends.1"), new CacheReference("2001.friends.2")));
    final Record luke = normalizedCache.loadRecord("2001.friends.0", CacheHeaders.NONE);
    assertThat(luke.field("name")).isEqualTo("Luke Skywalker");
}
Also used : HeroAndFriendsNamesWithIDForParentOnlyQuery(com.apollographql.apollo.integration.normalizer.HeroAndFriendsNamesWithIDForParentOnlyQuery) Record(com.apollographql.apollo.cache.normalized.Record) CacheReference(com.apollographql.apollo.cache.normalized.CacheReference) Test(org.junit.Test)

Example 3 with CacheReference

use of com.apollographql.apollo.cache.normalized.CacheReference in project apollo-android by apollographql.

the class ResponseNormalizationTest method testHeroAndFriendsNamesQueryWithoutIDs.

@Test
public void testHeroAndFriendsNamesQueryWithoutIDs() throws Exception {
    assertHasNoErrors("HeroAndFriendsNameResponse.json", new HeroAndFriendsNamesQuery(Input.fromNullable(JEDI)));
    Record record = normalizedCache.loadRecord(QUERY_ROOT_KEY, CacheHeaders.NONE);
    CacheReference heroReference = (CacheReference) record.field(TEST_FIELD_KEY_JEDI);
    assertThat(heroReference).isEqualTo(new CacheReference(TEST_FIELD_KEY_JEDI));
    final Record heroRecord = normalizedCache.loadRecord(heroReference.key(), CacheHeaders.NONE);
    assertThat(heroRecord.field("name")).isEqualTo("R2-D2");
    assertThat(heroRecord.field("friends")).isEqualTo(Arrays.asList(new CacheReference(TEST_FIELD_KEY_JEDI + ".friends.0"), new CacheReference(TEST_FIELD_KEY_JEDI + ".friends.1"), new CacheReference(TEST_FIELD_KEY_JEDI + ".friends.2")));
    final Record luke = normalizedCache.loadRecord(TEST_FIELD_KEY_JEDI + ".friends.0", CacheHeaders.NONE);
    assertThat(luke.field("name")).isEqualTo("Luke Skywalker");
}
Also used : HeroAndFriendsNamesQuery(com.apollographql.apollo.integration.normalizer.HeroAndFriendsNamesQuery) Record(com.apollographql.apollo.cache.normalized.Record) CacheReference(com.apollographql.apollo.cache.normalized.CacheReference) Test(org.junit.Test)

Example 4 with CacheReference

use of com.apollographql.apollo.cache.normalized.CacheReference in project apollo-android by apollographql.

the class ResponseNormalizationTest method testHeroParentTypeDependentAliasedFieldQueryHuman.

@Test
public void testHeroParentTypeDependentAliasedFieldQueryHuman() throws Exception {
    assertHasNoErrors("HeroTypeDependentAliasedFieldResponseHuman.json", new HeroTypeDependentAliasedFieldQuery(Input.fromNullable(EMPIRE)));
    Record record = normalizedCache.loadRecord(QUERY_ROOT_KEY, CacheHeaders.NONE);
    CacheReference heroReference = (CacheReference) record.field(TEST_FIELD_KEY_EMPIRE);
    final Record hero = normalizedCache.loadRecord(heroReference.key(), CacheHeaders.NONE);
    assertThat(hero.field("homePlanet")).isEqualTo("Tatooine");
    assertThat(hero.field("__typename")).isEqualTo("Human");
}
Also used : HeroTypeDependentAliasedFieldQuery(com.apollographql.apollo.integration.normalizer.HeroTypeDependentAliasedFieldQuery) Record(com.apollographql.apollo.cache.normalized.Record) CacheReference(com.apollographql.apollo.cache.normalized.CacheReference) Test(org.junit.Test)

Example 5 with CacheReference

use of com.apollographql.apollo.cache.normalized.CacheReference in project apollo-android by apollographql.

the class ResponseNormalizer method didResolveObject.

@Override
public void didResolveObject(ResponseField field, Optional<R> objectSource) {
    path = pathStack.pop();
    if (objectSource.isPresent()) {
        Record completedRecord = currentRecordBuilder.build();
        valueStack.push(new CacheReference(completedRecord.key()));
        dependentKeys.add(completedRecord.key());
        recordSet.merge(completedRecord);
    }
    currentRecordBuilder = recordStack.pop().toBuilder();
}
Also used : Record(com.apollographql.apollo.cache.normalized.Record) CacheReference(com.apollographql.apollo.cache.normalized.CacheReference)

Aggregations

CacheReference (com.apollographql.apollo.cache.normalized.CacheReference)15 Record (com.apollographql.apollo.cache.normalized.Record)15 Test (org.junit.Test)12 HeroTypeDependentAliasedFieldQuery (com.apollographql.apollo.integration.normalizer.HeroTypeDependentAliasedFieldQuery)3 EpisodeHeroNameQuery (com.apollographql.apollo.integration.normalizer.EpisodeHeroNameQuery)2 List (java.util.List)2 CacheKey (com.apollographql.apollo.cache.normalized.CacheKey)1 HeroAndFriendsNamesQuery (com.apollographql.apollo.integration.normalizer.HeroAndFriendsNamesQuery)1 HeroAndFriendsNamesWithIDForParentOnlyQuery (com.apollographql.apollo.integration.normalizer.HeroAndFriendsNamesWithIDForParentOnlyQuery)1 HeroAndFriendsNamesWithIDsQuery (com.apollographql.apollo.integration.normalizer.HeroAndFriendsNamesWithIDsQuery)1 HeroAppearsInQuery (com.apollographql.apollo.integration.normalizer.HeroAppearsInQuery)1 HeroNameQuery (com.apollographql.apollo.integration.normalizer.HeroNameQuery)1 HeroParentTypeDependentFieldQuery (com.apollographql.apollo.integration.normalizer.HeroParentTypeDependentFieldQuery)1 SameHeroTwiceQuery (com.apollographql.apollo.integration.normalizer.SameHeroTwiceQuery)1 BigDecimal (java.math.BigDecimal)1 ArrayList (java.util.ArrayList)1