1313// limitations under the License.
1414
1515#include " google/cloud/bigtable/client.h"
16+ #include " google/cloud/bigtable/internal/query_plan.h"
1617#include " google/cloud/bigtable/mocks/mock_data_connection.h"
1718#include " google/cloud/bigtable/mocks/mock_query_row.h"
1819#include " google/cloud/bigtable/mocks/mock_row_reader.h"
@@ -44,9 +45,18 @@ TEST(Client, PrepareQuery) {
4445 EXPECT_EQ (" projects/the-project/instances/the-instance" ,
4546 params.instance .FullName ());
4647 EXPECT_EQ (" SELECT * FROM the-table" , params.sql_statement .sql ());
47- PreparedQuery q (CompletionQueue{fake_cq_impl}, params.instance ,
48- params.sql_statement , PrepareQueryResponse{});
49- return q;
48+
49+ std::unordered_map<std::string, bigtable::Value> parameters;
50+ google::bigtable::v2::PrepareQueryResponse pq_response;
51+ auto refresh_fn = [&pq_response]() {
52+ return make_ready_future (
53+ StatusOr<google::bigtable::v2::PrepareQueryResponse>(
54+ pq_response));
55+ };
56+ auto query_plan = bigtable_internal::QueryPlan::Create (
57+ CompletionQueue (fake_cq_impl), std::move (pq_response),
58+ std::move (refresh_fn));
59+ return bigtable::PreparedQuery (instance, sql, std::move (query_plan));
5060 });
5161
5262 Client client (std::move (conn_mock));
@@ -67,9 +77,20 @@ TEST(Client, AsyncPrepareQuery) {
6777 EXPECT_EQ (" projects/the-project/instances/the-instance" ,
6878 params.instance .FullName ());
6979 EXPECT_EQ (" SELECT * FROM the-table" , params.sql_statement .sql ());
70- PreparedQuery q (CompletionQueue{fake_cq_impl}, params.instance ,
71- params.sql_statement , PrepareQueryResponse{});
72- return make_ready_future (make_status_or (std::move (q)));
80+
81+ std::unordered_map<std::string, bigtable::Value> parameters;
82+ google::bigtable::v2::PrepareQueryResponse pq_response;
83+ auto refresh_fn = [&pq_response]() {
84+ return make_ready_future (
85+ StatusOr<google::bigtable::v2::PrepareQueryResponse>(
86+ pq_response));
87+ };
88+ auto query_plan = bigtable_internal::QueryPlan::Create (
89+ CompletionQueue (fake_cq_impl), std::move (pq_response),
90+ std::move (refresh_fn));
91+ StatusOr<bigtable::PreparedQuery> result =
92+ bigtable::PreparedQuery (instance, sql, std::move (query_plan));
93+ return make_ready_future (result);
7394 });
7495 Client client (std::move (conn_mock));
7596 auto prepared_query = client.AsyncPrepareQuery (instance, sql);
@@ -111,30 +132,28 @@ TEST(ClientTest, ExecuteQuery) {
111132 ASSERT_TRUE (google::protobuf::TextFormat::ParseFromString (
112133 kResultMetadataText , pq_response.mutable_metadata ()));
113134 EXPECT_CALL (*conn_mock, ExecuteQuery)
114- .WillOnce (
115- [&](bigtable::ExecuteQueryParams const &) -> StatusOr<RowStream> {
116- auto mock_source = std::make_unique<MockQueryRowSource>();
117- EXPECT_CALL (*mock_source, Metadata)
118- .WillRepeatedly (Return (pq_response.metadata ()));
119-
120- testing::InSequence s;
121- EXPECT_CALL (*mock_source, NextRow)
122- .WillOnce (Return (bigtable_mocks::MakeQueryRow (
123- {{" key" , bigtable::Value (" r1" )},
124- {" val" , bigtable::Value (" v1" )}})));
125- EXPECT_CALL (*mock_source, NextRow)
126- .WillOnce (Return (bigtable_mocks::MakeQueryRow (
127- {{" key" , bigtable::Value (" r2" )},
128- {" val" , bigtable::Value (" v2" )}})));
129- EXPECT_CALL (*mock_source, NextRow)
130- // Signal end of stream
131- .WillOnce (
132- Return (Status (StatusCode::kOutOfRange , " End of stream" )));
133-
134- // Create RowStream with the mock result source
135- RowStream row_stream (std::move (mock_source));
136- return StatusOr<RowStream>(std::move (row_stream));
137- });
135+ .WillOnce ([&](bigtable::ExecuteQueryParams) {
136+ auto mock_source = std::make_unique<MockQueryRowSource>();
137+ EXPECT_CALL (*mock_source, Metadata)
138+ .WillRepeatedly (Return (pq_response.metadata ()));
139+
140+ testing::InSequence s;
141+ EXPECT_CALL (*mock_source, NextRow)
142+ .WillOnce (Return (bigtable_mocks::MakeQueryRow (
143+ {{" key" , bigtable::Value (" r1" )},
144+ {" val" , bigtable::Value (" v1" )}})));
145+ EXPECT_CALL (*mock_source, NextRow)
146+ .WillOnce (Return (bigtable_mocks::MakeQueryRow (
147+ {{" key" , bigtable::Value (" r2" )},
148+ {" val" , bigtable::Value (" v2" )}})));
149+ EXPECT_CALL (*mock_source, NextRow)
150+ // Signal end of stream
151+ .WillOnce (Return (Status (StatusCode::kOutOfRange , " End of stream" )));
152+
153+ // Create RowStream with the mock result source
154+ RowStream row_stream (std::move (mock_source));
155+ return row_stream;
156+ });
138157
139158 Client client (conn_mock);
140159 InstanceResource instance (Project (" test-project" ), " test-instance" );
0 commit comments