@@ -2730,13 +2730,45 @@ TEST_F(DataConnectionTest, ExecuteQuery) {
27302730 StatusIs (StatusCode::kUnimplemented ));
27312731}
27322732
2733- TEST_F (DataConnectionTest, PrepareQuery) {
2734- auto conn = TestConnection (std::make_shared<MockBigtableStub>());
2733+ TEST_F (DataConnectionTest, PrepareQuerySuccess) {
2734+ auto mock = std::make_shared<MockBigtableStub>();
2735+ EXPECT_CALL (*mock, PrepareQuery)
2736+ .WillOnce ([](grpc::ClientContext&, Options const &,
2737+ v2::PrepareQueryRequest const & request) {
2738+ EXPECT_EQ (kAppProfile , request.app_profile_id ());
2739+ EXPECT_EQ (" projects/the-project/instances/the-instance" ,
2740+ request.instance_name ());
2741+ EXPECT_EQ (" SELECT * FROM the-table" , request.query ());
2742+ v2::PrepareQueryResponse response;
2743+ return response;
2744+ });
2745+
2746+ auto conn = TestConnection (std::move (mock));
27352747 internal::OptionsSpan span (CallOptions ());
2736- EXPECT_THAT (conn->PrepareQuery (bigtable::PrepareQueryParams{
2737- bigtable::InstanceResource (google::cloud::Project (" " ), " " ),
2738- bigtable::SqlStatement (" " )}),
2739- StatusIs (StatusCode::kUnimplemented ));
2748+ auto params = bigtable::PrepareQueryParams{
2749+ bigtable::InstanceResource (google::cloud::Project (" the-project" ),
2750+ " the-instance" ),
2751+ bigtable::SqlStatement (" SELECT * FROM the-table" )};
2752+ auto prepared_query = conn->PrepareQuery (params);
2753+ ASSERT_STATUS_OK (prepared_query);
2754+ EXPECT_EQ (prepared_query->instance (), params.instance );
2755+ EXPECT_EQ (prepared_query->sql_statement (), params.sql_statement );
2756+ }
2757+
2758+ TEST_F (DataConnectionTest, PrepareQueryPermanentError) {
2759+ auto mock = std::make_shared<MockBigtableStub>();
2760+ EXPECT_CALL (*mock, PrepareQuery)
2761+ .WillOnce (
2762+ [](grpc::ClientContext&, Options const &,
2763+ v2::PrepareQueryRequest const &) { return PermanentError (); });
2764+
2765+ auto conn = TestConnection (std::move (mock));
2766+ internal::OptionsSpan span (CallOptions ());
2767+ auto result = conn->PrepareQuery (bigtable::PrepareQueryParams{
2768+ bigtable::InstanceResource (google::cloud::Project (" the-project" ),
2769+ " the-instance" ),
2770+ bigtable::SqlStatement (" SELECT * FROM the-table" )});
2771+ EXPECT_THAT (result, StatusIs (StatusCode::kPermissionDenied ));
27402772}
27412773
27422774} // namespace
0 commit comments