From fb3a12d177437501ecc2483aff5bb1244cbcd0cb Mon Sep 17 00:00:00 2001 From: Wu-Hui Date: Wed, 20 Apr 2022 11:28:01 -0400 Subject: [PATCH 1/2] Feedback. --- .../google/firebase/firestore/QueryTest.java | 37 +++++++++++++++++++ .../google/firebase/firestore/core/Query.java | 4 +- 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/firebase-firestore/src/androidTest/java/com/google/firebase/firestore/QueryTest.java b/firebase-firestore/src/androidTest/java/com/google/firebase/firestore/QueryTest.java index 1f4ed810eaa..c7ac43cd2c5 100644 --- a/firebase-firestore/src/androidTest/java/com/google/firebase/firestore/QueryTest.java +++ b/firebase-firestore/src/androidTest/java/com/google/firebase/firestore/QueryTest.java @@ -156,6 +156,43 @@ public void testListenUnlistenRelistenSequenceOfMirrorQueries() { assertEquals(asList(map("k", "e", "sort", -1L), map("k", "a", "sort", -2L)), data); } + @Test + public void testLimitToLastQueriesWithCursors() { + CollectionReference collection = + testCollectionWithDocs( + map( + "a", map("k", "a", "sort", 0), + "b", map("k", "b", "sort", 1), + "c", map("k", "c", "sort", 1), + "d", map("k", "d", "sort", 2))); + + Query query = collection.limitToLast(3).orderBy("sort").endBefore(2); + QuerySnapshot set = waitFor(query.get()); + List> data = querySnapshotToValues(set); + assertEquals( + asList(map("k", "a", "sort", 0L), map("k", "b", "sort", 1L), map("k", "c", "sort", 1L)), + data); + + query = collection.limitToLast(3).orderBy("sort").endAt(1); + set = waitFor(query.get()); + data = querySnapshotToValues(set); + assertEquals( + asList(map("k", "a", "sort", 0L), map("k", "b", "sort", 1L), map("k", "c", "sort", 1L)), + data); + + query = collection.limitToLast(3).orderBy("sort").startAt(2); + set = waitFor(query.get()); + data = querySnapshotToValues(set); + assertEquals(asList(map("k", "d", "sort", 2L)), data); + + query = collection.limitToLast(3).orderBy("sort").startAfter(-1); + set = waitFor(query.get()); + data = querySnapshotToValues(set); + assertEquals( + asList(map("k", "b", "sort", 1L), map("k", "c", "sort", 1L), map("k", "d", "sort", 2L)), + data); + } + @Test public void testKeyOrderIsDescendingForDescendingInequality() { CollectionReference collection = diff --git a/firebase-firestore/src/main/java/com/google/firebase/firestore/core/Query.java b/firebase-firestore/src/main/java/com/google/firebase/firestore/core/Query.java index 896e8292cdb..e788e755f12 100644 --- a/firebase-firestore/src/main/java/com/google/firebase/firestore/core/Query.java +++ b/firebase-firestore/src/main/java/com/google/firebase/firestore/core/Query.java @@ -497,11 +497,11 @@ public Target toTarget() { // We need to swap the cursors to match the now-flipped query ordering. Bound newStartAt = this.endAt != null - ? new Bound(this.endAt.getPosition(), !this.endAt.isInclusive()) + ? new Bound(this.endAt.getPosition(), this.endAt.isInclusive()) : null; Bound newEndAt = this.startAt != null - ? new Bound(this.startAt.getPosition(), !this.startAt.isInclusive()) + ? new Bound(this.startAt.getPosition(), this.startAt.isInclusive()) : null; this.memoizedTarget = From ec31d4a594b7637ec18cf99180f62a78a026310c Mon Sep 17 00:00:00 2001 From: Wu-Hui Date: Wed, 20 Apr 2022 11:34:12 -0400 Subject: [PATCH 2/2] One more test --- .../java/com/google/firebase/firestore/QueryTest.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/firebase-firestore/src/androidTest/java/com/google/firebase/firestore/QueryTest.java b/firebase-firestore/src/androidTest/java/com/google/firebase/firestore/QueryTest.java index c7ac43cd2c5..56834eaa60d 100644 --- a/firebase-firestore/src/androidTest/java/com/google/firebase/firestore/QueryTest.java +++ b/firebase-firestore/src/androidTest/java/com/google/firebase/firestore/QueryTest.java @@ -185,6 +185,13 @@ public void testLimitToLastQueriesWithCursors() { data = querySnapshotToValues(set); assertEquals(asList(map("k", "d", "sort", 2L)), data); + query = collection.limitToLast(3).orderBy("sort").startAfter(0); + set = waitFor(query.get()); + data = querySnapshotToValues(set); + assertEquals( + asList(map("k", "b", "sort", 1L), map("k", "c", "sort", 1L), map("k", "d", "sort", 2L)), + data); + query = collection.limitToLast(3).orderBy("sort").startAfter(-1); set = waitFor(query.get()); data = querySnapshotToValues(set);