Search in sources :

Example 31 with Query

use of com.google.firebase.firestore.core.Query in project firebase-android-sdk by firebase.

the class TargetIndexMatcherTest method withMultipleNotIn.

@Test
public void withMultipleNotIn() {
    Query q = query("collId").filter(filter("a", "not-in", Arrays.asList(1, 2, 3))).filter(filter("a", ">=", 2));
    validateServesTarget(q, "a", FieldIndex.Segment.Kind.ASCENDING);
}
Also used : Query(com.google.firebase.firestore.core.Query) Test(org.junit.Test)

Example 32 with Query

use of com.google.firebase.firestore.core.Query in project firebase-android-sdk by firebase.

the class SQLiteSchemaTest method rewritesCanonicalIds.

@Test
public void rewritesCanonicalIds() {
    schema.runSchemaUpgrades(0, 10);
    Query filteredQuery = query("colletion").filter(filter("foo", "==", "bar"));
    TargetData initialTargetData = new TargetData(filteredQuery.toTarget(), /* targetId= */
    2, /* sequenceNumber= */
    1, QueryPurpose.LISTEN);
    db.execSQL("INSERT INTO targets (target_id, canonical_id, target_proto) VALUES (? ,?, ?)", new Object[] { 2, "invalid_canonical_id", serializer.encodeTargetData(initialTargetData).toByteArray() });
    schema.runSchemaUpgrades(10, 11);
    new SQLitePersistence.Query(db, "SELECT canonical_id, target_proto, canonical_id FROM targets").forEach(cursor -> {
        String actualCanonicalId = cursor.getString(0);
        byte[] targetProtoBytes = cursor.getBlob(1);
        try {
            Target targetProto = Target.parseFrom(targetProtoBytes);
            TargetData targetData = serializer.decodeTargetData(targetProto);
            String expectedCanonicalId = targetData.getTarget().getCanonicalId();
            assertEquals(expectedCanonicalId, actualCanonicalId);
        } catch (InvalidProtocolBufferException e) {
            fail("Failed to decode Target data");
        }
    });
}
Also used : Target(com.google.firebase.firestore.proto.Target) Query(com.google.firebase.firestore.core.Query) InvalidProtocolBufferException(com.google.protobuf.InvalidProtocolBufferException) Test(org.junit.Test)

Example 33 with Query

use of com.google.firebase.firestore.core.Query in project firebase-android-sdk by firebase.

the class RemoteSerializerTest method testEncodesFirstLevelAncestorQueries.

@Test
public void testEncodesFirstLevelAncestorQueries() {
    Query q = Query.atPath(ResourcePath.fromString("messages"));
    Target actual = serializer.encodeTarget(wrapTargetData(q));
    StructuredQuery.Builder structuredQueryBuilder = StructuredQuery.newBuilder().addFrom(CollectionSelector.newBuilder().setCollectionId("messages")).addOrderBy(defaultKeyOrder());
    QueryTarget.Builder queryBuilder = QueryTarget.newBuilder().setParent("projects/p/databases/d/documents").setStructuredQuery(structuredQueryBuilder);
    Target expected = Target.newBuilder().setQuery(queryBuilder).setTargetId(1).setResumeToken(ByteString.EMPTY).build();
    assertEquals(expected, actual);
    assertEquals(serializer.decodeQueryTarget(serializer.encodeQueryTarget(q.toTarget())), q.toTarget());
}
Also used : StructuredQuery(com.google.firestore.v1.StructuredQuery) QueryTarget(com.google.firestore.v1.Target.QueryTarget) DocumentsTarget(com.google.firestore.v1.Target.DocumentsTarget) Target(com.google.firestore.v1.Target) QueryTarget(com.google.firestore.v1.Target.QueryTarget) StructuredQuery(com.google.firestore.v1.StructuredQuery) Query(com.google.firebase.firestore.core.Query) Test(org.junit.Test)

Example 34 with Query

use of com.google.firebase.firestore.core.Query in project firebase-android-sdk by firebase.

the class RemoteSerializerTest method testEncodesSortOrders.

