PageRenderTime 24ms CodeModel.GetById 13ms RepoModel.GetById 1ms app.codeStats 0ms

/components/camel-google-sheets/src/test/java/org/apache/camel/component/google/sheets/SheetsSpreadsheetsValuesIntegrationTest.java

https://github.com/gnodet/camel
Java | 224 lines | 143 code | 45 blank | 36 comment | 0 complexity | ad6aeff08eaf1fe230dbc7be96eb2c16 MD5 | raw file
  1. /*
  2. * Licensed to the Apache Software Foundation (ASF) under one or more
  3. * contributor license agreements. See the NOTICE file distributed with
  4. * this work for additional information regarding copyright ownership.
  5. * The ASF licenses this file to You under the Apache License, Version 2.0
  6. * (the "License"); you may not use this file except in compliance with
  7. * the License. You may obtain a copy of the License at
  8. *
  9. * http://www.apache.org/licenses/LICENSE-2.0
  10. *
  11. * Unless required by applicable law or agreed to in writing, software
  12. * distributed under the License is distributed on an "AS IS" BASIS,
  13. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. * See the License for the specific language governing permissions and
  15. * limitations under the License.
  16. */
  17. package org.apache.camel.component.google.sheets;
  18. import java.util.Arrays;
  19. import java.util.Collections;
  20. import java.util.HashMap;
  21. import java.util.List;
  22. import java.util.Map;
  23. import java.util.UUID;
  24. import com.google.api.services.sheets.v4.model.AppendValuesResponse;
  25. import com.google.api.services.sheets.v4.model.ClearValuesRequest;
  26. import com.google.api.services.sheets.v4.model.ClearValuesResponse;
  27. import com.google.api.services.sheets.v4.model.Spreadsheet;
  28. import com.google.api.services.sheets.v4.model.UpdateValuesResponse;
  29. import com.google.api.services.sheets.v4.model.ValueRange;
  30. import org.apache.camel.builder.RouteBuilder;
  31. import org.apache.camel.component.google.sheets.internal.GoogleSheetsApiCollection;
  32. import org.apache.camel.component.google.sheets.internal.GoogleSheetsConstants;
  33. import org.apache.camel.component.google.sheets.internal.SheetsSpreadsheetsValuesApiMethod;
  34. import org.apache.camel.util.ObjectHelper;
  35. import org.junit.jupiter.api.Test;
  36. import org.slf4j.Logger;
  37. import org.slf4j.LoggerFactory;
  38. import static org.apache.camel.component.google.sheets.server.GoogleSheetsApiTestServerAssert.assertThatGoogleApi;
  39. import static org.junit.jupiter.api.Assertions.assertEquals;
  40. import static org.junit.jupiter.api.Assertions.assertNotNull;
  41. import static org.junit.jupiter.api.Assertions.assertTrue;
  42. /**
  43. * Test class for {@link com.google.api.services.sheets.v4.Sheets.Spreadsheets.Values} APIs.
  44. */
  45. public class SheetsSpreadsheetsValuesIntegrationTest extends AbstractGoogleSheetsTestSupport {
  46. private static final Logger LOG = LoggerFactory.getLogger(SheetsSpreadsheetsValuesIntegrationTest.class);
  47. private static final String PATH_PREFIX
  48. = GoogleSheetsApiCollection.getCollection().getApiName(SheetsSpreadsheetsValuesApiMethod.class).getName();
  49. @Test
  50. public void testGet() throws Exception {
  51. assertThatGoogleApi(getGoogleApiTestServer())
  52. .createSpreadsheetRequest()
  53. .hasSheetTitle("TestData")
  54. .andReturnRandomSpreadsheet();
  55. Spreadsheet testSheet = getSpreadsheet();
  56. assertThatGoogleApi(getGoogleApiTestServer())
  57. .getValuesRequest(testSheet.getSpreadsheetId(), TEST_SHEET + "!A1:B2")
  58. .andReturnValues(Collections.emptyList());
  59. final Map<String, Object> headers = new HashMap<>();
  60. // parameter type is String
  61. headers.put(GoogleSheetsConstants.PROPERTY_PREFIX + "spreadsheetId", testSheet.getSpreadsheetId());
  62. // parameter type is String
  63. headers.put(GoogleSheetsConstants.PROPERTY_PREFIX + "range", TEST_SHEET + "!A1:B2");
  64. final ValueRange result = requestBodyAndHeaders("direct://GET", null, headers);
  65. assertNotNull(result, "get result is null");
  66. assertEquals(TEST_SHEET + "!A1:B2", result.getRange());
  67. assertTrue(ObjectHelper.isEmpty(result.getValues()), "expected empty value range but found entries");
  68. LOG.debug("get: " + result);
  69. }
  70. @Test
  71. public void testUpdate() throws Exception {
  72. assertThatGoogleApi(getGoogleApiTestServer())
  73. .createSpreadsheetRequest()
  74. .hasSheetTitle("TestData")
  75. .andReturnRandomSpreadsheet();
  76. Spreadsheet testSheet = getSpreadsheet();
  77. List<List<Object>> data = Arrays.asList(
  78. Arrays.asList("A1", "B1"),
  79. Arrays.asList("A2", "B2"));
  80. assertThatGoogleApi(getGoogleApiTestServer())
  81. .updateValuesRequest(testSheet.getSpreadsheetId(), TEST_SHEET + "!A1:B2", data)
  82. .andReturnUpdateResponse();
  83. ValueRange values = new ValueRange();
  84. values.setValues(data);
  85. final Map<String, Object> headers = new HashMap<>();
  86. // parameter type is String
  87. headers.put(GoogleSheetsConstants.PROPERTY_PREFIX + "spreadsheetId", testSheet.getSpreadsheetId());
  88. // parameter type is String
  89. headers.put(GoogleSheetsConstants.PROPERTY_PREFIX + "range", TEST_SHEET + "!A1:B2");
  90. // parameter type is com.google.api.services.sheets.v4.model.ValueRange
  91. headers.put(GoogleSheetsConstants.PROPERTY_PREFIX + "values", values);
  92. // parameter type is String
  93. headers.put(GoogleSheetsConstants.PROPERTY_PREFIX + "valueInputOption", "USER_ENTERED");
  94. final UpdateValuesResponse result = requestBodyAndHeaders("direct://UPDATE", null, headers);
  95. assertNotNull(result, "update result is null");
  96. assertEquals(testSheet.getSpreadsheetId(), result.getSpreadsheetId());
  97. assertEquals(TEST_SHEET + "!A1:B2", result.getUpdatedRange());
  98. assertEquals(Integer.valueOf(2), result.getUpdatedRows());
  99. assertEquals(Integer.valueOf(4), result.getUpdatedCells());
  100. LOG.debug("update: " + result);
  101. }
  102. @Test
  103. public void testAppend() throws Exception {
  104. assertThatGoogleApi(getGoogleApiTestServer())
  105. .createSpreadsheetRequest()
  106. .hasSheetTitle("TestData")
  107. .andReturnRandomSpreadsheet();
  108. Spreadsheet testSheet = getSpreadsheet();
  109. List<List<Object>> data = Collections.singletonList(Arrays.asList("A10", "B10", "C10"));
  110. assertThatGoogleApi(getGoogleApiTestServer())
  111. .appendValuesRequest(testSheet.getSpreadsheetId(), TEST_SHEET + "!A10", data)
  112. .andReturnAppendResponse(TEST_SHEET + "!A10:C10");
  113. final Map<String, Object> headers = new HashMap<>();
  114. // parameter type is String
  115. headers.put(GoogleSheetsConstants.PROPERTY_PREFIX + "spreadsheetId", testSheet.getSpreadsheetId());
  116. // parameter type is String
  117. headers.put(GoogleSheetsConstants.PROPERTY_PREFIX + "range", TEST_SHEET + "!A10");
  118. // parameter type is com.google.api.services.sheets.v4.model.ValueRange
  119. headers.put(GoogleSheetsConstants.PROPERTY_PREFIX + "values", new ValueRange().setValues(data));
  120. // parameter type is String
  121. headers.put(GoogleSheetsConstants.PROPERTY_PREFIX + "valueInputOption", "USER_ENTERED");
  122. final AppendValuesResponse result = requestBodyAndHeaders("direct://APPEND", null, headers);
  123. assertNotNull(result, "append result is null");
  124. assertEquals(testSheet.getSpreadsheetId(), result.getSpreadsheetId());
  125. assertEquals(TEST_SHEET + "!A10:C10", result.getUpdates().getUpdatedRange());
  126. assertEquals(Integer.valueOf(1), result.getUpdates().getUpdatedRows());
  127. assertEquals(Integer.valueOf(3), result.getUpdates().getUpdatedCells());
  128. LOG.debug("append: " + result);
  129. }
  130. @Test
  131. public void testClear() throws Exception {
  132. String spreadsheetId = UUID.randomUUID().toString();
  133. assertThatGoogleApi(getGoogleApiTestServer())
  134. .createSpreadsheetRequest()
  135. .hasSheetTitle("TestData")
  136. .andReturnSpreadsheet(spreadsheetId);
  137. Spreadsheet testSheet = getSpreadsheet();
  138. assertThatGoogleApi(getGoogleApiTestServer())
  139. .updateValuesRequest(spreadsheetId, TEST_SHEET + "!A1:B2",
  140. Arrays.asList(Arrays.asList("a1", "b1"), Arrays.asList("a2", "b2")))
  141. .andReturnUpdateResponse();
  142. applyTestData(testSheet);
  143. assertThatGoogleApi(getGoogleApiTestServer())
  144. .clearValuesRequest(testSheet.getSpreadsheetId(), TEST_SHEET + "!A1:B2")
  145. .andReturnClearResponse(TEST_SHEET + "!A1:B2");
  146. final Map<String, Object> headers = new HashMap<>();
  147. // parameter type is String
  148. headers.put(GoogleSheetsConstants.PROPERTY_PREFIX + "spreadsheetId", testSheet.getSpreadsheetId());
  149. // parameter type is String
  150. headers.put(GoogleSheetsConstants.PROPERTY_PREFIX + "range", TEST_SHEET + "!A1:B2");
  151. // parameter type is com.google.api.services.sheets.v4.model.ClearValuesRequest
  152. headers.put(GoogleSheetsConstants.PROPERTY_PREFIX + "clearValuesRequest", new ClearValuesRequest());
  153. final ClearValuesResponse result = requestBodyAndHeaders("direct://CLEAR", null, headers);
  154. assertNotNull(result, "clear result is null");
  155. assertEquals(testSheet.getSpreadsheetId(), result.getSpreadsheetId());
  156. assertEquals(TEST_SHEET + "!A1:B2", result.getClearedRange());
  157. LOG.debug("clear: " + result);
  158. }
  159. @Override
  160. protected RouteBuilder createRouteBuilder() throws Exception {
  161. return new RouteBuilder() {
  162. @Override
  163. public void configure() {
  164. // test route for append
  165. from("direct://APPEND")
  166. .to("google-sheets://" + PATH_PREFIX + "/append");
  167. // test route for clear
  168. from("direct://CLEAR")
  169. .to("google-sheets://" + PATH_PREFIX + "/clear");
  170. // test route for get
  171. from("direct://GET")
  172. .to("google-sheets://" + PATH_PREFIX + "/get");
  173. // test route for update
  174. from("direct://UPDATE")
  175. .to("google-sheets://" + PATH_PREFIX + "/update");
  176. }
  177. };
  178. }
  179. }