@@ -141,8 +141,7 @@ void FirestoreIntegrationTest::WriteDocument(DocumentReference reference,
141141 const MapFieldValue& data) const {
142142 Future<void > future = reference.Set (data);
143143 Await (future);
144- EXPECT_EQ (FutureStatus::kFutureStatusComplete , future.status ());
145- EXPECT_EQ (0 , future.error ()) << DescribeFailedFuture (future) << std::endl;
144+ FailIfUnsuccessful (" WriteDocument" , future);
146145}
147146
148147void FirestoreIntegrationTest::WriteDocuments (
@@ -157,28 +156,29 @@ DocumentSnapshot FirestoreIntegrationTest::ReadDocument(
157156 const DocumentReference& reference) const {
158157 Future<DocumentSnapshot> future = reference.Get ();
159158 const DocumentSnapshot* result = Await (future);
160- EXPECT_EQ (FutureStatus::kFutureStatusComplete , future.status ());
161- EXPECT_EQ (0 , future.error ()) << DescribeFailedFuture (future) << std::endl;
162- EXPECT_NE (nullptr , result) << DescribeFailedFuture (future) << std::endl;
163- return *result;
159+ if (FailIfUnsuccessful (" ReadDocument" , future)) {
160+ return {};
161+ } else {
162+ return *result;
163+ }
164164}
165165
166166QuerySnapshot FirestoreIntegrationTest::ReadDocuments (
167167 const Query& reference) const {
168168 Future<QuerySnapshot> future = reference.Get ();
169169 const QuerySnapshot* result = Await (future);
170- EXPECT_EQ (FutureStatus::kFutureStatusComplete , future.status ());
171- EXPECT_EQ (0 , future.error ()) << DescribeFailedFuture (future) << std::endl;
172- EXPECT_NE (nullptr , result) << DescribeFailedFuture (future) << std::endl;
173- return *result;
170+ if (FailIfUnsuccessful (" ReadDocuments" , future)) {
171+ return {};
172+ } else {
173+ return *result;
174+ }
174175}
175176
176177void FirestoreIntegrationTest::DeleteDocument (
177178 DocumentReference reference) const {
178179 Future<void > future = reference.Delete ();
179180 Await (future);
180- EXPECT_EQ (FutureStatus::kFutureStatusComplete , future.status ());
181- EXPECT_EQ (0 , future.error ()) << DescribeFailedFuture (future) << std::endl;
181+ FailIfUnsuccessful (" DeleteDocument" , future);
182182}
183183
184184std::vector<std::string> FirestoreIntegrationTest::QuerySnapshotToIds (
@@ -210,6 +210,29 @@ void FirestoreIntegrationTest::Await(const Future<void>& future) {
210210 }
211211}
212212
213+ /* static */
214+ bool FirestoreIntegrationTest::FailIfUnsuccessful (const char * operation,
215+ const FutureBase& future) {
216+ if (future.status () != FutureStatus::kFutureStatusComplete ) {
217+ ADD_FAILURE () << operation << " timed out: " << DescribeFailedFuture (future)
218+ << std::endl;
219+ return true ;
220+ } else if (future.error () != Error::kErrorOk ) {
221+ ADD_FAILURE () << operation << " failed: " << DescribeFailedFuture (future)
222+ << std::endl;
223+ return true ;
224+ } else {
225+ return false ;
226+ }
227+ }
228+
229+ /* static */
230+ std::string FirestoreIntegrationTest::DescribeFailedFuture (
231+ const FutureBase& future) {
232+ return " WARNING: Future failed. Error code " +
233+ std::to_string (future.error ()) + " , message " + future.error_message ();
234+ }
235+
213236void FirestoreIntegrationTest::TerminateAndRelease (Firestore* firestore) {
214237 Await (firestore->Terminate ());
215238 Release (firestore);
0 commit comments