@Test
public void testEncodesSortOrders() {
    Query q = Query.atPath(ResourcePath.fromString("docs")).orderBy(orderBy("prop"));
    Target actual = serializer.encodeTarget(wrapTargetData(q));
    StructuredQuery.Builder structuredQueryBuilder = StructuredQuery.newBuilder().addFrom(CollectionSelector.newBuilder().setCollectionId("docs")).addOrderBy(Order.newBuilder().setDirection(Direction.ASCENDING).setField(FieldReference.newBuilder().setFieldPath("prop"))).addOrderBy(defaultKeyOrder());
    QueryTarget.Builder queryBuilder = QueryTarget.newBuilder().setParent("projects/p/databases/d/documents").setStructuredQuery(structuredQueryBuilder);
    Target expected = Target.newBuilder().setQuery(queryBuilder).setTargetId(1).setResumeToken(ByteString.EMPTY).build();
    assertEquals(expected, actual);
    assertEquals(serializer.decodeQueryTarget(serializer.encodeQueryTarget(q.toTarget())), q.toTarget());
}
Also used : StructuredQuery(com.google.firestore.v1.StructuredQuery) QueryTarget(com.google.firestore.v1.Target.QueryTarget) DocumentsTarget(com.google.firestore.v1.Target.DocumentsTarget) Target(com.google.firestore.v1.Target) QueryTarget(com.google.firestore.v1.Target.QueryTarget) StructuredQuery(com.google.firestore.v1.StructuredQuery) Query(com.google.firebase.firestore.core.Query) Test(org.junit.Test)

Example 35 with Query

use of com.google.firebase.firestore.core.Query in project firebase-android-sdk by firebase.

the class RemoteSerializerTest method testEncodesResumeTokens.

@Test
public void testEncodesResumeTokens() {
    Query q = Query.atPath(ResourcePath.fromString("docs"));
    TargetData targetData = new TargetData(q.toTarget(), 1, 2, QueryPurpose.LISTEN).withResumeToken(TestUtil.resumeToken(1000), SnapshotVersion.NONE);
    Target actual = serializer.encodeTarget(targetData);
    StructuredQuery.Builder structuredQueryBuilder = StructuredQuery.newBuilder().addFrom(CollectionSelector.newBuilder().setCollectionId("docs")).addOrderBy(defaultKeyOrder());
    QueryTarget.Builder queryBuilder = QueryTarget.newBuilder().setParent("projects/p/databases/d/documents").setStructuredQuery(structuredQueryBuilder);
    Target expected = Target.newBuilder().setQuery(queryBuilder).setTargetId(1).setResumeToken(TestUtil.resumeToken(1000)).build();
    assertEquals(expected, actual);
    assertEquals(serializer.decodeQueryTarget(serializer.encodeQueryTarget(q.toTarget())), q.toTarget());
}
Also used : TargetData(com.google.firebase.firestore.local.TargetData) StructuredQuery(com.google.firestore.v1.StructuredQuery) QueryTarget(com.google.firestore.v1.Target.QueryTarget) DocumentsTarget(com.google.firestore.v1.Target.DocumentsTarget) Target(com.google.firestore.v1.Target) QueryTarget(com.google.firestore.v1.Target.QueryTarget) StructuredQuery(com.google.firestore.v1.StructuredQuery) Query(com.google.firebase.firestore.core.Query) Test(org.junit.Test)

Aggregations

Query (com.google.firebase.firestore.core.Query)189 Test (org.junit.Test)179 BundledQuery (com.google.firebase.firestore.bundle.BundledQuery)40 NamedQuery (com.google.firebase.firestore.bundle.NamedQuery)39 StructuredQuery (com.google.firestore.v1.StructuredQuery)16 Target (com.google.firestore.v1.Target)13 DocumentsTarget (com.google.firestore.v1.Target.DocumentsTarget)13 QueryTarget (com.google.firestore.v1.Target.QueryTarget)13 DocumentSet (com.google.firebase.firestore.model.DocumentSet)12 MutableDocument (com.google.firebase.firestore.model.MutableDocument)8 ArrayList (java.util.ArrayList)8 TargetData (com.google.firebase.firestore.local.TargetData)7 FieldIndex (com.google.firebase.firestore.model.FieldIndex)7 DocumentKey (com.google.firebase.firestore.model.DocumentKey)6 ByteString (com.google.protobuf.ByteString)5 Document (com.google.firebase.firestore.model.Document)4 HashMap (java.util.HashMap)4 Target (com.google.firebase.firestore.core.Target)3 SnapshotVersion (com.google.firebase.firestore.model.SnapshotVersion)3 Map (java.util.Map)3