|
13 | 13 | namespace firebase {
|
14 | 14 | namespace firestore {
|
15 | 15 |
|
16 |
| -#if defined(__ANDROID__) |
17 |
| - |
18 | 16 | using DocumentChangeTest = FirestoreIntegrationTest;
|
19 | 17 |
|
| 18 | +#if defined(__ANDROID__) |
| 19 | + |
20 | 20 | TEST_F(DocumentChangeTest, Construction) {
|
21 | 21 | testutil::AssertWrapperConstructionContract<DocumentChange,
|
22 | 22 | DocumentChangeInternal>();
|
@@ -78,5 +78,67 @@ TEST_F(DocumentChangeTest, TestDocumentChanges) {
|
78 | 78 |
|
79 | 79 | #endif // defined(__ANDROID__)
|
80 | 80 |
|
| 81 | +TEST_F(DocumentChangeTest, Equality) { |
| 82 | + DocumentChange invalid_change_1 = DocumentChange(); |
| 83 | + DocumentChange invalid_change_2 = DocumentChange(); |
| 84 | + |
| 85 | + EXPECT_TRUE(invalid_change_1 == invalid_change_2); |
| 86 | + EXPECT_FALSE(invalid_change_1 != invalid_change_2); |
| 87 | + |
| 88 | + CollectionReference collection = Collection(); |
| 89 | + Query query = collection.OrderBy("a"); |
| 90 | + |
| 91 | + DocumentReference doc1 = collection.Document("1"); |
| 92 | + DocumentReference doc2 = collection.Document("2"); |
| 93 | + |
| 94 | + TestEventListener<QuerySnapshot> listener("TestDocumentChanges"); |
| 95 | + ListenerRegistration registration = listener.AttachTo(&query); |
| 96 | + Await(listener); |
| 97 | + QuerySnapshot snapshot = listener.last_result(); |
| 98 | + EXPECT_EQ(snapshot.size(), 0); |
| 99 | + |
| 100 | + WriteDocument(doc1, MapFieldValue{{"a", FieldValue::Integer(1)}}); |
| 101 | + Await(listener); |
| 102 | + snapshot = listener.last_result(); |
| 103 | + |
| 104 | + std::vector<DocumentChange> changes = snapshot.DocumentChanges(); |
| 105 | + EXPECT_EQ(changes.size(), 1); |
| 106 | + // first_change: Added doc1. |
| 107 | + auto first_change = changes[0]; |
| 108 | + EXPECT_TRUE(first_change == first_change); |
| 109 | + EXPECT_TRUE(first_change != invalid_change_1); |
| 110 | + EXPECT_FALSE(first_change != first_change); |
| 111 | + EXPECT_FALSE(first_change == invalid_change_1); |
| 112 | + |
| 113 | + WriteDocument(doc2, MapFieldValue{{"a", FieldValue::Integer(2)}}); |
| 114 | + Await(listener, 2); |
| 115 | + snapshot = listener.last_result(); |
| 116 | + |
| 117 | + changes = snapshot.DocumentChanges(); |
| 118 | + EXPECT_EQ(changes.size(), 1); |
| 119 | + // second_change: Added doc2. |
| 120 | + auto second_change = changes[0]; |
| 121 | + EXPECT_TRUE(second_change != first_change); |
| 122 | + EXPECT_TRUE(second_change != invalid_change_1); |
| 123 | + EXPECT_FALSE(second_change == first_change); |
| 124 | + EXPECT_FALSE(second_change == invalid_change_1); |
| 125 | + |
| 126 | + // Make doc2 ordered before doc1. |
| 127 | + WriteDocument(doc2, MapFieldValue{{"a", FieldValue::Integer(0)}}); |
| 128 | + Await(listener, 3); |
| 129 | + snapshot = listener.last_result(); |
| 130 | + |
| 131 | + changes = snapshot.DocumentChanges(); |
| 132 | + EXPECT_EQ(changes.size(), 1); |
| 133 | + // third_change: Modified doc2. |
| 134 | + auto third_change = changes[0]; |
| 135 | + EXPECT_TRUE(third_change != first_change); |
| 136 | + EXPECT_TRUE(third_change != second_change); |
| 137 | + EXPECT_TRUE(third_change != invalid_change_1); |
| 138 | + EXPECT_FALSE(third_change == first_change); |
| 139 | + EXPECT_FALSE(third_change == second_change); |
| 140 | + EXPECT_FALSE(third_change == invalid_change_1); |
| 141 | +} |
| 142 | + |
81 | 143 | } // namespace firestore
|
82 | 144 | } // namespace firebase
|
0 commit comments