• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2022 Google LLC
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      https://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.google.cloud.retail.v2beta;
18 
19 import com.google.api.gax.core.NoCredentialsProvider;
20 import com.google.api.gax.grpc.GaxGrpcProperties;
21 import com.google.api.gax.grpc.testing.LocalChannelProvider;
22 import com.google.api.gax.grpc.testing.MockGrpcService;
23 import com.google.api.gax.grpc.testing.MockServiceHelper;
24 import com.google.api.gax.rpc.ApiClientHeaderProvider;
25 import com.google.api.gax.rpc.InvalidArgumentException;
26 import com.google.api.gax.rpc.StatusCode;
27 import com.google.longrunning.Operation;
28 import com.google.protobuf.AbstractMessage;
29 import com.google.protobuf.Any;
30 import com.google.rpc.Status;
31 import io.grpc.StatusRuntimeException;
32 import java.io.IOException;
33 import java.util.ArrayList;
34 import java.util.Arrays;
35 import java.util.List;
36 import java.util.UUID;
37 import java.util.concurrent.ExecutionException;
38 import javax.annotation.Generated;
39 import org.junit.After;
40 import org.junit.AfterClass;
41 import org.junit.Assert;
42 import org.junit.Before;
43 import org.junit.BeforeClass;
44 import org.junit.Test;
45 
46 @Generated("by gapic-generator-java")
47 public class CompletionServiceClientTest {
48   private static MockCompletionService mockCompletionService;
49   private static MockServiceHelper mockServiceHelper;
50   private LocalChannelProvider channelProvider;
51   private CompletionServiceClient client;
52 
53   @BeforeClass
startStaticServer()54   public static void startStaticServer() {
55     mockCompletionService = new MockCompletionService();
56     mockServiceHelper =
57         new MockServiceHelper(
58             UUID.randomUUID().toString(), Arrays.<MockGrpcService>asList(mockCompletionService));
59     mockServiceHelper.start();
60   }
61 
62   @AfterClass
stopServer()63   public static void stopServer() {
64     mockServiceHelper.stop();
65   }
66 
67   @Before
setUp()68   public void setUp() throws IOException {
69     mockServiceHelper.reset();
70     channelProvider = mockServiceHelper.createChannelProvider();
71     CompletionServiceSettings settings =
72         CompletionServiceSettings.newBuilder()
73             .setTransportChannelProvider(channelProvider)
74             .setCredentialsProvider(NoCredentialsProvider.create())
75             .build();
76     client = CompletionServiceClient.create(settings);
77   }
78 
79   @After
tearDown()80   public void tearDown() throws Exception {
81     client.close();
82   }
83 
84   @Test
completeQueryTest()85   public void completeQueryTest() throws Exception {
86     CompleteQueryResponse expectedResponse =
87         CompleteQueryResponse.newBuilder()
88             .addAllCompletionResults(new ArrayList<CompleteQueryResponse.CompletionResult>())
89             .setAttributionToken("attributionToken104706234")
90             .addAllRecentSearchResults(new ArrayList<CompleteQueryResponse.RecentSearchResult>())
91             .build();
92     mockCompletionService.addResponse(expectedResponse);
93 
94     CompleteQueryRequest request =
95         CompleteQueryRequest.newBuilder()
96             .setCatalog(CatalogName.of("[PROJECT]", "[LOCATION]", "[CATALOG]").toString())
97             .setQuery("query107944136")
98             .setVisitorId("visitorId1880545833")
99             .addAllLanguageCodes(new ArrayList<String>())
100             .setDeviceType("deviceType781190832")
101             .setDataset("dataset1443214456")
102             .setMaxSuggestions(618824852)
103             .setEntity("entity-1298275357")
104             .build();
105 
106     CompleteQueryResponse actualResponse = client.completeQuery(request);
107     Assert.assertEquals(expectedResponse, actualResponse);
108 
109     List<AbstractMessage> actualRequests = mockCompletionService.getRequests();
110     Assert.assertEquals(1, actualRequests.size());
111     CompleteQueryRequest actualRequest = ((CompleteQueryRequest) actualRequests.get(0));
112 
113     Assert.assertEquals(request.getCatalog(), actualRequest.getCatalog());
114     Assert.assertEquals(request.getQuery(), actualRequest.getQuery());
115     Assert.assertEquals(request.getVisitorId(), actualRequest.getVisitorId());
116     Assert.assertEquals(request.getLanguageCodesList(), actualRequest.getLanguageCodesList());
117     Assert.assertEquals(request.getDeviceType(), actualRequest.getDeviceType());
118     Assert.assertEquals(request.getDataset(), actualRequest.getDataset());
119     Assert.assertEquals(request.getMaxSuggestions(), actualRequest.getMaxSuggestions());
120     Assert.assertEquals(request.getEntity(), actualRequest.getEntity());
121     Assert.assertTrue(
122         channelProvider.isHeaderSent(
123             ApiClientHeaderProvider.getDefaultApiClientHeaderKey(),
124             GaxGrpcProperties.getDefaultApiClientHeaderPattern()));
125   }
126 
127   @Test
completeQueryExceptionTest()128   public void completeQueryExceptionTest() throws Exception {
129     StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT);
130     mockCompletionService.addException(exception);
131 
132     try {
133       CompleteQueryRequest request =
134           CompleteQueryRequest.newBuilder()
135               .setCatalog(CatalogName.of("[PROJECT]", "[LOCATION]", "[CATALOG]").toString())
136               .setQuery("query107944136")
137               .setVisitorId("visitorId1880545833")
138               .addAllLanguageCodes(new ArrayList<String>())
139               .setDeviceType("deviceType781190832")
140               .setDataset("dataset1443214456")
141               .setMaxSuggestions(618824852)
142               .setEntity("entity-1298275357")
143               .build();
144       client.completeQuery(request);
145       Assert.fail("No exception raised");
146     } catch (InvalidArgumentException e) {
147       // Expected exception.
148     }
149   }
150 
151   @Test
importCompletionDataTest()152   public void importCompletionDataTest() throws Exception {
153     ImportCompletionDataResponse expectedResponse =
154         ImportCompletionDataResponse.newBuilder()
155             .addAllErrorSamples(new ArrayList<Status>())
156             .build();
157     Operation resultOperation =
158         Operation.newBuilder()
159             .setName("importCompletionDataTest")
160             .setDone(true)
161             .setResponse(Any.pack(expectedResponse))
162             .build();
163     mockCompletionService.addResponse(resultOperation);
164 
165     ImportCompletionDataRequest request =
166         ImportCompletionDataRequest.newBuilder()
167             .setParent(CatalogName.of("[PROJECT]", "[LOCATION]", "[CATALOG]").toString())
168             .setInputConfig(CompletionDataInputConfig.newBuilder().build())
169             .setNotificationPubsubTopic("notificationPubsubTopic-1361224991")
170             .build();
171 
172     ImportCompletionDataResponse actualResponse = client.importCompletionDataAsync(request).get();
173     Assert.assertEquals(expectedResponse, actualResponse);
174 
175     List<AbstractMessage> actualRequests = mockCompletionService.getRequests();
176     Assert.assertEquals(1, actualRequests.size());
177     ImportCompletionDataRequest actualRequest =
178         ((ImportCompletionDataRequest) actualRequests.get(0));
179 
180     Assert.assertEquals(request.getParent(), actualRequest.getParent());
181     Assert.assertEquals(request.getInputConfig(), actualRequest.getInputConfig());
182     Assert.assertEquals(
183         request.getNotificationPubsubTopic(), actualRequest.getNotificationPubsubTopic());
184     Assert.assertTrue(
185         channelProvider.isHeaderSent(
186             ApiClientHeaderProvider.getDefaultApiClientHeaderKey(),
187             GaxGrpcProperties.getDefaultApiClientHeaderPattern()));
188   }
189 
190   @Test
importCompletionDataExceptionTest()191   public void importCompletionDataExceptionTest() throws Exception {
192     StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT);
193     mockCompletionService.addException(exception);
194 
195     try {
196       ImportCompletionDataRequest request =
197           ImportCompletionDataRequest.newBuilder()
198               .setParent(CatalogName.of("[PROJECT]", "[LOCATION]", "[CATALOG]").toString())
199               .setInputConfig(CompletionDataInputConfig.newBuilder().build())
200               .setNotificationPubsubTopic("notificationPubsubTopic-1361224991")
201               .build();
202       client.importCompletionDataAsync(request).get();
203       Assert.fail("No exception raised");
204     } catch (ExecutionException e) {
205       Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass());
206       InvalidArgumentException apiException = ((InvalidArgumentException) e.getCause());
207       Assert.assertEquals(StatusCode.Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode());
208     }
209   }
210 }
211