@@ -2771,6 +2771,49 @@ TEST_F(DataConnectionTest, PrepareQueryPermanentError) {
27712771 EXPECT_THAT (result, StatusIs (StatusCode::kPermissionDenied ));
27722772}
27732773
2774+ TEST_F (DataConnectionTest, AsyncPrepareQuerySuccess) {
2775+ auto mock = std::make_shared<MockBigtableStub>();
2776+ EXPECT_CALL (*mock, AsyncPrepareQuery)
2777+ .WillOnce ([](CompletionQueue const &, auto , auto ,
2778+ v2::PrepareQueryRequest const & request) {
2779+ EXPECT_EQ (kAppProfile , request.app_profile_id ());
2780+ EXPECT_EQ (" projects/the-project/instances/the-instance" ,
2781+ request.instance_name ());
2782+ EXPECT_EQ (" SELECT * FROM the-table" , request.query ());
2783+ return make_ready_future (make_status_or (v2::PrepareQueryResponse{}));
2784+ });
2785+
2786+ auto conn = TestConnection (std::move (mock));
2787+ internal::OptionsSpan span (CallOptions ());
2788+ auto params = bigtable::PrepareQueryParams{
2789+ bigtable::InstanceResource (google::cloud::Project (" the-project" ),
2790+ " the-instance" ),
2791+ bigtable::SqlStatement (" SELECT * FROM the-table" )};
2792+ auto future = conn->AsyncPrepareQuery (params);
2793+ auto result = future.get ();
2794+ ASSERT_STATUS_OK (result);
2795+ }
2796+
2797+ TEST_F (DataConnectionTest, AsyncPrepareQueryPermanentError) {
2798+ auto mock = std::make_shared<MockBigtableStub>();
2799+ EXPECT_CALL (*mock, AsyncPrepareQuery)
2800+ .WillOnce (
2801+ [](CompletionQueue&, auto , auto , v2::PrepareQueryRequest const &) {
2802+ return make_ready_future<StatusOr<v2::PrepareQueryResponse>>(
2803+ PermanentError ());
2804+ });
2805+
2806+ auto conn = TestConnection (std::move (mock));
2807+ internal::OptionsSpan span (CallOptions ());
2808+ auto params = bigtable::PrepareQueryParams{
2809+ bigtable::InstanceResource (google::cloud::Project (" the-project" ),
2810+ " the-instance" ),
2811+ bigtable::SqlStatement (" SELECT * FROM the-table" )};
2812+ auto future = conn->AsyncPrepareQuery (params);
2813+ auto result = future.get ();
2814+ EXPECT_THAT (result, StatusIs (StatusCode::kPermissionDenied ));
2815+ }
2816+
27742817} // namespace
27752818GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END
27762819} // namespace bigtable_internal
0 commit comments