@@ -32,6 +32,11 @@ GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN
3232
3333namespace rest = ::google::cloud::rest_internal;
3434
35+ using ::google::cloud::bigquery_v2_minimal_testing::
36+ MakeFullGetQueryResultsRequest;
37+ using ::google::cloud::bigquery_v2_minimal_testing::MakeGetQueryResults;
38+ using ::google::cloud::bigquery_v2_minimal_testing::
39+ MakeGetQueryResultsResponsePayload;
3540using ::google::cloud::bigquery_v2_minimal_testing::MakePartialJob;
3641using ::google::cloud::bigquery_v2_minimal_testing::MakeQueryRequest;
3742using ::google::cloud::bigquery_v2_minimal_testing::MakeQueryResponsePayload;
@@ -495,6 +500,78 @@ TEST(BigQueryJobStubTest, QueryRestResponseError) {
495500 EXPECT_THAT (status, StatusIs (InvalidArgumentError ().code ()));
496501}
497502
503+ TEST (BigQueryJobStubTest, GetQueryResultsSuccess) {
504+ std::string response_payload = MakeGetQueryResultsResponsePayload ();
505+ auto mock_response = std::make_unique<MockRestResponse>();
506+
507+ EXPECT_CALL (*mock_response, StatusCode)
508+ .WillRepeatedly (Return (HttpStatusCode::kOk ));
509+ EXPECT_CALL (*mock_response, Headers)
510+ .WillRepeatedly (Return (std::multimap<std::string, std::string>()));
511+ EXPECT_CALL (std::move (*mock_response), ExtractPayload)
512+ .WillOnce (Return (ByMove (MakeMockHttpPayloadSuccess (response_payload))));
513+
514+ auto mock_rest_client = std::make_unique<MockRestClient>();
515+ EXPECT_CALL (*mock_rest_client, Get (_, An<rest::RestRequest const &>()))
516+ .WillOnce (Return (ByMove (
517+ std::unique_ptr<rest::RestResponse>(std::move (mock_response)))));
518+
519+ GetQueryResultsRequest request = MakeFullGetQueryResultsRequest ();
520+
521+ rest_internal::RestContext context;
522+ DefaultBigQueryJobRestStub rest_stub (std::move (mock_rest_client));
523+
524+ auto expected = MakeGetQueryResults ();
525+
526+ auto actual_result = rest_stub.GetQueryResults (context, std::move (request));
527+ ASSERT_STATUS_OK (actual_result);
528+ EXPECT_THAT (actual_result->http_response .http_status_code ,
529+ Eq (HttpStatusCode::kOk ));
530+ EXPECT_THAT (actual_result->http_response .payload , Eq (response_payload));
531+ bigquery_v2_minimal_testing::AssertEquals (expected,
532+ actual_result->get_query_results );
533+ }
534+
535+ TEST (BigQueryJobStubTest, GetQueryResultsRestClientError) {
536+ // Get() fails.
537+ auto mock_rest_client = std::make_unique<MockRestClient>();
538+ EXPECT_CALL (*mock_rest_client, Get (_, An<rest::RestRequest const &>()))
539+ .WillOnce (
540+ Return (rest::AsStatus (HttpStatusCode::kInternalServerError , " " )));
541+
542+ rest_internal::RestContext context;
543+ DefaultBigQueryJobRestStub rest_stub (std::move (mock_rest_client));
544+
545+ GetQueryResultsRequest request = MakeFullGetQueryResultsRequest ();
546+
547+ auto response = rest_stub.GetQueryResults (context, request);
548+ EXPECT_THAT (response, StatusIs (StatusCode::kUnavailable ));
549+ }
550+
551+ TEST (BigQueryJobStubTest, GetQueryResultsRestResponseError) {
552+ // Invalid Rest response.
553+ auto mock_payload = std::make_unique<MockHttpPayload>();
554+ auto mock_response = std::make_unique<MockRestResponse>();
555+ EXPECT_CALL (*mock_response, StatusCode)
556+ .WillRepeatedly (Return (HttpStatusCode::kBadRequest ));
557+ EXPECT_CALL (std::move (*mock_response), ExtractPayload)
558+ .WillOnce (Return (std::move (mock_payload)));
559+
560+ // Get() is successful.
561+ auto mock_rest_client = std::make_unique<MockRestClient>();
562+ EXPECT_CALL (*mock_rest_client, Get (_, An<rest::RestRequest const &>()))
563+ .WillOnce (Return (ByMove (
564+ std::unique_ptr<rest::RestResponse>(std::move (mock_response)))));
565+
566+ rest_internal::RestContext context;
567+ DefaultBigQueryJobRestStub rest_stub (std::move (mock_rest_client));
568+
569+ GetQueryResultsRequest request = MakeFullGetQueryResultsRequest ();
570+
571+ auto response = rest_stub.GetQueryResults (context, std::move (request));
572+ EXPECT_THAT (response, StatusIs (StatusCode::kInvalidArgument ));
573+ }
574+
498575GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END
499576} // namespace bigquery_v2_minimal_internal
500577} // namespace cloud
0 commit comments