3030#include " gmock/gmock.h"
3131#include " gtest/gtest.h"
3232#include " util/event_accumulator.h"
33+ #include " util/future_test_util.h"
3334#if defined(__ANDROID__)
3435#include " firestore/src/android/transaction_android.h"
3536#endif // defined(__ANDROID__)
@@ -743,7 +744,8 @@ TEST_F(TransactionTest, TestMaxAttempts) {
743744
744745 Future<void > run_transaction_future = firestore->RunTransaction (
745746 options,
746- [update_count, &doc](Transaction& transaction, std::string&) -> Error {
747+ [update_count, &doc](Transaction& transaction,
748+ std::string& error_message) -> Error {
747749 SCOPED_TRACE (" Update callback; update_count=" +
748750 std::to_string (update_count->load ()));
749751 ++(*update_count);
@@ -752,12 +754,14 @@ TEST_F(TransactionTest, TestMaxAttempts) {
752754 {
753755 SCOPED_TRACE (" transaction.Get()" );
754756 Error error = Error::kErrorOk ;
755- std::string error_message ;
756- transaction.Get (doc, &error, &error_message );
757+ std::string get_error_message ;
758+ transaction.Get (doc, &error, &get_error_message );
757759 if (error != kErrorOk ) {
758- ADD_FAILURE () << " transaction.Get() failed: " << error_message
759- << " (error code " << error << " )" ;
760- return Error::kErrorInternal ;
760+ ADD_FAILURE () << " transaction.Get() failed at Checkpoint UCA: "
761+ << get_error_message << " (error code " << error
762+ << " ==" << ToFirestoreErrorCodeName (error) << " )" ;
763+ error_message = " Test failed in update callback at Checkpoint UCA" ;
764+ return Error::kErrorInvalidArgument ;
761765 }
762766 }
763767
@@ -768,12 +772,20 @@ TEST_F(TransactionTest, TestMaxAttempts) {
768772 doc.Set ({{" count" , FieldValue::Integer (update_count->load ())}});
769773 set_future.Await (10000L );
770774 if (set_future.status () != FutureStatus::kFutureStatusComplete ) {
771- ADD_FAILURE () << " Timeout waiting for doc.Set() to complete" ;
772- return Error::kErrorInternal ;
775+ ADD_FAILURE () << " Timeout waiting for doc.Set() to complete at "
776+ " Checkpoint UCB; status() returned: "
777+ << set_future.status ()
778+ << " ==" << ToEnumeratorName (set_future.status ());
779+ error_message = " Test failed in update callback at Checkpoint UCB" ;
780+ return Error::kErrorInvalidArgument ;
773781 } else if (set_future.error () != Error::kErrorOk ) {
774- ADD_FAILURE () << " doc.Set() failed: " << set_future.error_message ()
775- << " (error code " << set_future.error () << " )" ;
776- return Error::kErrorInternal ;
782+ ADD_FAILURE () << " doc.Set() failed at Checkpoint UCC: "
783+ << set_future.error_message () << " (error code "
784+ << set_future.error () << " =="
785+ << ToFirestoreErrorCodeName (set_future.error ())
786+ << " )" ;
787+ error_message = " Test failed in update callback at Checkpoint UCC" ;
788+ return Error::kErrorInvalidArgument ;
777789 }
778790 }
779791
@@ -790,9 +802,16 @@ TEST_F(TransactionTest, TestMaxAttempts) {
790802 SCOPED_TRACE (" Waiting for Future returned from RunTransaction()" );
791803 Await (run_transaction_future);
792804 ASSERT_EQ (run_transaction_future.status (),
793- FutureStatus::kFutureStatusComplete );
794- EXPECT_EQ (run_transaction_future.error (), Error::kErrorFailedPrecondition )
795- << " error message: " << run_transaction_future.error_message ();
805+ FutureStatus::kFutureStatusComplete )
806+ << " run_transaction_future.status() returned: "
807+ << run_transaction_future.status ()
808+ << " ==" << ToEnumeratorName (run_transaction_future.status ());
809+ ASSERT_EQ (run_transaction_future.error (), Error::kErrorFailedPrecondition )
810+ << " error message: " << run_transaction_future.error_message ()
811+ << " (run_transaction_future.error() returned "
812+ << run_transaction_future.error ()
813+ << " ==" << ToFirestoreErrorCodeName (run_transaction_future.error ())
814+ << " )" ;
796815 }
797816
798817 EXPECT_EQ (update_count->load (), 3 );
0 commit comments