From bdcc93ba606beca78fbbe0a6290378cccb57a411 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Vannicatte?= Date: Tue, 26 Dec 2023 15:16:35 +0100 Subject: [PATCH 1/2] chore(cts): remove `methods` folder (#2438) --- config/generation.config.mjs | 2 +- .../codegen/cts/manager/GoCTSManager.java | 2 +- .../codegen/cts/manager/PythonCTSManager.java | 4 +- .../codegen/cts/tests/TestsRequest.java | 10 +- scripts/ci/githubActions/createMatrix.ts | 6 +- scripts/husky/__tests__/pre-commit.test.mjs | 4 +- scripts/husky/pre-commit.mjs | 2 +- .../requests/abtesting/addABTests.json | 0 .../requests/abtesting/deleteABTest.json | 0 .../requests/abtesting/getABTest.json | 0 .../requests/abtesting/listABTests.json | 0 .../requests/abtesting/stopABTest.json | 0 .../analytics/getAverageClickPosition.json | 0 .../requests/analytics/getClickPositions.json | 0 .../analytics/getClickThroughRate.json | 0 .../analytics/getConversationRate.json | 0 .../requests/analytics/getNoClickRate.json | 0 .../requests/analytics/getNoResultsRate.json | 0 .../requests/analytics/getSearchesCount.json | 0 .../analytics/getSearchesNoClicks.json | 0 .../analytics/getSearchesNoResults.json | 0 .../requests/analytics/getStatus.json | 0 .../requests/analytics/getTopCountries.json | 0 .../analytics/getTopFilterAttributes.json | 0 .../analytics/getTopFilterForAttribute.json | 0 .../analytics/getTopFiltersNoResults.json | 0 .../requests/analytics/getTopHits.json | 0 .../requests/analytics/getTopSearches.json | 0 .../requests/analytics/getUsersCount.json | 0 .../requests/common/customDelete.json | 0 .../requests/common/customGet.json | 0 .../requests/common/customPost.json | 0 .../requests/common/customPut.json | 0 .../ingestion/createAuthentication.json | 0 .../requests/ingestion/createDestination.json | 0 .../requests/ingestion/createSource.json | 0 .../requests/ingestion/createTask.json | 0 .../ingestion/deleteAuthentication.json | 0 .../requests/ingestion/deleteDestination.json | 0 .../requests/ingestion/deleteSource.json | 0 .../requests/ingestion/deleteTask.json | 0 .../requests/ingestion/disableTask.json | 0 .../requests/ingestion/enableTask.json | 0 .../requests/ingestion/getAuthentication.json | 0 .../ingestion/getAuthentications.json | 0 .../requests/ingestion/getDestination.json | 0 .../requests/ingestion/getDestinations.json | 0 .../ingestion/getDockerSourceStreams.json | 0 .../requests/ingestion/getEvent.json | 0 .../requests/ingestion/getEvents.json | 0 .../requests/ingestion/getRun.json | 0 .../requests/ingestion/getRuns.json | 0 .../requests/ingestion/getSource.json | 0 .../requests/ingestion/getSources.json | 0 .../requests/ingestion/getTask.json | 0 .../requests/ingestion/getTasks.json | 0 .../requests/ingestion/runTask.json | 0 .../ingestion/searchAuthentications.json | 0 .../ingestion/searchDestinations.json | 0 .../requests/ingestion/searchSources.json | 0 .../requests/ingestion/searchTasks.json | 0 .../triggerDockerSourceDiscover.json | 0 .../ingestion/updateAuthentication.json | 0 .../requests/ingestion/updateDestination.json | 0 .../requests/ingestion/updateSource.json | 0 .../requests/ingestion/updateTask.json | 0 .../requests/insights/pushEvents.json | 0 .../monitoring/getClusterIncidents.json | 0 .../requests/monitoring/getClusterStatus.json | 0 .../requests/monitoring/getIncidents.json | 0 .../requests/monitoring/getIndexingTime.json | 0 .../requests/monitoring/getInventory.json | 0 .../requests/monitoring/getLatency.json | 0 .../requests/monitoring/getMetrics.json | 0 .../requests/monitoring/getReachability.json | 0 .../requests/monitoring/getStatus.json | 0 .../personalization/deleteUserProfile.json | 0 .../getPersonalizationStrategy.json | 0 .../personalization/getUserTokenProfile.json | 0 .../setPersonalizationStrategy.json | 0 .../query-suggestions/createConfig.json | 0 .../query-suggestions/deleteConfig.json | 0 .../query-suggestions/getAllConfigs.json | 0 .../requests/query-suggestions/getConfig.json | 0 .../query-suggestions/getConfigStatus.json | 0 .../query-suggestions/getLogFile.json | 0 .../query-suggestions/updateConfig.json | 0 .../recommend/deleteRecommendRule.json | 0 .../requests/recommend/getRecommendRule.json | 0 .../recommend/getRecommendStatus.json | 0 .../recommend/getRecommendations.json | 0 .../recommend/searchRecommendRules.json | 0 .../requests/search/addApiKey.json | 0 .../requests/search/addOrUpdateObject.json | 0 .../requests/search/appendSource.json | 0 .../requests/search/assignUserId.json | 0 .../{methods => }/requests/search/batch.json | 0 .../requests/search/batchAssignUserIds.json | 0 .../search/batchDictionaryEntries.json | 0 .../{methods => }/requests/search/browse.json | 0 .../requests/search/clearAllSynonyms.json | 0 .../requests/search/clearObjects.json | 0 .../requests/search/clearRules.json | 0 .../requests/search/deleteApiKey.json | 0 .../requests/search/deleteBy.json | 0 .../requests/search/deleteIndex.json | 0 .../requests/search/deleteObject.json | 0 .../requests/search/deleteRule.json | 0 .../requests/search/deleteSource.json | 0 .../requests/search/deleteSynonym.json | 0 .../requests/search/getApiKey.json | 0 .../search/getDictionaryLanguages.json | 0 .../search/getDictionarySettings.json | 0 .../requests/search/getLogs.json | 0 .../requests/search/getObject.json | 0 .../requests/search/getObjects.json | 0 .../requests/search/getRule.json | 0 .../requests/search/getSettings.json | 0 .../requests/search/getSources.json | 0 .../requests/search/getSynonym.json | 0 .../requests/search/getTask.json | 0 .../requests/search/getTopUserIds.json | 0 .../requests/search/getUserId.json | 0 .../requests/search/hasPendingMappings.json | 0 .../requests/search/listApiKeys.json | 0 .../requests/search/listClusters.json | 0 .../requests/search/listIndices.json | 0 .../requests/search/listUserIds.json | 0 .../requests/search/multipleBatch.json | 0 .../requests/search/operationIndex.json | 0 .../requests/search/partialUpdateObject.json | 0 .../requests/search/removeUserId.json | 0 .../requests/search/replaceSources.json | 0 .../requests/search/restoreApiKey.json | 0 .../requests/search/saveObject.json | 0 .../requests/search/saveRule.json | 0 .../requests/search/saveRules.json | 0 .../requests/search/saveSynonym.json | 0 .../requests/search/saveSynonyms.json | 0 .../{methods => }/requests/search/search.json | 0 .../search/searchDictionaryEntries.json | 0 .../requests/search/searchForFacetValues.json | 0 .../requests/search/searchRules.json | 0 .../requests/search/searchSingleIndex.json | 0 .../requests/search/searchSynonyms.json | 0 .../requests/search/searchUserIds.json | 0 .../search/setDictionarySettings.json | 0 .../requests/search/setSettings.json | 0 .../requests/search/updateApiKey.json | 0 .../methods/requests/algoliasearch_test.dart | 821 ---- .../test/methods/requests/insights_test.dart | 730 --- .../test/methods/requests/recommend_test.dart | 859 ---- .../test/methods/requests/search_test.dart | 3431 ------------- .../tests/methods/requests/analytics_test.go | 1565 ------ .../go/tests/methods/requests/common.go | 35 - .../tests/methods/requests/ingestion_test.go | 1678 ------- .../tests/methods/requests/insights_test.go | 629 --- .../tests/methods/requests/monitoring_test.go | 810 --- .../methods/requests/personalization_test.go | 653 --- .../requests/query-suggestions_test.go | 753 --- .../tests/methods/requests/recommend_test.go | 797 --- .../go/tests/methods/requests/search_test.go | 3203 ------------ .../methods/requests/Abtesting.test.java | 764 --- .../methods/requests/Analytics.test.java | 1675 ------- .../methods/requests/Insights.test.java | 958 ---- .../methods/requests/Monitoring.test.java | 753 --- .../requests/Personalization.test.java | 722 --- .../requests/QuerySuggestions.test.java | 847 ---- .../methods/requests/Recommend.test.java | 1089 ----- .../algolia/methods/requests/Search.test.java | 4328 ----------------- .../src/methods/requests/abtesting.test.ts | 408 -- .../methods/requests/algoliasearch.test.ts | 707 --- .../src/methods/requests/analytics.test.ts | 929 ---- .../src/methods/requests/ingestion.test.ts | 901 ---- .../src/methods/requests/insights.test.ts | 523 -- .../src/methods/requests/monitoring.test.ts | 426 -- .../methods/requests/personalization.test.ts | 373 -- .../methods/requests/querySuggestions.test.ts | 446 -- .../src/methods/requests/recommend.test.ts | 612 --- .../src/methods/requests/search.test.ts | 2487 ---------- .../algolia/methods/requests/AbtestingTest.kt | 560 --- .../algolia/methods/requests/AnalyticsTest.kt | 1150 ----- .../algolia/methods/requests/IngestionTest.kt | 1146 ----- .../algolia/methods/requests/InsightsTest.kt | 609 --- .../methods/requests/MonitoringTest.kt | 595 --- .../methods/requests/PersonalizationTest.kt | 524 -- .../methods/requests/QuerySuggestionsTest.kt | 593 --- .../algolia/methods/requests/RecommendTest.kt | 742 --- .../algolia/methods/requests/SearchTest.kt | 2851 ----------- .../src/methods/requests/AbtestingTest.php | 697 --- .../src/methods/requests/AnalyticsTest.php | 1381 ------ .../php/src/methods/requests/InsightsTest.php | 769 --- .../src/methods/requests/MonitoringTest.php | 739 --- .../methods/requests/PersonalizationTest.php | 654 --- .../methods/requests/QuerySuggestionsTest.php | 754 --- .../src/methods/requests/RecommendTest.php | 896 ---- .../php/src/methods/requests/SearchTest.php | 3385 ------------- .../tests/methods/requests/abtesting_test.py | 472 -- .../tests/methods/requests/analytics_test.py | 1100 ----- .../tests/methods/requests/ingestion_test.py | 971 ---- .../tests/methods/requests/insights_test.py | 554 --- .../tests/methods/requests/monitoring_test.py | 486 -- .../methods/requests/personalization_test.py | 436 -- .../requests/query_suggestions_test.py | 519 -- .../tests/methods/requests/recommend_test.py | 675 --- .../tests/methods/requests/search_test.py | 2796 ----------- .../test/methods/requests/abtesting_test.rb | 289 -- .../test/methods/requests/analytics_test.rb | 650 --- .../test/methods/requests/ingestion_test.rb | 638 --- .../test/methods/requests/insights_test.rb | 289 -- .../test/methods/requests/monitoring_test.rb | 325 -- .../methods/requests/personalization_test.rb | 269 - .../test/methods/requests/recommend_test.rb | 360 -- .../ruby/test/methods/requests/search_test.rb | 1362 ------ .../methods/requests/AbtestingTest.scala | 590 --- .../methods/requests/AnalyticsTest.scala | 1338 ----- .../methods/requests/IngestionTest.scala | 1100 ----- .../methods/requests/InsightsTest.scala | 659 --- .../methods/requests/MonitoringTest.scala | 602 --- .../requests/PersonalizationTest.scala | 553 --- .../requests/QuerySuggestionsTest.scala | 618 --- .../methods/requests/RecommendTest.scala | 794 --- .../methods/requests/SearchTest.scala | 2918 ----------- .../contributing/testing/common-test-suite.md | 6 +- 224 files changed, 16 insertions(+), 74340 deletions(-) rename tests/CTS/{methods => }/requests/abtesting/addABTests.json (100%) rename tests/CTS/{methods => }/requests/abtesting/deleteABTest.json (100%) rename tests/CTS/{methods => }/requests/abtesting/getABTest.json (100%) rename tests/CTS/{methods => }/requests/abtesting/listABTests.json (100%) rename tests/CTS/{methods => }/requests/abtesting/stopABTest.json (100%) rename tests/CTS/{methods => }/requests/analytics/getAverageClickPosition.json (100%) rename tests/CTS/{methods => }/requests/analytics/getClickPositions.json (100%) rename tests/CTS/{methods => }/requests/analytics/getClickThroughRate.json (100%) rename tests/CTS/{methods => }/requests/analytics/getConversationRate.json (100%) rename tests/CTS/{methods => }/requests/analytics/getNoClickRate.json (100%) rename tests/CTS/{methods => }/requests/analytics/getNoResultsRate.json (100%) rename tests/CTS/{methods => }/requests/analytics/getSearchesCount.json (100%) rename tests/CTS/{methods => }/requests/analytics/getSearchesNoClicks.json (100%) rename tests/CTS/{methods => }/requests/analytics/getSearchesNoResults.json (100%) rename tests/CTS/{methods => }/requests/analytics/getStatus.json (100%) rename tests/CTS/{methods => }/requests/analytics/getTopCountries.json (100%) rename tests/CTS/{methods => }/requests/analytics/getTopFilterAttributes.json (100%) rename tests/CTS/{methods => }/requests/analytics/getTopFilterForAttribute.json (100%) rename tests/CTS/{methods => }/requests/analytics/getTopFiltersNoResults.json (100%) rename tests/CTS/{methods => }/requests/analytics/getTopHits.json (100%) rename tests/CTS/{methods => }/requests/analytics/getTopSearches.json (100%) rename tests/CTS/{methods => }/requests/analytics/getUsersCount.json (100%) rename tests/CTS/{methods => }/requests/common/customDelete.json (100%) rename tests/CTS/{methods => }/requests/common/customGet.json (100%) rename tests/CTS/{methods => }/requests/common/customPost.json (100%) rename tests/CTS/{methods => }/requests/common/customPut.json (100%) rename tests/CTS/{methods => }/requests/ingestion/createAuthentication.json (100%) rename tests/CTS/{methods => }/requests/ingestion/createDestination.json (100%) rename tests/CTS/{methods => }/requests/ingestion/createSource.json (100%) rename tests/CTS/{methods => }/requests/ingestion/createTask.json (100%) rename tests/CTS/{methods => }/requests/ingestion/deleteAuthentication.json (100%) rename tests/CTS/{methods => }/requests/ingestion/deleteDestination.json (100%) rename tests/CTS/{methods => }/requests/ingestion/deleteSource.json (100%) rename tests/CTS/{methods => }/requests/ingestion/deleteTask.json (100%) rename tests/CTS/{methods => }/requests/ingestion/disableTask.json (100%) rename tests/CTS/{methods => }/requests/ingestion/enableTask.json (100%) rename tests/CTS/{methods => }/requests/ingestion/getAuthentication.json (100%) rename tests/CTS/{methods => }/requests/ingestion/getAuthentications.json (100%) rename tests/CTS/{methods => }/requests/ingestion/getDestination.json (100%) rename tests/CTS/{methods => }/requests/ingestion/getDestinations.json (100%) rename tests/CTS/{methods => }/requests/ingestion/getDockerSourceStreams.json (100%) rename tests/CTS/{methods => }/requests/ingestion/getEvent.json (100%) rename tests/CTS/{methods => }/requests/ingestion/getEvents.json (100%) rename tests/CTS/{methods => }/requests/ingestion/getRun.json (100%) rename tests/CTS/{methods => }/requests/ingestion/getRuns.json (100%) rename tests/CTS/{methods => }/requests/ingestion/getSource.json (100%) rename tests/CTS/{methods => }/requests/ingestion/getSources.json (100%) rename tests/CTS/{methods => }/requests/ingestion/getTask.json (100%) rename tests/CTS/{methods => }/requests/ingestion/getTasks.json (100%) rename tests/CTS/{methods => }/requests/ingestion/runTask.json (100%) rename tests/CTS/{methods => }/requests/ingestion/searchAuthentications.json (100%) rename tests/CTS/{methods => }/requests/ingestion/searchDestinations.json (100%) rename tests/CTS/{methods => }/requests/ingestion/searchSources.json (100%) rename tests/CTS/{methods => }/requests/ingestion/searchTasks.json (100%) rename tests/CTS/{methods => }/requests/ingestion/triggerDockerSourceDiscover.json (100%) rename tests/CTS/{methods => }/requests/ingestion/updateAuthentication.json (100%) rename tests/CTS/{methods => }/requests/ingestion/updateDestination.json (100%) rename tests/CTS/{methods => }/requests/ingestion/updateSource.json (100%) rename tests/CTS/{methods => }/requests/ingestion/updateTask.json (100%) rename tests/CTS/{methods => }/requests/insights/pushEvents.json (100%) rename tests/CTS/{methods => }/requests/monitoring/getClusterIncidents.json (100%) rename tests/CTS/{methods => }/requests/monitoring/getClusterStatus.json (100%) rename tests/CTS/{methods => }/requests/monitoring/getIncidents.json (100%) rename tests/CTS/{methods => }/requests/monitoring/getIndexingTime.json (100%) rename tests/CTS/{methods => }/requests/monitoring/getInventory.json (100%) rename tests/CTS/{methods => }/requests/monitoring/getLatency.json (100%) rename tests/CTS/{methods => }/requests/monitoring/getMetrics.json (100%) rename tests/CTS/{methods => }/requests/monitoring/getReachability.json (100%) rename tests/CTS/{methods => }/requests/monitoring/getStatus.json (100%) rename tests/CTS/{methods => }/requests/personalization/deleteUserProfile.json (100%) rename tests/CTS/{methods => }/requests/personalization/getPersonalizationStrategy.json (100%) rename tests/CTS/{methods => }/requests/personalization/getUserTokenProfile.json (100%) rename tests/CTS/{methods => }/requests/personalization/setPersonalizationStrategy.json (100%) rename tests/CTS/{methods => }/requests/query-suggestions/createConfig.json (100%) rename tests/CTS/{methods => }/requests/query-suggestions/deleteConfig.json (100%) rename tests/CTS/{methods => }/requests/query-suggestions/getAllConfigs.json (100%) rename tests/CTS/{methods => }/requests/query-suggestions/getConfig.json (100%) rename tests/CTS/{methods => }/requests/query-suggestions/getConfigStatus.json (100%) rename tests/CTS/{methods => }/requests/query-suggestions/getLogFile.json (100%) rename tests/CTS/{methods => }/requests/query-suggestions/updateConfig.json (100%) rename tests/CTS/{methods => }/requests/recommend/deleteRecommendRule.json (100%) rename tests/CTS/{methods => }/requests/recommend/getRecommendRule.json (100%) rename tests/CTS/{methods => }/requests/recommend/getRecommendStatus.json (100%) rename tests/CTS/{methods => }/requests/recommend/getRecommendations.json (100%) rename tests/CTS/{methods => }/requests/recommend/searchRecommendRules.json (100%) rename tests/CTS/{methods => }/requests/search/addApiKey.json (100%) rename tests/CTS/{methods => }/requests/search/addOrUpdateObject.json (100%) rename tests/CTS/{methods => }/requests/search/appendSource.json (100%) rename tests/CTS/{methods => }/requests/search/assignUserId.json (100%) rename tests/CTS/{methods => }/requests/search/batch.json (100%) rename tests/CTS/{methods => }/requests/search/batchAssignUserIds.json (100%) rename tests/CTS/{methods => }/requests/search/batchDictionaryEntries.json (100%) rename tests/CTS/{methods => }/requests/search/browse.json (100%) rename tests/CTS/{methods => }/requests/search/clearAllSynonyms.json (100%) rename tests/CTS/{methods => }/requests/search/clearObjects.json (100%) rename tests/CTS/{methods => }/requests/search/clearRules.json (100%) rename tests/CTS/{methods => }/requests/search/deleteApiKey.json (100%) rename tests/CTS/{methods => }/requests/search/deleteBy.json (100%) rename tests/CTS/{methods => }/requests/search/deleteIndex.json (100%) rename tests/CTS/{methods => }/requests/search/deleteObject.json (100%) rename tests/CTS/{methods => }/requests/search/deleteRule.json (100%) rename tests/CTS/{methods => }/requests/search/deleteSource.json (100%) rename tests/CTS/{methods => }/requests/search/deleteSynonym.json (100%) rename tests/CTS/{methods => }/requests/search/getApiKey.json (100%) rename tests/CTS/{methods => }/requests/search/getDictionaryLanguages.json (100%) rename tests/CTS/{methods => }/requests/search/getDictionarySettings.json (100%) rename tests/CTS/{methods => }/requests/search/getLogs.json (100%) rename tests/CTS/{methods => }/requests/search/getObject.json (100%) rename tests/CTS/{methods => }/requests/search/getObjects.json (100%) rename tests/CTS/{methods => }/requests/search/getRule.json (100%) rename tests/CTS/{methods => }/requests/search/getSettings.json (100%) rename tests/CTS/{methods => }/requests/search/getSources.json (100%) rename tests/CTS/{methods => }/requests/search/getSynonym.json (100%) rename tests/CTS/{methods => }/requests/search/getTask.json (100%) rename tests/CTS/{methods => }/requests/search/getTopUserIds.json (100%) rename tests/CTS/{methods => }/requests/search/getUserId.json (100%) rename tests/CTS/{methods => }/requests/search/hasPendingMappings.json (100%) rename tests/CTS/{methods => }/requests/search/listApiKeys.json (100%) rename tests/CTS/{methods => }/requests/search/listClusters.json (100%) rename tests/CTS/{methods => }/requests/search/listIndices.json (100%) rename tests/CTS/{methods => }/requests/search/listUserIds.json (100%) rename tests/CTS/{methods => }/requests/search/multipleBatch.json (100%) rename tests/CTS/{methods => }/requests/search/operationIndex.json (100%) rename tests/CTS/{methods => }/requests/search/partialUpdateObject.json (100%) rename tests/CTS/{methods => }/requests/search/removeUserId.json (100%) rename tests/CTS/{methods => }/requests/search/replaceSources.json (100%) rename tests/CTS/{methods => }/requests/search/restoreApiKey.json (100%) rename tests/CTS/{methods => }/requests/search/saveObject.json (100%) rename tests/CTS/{methods => }/requests/search/saveRule.json (100%) rename tests/CTS/{methods => }/requests/search/saveRules.json (100%) rename tests/CTS/{methods => }/requests/search/saveSynonym.json (100%) rename tests/CTS/{methods => }/requests/search/saveSynonyms.json (100%) rename tests/CTS/{methods => }/requests/search/search.json (100%) rename tests/CTS/{methods => }/requests/search/searchDictionaryEntries.json (100%) rename tests/CTS/{methods => }/requests/search/searchForFacetValues.json (100%) rename tests/CTS/{methods => }/requests/search/searchRules.json (100%) rename tests/CTS/{methods => }/requests/search/searchSingleIndex.json (100%) rename tests/CTS/{methods => }/requests/search/searchSynonyms.json (100%) rename tests/CTS/{methods => }/requests/search/searchUserIds.json (100%) rename tests/CTS/{methods => }/requests/search/setDictionarySettings.json (100%) rename tests/CTS/{methods => }/requests/search/setSettings.json (100%) rename tests/CTS/{methods => }/requests/search/updateApiKey.json (100%) delete mode 100644 tests/output/dart/test/methods/requests/algoliasearch_test.dart delete mode 100644 tests/output/dart/test/methods/requests/insights_test.dart delete mode 100644 tests/output/dart/test/methods/requests/recommend_test.dart delete mode 100644 tests/output/dart/test/methods/requests/search_test.dart delete mode 100644 tests/output/go/tests/methods/requests/analytics_test.go delete mode 100644 tests/output/go/tests/methods/requests/common.go delete mode 100644 tests/output/go/tests/methods/requests/ingestion_test.go delete mode 100644 tests/output/go/tests/methods/requests/insights_test.go delete mode 100644 tests/output/go/tests/methods/requests/monitoring_test.go delete mode 100644 tests/output/go/tests/methods/requests/personalization_test.go delete mode 100644 tests/output/go/tests/methods/requests/query-suggestions_test.go delete mode 100644 tests/output/go/tests/methods/requests/recommend_test.go delete mode 100644 tests/output/go/tests/methods/requests/search_test.go delete mode 100644 tests/output/java/src/test/java/com/algolia/methods/requests/Abtesting.test.java delete mode 100644 tests/output/java/src/test/java/com/algolia/methods/requests/Analytics.test.java delete mode 100644 tests/output/java/src/test/java/com/algolia/methods/requests/Insights.test.java delete mode 100644 tests/output/java/src/test/java/com/algolia/methods/requests/Monitoring.test.java delete mode 100644 tests/output/java/src/test/java/com/algolia/methods/requests/Personalization.test.java delete mode 100644 tests/output/java/src/test/java/com/algolia/methods/requests/QuerySuggestions.test.java delete mode 100644 tests/output/java/src/test/java/com/algolia/methods/requests/Recommend.test.java delete mode 100644 tests/output/java/src/test/java/com/algolia/methods/requests/Search.test.java delete mode 100644 tests/output/javascript/src/methods/requests/abtesting.test.ts delete mode 100644 tests/output/javascript/src/methods/requests/algoliasearch.test.ts delete mode 100644 tests/output/javascript/src/methods/requests/analytics.test.ts delete mode 100644 tests/output/javascript/src/methods/requests/ingestion.test.ts delete mode 100644 tests/output/javascript/src/methods/requests/insights.test.ts delete mode 100644 tests/output/javascript/src/methods/requests/monitoring.test.ts delete mode 100644 tests/output/javascript/src/methods/requests/personalization.test.ts delete mode 100644 tests/output/javascript/src/methods/requests/querySuggestions.test.ts delete mode 100644 tests/output/javascript/src/methods/requests/recommend.test.ts delete mode 100644 tests/output/javascript/src/methods/requests/search.test.ts delete mode 100644 tests/output/kotlin/src/commonTest/kotlin/com/algolia/methods/requests/AbtestingTest.kt delete mode 100644 tests/output/kotlin/src/commonTest/kotlin/com/algolia/methods/requests/AnalyticsTest.kt delete mode 100644 tests/output/kotlin/src/commonTest/kotlin/com/algolia/methods/requests/IngestionTest.kt delete mode 100644 tests/output/kotlin/src/commonTest/kotlin/com/algolia/methods/requests/InsightsTest.kt delete mode 100644 tests/output/kotlin/src/commonTest/kotlin/com/algolia/methods/requests/MonitoringTest.kt delete mode 100644 tests/output/kotlin/src/commonTest/kotlin/com/algolia/methods/requests/PersonalizationTest.kt delete mode 100644 tests/output/kotlin/src/commonTest/kotlin/com/algolia/methods/requests/QuerySuggestionsTest.kt delete mode 100644 tests/output/kotlin/src/commonTest/kotlin/com/algolia/methods/requests/RecommendTest.kt delete mode 100644 tests/output/kotlin/src/commonTest/kotlin/com/algolia/methods/requests/SearchTest.kt delete mode 100644 tests/output/php/src/methods/requests/AbtestingTest.php delete mode 100644 tests/output/php/src/methods/requests/AnalyticsTest.php delete mode 100644 tests/output/php/src/methods/requests/InsightsTest.php delete mode 100644 tests/output/php/src/methods/requests/MonitoringTest.php delete mode 100644 tests/output/php/src/methods/requests/PersonalizationTest.php delete mode 100644 tests/output/php/src/methods/requests/QuerySuggestionsTest.php delete mode 100644 tests/output/php/src/methods/requests/RecommendTest.php delete mode 100644 tests/output/php/src/methods/requests/SearchTest.php delete mode 100644 tests/output/python/tests/methods/requests/abtesting_test.py delete mode 100644 tests/output/python/tests/methods/requests/analytics_test.py delete mode 100644 tests/output/python/tests/methods/requests/ingestion_test.py delete mode 100644 tests/output/python/tests/methods/requests/insights_test.py delete mode 100644 tests/output/python/tests/methods/requests/monitoring_test.py delete mode 100644 tests/output/python/tests/methods/requests/personalization_test.py delete mode 100644 tests/output/python/tests/methods/requests/query_suggestions_test.py delete mode 100644 tests/output/python/tests/methods/requests/recommend_test.py delete mode 100644 tests/output/python/tests/methods/requests/search_test.py delete mode 100644 tests/output/ruby/test/methods/requests/abtesting_test.rb delete mode 100644 tests/output/ruby/test/methods/requests/analytics_test.rb delete mode 100644 tests/output/ruby/test/methods/requests/ingestion_test.rb delete mode 100644 tests/output/ruby/test/methods/requests/insights_test.rb delete mode 100644 tests/output/ruby/test/methods/requests/monitoring_test.rb delete mode 100644 tests/output/ruby/test/methods/requests/personalization_test.rb delete mode 100644 tests/output/ruby/test/methods/requests/recommend_test.rb delete mode 100644 tests/output/ruby/test/methods/requests/search_test.rb delete mode 100644 tests/output/scala/src/test/scala/algoliasearch/methods/requests/AbtestingTest.scala delete mode 100644 tests/output/scala/src/test/scala/algoliasearch/methods/requests/AnalyticsTest.scala delete mode 100644 tests/output/scala/src/test/scala/algoliasearch/methods/requests/IngestionTest.scala delete mode 100644 tests/output/scala/src/test/scala/algoliasearch/methods/requests/InsightsTest.scala delete mode 100644 tests/output/scala/src/test/scala/algoliasearch/methods/requests/MonitoringTest.scala delete mode 100644 tests/output/scala/src/test/scala/algoliasearch/methods/requests/PersonalizationTest.scala delete mode 100644 tests/output/scala/src/test/scala/algoliasearch/methods/requests/QuerySuggestionsTest.scala delete mode 100644 tests/output/scala/src/test/scala/algoliasearch/methods/requests/RecommendTest.scala delete mode 100644 tests/output/scala/src/test/scala/algoliasearch/methods/requests/SearchTest.scala diff --git a/config/generation.config.mjs b/config/generation.config.mjs index b530f235ef..2413d204b9 100644 --- a/config/generation.config.mjs +++ b/config/generation.config.mjs @@ -62,7 +62,7 @@ export const patterns = [ 'clients/algoliasearch-client-kotlin/client/src/commonMain/kotlin/com/algolia/client/model/**', 'tests/output/kotlin/src/commonTest/kotlin/com/algolia/client/**', - 'tests/output/kotlin/src/commonTest/kotlin/com/algolia/methods/requests/**', + 'tests/output/kotlin/src/commonTest/kotlin/com/algolia/requests/**', // Dart '!clients/algoliasearch-client-dart/**', diff --git a/generators/src/main/java/com/algolia/codegen/cts/manager/GoCTSManager.java b/generators/src/main/java/com/algolia/codegen/cts/manager/GoCTSManager.java index e9bb3ee6d9..a681aae775 100644 --- a/generators/src/main/java/com/algolia/codegen/cts/manager/GoCTSManager.java +++ b/generators/src/main/java/com/algolia/codegen/cts/manager/GoCTSManager.java @@ -8,7 +8,7 @@ public class GoCTSManager implements CTSManager { @Override public void addSupportingFiles(List supportingFiles) { - supportingFiles.add(new SupportingFile("common.mustache", "tests/methods/requests", "common.go")); + supportingFiles.add(new SupportingFile("common.mustache", "tests/requests", "common.go")); } @Override diff --git a/generators/src/main/java/com/algolia/codegen/cts/manager/PythonCTSManager.java b/generators/src/main/java/com/algolia/codegen/cts/manager/PythonCTSManager.java index 5fb7141ddb..39b906136b 100644 --- a/generators/src/main/java/com/algolia/codegen/cts/manager/PythonCTSManager.java +++ b/generators/src/main/java/com/algolia/codegen/cts/manager/PythonCTSManager.java @@ -15,8 +15,8 @@ public PythonCTSManager(String client) { @Override public void addSupportingFiles(List supportingFiles) { - supportingFiles.add(new SupportingFile("__init__.mustache", "tests/methods/", "__init__.py")); - supportingFiles.add(new SupportingFile("__init__.mustache", "tests/methods/requests", "__init__.py")); + supportingFiles.add(new SupportingFile("__init__.mustache", "tests/", "__init__.py")); + supportingFiles.add(new SupportingFile("__init__.mustache", "tests/requests", "__init__.py")); supportingFiles.add(new SupportingFile("__init__.mustache", "tests/client", "__init__.py")); } diff --git a/generators/src/main/java/com/algolia/codegen/cts/tests/TestsRequest.java b/generators/src/main/java/com/algolia/codegen/cts/tests/TestsRequest.java index 7e2c3c3566..f5487a41cd 100644 --- a/generators/src/main/java/com/algolia/codegen/cts/tests/TestsRequest.java +++ b/generators/src/main/java/com/algolia/codegen/cts/tests/TestsRequest.java @@ -21,7 +21,7 @@ protected Map loadRequestCTS() throws Exception { if ((language.equals("javascript") || language.equals("dart")) && client.equals("algoliasearch")) { clientName = "search"; } - return super.loadCTS("methods/requests", clientName, Request[].class); + return super.loadCTS("requests", clientName, Request[].class); } @Override @@ -36,11 +36,7 @@ public void addSupportingFiles(List supportingFiles, String outp return; } supportingFiles.add( - new SupportingFile( - "requests/requests.mustache", - outputFolder + "/methods/requests", - Helpers.createClientName(client, language) + extension - ) + new SupportingFile("requests/requests.mustache", outputFolder + "/requests", Helpers.createClientName(client, language) + extension) ); } @@ -58,7 +54,7 @@ public void run(Map models, Map "operationId '" + operationId + "' does not exist in the tests suite, please create the file:" + - " 'tests/CTS/methods/requests/" + + " 'tests/CTS/requests/" + client + "/" + operationId + diff --git a/scripts/ci/githubActions/createMatrix.ts b/scripts/ci/githubActions/createMatrix.ts index e10f8de630..155f16010f 100644 --- a/scripts/ci/githubActions/createMatrix.ts +++ b/scripts/ci/githubActions/createMatrix.ts @@ -79,7 +79,7 @@ async function createClientMatrix(baseBranch: string): Promise { const testsRootFolder = `tests/output/${language}`; const testsOutputBase = `${testsRootFolder}/${getTestOutputFolder(language)}`; // We delete tests to ensure the CI only run tests against what changed. - const testsToDelete = `${testsOutputBase}/client ${testsOutputBase}/methods/requests`; + const testsToDelete = `${testsOutputBase}/client ${testsOutputBase}/requests`; // We only store tests of clients that ran during this job, the rest stay as is let testsToStore = matrix[language].toRun @@ -87,7 +87,7 @@ async function createClientMatrix(baseBranch: string): Promise { const clientName = createClientName(client, language); const extension = getTestExtension(language); - return `${testsOutputBase}/client/${clientName}${extension} ${testsOutputBase}/methods/requests/${clientName}${extension}`; + return `${testsOutputBase}/client/${clientName}${extension} ${testsOutputBase}/requests/${clientName}${extension}`; }) .join(' '); @@ -100,7 +100,7 @@ async function createClientMatrix(baseBranch: string): Promise { testsToStore = `${testsToStore} ${testsRootFolder}/build.gradle`; break; case 'go': - testsToStore = `${testsToStore} ${testsOutputBase}/methods/requests/common.go ${testsRootFolder}/go.sum ${testsRootFolder}/go.mod`; + testsToStore = `${testsToStore} ${testsOutputBase}/requests/common.go ${testsRootFolder}/go.sum ${testsRootFolder}/go.mod`; break; case 'javascript': const npmNamespace = getClientsConfigField('javascript', 'npmNamespace'); diff --git a/scripts/husky/__tests__/pre-commit.test.mjs b/scripts/husky/__tests__/pre-commit.test.mjs index ceaacfc795..be2470c0c9 100644 --- a/scripts/husky/__tests__/pre-commit.test.mjs +++ b/scripts/husky/__tests__/pre-commit.test.mjs @@ -33,7 +33,7 @@ describe('micromatch', () => { 'tests/output/javascript/package.json', 'tests/output/javascript/src/client/test.ts', - 'tests/output/php/src/methods/requests/test.php', + 'tests/output/php/src/requests/test.php', ], getPatterns() ) @@ -54,7 +54,7 @@ describe('micromatch', () => { 'tests/output/javascript/src/client/test.ts', 'tests/output/javascript/package.json', - 'tests/output/php/src/methods/requests/test.php', + 'tests/output/php/src/requests/test.php', ].sort() ); }); diff --git a/scripts/husky/pre-commit.mjs b/scripts/husky/pre-commit.mjs index 23ef8282cc..b8196cf0e3 100755 --- a/scripts/husky/pre-commit.mjs +++ b/scripts/husky/pre-commit.mjs @@ -21,7 +21,7 @@ export function getPatterns() { const entries = patterns; for (const [language, { tests }] of Object.entries(clientConfig)) { entries.push(`tests/output/${language}/${tests.outputFolder}/client/**`); - entries.push(`tests/output/${language}/${tests.outputFolder}/methods/**`); + entries.push(`tests/output/${language}/${tests.outputFolder}/requests/**`); } return entries; } diff --git a/tests/CTS/methods/requests/abtesting/addABTests.json b/tests/CTS/requests/abtesting/addABTests.json similarity index 100% rename from tests/CTS/methods/requests/abtesting/addABTests.json rename to tests/CTS/requests/abtesting/addABTests.json diff --git a/tests/CTS/methods/requests/abtesting/deleteABTest.json b/tests/CTS/requests/abtesting/deleteABTest.json similarity index 100% rename from tests/CTS/methods/requests/abtesting/deleteABTest.json rename to tests/CTS/requests/abtesting/deleteABTest.json diff --git a/tests/CTS/methods/requests/abtesting/getABTest.json b/tests/CTS/requests/abtesting/getABTest.json similarity index 100% rename from tests/CTS/methods/requests/abtesting/getABTest.json rename to tests/CTS/requests/abtesting/getABTest.json diff --git a/tests/CTS/methods/requests/abtesting/listABTests.json b/tests/CTS/requests/abtesting/listABTests.json similarity index 100% rename from tests/CTS/methods/requests/abtesting/listABTests.json rename to tests/CTS/requests/abtesting/listABTests.json diff --git a/tests/CTS/methods/requests/abtesting/stopABTest.json b/tests/CTS/requests/abtesting/stopABTest.json similarity index 100% rename from tests/CTS/methods/requests/abtesting/stopABTest.json rename to tests/CTS/requests/abtesting/stopABTest.json diff --git a/tests/CTS/methods/requests/analytics/getAverageClickPosition.json b/tests/CTS/requests/analytics/getAverageClickPosition.json similarity index 100% rename from tests/CTS/methods/requests/analytics/getAverageClickPosition.json rename to tests/CTS/requests/analytics/getAverageClickPosition.json diff --git a/tests/CTS/methods/requests/analytics/getClickPositions.json b/tests/CTS/requests/analytics/getClickPositions.json similarity index 100% rename from tests/CTS/methods/requests/analytics/getClickPositions.json rename to tests/CTS/requests/analytics/getClickPositions.json diff --git a/tests/CTS/methods/requests/analytics/getClickThroughRate.json b/tests/CTS/requests/analytics/getClickThroughRate.json similarity index 100% rename from tests/CTS/methods/requests/analytics/getClickThroughRate.json rename to tests/CTS/requests/analytics/getClickThroughRate.json diff --git a/tests/CTS/methods/requests/analytics/getConversationRate.json b/tests/CTS/requests/analytics/getConversationRate.json similarity index 100% rename from tests/CTS/methods/requests/analytics/getConversationRate.json rename to tests/CTS/requests/analytics/getConversationRate.json diff --git a/tests/CTS/methods/requests/analytics/getNoClickRate.json b/tests/CTS/requests/analytics/getNoClickRate.json similarity index 100% rename from tests/CTS/methods/requests/analytics/getNoClickRate.json rename to tests/CTS/requests/analytics/getNoClickRate.json diff --git a/tests/CTS/methods/requests/analytics/getNoResultsRate.json b/tests/CTS/requests/analytics/getNoResultsRate.json similarity index 100% rename from tests/CTS/methods/requests/analytics/getNoResultsRate.json rename to tests/CTS/requests/analytics/getNoResultsRate.json diff --git a/tests/CTS/methods/requests/analytics/getSearchesCount.json b/tests/CTS/requests/analytics/getSearchesCount.json similarity index 100% rename from tests/CTS/methods/requests/analytics/getSearchesCount.json rename to tests/CTS/requests/analytics/getSearchesCount.json diff --git a/tests/CTS/methods/requests/analytics/getSearchesNoClicks.json b/tests/CTS/requests/analytics/getSearchesNoClicks.json similarity index 100% rename from tests/CTS/methods/requests/analytics/getSearchesNoClicks.json rename to tests/CTS/requests/analytics/getSearchesNoClicks.json diff --git a/tests/CTS/methods/requests/analytics/getSearchesNoResults.json b/tests/CTS/requests/analytics/getSearchesNoResults.json similarity index 100% rename from tests/CTS/methods/requests/analytics/getSearchesNoResults.json rename to tests/CTS/requests/analytics/getSearchesNoResults.json diff --git a/tests/CTS/methods/requests/analytics/getStatus.json b/tests/CTS/requests/analytics/getStatus.json similarity index 100% rename from tests/CTS/methods/requests/analytics/getStatus.json rename to tests/CTS/requests/analytics/getStatus.json diff --git a/tests/CTS/methods/requests/analytics/getTopCountries.json b/tests/CTS/requests/analytics/getTopCountries.json similarity index 100% rename from tests/CTS/methods/requests/analytics/getTopCountries.json rename to tests/CTS/requests/analytics/getTopCountries.json diff --git a/tests/CTS/methods/requests/analytics/getTopFilterAttributes.json b/tests/CTS/requests/analytics/getTopFilterAttributes.json similarity index 100% rename from tests/CTS/methods/requests/analytics/getTopFilterAttributes.json rename to tests/CTS/requests/analytics/getTopFilterAttributes.json diff --git a/tests/CTS/methods/requests/analytics/getTopFilterForAttribute.json b/tests/CTS/requests/analytics/getTopFilterForAttribute.json similarity index 100% rename from tests/CTS/methods/requests/analytics/getTopFilterForAttribute.json rename to tests/CTS/requests/analytics/getTopFilterForAttribute.json diff --git a/tests/CTS/methods/requests/analytics/getTopFiltersNoResults.json b/tests/CTS/requests/analytics/getTopFiltersNoResults.json similarity index 100% rename from tests/CTS/methods/requests/analytics/getTopFiltersNoResults.json rename to tests/CTS/requests/analytics/getTopFiltersNoResults.json diff --git a/tests/CTS/methods/requests/analytics/getTopHits.json b/tests/CTS/requests/analytics/getTopHits.json similarity index 100% rename from tests/CTS/methods/requests/analytics/getTopHits.json rename to tests/CTS/requests/analytics/getTopHits.json diff --git a/tests/CTS/methods/requests/analytics/getTopSearches.json b/tests/CTS/requests/analytics/getTopSearches.json similarity index 100% rename from tests/CTS/methods/requests/analytics/getTopSearches.json rename to tests/CTS/requests/analytics/getTopSearches.json diff --git a/tests/CTS/methods/requests/analytics/getUsersCount.json b/tests/CTS/requests/analytics/getUsersCount.json similarity index 100% rename from tests/CTS/methods/requests/analytics/getUsersCount.json rename to tests/CTS/requests/analytics/getUsersCount.json diff --git a/tests/CTS/methods/requests/common/customDelete.json b/tests/CTS/requests/common/customDelete.json similarity index 100% rename from tests/CTS/methods/requests/common/customDelete.json rename to tests/CTS/requests/common/customDelete.json diff --git a/tests/CTS/methods/requests/common/customGet.json b/tests/CTS/requests/common/customGet.json similarity index 100% rename from tests/CTS/methods/requests/common/customGet.json rename to tests/CTS/requests/common/customGet.json diff --git a/tests/CTS/methods/requests/common/customPost.json b/tests/CTS/requests/common/customPost.json similarity index 100% rename from tests/CTS/methods/requests/common/customPost.json rename to tests/CTS/requests/common/customPost.json diff --git a/tests/CTS/methods/requests/common/customPut.json b/tests/CTS/requests/common/customPut.json similarity index 100% rename from tests/CTS/methods/requests/common/customPut.json rename to tests/CTS/requests/common/customPut.json diff --git a/tests/CTS/methods/requests/ingestion/createAuthentication.json b/tests/CTS/requests/ingestion/createAuthentication.json similarity index 100% rename from tests/CTS/methods/requests/ingestion/createAuthentication.json rename to tests/CTS/requests/ingestion/createAuthentication.json diff --git a/tests/CTS/methods/requests/ingestion/createDestination.json b/tests/CTS/requests/ingestion/createDestination.json similarity index 100% rename from tests/CTS/methods/requests/ingestion/createDestination.json rename to tests/CTS/requests/ingestion/createDestination.json diff --git a/tests/CTS/methods/requests/ingestion/createSource.json b/tests/CTS/requests/ingestion/createSource.json similarity index 100% rename from tests/CTS/methods/requests/ingestion/createSource.json rename to tests/CTS/requests/ingestion/createSource.json diff --git a/tests/CTS/methods/requests/ingestion/createTask.json b/tests/CTS/requests/ingestion/createTask.json similarity index 100% rename from tests/CTS/methods/requests/ingestion/createTask.json rename to tests/CTS/requests/ingestion/createTask.json diff --git a/tests/CTS/methods/requests/ingestion/deleteAuthentication.json b/tests/CTS/requests/ingestion/deleteAuthentication.json similarity index 100% rename from tests/CTS/methods/requests/ingestion/deleteAuthentication.json rename to tests/CTS/requests/ingestion/deleteAuthentication.json diff --git a/tests/CTS/methods/requests/ingestion/deleteDestination.json b/tests/CTS/requests/ingestion/deleteDestination.json similarity index 100% rename from tests/CTS/methods/requests/ingestion/deleteDestination.json rename to tests/CTS/requests/ingestion/deleteDestination.json diff --git a/tests/CTS/methods/requests/ingestion/deleteSource.json b/tests/CTS/requests/ingestion/deleteSource.json similarity index 100% rename from tests/CTS/methods/requests/ingestion/deleteSource.json rename to tests/CTS/requests/ingestion/deleteSource.json diff --git a/tests/CTS/methods/requests/ingestion/deleteTask.json b/tests/CTS/requests/ingestion/deleteTask.json similarity index 100% rename from tests/CTS/methods/requests/ingestion/deleteTask.json rename to tests/CTS/requests/ingestion/deleteTask.json diff --git a/tests/CTS/methods/requests/ingestion/disableTask.json b/tests/CTS/requests/ingestion/disableTask.json similarity index 100% rename from tests/CTS/methods/requests/ingestion/disableTask.json rename to tests/CTS/requests/ingestion/disableTask.json diff --git a/tests/CTS/methods/requests/ingestion/enableTask.json b/tests/CTS/requests/ingestion/enableTask.json similarity index 100% rename from tests/CTS/methods/requests/ingestion/enableTask.json rename to tests/CTS/requests/ingestion/enableTask.json diff --git a/tests/CTS/methods/requests/ingestion/getAuthentication.json b/tests/CTS/requests/ingestion/getAuthentication.json similarity index 100% rename from tests/CTS/methods/requests/ingestion/getAuthentication.json rename to tests/CTS/requests/ingestion/getAuthentication.json diff --git a/tests/CTS/methods/requests/ingestion/getAuthentications.json b/tests/CTS/requests/ingestion/getAuthentications.json similarity index 100% rename from tests/CTS/methods/requests/ingestion/getAuthentications.json rename to tests/CTS/requests/ingestion/getAuthentications.json diff --git a/tests/CTS/methods/requests/ingestion/getDestination.json b/tests/CTS/requests/ingestion/getDestination.json similarity index 100% rename from tests/CTS/methods/requests/ingestion/getDestination.json rename to tests/CTS/requests/ingestion/getDestination.json diff --git a/tests/CTS/methods/requests/ingestion/getDestinations.json b/tests/CTS/requests/ingestion/getDestinations.json similarity index 100% rename from tests/CTS/methods/requests/ingestion/getDestinations.json rename to tests/CTS/requests/ingestion/getDestinations.json diff --git a/tests/CTS/methods/requests/ingestion/getDockerSourceStreams.json b/tests/CTS/requests/ingestion/getDockerSourceStreams.json similarity index 100% rename from tests/CTS/methods/requests/ingestion/getDockerSourceStreams.json rename to tests/CTS/requests/ingestion/getDockerSourceStreams.json diff --git a/tests/CTS/methods/requests/ingestion/getEvent.json b/tests/CTS/requests/ingestion/getEvent.json similarity index 100% rename from tests/CTS/methods/requests/ingestion/getEvent.json rename to tests/CTS/requests/ingestion/getEvent.json diff --git a/tests/CTS/methods/requests/ingestion/getEvents.json b/tests/CTS/requests/ingestion/getEvents.json similarity index 100% rename from tests/CTS/methods/requests/ingestion/getEvents.json rename to tests/CTS/requests/ingestion/getEvents.json diff --git a/tests/CTS/methods/requests/ingestion/getRun.json b/tests/CTS/requests/ingestion/getRun.json similarity index 100% rename from tests/CTS/methods/requests/ingestion/getRun.json rename to tests/CTS/requests/ingestion/getRun.json diff --git a/tests/CTS/methods/requests/ingestion/getRuns.json b/tests/CTS/requests/ingestion/getRuns.json similarity index 100% rename from tests/CTS/methods/requests/ingestion/getRuns.json rename to tests/CTS/requests/ingestion/getRuns.json diff --git a/tests/CTS/methods/requests/ingestion/getSource.json b/tests/CTS/requests/ingestion/getSource.json similarity index 100% rename from tests/CTS/methods/requests/ingestion/getSource.json rename to tests/CTS/requests/ingestion/getSource.json diff --git a/tests/CTS/methods/requests/ingestion/getSources.json b/tests/CTS/requests/ingestion/getSources.json similarity index 100% rename from tests/CTS/methods/requests/ingestion/getSources.json rename to tests/CTS/requests/ingestion/getSources.json diff --git a/tests/CTS/methods/requests/ingestion/getTask.json b/tests/CTS/requests/ingestion/getTask.json similarity index 100% rename from tests/CTS/methods/requests/ingestion/getTask.json rename to tests/CTS/requests/ingestion/getTask.json diff --git a/tests/CTS/methods/requests/ingestion/getTasks.json b/tests/CTS/requests/ingestion/getTasks.json similarity index 100% rename from tests/CTS/methods/requests/ingestion/getTasks.json rename to tests/CTS/requests/ingestion/getTasks.json diff --git a/tests/CTS/methods/requests/ingestion/runTask.json b/tests/CTS/requests/ingestion/runTask.json similarity index 100% rename from tests/CTS/methods/requests/ingestion/runTask.json rename to tests/CTS/requests/ingestion/runTask.json diff --git a/tests/CTS/methods/requests/ingestion/searchAuthentications.json b/tests/CTS/requests/ingestion/searchAuthentications.json similarity index 100% rename from tests/CTS/methods/requests/ingestion/searchAuthentications.json rename to tests/CTS/requests/ingestion/searchAuthentications.json diff --git a/tests/CTS/methods/requests/ingestion/searchDestinations.json b/tests/CTS/requests/ingestion/searchDestinations.json similarity index 100% rename from tests/CTS/methods/requests/ingestion/searchDestinations.json rename to tests/CTS/requests/ingestion/searchDestinations.json diff --git a/tests/CTS/methods/requests/ingestion/searchSources.json b/tests/CTS/requests/ingestion/searchSources.json similarity index 100% rename from tests/CTS/methods/requests/ingestion/searchSources.json rename to tests/CTS/requests/ingestion/searchSources.json diff --git a/tests/CTS/methods/requests/ingestion/searchTasks.json b/tests/CTS/requests/ingestion/searchTasks.json similarity index 100% rename from tests/CTS/methods/requests/ingestion/searchTasks.json rename to tests/CTS/requests/ingestion/searchTasks.json diff --git a/tests/CTS/methods/requests/ingestion/triggerDockerSourceDiscover.json b/tests/CTS/requests/ingestion/triggerDockerSourceDiscover.json similarity index 100% rename from tests/CTS/methods/requests/ingestion/triggerDockerSourceDiscover.json rename to tests/CTS/requests/ingestion/triggerDockerSourceDiscover.json diff --git a/tests/CTS/methods/requests/ingestion/updateAuthentication.json b/tests/CTS/requests/ingestion/updateAuthentication.json similarity index 100% rename from tests/CTS/methods/requests/ingestion/updateAuthentication.json rename to tests/CTS/requests/ingestion/updateAuthentication.json diff --git a/tests/CTS/methods/requests/ingestion/updateDestination.json b/tests/CTS/requests/ingestion/updateDestination.json similarity index 100% rename from tests/CTS/methods/requests/ingestion/updateDestination.json rename to tests/CTS/requests/ingestion/updateDestination.json diff --git a/tests/CTS/methods/requests/ingestion/updateSource.json b/tests/CTS/requests/ingestion/updateSource.json similarity index 100% rename from tests/CTS/methods/requests/ingestion/updateSource.json rename to tests/CTS/requests/ingestion/updateSource.json diff --git a/tests/CTS/methods/requests/ingestion/updateTask.json b/tests/CTS/requests/ingestion/updateTask.json similarity index 100% rename from tests/CTS/methods/requests/ingestion/updateTask.json rename to tests/CTS/requests/ingestion/updateTask.json diff --git a/tests/CTS/methods/requests/insights/pushEvents.json b/tests/CTS/requests/insights/pushEvents.json similarity index 100% rename from tests/CTS/methods/requests/insights/pushEvents.json rename to tests/CTS/requests/insights/pushEvents.json diff --git a/tests/CTS/methods/requests/monitoring/getClusterIncidents.json b/tests/CTS/requests/monitoring/getClusterIncidents.json similarity index 100% rename from tests/CTS/methods/requests/monitoring/getClusterIncidents.json rename to tests/CTS/requests/monitoring/getClusterIncidents.json diff --git a/tests/CTS/methods/requests/monitoring/getClusterStatus.json b/tests/CTS/requests/monitoring/getClusterStatus.json similarity index 100% rename from tests/CTS/methods/requests/monitoring/getClusterStatus.json rename to tests/CTS/requests/monitoring/getClusterStatus.json diff --git a/tests/CTS/methods/requests/monitoring/getIncidents.json b/tests/CTS/requests/monitoring/getIncidents.json similarity index 100% rename from tests/CTS/methods/requests/monitoring/getIncidents.json rename to tests/CTS/requests/monitoring/getIncidents.json diff --git a/tests/CTS/methods/requests/monitoring/getIndexingTime.json b/tests/CTS/requests/monitoring/getIndexingTime.json similarity index 100% rename from tests/CTS/methods/requests/monitoring/getIndexingTime.json rename to tests/CTS/requests/monitoring/getIndexingTime.json diff --git a/tests/CTS/methods/requests/monitoring/getInventory.json b/tests/CTS/requests/monitoring/getInventory.json similarity index 100% rename from tests/CTS/methods/requests/monitoring/getInventory.json rename to tests/CTS/requests/monitoring/getInventory.json diff --git a/tests/CTS/methods/requests/monitoring/getLatency.json b/tests/CTS/requests/monitoring/getLatency.json similarity index 100% rename from tests/CTS/methods/requests/monitoring/getLatency.json rename to tests/CTS/requests/monitoring/getLatency.json diff --git a/tests/CTS/methods/requests/monitoring/getMetrics.json b/tests/CTS/requests/monitoring/getMetrics.json similarity index 100% rename from tests/CTS/methods/requests/monitoring/getMetrics.json rename to tests/CTS/requests/monitoring/getMetrics.json diff --git a/tests/CTS/methods/requests/monitoring/getReachability.json b/tests/CTS/requests/monitoring/getReachability.json similarity index 100% rename from tests/CTS/methods/requests/monitoring/getReachability.json rename to tests/CTS/requests/monitoring/getReachability.json diff --git a/tests/CTS/methods/requests/monitoring/getStatus.json b/tests/CTS/requests/monitoring/getStatus.json similarity index 100% rename from tests/CTS/methods/requests/monitoring/getStatus.json rename to tests/CTS/requests/monitoring/getStatus.json diff --git a/tests/CTS/methods/requests/personalization/deleteUserProfile.json b/tests/CTS/requests/personalization/deleteUserProfile.json similarity index 100% rename from tests/CTS/methods/requests/personalization/deleteUserProfile.json rename to tests/CTS/requests/personalization/deleteUserProfile.json diff --git a/tests/CTS/methods/requests/personalization/getPersonalizationStrategy.json b/tests/CTS/requests/personalization/getPersonalizationStrategy.json similarity index 100% rename from tests/CTS/methods/requests/personalization/getPersonalizationStrategy.json rename to tests/CTS/requests/personalization/getPersonalizationStrategy.json diff --git a/tests/CTS/methods/requests/personalization/getUserTokenProfile.json b/tests/CTS/requests/personalization/getUserTokenProfile.json similarity index 100% rename from tests/CTS/methods/requests/personalization/getUserTokenProfile.json rename to tests/CTS/requests/personalization/getUserTokenProfile.json diff --git a/tests/CTS/methods/requests/personalization/setPersonalizationStrategy.json b/tests/CTS/requests/personalization/setPersonalizationStrategy.json similarity index 100% rename from tests/CTS/methods/requests/personalization/setPersonalizationStrategy.json rename to tests/CTS/requests/personalization/setPersonalizationStrategy.json diff --git a/tests/CTS/methods/requests/query-suggestions/createConfig.json b/tests/CTS/requests/query-suggestions/createConfig.json similarity index 100% rename from tests/CTS/methods/requests/query-suggestions/createConfig.json rename to tests/CTS/requests/query-suggestions/createConfig.json diff --git a/tests/CTS/methods/requests/query-suggestions/deleteConfig.json b/tests/CTS/requests/query-suggestions/deleteConfig.json similarity index 100% rename from tests/CTS/methods/requests/query-suggestions/deleteConfig.json rename to tests/CTS/requests/query-suggestions/deleteConfig.json diff --git a/tests/CTS/methods/requests/query-suggestions/getAllConfigs.json b/tests/CTS/requests/query-suggestions/getAllConfigs.json similarity index 100% rename from tests/CTS/methods/requests/query-suggestions/getAllConfigs.json rename to tests/CTS/requests/query-suggestions/getAllConfigs.json diff --git a/tests/CTS/methods/requests/query-suggestions/getConfig.json b/tests/CTS/requests/query-suggestions/getConfig.json similarity index 100% rename from tests/CTS/methods/requests/query-suggestions/getConfig.json rename to tests/CTS/requests/query-suggestions/getConfig.json diff --git a/tests/CTS/methods/requests/query-suggestions/getConfigStatus.json b/tests/CTS/requests/query-suggestions/getConfigStatus.json similarity index 100% rename from tests/CTS/methods/requests/query-suggestions/getConfigStatus.json rename to tests/CTS/requests/query-suggestions/getConfigStatus.json diff --git a/tests/CTS/methods/requests/query-suggestions/getLogFile.json b/tests/CTS/requests/query-suggestions/getLogFile.json similarity index 100% rename from tests/CTS/methods/requests/query-suggestions/getLogFile.json rename to tests/CTS/requests/query-suggestions/getLogFile.json diff --git a/tests/CTS/methods/requests/query-suggestions/updateConfig.json b/tests/CTS/requests/query-suggestions/updateConfig.json similarity index 100% rename from tests/CTS/methods/requests/query-suggestions/updateConfig.json rename to tests/CTS/requests/query-suggestions/updateConfig.json diff --git a/tests/CTS/methods/requests/recommend/deleteRecommendRule.json b/tests/CTS/requests/recommend/deleteRecommendRule.json similarity index 100% rename from tests/CTS/methods/requests/recommend/deleteRecommendRule.json rename to tests/CTS/requests/recommend/deleteRecommendRule.json diff --git a/tests/CTS/methods/requests/recommend/getRecommendRule.json b/tests/CTS/requests/recommend/getRecommendRule.json similarity index 100% rename from tests/CTS/methods/requests/recommend/getRecommendRule.json rename to tests/CTS/requests/recommend/getRecommendRule.json diff --git a/tests/CTS/methods/requests/recommend/getRecommendStatus.json b/tests/CTS/requests/recommend/getRecommendStatus.json similarity index 100% rename from tests/CTS/methods/requests/recommend/getRecommendStatus.json rename to tests/CTS/requests/recommend/getRecommendStatus.json diff --git a/tests/CTS/methods/requests/recommend/getRecommendations.json b/tests/CTS/requests/recommend/getRecommendations.json similarity index 100% rename from tests/CTS/methods/requests/recommend/getRecommendations.json rename to tests/CTS/requests/recommend/getRecommendations.json diff --git a/tests/CTS/methods/requests/recommend/searchRecommendRules.json b/tests/CTS/requests/recommend/searchRecommendRules.json similarity index 100% rename from tests/CTS/methods/requests/recommend/searchRecommendRules.json rename to tests/CTS/requests/recommend/searchRecommendRules.json diff --git a/tests/CTS/methods/requests/search/addApiKey.json b/tests/CTS/requests/search/addApiKey.json similarity index 100% rename from tests/CTS/methods/requests/search/addApiKey.json rename to tests/CTS/requests/search/addApiKey.json diff --git a/tests/CTS/methods/requests/search/addOrUpdateObject.json b/tests/CTS/requests/search/addOrUpdateObject.json similarity index 100% rename from tests/CTS/methods/requests/search/addOrUpdateObject.json rename to tests/CTS/requests/search/addOrUpdateObject.json diff --git a/tests/CTS/methods/requests/search/appendSource.json b/tests/CTS/requests/search/appendSource.json similarity index 100% rename from tests/CTS/methods/requests/search/appendSource.json rename to tests/CTS/requests/search/appendSource.json diff --git a/tests/CTS/methods/requests/search/assignUserId.json b/tests/CTS/requests/search/assignUserId.json similarity index 100% rename from tests/CTS/methods/requests/search/assignUserId.json rename to tests/CTS/requests/search/assignUserId.json diff --git a/tests/CTS/methods/requests/search/batch.json b/tests/CTS/requests/search/batch.json similarity index 100% rename from tests/CTS/methods/requests/search/batch.json rename to tests/CTS/requests/search/batch.json diff --git a/tests/CTS/methods/requests/search/batchAssignUserIds.json b/tests/CTS/requests/search/batchAssignUserIds.json similarity index 100% rename from tests/CTS/methods/requests/search/batchAssignUserIds.json rename to tests/CTS/requests/search/batchAssignUserIds.json diff --git a/tests/CTS/methods/requests/search/batchDictionaryEntries.json b/tests/CTS/requests/search/batchDictionaryEntries.json similarity index 100% rename from tests/CTS/methods/requests/search/batchDictionaryEntries.json rename to tests/CTS/requests/search/batchDictionaryEntries.json diff --git a/tests/CTS/methods/requests/search/browse.json b/tests/CTS/requests/search/browse.json similarity index 100% rename from tests/CTS/methods/requests/search/browse.json rename to tests/CTS/requests/search/browse.json diff --git a/tests/CTS/methods/requests/search/clearAllSynonyms.json b/tests/CTS/requests/search/clearAllSynonyms.json similarity index 100% rename from tests/CTS/methods/requests/search/clearAllSynonyms.json rename to tests/CTS/requests/search/clearAllSynonyms.json diff --git a/tests/CTS/methods/requests/search/clearObjects.json b/tests/CTS/requests/search/clearObjects.json similarity index 100% rename from tests/CTS/methods/requests/search/clearObjects.json rename to tests/CTS/requests/search/clearObjects.json diff --git a/tests/CTS/methods/requests/search/clearRules.json b/tests/CTS/requests/search/clearRules.json similarity index 100% rename from tests/CTS/methods/requests/search/clearRules.json rename to tests/CTS/requests/search/clearRules.json diff --git a/tests/CTS/methods/requests/search/deleteApiKey.json b/tests/CTS/requests/search/deleteApiKey.json similarity index 100% rename from tests/CTS/methods/requests/search/deleteApiKey.json rename to tests/CTS/requests/search/deleteApiKey.json diff --git a/tests/CTS/methods/requests/search/deleteBy.json b/tests/CTS/requests/search/deleteBy.json similarity index 100% rename from tests/CTS/methods/requests/search/deleteBy.json rename to tests/CTS/requests/search/deleteBy.json diff --git a/tests/CTS/methods/requests/search/deleteIndex.json b/tests/CTS/requests/search/deleteIndex.json similarity index 100% rename from tests/CTS/methods/requests/search/deleteIndex.json rename to tests/CTS/requests/search/deleteIndex.json diff --git a/tests/CTS/methods/requests/search/deleteObject.json b/tests/CTS/requests/search/deleteObject.json similarity index 100% rename from tests/CTS/methods/requests/search/deleteObject.json rename to tests/CTS/requests/search/deleteObject.json diff --git a/tests/CTS/methods/requests/search/deleteRule.json b/tests/CTS/requests/search/deleteRule.json similarity index 100% rename from tests/CTS/methods/requests/search/deleteRule.json rename to tests/CTS/requests/search/deleteRule.json diff --git a/tests/CTS/methods/requests/search/deleteSource.json b/tests/CTS/requests/search/deleteSource.json similarity index 100% rename from tests/CTS/methods/requests/search/deleteSource.json rename to tests/CTS/requests/search/deleteSource.json diff --git a/tests/CTS/methods/requests/search/deleteSynonym.json b/tests/CTS/requests/search/deleteSynonym.json similarity index 100% rename from tests/CTS/methods/requests/search/deleteSynonym.json rename to tests/CTS/requests/search/deleteSynonym.json diff --git a/tests/CTS/methods/requests/search/getApiKey.json b/tests/CTS/requests/search/getApiKey.json similarity index 100% rename from tests/CTS/methods/requests/search/getApiKey.json rename to tests/CTS/requests/search/getApiKey.json diff --git a/tests/CTS/methods/requests/search/getDictionaryLanguages.json b/tests/CTS/requests/search/getDictionaryLanguages.json similarity index 100% rename from tests/CTS/methods/requests/search/getDictionaryLanguages.json rename to tests/CTS/requests/search/getDictionaryLanguages.json diff --git a/tests/CTS/methods/requests/search/getDictionarySettings.json b/tests/CTS/requests/search/getDictionarySettings.json similarity index 100% rename from tests/CTS/methods/requests/search/getDictionarySettings.json rename to tests/CTS/requests/search/getDictionarySettings.json diff --git a/tests/CTS/methods/requests/search/getLogs.json b/tests/CTS/requests/search/getLogs.json similarity index 100% rename from tests/CTS/methods/requests/search/getLogs.json rename to tests/CTS/requests/search/getLogs.json diff --git a/tests/CTS/methods/requests/search/getObject.json b/tests/CTS/requests/search/getObject.json similarity index 100% rename from tests/CTS/methods/requests/search/getObject.json rename to tests/CTS/requests/search/getObject.json diff --git a/tests/CTS/methods/requests/search/getObjects.json b/tests/CTS/requests/search/getObjects.json similarity index 100% rename from tests/CTS/methods/requests/search/getObjects.json rename to tests/CTS/requests/search/getObjects.json diff --git a/tests/CTS/methods/requests/search/getRule.json b/tests/CTS/requests/search/getRule.json similarity index 100% rename from tests/CTS/methods/requests/search/getRule.json rename to tests/CTS/requests/search/getRule.json diff --git a/tests/CTS/methods/requests/search/getSettings.json b/tests/CTS/requests/search/getSettings.json similarity index 100% rename from tests/CTS/methods/requests/search/getSettings.json rename to tests/CTS/requests/search/getSettings.json diff --git a/tests/CTS/methods/requests/search/getSources.json b/tests/CTS/requests/search/getSources.json similarity index 100% rename from tests/CTS/methods/requests/search/getSources.json rename to tests/CTS/requests/search/getSources.json diff --git a/tests/CTS/methods/requests/search/getSynonym.json b/tests/CTS/requests/search/getSynonym.json similarity index 100% rename from tests/CTS/methods/requests/search/getSynonym.json rename to tests/CTS/requests/search/getSynonym.json diff --git a/tests/CTS/methods/requests/search/getTask.json b/tests/CTS/requests/search/getTask.json similarity index 100% rename from tests/CTS/methods/requests/search/getTask.json rename to tests/CTS/requests/search/getTask.json diff --git a/tests/CTS/methods/requests/search/getTopUserIds.json b/tests/CTS/requests/search/getTopUserIds.json similarity index 100% rename from tests/CTS/methods/requests/search/getTopUserIds.json rename to tests/CTS/requests/search/getTopUserIds.json diff --git a/tests/CTS/methods/requests/search/getUserId.json b/tests/CTS/requests/search/getUserId.json similarity index 100% rename from tests/CTS/methods/requests/search/getUserId.json rename to tests/CTS/requests/search/getUserId.json diff --git a/tests/CTS/methods/requests/search/hasPendingMappings.json b/tests/CTS/requests/search/hasPendingMappings.json similarity index 100% rename from tests/CTS/methods/requests/search/hasPendingMappings.json rename to tests/CTS/requests/search/hasPendingMappings.json diff --git a/tests/CTS/methods/requests/search/listApiKeys.json b/tests/CTS/requests/search/listApiKeys.json similarity index 100% rename from tests/CTS/methods/requests/search/listApiKeys.json rename to tests/CTS/requests/search/listApiKeys.json diff --git a/tests/CTS/methods/requests/search/listClusters.json b/tests/CTS/requests/search/listClusters.json similarity index 100% rename from tests/CTS/methods/requests/search/listClusters.json rename to tests/CTS/requests/search/listClusters.json diff --git a/tests/CTS/methods/requests/search/listIndices.json b/tests/CTS/requests/search/listIndices.json similarity index 100% rename from tests/CTS/methods/requests/search/listIndices.json rename to tests/CTS/requests/search/listIndices.json diff --git a/tests/CTS/methods/requests/search/listUserIds.json b/tests/CTS/requests/search/listUserIds.json similarity index 100% rename from tests/CTS/methods/requests/search/listUserIds.json rename to tests/CTS/requests/search/listUserIds.json diff --git a/tests/CTS/methods/requests/search/multipleBatch.json b/tests/CTS/requests/search/multipleBatch.json similarity index 100% rename from tests/CTS/methods/requests/search/multipleBatch.json rename to tests/CTS/requests/search/multipleBatch.json diff --git a/tests/CTS/methods/requests/search/operationIndex.json b/tests/CTS/requests/search/operationIndex.json similarity index 100% rename from tests/CTS/methods/requests/search/operationIndex.json rename to tests/CTS/requests/search/operationIndex.json diff --git a/tests/CTS/methods/requests/search/partialUpdateObject.json b/tests/CTS/requests/search/partialUpdateObject.json similarity index 100% rename from tests/CTS/methods/requests/search/partialUpdateObject.json rename to tests/CTS/requests/search/partialUpdateObject.json diff --git a/tests/CTS/methods/requests/search/removeUserId.json b/tests/CTS/requests/search/removeUserId.json similarity index 100% rename from tests/CTS/methods/requests/search/removeUserId.json rename to tests/CTS/requests/search/removeUserId.json diff --git a/tests/CTS/methods/requests/search/replaceSources.json b/tests/CTS/requests/search/replaceSources.json similarity index 100% rename from tests/CTS/methods/requests/search/replaceSources.json rename to tests/CTS/requests/search/replaceSources.json diff --git a/tests/CTS/methods/requests/search/restoreApiKey.json b/tests/CTS/requests/search/restoreApiKey.json similarity index 100% rename from tests/CTS/methods/requests/search/restoreApiKey.json rename to tests/CTS/requests/search/restoreApiKey.json diff --git a/tests/CTS/methods/requests/search/saveObject.json b/tests/CTS/requests/search/saveObject.json similarity index 100% rename from tests/CTS/methods/requests/search/saveObject.json rename to tests/CTS/requests/search/saveObject.json diff --git a/tests/CTS/methods/requests/search/saveRule.json b/tests/CTS/requests/search/saveRule.json similarity index 100% rename from tests/CTS/methods/requests/search/saveRule.json rename to tests/CTS/requests/search/saveRule.json diff --git a/tests/CTS/methods/requests/search/saveRules.json b/tests/CTS/requests/search/saveRules.json similarity index 100% rename from tests/CTS/methods/requests/search/saveRules.json rename to tests/CTS/requests/search/saveRules.json diff --git a/tests/CTS/methods/requests/search/saveSynonym.json b/tests/CTS/requests/search/saveSynonym.json similarity index 100% rename from tests/CTS/methods/requests/search/saveSynonym.json rename to tests/CTS/requests/search/saveSynonym.json diff --git a/tests/CTS/methods/requests/search/saveSynonyms.json b/tests/CTS/requests/search/saveSynonyms.json similarity index 100% rename from tests/CTS/methods/requests/search/saveSynonyms.json rename to tests/CTS/requests/search/saveSynonyms.json diff --git a/tests/CTS/methods/requests/search/search.json b/tests/CTS/requests/search/search.json similarity index 100% rename from tests/CTS/methods/requests/search/search.json rename to tests/CTS/requests/search/search.json diff --git a/tests/CTS/methods/requests/search/searchDictionaryEntries.json b/tests/CTS/requests/search/searchDictionaryEntries.json similarity index 100% rename from tests/CTS/methods/requests/search/searchDictionaryEntries.json rename to tests/CTS/requests/search/searchDictionaryEntries.json diff --git a/tests/CTS/methods/requests/search/searchForFacetValues.json b/tests/CTS/requests/search/searchForFacetValues.json similarity index 100% rename from tests/CTS/methods/requests/search/searchForFacetValues.json rename to tests/CTS/requests/search/searchForFacetValues.json diff --git a/tests/CTS/methods/requests/search/searchRules.json b/tests/CTS/requests/search/searchRules.json similarity index 100% rename from tests/CTS/methods/requests/search/searchRules.json rename to tests/CTS/requests/search/searchRules.json diff --git a/tests/CTS/methods/requests/search/searchSingleIndex.json b/tests/CTS/requests/search/searchSingleIndex.json similarity index 100% rename from tests/CTS/methods/requests/search/searchSingleIndex.json rename to tests/CTS/requests/search/searchSingleIndex.json diff --git a/tests/CTS/methods/requests/search/searchSynonyms.json b/tests/CTS/requests/search/searchSynonyms.json similarity index 100% rename from tests/CTS/methods/requests/search/searchSynonyms.json rename to tests/CTS/requests/search/searchSynonyms.json diff --git a/tests/CTS/methods/requests/search/searchUserIds.json b/tests/CTS/requests/search/searchUserIds.json similarity index 100% rename from tests/CTS/methods/requests/search/searchUserIds.json rename to tests/CTS/requests/search/searchUserIds.json diff --git a/tests/CTS/methods/requests/search/setDictionarySettings.json b/tests/CTS/requests/search/setDictionarySettings.json similarity index 100% rename from tests/CTS/methods/requests/search/setDictionarySettings.json rename to tests/CTS/requests/search/setDictionarySettings.json diff --git a/tests/CTS/methods/requests/search/setSettings.json b/tests/CTS/requests/search/setSettings.json similarity index 100% rename from tests/CTS/methods/requests/search/setSettings.json rename to tests/CTS/requests/search/setSettings.json diff --git a/tests/CTS/methods/requests/search/updateApiKey.json b/tests/CTS/requests/search/updateApiKey.json similarity index 100% rename from tests/CTS/methods/requests/search/updateApiKey.json rename to tests/CTS/requests/search/updateApiKey.json diff --git a/tests/output/dart/test/methods/requests/algoliasearch_test.dart b/tests/output/dart/test/methods/requests/algoliasearch_test.dart deleted file mode 100644 index 1afaf98f54..0000000000 --- a/tests/output/dart/test/methods/requests/algoliasearch_test.dart +++ /dev/null @@ -1,821 +0,0 @@ -import 'package:algoliasearch/algoliasearch_lite.dart'; -import 'package:algolia_test/algolia_test.dart'; -import 'package:test/test.dart'; - -void main() { - // customPost - test( - 'allow post method for a custom path with minimal parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPost( - path: "/test/minimal", - ), - intercept: (request) { - expectPath(request.path, '/1/test/minimal'); - expect(request.method, 'post'); - expectBody(request.body, """{}"""); - }, - ), - ); - - // customPost - test( - 'allow post method for a custom path with all parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPost( - path: "/test/all", - parameters: { - 'query': "parameters", - }, - body: { - 'body': "parameters", - }, - ), - intercept: (request) { - expectPath(request.path, '/1/test/all'); - expect(request.method, 'post'); - expectParams(request.queryParameters, """{"query":"parameters"}"""); - expectBody(request.body, """{"body":"parameters"}"""); - }, - ), - ); - - // customPost - test( - 'requestOptions can override default query parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPost( - path: "/test/requestOptions", - parameters: { - 'query': "parameters", - }, - body: { - 'facet': "filters", - }, - requestOptions: RequestOptions( - urlParameters: { - 'query': "myQueryParameter", - }, - ), - ), - intercept: (request) { - expectPath(request.path, '/1/test/requestOptions'); - expect(request.method, 'post'); - expectParams( - request.queryParameters, """{"query":"myQueryParameter"}"""); - expectBody(request.body, """{"facet":"filters"}"""); - }, - ), - ); - - // customPost - test( - 'requestOptions merges query parameters with default ones', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPost( - path: "/test/requestOptions", - parameters: { - 'query': "parameters", - }, - body: { - 'facet': "filters", - }, - requestOptions: RequestOptions( - urlParameters: { - 'query2': "myQueryParameter", - }, - ), - ), - intercept: (request) { - expectPath(request.path, '/1/test/requestOptions'); - expect(request.method, 'post'); - expectParams(request.queryParameters, - """{"query":"parameters","query2":"myQueryParameter"}"""); - expectBody(request.body, """{"facet":"filters"}"""); - }, - ), - ); - - // customPost - test( - 'requestOptions can override default headers', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPost( - path: "/test/requestOptions", - parameters: { - 'query': "parameters", - }, - body: { - 'facet': "filters", - }, - requestOptions: RequestOptions( - headers: { - 'x-algolia-api-key': 'myApiKey', - }, - ), - ), - intercept: (request) { - expectPath(request.path, '/1/test/requestOptions'); - expect(request.method, 'post'); - expectHeaders(request.headers, """{"x-algolia-api-key":"myApiKey"}"""); - expectParams(request.queryParameters, """{"query":"parameters"}"""); - expectBody(request.body, """{"facet":"filters"}"""); - }, - ), - ); - - // customPost - test( - 'requestOptions merges headers with default ones', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPost( - path: "/test/requestOptions", - parameters: { - 'query': "parameters", - }, - body: { - 'facet': "filters", - }, - requestOptions: RequestOptions( - headers: { - 'x-algolia-api-key': 'myApiKey', - }, - ), - ), - intercept: (request) { - expectPath(request.path, '/1/test/requestOptions'); - expect(request.method, 'post'); - expectHeaders(request.headers, """{"x-algolia-api-key":"myApiKey"}"""); - expectParams(request.queryParameters, """{"query":"parameters"}"""); - expectBody(request.body, """{"facet":"filters"}"""); - }, - ), - ); - - // customPost - test( - 'requestOptions queryParameters accepts booleans', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPost( - path: "/test/requestOptions", - parameters: { - 'query': "parameters", - }, - body: { - 'facet': "filters", - }, - requestOptions: RequestOptions( - urlParameters: { - 'isItWorking': true, - }, - ), - ), - intercept: (request) { - expectPath(request.path, '/1/test/requestOptions'); - expect(request.method, 'post'); - expectParams(request.queryParameters, - """{"query":"parameters","isItWorking":"true"}"""); - expectBody(request.body, """{"facet":"filters"}"""); - }, - ), - ); - - // customPost - test( - 'requestOptions queryParameters accepts integers', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPost( - path: "/test/requestOptions", - parameters: { - 'query': "parameters", - }, - body: { - 'facet': "filters", - }, - requestOptions: RequestOptions( - urlParameters: { - 'myParam': 2, - }, - ), - ), - intercept: (request) { - expectPath(request.path, '/1/test/requestOptions'); - expect(request.method, 'post'); - expectParams(request.queryParameters, - """{"query":"parameters","myParam":"2"}"""); - expectBody(request.body, """{"facet":"filters"}"""); - }, - ), - ); - - // customPost - test( - 'requestOptions queryParameters accepts list of string', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPost( - path: "/test/requestOptions", - parameters: { - 'query': "parameters", - }, - body: { - 'facet': "filters", - }, - requestOptions: RequestOptions( - urlParameters: { - 'myParam': [ - "c", - "d", - ], - }, - ), - ), - intercept: (request) { - expectPath(request.path, '/1/test/requestOptions'); - expect(request.method, 'post'); - expectParams(request.queryParameters, - """{"query":"parameters","myParam":"c,d"}"""); - expectBody(request.body, """{"facet":"filters"}"""); - }, - ), - ); - - // customPost - test( - 'requestOptions queryParameters accepts list of booleans', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPost( - path: "/test/requestOptions", - parameters: { - 'query': "parameters", - }, - body: { - 'facet': "filters", - }, - requestOptions: RequestOptions( - urlParameters: { - 'myParam': [ - true, - true, - false, - ], - }, - ), - ), - intercept: (request) { - expectPath(request.path, '/1/test/requestOptions'); - expect(request.method, 'post'); - expectParams(request.queryParameters, - """{"query":"parameters","myParam":"true,true,false"}"""); - expectBody(request.body, """{"facet":"filters"}"""); - }, - ), - ); - - // customPost - test( - 'requestOptions queryParameters accepts list of integers', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPost( - path: "/test/requestOptions", - parameters: { - 'query': "parameters", - }, - body: { - 'facet': "filters", - }, - requestOptions: RequestOptions( - urlParameters: { - 'myParam': [ - 1, - 2, - ], - }, - ), - ), - intercept: (request) { - expectPath(request.path, '/1/test/requestOptions'); - expect(request.method, 'post'); - expectParams(request.queryParameters, - """{"query":"parameters","myParam":"1,2"}"""); - expectBody(request.body, """{"facet":"filters"}"""); - }, - ), - ); - - // search - test( - 'search for a single hits request with minimal parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.search( - searchMethodParams: SearchMethodParams( - requests: [ - SearchForHits( - indexName: "cts_e2e_search_empty_index", - ), - ], - ), - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/*/queries'); - expect(request.method, 'post'); - expectBody(request.body, - """{"requests":[{"indexName":"cts_e2e_search_empty_index"}]}"""); - }, - ), - ); - - // search - test( - 'search for a single facet request with minimal parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.search( - searchMethodParams: SearchMethodParams( - requests: [ - SearchForFacets( - indexName: "cts_e2e_search_facet", - type: SearchTypeFacet.fromJson("facet"), - facet: "editor", - ), - ], - strategy: SearchStrategy.fromJson("stopIfEnoughMatches"), - ), - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/*/queries'); - expect(request.method, 'post'); - expectBody(request.body, - """{"requests":[{"indexName":"cts_e2e_search_facet","type":"facet","facet":"editor"}],"strategy":"stopIfEnoughMatches"}"""); - }, - ), - ); - - // search - test( - 'search for a single hits request with all parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.search( - searchMethodParams: SearchMethodParams( - requests: [ - SearchForHits( - indexName: "theIndexName", - query: "myQuery", - hitsPerPage: 50, - type: SearchTypeDefault.fromJson("default"), - ), - ], - ), - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/*/queries'); - expect(request.method, 'post'); - expectBody(request.body, - """{"requests":[{"indexName":"theIndexName","query":"myQuery","hitsPerPage":50,"type":"default"}]}"""); - }, - ), - ); - - // search - test( - 'search for a single facet request with all parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.search( - searchMethodParams: SearchMethodParams( - requests: [ - SearchForFacets( - indexName: "theIndexName", - type: SearchTypeFacet.fromJson("facet"), - facet: "theFacet", - facetQuery: "theFacetQuery", - query: "theQuery", - maxFacetHits: 50, - ), - ], - strategy: SearchStrategy.fromJson("stopIfEnoughMatches"), - ), - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/*/queries'); - expect(request.method, 'post'); - expectBody(request.body, - """{"requests":[{"indexName":"theIndexName","type":"facet","facet":"theFacet","facetQuery":"theFacetQuery","query":"theQuery","maxFacetHits":50}],"strategy":"stopIfEnoughMatches"}"""); - }, - ), - ); - - // search - test( - 'search for multiple mixed requests in multiple indices with minimal parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.search( - searchMethodParams: SearchMethodParams( - requests: [ - SearchForHits( - indexName: "theIndexName", - ), - SearchForFacets( - indexName: "theIndexName2", - type: SearchTypeFacet.fromJson("facet"), - facet: "theFacet", - ), - SearchForHits( - indexName: "theIndexName", - type: SearchTypeDefault.fromJson("default"), - ), - ], - strategy: SearchStrategy.fromJson("stopIfEnoughMatches"), - ), - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/*/queries'); - expect(request.method, 'post'); - expectBody(request.body, - """{"requests":[{"indexName":"theIndexName"},{"indexName":"theIndexName2","type":"facet","facet":"theFacet"},{"indexName":"theIndexName","type":"default"}],"strategy":"stopIfEnoughMatches"}"""); - }, - ), - ); - - // search - test( - 'search for multiple mixed requests in multiple indices with all parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.search( - searchMethodParams: SearchMethodParams( - requests: [ - SearchForFacets( - indexName: "theIndexName", - type: SearchTypeFacet.fromJson("facet"), - facet: "theFacet", - facetQuery: "theFacetQuery", - query: "theQuery", - maxFacetHits: 50, - ), - SearchForHits( - indexName: "theIndexName", - query: "myQuery", - hitsPerPage: 50, - type: SearchTypeDefault.fromJson("default"), - ), - ], - strategy: SearchStrategy.fromJson("stopIfEnoughMatches"), - ), - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/*/queries'); - expect(request.method, 'post'); - expectBody(request.body, - """{"requests":[{"indexName":"theIndexName","type":"facet","facet":"theFacet","facetQuery":"theFacetQuery","query":"theQuery","maxFacetHits":50},{"indexName":"theIndexName","query":"myQuery","hitsPerPage":50,"type":"default"}],"strategy":"stopIfEnoughMatches"}"""); - }, - ), - ); - - // search - test( - 'search filters accept all of the possible shapes', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.search( - searchMethodParams: SearchMethodParams( - requests: [ - SearchForHits( - indexName: "theIndexName", - facetFilters: "mySearch:filters", - reRankingApplyFilter: "mySearch:filters", - tagFilters: "mySearch:filters", - numericFilters: "mySearch:filters", - optionalFilters: "mySearch:filters", - ), - SearchForHits( - indexName: "theIndexName", - facetFilters: [ - "mySearch:filters", - [ - "mySearch:filters", - ], - ], - reRankingApplyFilter: [ - "mySearch:filters", - [ - "mySearch:filters", - ], - ], - tagFilters: [ - "mySearch:filters", - [ - "mySearch:filters", - ], - ], - numericFilters: [ - "mySearch:filters", - [ - "mySearch:filters", - ], - ], - optionalFilters: [ - "mySearch:filters", - [ - "mySearch:filters", - ], - ], - ), - ], - ), - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/*/queries'); - expect(request.method, 'post'); - expectBody(request.body, - """{"requests":[{"indexName":"theIndexName","facetFilters":"mySearch:filters","reRankingApplyFilter":"mySearch:filters","tagFilters":"mySearch:filters","numericFilters":"mySearch:filters","optionalFilters":"mySearch:filters"},{"indexName":"theIndexName","facetFilters":["mySearch:filters",["mySearch:filters"]],"reRankingApplyFilter":["mySearch:filters",["mySearch:filters"]],"tagFilters":["mySearch:filters",["mySearch:filters"]],"numericFilters":["mySearch:filters",["mySearch:filters"]],"optionalFilters":["mySearch:filters",["mySearch:filters"]]}]}"""); - }, - ), - ); - - // search - test( - 'search with all search parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.search( - searchMethodParams: SearchMethodParams( - requests: [ - SearchForHits( - advancedSyntax: true, - advancedSyntaxFeatures: [ - AdvancedSyntaxFeatures.fromJson("exactPhrase"), - ], - allowTyposOnNumericTokens: true, - alternativesAsExact: [ - AlternativesAsExact.fromJson("multiWordsSynonym"), - ], - analytics: true, - analyticsTags: [ - "", - ], - aroundLatLng: "", - aroundLatLngViaIP: true, - aroundPrecision: 0, - aroundRadius: AroundRadiusAll.fromJson("all"), - attributeCriteriaComputedByMinProximity: true, - attributesForFaceting: [ - "", - ], - attributesToHighlight: [ - "", - ], - attributesToRetrieve: [ - "", - ], - attributesToSnippet: [ - "", - ], - clickAnalytics: true, - customRanking: [ - "", - ], - decompoundQuery: true, - disableExactOnAttributes: [ - "", - ], - disableTypoToleranceOnAttributes: [ - "", - ], - distinct: 0, - enableABTest: true, - enablePersonalization: true, - enableReRanking: true, - enableRules: true, - exactOnSingleWordQuery: - ExactOnSingleWordQuery.fromJson("attribute"), - explain: [ - "foo", - "bar", - ], - facetFilters: [ - "", - ], - facetingAfterDistinct: true, - facets: [ - "", - ], - filters: "", - getRankingInfo: true, - highlightPostTag: "", - highlightPreTag: "", - hitsPerPage: 1, - ignorePlurals: false, - indexName: "theIndexName", - insideBoundingBox: [ - [ - 47.3165, - 4.9665, - 47.3424, - 5.0201, - ], - [ - 40.9234, - 2.1185, - 38.643, - 1.9916, - ], - ], - insidePolygon: [ - [ - 47.3165, - 4.9665, - 47.3424, - 5.0201, - 47.32, - 4.9, - ], - [ - 40.9234, - 2.1185, - 38.643, - 1.9916, - 39.2587, - 2.0104, - ], - ], - keepDiacriticsOnCharacters: "", - length: 1, - maxValuesPerFacet: 0, - minProximity: 1, - minWordSizefor1Typo: 0, - minWordSizefor2Typos: 0, - minimumAroundRadius: 1, - naturalLanguages: [ - "", - ], - numericFilters: [ - "", - ], - offset: 0, - optionalFilters: [ - "", - ], - optionalWords: [ - "", - ], - page: 0, - percentileComputation: true, - personalizationImpact: 0, - query: "", - queryLanguages: [ - "", - ], - queryType: QueryType.fromJson("prefixAll"), - ranking: [ - "", - ], - reRankingApplyFilter: [ - "", - ], - relevancyStrictness: 0, - removeStopWords: true, - removeWordsIfNoResults: - RemoveWordsIfNoResults.fromJson("allOptional"), - renderingContent: RenderingContent( - facetOrdering: FacetOrdering( - facets: Facets( - order: [ - "a", - "b", - ], - ), - values: { - 'a': Value( - order: [ - "b", - ], - sortRemainingBy: SortRemainingBy.fromJson("count"), - ), - }, - ), - ), - replaceSynonymsInHighlight: true, - responseFields: [ - "", - ], - restrictHighlightAndSnippetArrays: true, - restrictSearchableAttributes: [ - "", - ], - ruleContexts: [ - "", - ], - similarQuery: "", - snippetEllipsisText: "", - sortFacetValuesBy: "", - sumOrFiltersScores: true, - synonyms: true, - tagFilters: [ - "", - ], - type: SearchTypeDefault.fromJson("default"), - typoTolerance: TypoToleranceEnum.fromJson("min"), - userToken: "", - ), - ], - ), - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/*/queries'); - expect(request.method, 'post'); - expectBody(request.body, - """{"requests":[{"advancedSyntax":true,"advancedSyntaxFeatures":["exactPhrase"],"allowTyposOnNumericTokens":true,"alternativesAsExact":["multiWordsSynonym"],"analytics":true,"analyticsTags":[""],"aroundLatLng":"","aroundLatLngViaIP":true,"aroundPrecision":0,"aroundRadius":"all","attributeCriteriaComputedByMinProximity":true,"attributesForFaceting":[""],"attributesToHighlight":[""],"attributesToRetrieve":[""],"attributesToSnippet":[""],"clickAnalytics":true,"customRanking":[""],"decompoundQuery":true,"disableExactOnAttributes":[""],"disableTypoToleranceOnAttributes":[""],"distinct":0,"enableABTest":true,"enablePersonalization":true,"enableReRanking":true,"enableRules":true,"exactOnSingleWordQuery":"attribute","explain":["foo","bar"],"facetFilters":[""],"facetingAfterDistinct":true,"facets":[""],"filters":"","getRankingInfo":true,"highlightPostTag":"","highlightPreTag":"","hitsPerPage":1,"ignorePlurals":false,"indexName":"theIndexName","insideBoundingBox":[[47.3165,4.9665,47.3424,5.0201],[40.9234,2.1185,38.643,1.9916]],"insidePolygon":[[47.3165,4.9665,47.3424,5.0201,47.32,4.9],[40.9234,2.1185,38.643,1.9916,39.2587,2.0104]],"keepDiacriticsOnCharacters":"","length":1,"maxValuesPerFacet":0,"minProximity":1,"minWordSizefor1Typo":0,"minWordSizefor2Typos":0,"minimumAroundRadius":1,"naturalLanguages":[""],"numericFilters":[""],"offset":0,"optionalFilters":[""],"optionalWords":[""],"page":0,"percentileComputation":true,"personalizationImpact":0,"query":"","queryLanguages":[""],"queryType":"prefixAll","ranking":[""],"reRankingApplyFilter":[""],"relevancyStrictness":0,"removeStopWords":true,"removeWordsIfNoResults":"allOptional","renderingContent":{"facetOrdering":{"facets":{"order":["a","b"]},"values":{"a":{"order":["b"],"sortRemainingBy":"count"}}}},"replaceSynonymsInHighlight":true,"responseFields":[""],"restrictHighlightAndSnippetArrays":true,"restrictSearchableAttributes":[""],"ruleContexts":[""],"similarQuery":"","snippetEllipsisText":"","sortFacetValuesBy":"","sumOrFiltersScores":true,"synonyms":true,"tagFilters":[""],"type":"default","typoTolerance":"min","userToken":""}]}"""); - }, - ), - ); -} diff --git a/tests/output/dart/test/methods/requests/insights_test.dart b/tests/output/dart/test/methods/requests/insights_test.dart deleted file mode 100644 index 13ce4c5ee4..0000000000 --- a/tests/output/dart/test/methods/requests/insights_test.dart +++ /dev/null @@ -1,730 +0,0 @@ -import 'package:algolia_client_insights/algolia_client_insights.dart'; -import 'package:algolia_test/algolia_test.dart'; -import 'package:test/test.dart'; - -void main() { - // customDelete - test( - 'allow del method for a custom path with minimal parameters', - () => runTest( - builder: (requester) => InsightsClient( - appId: 'appId', - apiKey: 'apiKey', - region: 'us', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customDelete( - path: "/test/minimal", - ), - intercept: (request) { - expectPath(request.path, '/1/test/minimal'); - expect(request.method, 'delete'); - expect(request.body, null); - }, - ), - ); - - // customDelete - test( - 'allow del method for a custom path with all parameters', - () => runTest( - builder: (requester) => InsightsClient( - appId: 'appId', - apiKey: 'apiKey', - region: 'us', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customDelete( - path: "/test/all", - parameters: { - 'query': "parameters", - }, - ), - intercept: (request) { - expectPath(request.path, '/1/test/all'); - expect(request.method, 'delete'); - expectParams(request.queryParameters, """{"query":"parameters"}"""); - expect(request.body, null); - }, - ), - ); - - // customGet - test( - 'allow get method for a custom path with minimal parameters', - () => runTest( - builder: (requester) => InsightsClient( - appId: 'appId', - apiKey: 'apiKey', - region: 'us', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customGet( - path: "/test/minimal", - ), - intercept: (request) { - expectPath(request.path, '/1/test/minimal'); - expect(request.method, 'get'); - expect(request.body, null); - }, - ), - ); - - // customGet - test( - 'allow get method for a custom path with all parameters', - () => runTest( - builder: (requester) => InsightsClient( - appId: 'appId', - apiKey: 'apiKey', - region: 'us', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customGet( - path: "/test/all", - parameters: { - 'query': "parameters", - }, - ), - intercept: (request) { - expectPath(request.path, '/1/test/all'); - expect(request.method, 'get'); - expectParams(request.queryParameters, """{"query":"parameters"}"""); - expect(request.body, null); - }, - ), - ); - - // customPost - test( - 'allow post method for a custom path with minimal parameters', - () => runTest( - builder: (requester) => InsightsClient( - appId: 'appId', - apiKey: 'apiKey', - region: 'us', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPost( - path: "/test/minimal", - ), - intercept: (request) { - expectPath(request.path, '/1/test/minimal'); - expect(request.method, 'post'); - expectBody(request.body, """{}"""); - }, - ), - ); - - // customPost - test( - 'allow post method for a custom path with all parameters', - () => runTest( - builder: (requester) => InsightsClient( - appId: 'appId', - apiKey: 'apiKey', - region: 'us', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPost( - path: "/test/all", - parameters: { - 'query': "parameters", - }, - body: { - 'body': "parameters", - }, - ), - intercept: (request) { - expectPath(request.path, '/1/test/all'); - expect(request.method, 'post'); - expectParams(request.queryParameters, """{"query":"parameters"}"""); - expectBody(request.body, """{"body":"parameters"}"""); - }, - ), - ); - - // customPost - test( - 'requestOptions can override default query parameters', - () => runTest( - builder: (requester) => InsightsClient( - appId: 'appId', - apiKey: 'apiKey', - region: 'us', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPost( - path: "/test/requestOptions", - parameters: { - 'query': "parameters", - }, - body: { - 'facet': "filters", - }, - requestOptions: RequestOptions( - urlParameters: { - 'query': "myQueryParameter", - }, - ), - ), - intercept: (request) { - expectPath(request.path, '/1/test/requestOptions'); - expect(request.method, 'post'); - expectParams( - request.queryParameters, """{"query":"myQueryParameter"}"""); - expectBody(request.body, """{"facet":"filters"}"""); - }, - ), - ); - - // customPost - test( - 'requestOptions merges query parameters with default ones', - () => runTest( - builder: (requester) => InsightsClient( - appId: 'appId', - apiKey: 'apiKey', - region: 'us', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPost( - path: "/test/requestOptions", - parameters: { - 'query': "parameters", - }, - body: { - 'facet': "filters", - }, - requestOptions: RequestOptions( - urlParameters: { - 'query2': "myQueryParameter", - }, - ), - ), - intercept: (request) { - expectPath(request.path, '/1/test/requestOptions'); - expect(request.method, 'post'); - expectParams(request.queryParameters, - """{"query":"parameters","query2":"myQueryParameter"}"""); - expectBody(request.body, """{"facet":"filters"}"""); - }, - ), - ); - - // customPost - test( - 'requestOptions can override default headers', - () => runTest( - builder: (requester) => InsightsClient( - appId: 'appId', - apiKey: 'apiKey', - region: 'us', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPost( - path: "/test/requestOptions", - parameters: { - 'query': "parameters", - }, - body: { - 'facet': "filters", - }, - requestOptions: RequestOptions( - headers: { - 'x-algolia-api-key': 'myApiKey', - }, - ), - ), - intercept: (request) { - expectPath(request.path, '/1/test/requestOptions'); - expect(request.method, 'post'); - expectHeaders(request.headers, """{"x-algolia-api-key":"myApiKey"}"""); - expectParams(request.queryParameters, """{"query":"parameters"}"""); - expectBody(request.body, """{"facet":"filters"}"""); - }, - ), - ); - - // customPost - test( - 'requestOptions merges headers with default ones', - () => runTest( - builder: (requester) => InsightsClient( - appId: 'appId', - apiKey: 'apiKey', - region: 'us', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPost( - path: "/test/requestOptions", - parameters: { - 'query': "parameters", - }, - body: { - 'facet': "filters", - }, - requestOptions: RequestOptions( - headers: { - 'x-algolia-api-key': 'myApiKey', - }, - ), - ), - intercept: (request) { - expectPath(request.path, '/1/test/requestOptions'); - expect(request.method, 'post'); - expectHeaders(request.headers, """{"x-algolia-api-key":"myApiKey"}"""); - expectParams(request.queryParameters, """{"query":"parameters"}"""); - expectBody(request.body, """{"facet":"filters"}"""); - }, - ), - ); - - // customPost - test( - 'requestOptions queryParameters accepts booleans', - () => runTest( - builder: (requester) => InsightsClient( - appId: 'appId', - apiKey: 'apiKey', - region: 'us', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPost( - path: "/test/requestOptions", - parameters: { - 'query': "parameters", - }, - body: { - 'facet': "filters", - }, - requestOptions: RequestOptions( - urlParameters: { - 'isItWorking': true, - }, - ), - ), - intercept: (request) { - expectPath(request.path, '/1/test/requestOptions'); - expect(request.method, 'post'); - expectParams(request.queryParameters, - """{"query":"parameters","isItWorking":"true"}"""); - expectBody(request.body, """{"facet":"filters"}"""); - }, - ), - ); - - // customPost - test( - 'requestOptions queryParameters accepts integers', - () => runTest( - builder: (requester) => InsightsClient( - appId: 'appId', - apiKey: 'apiKey', - region: 'us', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPost( - path: "/test/requestOptions", - parameters: { - 'query': "parameters", - }, - body: { - 'facet': "filters", - }, - requestOptions: RequestOptions( - urlParameters: { - 'myParam': 2, - }, - ), - ), - intercept: (request) { - expectPath(request.path, '/1/test/requestOptions'); - expect(request.method, 'post'); - expectParams(request.queryParameters, - """{"query":"parameters","myParam":"2"}"""); - expectBody(request.body, """{"facet":"filters"}"""); - }, - ), - ); - - // customPost - test( - 'requestOptions queryParameters accepts list of string', - () => runTest( - builder: (requester) => InsightsClient( - appId: 'appId', - apiKey: 'apiKey', - region: 'us', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPost( - path: "/test/requestOptions", - parameters: { - 'query': "parameters", - }, - body: { - 'facet': "filters", - }, - requestOptions: RequestOptions( - urlParameters: { - 'myParam': [ - "c", - "d", - ], - }, - ), - ), - intercept: (request) { - expectPath(request.path, '/1/test/requestOptions'); - expect(request.method, 'post'); - expectParams(request.queryParameters, - """{"query":"parameters","myParam":"c,d"}"""); - expectBody(request.body, """{"facet":"filters"}"""); - }, - ), - ); - - // customPost - test( - 'requestOptions queryParameters accepts list of booleans', - () => runTest( - builder: (requester) => InsightsClient( - appId: 'appId', - apiKey: 'apiKey', - region: 'us', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPost( - path: "/test/requestOptions", - parameters: { - 'query': "parameters", - }, - body: { - 'facet': "filters", - }, - requestOptions: RequestOptions( - urlParameters: { - 'myParam': [ - true, - true, - false, - ], - }, - ), - ), - intercept: (request) { - expectPath(request.path, '/1/test/requestOptions'); - expect(request.method, 'post'); - expectParams(request.queryParameters, - """{"query":"parameters","myParam":"true,true,false"}"""); - expectBody(request.body, """{"facet":"filters"}"""); - }, - ), - ); - - // customPost - test( - 'requestOptions queryParameters accepts list of integers', - () => runTest( - builder: (requester) => InsightsClient( - appId: 'appId', - apiKey: 'apiKey', - region: 'us', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPost( - path: "/test/requestOptions", - parameters: { - 'query': "parameters", - }, - body: { - 'facet': "filters", - }, - requestOptions: RequestOptions( - urlParameters: { - 'myParam': [ - 1, - 2, - ], - }, - ), - ), - intercept: (request) { - expectPath(request.path, '/1/test/requestOptions'); - expect(request.method, 'post'); - expectParams(request.queryParameters, - """{"query":"parameters","myParam":"1,2"}"""); - expectBody(request.body, """{"facet":"filters"}"""); - }, - ), - ); - - // customPut - test( - 'allow put method for a custom path with minimal parameters', - () => runTest( - builder: (requester) => InsightsClient( - appId: 'appId', - apiKey: 'apiKey', - region: 'us', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPut( - path: "/test/minimal", - ), - intercept: (request) { - expectPath(request.path, '/1/test/minimal'); - expect(request.method, 'put'); - expectBody(request.body, """{}"""); - }, - ), - ); - - // customPut - test( - 'allow put method for a custom path with all parameters', - () => runTest( - builder: (requester) => InsightsClient( - appId: 'appId', - apiKey: 'apiKey', - region: 'us', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPut( - path: "/test/all", - parameters: { - 'query': "parameters", - }, - body: { - 'body': "parameters", - }, - ), - intercept: (request) { - expectPath(request.path, '/1/test/all'); - expect(request.method, 'put'); - expectParams(request.queryParameters, """{"query":"parameters"}"""); - expectBody(request.body, """{"body":"parameters"}"""); - }, - ), - ); - - // pushEvents - test( - 'pushEvents0', - () => runTest( - builder: (requester) => InsightsClient( - appId: 'appId', - apiKey: 'apiKey', - region: 'us', - options: ClientOptions(requester: requester), - ), - call: (client) => client.pushEvents( - insightsEvents: InsightsEvents( - events: [ - ClickedObjectIDsAfterSearch( - eventType: ClickEvent.fromJson("click"), - eventName: "Product Clicked", - index: "products", - userToken: "user-123456", - authenticatedUserToken: "user-123456", - timestamp: 1641290601962, - objectIDs: [ - "9780545139700", - "9780439784542", - ], - queryID: "43b15df305339e827f0ac0bdc5ebcaa7", - positions: [ - 7, - 6, - ], - ), - ], - ), - ), - intercept: (request) { - expectPath(request.path, '/1/events'); - expect(request.method, 'post'); - expectBody(request.body, - """{"events":[{"eventType":"click","eventName":"Product Clicked","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"queryID":"43b15df305339e827f0ac0bdc5ebcaa7","positions":[7,6]}]}"""); - }, - ), - ); - - // pushEvents - test( - 'Many events type', - () => runTest( - builder: (requester) => InsightsClient( - appId: 'appId', - apiKey: 'apiKey', - region: 'us', - options: ClientOptions(requester: requester), - ), - call: (client) => client.pushEvents( - insightsEvents: InsightsEvents( - events: [ - ConvertedObjectIDsAfterSearch( - eventType: ConversionEvent.fromJson("conversion"), - eventName: "Product Purchased", - index: "products", - userToken: "user-123456", - authenticatedUserToken: "user-123456", - timestamp: 1641290601962, - objectIDs: [ - "9780545139700", - "9780439784542", - ], - queryID: "43b15df305339e827f0ac0bdc5ebcaa7", - ), - ViewedObjectIDs( - eventType: ViewEvent.fromJson("view"), - eventName: "Product Detail Page Viewed", - index: "products", - userToken: "user-123456", - authenticatedUserToken: "user-123456", - timestamp: 1641290601962, - objectIDs: [ - "9780545139700", - "9780439784542", - ], - ), - ], - ), - ), - intercept: (request) { - expectPath(request.path, '/1/events'); - expect(request.method, 'post'); - expectBody(request.body, - """{"events":[{"eventType":"conversion","eventName":"Product Purchased","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"queryID":"43b15df305339e827f0ac0bdc5ebcaa7"},{"eventType":"view","eventName":"Product Detail Page Viewed","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"]}]}"""); - }, - ), - ); - - // pushEvents - test( - 'ConvertedObjectIDsAfterSearch', - () => runTest( - builder: (requester) => InsightsClient( - appId: 'appId', - apiKey: 'apiKey', - region: 'us', - options: ClientOptions(requester: requester), - ), - call: (client) => client.pushEvents( - insightsEvents: InsightsEvents( - events: [ - ConvertedObjectIDsAfterSearch( - eventType: ConversionEvent.fromJson("conversion"), - eventName: "Product Purchased", - index: "products", - userToken: "user-123456", - authenticatedUserToken: "user-123456", - timestamp: 1641290601962, - objectIDs: [ - "9780545139700", - "9780439784542", - ], - queryID: "43b15df305339e827f0ac0bdc5ebcaa7", - ), - ], - ), - ), - intercept: (request) { - expectPath(request.path, '/1/events'); - expect(request.method, 'post'); - expectBody(request.body, - """{"events":[{"eventType":"conversion","eventName":"Product Purchased","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"queryID":"43b15df305339e827f0ac0bdc5ebcaa7"}]}"""); - }, - ), - ); - - // pushEvents - test( - 'ViewedObjectIDs', - () => runTest( - builder: (requester) => InsightsClient( - appId: 'appId', - apiKey: 'apiKey', - region: 'us', - options: ClientOptions(requester: requester), - ), - call: (client) => client.pushEvents( - insightsEvents: InsightsEvents( - events: [ - ViewedObjectIDs( - eventType: ViewEvent.fromJson("view"), - eventName: "Product Detail Page Viewed", - index: "products", - userToken: "user-123456", - authenticatedUserToken: "user-123456", - timestamp: 1641290601962, - objectIDs: [ - "9780545139700", - "9780439784542", - ], - ), - ], - ), - ), - intercept: (request) { - expectPath(request.path, '/1/events'); - expect(request.method, 'post'); - expectBody(request.body, - """{"events":[{"eventType":"view","eventName":"Product Detail Page Viewed","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"]}]}"""); - }, - ), - ); - - // pushEvents - test( - 'AddedToCartObjectIDs', - () => runTest( - builder: (requester) => InsightsClient( - appId: 'appId', - apiKey: 'apiKey', - region: 'us', - options: ClientOptions(requester: requester), - ), - call: (client) => client.pushEvents( - insightsEvents: InsightsEvents( - events: [ - AddedToCartObjectIDsAfterSearch( - eventType: ConversionEvent.fromJson("conversion"), - eventSubtype: AddToCartEvent.fromJson("addToCart"), - eventName: "Product Added To Cart", - index: "products", - queryID: "43b15df305339e827f0ac0bdc5ebcaa7", - userToken: "user-123456", - authenticatedUserToken: "user-123456", - timestamp: 1641290601962, - objectIDs: [ - "9780545139700", - "9780439784542", - ], - objectData: [ - ObjectDataAfterSearch( - price: 19.99, - quantity: 10, - discount: 2.5, - ), - ObjectDataAfterSearch( - price: "8\$", - quantity: 7, - discount: "30%", - ), - ], - currency: "USD", - ), - ], - ), - ), - intercept: (request) { - expectPath(request.path, '/1/events'); - expect(request.method, 'post'); - expectBody(request.body, - """{"events":[{"eventType":"conversion","eventSubtype":"addToCart","eventName":"Product Added To Cart","index":"products","queryID":"43b15df305339e827f0ac0bdc5ebcaa7","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"objectData":[{"price":19.99,"quantity":10,"discount":2.5},{"price":"8\$","quantity":7,"discount":"30%"}],"currency":"USD"}]}"""); - }, - ), - ); -} diff --git a/tests/output/dart/test/methods/requests/recommend_test.dart b/tests/output/dart/test/methods/requests/recommend_test.dart deleted file mode 100644 index c7323198b7..0000000000 --- a/tests/output/dart/test/methods/requests/recommend_test.dart +++ /dev/null @@ -1,859 +0,0 @@ -import 'package:algolia_client_recommend/algolia_client_recommend.dart'; -import 'package:algolia_test/algolia_test.dart'; -import 'package:test/test.dart'; - -void main() { - // customDelete - test( - 'allow del method for a custom path with minimal parameters', - () => runTest( - builder: (requester) => RecommendClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customDelete( - path: "/test/minimal", - ), - intercept: (request) { - expectPath(request.path, '/1/test/minimal'); - expect(request.method, 'delete'); - expect(request.body, null); - }, - ), - ); - - // customDelete - test( - 'allow del method for a custom path with all parameters', - () => runTest( - builder: (requester) => RecommendClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customDelete( - path: "/test/all", - parameters: { - 'query': "parameters", - }, - ), - intercept: (request) { - expectPath(request.path, '/1/test/all'); - expect(request.method, 'delete'); - expectParams(request.queryParameters, """{"query":"parameters"}"""); - expect(request.body, null); - }, - ), - ); - - // customGet - test( - 'allow get method for a custom path with minimal parameters', - () => runTest( - builder: (requester) => RecommendClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customGet( - path: "/test/minimal", - ), - intercept: (request) { - expectPath(request.path, '/1/test/minimal'); - expect(request.method, 'get'); - expect(request.body, null); - }, - ), - ); - - // customGet - test( - 'allow get method for a custom path with all parameters', - () => runTest( - builder: (requester) => RecommendClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customGet( - path: "/test/all", - parameters: { - 'query': "parameters", - }, - ), - intercept: (request) { - expectPath(request.path, '/1/test/all'); - expect(request.method, 'get'); - expectParams(request.queryParameters, """{"query":"parameters"}"""); - expect(request.body, null); - }, - ), - ); - - // customPost - test( - 'allow post method for a custom path with minimal parameters', - () => runTest( - builder: (requester) => RecommendClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPost( - path: "/test/minimal", - ), - intercept: (request) { - expectPath(request.path, '/1/test/minimal'); - expect(request.method, 'post'); - expectBody(request.body, """{}"""); - }, - ), - ); - - // customPost - test( - 'allow post method for a custom path with all parameters', - () => runTest( - builder: (requester) => RecommendClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPost( - path: "/test/all", - parameters: { - 'query': "parameters", - }, - body: { - 'body': "parameters", - }, - ), - intercept: (request) { - expectPath(request.path, '/1/test/all'); - expect(request.method, 'post'); - expectParams(request.queryParameters, """{"query":"parameters"}"""); - expectBody(request.body, """{"body":"parameters"}"""); - }, - ), - ); - - // customPost - test( - 'requestOptions can override default query parameters', - () => runTest( - builder: (requester) => RecommendClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPost( - path: "/test/requestOptions", - parameters: { - 'query': "parameters", - }, - body: { - 'facet': "filters", - }, - requestOptions: RequestOptions( - urlParameters: { - 'query': "myQueryParameter", - }, - ), - ), - intercept: (request) { - expectPath(request.path, '/1/test/requestOptions'); - expect(request.method, 'post'); - expectParams( - request.queryParameters, """{"query":"myQueryParameter"}"""); - expectBody(request.body, """{"facet":"filters"}"""); - }, - ), - ); - - // customPost - test( - 'requestOptions merges query parameters with default ones', - () => runTest( - builder: (requester) => RecommendClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPost( - path: "/test/requestOptions", - parameters: { - 'query': "parameters", - }, - body: { - 'facet': "filters", - }, - requestOptions: RequestOptions( - urlParameters: { - 'query2': "myQueryParameter", - }, - ), - ), - intercept: (request) { - expectPath(request.path, '/1/test/requestOptions'); - expect(request.method, 'post'); - expectParams(request.queryParameters, - """{"query":"parameters","query2":"myQueryParameter"}"""); - expectBody(request.body, """{"facet":"filters"}"""); - }, - ), - ); - - // customPost - test( - 'requestOptions can override default headers', - () => runTest( - builder: (requester) => RecommendClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPost( - path: "/test/requestOptions", - parameters: { - 'query': "parameters", - }, - body: { - 'facet': "filters", - }, - requestOptions: RequestOptions( - headers: { - 'x-algolia-api-key': 'myApiKey', - }, - ), - ), - intercept: (request) { - expectPath(request.path, '/1/test/requestOptions'); - expect(request.method, 'post'); - expectHeaders(request.headers, """{"x-algolia-api-key":"myApiKey"}"""); - expectParams(request.queryParameters, """{"query":"parameters"}"""); - expectBody(request.body, """{"facet":"filters"}"""); - }, - ), - ); - - // customPost - test( - 'requestOptions merges headers with default ones', - () => runTest( - builder: (requester) => RecommendClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPost( - path: "/test/requestOptions", - parameters: { - 'query': "parameters", - }, - body: { - 'facet': "filters", - }, - requestOptions: RequestOptions( - headers: { - 'x-algolia-api-key': 'myApiKey', - }, - ), - ), - intercept: (request) { - expectPath(request.path, '/1/test/requestOptions'); - expect(request.method, 'post'); - expectHeaders(request.headers, """{"x-algolia-api-key":"myApiKey"}"""); - expectParams(request.queryParameters, """{"query":"parameters"}"""); - expectBody(request.body, """{"facet":"filters"}"""); - }, - ), - ); - - // customPost - test( - 'requestOptions queryParameters accepts booleans', - () => runTest( - builder: (requester) => RecommendClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPost( - path: "/test/requestOptions", - parameters: { - 'query': "parameters", - }, - body: { - 'facet': "filters", - }, - requestOptions: RequestOptions( - urlParameters: { - 'isItWorking': true, - }, - ), - ), - intercept: (request) { - expectPath(request.path, '/1/test/requestOptions'); - expect(request.method, 'post'); - expectParams(request.queryParameters, - """{"query":"parameters","isItWorking":"true"}"""); - expectBody(request.body, """{"facet":"filters"}"""); - }, - ), - ); - - // customPost - test( - 'requestOptions queryParameters accepts integers', - () => runTest( - builder: (requester) => RecommendClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPost( - path: "/test/requestOptions", - parameters: { - 'query': "parameters", - }, - body: { - 'facet': "filters", - }, - requestOptions: RequestOptions( - urlParameters: { - 'myParam': 2, - }, - ), - ), - intercept: (request) { - expectPath(request.path, '/1/test/requestOptions'); - expect(request.method, 'post'); - expectParams(request.queryParameters, - """{"query":"parameters","myParam":"2"}"""); - expectBody(request.body, """{"facet":"filters"}"""); - }, - ), - ); - - // customPost - test( - 'requestOptions queryParameters accepts list of string', - () => runTest( - builder: (requester) => RecommendClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPost( - path: "/test/requestOptions", - parameters: { - 'query': "parameters", - }, - body: { - 'facet': "filters", - }, - requestOptions: RequestOptions( - urlParameters: { - 'myParam': [ - "c", - "d", - ], - }, - ), - ), - intercept: (request) { - expectPath(request.path, '/1/test/requestOptions'); - expect(request.method, 'post'); - expectParams(request.queryParameters, - """{"query":"parameters","myParam":"c,d"}"""); - expectBody(request.body, """{"facet":"filters"}"""); - }, - ), - ); - - // customPost - test( - 'requestOptions queryParameters accepts list of booleans', - () => runTest( - builder: (requester) => RecommendClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPost( - path: "/test/requestOptions", - parameters: { - 'query': "parameters", - }, - body: { - 'facet': "filters", - }, - requestOptions: RequestOptions( - urlParameters: { - 'myParam': [ - true, - true, - false, - ], - }, - ), - ), - intercept: (request) { - expectPath(request.path, '/1/test/requestOptions'); - expect(request.method, 'post'); - expectParams(request.queryParameters, - """{"query":"parameters","myParam":"true,true,false"}"""); - expectBody(request.body, """{"facet":"filters"}"""); - }, - ), - ); - - // customPost - test( - 'requestOptions queryParameters accepts list of integers', - () => runTest( - builder: (requester) => RecommendClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPost( - path: "/test/requestOptions", - parameters: { - 'query': "parameters", - }, - body: { - 'facet': "filters", - }, - requestOptions: RequestOptions( - urlParameters: { - 'myParam': [ - 1, - 2, - ], - }, - ), - ), - intercept: (request) { - expectPath(request.path, '/1/test/requestOptions'); - expect(request.method, 'post'); - expectParams(request.queryParameters, - """{"query":"parameters","myParam":"1,2"}"""); - expectBody(request.body, """{"facet":"filters"}"""); - }, - ), - ); - - // customPut - test( - 'allow put method for a custom path with minimal parameters', - () => runTest( - builder: (requester) => RecommendClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPut( - path: "/test/minimal", - ), - intercept: (request) { - expectPath(request.path, '/1/test/minimal'); - expect(request.method, 'put'); - expectBody(request.body, """{}"""); - }, - ), - ); - - // customPut - test( - 'allow put method for a custom path with all parameters', - () => runTest( - builder: (requester) => RecommendClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPut( - path: "/test/all", - parameters: { - 'query': "parameters", - }, - body: { - 'body': "parameters", - }, - ), - intercept: (request) { - expectPath(request.path, '/1/test/all'); - expect(request.method, 'put'); - expectParams(request.queryParameters, """{"query":"parameters"}"""); - expectBody(request.body, """{"body":"parameters"}"""); - }, - ), - ); - - // deleteRecommendRule - test( - 'deleteRecommendRule0', - () => runTest( - builder: (requester) => RecommendClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.deleteRecommendRule( - indexName: "indexName", - model: RecommendModels.fromJson("related-products"), - objectID: "objectID", - ), - intercept: (request) { - expectPath(request.path, - '/1/indexes/indexName/related-products/recommend/rules/objectID'); - expect(request.method, 'delete'); - expect(request.body, null); - }, - ), - ); - - // getRecommendRule - test( - 'getRecommendRule0', - () => runTest( - builder: (requester) => RecommendClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.getRecommendRule( - indexName: "indexName", - model: RecommendModels.fromJson("related-products"), - objectID: "objectID", - ), - intercept: (request) { - expectPath(request.path, - '/1/indexes/indexName/related-products/recommend/rules/objectID'); - expect(request.method, 'get'); - expect(request.body, null); - }, - ), - ); - - // getRecommendStatus - test( - 'getRecommendStatus0', - () => runTest( - builder: (requester) => RecommendClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.getRecommendStatus( - indexName: "indexName", - model: RecommendModels.fromJson("related-products"), - taskID: 12345, - ), - intercept: (request) { - expectPath( - request.path, '/1/indexes/indexName/related-products/task/12345'); - expect(request.method, 'get'); - expect(request.body, null); - }, - ), - ); - - // getRecommendations - test( - 'get recommendations for recommend model with minimal parameters', - () => runTest( - builder: (requester) => RecommendClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.getRecommendations( - getRecommendationsParams: GetRecommendationsParams( - requests: [ - RecommendationsQuery( - indexName: "indexName", - objectID: "objectID", - model: RecommendationModels.fromJson("related-products"), - threshold: 42, - ), - ], - ), - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/*/recommendations'); - expect(request.method, 'post'); - expectBody(request.body, - """{"requests":[{"indexName":"indexName","objectID":"objectID","model":"related-products","threshold":42}]}"""); - }, - ), - ); - - // getRecommendations - test( - 'get recommendations for recommend model with all parameters', - () => runTest( - builder: (requester) => RecommendClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.getRecommendations( - getRecommendationsParams: GetRecommendationsParams( - requests: [ - RecommendationsQuery( - indexName: "indexName", - objectID: "objectID", - model: RecommendationModels.fromJson("related-products"), - threshold: 42, - maxRecommendations: 10, - queryParameters: SearchParamsObject( - query: "myQuery", - facetFilters: [ - "query", - ], - ), - fallbackParameters: SearchParamsObject( - query: "myQuery", - facetFilters: [ - "fallback", - ], - ), - ), - ], - ), - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/*/recommendations'); - expect(request.method, 'post'); - expectBody(request.body, - """{"requests":[{"indexName":"indexName","objectID":"objectID","model":"related-products","threshold":42,"maxRecommendations":10,"queryParameters":{"query":"myQuery","facetFilters":["query"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback"]}}]}"""); - }, - ), - ); - - // getRecommendations - test( - 'get recommendations for trending model with minimal parameters', - () => runTest( - builder: (requester) => RecommendClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.getRecommendations( - getRecommendationsParams: GetRecommendationsParams( - requests: [ - TrendingItemsQuery( - indexName: "indexName", - model: TrendingItemsModel.fromJson("trending-items"), - threshold: 42, - ), - ], - ), - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/*/recommendations'); - expect(request.method, 'post'); - expectBody(request.body, - """{"requests":[{"indexName":"indexName","model":"trending-items","threshold":42}]}"""); - }, - ), - ); - - // getRecommendations - test( - 'get recommendations for trending model with all parameters', - () => runTest( - builder: (requester) => RecommendClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.getRecommendations( - getRecommendationsParams: GetRecommendationsParams( - requests: [ - TrendingItemsQuery( - indexName: "indexName", - model: TrendingItemsModel.fromJson("trending-items"), - threshold: 42, - maxRecommendations: 10, - facetName: "myFacetName", - facetValue: "myFacetValue", - queryParameters: SearchParamsObject( - query: "myQuery", - facetFilters: [ - "query", - ], - ), - fallbackParameters: SearchParamsObject( - query: "myQuery", - facetFilters: [ - "fallback", - ], - ), - ), - ], - ), - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/*/recommendations'); - expect(request.method, 'post'); - expectBody(request.body, - """{"requests":[{"indexName":"indexName","model":"trending-items","threshold":42,"maxRecommendations":10,"facetName":"myFacetName","facetValue":"myFacetValue","queryParameters":{"query":"myQuery","facetFilters":["query"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback"]}}]}"""); - }, - ), - ); - - // getRecommendations - test( - 'get multiple recommendations with minimal parameters', - () => runTest( - builder: (requester) => RecommendClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.getRecommendations( - getRecommendationsParams: GetRecommendationsParams( - requests: [ - RecommendationsQuery( - indexName: "indexName1", - objectID: "objectID1", - model: RecommendationModels.fromJson("related-products"), - threshold: 21, - ), - RecommendationsQuery( - indexName: "indexName2", - objectID: "objectID2", - model: RecommendationModels.fromJson("related-products"), - threshold: 21, - ), - ], - ), - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/*/recommendations'); - expect(request.method, 'post'); - expectBody(request.body, - """{"requests":[{"indexName":"indexName1","objectID":"objectID1","model":"related-products","threshold":21},{"indexName":"indexName2","objectID":"objectID2","model":"related-products","threshold":21}]}"""); - }, - ), - ); - - // getRecommendations - test( - 'get multiple recommendations with all parameters', - () => runTest( - builder: (requester) => RecommendClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.getRecommendations( - getRecommendationsParams: GetRecommendationsParams( - requests: [ - RecommendationsQuery( - indexName: "indexName1", - objectID: "objectID1", - model: RecommendationModels.fromJson("related-products"), - threshold: 21, - maxRecommendations: 10, - queryParameters: SearchParamsObject( - query: "myQuery", - facetFilters: [ - "query1", - ], - ), - fallbackParameters: SearchParamsObject( - query: "myQuery", - facetFilters: [ - "fallback1", - ], - ), - ), - RecommendationsQuery( - indexName: "indexName2", - objectID: "objectID2", - model: RecommendationModels.fromJson("related-products"), - threshold: 21, - maxRecommendations: 10, - queryParameters: SearchParamsObject( - query: "myQuery", - facetFilters: [ - "query2", - ], - ), - fallbackParameters: SearchParamsObject( - query: "myQuery", - facetFilters: [ - "fallback2", - ], - ), - ), - ], - ), - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/*/recommendations'); - expect(request.method, 'post'); - expectBody(request.body, - """{"requests":[{"indexName":"indexName1","objectID":"objectID1","model":"related-products","threshold":21,"maxRecommendations":10,"queryParameters":{"query":"myQuery","facetFilters":["query1"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback1"]}},{"indexName":"indexName2","objectID":"objectID2","model":"related-products","threshold":21,"maxRecommendations":10,"queryParameters":{"query":"myQuery","facetFilters":["query2"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback2"]}}]}"""); - }, - ), - ); - - // getRecommendations - test( - 'get frequently bought together recommendations', - () => runTest( - builder: (requester) => RecommendClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.getRecommendations( - getRecommendationsParams: GetRecommendationsParams( - requests: [ - RecommendationsQuery( - indexName: "indexName1", - objectID: "objectID1", - model: RecommendationModels.fromJson("bought-together"), - threshold: 42, - ), - ], - ), - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/*/recommendations'); - expect(request.method, 'post'); - expectBody(request.body, - """{"requests":[{"indexName":"indexName1","objectID":"objectID1","model":"bought-together","threshold":42}]}"""); - }, - ), - ); - - // searchRecommendRules - test( - 'searchRecommendRules0', - () => runTest( - builder: (requester) => RecommendClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.searchRecommendRules( - indexName: "indexName", - model: RecommendModels.fromJson("related-products"), - ), - intercept: (request) { - expectPath(request.path, - '/1/indexes/indexName/related-products/recommend/rules/search'); - expect(request.method, 'post'); - expectBody(request.body, """{}"""); - }, - ), - ); -} diff --git a/tests/output/dart/test/methods/requests/search_test.dart b/tests/output/dart/test/methods/requests/search_test.dart deleted file mode 100644 index 5a2a22988d..0000000000 --- a/tests/output/dart/test/methods/requests/search_test.dart +++ /dev/null @@ -1,3431 +0,0 @@ -import 'package:algolia_client_search/algolia_client_search.dart'; -import 'package:algolia_test/algolia_test.dart'; -import 'package:test/test.dart'; - -void main() { - // addApiKey - test( - 'addApiKey0', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.addApiKey( - apiKey: ApiKey( - acl: [ - Acl.fromJson("search"), - Acl.fromJson("addObject"), - ], - description: "my new api key", - validity: 300, - maxQueriesPerIPPerHour: 100, - maxHitsPerQuery: 20, - ), - ), - intercept: (request) { - expectPath(request.path, '/1/keys'); - expect(request.method, 'post'); - expectBody(request.body, - """{"acl":["search","addObject"],"description":"my new api key","validity":300,"maxQueriesPerIPPerHour":100,"maxHitsPerQuery":20}"""); - }, - ), - ); - - // addOrUpdateObject - test( - 'addOrUpdateObject0', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.addOrUpdateObject( - indexName: "indexName", - objectID: "uniqueID", - body: { - 'key': "value", - }, - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/indexName/uniqueID'); - expect(request.method, 'put'); - expectBody(request.body, """{"key":"value"}"""); - }, - ), - ); - - // appendSource - test( - 'appendSource0', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.appendSource( - source: Source( - source: "theSource", - description: "theDescription", - ), - ), - intercept: (request) { - expectPath(request.path, '/1/security/sources/append'); - expect(request.method, 'post'); - expectBody(request.body, - """{"source":"theSource","description":"theDescription"}"""); - }, - ), - ); - - // assignUserId - test( - 'assignUserId0', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.assignUserId( - xAlgoliaUserID: "userID", - assignUserIdParams: AssignUserIdParams( - cluster: "theCluster", - ), - ), - intercept: (request) { - expectPath(request.path, '/1/clusters/mapping'); - expect(request.method, 'post'); - expectHeaders(request.headers, """{"x-algolia-user-id":"userID"}"""); - expectBody(request.body, """{"cluster":"theCluster"}"""); - }, - ), - ); - - // batch - test( - 'allows batch method with `addObject` action', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.batch( - indexName: "theIndexName", - batchWriteParams: BatchWriteParams( - requests: [ - BatchRequest( - action: Action.fromJson("addObject"), - body: { - 'key': "value", - }, - ), - ], - ), - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/theIndexName/batch'); - expect(request.method, 'post'); - expectBody(request.body, - """{"requests":[{"action":"addObject","body":{"key":"value"}}]}"""); - }, - ), - ); - - // batch - test( - 'allows batch method with `clear` action', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.batch( - indexName: "theIndexName", - batchWriteParams: BatchWriteParams( - requests: [ - BatchRequest( - action: Action.fromJson("clear"), - body: { - 'key': "value", - }, - ), - ], - ), - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/theIndexName/batch'); - expect(request.method, 'post'); - expectBody(request.body, - """{"requests":[{"action":"clear","body":{"key":"value"}}]}"""); - }, - ), - ); - - // batch - test( - 'allows batch method with `delete` action', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.batch( - indexName: "theIndexName", - batchWriteParams: BatchWriteParams( - requests: [ - BatchRequest( - action: Action.fromJson("delete"), - body: { - 'key': "value", - }, - ), - ], - ), - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/theIndexName/batch'); - expect(request.method, 'post'); - expectBody(request.body, - """{"requests":[{"action":"delete","body":{"key":"value"}}]}"""); - }, - ), - ); - - // batch - test( - 'allows batch method with `deleteObject` action', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.batch( - indexName: "theIndexName", - batchWriteParams: BatchWriteParams( - requests: [ - BatchRequest( - action: Action.fromJson("deleteObject"), - body: { - 'key': "value", - }, - ), - ], - ), - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/theIndexName/batch'); - expect(request.method, 'post'); - expectBody(request.body, - """{"requests":[{"action":"deleteObject","body":{"key":"value"}}]}"""); - }, - ), - ); - - // batch - test( - 'allows batch method with `partialUpdateObject` action', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.batch( - indexName: "theIndexName", - batchWriteParams: BatchWriteParams( - requests: [ - BatchRequest( - action: Action.fromJson("partialUpdateObject"), - body: { - 'key': "value", - }, - ), - ], - ), - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/theIndexName/batch'); - expect(request.method, 'post'); - expectBody(request.body, - """{"requests":[{"action":"partialUpdateObject","body":{"key":"value"}}]}"""); - }, - ), - ); - - // batch - test( - 'allows batch method with `partialUpdateObjectNoCreate` action', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.batch( - indexName: "theIndexName", - batchWriteParams: BatchWriteParams( - requests: [ - BatchRequest( - action: Action.fromJson("partialUpdateObjectNoCreate"), - body: { - 'key': "value", - }, - ), - ], - ), - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/theIndexName/batch'); - expect(request.method, 'post'); - expectBody(request.body, - """{"requests":[{"action":"partialUpdateObjectNoCreate","body":{"key":"value"}}]}"""); - }, - ), - ); - - // batch - test( - 'allows batch method with `updateObject` action', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.batch( - indexName: "theIndexName", - batchWriteParams: BatchWriteParams( - requests: [ - BatchRequest( - action: Action.fromJson("updateObject"), - body: { - 'key': "value", - }, - ), - ], - ), - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/theIndexName/batch'); - expect(request.method, 'post'); - expectBody(request.body, - """{"requests":[{"action":"updateObject","body":{"key":"value"}}]}"""); - }, - ), - ); - - // batchAssignUserIds - test( - 'batchAssignUserIds0', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.batchAssignUserIds( - xAlgoliaUserID: "userID", - batchAssignUserIdsParams: BatchAssignUserIdsParams( - cluster: "theCluster", - users: [ - "user1", - "user2", - ], - ), - ), - intercept: (request) { - expectPath(request.path, '/1/clusters/mapping/batch'); - expect(request.method, 'post'); - expectHeaders(request.headers, """{"x-algolia-user-id":"userID"}"""); - expectBody(request.body, - """{"cluster":"theCluster","users":["user1","user2"]}"""); - }, - ), - ); - - // batchDictionaryEntries - test( - 'get batchDictionaryEntries results with minimal parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.batchDictionaryEntries( - dictionaryName: DictionaryType.fromJson("compounds"), - batchDictionaryEntriesParams: BatchDictionaryEntriesParams( - requests: [ - BatchDictionaryEntriesRequest( - action: DictionaryAction.fromJson("addEntry"), - body: DictionaryEntry( - objectID: "1", - language: "en", - ), - ), - BatchDictionaryEntriesRequest( - action: DictionaryAction.fromJson("deleteEntry"), - body: DictionaryEntry( - objectID: "2", - language: "fr", - ), - ), - ], - ), - ), - intercept: (request) { - expectPath(request.path, '/1/dictionaries/compounds/batch'); - expect(request.method, 'post'); - expectBody(request.body, - """{"requests":[{"action":"addEntry","body":{"objectID":"1","language":"en"}},{"action":"deleteEntry","body":{"objectID":"2","language":"fr"}}]}"""); - }, - ), - ); - - // batchDictionaryEntries - test( - 'get batchDictionaryEntries results with all parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.batchDictionaryEntries( - dictionaryName: DictionaryType.fromJson("compounds"), - batchDictionaryEntriesParams: BatchDictionaryEntriesParams( - clearExistingDictionaryEntries: false, - requests: [ - BatchDictionaryEntriesRequest( - action: DictionaryAction.fromJson("addEntry"), - body: DictionaryEntry( - objectID: "1", - language: "en", - word: "fancy", - words: [ - "believe", - "algolia", - ], - decomposition: [ - "trust", - "algolia", - ], - state: DictionaryEntryState.fromJson("enabled"), - ), - ), - BatchDictionaryEntriesRequest( - action: DictionaryAction.fromJson("deleteEntry"), - body: DictionaryEntry( - objectID: "2", - language: "fr", - word: "humility", - words: [ - "candor", - "algolia", - ], - decomposition: [ - "grit", - "algolia", - ], - state: DictionaryEntryState.fromJson("enabled"), - ), - ), - ], - ), - ), - intercept: (request) { - expectPath(request.path, '/1/dictionaries/compounds/batch'); - expect(request.method, 'post'); - expectBody(request.body, - """{"clearExistingDictionaryEntries":false,"requests":[{"action":"addEntry","body":{"objectID":"1","language":"en","word":"fancy","words":["believe","algolia"],"decomposition":["trust","algolia"],"state":"enabled"}},{"action":"deleteEntry","body":{"objectID":"2","language":"fr","word":"humility","words":["candor","algolia"],"decomposition":["grit","algolia"],"state":"enabled"}}]}"""); - }, - ), - ); - - // batchDictionaryEntries - test( - 'get batchDictionaryEntries results additional properties', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.batchDictionaryEntries( - dictionaryName: DictionaryType.fromJson("compounds"), - batchDictionaryEntriesParams: BatchDictionaryEntriesParams( - requests: [ - BatchDictionaryEntriesRequest( - action: DictionaryAction.fromJson("addEntry"), - body: DictionaryEntry( - objectID: "1", - language: "en", - additionalProperties: {'additional': 'try me'}, - ), - ), - ], - ), - ), - intercept: (request) { - expectPath(request.path, '/1/dictionaries/compounds/batch'); - expect(request.method, 'post'); - expectBody(request.body, - """{"requests":[{"action":"addEntry","body":{"objectID":"1","language":"en","additional":"try me"}}]}"""); - }, - ), - ); - - // browse - test( - 'browse with minimal parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.browse( - indexName: "indexName", - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/indexName/browse'); - expect(request.method, 'post'); - expectBody(request.body, """{}"""); - }, - ), - ); - - // browse - test( - 'browse with search parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.browse( - indexName: "indexName", - browseParams: BrowseParamsObject( - query: "myQuery", - facetFilters: [ - "tags:algolia", - ], - ), - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/indexName/browse'); - expect(request.method, 'post'); - expectBody(request.body, - """{"query":"myQuery","facetFilters":["tags:algolia"]}"""); - }, - ), - ); - - // browse - test( - 'browse allow a cursor in parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.browse( - indexName: "indexName", - browseParams: BrowseParamsObject( - cursor: "test", - ), - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/indexName/browse'); - expect(request.method, 'post'); - expectBody(request.body, """{"cursor":"test"}"""); - }, - ), - ); - - // clearAllSynonyms - test( - 'clearAllSynonyms0', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.clearAllSynonyms( - indexName: "indexName", - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/indexName/synonyms/clear'); - expect(request.method, 'post'); - expect(request.body, {}); - }, - ), - ); - - // clearObjects - test( - 'clearObjects0', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.clearObjects( - indexName: "theIndexName", - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/theIndexName/clear'); - expect(request.method, 'post'); - expect(request.body, {}); - }, - ), - ); - - // clearRules - test( - 'clearRules0', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.clearRules( - indexName: "indexName", - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/indexName/rules/clear'); - expect(request.method, 'post'); - expect(request.body, {}); - }, - ), - ); - - // customDelete - test( - 'allow del method for a custom path with minimal parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customDelete( - path: "/test/minimal", - ), - intercept: (request) { - expectPath(request.path, '/1/test/minimal'); - expect(request.method, 'delete'); - expect(request.body, null); - }, - ), - ); - - // customDelete - test( - 'allow del method for a custom path with all parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customDelete( - path: "/test/all", - parameters: { - 'query': "parameters", - }, - ), - intercept: (request) { - expectPath(request.path, '/1/test/all'); - expect(request.method, 'delete'); - expectParams(request.queryParameters, """{"query":"parameters"}"""); - expect(request.body, null); - }, - ), - ); - - // customGet - test( - 'allow get method for a custom path with minimal parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customGet( - path: "/test/minimal", - ), - intercept: (request) { - expectPath(request.path, '/1/test/minimal'); - expect(request.method, 'get'); - expect(request.body, null); - }, - ), - ); - - // customGet - test( - 'allow get method for a custom path with all parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customGet( - path: "/test/all", - parameters: { - 'query': "parameters", - }, - ), - intercept: (request) { - expectPath(request.path, '/1/test/all'); - expect(request.method, 'get'); - expectParams(request.queryParameters, """{"query":"parameters"}"""); - expect(request.body, null); - }, - ), - ); - - // customPost - test( - 'allow post method for a custom path with minimal parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPost( - path: "/test/minimal", - ), - intercept: (request) { - expectPath(request.path, '/1/test/minimal'); - expect(request.method, 'post'); - expectBody(request.body, """{}"""); - }, - ), - ); - - // customPost - test( - 'allow post method for a custom path with all parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPost( - path: "/test/all", - parameters: { - 'query': "parameters", - }, - body: { - 'body': "parameters", - }, - ), - intercept: (request) { - expectPath(request.path, '/1/test/all'); - expect(request.method, 'post'); - expectParams(request.queryParameters, """{"query":"parameters"}"""); - expectBody(request.body, """{"body":"parameters"}"""); - }, - ), - ); - - // customPost - test( - 'requestOptions can override default query parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPost( - path: "/test/requestOptions", - parameters: { - 'query': "parameters", - }, - body: { - 'facet': "filters", - }, - requestOptions: RequestOptions( - urlParameters: { - 'query': "myQueryParameter", - }, - ), - ), - intercept: (request) { - expectPath(request.path, '/1/test/requestOptions'); - expect(request.method, 'post'); - expectParams( - request.queryParameters, """{"query":"myQueryParameter"}"""); - expectBody(request.body, """{"facet":"filters"}"""); - }, - ), - ); - - // customPost - test( - 'requestOptions merges query parameters with default ones', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPost( - path: "/test/requestOptions", - parameters: { - 'query': "parameters", - }, - body: { - 'facet': "filters", - }, - requestOptions: RequestOptions( - urlParameters: { - 'query2': "myQueryParameter", - }, - ), - ), - intercept: (request) { - expectPath(request.path, '/1/test/requestOptions'); - expect(request.method, 'post'); - expectParams(request.queryParameters, - """{"query":"parameters","query2":"myQueryParameter"}"""); - expectBody(request.body, """{"facet":"filters"}"""); - }, - ), - ); - - // customPost - test( - 'requestOptions can override default headers', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPost( - path: "/test/requestOptions", - parameters: { - 'query': "parameters", - }, - body: { - 'facet': "filters", - }, - requestOptions: RequestOptions( - headers: { - 'x-algolia-api-key': 'myApiKey', - }, - ), - ), - intercept: (request) { - expectPath(request.path, '/1/test/requestOptions'); - expect(request.method, 'post'); - expectHeaders(request.headers, """{"x-algolia-api-key":"myApiKey"}"""); - expectParams(request.queryParameters, """{"query":"parameters"}"""); - expectBody(request.body, """{"facet":"filters"}"""); - }, - ), - ); - - // customPost - test( - 'requestOptions merges headers with default ones', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPost( - path: "/test/requestOptions", - parameters: { - 'query': "parameters", - }, - body: { - 'facet': "filters", - }, - requestOptions: RequestOptions( - headers: { - 'x-algolia-api-key': 'myApiKey', - }, - ), - ), - intercept: (request) { - expectPath(request.path, '/1/test/requestOptions'); - expect(request.method, 'post'); - expectHeaders(request.headers, """{"x-algolia-api-key":"myApiKey"}"""); - expectParams(request.queryParameters, """{"query":"parameters"}"""); - expectBody(request.body, """{"facet":"filters"}"""); - }, - ), - ); - - // customPost - test( - 'requestOptions queryParameters accepts booleans', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPost( - path: "/test/requestOptions", - parameters: { - 'query': "parameters", - }, - body: { - 'facet': "filters", - }, - requestOptions: RequestOptions( - urlParameters: { - 'isItWorking': true, - }, - ), - ), - intercept: (request) { - expectPath(request.path, '/1/test/requestOptions'); - expect(request.method, 'post'); - expectParams(request.queryParameters, - """{"query":"parameters","isItWorking":"true"}"""); - expectBody(request.body, """{"facet":"filters"}"""); - }, - ), - ); - - // customPost - test( - 'requestOptions queryParameters accepts integers', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPost( - path: "/test/requestOptions", - parameters: { - 'query': "parameters", - }, - body: { - 'facet': "filters", - }, - requestOptions: RequestOptions( - urlParameters: { - 'myParam': 2, - }, - ), - ), - intercept: (request) { - expectPath(request.path, '/1/test/requestOptions'); - expect(request.method, 'post'); - expectParams(request.queryParameters, - """{"query":"parameters","myParam":"2"}"""); - expectBody(request.body, """{"facet":"filters"}"""); - }, - ), - ); - - // customPost - test( - 'requestOptions queryParameters accepts list of string', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPost( - path: "/test/requestOptions", - parameters: { - 'query': "parameters", - }, - body: { - 'facet': "filters", - }, - requestOptions: RequestOptions( - urlParameters: { - 'myParam': [ - "c", - "d", - ], - }, - ), - ), - intercept: (request) { - expectPath(request.path, '/1/test/requestOptions'); - expect(request.method, 'post'); - expectParams(request.queryParameters, - """{"query":"parameters","myParam":"c,d"}"""); - expectBody(request.body, """{"facet":"filters"}"""); - }, - ), - ); - - // customPost - test( - 'requestOptions queryParameters accepts list of booleans', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPost( - path: "/test/requestOptions", - parameters: { - 'query': "parameters", - }, - body: { - 'facet': "filters", - }, - requestOptions: RequestOptions( - urlParameters: { - 'myParam': [ - true, - true, - false, - ], - }, - ), - ), - intercept: (request) { - expectPath(request.path, '/1/test/requestOptions'); - expect(request.method, 'post'); - expectParams(request.queryParameters, - """{"query":"parameters","myParam":"true,true,false"}"""); - expectBody(request.body, """{"facet":"filters"}"""); - }, - ), - ); - - // customPost - test( - 'requestOptions queryParameters accepts list of integers', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPost( - path: "/test/requestOptions", - parameters: { - 'query': "parameters", - }, - body: { - 'facet': "filters", - }, - requestOptions: RequestOptions( - urlParameters: { - 'myParam': [ - 1, - 2, - ], - }, - ), - ), - intercept: (request) { - expectPath(request.path, '/1/test/requestOptions'); - expect(request.method, 'post'); - expectParams(request.queryParameters, - """{"query":"parameters","myParam":"1,2"}"""); - expectBody(request.body, """{"facet":"filters"}"""); - }, - ), - ); - - // customPut - test( - 'allow put method for a custom path with minimal parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPut( - path: "/test/minimal", - ), - intercept: (request) { - expectPath(request.path, '/1/test/minimal'); - expect(request.method, 'put'); - expectBody(request.body, """{}"""); - }, - ), - ); - - // customPut - test( - 'allow put method for a custom path with all parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.customPut( - path: "/test/all", - parameters: { - 'query': "parameters", - }, - body: { - 'body': "parameters", - }, - ), - intercept: (request) { - expectPath(request.path, '/1/test/all'); - expect(request.method, 'put'); - expectParams(request.queryParameters, """{"query":"parameters"}"""); - expectBody(request.body, """{"body":"parameters"}"""); - }, - ), - ); - - // deleteApiKey - test( - 'deleteApiKey0', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.deleteApiKey( - key: "myTestApiKey", - ), - intercept: (request) { - expectPath(request.path, '/1/keys/myTestApiKey'); - expect(request.method, 'delete'); - expect(request.body, null); - }, - ), - ); - - // deleteBy - test( - 'deleteBy0', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.deleteBy( - indexName: "theIndexName", - deleteByParams: DeleteByParams( - filters: "brand:brandName", - ), - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/theIndexName/deleteByQuery'); - expect(request.method, 'post'); - expectBody(request.body, """{"filters":"brand:brandName"}"""); - }, - ), - ); - - // deleteIndex - test( - 'deleteIndex0', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.deleteIndex( - indexName: "theIndexName", - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/theIndexName'); - expect(request.method, 'delete'); - expect(request.body, null); - }, - ), - ); - - // deleteObject - test( - 'deleteObject0', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.deleteObject( - indexName: "theIndexName", - objectID: "uniqueID", - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/theIndexName/uniqueID'); - expect(request.method, 'delete'); - expect(request.body, null); - }, - ), - ); - - // deleteRule - test( - 'delete rule simple case', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.deleteRule( - indexName: "indexName", - objectID: "id1", - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/indexName/rules/id1'); - expect(request.method, 'delete'); - expect(request.body, null); - }, - ), - ); - - // deleteRule - test( - 'delete rule with simple characters to encode in objectID', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.deleteRule( - indexName: "indexName", - objectID: "test/with/slash", - ), - intercept: (request) { - expectPath( - request.path, '/1/indexes/indexName/rules/test%2Fwith%2Fslash'); - expect(request.method, 'delete'); - expect(request.body, null); - }, - ), - ); - - // deleteSource - test( - 'deleteSource0', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.deleteSource( - source: "theSource", - ), - intercept: (request) { - expectPath(request.path, '/1/security/sources/theSource'); - expect(request.method, 'delete'); - expect(request.body, null); - }, - ), - ); - - // deleteSynonym - test( - 'deleteSynonym0', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.deleteSynonym( - indexName: "indexName", - objectID: "id1", - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/indexName/synonyms/id1'); - expect(request.method, 'delete'); - expect(request.body, null); - }, - ), - ); - - // getApiKey - test( - 'getApiKey0', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.getApiKey( - key: "myTestApiKey", - ), - intercept: (request) { - expectPath(request.path, '/1/keys/myTestApiKey'); - expect(request.method, 'get'); - expect(request.body, null); - }, - ), - ); - - // getDictionaryLanguages - test( - 'get getDictionaryLanguages', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.getDictionaryLanguages(), - intercept: (request) { - expectPath(request.path, '/1/dictionaries/*/languages'); - expect(request.method, 'get'); - expect(request.body, null); - }, - ), - ); - - // getDictionarySettings - test( - 'get getDictionarySettings results', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.getDictionarySettings(), - intercept: (request) { - expectPath(request.path, '/1/dictionaries/*/settings'); - expect(request.method, 'get'); - expect(request.body, null); - }, - ), - ); - - // getLogs - test( - 'getLogs with minimal parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.getLogs(), - intercept: (request) { - expectPath(request.path, '/1/logs'); - expect(request.method, 'get'); - expect(request.body, null); - }, - ), - ); - - // getLogs - test( - 'getLogs with parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.getLogs( - offset: 5, - length: 10, - indexName: "theIndexName", - type: LogType.fromJson("all"), - ), - intercept: (request) { - expectPath(request.path, '/1/logs'); - expect(request.method, 'get'); - expectParams(request.queryParameters, - """{"offset":"5","length":"10","indexName":"theIndexName","type":"all"}"""); - expect(request.body, null); - }, - ), - ); - - // getObject - test( - 'getObject0', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.getObject( - indexName: "theIndexName", - objectID: "uniqueID", - attributesToRetrieve: [ - "attr1", - "attr2", - ], - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/theIndexName/uniqueID'); - expect(request.method, 'get'); - expectParams(request.queryParameters, - """{"attributesToRetrieve":"attr1,attr2"}"""); - expect(request.body, null); - }, - ), - ); - - // getObjects - test( - 'getObjects0', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.getObjects( - getObjectsParams: GetObjectsParams( - requests: [ - GetObjectsRequest( - attributesToRetrieve: [ - "attr1", - "attr2", - ], - objectID: "uniqueID", - indexName: "theIndexName", - ), - ], - ), - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/*/objects'); - expect(request.method, 'post'); - expectBody(request.body, - """{"requests":[{"attributesToRetrieve":["attr1","attr2"],"objectID":"uniqueID","indexName":"theIndexName"}]}"""); - }, - ), - ); - - // getRule - test( - 'getRule0', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.getRule( - indexName: "indexName", - objectID: "id1", - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/indexName/rules/id1'); - expect(request.method, 'get'); - expect(request.body, null); - }, - ), - ); - - // getSettings - test( - 'getSettings0', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.getSettings( - indexName: "theIndexName", - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/theIndexName/settings'); - expect(request.method, 'get'); - expect(request.body, null); - }, - ), - ); - - // getSources - test( - 'getSources0', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.getSources(), - intercept: (request) { - expectPath(request.path, '/1/security/sources'); - expect(request.method, 'get'); - expect(request.body, null); - }, - ), - ); - - // getSynonym - test( - 'getSynonym0', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.getSynonym( - indexName: "indexName", - objectID: "id1", - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/indexName/synonyms/id1'); - expect(request.method, 'get'); - expect(request.body, null); - }, - ), - ); - - // getTask - test( - 'getTask0', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.getTask( - indexName: "theIndexName", - taskID: 123, - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/theIndexName/task/123'); - expect(request.method, 'get'); - expect(request.body, null); - }, - ), - ); - - // getTopUserIds - test( - 'getTopUserIds0', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.getTopUserIds(), - intercept: (request) { - expectPath(request.path, '/1/clusters/mapping/top'); - expect(request.method, 'get'); - expect(request.body, null); - }, - ), - ); - - // getUserId - test( - 'getUserId0', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.getUserId( - userID: "uniqueID", - ), - intercept: (request) { - expectPath(request.path, '/1/clusters/mapping/uniqueID'); - expect(request.method, 'get'); - expect(request.body, null); - }, - ), - ); - - // hasPendingMappings - test( - 'hasPendingMappings with minimal parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.hasPendingMappings(), - intercept: (request) { - expectPath(request.path, '/1/clusters/mapping/pending'); - expect(request.method, 'get'); - expect(request.body, null); - }, - ), - ); - - // hasPendingMappings - test( - 'hasPendingMappings with parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.hasPendingMappings( - getClusters: true, - ), - intercept: (request) { - expectPath(request.path, '/1/clusters/mapping/pending'); - expect(request.method, 'get'); - expectParams(request.queryParameters, """{"getClusters":"true"}"""); - expect(request.body, null); - }, - ), - ); - - // listApiKeys - test( - 'listApiKeys0', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.listApiKeys(), - intercept: (request) { - expectPath(request.path, '/1/keys'); - expect(request.method, 'get'); - expect(request.body, null); - }, - ), - ); - - // listClusters - test( - 'listClusters0', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.listClusters(), - intercept: (request) { - expectPath(request.path, '/1/clusters'); - expect(request.method, 'get'); - expect(request.body, null); - }, - ), - ); - - // listIndices - test( - 'listIndices with minimal parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.listIndices(), - intercept: (request) { - expectPath(request.path, '/1/indexes'); - expect(request.method, 'get'); - expect(request.body, null); - }, - ), - ); - - // listIndices - test( - 'listIndices with parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.listIndices( - page: 8, - hitsPerPage: 3, - ), - intercept: (request) { - expectPath(request.path, '/1/indexes'); - expect(request.method, 'get'); - expectParams( - request.queryParameters, """{"page":"8","hitsPerPage":"3"}"""); - expect(request.body, null); - }, - ), - ); - - // listUserIds - test( - 'listUserIds with minimal parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.listUserIds(), - intercept: (request) { - expectPath(request.path, '/1/clusters/mapping'); - expect(request.method, 'get'); - expect(request.body, null); - }, - ), - ); - - // listUserIds - test( - 'listUserIds with parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.listUserIds( - page: 8, - hitsPerPage: 100, - ), - intercept: (request) { - expectPath(request.path, '/1/clusters/mapping'); - expect(request.method, 'get'); - expectParams( - request.queryParameters, """{"page":"8","hitsPerPage":"100"}"""); - expect(request.body, null); - }, - ), - ); - - // multipleBatch - test( - 'multipleBatch0', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.multipleBatch( - batchParams: BatchParams( - requests: [ - MultipleBatchRequest( - action: Action.fromJson("addObject"), - body: { - 'key': "value", - }, - indexName: "theIndexName", - ), - ], - ), - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/*/batch'); - expect(request.method, 'post'); - expectBody(request.body, - """{"requests":[{"action":"addObject","body":{"key":"value"},"indexName":"theIndexName"}]}"""); - }, - ), - ); - - // operationIndex - test( - 'operationIndex0', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.operationIndex( - indexName: "theIndexName", - operationIndexParams: OperationIndexParams( - operation: OperationType.fromJson("copy"), - destination: "dest", - scope: [ - ScopeType.fromJson("rules"), - ScopeType.fromJson("settings"), - ], - ), - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/theIndexName/operation'); - expect(request.method, 'post'); - expectBody(request.body, - """{"operation":"copy","destination":"dest","scope":["rules","settings"]}"""); - }, - ), - ); - - // partialUpdateObject - test( - 'partialUpdateObject0', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.partialUpdateObject( - indexName: "theIndexName", - objectID: "uniqueID", - attributesToUpdate: { - 'id1': "test", - 'id2': BuiltInOperation( - operation: BuiltInOperationType.fromJson("AddUnique"), - value: "test2", - ), - }, - createIfNotExists: true, - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/theIndexName/uniqueID/partial'); - expect(request.method, 'post'); - expectParams( - request.queryParameters, """{"createIfNotExists":"true"}"""); - expectBody(request.body, - """{"id1":"test","id2":{"_operation":"AddUnique","value":"test2"}}"""); - }, - ), - ); - - // removeUserId - test( - 'removeUserId0', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.removeUserId( - userID: "uniqueID", - ), - intercept: (request) { - expectPath(request.path, '/1/clusters/mapping/uniqueID'); - expect(request.method, 'delete'); - expect(request.body, null); - }, - ), - ); - - // replaceSources - test( - 'replaceSources0', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.replaceSources( - source: [ - Source( - source: "theSource", - description: "theDescription", - ), - ], - ), - intercept: (request) { - expectPath(request.path, '/1/security/sources'); - expect(request.method, 'put'); - expectBody(request.body, - """[{"source":"theSource","description":"theDescription"}]"""); - }, - ), - ); - - // restoreApiKey - test( - 'restoreApiKey0', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.restoreApiKey( - key: "myApiKey", - ), - intercept: (request) { - expectPath(request.path, '/1/keys/myApiKey/restore'); - expect(request.method, 'post'); - expect(request.body, {}); - }, - ), - ); - - // saveObject - test( - 'saveObject0', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.saveObject( - indexName: "theIndexName", - body: { - 'objectID': "id", - 'test': "val", - }, - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/theIndexName'); - expect(request.method, 'post'); - expectBody(request.body, """{"objectID":"id","test":"val"}"""); - }, - ), - ); - - // saveRule - test( - 'saveRule with minimal parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.saveRule( - indexName: "indexName", - objectID: "id1", - rule: Rule( - objectID: "id1", - conditions: [ - Condition( - pattern: "apple", - anchoring: Anchoring.fromJson("contains"), - ), - ], - ), - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/indexName/rules/id1'); - expect(request.method, 'put'); - expectBody(request.body, - """{"objectID":"id1","conditions":[{"pattern":"apple","anchoring":"contains"}]}"""); - }, - ), - ); - - // saveRule - test( - 'saveRule with all parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.saveRule( - indexName: "indexName", - objectID: "id1", - rule: Rule( - objectID: "id1", - conditions: [ - Condition( - pattern: "apple", - anchoring: Anchoring.fromJson("contains"), - alternatives: false, - context: "search", - ), - ], - consequence: Consequence( - params: ConsequenceParams( - filters: "brand:apple", - query: ConsequenceQueryObject( - remove: [ - "algolia", - ], - edits: [ - Edit( - type: EditType.fromJson("remove"), - delete: "abc", - insert: "cde", - ), - Edit( - type: EditType.fromJson("replace"), - delete: "abc", - insert: "cde", - ), - ], - ), - ), - hide: [ - ConsequenceHide( - objectID: "321", - ), - ], - filterPromotes: false, - userData: { - 'algolia': 'aloglia', - }, - promote: [ - PromoteObjectID( - objectID: "abc", - position: 3, - ), - PromoteObjectIDs( - objectIDs: [ - "abc", - "def", - ], - position: 1, - ), - ], - ), - description: "test", - enabled: true, - validity: [ - TimeRange( - from: 1656670273, - until: 1656670277, - ), - ], - ), - forwardToReplicas: true, - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/indexName/rules/id1'); - expect(request.method, 'put'); - expectParams( - request.queryParameters, """{"forwardToReplicas":"true"}"""); - expectBody(request.body, - """{"objectID":"id1","conditions":[{"pattern":"apple","anchoring":"contains","alternatives":false,"context":"search"}],"consequence":{"params":{"filters":"brand:apple","query":{"remove":["algolia"],"edits":[{"type":"remove","delete":"abc","insert":"cde"},{"type":"replace","delete":"abc","insert":"cde"}]}},"hide":[{"objectID":"321"}],"filterPromotes":false,"userData":{"algolia":"aloglia"},"promote":[{"objectID":"abc","position":3},{"objectIDs":["abc","def"],"position":1}]},"description":"test","enabled":true,"validity":[{"from":1656670273,"until":1656670277}]}"""); - }, - ), - ); - - // saveRules - test( - 'saveRules with minimal parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.saveRules( - indexName: "indexName", - rules: [ - Rule( - objectID: "a-rule-id", - conditions: [ - Condition( - pattern: "smartphone", - anchoring: Anchoring.fromJson("contains"), - ), - ], - ), - Rule( - objectID: "a-second-rule-id", - conditions: [ - Condition( - pattern: "apple", - anchoring: Anchoring.fromJson("contains"), - ), - ], - ), - ], - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/indexName/rules/batch'); - expect(request.method, 'post'); - expectBody(request.body, - """[{"objectID":"a-rule-id","conditions":[{"pattern":"smartphone","anchoring":"contains"}]},{"objectID":"a-second-rule-id","conditions":[{"pattern":"apple","anchoring":"contains"}]}]"""); - }, - ), - ); - - // saveRules - test( - 'saveRules with all parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.saveRules( - indexName: "indexName", - rules: [ - Rule( - objectID: "id1", - conditions: [ - Condition( - pattern: "apple", - anchoring: Anchoring.fromJson("contains"), - alternatives: false, - context: "search", - ), - ], - consequence: Consequence( - params: ConsequenceParams( - filters: "brand:apple", - query: ConsequenceQueryObject( - remove: [ - "algolia", - ], - edits: [ - Edit( - type: EditType.fromJson("remove"), - delete: "abc", - insert: "cde", - ), - Edit( - type: EditType.fromJson("replace"), - delete: "abc", - insert: "cde", - ), - ], - ), - ), - hide: [ - ConsequenceHide( - objectID: "321", - ), - ], - filterPromotes: false, - userData: { - 'algolia': 'aloglia', - }, - promote: [ - PromoteObjectID( - objectID: "abc", - position: 3, - ), - PromoteObjectIDs( - objectIDs: [ - "abc", - "def", - ], - position: 1, - ), - ], - ), - description: "test", - enabled: true, - validity: [ - TimeRange( - from: 1656670273, - until: 1656670277, - ), - ], - ), - ], - forwardToReplicas: true, - clearExistingRules: true, - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/indexName/rules/batch'); - expect(request.method, 'post'); - expectParams(request.queryParameters, - """{"forwardToReplicas":"true","clearExistingRules":"true"}"""); - expectBody(request.body, - """[{"objectID":"id1","conditions":[{"pattern":"apple","anchoring":"contains","alternatives":false,"context":"search"}],"consequence":{"params":{"filters":"brand:apple","query":{"remove":["algolia"],"edits":[{"type":"remove","delete":"abc","insert":"cde"},{"type":"replace","delete":"abc","insert":"cde"}]}},"hide":[{"objectID":"321"}],"filterPromotes":false,"userData":{"algolia":"aloglia"},"promote":[{"objectID":"abc","position":3},{"objectIDs":["abc","def"],"position":1}]},"description":"test","enabled":true,"validity":[{"from":1656670273,"until":1656670277}]}]"""); - }, - ), - ); - - // saveSynonym - test( - 'saveSynonym0', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.saveSynonym( - indexName: "indexName", - objectID: "id1", - synonymHit: SynonymHit( - objectID: "id1", - type: SynonymType.fromJson("synonym"), - synonyms: [ - "car", - "vehicule", - "auto", - ], - ), - forwardToReplicas: true, - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/indexName/synonyms/id1'); - expect(request.method, 'put'); - expectParams( - request.queryParameters, """{"forwardToReplicas":"true"}"""); - expectBody(request.body, - """{"objectID":"id1","type":"synonym","synonyms":["car","vehicule","auto"]}"""); - }, - ), - ); - - // saveSynonyms - test( - 'saveSynonyms0', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.saveSynonyms( - indexName: "indexName", - synonymHit: [ - SynonymHit( - objectID: "id1", - type: SynonymType.fromJson("synonym"), - synonyms: [ - "car", - "vehicule", - "auto", - ], - ), - SynonymHit( - objectID: "id2", - type: SynonymType.fromJson("onewaysynonym"), - input: "iphone", - synonyms: [ - "ephone", - "aphone", - "yphone", - ], - ), - ], - forwardToReplicas: true, - replaceExistingSynonyms: false, - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/indexName/synonyms/batch'); - expect(request.method, 'post'); - expectParams(request.queryParameters, - """{"forwardToReplicas":"true","replaceExistingSynonyms":"false"}"""); - expectBody(request.body, - """[{"objectID":"id1","type":"synonym","synonyms":["car","vehicule","auto"]},{"objectID":"id2","type":"onewaysynonym","input":"iphone","synonyms":["ephone","aphone","yphone"]}]"""); - }, - ), - ); - - // search - test( - 'search for a single hits request with minimal parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.search( - searchMethodParams: SearchMethodParams( - requests: [ - SearchForHits( - indexName: "cts_e2e_search_empty_index", - ), - ], - ), - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/*/queries'); - expect(request.method, 'post'); - expectBody(request.body, - """{"requests":[{"indexName":"cts_e2e_search_empty_index"}]}"""); - }, - ), - ); - - // search - test( - 'search for a single facet request with minimal parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.search( - searchMethodParams: SearchMethodParams( - requests: [ - SearchForFacets( - indexName: "cts_e2e_search_facet", - type: SearchTypeFacet.fromJson("facet"), - facet: "editor", - ), - ], - strategy: SearchStrategy.fromJson("stopIfEnoughMatches"), - ), - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/*/queries'); - expect(request.method, 'post'); - expectBody(request.body, - """{"requests":[{"indexName":"cts_e2e_search_facet","type":"facet","facet":"editor"}],"strategy":"stopIfEnoughMatches"}"""); - }, - ), - ); - - // search - test( - 'search for a single hits request with all parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.search( - searchMethodParams: SearchMethodParams( - requests: [ - SearchForHits( - indexName: "theIndexName", - query: "myQuery", - hitsPerPage: 50, - type: SearchTypeDefault.fromJson("default"), - ), - ], - ), - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/*/queries'); - expect(request.method, 'post'); - expectBody(request.body, - """{"requests":[{"indexName":"theIndexName","query":"myQuery","hitsPerPage":50,"type":"default"}]}"""); - }, - ), - ); - - // search - test( - 'search for a single facet request with all parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.search( - searchMethodParams: SearchMethodParams( - requests: [ - SearchForFacets( - indexName: "theIndexName", - type: SearchTypeFacet.fromJson("facet"), - facet: "theFacet", - facetQuery: "theFacetQuery", - query: "theQuery", - maxFacetHits: 50, - ), - ], - strategy: SearchStrategy.fromJson("stopIfEnoughMatches"), - ), - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/*/queries'); - expect(request.method, 'post'); - expectBody(request.body, - """{"requests":[{"indexName":"theIndexName","type":"facet","facet":"theFacet","facetQuery":"theFacetQuery","query":"theQuery","maxFacetHits":50}],"strategy":"stopIfEnoughMatches"}"""); - }, - ), - ); - - // search - test( - 'search for multiple mixed requests in multiple indices with minimal parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.search( - searchMethodParams: SearchMethodParams( - requests: [ - SearchForHits( - indexName: "theIndexName", - ), - SearchForFacets( - indexName: "theIndexName2", - type: SearchTypeFacet.fromJson("facet"), - facet: "theFacet", - ), - SearchForHits( - indexName: "theIndexName", - type: SearchTypeDefault.fromJson("default"), - ), - ], - strategy: SearchStrategy.fromJson("stopIfEnoughMatches"), - ), - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/*/queries'); - expect(request.method, 'post'); - expectBody(request.body, - """{"requests":[{"indexName":"theIndexName"},{"indexName":"theIndexName2","type":"facet","facet":"theFacet"},{"indexName":"theIndexName","type":"default"}],"strategy":"stopIfEnoughMatches"}"""); - }, - ), - ); - - // search - test( - 'search for multiple mixed requests in multiple indices with all parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.search( - searchMethodParams: SearchMethodParams( - requests: [ - SearchForFacets( - indexName: "theIndexName", - type: SearchTypeFacet.fromJson("facet"), - facet: "theFacet", - facetQuery: "theFacetQuery", - query: "theQuery", - maxFacetHits: 50, - ), - SearchForHits( - indexName: "theIndexName", - query: "myQuery", - hitsPerPage: 50, - type: SearchTypeDefault.fromJson("default"), - ), - ], - strategy: SearchStrategy.fromJson("stopIfEnoughMatches"), - ), - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/*/queries'); - expect(request.method, 'post'); - expectBody(request.body, - """{"requests":[{"indexName":"theIndexName","type":"facet","facet":"theFacet","facetQuery":"theFacetQuery","query":"theQuery","maxFacetHits":50},{"indexName":"theIndexName","query":"myQuery","hitsPerPage":50,"type":"default"}],"strategy":"stopIfEnoughMatches"}"""); - }, - ), - ); - - // search - test( - 'search filters accept all of the possible shapes', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.search( - searchMethodParams: SearchMethodParams( - requests: [ - SearchForHits( - indexName: "theIndexName", - facetFilters: "mySearch:filters", - reRankingApplyFilter: "mySearch:filters", - tagFilters: "mySearch:filters", - numericFilters: "mySearch:filters", - optionalFilters: "mySearch:filters", - ), - SearchForHits( - indexName: "theIndexName", - facetFilters: [ - "mySearch:filters", - [ - "mySearch:filters", - ], - ], - reRankingApplyFilter: [ - "mySearch:filters", - [ - "mySearch:filters", - ], - ], - tagFilters: [ - "mySearch:filters", - [ - "mySearch:filters", - ], - ], - numericFilters: [ - "mySearch:filters", - [ - "mySearch:filters", - ], - ], - optionalFilters: [ - "mySearch:filters", - [ - "mySearch:filters", - ], - ], - ), - ], - ), - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/*/queries'); - expect(request.method, 'post'); - expectBody(request.body, - """{"requests":[{"indexName":"theIndexName","facetFilters":"mySearch:filters","reRankingApplyFilter":"mySearch:filters","tagFilters":"mySearch:filters","numericFilters":"mySearch:filters","optionalFilters":"mySearch:filters"},{"indexName":"theIndexName","facetFilters":["mySearch:filters",["mySearch:filters"]],"reRankingApplyFilter":["mySearch:filters",["mySearch:filters"]],"tagFilters":["mySearch:filters",["mySearch:filters"]],"numericFilters":["mySearch:filters",["mySearch:filters"]],"optionalFilters":["mySearch:filters",["mySearch:filters"]]}]}"""); - }, - ), - ); - - // search - test( - 'search with all search parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.search( - searchMethodParams: SearchMethodParams( - requests: [ - SearchForHits( - advancedSyntax: true, - advancedSyntaxFeatures: [ - AdvancedSyntaxFeatures.fromJson("exactPhrase"), - ], - allowTyposOnNumericTokens: true, - alternativesAsExact: [ - AlternativesAsExact.fromJson("multiWordsSynonym"), - ], - analytics: true, - analyticsTags: [ - "", - ], - aroundLatLng: "", - aroundLatLngViaIP: true, - aroundPrecision: 0, - aroundRadius: AroundRadiusAll.fromJson("all"), - attributeCriteriaComputedByMinProximity: true, - attributesForFaceting: [ - "", - ], - attributesToHighlight: [ - "", - ], - attributesToRetrieve: [ - "", - ], - attributesToSnippet: [ - "", - ], - clickAnalytics: true, - customRanking: [ - "", - ], - decompoundQuery: true, - disableExactOnAttributes: [ - "", - ], - disableTypoToleranceOnAttributes: [ - "", - ], - distinct: 0, - enableABTest: true, - enablePersonalization: true, - enableReRanking: true, - enableRules: true, - exactOnSingleWordQuery: - ExactOnSingleWordQuery.fromJson("attribute"), - explain: [ - "foo", - "bar", - ], - facetFilters: [ - "", - ], - facetingAfterDistinct: true, - facets: [ - "", - ], - filters: "", - getRankingInfo: true, - highlightPostTag: "", - highlightPreTag: "", - hitsPerPage: 1, - ignorePlurals: false, - indexName: "theIndexName", - insideBoundingBox: [ - [ - 47.3165, - 4.9665, - 47.3424, - 5.0201, - ], - [ - 40.9234, - 2.1185, - 38.643, - 1.9916, - ], - ], - insidePolygon: [ - [ - 47.3165, - 4.9665, - 47.3424, - 5.0201, - 47.32, - 4.9, - ], - [ - 40.9234, - 2.1185, - 38.643, - 1.9916, - 39.2587, - 2.0104, - ], - ], - keepDiacriticsOnCharacters: "", - length: 1, - maxValuesPerFacet: 0, - minProximity: 1, - minWordSizefor1Typo: 0, - minWordSizefor2Typos: 0, - minimumAroundRadius: 1, - naturalLanguages: [ - "", - ], - numericFilters: [ - "", - ], - offset: 0, - optionalFilters: [ - "", - ], - optionalWords: [ - "", - ], - page: 0, - percentileComputation: true, - personalizationImpact: 0, - query: "", - queryLanguages: [ - "", - ], - queryType: QueryType.fromJson("prefixAll"), - ranking: [ - "", - ], - reRankingApplyFilter: [ - "", - ], - relevancyStrictness: 0, - removeStopWords: true, - removeWordsIfNoResults: - RemoveWordsIfNoResults.fromJson("allOptional"), - renderingContent: RenderingContent( - facetOrdering: FacetOrdering( - facets: Facets( - order: [ - "a", - "b", - ], - ), - values: { - 'a': Value( - order: [ - "b", - ], - sortRemainingBy: SortRemainingBy.fromJson("count"), - ), - }, - ), - ), - replaceSynonymsInHighlight: true, - responseFields: [ - "", - ], - restrictHighlightAndSnippetArrays: true, - restrictSearchableAttributes: [ - "", - ], - ruleContexts: [ - "", - ], - similarQuery: "", - snippetEllipsisText: "", - sortFacetValuesBy: "", - sumOrFiltersScores: true, - synonyms: true, - tagFilters: [ - "", - ], - type: SearchTypeDefault.fromJson("default"), - typoTolerance: TypoToleranceEnum.fromJson("min"), - userToken: "", - ), - ], - ), - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/*/queries'); - expect(request.method, 'post'); - expectBody(request.body, - """{"requests":[{"advancedSyntax":true,"advancedSyntaxFeatures":["exactPhrase"],"allowTyposOnNumericTokens":true,"alternativesAsExact":["multiWordsSynonym"],"analytics":true,"analyticsTags":[""],"aroundLatLng":"","aroundLatLngViaIP":true,"aroundPrecision":0,"aroundRadius":"all","attributeCriteriaComputedByMinProximity":true,"attributesForFaceting":[""],"attributesToHighlight":[""],"attributesToRetrieve":[""],"attributesToSnippet":[""],"clickAnalytics":true,"customRanking":[""],"decompoundQuery":true,"disableExactOnAttributes":[""],"disableTypoToleranceOnAttributes":[""],"distinct":0,"enableABTest":true,"enablePersonalization":true,"enableReRanking":true,"enableRules":true,"exactOnSingleWordQuery":"attribute","explain":["foo","bar"],"facetFilters":[""],"facetingAfterDistinct":true,"facets":[""],"filters":"","getRankingInfo":true,"highlightPostTag":"","highlightPreTag":"","hitsPerPage":1,"ignorePlurals":false,"indexName":"theIndexName","insideBoundingBox":[[47.3165,4.9665,47.3424,5.0201],[40.9234,2.1185,38.643,1.9916]],"insidePolygon":[[47.3165,4.9665,47.3424,5.0201,47.32,4.9],[40.9234,2.1185,38.643,1.9916,39.2587,2.0104]],"keepDiacriticsOnCharacters":"","length":1,"maxValuesPerFacet":0,"minProximity":1,"minWordSizefor1Typo":0,"minWordSizefor2Typos":0,"minimumAroundRadius":1,"naturalLanguages":[""],"numericFilters":[""],"offset":0,"optionalFilters":[""],"optionalWords":[""],"page":0,"percentileComputation":true,"personalizationImpact":0,"query":"","queryLanguages":[""],"queryType":"prefixAll","ranking":[""],"reRankingApplyFilter":[""],"relevancyStrictness":0,"removeStopWords":true,"removeWordsIfNoResults":"allOptional","renderingContent":{"facetOrdering":{"facets":{"order":["a","b"]},"values":{"a":{"order":["b"],"sortRemainingBy":"count"}}}},"replaceSynonymsInHighlight":true,"responseFields":[""],"restrictHighlightAndSnippetArrays":true,"restrictSearchableAttributes":[""],"ruleContexts":[""],"similarQuery":"","snippetEllipsisText":"","sortFacetValuesBy":"","sumOrFiltersScores":true,"synonyms":true,"tagFilters":[""],"type":"default","typoTolerance":"min","userToken":""}]}"""); - }, - ), - ); - - // searchDictionaryEntries - test( - 'get searchDictionaryEntries results with minimal parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.searchDictionaryEntries( - dictionaryName: DictionaryType.fromJson("compounds"), - searchDictionaryEntriesParams: SearchDictionaryEntriesParams( - query: "foo", - ), - ), - intercept: (request) { - expectPath(request.path, '/1/dictionaries/compounds/search'); - expect(request.method, 'post'); - expectBody(request.body, """{"query":"foo"}"""); - }, - ), - ); - - // searchDictionaryEntries - test( - 'get searchDictionaryEntries results with all parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.searchDictionaryEntries( - dictionaryName: DictionaryType.fromJson("compounds"), - searchDictionaryEntriesParams: SearchDictionaryEntriesParams( - query: "foo", - page: 4, - hitsPerPage: 2, - language: "fr", - ), - ), - intercept: (request) { - expectPath(request.path, '/1/dictionaries/compounds/search'); - expect(request.method, 'post'); - expectBody(request.body, - """{"query":"foo","page":4,"hitsPerPage":2,"language":"fr"}"""); - }, - ), - ); - - // searchForFacetValues - test( - 'get searchForFacetValues results with minimal parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.searchForFacetValues( - indexName: "indexName", - facetName: "facetName", - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/indexName/facets/facetName/query'); - expect(request.method, 'post'); - expectBody(request.body, """{}"""); - }, - ), - ); - - // searchForFacetValues - test( - 'get searchForFacetValues results with all parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.searchForFacetValues( - indexName: "indexName", - facetName: "facetName", - searchForFacetValuesRequest: SearchForFacetValuesRequest( - params: "query=foo&facetFilters=['bar']", - facetQuery: "foo", - maxFacetHits: 42, - ), - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/indexName/facets/facetName/query'); - expect(request.method, 'post'); - expectBody(request.body, - """{"params":"query=foo&facetFilters=['bar']","facetQuery":"foo","maxFacetHits":42}"""); - }, - ), - ); - - // searchRules - test( - 'searchRules0', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.searchRules( - indexName: "indexName", - searchRulesParams: SearchRulesParams( - query: "something", - ), - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/indexName/rules/search'); - expect(request.method, 'post'); - expectBody(request.body, """{"query":"something"}"""); - }, - ), - ); - - // searchSingleIndex - test( - 'search with minimal parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.searchSingleIndex( - indexName: "indexName", - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/indexName/query'); - expect(request.method, 'post'); - expectBody(request.body, """{}"""); - }, - ), - ); - - // searchSingleIndex - test( - 'search with searchParams', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.searchSingleIndex( - indexName: "indexName", - searchParams: SearchParamsObject( - query: "myQuery", - facetFilters: [ - "tags:algolia", - ], - ), - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/indexName/query'); - expect(request.method, 'post'); - expectBody(request.body, - """{"query":"myQuery","facetFilters":["tags:algolia"]}"""); - }, - ), - ); - - // searchSynonyms - test( - 'searchSynonyms with minimal parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.searchSynonyms( - indexName: "indexName", - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/indexName/synonyms/search'); - expect(request.method, 'post'); - expectBody(request.body, """{}"""); - }, - ), - ); - - // searchSynonyms - test( - 'searchSynonyms with all parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.searchSynonyms( - indexName: "indexName", - type: SynonymType.fromJson("altcorrection1"), - page: 10, - hitsPerPage: 10, - searchSynonymsParams: SearchSynonymsParams( - query: "myQuery", - ), - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/indexName/synonyms/search'); - expect(request.method, 'post'); - expectParams(request.queryParameters, - """{"type":"altcorrection1","page":"10","hitsPerPage":"10"}"""); - expectBody(request.body, """{"query":"myQuery"}"""); - }, - ), - ); - - // searchUserIds - test( - 'searchUserIds0', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.searchUserIds( - searchUserIdsParams: SearchUserIdsParams( - query: "test", - clusterName: "theClusterName", - page: 5, - hitsPerPage: 10, - ), - ), - intercept: (request) { - expectPath(request.path, '/1/clusters/mapping/search'); - expect(request.method, 'post'); - expectBody(request.body, - """{"query":"test","clusterName":"theClusterName","page":5,"hitsPerPage":10}"""); - }, - ), - ); - - // setDictionarySettings - test( - 'get setDictionarySettings results with minimal parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.setDictionarySettings( - dictionarySettingsParams: DictionarySettingsParams( - disableStandardEntries: StandardEntries( - plurals: { - 'fr': false, - 'en': false, - 'ru': true, - }, - ), - ), - ), - intercept: (request) { - expectPath(request.path, '/1/dictionaries/*/settings'); - expect(request.method, 'put'); - expectBody(request.body, - """{"disableStandardEntries":{"plurals":{"fr":false,"en":false,"ru":true}}}"""); - }, - ), - ); - - // setDictionarySettings - test( - 'get setDictionarySettings results with all parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.setDictionarySettings( - dictionarySettingsParams: DictionarySettingsParams( - disableStandardEntries: StandardEntries( - plurals: { - 'fr': false, - 'en': false, - 'ru': true, - }, - stopwords: { - 'fr': false, - }, - compounds: { - 'ru': true, - }, - ), - ), - ), - intercept: (request) { - expectPath(request.path, '/1/dictionaries/*/settings'); - expect(request.method, 'put'); - expectBody(request.body, - """{"disableStandardEntries":{"plurals":{"fr":false,"en":false,"ru":true},"stopwords":{"fr":false},"compounds":{"ru":true}}}"""); - }, - ), - ); - - // setSettings - test( - 'setSettings with minimal parameters', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.setSettings( - indexName: "theIndexName", - indexSettings: IndexSettings( - paginationLimitedTo: 10, - ), - forwardToReplicas: true, - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/theIndexName/settings'); - expect(request.method, 'put'); - expectParams( - request.queryParameters, """{"forwardToReplicas":"true"}"""); - expectBody(request.body, """{"paginationLimitedTo":10}"""); - }, - ), - ); - - // setSettings - test( - 'setSettings allow boolean `typoTolerance`', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.setSettings( - indexName: "theIndexName", - indexSettings: IndexSettings( - typoTolerance: true, - ), - forwardToReplicas: true, - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/theIndexName/settings'); - expect(request.method, 'put'); - expectParams( - request.queryParameters, """{"forwardToReplicas":"true"}"""); - expectBody(request.body, """{"typoTolerance":true}"""); - }, - ), - ); - - // setSettings - test( - 'setSettings allow enum `typoTolerance`', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.setSettings( - indexName: "theIndexName", - indexSettings: IndexSettings( - typoTolerance: TypoToleranceEnum.fromJson("min"), - ), - forwardToReplicas: true, - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/theIndexName/settings'); - expect(request.method, 'put'); - expectParams( - request.queryParameters, """{"forwardToReplicas":"true"}"""); - expectBody(request.body, """{"typoTolerance":"min"}"""); - }, - ), - ); - - // setSettings - test( - 'setSettings allow boolean `ignorePlurals`', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.setSettings( - indexName: "theIndexName", - indexSettings: IndexSettings( - ignorePlurals: true, - ), - forwardToReplicas: true, - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/theIndexName/settings'); - expect(request.method, 'put'); - expectParams( - request.queryParameters, """{"forwardToReplicas":"true"}"""); - expectBody(request.body, """{"ignorePlurals":true}"""); - }, - ), - ); - - // setSettings - test( - 'setSettings allow list of string `ignorePlurals`', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.setSettings( - indexName: "theIndexName", - indexSettings: IndexSettings( - ignorePlurals: [ - "algolia", - ], - ), - forwardToReplicas: true, - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/theIndexName/settings'); - expect(request.method, 'put'); - expectParams( - request.queryParameters, """{"forwardToReplicas":"true"}"""); - expectBody(request.body, """{"ignorePlurals":["algolia"]}"""); - }, - ), - ); - - // setSettings - test( - 'setSettings allow boolean `removeStopWords`', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.setSettings( - indexName: "theIndexName", - indexSettings: IndexSettings( - removeStopWords: true, - ), - forwardToReplicas: true, - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/theIndexName/settings'); - expect(request.method, 'put'); - expectParams( - request.queryParameters, """{"forwardToReplicas":"true"}"""); - expectBody(request.body, """{"removeStopWords":true}"""); - }, - ), - ); - - // setSettings - test( - 'setSettings allow list of string `removeStopWords`', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.setSettings( - indexName: "theIndexName", - indexSettings: IndexSettings( - removeStopWords: [ - "algolia", - ], - ), - forwardToReplicas: true, - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/theIndexName/settings'); - expect(request.method, 'put'); - expectParams( - request.queryParameters, """{"forwardToReplicas":"true"}"""); - expectBody(request.body, """{"removeStopWords":["algolia"]}"""); - }, - ), - ); - - // setSettings - test( - 'setSettings allow boolean `distinct`', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.setSettings( - indexName: "theIndexName", - indexSettings: IndexSettings( - distinct: true, - ), - forwardToReplicas: true, - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/theIndexName/settings'); - expect(request.method, 'put'); - expectParams( - request.queryParameters, """{"forwardToReplicas":"true"}"""); - expectBody(request.body, """{"distinct":true}"""); - }, - ), - ); - - // setSettings - test( - 'setSettings allow integers for `distinct`', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.setSettings( - indexName: "theIndexName", - indexSettings: IndexSettings( - distinct: 1, - ), - forwardToReplicas: true, - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/theIndexName/settings'); - expect(request.method, 'put'); - expectParams( - request.queryParameters, """{"forwardToReplicas":"true"}"""); - expectBody(request.body, """{"distinct":1}"""); - }, - ), - ); - - // setSettings - test( - 'setSettings allow all `indexSettings`', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.setSettings( - indexName: "theIndexName", - indexSettings: IndexSettings( - advancedSyntax: true, - advancedSyntaxFeatures: [ - AdvancedSyntaxFeatures.fromJson("exactPhrase"), - ], - allowCompressionOfIntegerArray: true, - allowTyposOnNumericTokens: true, - alternativesAsExact: [ - AlternativesAsExact.fromJson("singleWordSynonym"), - ], - attributeCriteriaComputedByMinProximity: true, - attributeForDistinct: "test", - attributesForFaceting: [ - "algolia", - ], - attributesToHighlight: [ - "algolia", - ], - attributesToRetrieve: [ - "algolia", - ], - attributesToSnippet: [ - "algolia", - ], - attributesToTransliterate: [ - "algolia", - ], - camelCaseAttributes: [ - "algolia", - ], - customNormalization: { - 'algolia': { - 'aloglia': "aglolia", - }, - }, - customRanking: [ - "algolia", - ], - decompoundQuery: false, - decompoundedAttributes: { - 'algolia': "aloglia", - }, - disableExactOnAttributes: [ - "algolia", - ], - disablePrefixOnAttributes: [ - "algolia", - ], - disableTypoToleranceOnAttributes: [ - "algolia", - ], - disableTypoToleranceOnWords: [ - "algolia", - ], - distinct: 3, - enablePersonalization: true, - enableReRanking: false, - enableRules: true, - exactOnSingleWordQuery: ExactOnSingleWordQuery.fromJson("attribute"), - highlightPreTag: "", - highlightPostTag: "", - hitsPerPage: 10, - ignorePlurals: false, - indexLanguages: [ - "algolia", - ], - keepDiacriticsOnCharacters: "abc", - maxFacetHits: 20, - maxValuesPerFacet: 30, - minProximity: 6, - minWordSizefor1Typo: 5, - minWordSizefor2Typos: 11, - mode: Mode.fromJson("neuralSearch"), - numericAttributesForFiltering: [ - "algolia", - ], - optionalWords: [ - "myspace", - ], - paginationLimitedTo: 0, - queryLanguages: [ - "algolia", - ], - queryType: QueryType.fromJson("prefixLast"), - ranking: [ - "geo", - ], - reRankingApplyFilter: "mySearch:filters", - relevancyStrictness: 10, - removeStopWords: false, - removeWordsIfNoResults: RemoveWordsIfNoResults.fromJson("lastWords"), - renderingContent: RenderingContent( - facetOrdering: FacetOrdering( - facets: Facets( - order: [ - "a", - "b", - ], - ), - values: { - 'a': Value( - order: [ - "b", - ], - sortRemainingBy: SortRemainingBy.fromJson("count"), - ), - }, - ), - ), - replaceSynonymsInHighlight: true, - replicas: [ - "", - ], - responseFields: [ - "algolia", - ], - restrictHighlightAndSnippetArrays: true, - searchableAttributes: [ - "foo", - ], - semanticSearch: SemanticSearch( - eventSources: [ - "foo", - ], - ), - separatorsToIndex: "bar", - snippetEllipsisText: "---", - sortFacetValuesBy: "date", - typoTolerance: false, - unretrievableAttributes: [ - "foo", - ], - userData: { - 'user': "data", - }, - ), - ), - intercept: (request) { - expectPath(request.path, '/1/indexes/theIndexName/settings'); - expect(request.method, 'put'); - expectBody(request.body, - """{"advancedSyntax":true,"advancedSyntaxFeatures":["exactPhrase"],"allowCompressionOfIntegerArray":true,"allowTyposOnNumericTokens":true,"alternativesAsExact":["singleWordSynonym"],"attributeCriteriaComputedByMinProximity":true,"attributeForDistinct":"test","attributesForFaceting":["algolia"],"attributesToHighlight":["algolia"],"attributesToRetrieve":["algolia"],"attributesToSnippet":["algolia"],"attributesToTransliterate":["algolia"],"camelCaseAttributes":["algolia"],"customNormalization":{"algolia":{"aloglia":"aglolia"}},"customRanking":["algolia"],"decompoundQuery":false,"decompoundedAttributes":{"algolia":"aloglia"},"disableExactOnAttributes":["algolia"],"disablePrefixOnAttributes":["algolia"],"disableTypoToleranceOnAttributes":["algolia"],"disableTypoToleranceOnWords":["algolia"],"distinct":3,"enablePersonalization":true,"enableReRanking":false,"enableRules":true,"exactOnSingleWordQuery":"attribute","highlightPreTag":"","highlightPostTag":"","hitsPerPage":10,"ignorePlurals":false,"indexLanguages":["algolia"],"keepDiacriticsOnCharacters":"abc","maxFacetHits":20,"maxValuesPerFacet":30,"minProximity":6,"minWordSizefor1Typo":5,"minWordSizefor2Typos":11,"mode":"neuralSearch","numericAttributesForFiltering":["algolia"],"optionalWords":["myspace"],"paginationLimitedTo":0,"queryLanguages":["algolia"],"queryType":"prefixLast","ranking":["geo"],"reRankingApplyFilter":"mySearch:filters","relevancyStrictness":10,"removeStopWords":false,"removeWordsIfNoResults":"lastWords","renderingContent":{"facetOrdering":{"facets":{"order":["a","b"]},"values":{"a":{"order":["b"],"sortRemainingBy":"count"}}}},"replaceSynonymsInHighlight":true,"replicas":[""],"responseFields":["algolia"],"restrictHighlightAndSnippetArrays":true,"searchableAttributes":["foo"],"semanticSearch":{"eventSources":["foo"]},"separatorsToIndex":"bar","snippetEllipsisText":"---","sortFacetValuesBy":"date","typoTolerance":false,"unretrievableAttributes":["foo"],"userData":{"user":"data"}}"""); - }, - ), - ); - - // updateApiKey - test( - 'updateApiKey0', - () => runTest( - builder: (requester) => SearchClient( - appId: 'appId', - apiKey: 'apiKey', - options: ClientOptions(requester: requester), - ), - call: (client) => client.updateApiKey( - key: "myApiKey", - apiKey: ApiKey( - acl: [ - Acl.fromJson("search"), - Acl.fromJson("addObject"), - ], - validity: 300, - maxQueriesPerIPPerHour: 100, - maxHitsPerQuery: 20, - ), - ), - intercept: (request) { - expectPath(request.path, '/1/keys/myApiKey'); - expect(request.method, 'put'); - expectBody(request.body, - """{"acl":["search","addObject"],"validity":300,"maxQueriesPerIPPerHour":100,"maxHitsPerQuery":20}"""); - }, - ), - ); -} diff --git a/tests/output/go/tests/methods/requests/analytics_test.go b/tests/output/go/tests/methods/requests/analytics_test.go deleted file mode 100644 index 192430db0d..0000000000 --- a/tests/output/go/tests/methods/requests/analytics_test.go +++ /dev/null @@ -1,1565 +0,0 @@ -package tests - -import ( - "encoding/json" - "net/url" - "testing" - - "github.com/kinbiko/jsonassert" - "github.com/stretchr/testify/require" - - "github.com/algolia/algoliasearch-client-go/v4/algolia/analytics" -) - -func createAnalyticsClient() (*analytics.APIClient, *echoRequester) { - echo := &echoRequester{} - cfg := analytics.Configuration{ - AppID: "appID", - ApiKey: "apiKey", - Region: analytics.US, - Requester: echo, - } - client := analytics.NewClientWithConfig(cfg) - - // so that the linter doesn't complain - _ = jsonassert.New(nil) - - return client, echo -} - -func TestAnalytics_CustomDelete(t *testing.T) { - client, echo := createAnalyticsClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "allow del method for a custom path with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/minimal"}` - req := analytics.ApiCustomDeleteRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomDelete(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/minimal") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "DELETE", echo.method) - - require.Nil(t, echo.body) - }, - }, - { - name: "allow del method for a custom path with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"}}` - req := analytics.ApiCustomDeleteRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomDelete(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/all") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "DELETE", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestAnalytics_CustomGet(t *testing.T) { - client, echo := createAnalyticsClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "allow get method for a custom path with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/minimal"}` - req := analytics.ApiCustomGetRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomGet(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/minimal") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - { - name: "allow get method for a custom path with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"}}` - req := analytics.ApiCustomGetRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomGet(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/all") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestAnalytics_CustomPost(t *testing.T) { - client, echo := createAnalyticsClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "allow post method for a custom path with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/minimal"}` - req := analytics.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomPost(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/minimal") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{}`) - }, - }, - { - name: "allow post method for a custom path with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"},"body":{"body":"parameters"}}` - req := analytics.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomPost(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/all") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"body":"parameters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions can override default query parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := analytics.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []analytics.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"myQueryParameter"}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, analytics.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"myQueryParameter"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions merges query parameters with default ones", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := analytics.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []analytics.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"query2":"myQueryParameter"}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, analytics.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","query2":"myQueryParameter"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions can override default headers", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := analytics.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []analytics.Option - requestOptionHeaders := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &requestOptionHeaders)) - for k, v := range requestOptionHeaders { - opts = append(opts, analytics.HeaderParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - headers := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &headers)) - for k, v := range headers { - require.Equal(t, v, echo.header.Get(k)) - } - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions merges headers with default ones", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := analytics.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []analytics.Option - requestOptionHeaders := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &requestOptionHeaders)) - for k, v := range requestOptionHeaders { - opts = append(opts, analytics.HeaderParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - headers := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &headers)) - for k, v := range headers { - require.Equal(t, v, echo.header.Get(k)) - } - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions queryParameters accepts booleans", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := analytics.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []analytics.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"isItWorking":true}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, analytics.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","isItWorking":"true"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions queryParameters accepts integers", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := analytics.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []analytics.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"myParam":2}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, analytics.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"2"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions queryParameters accepts list of string", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := analytics.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []analytics.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"myParam":["c","d"]}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, analytics.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"c,d"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions queryParameters accepts list of booleans", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := analytics.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []analytics.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"myParam":[true,true,false]}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, analytics.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"true,true,false"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions queryParameters accepts list of integers", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := analytics.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []analytics.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"myParam":[1,2]}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, analytics.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"1,2"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestAnalytics_CustomPut(t *testing.T) { - client, echo := createAnalyticsClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "allow put method for a custom path with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/minimal"}` - req := analytics.ApiCustomPutRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomPut(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/minimal") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "PUT", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{}`) - }, - }, - { - name: "allow put method for a custom path with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"},"body":{"body":"parameters"}}` - req := analytics.ApiCustomPutRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomPut(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/all") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "PUT", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"body":"parameters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestAnalytics_GetAverageClickPosition(t *testing.T) { - client, echo := createAnalyticsClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "get getAverageClickPosition with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"index":"index"}` - req := analytics.ApiGetAverageClickPositionRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetAverageClickPosition(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/2/clicks/averageClickPosition") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"index":"index"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "get getAverageClickPosition with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}` - req := analytics.ApiGetAverageClickPositionRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetAverageClickPosition(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/2/clicks/averageClickPosition") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestAnalytics_GetClickPositions(t *testing.T) { - client, echo := createAnalyticsClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "get getClickPositions with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"index":"index"}` - req := analytics.ApiGetClickPositionsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetClickPositions(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/2/clicks/positions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"index":"index"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "get getClickPositions with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}` - req := analytics.ApiGetClickPositionsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetClickPositions(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/2/clicks/positions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestAnalytics_GetClickThroughRate(t *testing.T) { - client, echo := createAnalyticsClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "get getClickThroughRate with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"index":"index"}` - req := analytics.ApiGetClickThroughRateRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetClickThroughRate(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/2/clicks/clickThroughRate") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"index":"index"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "get getClickThroughRate with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}` - req := analytics.ApiGetClickThroughRateRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetClickThroughRate(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/2/clicks/clickThroughRate") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestAnalytics_GetConversationRate(t *testing.T) { - client, echo := createAnalyticsClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "get getConversationRate with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"index":"index"}` - req := analytics.ApiGetConversationRateRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetConversationRate(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/2/conversions/conversionRate") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"index":"index"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "get getConversationRate with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}` - req := analytics.ApiGetConversationRateRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetConversationRate(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/2/conversions/conversionRate") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestAnalytics_GetNoClickRate(t *testing.T) { - client, echo := createAnalyticsClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "get getNoClickRate with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"index":"index"}` - req := analytics.ApiGetNoClickRateRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetNoClickRate(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/2/searches/noClickRate") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"index":"index"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "get getNoClickRate with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}` - req := analytics.ApiGetNoClickRateRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetNoClickRate(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/2/searches/noClickRate") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestAnalytics_GetNoResultsRate(t *testing.T) { - client, echo := createAnalyticsClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "get getNoResultsRate with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"index":"index"}` - req := analytics.ApiGetNoResultsRateRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetNoResultsRate(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/2/searches/noResultRate") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"index":"index"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "get getNoResultsRate with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}` - req := analytics.ApiGetNoResultsRateRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetNoResultsRate(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/2/searches/noResultRate") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestAnalytics_GetSearchesCount(t *testing.T) { - client, echo := createAnalyticsClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "get getSearchesCount with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"index":"index"}` - req := analytics.ApiGetSearchesCountRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetSearchesCount(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/2/searches/count") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"index":"index"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "get getSearchesCount with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}` - req := analytics.ApiGetSearchesCountRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetSearchesCount(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/2/searches/count") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestAnalytics_GetSearchesNoClicks(t *testing.T) { - client, echo := createAnalyticsClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "get getSearchesNoClicks with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"index":"index"}` - req := analytics.ApiGetSearchesNoClicksRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetSearchesNoClicks(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/2/searches/noClicks") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"index":"index"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "get getSearchesNoClicks with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","limit":21,"offset":42,"tags":"tag"}` - req := analytics.ApiGetSearchesNoClicksRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetSearchesNoClicks(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/2/searches/noClicks") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestAnalytics_GetSearchesNoResults(t *testing.T) { - client, echo := createAnalyticsClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "get getSearchesNoResults with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"index":"index"}` - req := analytics.ApiGetSearchesNoResultsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetSearchesNoResults(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/2/searches/noResults") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"index":"index"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "get getSearchesNoResults with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","limit":21,"offset":42,"tags":"tag"}` - req := analytics.ApiGetSearchesNoResultsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetSearchesNoResults(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/2/searches/noResults") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestAnalytics_GetStatus(t *testing.T) { - client, echo := createAnalyticsClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "get getStatus with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"index":"index"}` - req := analytics.ApiGetStatusRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetStatus(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/2/status") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"index":"index"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestAnalytics_GetTopCountries(t *testing.T) { - client, echo := createAnalyticsClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "get getTopCountries with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"index":"index"}` - req := analytics.ApiGetTopCountriesRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetTopCountries(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/2/countries") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"index":"index"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "get getTopCountries with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","limit":21,"offset":42,"tags":"tag"}` - req := analytics.ApiGetTopCountriesRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetTopCountries(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/2/countries") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestAnalytics_GetTopFilterAttributes(t *testing.T) { - client, echo := createAnalyticsClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "get getTopFilterAttributes with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"index":"index"}` - req := analytics.ApiGetTopFilterAttributesRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetTopFilterAttributes(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/2/filters") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"index":"index"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "get getTopFilterAttributes with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"index":"index","search":"mySearch","startDate":"1999-09-19","endDate":"2001-01-01","limit":21,"offset":42,"tags":"tag"}` - req := analytics.ApiGetTopFilterAttributesRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetTopFilterAttributes(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/2/filters") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"index":"index","search":"mySearch","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestAnalytics_GetTopFilterForAttribute(t *testing.T) { - client, echo := createAnalyticsClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "get getTopFilterForAttribute with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"attribute":"myAttribute","index":"index"}` - req := analytics.ApiGetTopFilterForAttributeRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetTopFilterForAttribute(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/2/filters/myAttribute") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"index":"index"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "get getTopFilterForAttribute with minimal parameters and multiple attributes", - testFunc: func(t *testing.T) { - parametersStr := `{"attribute":"myAttribute1,myAttribute2","index":"index"}` - req := analytics.ApiGetTopFilterForAttributeRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetTopFilterForAttribute(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/2/filters/myAttribute1%2CmyAttribute2") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"index":"index"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "get getTopFilterForAttribute with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"attribute":"myAttribute","index":"index","search":"mySearch","startDate":"1999-09-19","endDate":"2001-01-01","limit":21,"offset":42,"tags":"tag"}` - req := analytics.ApiGetTopFilterForAttributeRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetTopFilterForAttribute(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/2/filters/myAttribute") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"index":"index","search":"mySearch","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "get getTopFilterForAttribute with all parameters and multiple attributes", - testFunc: func(t *testing.T) { - parametersStr := `{"attribute":"myAttribute1,myAttribute2","index":"index","search":"mySearch","startDate":"1999-09-19","endDate":"2001-01-01","limit":21,"offset":42,"tags":"tag"}` - req := analytics.ApiGetTopFilterForAttributeRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetTopFilterForAttribute(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/2/filters/myAttribute1%2CmyAttribute2") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"index":"index","search":"mySearch","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestAnalytics_GetTopFiltersNoResults(t *testing.T) { - client, echo := createAnalyticsClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "get getTopFiltersNoResults with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"index":"index"}` - req := analytics.ApiGetTopFiltersNoResultsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetTopFiltersNoResults(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/2/filters/noResults") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"index":"index"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "get getTopFiltersNoResults with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"index":"index","search":"mySearch","startDate":"1999-09-19","endDate":"2001-01-01","limit":21,"offset":42,"tags":"tag"}` - req := analytics.ApiGetTopFiltersNoResultsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetTopFiltersNoResults(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/2/filters/noResults") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"index":"index","search":"mySearch","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestAnalytics_GetTopHits(t *testing.T) { - client, echo := createAnalyticsClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "get getTopHits with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"index":"index"}` - req := analytics.ApiGetTopHitsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetTopHits(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/2/hits") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"index":"index"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "get getTopHits with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"index":"index","search":"mySearch","clickAnalytics":true,"startDate":"1999-09-19","endDate":"2001-01-01","limit":21,"offset":42,"tags":"tag"}` - req := analytics.ApiGetTopHitsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetTopHits(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/2/hits") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"index":"index","search":"mySearch","clickAnalytics":"true","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestAnalytics_GetTopSearches(t *testing.T) { - client, echo := createAnalyticsClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "get getTopSearches with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"index":"index"}` - req := analytics.ApiGetTopSearchesRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetTopSearches(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/2/searches") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"index":"index"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "get getTopSearches with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"index":"index","clickAnalytics":true,"startDate":"1999-09-19","endDate":"2001-01-01","orderBy":"searchCount","direction":"asc","limit":21,"offset":42,"tags":"tag"}` - req := analytics.ApiGetTopSearchesRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetTopSearches(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/2/searches") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"index":"index","clickAnalytics":"true","startDate":"1999-09-19","endDate":"2001-01-01","orderBy":"searchCount","direction":"asc","limit":"21","offset":"42","tags":"tag"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestAnalytics_GetUsersCount(t *testing.T) { - client, echo := createAnalyticsClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "get getUsersCount with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"index":"index"}` - req := analytics.ApiGetUsersCountRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetUsersCount(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/2/users/count") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"index":"index"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "get getUsersCount with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}` - req := analytics.ApiGetUsersCountRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetUsersCount(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/2/users/count") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} diff --git a/tests/output/go/tests/methods/requests/common.go b/tests/output/go/tests/methods/requests/common.go deleted file mode 100644 index 48c4da57d8..0000000000 --- a/tests/output/go/tests/methods/requests/common.go +++ /dev/null @@ -1,35 +0,0 @@ -package tests - -import ( - "bytes" - "io" - "net/http" - "net/url" -) - -type echoRequester struct { - path string - method string - body *string - header http.Header - query url.Values -} - -func (e *echoRequester) Request(req *http.Request) (*http.Response, error) { - e.path = req.URL.Path - e.method = req.Method - e.header = req.Header - e.query = req.URL.Query() - if req.Body != nil { - body, _ := io.ReadAll(req.Body) - strBody := string(body) - e.body = &strBody - } else { - e.body = nil - } - - return &http.Response{ - StatusCode: 200, - Body: io.NopCloser(bytes.NewBufferString("")), - }, nil -} diff --git a/tests/output/go/tests/methods/requests/ingestion_test.go b/tests/output/go/tests/methods/requests/ingestion_test.go deleted file mode 100644 index ee9c98e1f9..0000000000 --- a/tests/output/go/tests/methods/requests/ingestion_test.go +++ /dev/null @@ -1,1678 +0,0 @@ -package tests - -import ( - "encoding/json" - "net/url" - "testing" - - "github.com/kinbiko/jsonassert" - "github.com/stretchr/testify/require" - - "github.com/algolia/algoliasearch-client-go/v4/algolia/ingestion" -) - -func createIngestionClient() (*ingestion.APIClient, *echoRequester) { - echo := &echoRequester{} - cfg := ingestion.Configuration{ - AppID: "appID", - ApiKey: "apiKey", - Region: ingestion.US, - Requester: echo, - } - client := ingestion.NewClientWithConfig(cfg) - - // so that the linter doesn't complain - _ = jsonassert.New(nil) - - return client, echo -} - -func TestIngestion_CreateAuthentication(t *testing.T) { - client, echo := createIngestionClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "createAuthenticationOAuth", - testFunc: func(t *testing.T) { - parametersStr := `{"type":"oauth","name":"authName","input":{"url":"http://test.oauth","client_id":"myID","client_secret":"mySecret"}}` - req := ingestion.ApiCreateAuthenticationRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CreateAuthentication(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/authentications") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"type":"oauth","name":"authName","input":{"url":"http://test.oauth","client_id":"myID","client_secret":"mySecret"}}`) - }, - }, - { - name: "createAuthenticationAlgolia", - testFunc: func(t *testing.T) { - parametersStr := `{"type":"algolia","name":"authName","input":{"appID":"myappID","apiKey":"randomApiKey"}}` - req := ingestion.ApiCreateAuthenticationRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CreateAuthentication(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/authentications") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"type":"algolia","name":"authName","input":{"appID":"myappID","apiKey":"randomApiKey"}}`) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestIngestion_CreateDestination(t *testing.T) { - client, echo := createIngestionClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "createDestination", - testFunc: func(t *testing.T) { - parametersStr := `{"type":"search","name":"destinationName","input":{"indexPrefix":"prefix_"},"authenticationID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}` - req := ingestion.ApiCreateDestinationRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CreateDestination(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/destinations") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"type":"search","name":"destinationName","input":{"indexPrefix":"prefix_"},"authenticationID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}`) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestIngestion_CreateSource(t *testing.T) { - client, echo := createIngestionClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "createSource", - testFunc: func(t *testing.T) { - parametersStr := `{"type":"commercetools","name":"sourceName","input":{"storeKeys":["myStore"],"locales":["de"],"url":"http://commercetools.com","projectKey":"keyID"},"authenticationID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}` - req := ingestion.ApiCreateSourceRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CreateSource(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/sources") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"type":"commercetools","name":"sourceName","input":{"storeKeys":["myStore"],"locales":["de"],"url":"http://commercetools.com","projectKey":"keyID"},"authenticationID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}`) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestIngestion_CreateTask(t *testing.T) { - client, echo := createIngestionClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "createTaskOnDemand", - testFunc: func(t *testing.T) { - parametersStr := `{"sourceID":"search","destinationID":"destinationName","trigger":{"type":"onDemand"},"action":"replace"}` - req := ingestion.ApiCreateTaskRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CreateTask(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/tasks") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"sourceID":"search","destinationID":"destinationName","trigger":{"type":"onDemand"},"action":"replace"}`) - }, - }, - { - name: "createTaskSchedule", - testFunc: func(t *testing.T) { - parametersStr := `{"sourceID":"search","destinationID":"destinationName","trigger":{"type":"schedule","cron":"* * * * *"},"action":"replace"}` - req := ingestion.ApiCreateTaskRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CreateTask(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/tasks") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"sourceID":"search","destinationID":"destinationName","trigger":{"type":"schedule","cron":"* * * * *"},"action":"replace"}`) - }, - }, - { - name: "createTaskSubscription", - testFunc: func(t *testing.T) { - parametersStr := `{"sourceID":"search","destinationID":"destinationName","trigger":{"type":"onDemand"},"action":"replace"}` - req := ingestion.ApiCreateTaskRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CreateTask(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/tasks") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"sourceID":"search","destinationID":"destinationName","trigger":{"type":"onDemand"},"action":"replace"}`) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestIngestion_CustomDelete(t *testing.T) { - client, echo := createIngestionClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "allow del method for a custom path with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/minimal"}` - req := ingestion.ApiCustomDeleteRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomDelete(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/minimal") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "DELETE", echo.method) - - require.Nil(t, echo.body) - }, - }, - { - name: "allow del method for a custom path with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"}}` - req := ingestion.ApiCustomDeleteRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomDelete(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/all") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "DELETE", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestIngestion_CustomGet(t *testing.T) { - client, echo := createIngestionClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "allow get method for a custom path with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/minimal"}` - req := ingestion.ApiCustomGetRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomGet(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/minimal") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - { - name: "allow get method for a custom path with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"}}` - req := ingestion.ApiCustomGetRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomGet(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/all") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestIngestion_CustomPost(t *testing.T) { - client, echo := createIngestionClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "allow post method for a custom path with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/minimal"}` - req := ingestion.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomPost(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/minimal") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{}`) - }, - }, - { - name: "allow post method for a custom path with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"},"body":{"body":"parameters"}}` - req := ingestion.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomPost(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/all") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"body":"parameters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions can override default query parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := ingestion.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []ingestion.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"myQueryParameter"}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, ingestion.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"myQueryParameter"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions merges query parameters with default ones", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := ingestion.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []ingestion.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"query2":"myQueryParameter"}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, ingestion.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","query2":"myQueryParameter"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions can override default headers", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := ingestion.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []ingestion.Option - requestOptionHeaders := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &requestOptionHeaders)) - for k, v := range requestOptionHeaders { - opts = append(opts, ingestion.HeaderParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - headers := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &headers)) - for k, v := range headers { - require.Equal(t, v, echo.header.Get(k)) - } - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions merges headers with default ones", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := ingestion.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []ingestion.Option - requestOptionHeaders := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &requestOptionHeaders)) - for k, v := range requestOptionHeaders { - opts = append(opts, ingestion.HeaderParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - headers := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &headers)) - for k, v := range headers { - require.Equal(t, v, echo.header.Get(k)) - } - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions queryParameters accepts booleans", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := ingestion.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []ingestion.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"isItWorking":true}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, ingestion.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","isItWorking":"true"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions queryParameters accepts integers", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := ingestion.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []ingestion.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"myParam":2}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, ingestion.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"2"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions queryParameters accepts list of string", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := ingestion.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []ingestion.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"myParam":["c","d"]}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, ingestion.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"c,d"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions queryParameters accepts list of booleans", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := ingestion.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []ingestion.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"myParam":[true,true,false]}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, ingestion.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"true,true,false"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions queryParameters accepts list of integers", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := ingestion.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []ingestion.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"myParam":[1,2]}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, ingestion.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"1,2"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestIngestion_CustomPut(t *testing.T) { - client, echo := createIngestionClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "allow put method for a custom path with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/minimal"}` - req := ingestion.ApiCustomPutRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomPut(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/minimal") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "PUT", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{}`) - }, - }, - { - name: "allow put method for a custom path with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"},"body":{"body":"parameters"}}` - req := ingestion.ApiCustomPutRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomPut(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/all") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "PUT", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"body":"parameters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestIngestion_DeleteAuthentication(t *testing.T) { - client, echo := createIngestionClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "deleteAuthentication", - testFunc: func(t *testing.T) { - parametersStr := `{"authenticationID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}` - req := ingestion.ApiDeleteAuthenticationRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.DeleteAuthentication(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/authentications/6c02aeb1-775e-418e-870b-1faccd4b2c0f") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "DELETE", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestIngestion_DeleteDestination(t *testing.T) { - client, echo := createIngestionClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "deleteDestination", - testFunc: func(t *testing.T) { - parametersStr := `{"destinationID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}` - req := ingestion.ApiDeleteDestinationRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.DeleteDestination(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/destinations/6c02aeb1-775e-418e-870b-1faccd4b2c0f") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "DELETE", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestIngestion_DeleteSource(t *testing.T) { - client, echo := createIngestionClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "deleteSource", - testFunc: func(t *testing.T) { - parametersStr := `{"sourceID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}` - req := ingestion.ApiDeleteSourceRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.DeleteSource(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "DELETE", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestIngestion_DeleteTask(t *testing.T) { - client, echo := createIngestionClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "deleteTask", - testFunc: func(t *testing.T) { - parametersStr := `{"taskID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}` - req := ingestion.ApiDeleteTaskRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.DeleteTask(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "DELETE", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestIngestion_DisableTask(t *testing.T) { - client, echo := createIngestionClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "disableTask", - testFunc: func(t *testing.T) { - parametersStr := `{"taskID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}` - req := ingestion.ApiDisableTaskRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.DisableTask(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f/disable") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "PUT", echo.method) - - require.Empty(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestIngestion_EnableTask(t *testing.T) { - client, echo := createIngestionClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "enableTask", - testFunc: func(t *testing.T) { - parametersStr := `{"taskID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}` - req := ingestion.ApiEnableTaskRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.EnableTask(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f/enable") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "PUT", echo.method) - - require.Empty(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestIngestion_GetAuthentication(t *testing.T) { - client, echo := createIngestionClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "getAuthentication", - testFunc: func(t *testing.T) { - parametersStr := `{"authenticationID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}` - req := ingestion.ApiGetAuthenticationRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetAuthentication(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/authentications/6c02aeb1-775e-418e-870b-1faccd4b2c0f") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestIngestion_GetAuthentications(t *testing.T) { - client, echo := createIngestionClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "getAuthentications", - testFunc: func(t *testing.T) { - parametersStr := `{}` - req := ingestion.ApiGetAuthenticationsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetAuthentications(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/authentications") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestIngestion_GetDestination(t *testing.T) { - client, echo := createIngestionClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "getDestination", - testFunc: func(t *testing.T) { - parametersStr := `{"destinationID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}` - req := ingestion.ApiGetDestinationRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetDestination(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/destinations/6c02aeb1-775e-418e-870b-1faccd4b2c0f") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestIngestion_GetDestinations(t *testing.T) { - client, echo := createIngestionClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "getDestinations", - testFunc: func(t *testing.T) { - parametersStr := `{}` - req := ingestion.ApiGetDestinationsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetDestinations(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/destinations") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestIngestion_GetDockerSourceStreams(t *testing.T) { - client, echo := createIngestionClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "getDockerSourceStreams", - testFunc: func(t *testing.T) { - parametersStr := `{"sourceID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}` - req := ingestion.ApiGetDockerSourceStreamsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetDockerSourceStreams(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f/discover") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestIngestion_GetEvent(t *testing.T) { - client, echo := createIngestionClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "getEvent", - testFunc: func(t *testing.T) { - parametersStr := `{"runID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f","eventID":"6c02aeb1-775e-418e-870b-1faccd4b2c0c"}` - req := ingestion.ApiGetEventRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetEvent(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/runs/6c02aeb1-775e-418e-870b-1faccd4b2c0f/events/6c02aeb1-775e-418e-870b-1faccd4b2c0c") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestIngestion_GetEvents(t *testing.T) { - client, echo := createIngestionClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "getEvents", - testFunc: func(t *testing.T) { - parametersStr := `{"runID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}` - req := ingestion.ApiGetEventsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetEvents(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/runs/6c02aeb1-775e-418e-870b-1faccd4b2c0f/events") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestIngestion_GetRun(t *testing.T) { - client, echo := createIngestionClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "getRun", - testFunc: func(t *testing.T) { - parametersStr := `{"runID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}` - req := ingestion.ApiGetRunRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetRun(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/runs/6c02aeb1-775e-418e-870b-1faccd4b2c0f") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestIngestion_GetRuns(t *testing.T) { - client, echo := createIngestionClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "getRuns", - testFunc: func(t *testing.T) { - parametersStr := `{}` - req := ingestion.ApiGetRunsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetRuns(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/runs") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestIngestion_GetSource(t *testing.T) { - client, echo := createIngestionClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "getSource", - testFunc: func(t *testing.T) { - parametersStr := `{"sourceID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}` - req := ingestion.ApiGetSourceRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetSource(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestIngestion_GetSources(t *testing.T) { - client, echo := createIngestionClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "getSources", - testFunc: func(t *testing.T) { - parametersStr := `{}` - req := ingestion.ApiGetSourcesRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetSources(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/sources") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestIngestion_GetTask(t *testing.T) { - client, echo := createIngestionClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "getTask", - testFunc: func(t *testing.T) { - parametersStr := `{"taskID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}` - req := ingestion.ApiGetTaskRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetTask(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestIngestion_GetTasks(t *testing.T) { - client, echo := createIngestionClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "getTasks", - testFunc: func(t *testing.T) { - parametersStr := `{}` - req := ingestion.ApiGetTasksRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetTasks(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/tasks") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestIngestion_RunTask(t *testing.T) { - client, echo := createIngestionClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "runTask", - testFunc: func(t *testing.T) { - parametersStr := `{"taskID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}` - req := ingestion.ApiRunTaskRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.RunTask(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f/run") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - require.Empty(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestIngestion_SearchAuthentications(t *testing.T) { - client, echo := createIngestionClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "searchAuthentications", - testFunc: func(t *testing.T) { - parametersStr := `{"authenticationIDs":["6c02aeb1-775e-418e-870b-1faccd4b2c0f","947ac9c4-7e58-4c87-b1e7-14a68e99699a"]}` - req := ingestion.ApiSearchAuthenticationsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.SearchAuthentications(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/authentications/search") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"authenticationIDs":["6c02aeb1-775e-418e-870b-1faccd4b2c0f","947ac9c4-7e58-4c87-b1e7-14a68e99699a"]}`) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestIngestion_SearchDestinations(t *testing.T) { - client, echo := createIngestionClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "searchDestinations", - testFunc: func(t *testing.T) { - parametersStr := `{"destinationIDs":["6c02aeb1-775e-418e-870b-1faccd4b2c0f","947ac9c4-7e58-4c87-b1e7-14a68e99699a"]}` - req := ingestion.ApiSearchDestinationsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.SearchDestinations(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/destinations/search") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"destinationIDs":["6c02aeb1-775e-418e-870b-1faccd4b2c0f","947ac9c4-7e58-4c87-b1e7-14a68e99699a"]}`) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestIngestion_SearchSources(t *testing.T) { - client, echo := createIngestionClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "searchSources", - testFunc: func(t *testing.T) { - parametersStr := `{"sourceIDs":["6c02aeb1-775e-418e-870b-1faccd4b2c0f","947ac9c4-7e58-4c87-b1e7-14a68e99699a"]}` - req := ingestion.ApiSearchSourcesRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.SearchSources(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/sources/search") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"sourceIDs":["6c02aeb1-775e-418e-870b-1faccd4b2c0f","947ac9c4-7e58-4c87-b1e7-14a68e99699a"]}`) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestIngestion_SearchTasks(t *testing.T) { - client, echo := createIngestionClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "searchTasks", - testFunc: func(t *testing.T) { - parametersStr := `{"taskIDs":["6c02aeb1-775e-418e-870b-1faccd4b2c0f","947ac9c4-7e58-4c87-b1e7-14a68e99699a"]}` - req := ingestion.ApiSearchTasksRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.SearchTasks(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/tasks/search") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"taskIDs":["6c02aeb1-775e-418e-870b-1faccd4b2c0f","947ac9c4-7e58-4c87-b1e7-14a68e99699a"]}`) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestIngestion_TriggerDockerSourceDiscover(t *testing.T) { - client, echo := createIngestionClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "triggerDockerSourceDiscover", - testFunc: func(t *testing.T) { - parametersStr := `{"sourceID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}` - req := ingestion.ApiTriggerDockerSourceDiscoverRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.TriggerDockerSourceDiscover(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f/discover") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - require.Empty(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestIngestion_UpdateAuthentication(t *testing.T) { - client, echo := createIngestionClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "updateAuthentication", - testFunc: func(t *testing.T) { - parametersStr := `{"authenticationID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f","authenticationUpdate":{"name":"newName"}}` - req := ingestion.ApiUpdateAuthenticationRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.UpdateAuthentication(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/authentications/6c02aeb1-775e-418e-870b-1faccd4b2c0f") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "PATCH", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"name":"newName"}`) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestIngestion_UpdateDestination(t *testing.T) { - client, echo := createIngestionClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "updateDestination", - testFunc: func(t *testing.T) { - parametersStr := `{"destinationID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f","destinationUpdate":{"name":"newName"}}` - req := ingestion.ApiUpdateDestinationRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.UpdateDestination(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/destinations/6c02aeb1-775e-418e-870b-1faccd4b2c0f") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "PATCH", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"name":"newName"}`) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestIngestion_UpdateSource(t *testing.T) { - client, echo := createIngestionClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "updateSource", - testFunc: func(t *testing.T) { - parametersStr := `{"sourceID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f","sourceUpdate":{"name":"newName"}}` - req := ingestion.ApiUpdateSourceRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.UpdateSource(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "PATCH", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"name":"newName"}`) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestIngestion_UpdateTask(t *testing.T) { - client, echo := createIngestionClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "updateTask", - testFunc: func(t *testing.T) { - parametersStr := `{"taskID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f","taskUpdate":{"enabled":false}}` - req := ingestion.ApiUpdateTaskRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.UpdateTask(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "PATCH", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"enabled":false}`) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} diff --git a/tests/output/go/tests/methods/requests/insights_test.go b/tests/output/go/tests/methods/requests/insights_test.go deleted file mode 100644 index 0fec28a03c..0000000000 --- a/tests/output/go/tests/methods/requests/insights_test.go +++ /dev/null @@ -1,629 +0,0 @@ -package tests - -import ( - "encoding/json" - "net/url" - "testing" - - "github.com/kinbiko/jsonassert" - "github.com/stretchr/testify/require" - - "github.com/algolia/algoliasearch-client-go/v4/algolia/insights" -) - -func createInsightsClient() (*insights.APIClient, *echoRequester) { - echo := &echoRequester{} - cfg := insights.Configuration{ - AppID: "appID", - ApiKey: "apiKey", - Region: insights.US, - Requester: echo, - } - client := insights.NewClientWithConfig(cfg) - - // so that the linter doesn't complain - _ = jsonassert.New(nil) - - return client, echo -} - -func TestInsights_CustomDelete(t *testing.T) { - client, echo := createInsightsClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "allow del method for a custom path with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/minimal"}` - req := insights.ApiCustomDeleteRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomDelete(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/minimal") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "DELETE", echo.method) - - require.Nil(t, echo.body) - }, - }, - { - name: "allow del method for a custom path with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"}}` - req := insights.ApiCustomDeleteRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomDelete(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/all") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "DELETE", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestInsights_CustomGet(t *testing.T) { - client, echo := createInsightsClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "allow get method for a custom path with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/minimal"}` - req := insights.ApiCustomGetRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomGet(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/minimal") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - { - name: "allow get method for a custom path with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"}}` - req := insights.ApiCustomGetRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomGet(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/all") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestInsights_CustomPost(t *testing.T) { - client, echo := createInsightsClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "allow post method for a custom path with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/minimal"}` - req := insights.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomPost(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/minimal") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{}`) - }, - }, - { - name: "allow post method for a custom path with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"},"body":{"body":"parameters"}}` - req := insights.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomPost(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/all") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"body":"parameters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions can override default query parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := insights.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []insights.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"myQueryParameter"}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, insights.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"myQueryParameter"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions merges query parameters with default ones", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := insights.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []insights.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"query2":"myQueryParameter"}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, insights.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","query2":"myQueryParameter"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions can override default headers", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := insights.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []insights.Option - requestOptionHeaders := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &requestOptionHeaders)) - for k, v := range requestOptionHeaders { - opts = append(opts, insights.HeaderParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - headers := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &headers)) - for k, v := range headers { - require.Equal(t, v, echo.header.Get(k)) - } - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions merges headers with default ones", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := insights.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []insights.Option - requestOptionHeaders := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &requestOptionHeaders)) - for k, v := range requestOptionHeaders { - opts = append(opts, insights.HeaderParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - headers := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &headers)) - for k, v := range headers { - require.Equal(t, v, echo.header.Get(k)) - } - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions queryParameters accepts booleans", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := insights.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []insights.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"isItWorking":true}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, insights.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","isItWorking":"true"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions queryParameters accepts integers", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := insights.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []insights.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"myParam":2}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, insights.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"2"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions queryParameters accepts list of string", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := insights.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []insights.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"myParam":["c","d"]}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, insights.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"c,d"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions queryParameters accepts list of booleans", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := insights.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []insights.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"myParam":[true,true,false]}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, insights.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"true,true,false"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions queryParameters accepts list of integers", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := insights.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []insights.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"myParam":[1,2]}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, insights.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"1,2"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestInsights_CustomPut(t *testing.T) { - client, echo := createInsightsClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "allow put method for a custom path with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/minimal"}` - req := insights.ApiCustomPutRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomPut(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/minimal") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "PUT", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{}`) - }, - }, - { - name: "allow put method for a custom path with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"},"body":{"body":"parameters"}}` - req := insights.ApiCustomPutRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomPut(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/all") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "PUT", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"body":"parameters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestInsights_PushEvents(t *testing.T) { - client, echo := createInsightsClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "pushEvents0", - testFunc: func(t *testing.T) { - parametersStr := `{"events":[{"eventType":"click","eventName":"Product Clicked","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"queryID":"43b15df305339e827f0ac0bdc5ebcaa7","positions":[7,6]}]}` - req := insights.ApiPushEventsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.PushEvents(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/events") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"events":[{"eventType":"click","eventName":"Product Clicked","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"queryID":"43b15df305339e827f0ac0bdc5ebcaa7","positions":[7,6]}]}`) - }, - }, - { - name: "Many events type", - testFunc: func(t *testing.T) { - parametersStr := `{"events":[{"eventType":"conversion","eventName":"Product Purchased","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"queryID":"43b15df305339e827f0ac0bdc5ebcaa7"},{"eventType":"view","eventName":"Product Detail Page Viewed","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"]}]}` - req := insights.ApiPushEventsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.PushEvents(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/events") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"events":[{"eventType":"conversion","eventName":"Product Purchased","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"queryID":"43b15df305339e827f0ac0bdc5ebcaa7"},{"eventType":"view","eventName":"Product Detail Page Viewed","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"]}]}`) - }, - }, - { - name: "ConvertedObjectIDsAfterSearch", - testFunc: func(t *testing.T) { - parametersStr := `{"events":[{"eventType":"conversion","eventName":"Product Purchased","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"queryID":"43b15df305339e827f0ac0bdc5ebcaa7"}]}` - req := insights.ApiPushEventsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.PushEvents(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/events") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"events":[{"eventType":"conversion","eventName":"Product Purchased","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"queryID":"43b15df305339e827f0ac0bdc5ebcaa7"}]}`) - }, - }, - { - name: "ViewedObjectIDs", - testFunc: func(t *testing.T) { - parametersStr := `{"events":[{"eventType":"view","eventName":"Product Detail Page Viewed","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"]}]}` - req := insights.ApiPushEventsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.PushEvents(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/events") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"events":[{"eventType":"view","eventName":"Product Detail Page Viewed","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"]}]}`) - }, - }, - { - name: "AddedToCartObjectIDs", - testFunc: func(t *testing.T) { - parametersStr := `{"events":[{"eventType":"conversion","eventSubtype":"addToCart","eventName":"Product Added To Cart","index":"products","queryID":"43b15df305339e827f0ac0bdc5ebcaa7","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"objectData":[{"price":19.99,"quantity":10,"discount":2.5},{"price":"8$","quantity":7,"discount":"30%"}],"currency":"USD"}]}` - req := insights.ApiPushEventsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.PushEvents(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/events") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"events":[{"eventType":"conversion","eventSubtype":"addToCart","eventName":"Product Added To Cart","index":"products","queryID":"43b15df305339e827f0ac0bdc5ebcaa7","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"objectData":[{"price":19.99,"quantity":10,"discount":2.5},{"price":"8$","quantity":7,"discount":"30%%"}],"currency":"USD"}]}`) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} diff --git a/tests/output/go/tests/methods/requests/monitoring_test.go b/tests/output/go/tests/methods/requests/monitoring_test.go deleted file mode 100644 index 4c32510c2d..0000000000 --- a/tests/output/go/tests/methods/requests/monitoring_test.go +++ /dev/null @@ -1,810 +0,0 @@ -package tests - -import ( - "encoding/json" - "net/url" - "testing" - - "github.com/kinbiko/jsonassert" - "github.com/stretchr/testify/require" - - "github.com/algolia/algoliasearch-client-go/v4/algolia/monitoring" -) - -func createMonitoringClient() (*monitoring.APIClient, *echoRequester) { - echo := &echoRequester{} - cfg := monitoring.Configuration{ - AppID: "appID", - ApiKey: "apiKey", - Requester: echo, - } - client := monitoring.NewClientWithConfig(cfg) - - // so that the linter doesn't complain - _ = jsonassert.New(nil) - - return client, echo -} - -func TestMonitoring_CustomDelete(t *testing.T) { - client, echo := createMonitoringClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "allow del method for a custom path with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/minimal"}` - req := monitoring.ApiCustomDeleteRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomDelete(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/minimal") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "DELETE", echo.method) - - require.Nil(t, echo.body) - }, - }, - { - name: "allow del method for a custom path with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"}}` - req := monitoring.ApiCustomDeleteRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomDelete(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/all") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "DELETE", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestMonitoring_CustomGet(t *testing.T) { - client, echo := createMonitoringClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "allow get method for a custom path with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/minimal"}` - req := monitoring.ApiCustomGetRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomGet(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/minimal") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - { - name: "allow get method for a custom path with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"}}` - req := monitoring.ApiCustomGetRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomGet(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/all") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestMonitoring_CustomPost(t *testing.T) { - client, echo := createMonitoringClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "allow post method for a custom path with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/minimal"}` - req := monitoring.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomPost(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/minimal") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{}`) - }, - }, - { - name: "allow post method for a custom path with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"},"body":{"body":"parameters"}}` - req := monitoring.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomPost(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/all") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"body":"parameters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions can override default query parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := monitoring.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []monitoring.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"myQueryParameter"}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, monitoring.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"myQueryParameter"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions merges query parameters with default ones", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := monitoring.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []monitoring.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"query2":"myQueryParameter"}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, monitoring.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","query2":"myQueryParameter"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions can override default headers", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := monitoring.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []monitoring.Option - requestOptionHeaders := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &requestOptionHeaders)) - for k, v := range requestOptionHeaders { - opts = append(opts, monitoring.HeaderParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - headers := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &headers)) - for k, v := range headers { - require.Equal(t, v, echo.header.Get(k)) - } - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions merges headers with default ones", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := monitoring.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []monitoring.Option - requestOptionHeaders := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &requestOptionHeaders)) - for k, v := range requestOptionHeaders { - opts = append(opts, monitoring.HeaderParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - headers := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &headers)) - for k, v := range headers { - require.Equal(t, v, echo.header.Get(k)) - } - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions queryParameters accepts booleans", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := monitoring.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []monitoring.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"isItWorking":true}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, monitoring.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","isItWorking":"true"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions queryParameters accepts integers", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := monitoring.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []monitoring.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"myParam":2}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, monitoring.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"2"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions queryParameters accepts list of string", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := monitoring.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []monitoring.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"myParam":["c","d"]}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, monitoring.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"c,d"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions queryParameters accepts list of booleans", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := monitoring.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []monitoring.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"myParam":[true,true,false]}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, monitoring.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"true,true,false"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions queryParameters accepts list of integers", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := monitoring.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []monitoring.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"myParam":[1,2]}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, monitoring.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"1,2"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestMonitoring_CustomPut(t *testing.T) { - client, echo := createMonitoringClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "allow put method for a custom path with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/minimal"}` - req := monitoring.ApiCustomPutRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomPut(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/minimal") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "PUT", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{}`) - }, - }, - { - name: "allow put method for a custom path with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"},"body":{"body":"parameters"}}` - req := monitoring.ApiCustomPutRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomPut(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/all") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "PUT", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"body":"parameters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestMonitoring_GetClusterIncidents(t *testing.T) { - client, echo := createMonitoringClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "getClusterIncidents", - testFunc: func(t *testing.T) { - parametersStr := `{"clusters":"c1-de"}` - req := monitoring.ApiGetClusterIncidentsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetClusterIncidents(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/incidents/c1-de") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestMonitoring_GetClusterStatus(t *testing.T) { - client, echo := createMonitoringClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "getClusterStatus", - testFunc: func(t *testing.T) { - parametersStr := `{"clusters":"c1-de"}` - req := monitoring.ApiGetClusterStatusRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetClusterStatus(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/status/c1-de") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestMonitoring_GetIncidents(t *testing.T) { - client, echo := createMonitoringClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "getIncidents", - testFunc: func(t *testing.T) { - _, err := client.GetIncidents() - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/incidents") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestMonitoring_GetIndexingTime(t *testing.T) { - client, echo := createMonitoringClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "getIndexingTime", - testFunc: func(t *testing.T) { - parametersStr := `{"clusters":"c1-de"}` - req := monitoring.ApiGetIndexingTimeRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetIndexingTime(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexing/c1-de") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestMonitoring_GetInventory(t *testing.T) { - client, echo := createMonitoringClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "getInventory", - testFunc: func(t *testing.T) { - _, err := client.GetInventory() - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/inventory/servers") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestMonitoring_GetLatency(t *testing.T) { - client, echo := createMonitoringClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "getLatency", - testFunc: func(t *testing.T) { - parametersStr := `{"clusters":"c1-de"}` - req := monitoring.ApiGetLatencyRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetLatency(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/latency/c1-de") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestMonitoring_GetMetrics(t *testing.T) { - client, echo := createMonitoringClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "getMetrics", - testFunc: func(t *testing.T) { - parametersStr := `{"metric":"avg_build_time","period":"minute"}` - req := monitoring.ApiGetMetricsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetMetrics(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/infrastructure/avg_build_time/period/minute") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestMonitoring_GetReachability(t *testing.T) { - client, echo := createMonitoringClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "getReachability", - testFunc: func(t *testing.T) { - parametersStr := `{"clusters":"c1-de"}` - req := monitoring.ApiGetReachabilityRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetReachability(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/reachability/c1-de/probes") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestMonitoring_GetStatus(t *testing.T) { - client, echo := createMonitoringClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "getStatus", - testFunc: func(t *testing.T) { - _, err := client.GetStatus() - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/status") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} diff --git a/tests/output/go/tests/methods/requests/personalization_test.go b/tests/output/go/tests/methods/requests/personalization_test.go deleted file mode 100644 index e916dee264..0000000000 --- a/tests/output/go/tests/methods/requests/personalization_test.go +++ /dev/null @@ -1,653 +0,0 @@ -package tests - -import ( - "encoding/json" - "net/url" - "testing" - - "github.com/kinbiko/jsonassert" - "github.com/stretchr/testify/require" - - "github.com/algolia/algoliasearch-client-go/v4/algolia/personalization" -) - -func createPersonalizationClient() (*personalization.APIClient, *echoRequester) { - echo := &echoRequester{} - cfg := personalization.Configuration{ - AppID: "appID", - ApiKey: "apiKey", - Region: personalization.US, - Requester: echo, - } - client := personalization.NewClientWithConfig(cfg) - - // so that the linter doesn't complain - _ = jsonassert.New(nil) - - return client, echo -} - -func TestPersonalization_CustomDelete(t *testing.T) { - client, echo := createPersonalizationClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "allow del method for a custom path with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/minimal"}` - req := personalization.ApiCustomDeleteRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomDelete(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/minimal") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "DELETE", echo.method) - - require.Nil(t, echo.body) - }, - }, - { - name: "allow del method for a custom path with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"}}` - req := personalization.ApiCustomDeleteRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomDelete(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/all") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "DELETE", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestPersonalization_CustomGet(t *testing.T) { - client, echo := createPersonalizationClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "allow get method for a custom path with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/minimal"}` - req := personalization.ApiCustomGetRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomGet(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/minimal") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - { - name: "allow get method for a custom path with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"}}` - req := personalization.ApiCustomGetRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomGet(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/all") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestPersonalization_CustomPost(t *testing.T) { - client, echo := createPersonalizationClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "allow post method for a custom path with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/minimal"}` - req := personalization.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomPost(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/minimal") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{}`) - }, - }, - { - name: "allow post method for a custom path with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"},"body":{"body":"parameters"}}` - req := personalization.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomPost(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/all") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"body":"parameters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions can override default query parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := personalization.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []personalization.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"myQueryParameter"}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, personalization.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"myQueryParameter"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions merges query parameters with default ones", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := personalization.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []personalization.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"query2":"myQueryParameter"}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, personalization.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","query2":"myQueryParameter"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions can override default headers", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := personalization.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []personalization.Option - requestOptionHeaders := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &requestOptionHeaders)) - for k, v := range requestOptionHeaders { - opts = append(opts, personalization.HeaderParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - headers := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &headers)) - for k, v := range headers { - require.Equal(t, v, echo.header.Get(k)) - } - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions merges headers with default ones", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := personalization.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []personalization.Option - requestOptionHeaders := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &requestOptionHeaders)) - for k, v := range requestOptionHeaders { - opts = append(opts, personalization.HeaderParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - headers := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &headers)) - for k, v := range headers { - require.Equal(t, v, echo.header.Get(k)) - } - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions queryParameters accepts booleans", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := personalization.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []personalization.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"isItWorking":true}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, personalization.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","isItWorking":"true"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions queryParameters accepts integers", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := personalization.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []personalization.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"myParam":2}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, personalization.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"2"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions queryParameters accepts list of string", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := personalization.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []personalization.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"myParam":["c","d"]}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, personalization.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"c,d"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions queryParameters accepts list of booleans", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := personalization.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []personalization.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"myParam":[true,true,false]}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, personalization.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"true,true,false"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions queryParameters accepts list of integers", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := personalization.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []personalization.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"myParam":[1,2]}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, personalization.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"1,2"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestPersonalization_CustomPut(t *testing.T) { - client, echo := createPersonalizationClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "allow put method for a custom path with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/minimal"}` - req := personalization.ApiCustomPutRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomPut(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/minimal") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "PUT", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{}`) - }, - }, - { - name: "allow put method for a custom path with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"},"body":{"body":"parameters"}}` - req := personalization.ApiCustomPutRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomPut(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/all") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "PUT", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"body":"parameters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestPersonalization_DeleteUserProfile(t *testing.T) { - client, echo := createPersonalizationClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "delete deleteUserProfile", - testFunc: func(t *testing.T) { - parametersStr := `{"userToken":"UserToken"}` - req := personalization.ApiDeleteUserProfileRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.DeleteUserProfile(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/profiles/UserToken") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "DELETE", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestPersonalization_GetPersonalizationStrategy(t *testing.T) { - client, echo := createPersonalizationClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "get getPersonalizationStrategy", - testFunc: func(t *testing.T) { - _, err := client.GetPersonalizationStrategy() - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/strategies/personalization") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestPersonalization_GetUserTokenProfile(t *testing.T) { - client, echo := createPersonalizationClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "get getUserTokenProfile", - testFunc: func(t *testing.T) { - parametersStr := `{"userToken":"UserToken"}` - req := personalization.ApiGetUserTokenProfileRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetUserTokenProfile(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/profiles/personalization/UserToken") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestPersonalization_SetPersonalizationStrategy(t *testing.T) { - client, echo := createPersonalizationClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "set setPersonalizationStrategy", - testFunc: func(t *testing.T) { - parametersStr := `{"eventScoring":[{"score":42,"eventName":"Algolia","eventType":"Event"}],"facetScoring":[{"score":42,"facetName":"Event"}],"personalizationImpact":42}` - req := personalization.ApiSetPersonalizationStrategyRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.SetPersonalizationStrategy(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/strategies/personalization") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"eventScoring":[{"score":42,"eventName":"Algolia","eventType":"Event"}],"facetScoring":[{"score":42,"facetName":"Event"}],"personalizationImpact":42}`) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} diff --git a/tests/output/go/tests/methods/requests/query-suggestions_test.go b/tests/output/go/tests/methods/requests/query-suggestions_test.go deleted file mode 100644 index 0083d9f9cc..0000000000 --- a/tests/output/go/tests/methods/requests/query-suggestions_test.go +++ /dev/null @@ -1,753 +0,0 @@ -package tests - -import ( - "encoding/json" - "net/url" - "testing" - - "github.com/kinbiko/jsonassert" - "github.com/stretchr/testify/require" - - "github.com/algolia/algoliasearch-client-go/v4/algolia/query-suggestions" -) - -func createSuggestionsClient() (*suggestions.APIClient, *echoRequester) { - echo := &echoRequester{} - cfg := suggestions.Configuration{ - AppID: "appID", - ApiKey: "apiKey", - Region: suggestions.US, - Requester: echo, - } - client := suggestions.NewClientWithConfig(cfg) - - // so that the linter doesn't complain - _ = jsonassert.New(nil) - - return client, echo -} - -func TestSuggestions_CreateConfig(t *testing.T) { - client, echo := createSuggestionsClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "createConfig0", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"theIndexName","sourceIndices":[{"indexName":"testIndex","facets":[{"attribute":"test"}],"generate":[["facetA","facetB"],["facetC"]]}],"languages":["french"],"exclude":["test"]}` - req := suggestions.ApiCreateConfigRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CreateConfig(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/configs") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"indexName":"theIndexName","sourceIndices":[{"indexName":"testIndex","facets":[{"attribute":"test"}],"generate":[["facetA","facetB"],["facetC"]]}],"languages":["french"],"exclude":["test"]}`) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSuggestions_CustomDelete(t *testing.T) { - client, echo := createSuggestionsClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "allow del method for a custom path with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/minimal"}` - req := suggestions.ApiCustomDeleteRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomDelete(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/minimal") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "DELETE", echo.method) - - require.Nil(t, echo.body) - }, - }, - { - name: "allow del method for a custom path with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"}}` - req := suggestions.ApiCustomDeleteRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomDelete(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/all") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "DELETE", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSuggestions_CustomGet(t *testing.T) { - client, echo := createSuggestionsClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "allow get method for a custom path with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/minimal"}` - req := suggestions.ApiCustomGetRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomGet(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/minimal") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - { - name: "allow get method for a custom path with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"}}` - req := suggestions.ApiCustomGetRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomGet(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/all") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSuggestions_CustomPost(t *testing.T) { - client, echo := createSuggestionsClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "allow post method for a custom path with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/minimal"}` - req := suggestions.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomPost(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/minimal") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{}`) - }, - }, - { - name: "allow post method for a custom path with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"},"body":{"body":"parameters"}}` - req := suggestions.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomPost(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/all") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"body":"parameters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions can override default query parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := suggestions.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []suggestions.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"myQueryParameter"}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, suggestions.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"myQueryParameter"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions merges query parameters with default ones", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := suggestions.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []suggestions.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"query2":"myQueryParameter"}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, suggestions.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","query2":"myQueryParameter"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions can override default headers", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := suggestions.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []suggestions.Option - requestOptionHeaders := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &requestOptionHeaders)) - for k, v := range requestOptionHeaders { - opts = append(opts, suggestions.HeaderParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - headers := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &headers)) - for k, v := range headers { - require.Equal(t, v, echo.header.Get(k)) - } - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions merges headers with default ones", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := suggestions.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []suggestions.Option - requestOptionHeaders := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &requestOptionHeaders)) - for k, v := range requestOptionHeaders { - opts = append(opts, suggestions.HeaderParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - headers := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &headers)) - for k, v := range headers { - require.Equal(t, v, echo.header.Get(k)) - } - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions queryParameters accepts booleans", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := suggestions.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []suggestions.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"isItWorking":true}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, suggestions.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","isItWorking":"true"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions queryParameters accepts integers", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := suggestions.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []suggestions.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"myParam":2}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, suggestions.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"2"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions queryParameters accepts list of string", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := suggestions.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []suggestions.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"myParam":["c","d"]}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, suggestions.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"c,d"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions queryParameters accepts list of booleans", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := suggestions.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []suggestions.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"myParam":[true,true,false]}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, suggestions.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"true,true,false"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions queryParameters accepts list of integers", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := suggestions.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []suggestions.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"myParam":[1,2]}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, suggestions.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"1,2"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSuggestions_CustomPut(t *testing.T) { - client, echo := createSuggestionsClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "allow put method for a custom path with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/minimal"}` - req := suggestions.ApiCustomPutRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomPut(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/minimal") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "PUT", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{}`) - }, - }, - { - name: "allow put method for a custom path with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"},"body":{"body":"parameters"}}` - req := suggestions.ApiCustomPutRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomPut(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/all") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "PUT", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"body":"parameters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSuggestions_DeleteConfig(t *testing.T) { - client, echo := createSuggestionsClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "deleteConfig0", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"theIndexName"}` - req := suggestions.ApiDeleteConfigRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.DeleteConfig(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/configs/theIndexName") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "DELETE", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSuggestions_GetAllConfigs(t *testing.T) { - client, echo := createSuggestionsClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "getAllConfigs0", - testFunc: func(t *testing.T) { - _, err := client.GetAllConfigs() - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/configs") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSuggestions_GetConfig(t *testing.T) { - client, echo := createSuggestionsClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "getConfig0", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"theIndexName"}` - req := suggestions.ApiGetConfigRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetConfig(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/configs/theIndexName") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSuggestions_GetConfigStatus(t *testing.T) { - client, echo := createSuggestionsClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "getConfigStatus0", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"theIndexName"}` - req := suggestions.ApiGetConfigStatusRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetConfigStatus(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/configs/theIndexName/status") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSuggestions_GetLogFile(t *testing.T) { - client, echo := createSuggestionsClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "getLogFile0", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"theIndexName"}` - req := suggestions.ApiGetLogFileRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetLogFile(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/logs/theIndexName") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSuggestions_UpdateConfig(t *testing.T) { - client, echo := createSuggestionsClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "updateConfig0", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"theIndexName","querySuggestionsConfiguration":{"sourceIndices":[{"indexName":"testIndex","facets":[{"attribute":"test"}],"generate":[["facetA","facetB"],["facetC"]]}],"languages":["french"],"exclude":["test"]}}` - req := suggestions.ApiUpdateConfigRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.UpdateConfig(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/configs/theIndexName") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "PUT", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"sourceIndices":[{"indexName":"testIndex","facets":[{"attribute":"test"}],"generate":[["facetA","facetB"],["facetC"]]}],"languages":["french"],"exclude":["test"]}`) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} diff --git a/tests/output/go/tests/methods/requests/recommend_test.go b/tests/output/go/tests/methods/requests/recommend_test.go deleted file mode 100644 index 69a15d8108..0000000000 --- a/tests/output/go/tests/methods/requests/recommend_test.go +++ /dev/null @@ -1,797 +0,0 @@ -package tests - -import ( - "encoding/json" - "net/url" - "testing" - - "github.com/kinbiko/jsonassert" - "github.com/stretchr/testify/require" - - "github.com/algolia/algoliasearch-client-go/v4/algolia/recommend" -) - -func createRecommendClient() (*recommend.APIClient, *echoRequester) { - echo := &echoRequester{} - cfg := recommend.Configuration{ - AppID: "appID", - ApiKey: "apiKey", - Requester: echo, - } - client := recommend.NewClientWithConfig(cfg) - - // so that the linter doesn't complain - _ = jsonassert.New(nil) - - return client, echo -} - -func TestRecommend_CustomDelete(t *testing.T) { - client, echo := createRecommendClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "allow del method for a custom path with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/minimal"}` - req := recommend.ApiCustomDeleteRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomDelete(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/minimal") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "DELETE", echo.method) - - require.Nil(t, echo.body) - }, - }, - { - name: "allow del method for a custom path with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"}}` - req := recommend.ApiCustomDeleteRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomDelete(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/all") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "DELETE", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestRecommend_CustomGet(t *testing.T) { - client, echo := createRecommendClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "allow get method for a custom path with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/minimal"}` - req := recommend.ApiCustomGetRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomGet(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/minimal") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - { - name: "allow get method for a custom path with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"}}` - req := recommend.ApiCustomGetRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomGet(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/all") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestRecommend_CustomPost(t *testing.T) { - client, echo := createRecommendClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "allow post method for a custom path with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/minimal"}` - req := recommend.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomPost(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/minimal") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{}`) - }, - }, - { - name: "allow post method for a custom path with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"},"body":{"body":"parameters"}}` - req := recommend.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomPost(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/all") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"body":"parameters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions can override default query parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := recommend.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []recommend.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"myQueryParameter"}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, recommend.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"myQueryParameter"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions merges query parameters with default ones", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := recommend.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []recommend.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"query2":"myQueryParameter"}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, recommend.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","query2":"myQueryParameter"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions can override default headers", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := recommend.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []recommend.Option - requestOptionHeaders := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &requestOptionHeaders)) - for k, v := range requestOptionHeaders { - opts = append(opts, recommend.HeaderParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - headers := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &headers)) - for k, v := range headers { - require.Equal(t, v, echo.header.Get(k)) - } - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions merges headers with default ones", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := recommend.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []recommend.Option - requestOptionHeaders := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &requestOptionHeaders)) - for k, v := range requestOptionHeaders { - opts = append(opts, recommend.HeaderParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - headers := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &headers)) - for k, v := range headers { - require.Equal(t, v, echo.header.Get(k)) - } - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions queryParameters accepts booleans", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := recommend.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []recommend.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"isItWorking":true}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, recommend.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","isItWorking":"true"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions queryParameters accepts integers", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := recommend.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []recommend.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"myParam":2}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, recommend.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"2"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions queryParameters accepts list of string", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := recommend.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []recommend.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"myParam":["c","d"]}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, recommend.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"c,d"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions queryParameters accepts list of booleans", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := recommend.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []recommend.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"myParam":[true,true,false]}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, recommend.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"true,true,false"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions queryParameters accepts list of integers", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := recommend.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []recommend.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"myParam":[1,2]}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, recommend.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"1,2"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestRecommend_CustomPut(t *testing.T) { - client, echo := createRecommendClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "allow put method for a custom path with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/minimal"}` - req := recommend.ApiCustomPutRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomPut(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/minimal") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "PUT", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{}`) - }, - }, - { - name: "allow put method for a custom path with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"},"body":{"body":"parameters"}}` - req := recommend.ApiCustomPutRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomPut(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/all") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "PUT", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"body":"parameters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestRecommend_DeleteRecommendRule(t *testing.T) { - client, echo := createRecommendClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "deleteRecommendRule0", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"indexName","model":"related-products","objectID":"objectID"}` - req := recommend.ApiDeleteRecommendRuleRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.DeleteRecommendRule(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/indexName/related-products/recommend/rules/objectID") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "DELETE", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestRecommend_GetRecommendRule(t *testing.T) { - client, echo := createRecommendClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "getRecommendRule0", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"indexName","model":"related-products","objectID":"objectID"}` - req := recommend.ApiGetRecommendRuleRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetRecommendRule(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/indexName/related-products/recommend/rules/objectID") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestRecommend_GetRecommendStatus(t *testing.T) { - client, echo := createRecommendClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "getRecommendStatus0", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"indexName","model":"related-products","taskID":12345}` - req := recommend.ApiGetRecommendStatusRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetRecommendStatus(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/indexName/related-products/task/12345") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestRecommend_GetRecommendations(t *testing.T) { - client, echo := createRecommendClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "get recommendations for recommend model with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"requests":[{"indexName":"indexName","objectID":"objectID","model":"related-products","threshold":42}]}` - req := recommend.ApiGetRecommendationsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetRecommendations(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/*/recommendations") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"requests":[{"indexName":"indexName","objectID":"objectID","model":"related-products","threshold":42}]}`) - }, - }, - { - name: "get recommendations for recommend model with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"requests":[{"indexName":"indexName","objectID":"objectID","model":"related-products","threshold":42,"maxRecommendations":10,"queryParameters":{"query":"myQuery","facetFilters":["query"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback"]}}]}` - req := recommend.ApiGetRecommendationsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetRecommendations(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/*/recommendations") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"requests":[{"indexName":"indexName","objectID":"objectID","model":"related-products","threshold":42,"maxRecommendations":10,"queryParameters":{"query":"myQuery","facetFilters":["query"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback"]}}]}`) - }, - }, - { - name: "get recommendations for trending model with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"requests":[{"indexName":"indexName","model":"trending-items","threshold":42}]}` - req := recommend.ApiGetRecommendationsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetRecommendations(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/*/recommendations") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"requests":[{"indexName":"indexName","model":"trending-items","threshold":42}]}`) - }, - }, - { - name: "get recommendations for trending model with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"requests":[{"indexName":"indexName","model":"trending-items","threshold":42,"maxRecommendations":10,"facetName":"myFacetName","facetValue":"myFacetValue","queryParameters":{"query":"myQuery","facetFilters":["query"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback"]}}]}` - req := recommend.ApiGetRecommendationsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetRecommendations(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/*/recommendations") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"requests":[{"indexName":"indexName","model":"trending-items","threshold":42,"maxRecommendations":10,"facetName":"myFacetName","facetValue":"myFacetValue","queryParameters":{"query":"myQuery","facetFilters":["query"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback"]}}]}`) - }, - }, - { - name: "get multiple recommendations with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"requests":[{"indexName":"indexName1","objectID":"objectID1","model":"related-products","threshold":21},{"indexName":"indexName2","objectID":"objectID2","model":"related-products","threshold":21}]}` - req := recommend.ApiGetRecommendationsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetRecommendations(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/*/recommendations") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"requests":[{"indexName":"indexName1","objectID":"objectID1","model":"related-products","threshold":21},{"indexName":"indexName2","objectID":"objectID2","model":"related-products","threshold":21}]}`) - }, - }, - { - name: "get multiple recommendations with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"requests":[{"indexName":"indexName1","objectID":"objectID1","model":"related-products","threshold":21,"maxRecommendations":10,"queryParameters":{"query":"myQuery","facetFilters":["query1"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback1"]}},{"indexName":"indexName2","objectID":"objectID2","model":"related-products","threshold":21,"maxRecommendations":10,"queryParameters":{"query":"myQuery","facetFilters":["query2"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback2"]}}]}` - req := recommend.ApiGetRecommendationsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetRecommendations(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/*/recommendations") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"requests":[{"indexName":"indexName1","objectID":"objectID1","model":"related-products","threshold":21,"maxRecommendations":10,"queryParameters":{"query":"myQuery","facetFilters":["query1"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback1"]}},{"indexName":"indexName2","objectID":"objectID2","model":"related-products","threshold":21,"maxRecommendations":10,"queryParameters":{"query":"myQuery","facetFilters":["query2"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback2"]}}]}`) - }, - }, - { - name: "get frequently bought together recommendations", - testFunc: func(t *testing.T) { - parametersStr := `{"requests":[{"indexName":"indexName1","objectID":"objectID1","model":"bought-together","threshold":42}]}` - req := recommend.ApiGetRecommendationsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetRecommendations(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/*/recommendations") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"requests":[{"indexName":"indexName1","objectID":"objectID1","model":"bought-together","threshold":42}]}`) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestRecommend_SearchRecommendRules(t *testing.T) { - client, echo := createRecommendClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "searchRecommendRules0", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"indexName","model":"related-products"}` - req := recommend.ApiSearchRecommendRulesRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.SearchRecommendRules(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/indexName/related-products/recommend/rules/search") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{}`) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} diff --git a/tests/output/go/tests/methods/requests/search_test.go b/tests/output/go/tests/methods/requests/search_test.go deleted file mode 100644 index a1ee08341c..0000000000 --- a/tests/output/go/tests/methods/requests/search_test.go +++ /dev/null @@ -1,3203 +0,0 @@ -package tests - -import ( - "encoding/json" - "net/url" - "testing" - - "github.com/kinbiko/jsonassert" - "github.com/stretchr/testify/require" - - "github.com/algolia/algoliasearch-client-go/v4/algolia/search" -) - -func createSearchClient() (*search.APIClient, *echoRequester) { - echo := &echoRequester{} - cfg := search.Configuration{ - AppID: "appID", - ApiKey: "apiKey", - Requester: echo, - } - client := search.NewClientWithConfig(cfg) - - // so that the linter doesn't complain - _ = jsonassert.New(nil) - - return client, echo -} - -func TestSearch_AddApiKey(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "addApiKey0", - testFunc: func(t *testing.T) { - parametersStr := `{"acl":["search","addObject"],"description":"my new api key","validity":300,"maxQueriesPerIPPerHour":100,"maxHitsPerQuery":20}` - req := search.ApiAddApiKeyRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.AddApiKey(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/keys") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"acl":["search","addObject"],"description":"my new api key","validity":300,"maxQueriesPerIPPerHour":100,"maxHitsPerQuery":20}`) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_AddOrUpdateObject(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "addOrUpdateObject0", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"indexName","objectID":"uniqueID","body":{"key":"value"}}` - req := search.ApiAddOrUpdateObjectRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.AddOrUpdateObject(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/indexName/uniqueID") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "PUT", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"key":"value"}`) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_AppendSource(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "appendSource0", - testFunc: func(t *testing.T) { - parametersStr := `{"source":"theSource","description":"theDescription"}` - req := search.ApiAppendSourceRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.AppendSource(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/security/sources/append") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"source":"theSource","description":"theDescription"}`) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_AssignUserId(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "assignUserId0", - testFunc: func(t *testing.T) { - parametersStr := `{"xAlgoliaUserID":"userID","assignUserIdParams":{"cluster":"theCluster"}}` - req := search.ApiAssignUserIdRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.AssignUserId(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/clusters/mapping") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"cluster":"theCluster"}`) - headers := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-user-id":"userID"}`), &headers)) - for k, v := range headers { - require.Equal(t, v, echo.header.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_Batch(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "allows batch method with `addObject` action", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"theIndexName","batchWriteParams":{"requests":[{"action":"addObject","body":{"key":"value"}}]}}` - req := search.ApiBatchRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.Batch(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/batch") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"requests":[{"action":"addObject","body":{"key":"value"}}]}`) - }, - }, - { - name: "allows batch method with `clear` action", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"theIndexName","batchWriteParams":{"requests":[{"action":"clear","body":{"key":"value"}}]}}` - req := search.ApiBatchRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.Batch(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/batch") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"requests":[{"action":"clear","body":{"key":"value"}}]}`) - }, - }, - { - name: "allows batch method with `delete` action", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"theIndexName","batchWriteParams":{"requests":[{"action":"delete","body":{"key":"value"}}]}}` - req := search.ApiBatchRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.Batch(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/batch") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"requests":[{"action":"delete","body":{"key":"value"}}]}`) - }, - }, - { - name: "allows batch method with `deleteObject` action", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"theIndexName","batchWriteParams":{"requests":[{"action":"deleteObject","body":{"key":"value"}}]}}` - req := search.ApiBatchRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.Batch(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/batch") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"requests":[{"action":"deleteObject","body":{"key":"value"}}]}`) - }, - }, - { - name: "allows batch method with `partialUpdateObject` action", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"theIndexName","batchWriteParams":{"requests":[{"action":"partialUpdateObject","body":{"key":"value"}}]}}` - req := search.ApiBatchRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.Batch(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/batch") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"requests":[{"action":"partialUpdateObject","body":{"key":"value"}}]}`) - }, - }, - { - name: "allows batch method with `partialUpdateObjectNoCreate` action", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"theIndexName","batchWriteParams":{"requests":[{"action":"partialUpdateObjectNoCreate","body":{"key":"value"}}]}}` - req := search.ApiBatchRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.Batch(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/batch") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"requests":[{"action":"partialUpdateObjectNoCreate","body":{"key":"value"}}]}`) - }, - }, - { - name: "allows batch method with `updateObject` action", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"theIndexName","batchWriteParams":{"requests":[{"action":"updateObject","body":{"key":"value"}}]}}` - req := search.ApiBatchRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.Batch(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/batch") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"requests":[{"action":"updateObject","body":{"key":"value"}}]}`) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_BatchAssignUserIds(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "batchAssignUserIds0", - testFunc: func(t *testing.T) { - parametersStr := `{"xAlgoliaUserID":"userID","batchAssignUserIdsParams":{"cluster":"theCluster","users":["user1","user2"]}}` - req := search.ApiBatchAssignUserIdsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.BatchAssignUserIds(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/clusters/mapping/batch") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"cluster":"theCluster","users":["user1","user2"]}`) - headers := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-user-id":"userID"}`), &headers)) - for k, v := range headers { - require.Equal(t, v, echo.header.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_BatchDictionaryEntries(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "get batchDictionaryEntries results with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"dictionaryName":"compounds","batchDictionaryEntriesParams":{"requests":[{"action":"addEntry","body":{"objectID":"1","language":"en"}},{"action":"deleteEntry","body":{"objectID":"2","language":"fr"}}]}}` - req := search.ApiBatchDictionaryEntriesRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.BatchDictionaryEntries(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/dictionaries/compounds/batch") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"requests":[{"action":"addEntry","body":{"objectID":"1","language":"en"}},{"action":"deleteEntry","body":{"objectID":"2","language":"fr"}}]}`) - }, - }, - { - name: "get batchDictionaryEntries results with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"dictionaryName":"compounds","batchDictionaryEntriesParams":{"clearExistingDictionaryEntries":false,"requests":[{"action":"addEntry","body":{"objectID":"1","language":"en","word":"fancy","words":["believe","algolia"],"decomposition":["trust","algolia"],"state":"enabled"}},{"action":"deleteEntry","body":{"objectID":"2","language":"fr","word":"humility","words":["candor","algolia"],"decomposition":["grit","algolia"],"state":"enabled"}}]}}` - req := search.ApiBatchDictionaryEntriesRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.BatchDictionaryEntries(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/dictionaries/compounds/batch") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"clearExistingDictionaryEntries":false,"requests":[{"action":"addEntry","body":{"objectID":"1","language":"en","word":"fancy","words":["believe","algolia"],"decomposition":["trust","algolia"],"state":"enabled"}},{"action":"deleteEntry","body":{"objectID":"2","language":"fr","word":"humility","words":["candor","algolia"],"decomposition":["grit","algolia"],"state":"enabled"}}]}`) - }, - }, - { - name: "get batchDictionaryEntries results additional properties", - testFunc: func(t *testing.T) { - parametersStr := `{"dictionaryName":"compounds","batchDictionaryEntriesParams":{"requests":[{"action":"addEntry","body":{"objectID":"1","language":"en","additional":"try me"}}]}}` - req := search.ApiBatchDictionaryEntriesRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.BatchDictionaryEntries(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/dictionaries/compounds/batch") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"requests":[{"action":"addEntry","body":{"objectID":"1","language":"en","additional":"try me"}}]}`) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_Browse(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "browse with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"indexName"}` - req := search.ApiBrowseRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.Browse(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/indexName/browse") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{}`) - }, - }, - { - name: "browse with search parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"indexName","browseParams":{"query":"myQuery","facetFilters":["tags:algolia"]}}` - req := search.ApiBrowseRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.Browse(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/indexName/browse") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"query":"myQuery","facetFilters":["tags:algolia"]}`) - }, - }, - { - name: "browse allow a cursor in parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"indexName","browseParams":{"cursor":"test"}}` - req := search.ApiBrowseRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.Browse(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/indexName/browse") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"cursor":"test"}`) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_ClearAllSynonyms(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "clearAllSynonyms0", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"indexName"}` - req := search.ApiClearAllSynonymsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.ClearAllSynonyms(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/indexName/synonyms/clear") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - require.Empty(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_ClearObjects(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "clearObjects0", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"theIndexName"}` - req := search.ApiClearObjectsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.ClearObjects(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/clear") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - require.Empty(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_ClearRules(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "clearRules0", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"indexName"}` - req := search.ApiClearRulesRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.ClearRules(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/indexName/rules/clear") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - require.Empty(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_CustomDelete(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "allow del method for a custom path with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/minimal"}` - req := search.ApiCustomDeleteRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomDelete(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/minimal") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "DELETE", echo.method) - - require.Nil(t, echo.body) - }, - }, - { - name: "allow del method for a custom path with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"}}` - req := search.ApiCustomDeleteRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomDelete(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/all") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "DELETE", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_CustomGet(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "allow get method for a custom path with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/minimal"}` - req := search.ApiCustomGetRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomGet(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/minimal") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - { - name: "allow get method for a custom path with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"}}` - req := search.ApiCustomGetRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomGet(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/all") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_CustomPost(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "allow post method for a custom path with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/minimal"}` - req := search.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomPost(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/minimal") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{}`) - }, - }, - { - name: "allow post method for a custom path with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"},"body":{"body":"parameters"}}` - req := search.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomPost(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/all") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"body":"parameters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions can override default query parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := search.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []search.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"myQueryParameter"}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, search.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"myQueryParameter"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions merges query parameters with default ones", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := search.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []search.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"query2":"myQueryParameter"}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, search.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","query2":"myQueryParameter"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions can override default headers", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := search.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []search.Option - requestOptionHeaders := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &requestOptionHeaders)) - for k, v := range requestOptionHeaders { - opts = append(opts, search.HeaderParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - headers := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &headers)) - for k, v := range headers { - require.Equal(t, v, echo.header.Get(k)) - } - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions merges headers with default ones", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := search.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []search.Option - requestOptionHeaders := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &requestOptionHeaders)) - for k, v := range requestOptionHeaders { - opts = append(opts, search.HeaderParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - headers := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &headers)) - for k, v := range headers { - require.Equal(t, v, echo.header.Get(k)) - } - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions queryParameters accepts booleans", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := search.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []search.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"isItWorking":true}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, search.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","isItWorking":"true"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions queryParameters accepts integers", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := search.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []search.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"myParam":2}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, search.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"2"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions queryParameters accepts list of string", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := search.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []search.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"myParam":["c","d"]}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, search.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"c,d"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions queryParameters accepts list of booleans", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := search.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []search.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"myParam":[true,true,false]}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, search.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"true,true,false"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "requestOptions queryParameters accepts list of integers", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` - req := search.ApiCustomPostRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - var opts []search.Option - requestOptionParameters := map[string]any{} - require.NoError(t, json.Unmarshal([]byte(`{"myParam":[1,2]}`), &requestOptionParameters)) - for k, v := range requestOptionParameters { - opts = append(opts, search.QueryParamOption(k, v)) - } - _, err := client.CustomPost(req, opts...) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/requestOptions") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"facet":"filters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"1,2"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_CustomPut(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "allow put method for a custom path with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/minimal"}` - req := search.ApiCustomPutRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomPut(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/minimal") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "PUT", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{}`) - }, - }, - { - name: "allow put method for a custom path with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"},"body":{"body":"parameters"}}` - req := search.ApiCustomPutRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.CustomPut(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/test/all") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "PUT", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"body":"parameters"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_DeleteApiKey(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "deleteApiKey0", - testFunc: func(t *testing.T) { - parametersStr := `{"key":"myTestApiKey"}` - req := search.ApiDeleteApiKeyRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.DeleteApiKey(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/keys/myTestApiKey") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "DELETE", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_DeleteBy(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "deleteBy0", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"theIndexName","deleteByParams":{"filters":"brand:brandName"}}` - req := search.ApiDeleteByRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.DeleteBy(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/deleteByQuery") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"filters":"brand:brandName"}`) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_DeleteIndex(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "deleteIndex0", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"theIndexName"}` - req := search.ApiDeleteIndexRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.DeleteIndex(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "DELETE", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_DeleteObject(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "deleteObject0", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"theIndexName","objectID":"uniqueID"}` - req := search.ApiDeleteObjectRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.DeleteObject(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/uniqueID") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "DELETE", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_DeleteRule(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "delete rule simple case", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"indexName","objectID":"id1"}` - req := search.ApiDeleteRuleRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.DeleteRule(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/indexName/rules/id1") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "DELETE", echo.method) - - require.Nil(t, echo.body) - }, - }, - { - name: "delete rule with simple characters to encode in objectID", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"indexName","objectID":"test/with/slash"}` - req := search.ApiDeleteRuleRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.DeleteRule(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/indexName/rules/test%2Fwith%2Fslash") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "DELETE", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_DeleteSource(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "deleteSource0", - testFunc: func(t *testing.T) { - parametersStr := `{"source":"theSource"}` - req := search.ApiDeleteSourceRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.DeleteSource(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/security/sources/theSource") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "DELETE", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_DeleteSynonym(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "deleteSynonym0", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"indexName","objectID":"id1"}` - req := search.ApiDeleteSynonymRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.DeleteSynonym(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/indexName/synonyms/id1") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "DELETE", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_GetApiKey(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "getApiKey0", - testFunc: func(t *testing.T) { - parametersStr := `{"key":"myTestApiKey"}` - req := search.ApiGetApiKeyRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetApiKey(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/keys/myTestApiKey") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_GetDictionaryLanguages(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "get getDictionaryLanguages", - testFunc: func(t *testing.T) { - _, err := client.GetDictionaryLanguages() - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/dictionaries/*/languages") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_GetDictionarySettings(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "get getDictionarySettings results", - testFunc: func(t *testing.T) { - _, err := client.GetDictionarySettings() - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/dictionaries/*/settings") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_GetLogs(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "getLogs with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{}` - req := search.ApiGetLogsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetLogs(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/logs") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - { - name: "getLogs with parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"offset":5,"length":10,"indexName":"theIndexName","type":"all"}` - req := search.ApiGetLogsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetLogs(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/logs") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"offset":"5","length":"10","indexName":"theIndexName","type":"all"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_GetObject(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "getObject0", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"theIndexName","objectID":"uniqueID","attributesToRetrieve":["attr1","attr2"]}` - req := search.ApiGetObjectRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetObject(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/uniqueID") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"attributesToRetrieve":"attr1,attr2"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_GetObjects(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "getObjects0", - testFunc: func(t *testing.T) { - parametersStr := `{"requests":[{"attributesToRetrieve":["attr1","attr2"],"objectID":"uniqueID","indexName":"theIndexName"}]}` - req := search.ApiGetObjectsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetObjects(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/*/objects") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"requests":[{"attributesToRetrieve":["attr1","attr2"],"objectID":"uniqueID","indexName":"theIndexName"}]}`) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_GetRule(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "getRule0", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"indexName","objectID":"id1"}` - req := search.ApiGetRuleRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetRule(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/indexName/rules/id1") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_GetSettings(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "getSettings0", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"theIndexName"}` - req := search.ApiGetSettingsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetSettings(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/settings") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_GetSources(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "getSources0", - testFunc: func(t *testing.T) { - _, err := client.GetSources() - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/security/sources") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_GetSynonym(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "getSynonym0", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"indexName","objectID":"id1"}` - req := search.ApiGetSynonymRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetSynonym(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/indexName/synonyms/id1") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_GetTask(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "getTask0", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"theIndexName","taskID":123}` - req := search.ApiGetTaskRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetTask(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/task/123") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_GetTopUserIds(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "getTopUserIds0", - testFunc: func(t *testing.T) { - _, err := client.GetTopUserIds() - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/clusters/mapping/top") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_GetUserId(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "getUserId0", - testFunc: func(t *testing.T) { - parametersStr := `{"userID":"uniqueID"}` - req := search.ApiGetUserIdRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.GetUserId(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/clusters/mapping/uniqueID") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_HasPendingMappings(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "hasPendingMappings with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{}` - req := search.ApiHasPendingMappingsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.HasPendingMappings(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/clusters/mapping/pending") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - { - name: "hasPendingMappings with parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"getClusters":true}` - req := search.ApiHasPendingMappingsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.HasPendingMappings(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/clusters/mapping/pending") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"getClusters":"true"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_ListApiKeys(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "listApiKeys0", - testFunc: func(t *testing.T) { - _, err := client.ListApiKeys() - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/keys") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_ListClusters(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "listClusters0", - testFunc: func(t *testing.T) { - _, err := client.ListClusters() - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/clusters") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_ListIndices(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "listIndices with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{}` - req := search.ApiListIndicesRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.ListIndices(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - { - name: "listIndices with parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"page":8,"hitsPerPage":3}` - req := search.ApiListIndicesRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.ListIndices(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"page":"8","hitsPerPage":"3"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_ListUserIds(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "listUserIds with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{}` - req := search.ApiListUserIdsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.ListUserIds(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/clusters/mapping") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - }, - }, - { - name: "listUserIds with parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"page":8,"hitsPerPage":100}` - req := search.ApiListUserIdsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.ListUserIds(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/clusters/mapping") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "GET", echo.method) - - require.Nil(t, echo.body) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"page":"8","hitsPerPage":"100"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_MultipleBatch(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "multipleBatch0", - testFunc: func(t *testing.T) { - parametersStr := `{"requests":[{"action":"addObject","body":{"key":"value"},"indexName":"theIndexName"}]}` - req := search.ApiMultipleBatchRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.MultipleBatch(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/*/batch") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"requests":[{"action":"addObject","body":{"key":"value"},"indexName":"theIndexName"}]}`) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_OperationIndex(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "operationIndex0", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"theIndexName","operationIndexParams":{"operation":"copy","destination":"dest","scope":["rules","settings"]}}` - req := search.ApiOperationIndexRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.OperationIndex(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/operation") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"operation":"copy","destination":"dest","scope":["rules","settings"]}`) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_PartialUpdateObject(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "partialUpdateObject0", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"theIndexName","objectID":"uniqueID","attributesToUpdate":{"id1":"test","id2":{"_operation":"AddUnique","value":"test2"}},"createIfNotExists":true}` - req := search.ApiPartialUpdateObjectRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.PartialUpdateObject(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/uniqueID/partial") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"id1":"test","id2":{"_operation":"AddUnique","value":"test2"}}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"createIfNotExists":"true"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_RemoveUserId(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "removeUserId0", - testFunc: func(t *testing.T) { - parametersStr := `{"userID":"uniqueID"}` - req := search.ApiRemoveUserIdRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.RemoveUserId(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/clusters/mapping/uniqueID") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "DELETE", echo.method) - - require.Nil(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_ReplaceSources(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "replaceSources0", - testFunc: func(t *testing.T) { - parametersStr := `{"source":[{"source":"theSource","description":"theDescription"}]}` - req := search.ApiReplaceSourcesRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.ReplaceSources(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/security/sources") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "PUT", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `[{"source":"theSource","description":"theDescription"}]`) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_RestoreApiKey(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "restoreApiKey0", - testFunc: func(t *testing.T) { - parametersStr := `{"key":"myApiKey"}` - req := search.ApiRestoreApiKeyRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.RestoreApiKey(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/keys/myApiKey/restore") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - require.Empty(t, echo.body) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_SaveObject(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "saveObject0", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"theIndexName","body":{"objectID":"id","test":"val"}}` - req := search.ApiSaveObjectRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.SaveObject(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"objectID":"id","test":"val"}`) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_SaveRule(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "saveRule with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"indexName","objectID":"id1","rule":{"objectID":"id1","conditions":[{"pattern":"apple","anchoring":"contains"}]}}` - req := search.ApiSaveRuleRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.SaveRule(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/indexName/rules/id1") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "PUT", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"objectID":"id1","conditions":[{"pattern":"apple","anchoring":"contains"}]}`) - }, - }, - { - name: "saveRule with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"indexName","objectID":"id1","rule":{"objectID":"id1","conditions":[{"pattern":"apple","anchoring":"contains","alternatives":false,"context":"search"}],"consequence":{"params":{"filters":"brand:apple","query":{"remove":["algolia"],"edits":[{"type":"remove","delete":"abc","insert":"cde"},{"type":"replace","delete":"abc","insert":"cde"}]}},"hide":[{"objectID":"321"}],"filterPromotes":false,"userData":{"algolia":"aloglia"},"promote":[{"objectID":"abc","position":3},{"objectIDs":["abc","def"],"position":1}]},"description":"test","enabled":true,"validity":[{"from":1656670273,"until":1656670277}]},"forwardToReplicas":true}` - req := search.ApiSaveRuleRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.SaveRule(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/indexName/rules/id1") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "PUT", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"objectID":"id1","conditions":[{"pattern":"apple","anchoring":"contains","alternatives":false,"context":"search"}],"consequence":{"params":{"filters":"brand:apple","query":{"remove":["algolia"],"edits":[{"type":"remove","delete":"abc","insert":"cde"},{"type":"replace","delete":"abc","insert":"cde"}]}},"hide":[{"objectID":"321"}],"filterPromotes":false,"userData":{"algolia":"aloglia"},"promote":[{"objectID":"abc","position":3},{"objectIDs":["abc","def"],"position":1}]},"description":"test","enabled":true,"validity":[{"from":1656670273,"until":1656670277}]}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"forwardToReplicas":"true"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_SaveRules(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "saveRules with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"indexName","rules":[{"objectID":"a-rule-id","conditions":[{"pattern":"smartphone","anchoring":"contains"}]},{"objectID":"a-second-rule-id","conditions":[{"pattern":"apple","anchoring":"contains"}]}]}` - req := search.ApiSaveRulesRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.SaveRules(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/indexName/rules/batch") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `[{"objectID":"a-rule-id","conditions":[{"pattern":"smartphone","anchoring":"contains"}]},{"objectID":"a-second-rule-id","conditions":[{"pattern":"apple","anchoring":"contains"}]}]`) - }, - }, - { - name: "saveRules with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"indexName","rules":[{"objectID":"id1","conditions":[{"pattern":"apple","anchoring":"contains","alternatives":false,"context":"search"}],"consequence":{"params":{"filters":"brand:apple","query":{"remove":["algolia"],"edits":[{"type":"remove","delete":"abc","insert":"cde"},{"type":"replace","delete":"abc","insert":"cde"}]}},"hide":[{"objectID":"321"}],"filterPromotes":false,"userData":{"algolia":"aloglia"},"promote":[{"objectID":"abc","position":3},{"objectIDs":["abc","def"],"position":1}]},"description":"test","enabled":true,"validity":[{"from":1656670273,"until":1656670277}]}],"forwardToReplicas":true,"clearExistingRules":true}` - req := search.ApiSaveRulesRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.SaveRules(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/indexName/rules/batch") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `[{"objectID":"id1","conditions":[{"pattern":"apple","anchoring":"contains","alternatives":false,"context":"search"}],"consequence":{"params":{"filters":"brand:apple","query":{"remove":["algolia"],"edits":[{"type":"remove","delete":"abc","insert":"cde"},{"type":"replace","delete":"abc","insert":"cde"}]}},"hide":[{"objectID":"321"}],"filterPromotes":false,"userData":{"algolia":"aloglia"},"promote":[{"objectID":"abc","position":3},{"objectIDs":["abc","def"],"position":1}]},"description":"test","enabled":true,"validity":[{"from":1656670273,"until":1656670277}]}]`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"forwardToReplicas":"true","clearExistingRules":"true"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_SaveSynonym(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "saveSynonym0", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"indexName","objectID":"id1","synonymHit":{"objectID":"id1","type":"synonym","synonyms":["car","vehicule","auto"]},"forwardToReplicas":true}` - req := search.ApiSaveSynonymRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.SaveSynonym(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/indexName/synonyms/id1") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "PUT", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"objectID":"id1","type":"synonym","synonyms":["car","vehicule","auto"]}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"forwardToReplicas":"true"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_SaveSynonyms(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "saveSynonyms0", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"indexName","synonymHit":[{"objectID":"id1","type":"synonym","synonyms":["car","vehicule","auto"]},{"objectID":"id2","type":"onewaysynonym","input":"iphone","synonyms":["ephone","aphone","yphone"]}],"forwardToReplicas":true,"replaceExistingSynonyms":false}` - req := search.ApiSaveSynonymsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.SaveSynonyms(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/indexName/synonyms/batch") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `[{"objectID":"id1","type":"synonym","synonyms":["car","vehicule","auto"]},{"objectID":"id2","type":"onewaysynonym","input":"iphone","synonyms":["ephone","aphone","yphone"]}]`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"forwardToReplicas":"true","replaceExistingSynonyms":"false"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_Search(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "search for a single hits request with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"requests":[{"indexName":"cts_e2e_search_empty_index"}]}` - req := search.ApiSearchRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.Search(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/*/queries") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"requests":[{"indexName":"cts_e2e_search_empty_index"}]}`) - }, - }, - { - name: "search for a single facet request with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"requests":[{"indexName":"cts_e2e_search_facet","type":"facet","facet":"editor"}],"strategy":"stopIfEnoughMatches"}` - req := search.ApiSearchRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.Search(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/*/queries") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"requests":[{"indexName":"cts_e2e_search_facet","type":"facet","facet":"editor"}],"strategy":"stopIfEnoughMatches"}`) - }, - }, - { - name: "search for a single hits request with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"requests":[{"indexName":"theIndexName","query":"myQuery","hitsPerPage":50,"type":"default"}]}` - req := search.ApiSearchRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.Search(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/*/queries") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"requests":[{"indexName":"theIndexName","query":"myQuery","hitsPerPage":50,"type":"default"}]}`) - }, - }, - { - name: "search for a single facet request with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"requests":[{"indexName":"theIndexName","type":"facet","facet":"theFacet","facetQuery":"theFacetQuery","query":"theQuery","maxFacetHits":50}],"strategy":"stopIfEnoughMatches"}` - req := search.ApiSearchRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.Search(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/*/queries") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"requests":[{"indexName":"theIndexName","type":"facet","facet":"theFacet","facetQuery":"theFacetQuery","query":"theQuery","maxFacetHits":50}],"strategy":"stopIfEnoughMatches"}`) - }, - }, - { - name: "search for multiple mixed requests in multiple indices with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"requests":[{"indexName":"theIndexName"},{"indexName":"theIndexName2","type":"facet","facet":"theFacet"},{"indexName":"theIndexName","type":"default"}],"strategy":"stopIfEnoughMatches"}` - req := search.ApiSearchRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.Search(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/*/queries") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"requests":[{"indexName":"theIndexName"},{"indexName":"theIndexName2","type":"facet","facet":"theFacet"},{"indexName":"theIndexName","type":"default"}],"strategy":"stopIfEnoughMatches"}`) - }, - }, - { - name: "search for multiple mixed requests in multiple indices with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"requests":[{"indexName":"theIndexName","type":"facet","facet":"theFacet","facetQuery":"theFacetQuery","query":"theQuery","maxFacetHits":50},{"indexName":"theIndexName","query":"myQuery","hitsPerPage":50,"type":"default"}],"strategy":"stopIfEnoughMatches"}` - req := search.ApiSearchRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.Search(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/*/queries") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"requests":[{"indexName":"theIndexName","type":"facet","facet":"theFacet","facetQuery":"theFacetQuery","query":"theQuery","maxFacetHits":50},{"indexName":"theIndexName","query":"myQuery","hitsPerPage":50,"type":"default"}],"strategy":"stopIfEnoughMatches"}`) - }, - }, - { - name: "search filters accept all of the possible shapes", - testFunc: func(t *testing.T) { - parametersStr := `{"requests":[{"indexName":"theIndexName","facetFilters":"mySearch:filters","reRankingApplyFilter":"mySearch:filters","tagFilters":"mySearch:filters","numericFilters":"mySearch:filters","optionalFilters":"mySearch:filters"},{"indexName":"theIndexName","facetFilters":["mySearch:filters",["mySearch:filters"]],"reRankingApplyFilter":["mySearch:filters",["mySearch:filters"]],"tagFilters":["mySearch:filters",["mySearch:filters"]],"numericFilters":["mySearch:filters",["mySearch:filters"]],"optionalFilters":["mySearch:filters",["mySearch:filters"]]}]}` - req := search.ApiSearchRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.Search(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/*/queries") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"requests":[{"indexName":"theIndexName","facetFilters":"mySearch:filters","reRankingApplyFilter":"mySearch:filters","tagFilters":"mySearch:filters","numericFilters":"mySearch:filters","optionalFilters":"mySearch:filters"},{"indexName":"theIndexName","facetFilters":["mySearch:filters",["mySearch:filters"]],"reRankingApplyFilter":["mySearch:filters",["mySearch:filters"]],"tagFilters":["mySearch:filters",["mySearch:filters"]],"numericFilters":["mySearch:filters",["mySearch:filters"]],"optionalFilters":["mySearch:filters",["mySearch:filters"]]}]}`) - }, - }, - { - name: "search with all search parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"requests":[{"advancedSyntax":true,"advancedSyntaxFeatures":["exactPhrase"],"allowTyposOnNumericTokens":true,"alternativesAsExact":["multiWordsSynonym"],"analytics":true,"analyticsTags":[""],"aroundLatLng":"","aroundLatLngViaIP":true,"aroundPrecision":0,"aroundRadius":"all","attributeCriteriaComputedByMinProximity":true,"attributesForFaceting":[""],"attributesToHighlight":[""],"attributesToRetrieve":[""],"attributesToSnippet":[""],"clickAnalytics":true,"customRanking":[""],"decompoundQuery":true,"disableExactOnAttributes":[""],"disableTypoToleranceOnAttributes":[""],"distinct":0,"enableABTest":true,"enablePersonalization":true,"enableReRanking":true,"enableRules":true,"exactOnSingleWordQuery":"attribute","explain":["foo","bar"],"facetFilters":[""],"facetingAfterDistinct":true,"facets":[""],"filters":"","getRankingInfo":true,"highlightPostTag":"","highlightPreTag":"","hitsPerPage":1,"ignorePlurals":false,"indexName":"theIndexName","insideBoundingBox":[[47.3165,4.9665,47.3424,5.0201],[40.9234,2.1185,38.643,1.9916]],"insidePolygon":[[47.3165,4.9665,47.3424,5.0201,47.32,4.9],[40.9234,2.1185,38.643,1.9916,39.2587,2.0104]],"keepDiacriticsOnCharacters":"","length":1,"maxValuesPerFacet":0,"minProximity":1,"minWordSizefor1Typo":0,"minWordSizefor2Typos":0,"minimumAroundRadius":1,"naturalLanguages":[""],"numericFilters":[""],"offset":0,"optionalFilters":[""],"optionalWords":[""],"page":0,"percentileComputation":true,"personalizationImpact":0,"query":"","queryLanguages":[""],"queryType":"prefixAll","ranking":[""],"reRankingApplyFilter":[""],"relevancyStrictness":0,"removeStopWords":true,"removeWordsIfNoResults":"allOptional","renderingContent":{"facetOrdering":{"facets":{"order":["a","b"]},"values":{"a":{"order":["b"],"sortRemainingBy":"count"}}}},"replaceSynonymsInHighlight":true,"responseFields":[""],"restrictHighlightAndSnippetArrays":true,"restrictSearchableAttributes":[""],"ruleContexts":[""],"similarQuery":"","snippetEllipsisText":"","sortFacetValuesBy":"","sumOrFiltersScores":true,"synonyms":true,"tagFilters":[""],"type":"default","typoTolerance":"min","userToken":""}]}` - req := search.ApiSearchRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.Search(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/*/queries") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"requests":[{"advancedSyntax":true,"advancedSyntaxFeatures":["exactPhrase"],"allowTyposOnNumericTokens":true,"alternativesAsExact":["multiWordsSynonym"],"analytics":true,"analyticsTags":[""],"aroundLatLng":"","aroundLatLngViaIP":true,"aroundPrecision":0,"aroundRadius":"all","attributeCriteriaComputedByMinProximity":true,"attributesForFaceting":[""],"attributesToHighlight":[""],"attributesToRetrieve":[""],"attributesToSnippet":[""],"clickAnalytics":true,"customRanking":[""],"decompoundQuery":true,"disableExactOnAttributes":[""],"disableTypoToleranceOnAttributes":[""],"distinct":0,"enableABTest":true,"enablePersonalization":true,"enableReRanking":true,"enableRules":true,"exactOnSingleWordQuery":"attribute","explain":["foo","bar"],"facetFilters":[""],"facetingAfterDistinct":true,"facets":[""],"filters":"","getRankingInfo":true,"highlightPostTag":"","highlightPreTag":"","hitsPerPage":1,"ignorePlurals":false,"indexName":"theIndexName","insideBoundingBox":[[47.3165,4.9665,47.3424,5.0201],[40.9234,2.1185,38.643,1.9916]],"insidePolygon":[[47.3165,4.9665,47.3424,5.0201,47.32,4.9],[40.9234,2.1185,38.643,1.9916,39.2587,2.0104]],"keepDiacriticsOnCharacters":"","length":1,"maxValuesPerFacet":0,"minProximity":1,"minWordSizefor1Typo":0,"minWordSizefor2Typos":0,"minimumAroundRadius":1,"naturalLanguages":[""],"numericFilters":[""],"offset":0,"optionalFilters":[""],"optionalWords":[""],"page":0,"percentileComputation":true,"personalizationImpact":0,"query":"","queryLanguages":[""],"queryType":"prefixAll","ranking":[""],"reRankingApplyFilter":[""],"relevancyStrictness":0,"removeStopWords":true,"removeWordsIfNoResults":"allOptional","renderingContent":{"facetOrdering":{"facets":{"order":["a","b"]},"values":{"a":{"order":["b"],"sortRemainingBy":"count"}}}},"replaceSynonymsInHighlight":true,"responseFields":[""],"restrictHighlightAndSnippetArrays":true,"restrictSearchableAttributes":[""],"ruleContexts":[""],"similarQuery":"","snippetEllipsisText":"","sortFacetValuesBy":"","sumOrFiltersScores":true,"synonyms":true,"tagFilters":[""],"type":"default","typoTolerance":"min","userToken":""}]}`) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_SearchDictionaryEntries(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "get searchDictionaryEntries results with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"dictionaryName":"compounds","searchDictionaryEntriesParams":{"query":"foo"}}` - req := search.ApiSearchDictionaryEntriesRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.SearchDictionaryEntries(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/dictionaries/compounds/search") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"query":"foo"}`) - }, - }, - { - name: "get searchDictionaryEntries results with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"dictionaryName":"compounds","searchDictionaryEntriesParams":{"query":"foo","page":4,"hitsPerPage":2,"language":"fr"}}` - req := search.ApiSearchDictionaryEntriesRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.SearchDictionaryEntries(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/dictionaries/compounds/search") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"query":"foo","page":4,"hitsPerPage":2,"language":"fr"}`) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_SearchForFacetValues(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "get searchForFacetValues results with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"indexName","facetName":"facetName"}` - req := search.ApiSearchForFacetValuesRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.SearchForFacetValues(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/indexName/facets/facetName/query") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{}`) - }, - }, - { - name: "get searchForFacetValues results with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"indexName","facetName":"facetName","searchForFacetValuesRequest":{"params":"query=foo&facetFilters=['bar']","facetQuery":"foo","maxFacetHits":42}}` - req := search.ApiSearchForFacetValuesRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.SearchForFacetValues(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/indexName/facets/facetName/query") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"params":"query=foo&facetFilters=['bar']","facetQuery":"foo","maxFacetHits":42}`) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_SearchRules(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "searchRules0", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"indexName","searchRulesParams":{"query":"something"}}` - req := search.ApiSearchRulesRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.SearchRules(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/indexName/rules/search") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"query":"something"}`) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_SearchSingleIndex(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "search with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"indexName"}` - req := search.ApiSearchSingleIndexRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.SearchSingleIndex(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/indexName/query") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{}`) - }, - }, - { - name: "search with searchParams", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"indexName","searchParams":{"query":"myQuery","facetFilters":["tags:algolia"]}}` - req := search.ApiSearchSingleIndexRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.SearchSingleIndex(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/indexName/query") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"query":"myQuery","facetFilters":["tags:algolia"]}`) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_SearchSynonyms(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "searchSynonyms with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"indexName"}` - req := search.ApiSearchSynonymsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.SearchSynonyms(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/indexName/synonyms/search") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{}`) - }, - }, - { - name: "searchSynonyms with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"indexName","type":"altcorrection1","page":10,"hitsPerPage":10,"searchSynonymsParams":{"query":"myQuery"}}` - req := search.ApiSearchSynonymsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.SearchSynonyms(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/indexName/synonyms/search") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"query":"myQuery"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"type":"altcorrection1","page":"10","hitsPerPage":"10"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_SearchUserIds(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "searchUserIds0", - testFunc: func(t *testing.T) { - parametersStr := `{"query":"test","clusterName":"theClusterName","page":5,"hitsPerPage":10}` - req := search.ApiSearchUserIdsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.SearchUserIds(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/clusters/mapping/search") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "POST", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"query":"test","clusterName":"theClusterName","page":5,"hitsPerPage":10}`) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_SetDictionarySettings(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "get setDictionarySettings results with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"disableStandardEntries":{"plurals":{"fr":false,"en":false,"ru":true}}}` - req := search.ApiSetDictionarySettingsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.SetDictionarySettings(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/dictionaries/*/settings") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "PUT", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"disableStandardEntries":{"plurals":{"fr":false,"en":false,"ru":true}}}`) - }, - }, - { - name: "get setDictionarySettings results with all parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"disableStandardEntries":{"plurals":{"fr":false,"en":false,"ru":true},"stopwords":{"fr":false},"compounds":{"ru":true}}}` - req := search.ApiSetDictionarySettingsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.SetDictionarySettings(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/dictionaries/*/settings") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "PUT", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"disableStandardEntries":{"plurals":{"fr":false,"en":false,"ru":true},"stopwords":{"fr":false},"compounds":{"ru":true}}}`) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_SetSettings(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "setSettings with minimal parameters", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"theIndexName","indexSettings":{"paginationLimitedTo":10},"forwardToReplicas":true}` - req := search.ApiSetSettingsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.SetSettings(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/settings") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "PUT", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"paginationLimitedTo":10}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"forwardToReplicas":"true"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "setSettings allow boolean `typoTolerance`", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"theIndexName","indexSettings":{"typoTolerance":true},"forwardToReplicas":true}` - req := search.ApiSetSettingsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.SetSettings(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/settings") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "PUT", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"typoTolerance":true}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"forwardToReplicas":"true"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "setSettings allow enum `typoTolerance`", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"theIndexName","indexSettings":{"typoTolerance":"min"},"forwardToReplicas":true}` - req := search.ApiSetSettingsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.SetSettings(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/settings") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "PUT", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"typoTolerance":"min"}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"forwardToReplicas":"true"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "setSettings allow boolean `ignorePlurals`", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"theIndexName","indexSettings":{"ignorePlurals":true},"forwardToReplicas":true}` - req := search.ApiSetSettingsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.SetSettings(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/settings") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "PUT", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"ignorePlurals":true}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"forwardToReplicas":"true"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "setSettings allow list of string `ignorePlurals`", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"theIndexName","indexSettings":{"ignorePlurals":["algolia"]},"forwardToReplicas":true}` - req := search.ApiSetSettingsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.SetSettings(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/settings") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "PUT", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"ignorePlurals":["algolia"]}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"forwardToReplicas":"true"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "setSettings allow boolean `removeStopWords`", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"theIndexName","indexSettings":{"removeStopWords":true},"forwardToReplicas":true}` - req := search.ApiSetSettingsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.SetSettings(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/settings") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "PUT", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"removeStopWords":true}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"forwardToReplicas":"true"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "setSettings allow list of string `removeStopWords`", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"theIndexName","indexSettings":{"removeStopWords":["algolia"]},"forwardToReplicas":true}` - req := search.ApiSetSettingsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.SetSettings(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/settings") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "PUT", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"removeStopWords":["algolia"]}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"forwardToReplicas":"true"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "setSettings allow boolean `distinct`", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"theIndexName","indexSettings":{"distinct":true},"forwardToReplicas":true}` - req := search.ApiSetSettingsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.SetSettings(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/settings") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "PUT", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"distinct":true}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"forwardToReplicas":"true"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "setSettings allow integers for `distinct`", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"theIndexName","indexSettings":{"distinct":1},"forwardToReplicas":true}` - req := search.ApiSetSettingsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.SetSettings(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/settings") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "PUT", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"distinct":1}`) - queryParams := map[string]string{} - require.NoError(t, json.Unmarshal([]byte(`{"forwardToReplicas":"true"}`), &queryParams)) - for k, v := range queryParams { - require.Equal(t, v, echo.query.Get(k)) - } - }, - }, - { - name: "setSettings allow all `indexSettings`", - testFunc: func(t *testing.T) { - parametersStr := `{"indexName":"theIndexName","indexSettings":{"advancedSyntax":true,"advancedSyntaxFeatures":["exactPhrase"],"allowCompressionOfIntegerArray":true,"allowTyposOnNumericTokens":true,"alternativesAsExact":["singleWordSynonym"],"attributeCriteriaComputedByMinProximity":true,"attributeForDistinct":"test","attributesForFaceting":["algolia"],"attributesToHighlight":["algolia"],"attributesToRetrieve":["algolia"],"attributesToSnippet":["algolia"],"attributesToTransliterate":["algolia"],"camelCaseAttributes":["algolia"],"customNormalization":{"algolia":{"aloglia":"aglolia"}},"customRanking":["algolia"],"decompoundQuery":false,"decompoundedAttributes":{"algolia":"aloglia"},"disableExactOnAttributes":["algolia"],"disablePrefixOnAttributes":["algolia"],"disableTypoToleranceOnAttributes":["algolia"],"disableTypoToleranceOnWords":["algolia"],"distinct":3,"enablePersonalization":true,"enableReRanking":false,"enableRules":true,"exactOnSingleWordQuery":"attribute","highlightPreTag":"","highlightPostTag":"","hitsPerPage":10,"ignorePlurals":false,"indexLanguages":["algolia"],"keepDiacriticsOnCharacters":"abc","maxFacetHits":20,"maxValuesPerFacet":30,"minProximity":6,"minWordSizefor1Typo":5,"minWordSizefor2Typos":11,"mode":"neuralSearch","numericAttributesForFiltering":["algolia"],"optionalWords":["myspace"],"paginationLimitedTo":0,"queryLanguages":["algolia"],"queryType":"prefixLast","ranking":["geo"],"reRankingApplyFilter":"mySearch:filters","relevancyStrictness":10,"removeStopWords":false,"removeWordsIfNoResults":"lastWords","renderingContent":{"facetOrdering":{"facets":{"order":["a","b"]},"values":{"a":{"order":["b"],"sortRemainingBy":"count"}}}},"replaceSynonymsInHighlight":true,"replicas":[""],"responseFields":["algolia"],"restrictHighlightAndSnippetArrays":true,"searchableAttributes":["foo"],"semanticSearch":{"eventSources":["foo"]},"separatorsToIndex":"bar","snippetEllipsisText":"---","sortFacetValuesBy":"date","typoTolerance":false,"unretrievableAttributes":["foo"],"userData":{"user":"data"}}}` - req := search.ApiSetSettingsRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.SetSettings(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/settings") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "PUT", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"advancedSyntax":true,"advancedSyntaxFeatures":["exactPhrase"],"allowCompressionOfIntegerArray":true,"allowTyposOnNumericTokens":true,"alternativesAsExact":["singleWordSynonym"],"attributeCriteriaComputedByMinProximity":true,"attributeForDistinct":"test","attributesForFaceting":["algolia"],"attributesToHighlight":["algolia"],"attributesToRetrieve":["algolia"],"attributesToSnippet":["algolia"],"attributesToTransliterate":["algolia"],"camelCaseAttributes":["algolia"],"customNormalization":{"algolia":{"aloglia":"aglolia"}},"customRanking":["algolia"],"decompoundQuery":false,"decompoundedAttributes":{"algolia":"aloglia"},"disableExactOnAttributes":["algolia"],"disablePrefixOnAttributes":["algolia"],"disableTypoToleranceOnAttributes":["algolia"],"disableTypoToleranceOnWords":["algolia"],"distinct":3,"enablePersonalization":true,"enableReRanking":false,"enableRules":true,"exactOnSingleWordQuery":"attribute","highlightPreTag":"","highlightPostTag":"","hitsPerPage":10,"ignorePlurals":false,"indexLanguages":["algolia"],"keepDiacriticsOnCharacters":"abc","maxFacetHits":20,"maxValuesPerFacet":30,"minProximity":6,"minWordSizefor1Typo":5,"minWordSizefor2Typos":11,"mode":"neuralSearch","numericAttributesForFiltering":["algolia"],"optionalWords":["myspace"],"paginationLimitedTo":0,"queryLanguages":["algolia"],"queryType":"prefixLast","ranking":["geo"],"reRankingApplyFilter":"mySearch:filters","relevancyStrictness":10,"removeStopWords":false,"removeWordsIfNoResults":"lastWords","renderingContent":{"facetOrdering":{"facets":{"order":["a","b"]},"values":{"a":{"order":["b"],"sortRemainingBy":"count"}}}},"replaceSynonymsInHighlight":true,"replicas":[""],"responseFields":["algolia"],"restrictHighlightAndSnippetArrays":true,"searchableAttributes":["foo"],"semanticSearch":{"eventSources":["foo"]},"separatorsToIndex":"bar","snippetEllipsisText":"---","sortFacetValuesBy":"date","typoTolerance":false,"unretrievableAttributes":["foo"],"userData":{"user":"data"}}`) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} - -func TestSearch_UpdateApiKey(t *testing.T) { - client, echo := createSearchClient() - - tests := []struct { - name string - testFunc func(t *testing.T) - }{ - { - name: "updateApiKey0", - testFunc: func(t *testing.T) { - parametersStr := `{"key":"myApiKey","apiKey":{"acl":["search","addObject"],"validity":300,"maxQueriesPerIPPerHour":100,"maxHitsPerQuery":20}}` - req := search.ApiUpdateApiKeyRequest{} - require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) - _, err := client.UpdateApiKey(req) - require.NoError(t, err) - - expectedPath, err := url.QueryUnescape("/1/keys/myApiKey") - require.NoError(t, err) - require.Equal(t, expectedPath, echo.path) - require.Equal(t, "PUT", echo.method) - - ja := jsonassert.New(t) - ja.Assertf(*echo.body, `{"acl":["search","addObject"],"validity":300,"maxQueriesPerIPPerHour":100,"maxHitsPerQuery":20}`) - }, - }, - } - for _, test := range tests { - test := test - t.Run(test.name, func(t *testing.T) { - test.testFunc(t) - }) - } -} diff --git a/tests/output/java/src/test/java/com/algolia/methods/requests/Abtesting.test.java b/tests/output/java/src/test/java/com/algolia/methods/requests/Abtesting.test.java deleted file mode 100644 index 727a6472e7..0000000000 --- a/tests/output/java/src/test/java/com/algolia/methods/requests/Abtesting.test.java +++ /dev/null @@ -1,764 +0,0 @@ -package com.algolia.methods.requests; - -import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNull; -import static org.junit.jupiter.api.Assertions.fail; - -import com.algolia.EchoInterceptor; -import com.algolia.EchoResponse; -import com.algolia.api.AbtestingClient; -import com.algolia.config.*; -import com.algolia.model.abtesting.*; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.json.JsonMapper; -import java.util.*; -import org.junit.jupiter.api.*; -import org.skyscreamer.jsonassert.JSONAssert; -import org.skyscreamer.jsonassert.JSONCompareMode; - -@TestInstance(TestInstance.Lifecycle.PER_CLASS) -class AbtestingClientRequestsTests { - - private AbtestingClient client; - private EchoInterceptor echo; - private ObjectMapper json; - - @BeforeAll - void init() { - this.json = JsonMapper.builder().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false).build(); - this.echo = new EchoInterceptor(); - var options = ClientOptions.builder().setRequesterConfig(requester -> requester.addInterceptor(echo)).build(); - this.client = new AbtestingClient("appId", "apiKey", "us", options); - } - - @AfterAll - void tearUp() throws Exception { - client.close(); - } - - @Test - @DisplayName("addABTests with minimal parameters") - void addABTestsTest0() { - AddABTestsRequest addABTestsRequest0 = new AddABTestsRequest(); - { - String endAt1 = "2022-12-31T00:00:00.000Z"; - addABTestsRequest0.setEndAt(endAt1); - String name1 = "myABTest"; - addABTestsRequest0.setName(name1); - List variants1 = new ArrayList<>(); - { - AbTestsVariant variants_02 = new AbTestsVariant(); - { - String index3 = "AB_TEST_1"; - variants_02.setIndex(index3); - int trafficPercentage3 = 30; - variants_02.setTrafficPercentage(trafficPercentage3); - } - variants1.add(variants_02); - AbTestsVariant variants_12 = new AbTestsVariant(); - { - String index3 = "AB_TEST_2"; - variants_12.setIndex(index3); - int trafficPercentage3 = 50; - variants_12.setTrafficPercentage(trafficPercentage3); - } - variants1.add(variants_12); - } - addABTestsRequest0.setVariants(variants1); - } - - assertDoesNotThrow(() -> { - client.addABTests(addABTestsRequest0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/2/abtests", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals( - "{\"endAt\":\"2022-12-31T00:00:00.000Z\",\"name\":\"myABTest\",\"variants\":[{\"index\":\"AB_TEST_1\",\"trafficPercentage\":30},{\"index\":\"AB_TEST_2\",\"trafficPercentage\":50}]}", - req.body, - JSONCompareMode.STRICT - ) - ); - } - - @Test - @DisplayName("allow del method for a custom path with minimal parameters") - void customDeleteTest0() { - String path0 = "/test/minimal"; - - assertDoesNotThrow(() -> { - client.customDelete(path0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/minimal", req.path); - assertEquals("DELETE", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("allow del method for a custom path with all parameters") - void customDeleteTest1() { - String path0 = "/test/all"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - - assertDoesNotThrow(() -> { - client.customDelete(path0, parameters0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/all", req.path); - assertEquals("DELETE", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("allow get method for a custom path with minimal parameters") - void customGetTest0() { - String path0 = "/test/minimal"; - - assertDoesNotThrow(() -> { - client.customGet(path0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/minimal", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("allow get method for a custom path with all parameters") - void customGetTest1() { - String path0 = "/test/all"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - - assertDoesNotThrow(() -> { - client.customGet(path0, parameters0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/all", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("allow post method for a custom path with minimal parameters") - void customPostTest0() { - String path0 = "/test/minimal"; - - assertDoesNotThrow(() -> { - client.customPost(path0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/minimal", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{}", req.body, JSONCompareMode.STRICT)); - } - - @Test - @DisplayName("allow post method for a custom path with all parameters") - void customPostTest1() { - String path0 = "/test/all"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String body1 = "parameters"; - body0.put("body", body1); - } - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/all", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"body\":\"parameters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions can override default query parameters") - void customPostTest2() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("query", "myQueryParameter"); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"myQueryParameter\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions merges query parameters with default ones") - void customPostTest3() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("query2", "myQueryParameter"); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"parameters\",\"query2\":\"myQueryParameter\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions can override default headers") - void customPostTest4() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraHeader("x-algolia-api-key", "myApiKey"); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - - try { - Map expectedHeaders = json.readValue( - "{\"x-algolia-api-key\":\"myApiKey\"}", - new TypeReference>() {} - ); - Map actualHeaders = req.headers; - - for (Map.Entry p : expectedHeaders.entrySet()) { - assertEquals(p.getValue(), actualHeaders.get(p.getKey())); - } - } catch (JsonProcessingException e) { - fail("failed to parse headers json"); - } - } - - @Test - @DisplayName("requestOptions merges headers with default ones") - void customPostTest5() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraHeader("x-algolia-api-key", "myApiKey"); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - - try { - Map expectedHeaders = json.readValue( - "{\"x-algolia-api-key\":\"myApiKey\"}", - new TypeReference>() {} - ); - Map actualHeaders = req.headers; - - for (Map.Entry p : expectedHeaders.entrySet()) { - assertEquals(p.getValue(), actualHeaders.get(p.getKey())); - } - } catch (JsonProcessingException e) { - fail("failed to parse headers json"); - } - } - - @Test - @DisplayName("requestOptions queryParameters accepts booleans") - void customPostTest6() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("isItWorking", true); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"parameters\",\"isItWorking\":\"true\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions queryParameters accepts integers") - void customPostTest7() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("myParam", 2); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"parameters\",\"myParam\":\"2\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions queryParameters accepts list of string") - void customPostTest8() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("myParam", Arrays.asList("c", "d")); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"parameters\",\"myParam\":\"c,d\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions queryParameters accepts list of booleans") - void customPostTest9() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("myParam", Arrays.asList(true, true, false)); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"parameters\",\"myParam\":\"true,true,false\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions queryParameters accepts list of integers") - void customPostTest10() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("myParam", Arrays.asList(1, 2)); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"parameters\",\"myParam\":\"1,2\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("allow put method for a custom path with minimal parameters") - void customPutTest0() { - String path0 = "/test/minimal"; - - assertDoesNotThrow(() -> { - client.customPut(path0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/minimal", req.path); - assertEquals("PUT", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{}", req.body, JSONCompareMode.STRICT)); - } - - @Test - @DisplayName("allow put method for a custom path with all parameters") - void customPutTest1() { - String path0 = "/test/all"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String body1 = "parameters"; - body0.put("body", body1); - } - - assertDoesNotThrow(() -> { - client.customPut(path0, parameters0, body0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/all", req.path); - assertEquals("PUT", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"body\":\"parameters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("deleteABTest") - void deleteABTestTest0() { - int id0 = 42; - - assertDoesNotThrow(() -> { - client.deleteABTest(id0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/2/abtests/42", req.path); - assertEquals("DELETE", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("getABTest") - void getABTestTest0() { - int id0 = 42; - - assertDoesNotThrow(() -> { - client.getABTest(id0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/2/abtests/42", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("listABTests with minimal parameters") - void listABTestsTest0() { - assertDoesNotThrow(() -> { - client.listABTests(); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/2/abtests", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("listABTests with parameters") - void listABTestsTest1() { - int offset0 = 42; - int limit0 = 21; - String indexPrefix0 = "foo"; - String indexSuffix0 = "bar"; - - assertDoesNotThrow(() -> { - client.listABTests(offset0, limit0, indexPrefix0, indexSuffix0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/2/abtests", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue( - "{\"offset\":\"42\",\"limit\":\"21\",\"indexPrefix\":\"foo\",\"indexSuffix\":\"bar\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("stopABTest") - void stopABTestTest0() { - int id0 = 42; - - assertDoesNotThrow(() -> { - client.stopABTest(id0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/2/abtests/42/stop", req.path); - assertEquals("POST", req.method); - assertEquals("{}", req.body); - } -} diff --git a/tests/output/java/src/test/java/com/algolia/methods/requests/Analytics.test.java b/tests/output/java/src/test/java/com/algolia/methods/requests/Analytics.test.java deleted file mode 100644 index b40f1f4091..0000000000 --- a/tests/output/java/src/test/java/com/algolia/methods/requests/Analytics.test.java +++ /dev/null @@ -1,1675 +0,0 @@ -package com.algolia.methods.requests; - -import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNull; -import static org.junit.jupiter.api.Assertions.fail; - -import com.algolia.EchoInterceptor; -import com.algolia.EchoResponse; -import com.algolia.api.AnalyticsClient; -import com.algolia.config.*; -import com.algolia.model.analytics.*; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.json.JsonMapper; -import java.util.*; -import org.junit.jupiter.api.*; -import org.skyscreamer.jsonassert.JSONAssert; -import org.skyscreamer.jsonassert.JSONCompareMode; - -@TestInstance(TestInstance.Lifecycle.PER_CLASS) -class AnalyticsClientRequestsTests { - - private AnalyticsClient client; - private EchoInterceptor echo; - private ObjectMapper json; - - @BeforeAll - void init() { - this.json = JsonMapper.builder().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false).build(); - this.echo = new EchoInterceptor(); - var options = ClientOptions.builder().setRequesterConfig(requester -> requester.addInterceptor(echo)).build(); - this.client = new AnalyticsClient("appId", "apiKey", "us", options); - } - - @AfterAll - void tearUp() throws Exception { - client.close(); - } - - @Test - @DisplayName("allow del method for a custom path with minimal parameters") - void customDeleteTest0() { - String path0 = "/test/minimal"; - - assertDoesNotThrow(() -> { - client.customDelete(path0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/minimal", req.path); - assertEquals("DELETE", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("allow del method for a custom path with all parameters") - void customDeleteTest1() { - String path0 = "/test/all"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - - assertDoesNotThrow(() -> { - client.customDelete(path0, parameters0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/all", req.path); - assertEquals("DELETE", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("allow get method for a custom path with minimal parameters") - void customGetTest0() { - String path0 = "/test/minimal"; - - assertDoesNotThrow(() -> { - client.customGet(path0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/minimal", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("allow get method for a custom path with all parameters") - void customGetTest1() { - String path0 = "/test/all"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - - assertDoesNotThrow(() -> { - client.customGet(path0, parameters0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/all", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("allow post method for a custom path with minimal parameters") - void customPostTest0() { - String path0 = "/test/minimal"; - - assertDoesNotThrow(() -> { - client.customPost(path0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/minimal", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{}", req.body, JSONCompareMode.STRICT)); - } - - @Test - @DisplayName("allow post method for a custom path with all parameters") - void customPostTest1() { - String path0 = "/test/all"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String body1 = "parameters"; - body0.put("body", body1); - } - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/all", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"body\":\"parameters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions can override default query parameters") - void customPostTest2() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("query", "myQueryParameter"); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"myQueryParameter\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions merges query parameters with default ones") - void customPostTest3() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("query2", "myQueryParameter"); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"parameters\",\"query2\":\"myQueryParameter\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions can override default headers") - void customPostTest4() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraHeader("x-algolia-api-key", "myApiKey"); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - - try { - Map expectedHeaders = json.readValue( - "{\"x-algolia-api-key\":\"myApiKey\"}", - new TypeReference>() {} - ); - Map actualHeaders = req.headers; - - for (Map.Entry p : expectedHeaders.entrySet()) { - assertEquals(p.getValue(), actualHeaders.get(p.getKey())); - } - } catch (JsonProcessingException e) { - fail("failed to parse headers json"); - } - } - - @Test - @DisplayName("requestOptions merges headers with default ones") - void customPostTest5() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraHeader("x-algolia-api-key", "myApiKey"); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - - try { - Map expectedHeaders = json.readValue( - "{\"x-algolia-api-key\":\"myApiKey\"}", - new TypeReference>() {} - ); - Map actualHeaders = req.headers; - - for (Map.Entry p : expectedHeaders.entrySet()) { - assertEquals(p.getValue(), actualHeaders.get(p.getKey())); - } - } catch (JsonProcessingException e) { - fail("failed to parse headers json"); - } - } - - @Test - @DisplayName("requestOptions queryParameters accepts booleans") - void customPostTest6() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("isItWorking", true); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"parameters\",\"isItWorking\":\"true\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions queryParameters accepts integers") - void customPostTest7() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("myParam", 2); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"parameters\",\"myParam\":\"2\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions queryParameters accepts list of string") - void customPostTest8() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("myParam", Arrays.asList("c", "d")); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"parameters\",\"myParam\":\"c,d\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions queryParameters accepts list of booleans") - void customPostTest9() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("myParam", Arrays.asList(true, true, false)); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"parameters\",\"myParam\":\"true,true,false\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions queryParameters accepts list of integers") - void customPostTest10() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("myParam", Arrays.asList(1, 2)); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"parameters\",\"myParam\":\"1,2\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("allow put method for a custom path with minimal parameters") - void customPutTest0() { - String path0 = "/test/minimal"; - - assertDoesNotThrow(() -> { - client.customPut(path0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/minimal", req.path); - assertEquals("PUT", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{}", req.body, JSONCompareMode.STRICT)); - } - - @Test - @DisplayName("allow put method for a custom path with all parameters") - void customPutTest1() { - String path0 = "/test/all"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String body1 = "parameters"; - body0.put("body", body1); - } - - assertDoesNotThrow(() -> { - client.customPut(path0, parameters0, body0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/all", req.path); - assertEquals("PUT", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"body\":\"parameters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("get getAverageClickPosition with minimal parameters") - void getAverageClickPositionTest0() { - String index0 = "index"; - - assertDoesNotThrow(() -> { - client.getAverageClickPosition(index0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/2/clicks/averageClickPosition", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue("{\"index\":\"index\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("get getAverageClickPosition with all parameters") - void getAverageClickPositionTest1() { - String index0 = "index"; - String startDate0 = "1999-09-19"; - String endDate0 = "2001-01-01"; - String tags0 = "tag"; - - assertDoesNotThrow(() -> { - client.getAverageClickPosition(index0, startDate0, endDate0, tags0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/2/clicks/averageClickPosition", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue( - "{\"index\":\"index\",\"startDate\":\"1999-09-19\",\"endDate\":\"2001-01-01\",\"tags\":\"tag\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("get getClickPositions with minimal parameters") - void getClickPositionsTest0() { - String index0 = "index"; - - assertDoesNotThrow(() -> { - client.getClickPositions(index0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/2/clicks/positions", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue("{\"index\":\"index\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("get getClickPositions with all parameters") - void getClickPositionsTest1() { - String index0 = "index"; - String startDate0 = "1999-09-19"; - String endDate0 = "2001-01-01"; - String tags0 = "tag"; - - assertDoesNotThrow(() -> { - client.getClickPositions(index0, startDate0, endDate0, tags0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/2/clicks/positions", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue( - "{\"index\":\"index\",\"startDate\":\"1999-09-19\",\"endDate\":\"2001-01-01\",\"tags\":\"tag\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("get getClickThroughRate with minimal parameters") - void getClickThroughRateTest0() { - String index0 = "index"; - - assertDoesNotThrow(() -> { - client.getClickThroughRate(index0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/2/clicks/clickThroughRate", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue("{\"index\":\"index\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("get getClickThroughRate with all parameters") - void getClickThroughRateTest1() { - String index0 = "index"; - String startDate0 = "1999-09-19"; - String endDate0 = "2001-01-01"; - String tags0 = "tag"; - - assertDoesNotThrow(() -> { - client.getClickThroughRate(index0, startDate0, endDate0, tags0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/2/clicks/clickThroughRate", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue( - "{\"index\":\"index\",\"startDate\":\"1999-09-19\",\"endDate\":\"2001-01-01\",\"tags\":\"tag\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("get getConversationRate with minimal parameters") - void getConversationRateTest0() { - String index0 = "index"; - - assertDoesNotThrow(() -> { - client.getConversationRate(index0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/2/conversions/conversionRate", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue("{\"index\":\"index\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("get getConversationRate with all parameters") - void getConversationRateTest1() { - String index0 = "index"; - String startDate0 = "1999-09-19"; - String endDate0 = "2001-01-01"; - String tags0 = "tag"; - - assertDoesNotThrow(() -> { - client.getConversationRate(index0, startDate0, endDate0, tags0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/2/conversions/conversionRate", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue( - "{\"index\":\"index\",\"startDate\":\"1999-09-19\",\"endDate\":\"2001-01-01\",\"tags\":\"tag\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("get getNoClickRate with minimal parameters") - void getNoClickRateTest0() { - String index0 = "index"; - - assertDoesNotThrow(() -> { - client.getNoClickRate(index0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/2/searches/noClickRate", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue("{\"index\":\"index\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("get getNoClickRate with all parameters") - void getNoClickRateTest1() { - String index0 = "index"; - String startDate0 = "1999-09-19"; - String endDate0 = "2001-01-01"; - String tags0 = "tag"; - - assertDoesNotThrow(() -> { - client.getNoClickRate(index0, startDate0, endDate0, tags0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/2/searches/noClickRate", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue( - "{\"index\":\"index\",\"startDate\":\"1999-09-19\",\"endDate\":\"2001-01-01\",\"tags\":\"tag\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("get getNoResultsRate with minimal parameters") - void getNoResultsRateTest0() { - String index0 = "index"; - - assertDoesNotThrow(() -> { - client.getNoResultsRate(index0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/2/searches/noResultRate", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue("{\"index\":\"index\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("get getNoResultsRate with all parameters") - void getNoResultsRateTest1() { - String index0 = "index"; - String startDate0 = "1999-09-19"; - String endDate0 = "2001-01-01"; - String tags0 = "tag"; - - assertDoesNotThrow(() -> { - client.getNoResultsRate(index0, startDate0, endDate0, tags0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/2/searches/noResultRate", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue( - "{\"index\":\"index\",\"startDate\":\"1999-09-19\",\"endDate\":\"2001-01-01\",\"tags\":\"tag\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("get getSearchesCount with minimal parameters") - void getSearchesCountTest0() { - String index0 = "index"; - - assertDoesNotThrow(() -> { - client.getSearchesCount(index0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/2/searches/count", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue("{\"index\":\"index\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("get getSearchesCount with all parameters") - void getSearchesCountTest1() { - String index0 = "index"; - String startDate0 = "1999-09-19"; - String endDate0 = "2001-01-01"; - String tags0 = "tag"; - - assertDoesNotThrow(() -> { - client.getSearchesCount(index0, startDate0, endDate0, tags0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/2/searches/count", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue( - "{\"index\":\"index\",\"startDate\":\"1999-09-19\",\"endDate\":\"2001-01-01\",\"tags\":\"tag\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("get getSearchesNoClicks with minimal parameters") - void getSearchesNoClicksTest0() { - String index0 = "index"; - - assertDoesNotThrow(() -> { - client.getSearchesNoClicks(index0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/2/searches/noClicks", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue("{\"index\":\"index\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("get getSearchesNoClicks with all parameters") - void getSearchesNoClicksTest1() { - String index0 = "index"; - String startDate0 = "1999-09-19"; - String endDate0 = "2001-01-01"; - int limit0 = 21; - int offset0 = 42; - String tags0 = "tag"; - - assertDoesNotThrow(() -> { - client.getSearchesNoClicks(index0, startDate0, endDate0, limit0, offset0, tags0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/2/searches/noClicks", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue( - "{\"index\":\"index\",\"startDate\":\"1999-09-19\",\"endDate\":\"2001-01-01\",\"limit\":\"21\",\"offset\":\"42\",\"tags\":\"tag\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("get getSearchesNoResults with minimal parameters") - void getSearchesNoResultsTest0() { - String index0 = "index"; - - assertDoesNotThrow(() -> { - client.getSearchesNoResults(index0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/2/searches/noResults", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue("{\"index\":\"index\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("get getSearchesNoResults with all parameters") - void getSearchesNoResultsTest1() { - String index0 = "index"; - String startDate0 = "1999-09-19"; - String endDate0 = "2001-01-01"; - int limit0 = 21; - int offset0 = 42; - String tags0 = "tag"; - - assertDoesNotThrow(() -> { - client.getSearchesNoResults(index0, startDate0, endDate0, limit0, offset0, tags0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/2/searches/noResults", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue( - "{\"index\":\"index\",\"startDate\":\"1999-09-19\",\"endDate\":\"2001-01-01\",\"limit\":\"21\",\"offset\":\"42\",\"tags\":\"tag\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("get getStatus with minimal parameters") - void getStatusTest0() { - String index0 = "index"; - - assertDoesNotThrow(() -> { - client.getStatus(index0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/2/status", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue("{\"index\":\"index\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("get getTopCountries with minimal parameters") - void getTopCountriesTest0() { - String index0 = "index"; - - assertDoesNotThrow(() -> { - client.getTopCountries(index0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/2/countries", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue("{\"index\":\"index\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("get getTopCountries with all parameters") - void getTopCountriesTest1() { - String index0 = "index"; - String startDate0 = "1999-09-19"; - String endDate0 = "2001-01-01"; - int limit0 = 21; - int offset0 = 42; - String tags0 = "tag"; - - assertDoesNotThrow(() -> { - client.getTopCountries(index0, startDate0, endDate0, limit0, offset0, tags0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/2/countries", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue( - "{\"index\":\"index\",\"startDate\":\"1999-09-19\",\"endDate\":\"2001-01-01\",\"limit\":\"21\",\"offset\":\"42\",\"tags\":\"tag\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("get getTopFilterAttributes with minimal parameters") - void getTopFilterAttributesTest0() { - String index0 = "index"; - - assertDoesNotThrow(() -> { - client.getTopFilterAttributes(index0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/2/filters", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue("{\"index\":\"index\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("get getTopFilterAttributes with all parameters") - void getTopFilterAttributesTest1() { - String index0 = "index"; - String search0 = "mySearch"; - String startDate0 = "1999-09-19"; - String endDate0 = "2001-01-01"; - int limit0 = 21; - int offset0 = 42; - String tags0 = "tag"; - - assertDoesNotThrow(() -> { - client.getTopFilterAttributes(index0, search0, startDate0, endDate0, limit0, offset0, tags0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/2/filters", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue( - "{\"index\":\"index\",\"search\":\"mySearch\",\"startDate\":\"1999-09-19\",\"endDate\":\"2001-01-01\",\"limit\":\"21\",\"offset\":\"42\",\"tags\":\"tag\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("get getTopFilterForAttribute with minimal parameters") - void getTopFilterForAttributeTest0() { - String attribute0 = "myAttribute"; - String index0 = "index"; - - assertDoesNotThrow(() -> { - client.getTopFilterForAttribute(attribute0, index0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/2/filters/myAttribute", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue("{\"index\":\"index\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("get getTopFilterForAttribute with minimal parameters and multiple attributes") - void getTopFilterForAttributeTest1() { - String attribute0 = "myAttribute1,myAttribute2"; - String index0 = "index"; - - assertDoesNotThrow(() -> { - client.getTopFilterForAttribute(attribute0, index0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/2/filters/myAttribute1%2CmyAttribute2", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue("{\"index\":\"index\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("get getTopFilterForAttribute with all parameters") - void getTopFilterForAttributeTest2() { - String attribute0 = "myAttribute"; - String index0 = "index"; - String search0 = "mySearch"; - String startDate0 = "1999-09-19"; - String endDate0 = "2001-01-01"; - int limit0 = 21; - int offset0 = 42; - String tags0 = "tag"; - - assertDoesNotThrow(() -> { - client.getTopFilterForAttribute(attribute0, index0, search0, startDate0, endDate0, limit0, offset0, tags0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/2/filters/myAttribute", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue( - "{\"index\":\"index\",\"search\":\"mySearch\",\"startDate\":\"1999-09-19\",\"endDate\":\"2001-01-01\",\"limit\":\"21\",\"offset\":\"42\",\"tags\":\"tag\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("get getTopFilterForAttribute with all parameters and multiple attributes") - void getTopFilterForAttributeTest3() { - String attribute0 = "myAttribute1,myAttribute2"; - String index0 = "index"; - String search0 = "mySearch"; - String startDate0 = "1999-09-19"; - String endDate0 = "2001-01-01"; - int limit0 = 21; - int offset0 = 42; - String tags0 = "tag"; - - assertDoesNotThrow(() -> { - client.getTopFilterForAttribute(attribute0, index0, search0, startDate0, endDate0, limit0, offset0, tags0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/2/filters/myAttribute1%2CmyAttribute2", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue( - "{\"index\":\"index\",\"search\":\"mySearch\",\"startDate\":\"1999-09-19\",\"endDate\":\"2001-01-01\",\"limit\":\"21\",\"offset\":\"42\",\"tags\":\"tag\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("get getTopFiltersNoResults with minimal parameters") - void getTopFiltersNoResultsTest0() { - String index0 = "index"; - - assertDoesNotThrow(() -> { - client.getTopFiltersNoResults(index0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/2/filters/noResults", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue("{\"index\":\"index\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("get getTopFiltersNoResults with all parameters") - void getTopFiltersNoResultsTest1() { - String index0 = "index"; - String search0 = "mySearch"; - String startDate0 = "1999-09-19"; - String endDate0 = "2001-01-01"; - int limit0 = 21; - int offset0 = 42; - String tags0 = "tag"; - - assertDoesNotThrow(() -> { - client.getTopFiltersNoResults(index0, search0, startDate0, endDate0, limit0, offset0, tags0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/2/filters/noResults", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue( - "{\"index\":\"index\",\"search\":\"mySearch\",\"startDate\":\"1999-09-19\",\"endDate\":\"2001-01-01\",\"limit\":\"21\",\"offset\":\"42\",\"tags\":\"tag\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("get getTopHits with minimal parameters") - void getTopHitsTest0() { - String index0 = "index"; - - assertDoesNotThrow(() -> { - client.getTopHits(index0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/2/hits", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue("{\"index\":\"index\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("get getTopHits with all parameters") - void getTopHitsTest1() { - String index0 = "index"; - String search0 = "mySearch"; - boolean clickAnalytics0 = true; - String startDate0 = "1999-09-19"; - String endDate0 = "2001-01-01"; - int limit0 = 21; - int offset0 = 42; - String tags0 = "tag"; - - assertDoesNotThrow(() -> { - client.getTopHits(index0, search0, clickAnalytics0, startDate0, endDate0, limit0, offset0, tags0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/2/hits", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue( - "{\"index\":\"index\",\"search\":\"mySearch\",\"clickAnalytics\":\"true\",\"startDate\":\"1999-09-19\",\"endDate\":\"2001-01-01\",\"limit\":\"21\",\"offset\":\"42\",\"tags\":\"tag\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("get getTopSearches with minimal parameters") - void getTopSearchesTest0() { - String index0 = "index"; - - assertDoesNotThrow(() -> { - client.getTopSearches(index0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/2/searches", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue("{\"index\":\"index\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("get getTopSearches with all parameters") - void getTopSearchesTest1() { - String index0 = "index"; - boolean clickAnalytics0 = true; - String startDate0 = "1999-09-19"; - String endDate0 = "2001-01-01"; - OrderBy orderBy0 = OrderBy.fromValue("searchCount"); - Direction direction0 = Direction.fromValue("asc"); - int limit0 = 21; - int offset0 = 42; - String tags0 = "tag"; - - assertDoesNotThrow(() -> { - client.getTopSearches(index0, clickAnalytics0, startDate0, endDate0, orderBy0, direction0, limit0, offset0, tags0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/2/searches", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue( - "{\"index\":\"index\",\"clickAnalytics\":\"true\",\"startDate\":\"1999-09-19\",\"endDate\":\"2001-01-01\",\"orderBy\":\"searchCount\",\"direction\":\"asc\",\"limit\":\"21\",\"offset\":\"42\",\"tags\":\"tag\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("get getUsersCount with minimal parameters") - void getUsersCountTest0() { - String index0 = "index"; - - assertDoesNotThrow(() -> { - client.getUsersCount(index0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/2/users/count", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue("{\"index\":\"index\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("get getUsersCount with all parameters") - void getUsersCountTest1() { - String index0 = "index"; - String startDate0 = "1999-09-19"; - String endDate0 = "2001-01-01"; - String tags0 = "tag"; - - assertDoesNotThrow(() -> { - client.getUsersCount(index0, startDate0, endDate0, tags0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/2/users/count", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue( - "{\"index\":\"index\",\"startDate\":\"1999-09-19\",\"endDate\":\"2001-01-01\",\"tags\":\"tag\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } -} diff --git a/tests/output/java/src/test/java/com/algolia/methods/requests/Insights.test.java b/tests/output/java/src/test/java/com/algolia/methods/requests/Insights.test.java deleted file mode 100644 index be6be044da..0000000000 --- a/tests/output/java/src/test/java/com/algolia/methods/requests/Insights.test.java +++ /dev/null @@ -1,958 +0,0 @@ -package com.algolia.methods.requests; - -import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNull; -import static org.junit.jupiter.api.Assertions.fail; - -import com.algolia.EchoInterceptor; -import com.algolia.EchoResponse; -import com.algolia.api.InsightsClient; -import com.algolia.config.*; -import com.algolia.model.insights.*; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.json.JsonMapper; -import java.util.*; -import org.junit.jupiter.api.*; -import org.skyscreamer.jsonassert.JSONAssert; -import org.skyscreamer.jsonassert.JSONCompareMode; - -@TestInstance(TestInstance.Lifecycle.PER_CLASS) -class InsightsClientRequestsTests { - - private InsightsClient client; - private EchoInterceptor echo; - private ObjectMapper json; - - @BeforeAll - void init() { - this.json = JsonMapper.builder().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false).build(); - this.echo = new EchoInterceptor(); - var options = ClientOptions.builder().setRequesterConfig(requester -> requester.addInterceptor(echo)).build(); - this.client = new InsightsClient("appId", "apiKey", "us", options); - } - - @AfterAll - void tearUp() throws Exception { - client.close(); - } - - @Test - @DisplayName("allow del method for a custom path with minimal parameters") - void customDeleteTest0() { - String path0 = "/test/minimal"; - - assertDoesNotThrow(() -> { - client.customDelete(path0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/minimal", req.path); - assertEquals("DELETE", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("allow del method for a custom path with all parameters") - void customDeleteTest1() { - String path0 = "/test/all"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - - assertDoesNotThrow(() -> { - client.customDelete(path0, parameters0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/all", req.path); - assertEquals("DELETE", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("allow get method for a custom path with minimal parameters") - void customGetTest0() { - String path0 = "/test/minimal"; - - assertDoesNotThrow(() -> { - client.customGet(path0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/minimal", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("allow get method for a custom path with all parameters") - void customGetTest1() { - String path0 = "/test/all"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - - assertDoesNotThrow(() -> { - client.customGet(path0, parameters0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/all", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("allow post method for a custom path with minimal parameters") - void customPostTest0() { - String path0 = "/test/minimal"; - - assertDoesNotThrow(() -> { - client.customPost(path0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/minimal", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{}", req.body, JSONCompareMode.STRICT)); - } - - @Test - @DisplayName("allow post method for a custom path with all parameters") - void customPostTest1() { - String path0 = "/test/all"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String body1 = "parameters"; - body0.put("body", body1); - } - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/all", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"body\":\"parameters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions can override default query parameters") - void customPostTest2() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("query", "myQueryParameter"); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"myQueryParameter\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions merges query parameters with default ones") - void customPostTest3() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("query2", "myQueryParameter"); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"parameters\",\"query2\":\"myQueryParameter\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions can override default headers") - void customPostTest4() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraHeader("x-algolia-api-key", "myApiKey"); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - - try { - Map expectedHeaders = json.readValue( - "{\"x-algolia-api-key\":\"myApiKey\"}", - new TypeReference>() {} - ); - Map actualHeaders = req.headers; - - for (Map.Entry p : expectedHeaders.entrySet()) { - assertEquals(p.getValue(), actualHeaders.get(p.getKey())); - } - } catch (JsonProcessingException e) { - fail("failed to parse headers json"); - } - } - - @Test - @DisplayName("requestOptions merges headers with default ones") - void customPostTest5() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraHeader("x-algolia-api-key", "myApiKey"); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - - try { - Map expectedHeaders = json.readValue( - "{\"x-algolia-api-key\":\"myApiKey\"}", - new TypeReference>() {} - ); - Map actualHeaders = req.headers; - - for (Map.Entry p : expectedHeaders.entrySet()) { - assertEquals(p.getValue(), actualHeaders.get(p.getKey())); - } - } catch (JsonProcessingException e) { - fail("failed to parse headers json"); - } - } - - @Test - @DisplayName("requestOptions queryParameters accepts booleans") - void customPostTest6() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("isItWorking", true); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"parameters\",\"isItWorking\":\"true\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions queryParameters accepts integers") - void customPostTest7() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("myParam", 2); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"parameters\",\"myParam\":\"2\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions queryParameters accepts list of string") - void customPostTest8() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("myParam", Arrays.asList("c", "d")); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"parameters\",\"myParam\":\"c,d\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions queryParameters accepts list of booleans") - void customPostTest9() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("myParam", Arrays.asList(true, true, false)); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"parameters\",\"myParam\":\"true,true,false\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions queryParameters accepts list of integers") - void customPostTest10() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("myParam", Arrays.asList(1, 2)); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"parameters\",\"myParam\":\"1,2\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("allow put method for a custom path with minimal parameters") - void customPutTest0() { - String path0 = "/test/minimal"; - - assertDoesNotThrow(() -> { - client.customPut(path0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/minimal", req.path); - assertEquals("PUT", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{}", req.body, JSONCompareMode.STRICT)); - } - - @Test - @DisplayName("allow put method for a custom path with all parameters") - void customPutTest1() { - String path0 = "/test/all"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String body1 = "parameters"; - body0.put("body", body1); - } - - assertDoesNotThrow(() -> { - client.customPut(path0, parameters0, body0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/all", req.path); - assertEquals("PUT", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"body\":\"parameters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("pushEvents0") - void pushEventsTest0() { - InsightsEvents insightsEvents0 = new InsightsEvents(); - { - List events1 = new ArrayList<>(); - { - ClickedObjectIDsAfterSearch events_02 = new ClickedObjectIDsAfterSearch(); - { - ClickEvent eventType3 = ClickEvent.fromValue("click"); - events_02.setEventType(eventType3); - String eventName3 = "Product Clicked"; - events_02.setEventName(eventName3); - String index3 = "products"; - events_02.setIndex(index3); - String userToken3 = "user-123456"; - events_02.setUserToken(userToken3); - String authenticatedUserToken3 = "user-123456"; - events_02.setAuthenticatedUserToken(authenticatedUserToken3); - long timestamp3 = 1641290601962L; - events_02.setTimestamp(timestamp3); - List objectIDs3 = new ArrayList<>(); - { - String objectIDs_04 = "9780545139700"; - objectIDs3.add(objectIDs_04); - String objectIDs_14 = "9780439784542"; - objectIDs3.add(objectIDs_14); - } - events_02.setObjectIDs(objectIDs3); - String queryID3 = "43b15df305339e827f0ac0bdc5ebcaa7"; - events_02.setQueryID(queryID3); - List positions3 = new ArrayList<>(); - { - int positions_04 = 7; - positions3.add(positions_04); - int positions_14 = 6; - positions3.add(positions_14); - } - events_02.setPositions(positions3); - } - events1.add(events_02); - } - insightsEvents0.setEvents(events1); - } - - assertDoesNotThrow(() -> { - client.pushEvents(insightsEvents0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/events", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals( - "{\"events\":[{\"eventType\":\"click\",\"eventName\":\"Product" + - " Clicked\",\"index\":\"products\",\"userToken\":\"user-123456\",\"authenticatedUserToken\":\"user-123456\",\"timestamp\":1641290601962,\"objectIDs\":[\"9780545139700\",\"9780439784542\"],\"queryID\":\"43b15df305339e827f0ac0bdc5ebcaa7\",\"positions\":[7,6]}]}", - req.body, - JSONCompareMode.STRICT - ) - ); - } - - @Test - @DisplayName("Many events type") - void pushEventsTest1() { - InsightsEvents insightsEvents0 = new InsightsEvents(); - { - List events1 = new ArrayList<>(); - { - ConvertedObjectIDsAfterSearch events_02 = new ConvertedObjectIDsAfterSearch(); - { - ConversionEvent eventType3 = ConversionEvent.fromValue("conversion"); - events_02.setEventType(eventType3); - String eventName3 = "Product Purchased"; - events_02.setEventName(eventName3); - String index3 = "products"; - events_02.setIndex(index3); - String userToken3 = "user-123456"; - events_02.setUserToken(userToken3); - String authenticatedUserToken3 = "user-123456"; - events_02.setAuthenticatedUserToken(authenticatedUserToken3); - long timestamp3 = 1641290601962L; - events_02.setTimestamp(timestamp3); - List objectIDs3 = new ArrayList<>(); - { - String objectIDs_04 = "9780545139700"; - objectIDs3.add(objectIDs_04); - String objectIDs_14 = "9780439784542"; - objectIDs3.add(objectIDs_14); - } - events_02.setObjectIDs(objectIDs3); - String queryID3 = "43b15df305339e827f0ac0bdc5ebcaa7"; - events_02.setQueryID(queryID3); - } - events1.add(events_02); - ViewedObjectIDs events_12 = new ViewedObjectIDs(); - { - ViewEvent eventType3 = ViewEvent.fromValue("view"); - events_12.setEventType(eventType3); - String eventName3 = "Product Detail Page Viewed"; - events_12.setEventName(eventName3); - String index3 = "products"; - events_12.setIndex(index3); - String userToken3 = "user-123456"; - events_12.setUserToken(userToken3); - String authenticatedUserToken3 = "user-123456"; - events_12.setAuthenticatedUserToken(authenticatedUserToken3); - long timestamp3 = 1641290601962L; - events_12.setTimestamp(timestamp3); - List objectIDs3 = new ArrayList<>(); - { - String objectIDs_04 = "9780545139700"; - objectIDs3.add(objectIDs_04); - String objectIDs_14 = "9780439784542"; - objectIDs3.add(objectIDs_14); - } - events_12.setObjectIDs(objectIDs3); - } - events1.add(events_12); - } - insightsEvents0.setEvents(events1); - } - - assertDoesNotThrow(() -> { - client.pushEvents(insightsEvents0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/events", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals( - "{\"events\":[{\"eventType\":\"conversion\",\"eventName\":\"Product" + - " Purchased\",\"index\":\"products\",\"userToken\":\"user-123456\",\"authenticatedUserToken\":\"user-123456\",\"timestamp\":1641290601962,\"objectIDs\":[\"9780545139700\",\"9780439784542\"],\"queryID\":\"43b15df305339e827f0ac0bdc5ebcaa7\"},{\"eventType\":\"view\",\"eventName\":\"Product" + - " Detail Page" + - " Viewed\",\"index\":\"products\",\"userToken\":\"user-123456\",\"authenticatedUserToken\":\"user-123456\",\"timestamp\":1641290601962,\"objectIDs\":[\"9780545139700\",\"9780439784542\"]}]}", - req.body, - JSONCompareMode.STRICT - ) - ); - } - - @Test - @DisplayName("ConvertedObjectIDsAfterSearch") - void pushEventsTest2() { - InsightsEvents insightsEvents0 = new InsightsEvents(); - { - List events1 = new ArrayList<>(); - { - ConvertedObjectIDsAfterSearch events_02 = new ConvertedObjectIDsAfterSearch(); - { - ConversionEvent eventType3 = ConversionEvent.fromValue("conversion"); - events_02.setEventType(eventType3); - String eventName3 = "Product Purchased"; - events_02.setEventName(eventName3); - String index3 = "products"; - events_02.setIndex(index3); - String userToken3 = "user-123456"; - events_02.setUserToken(userToken3); - String authenticatedUserToken3 = "user-123456"; - events_02.setAuthenticatedUserToken(authenticatedUserToken3); - long timestamp3 = 1641290601962L; - events_02.setTimestamp(timestamp3); - List objectIDs3 = new ArrayList<>(); - { - String objectIDs_04 = "9780545139700"; - objectIDs3.add(objectIDs_04); - String objectIDs_14 = "9780439784542"; - objectIDs3.add(objectIDs_14); - } - events_02.setObjectIDs(objectIDs3); - String queryID3 = "43b15df305339e827f0ac0bdc5ebcaa7"; - events_02.setQueryID(queryID3); - } - events1.add(events_02); - } - insightsEvents0.setEvents(events1); - } - - assertDoesNotThrow(() -> { - client.pushEvents(insightsEvents0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/events", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals( - "{\"events\":[{\"eventType\":\"conversion\",\"eventName\":\"Product" + - " Purchased\",\"index\":\"products\",\"userToken\":\"user-123456\",\"authenticatedUserToken\":\"user-123456\",\"timestamp\":1641290601962,\"objectIDs\":[\"9780545139700\",\"9780439784542\"],\"queryID\":\"43b15df305339e827f0ac0bdc5ebcaa7\"}]}", - req.body, - JSONCompareMode.STRICT - ) - ); - } - - @Test - @DisplayName("ViewedObjectIDs") - void pushEventsTest3() { - InsightsEvents insightsEvents0 = new InsightsEvents(); - { - List events1 = new ArrayList<>(); - { - ViewedObjectIDs events_02 = new ViewedObjectIDs(); - { - ViewEvent eventType3 = ViewEvent.fromValue("view"); - events_02.setEventType(eventType3); - String eventName3 = "Product Detail Page Viewed"; - events_02.setEventName(eventName3); - String index3 = "products"; - events_02.setIndex(index3); - String userToken3 = "user-123456"; - events_02.setUserToken(userToken3); - String authenticatedUserToken3 = "user-123456"; - events_02.setAuthenticatedUserToken(authenticatedUserToken3); - long timestamp3 = 1641290601962L; - events_02.setTimestamp(timestamp3); - List objectIDs3 = new ArrayList<>(); - { - String objectIDs_04 = "9780545139700"; - objectIDs3.add(objectIDs_04); - String objectIDs_14 = "9780439784542"; - objectIDs3.add(objectIDs_14); - } - events_02.setObjectIDs(objectIDs3); - } - events1.add(events_02); - } - insightsEvents0.setEvents(events1); - } - - assertDoesNotThrow(() -> { - client.pushEvents(insightsEvents0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/events", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals( - "{\"events\":[{\"eventType\":\"view\",\"eventName\":\"Product Detail Page" + - " Viewed\",\"index\":\"products\",\"userToken\":\"user-123456\",\"authenticatedUserToken\":\"user-123456\",\"timestamp\":1641290601962,\"objectIDs\":[\"9780545139700\",\"9780439784542\"]}]}", - req.body, - JSONCompareMode.STRICT - ) - ); - } - - @Test - @DisplayName("AddedToCartObjectIDs") - void pushEventsTest4() { - InsightsEvents insightsEvents0 = new InsightsEvents(); - { - List events1 = new ArrayList<>(); - { - AddedToCartObjectIDsAfterSearch events_02 = new AddedToCartObjectIDsAfterSearch(); - { - ConversionEvent eventType3 = ConversionEvent.fromValue("conversion"); - events_02.setEventType(eventType3); - AddToCartEvent eventSubtype3 = AddToCartEvent.fromValue("addToCart"); - events_02.setEventSubtype(eventSubtype3); - String eventName3 = "Product Added To Cart"; - events_02.setEventName(eventName3); - String index3 = "products"; - events_02.setIndex(index3); - String queryID3 = "43b15df305339e827f0ac0bdc5ebcaa7"; - events_02.setQueryID(queryID3); - String userToken3 = "user-123456"; - events_02.setUserToken(userToken3); - String authenticatedUserToken3 = "user-123456"; - events_02.setAuthenticatedUserToken(authenticatedUserToken3); - long timestamp3 = 1641290601962L; - events_02.setTimestamp(timestamp3); - List objectIDs3 = new ArrayList<>(); - { - String objectIDs_04 = "9780545139700"; - objectIDs3.add(objectIDs_04); - String objectIDs_14 = "9780439784542"; - objectIDs3.add(objectIDs_14); - } - events_02.setObjectIDs(objectIDs3); - List objectData3 = new ArrayList<>(); - { - ObjectDataAfterSearch objectData_04 = new ObjectDataAfterSearch(); - { - double price5 = 19.99; - objectData_04.setPrice(Price.of(price5)); - int quantity5 = 10; - objectData_04.setQuantity(quantity5); - double discount5 = 2.5; - objectData_04.setDiscount(Discount.of(discount5)); - } - objectData3.add(objectData_04); - ObjectDataAfterSearch objectData_14 = new ObjectDataAfterSearch(); - { - String price5 = "8$"; - objectData_14.setPrice(Price.of(price5)); - int quantity5 = 7; - objectData_14.setQuantity(quantity5); - String discount5 = "30%"; - objectData_14.setDiscount(Discount.of(discount5)); - } - objectData3.add(objectData_14); - } - events_02.setObjectData(objectData3); - String currency3 = "USD"; - events_02.setCurrency(currency3); - } - events1.add(events_02); - } - insightsEvents0.setEvents(events1); - } - - assertDoesNotThrow(() -> { - client.pushEvents(insightsEvents0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/events", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals( - "{\"events\":[{\"eventType\":\"conversion\",\"eventSubtype\":\"addToCart\",\"eventName\":\"Product" + - " Added To" + - " Cart\",\"index\":\"products\",\"queryID\":\"43b15df305339e827f0ac0bdc5ebcaa7\",\"userToken\":\"user-123456\",\"authenticatedUserToken\":\"user-123456\",\"timestamp\":1641290601962,\"objectIDs\":[\"9780545139700\",\"9780439784542\"],\"objectData\":[{\"price\":19.99,\"quantity\":10,\"discount\":2.5},{\"price\":\"8$\",\"quantity\":7,\"discount\":\"30%\"}],\"currency\":\"USD\"}]}", - req.body, - JSONCompareMode.STRICT - ) - ); - } -} diff --git a/tests/output/java/src/test/java/com/algolia/methods/requests/Monitoring.test.java b/tests/output/java/src/test/java/com/algolia/methods/requests/Monitoring.test.java deleted file mode 100644 index bfc3b65f26..0000000000 --- a/tests/output/java/src/test/java/com/algolia/methods/requests/Monitoring.test.java +++ /dev/null @@ -1,753 +0,0 @@ -package com.algolia.methods.requests; - -import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNull; -import static org.junit.jupiter.api.Assertions.fail; - -import com.algolia.EchoInterceptor; -import com.algolia.EchoResponse; -import com.algolia.api.MonitoringClient; -import com.algolia.config.*; -import com.algolia.model.monitoring.*; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.json.JsonMapper; -import java.util.*; -import org.junit.jupiter.api.*; -import org.skyscreamer.jsonassert.JSONAssert; -import org.skyscreamer.jsonassert.JSONCompareMode; - -@TestInstance(TestInstance.Lifecycle.PER_CLASS) -class MonitoringClientRequestsTests { - - private MonitoringClient client; - private EchoInterceptor echo; - private ObjectMapper json; - - @BeforeAll - void init() { - this.json = JsonMapper.builder().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false).build(); - this.echo = new EchoInterceptor(); - var options = ClientOptions.builder().setRequesterConfig(requester -> requester.addInterceptor(echo)).build(); - this.client = new MonitoringClient("appId", "apiKey", options); - } - - @AfterAll - void tearUp() throws Exception { - client.close(); - } - - @Test - @DisplayName("allow del method for a custom path with minimal parameters") - void customDeleteTest0() { - String path0 = "/test/minimal"; - - assertDoesNotThrow(() -> { - client.customDelete(path0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/minimal", req.path); - assertEquals("DELETE", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("allow del method for a custom path with all parameters") - void customDeleteTest1() { - String path0 = "/test/all"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - - assertDoesNotThrow(() -> { - client.customDelete(path0, parameters0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/all", req.path); - assertEquals("DELETE", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("allow get method for a custom path with minimal parameters") - void customGetTest0() { - String path0 = "/test/minimal"; - - assertDoesNotThrow(() -> { - client.customGet(path0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/minimal", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("allow get method for a custom path with all parameters") - void customGetTest1() { - String path0 = "/test/all"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - - assertDoesNotThrow(() -> { - client.customGet(path0, parameters0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/all", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("allow post method for a custom path with minimal parameters") - void customPostTest0() { - String path0 = "/test/minimal"; - - assertDoesNotThrow(() -> { - client.customPost(path0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/minimal", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{}", req.body, JSONCompareMode.STRICT)); - } - - @Test - @DisplayName("allow post method for a custom path with all parameters") - void customPostTest1() { - String path0 = "/test/all"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String body1 = "parameters"; - body0.put("body", body1); - } - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/all", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"body\":\"parameters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions can override default query parameters") - void customPostTest2() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("query", "myQueryParameter"); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"myQueryParameter\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions merges query parameters with default ones") - void customPostTest3() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("query2", "myQueryParameter"); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"parameters\",\"query2\":\"myQueryParameter\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions can override default headers") - void customPostTest4() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraHeader("x-algolia-api-key", "myApiKey"); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - - try { - Map expectedHeaders = json.readValue( - "{\"x-algolia-api-key\":\"myApiKey\"}", - new TypeReference>() {} - ); - Map actualHeaders = req.headers; - - for (Map.Entry p : expectedHeaders.entrySet()) { - assertEquals(p.getValue(), actualHeaders.get(p.getKey())); - } - } catch (JsonProcessingException e) { - fail("failed to parse headers json"); - } - } - - @Test - @DisplayName("requestOptions merges headers with default ones") - void customPostTest5() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraHeader("x-algolia-api-key", "myApiKey"); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - - try { - Map expectedHeaders = json.readValue( - "{\"x-algolia-api-key\":\"myApiKey\"}", - new TypeReference>() {} - ); - Map actualHeaders = req.headers; - - for (Map.Entry p : expectedHeaders.entrySet()) { - assertEquals(p.getValue(), actualHeaders.get(p.getKey())); - } - } catch (JsonProcessingException e) { - fail("failed to parse headers json"); - } - } - - @Test - @DisplayName("requestOptions queryParameters accepts booleans") - void customPostTest6() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("isItWorking", true); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"parameters\",\"isItWorking\":\"true\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions queryParameters accepts integers") - void customPostTest7() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("myParam", 2); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"parameters\",\"myParam\":\"2\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions queryParameters accepts list of string") - void customPostTest8() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("myParam", Arrays.asList("c", "d")); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"parameters\",\"myParam\":\"c,d\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions queryParameters accepts list of booleans") - void customPostTest9() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("myParam", Arrays.asList(true, true, false)); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"parameters\",\"myParam\":\"true,true,false\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions queryParameters accepts list of integers") - void customPostTest10() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("myParam", Arrays.asList(1, 2)); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"parameters\",\"myParam\":\"1,2\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("allow put method for a custom path with minimal parameters") - void customPutTest0() { - String path0 = "/test/minimal"; - - assertDoesNotThrow(() -> { - client.customPut(path0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/minimal", req.path); - assertEquals("PUT", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{}", req.body, JSONCompareMode.STRICT)); - } - - @Test - @DisplayName("allow put method for a custom path with all parameters") - void customPutTest1() { - String path0 = "/test/all"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String body1 = "parameters"; - body0.put("body", body1); - } - - assertDoesNotThrow(() -> { - client.customPut(path0, parameters0, body0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/all", req.path); - assertEquals("PUT", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"body\":\"parameters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("getClusterIncidents") - void getClusterIncidentsTest0() { - String clusters0 = "c1-de"; - - assertDoesNotThrow(() -> { - client.getClusterIncidents(clusters0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/incidents/c1-de", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("getClusterStatus") - void getClusterStatusTest0() { - String clusters0 = "c1-de"; - - assertDoesNotThrow(() -> { - client.getClusterStatus(clusters0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/status/c1-de", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("getIncidents") - void getIncidentsTest0() { - assertDoesNotThrow(() -> { - client.getIncidents(); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/incidents", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("getIndexingTime") - void getIndexingTimeTest0() { - String clusters0 = "c1-de"; - - assertDoesNotThrow(() -> { - client.getIndexingTime(clusters0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexing/c1-de", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("getInventory") - void getInventoryTest0() { - assertDoesNotThrow(() -> { - client.getInventory(); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/inventory/servers", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("getLatency") - void getLatencyTest0() { - String clusters0 = "c1-de"; - - assertDoesNotThrow(() -> { - client.getLatency(clusters0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/latency/c1-de", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("getMetrics") - void getMetricsTest0() { - Metric metric0 = Metric.fromValue("avg_build_time"); - Period period0 = Period.fromValue("minute"); - - assertDoesNotThrow(() -> { - client.getMetrics(metric0, period0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/infrastructure/avg_build_time/period/minute", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("getReachability") - void getReachabilityTest0() { - String clusters0 = "c1-de"; - - assertDoesNotThrow(() -> { - client.getReachability(clusters0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/reachability/c1-de/probes", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("getStatus") - void getStatusTest0() { - assertDoesNotThrow(() -> { - client.getStatus(); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/status", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - } -} diff --git a/tests/output/java/src/test/java/com/algolia/methods/requests/Personalization.test.java b/tests/output/java/src/test/java/com/algolia/methods/requests/Personalization.test.java deleted file mode 100644 index 435b8e83bb..0000000000 --- a/tests/output/java/src/test/java/com/algolia/methods/requests/Personalization.test.java +++ /dev/null @@ -1,722 +0,0 @@ -package com.algolia.methods.requests; - -import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNull; -import static org.junit.jupiter.api.Assertions.fail; - -import com.algolia.EchoInterceptor; -import com.algolia.EchoResponse; -import com.algolia.api.PersonalizationClient; -import com.algolia.config.*; -import com.algolia.model.personalization.*; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.json.JsonMapper; -import java.util.*; -import org.junit.jupiter.api.*; -import org.skyscreamer.jsonassert.JSONAssert; -import org.skyscreamer.jsonassert.JSONCompareMode; - -@TestInstance(TestInstance.Lifecycle.PER_CLASS) -class PersonalizationClientRequestsTests { - - private PersonalizationClient client; - private EchoInterceptor echo; - private ObjectMapper json; - - @BeforeAll - void init() { - this.json = JsonMapper.builder().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false).build(); - this.echo = new EchoInterceptor(); - var options = ClientOptions.builder().setRequesterConfig(requester -> requester.addInterceptor(echo)).build(); - this.client = new PersonalizationClient("appId", "apiKey", "us", options); - } - - @AfterAll - void tearUp() throws Exception { - client.close(); - } - - @Test - @DisplayName("allow del method for a custom path with minimal parameters") - void customDeleteTest0() { - String path0 = "/test/minimal"; - - assertDoesNotThrow(() -> { - client.customDelete(path0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/minimal", req.path); - assertEquals("DELETE", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("allow del method for a custom path with all parameters") - void customDeleteTest1() { - String path0 = "/test/all"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - - assertDoesNotThrow(() -> { - client.customDelete(path0, parameters0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/all", req.path); - assertEquals("DELETE", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("allow get method for a custom path with minimal parameters") - void customGetTest0() { - String path0 = "/test/minimal"; - - assertDoesNotThrow(() -> { - client.customGet(path0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/minimal", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("allow get method for a custom path with all parameters") - void customGetTest1() { - String path0 = "/test/all"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - - assertDoesNotThrow(() -> { - client.customGet(path0, parameters0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/all", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("allow post method for a custom path with minimal parameters") - void customPostTest0() { - String path0 = "/test/minimal"; - - assertDoesNotThrow(() -> { - client.customPost(path0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/minimal", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{}", req.body, JSONCompareMode.STRICT)); - } - - @Test - @DisplayName("allow post method for a custom path with all parameters") - void customPostTest1() { - String path0 = "/test/all"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String body1 = "parameters"; - body0.put("body", body1); - } - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/all", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"body\":\"parameters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions can override default query parameters") - void customPostTest2() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("query", "myQueryParameter"); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"myQueryParameter\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions merges query parameters with default ones") - void customPostTest3() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("query2", "myQueryParameter"); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"parameters\",\"query2\":\"myQueryParameter\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions can override default headers") - void customPostTest4() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraHeader("x-algolia-api-key", "myApiKey"); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - - try { - Map expectedHeaders = json.readValue( - "{\"x-algolia-api-key\":\"myApiKey\"}", - new TypeReference>() {} - ); - Map actualHeaders = req.headers; - - for (Map.Entry p : expectedHeaders.entrySet()) { - assertEquals(p.getValue(), actualHeaders.get(p.getKey())); - } - } catch (JsonProcessingException e) { - fail("failed to parse headers json"); - } - } - - @Test - @DisplayName("requestOptions merges headers with default ones") - void customPostTest5() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraHeader("x-algolia-api-key", "myApiKey"); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - - try { - Map expectedHeaders = json.readValue( - "{\"x-algolia-api-key\":\"myApiKey\"}", - new TypeReference>() {} - ); - Map actualHeaders = req.headers; - - for (Map.Entry p : expectedHeaders.entrySet()) { - assertEquals(p.getValue(), actualHeaders.get(p.getKey())); - } - } catch (JsonProcessingException e) { - fail("failed to parse headers json"); - } - } - - @Test - @DisplayName("requestOptions queryParameters accepts booleans") - void customPostTest6() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("isItWorking", true); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"parameters\",\"isItWorking\":\"true\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions queryParameters accepts integers") - void customPostTest7() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("myParam", 2); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"parameters\",\"myParam\":\"2\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions queryParameters accepts list of string") - void customPostTest8() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("myParam", Arrays.asList("c", "d")); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"parameters\",\"myParam\":\"c,d\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions queryParameters accepts list of booleans") - void customPostTest9() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("myParam", Arrays.asList(true, true, false)); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"parameters\",\"myParam\":\"true,true,false\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions queryParameters accepts list of integers") - void customPostTest10() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("myParam", Arrays.asList(1, 2)); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"parameters\",\"myParam\":\"1,2\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("allow put method for a custom path with minimal parameters") - void customPutTest0() { - String path0 = "/test/minimal"; - - assertDoesNotThrow(() -> { - client.customPut(path0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/minimal", req.path); - assertEquals("PUT", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{}", req.body, JSONCompareMode.STRICT)); - } - - @Test - @DisplayName("allow put method for a custom path with all parameters") - void customPutTest1() { - String path0 = "/test/all"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String body1 = "parameters"; - body0.put("body", body1); - } - - assertDoesNotThrow(() -> { - client.customPut(path0, parameters0, body0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/all", req.path); - assertEquals("PUT", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"body\":\"parameters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("delete deleteUserProfile") - void deleteUserProfileTest0() { - String userToken0 = "UserToken"; - - assertDoesNotThrow(() -> { - client.deleteUserProfile(userToken0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/profiles/UserToken", req.path); - assertEquals("DELETE", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("get getPersonalizationStrategy") - void getPersonalizationStrategyTest0() { - assertDoesNotThrow(() -> { - client.getPersonalizationStrategy(); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/strategies/personalization", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("get getUserTokenProfile") - void getUserTokenProfileTest0() { - String userToken0 = "UserToken"; - - assertDoesNotThrow(() -> { - client.getUserTokenProfile(userToken0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/profiles/personalization/UserToken", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("set setPersonalizationStrategy") - void setPersonalizationStrategyTest0() { - PersonalizationStrategyParams personalizationStrategyParams0 = new PersonalizationStrategyParams(); - { - List eventScoring1 = new ArrayList<>(); - { - EventScoring eventScoring_02 = new EventScoring(); - { - int score3 = 42; - eventScoring_02.setScore(score3); - String eventName3 = "Algolia"; - eventScoring_02.setEventName(eventName3); - String eventType3 = "Event"; - eventScoring_02.setEventType(eventType3); - } - eventScoring1.add(eventScoring_02); - } - personalizationStrategyParams0.setEventScoring(eventScoring1); - List facetScoring1 = new ArrayList<>(); - { - FacetScoring facetScoring_02 = new FacetScoring(); - { - int score3 = 42; - facetScoring_02.setScore(score3); - String facetName3 = "Event"; - facetScoring_02.setFacetName(facetName3); - } - facetScoring1.add(facetScoring_02); - } - personalizationStrategyParams0.setFacetScoring(facetScoring1); - int personalizationImpact1 = 42; - personalizationStrategyParams0.setPersonalizationImpact(personalizationImpact1); - } - - assertDoesNotThrow(() -> { - client.setPersonalizationStrategy(personalizationStrategyParams0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/strategies/personalization", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals( - "{\"eventScoring\":[{\"score\":42,\"eventName\":\"Algolia\",\"eventType\":\"Event\"}],\"facetScoring\":[{\"score\":42,\"facetName\":\"Event\"}],\"personalizationImpact\":42}", - req.body, - JSONCompareMode.STRICT - ) - ); - } -} diff --git a/tests/output/java/src/test/java/com/algolia/methods/requests/QuerySuggestions.test.java b/tests/output/java/src/test/java/com/algolia/methods/requests/QuerySuggestions.test.java deleted file mode 100644 index 992c51511d..0000000000 --- a/tests/output/java/src/test/java/com/algolia/methods/requests/QuerySuggestions.test.java +++ /dev/null @@ -1,847 +0,0 @@ -package com.algolia.methods.requests; - -import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNull; -import static org.junit.jupiter.api.Assertions.fail; - -import com.algolia.EchoInterceptor; -import com.algolia.EchoResponse; -import com.algolia.api.QuerySuggestionsClient; -import com.algolia.config.*; -import com.algolia.model.querysuggestions.*; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.json.JsonMapper; -import java.util.*; -import org.junit.jupiter.api.*; -import org.skyscreamer.jsonassert.JSONAssert; -import org.skyscreamer.jsonassert.JSONCompareMode; - -@TestInstance(TestInstance.Lifecycle.PER_CLASS) -class QuerySuggestionsClientRequestsTests { - - private QuerySuggestionsClient client; - private EchoInterceptor echo; - private ObjectMapper json; - - @BeforeAll - void init() { - this.json = JsonMapper.builder().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false).build(); - this.echo = new EchoInterceptor(); - var options = ClientOptions.builder().setRequesterConfig(requester -> requester.addInterceptor(echo)).build(); - this.client = new QuerySuggestionsClient("appId", "apiKey", "us", options); - } - - @AfterAll - void tearUp() throws Exception { - client.close(); - } - - @Test - @DisplayName("createConfig0") - void createConfigTest0() { - QuerySuggestionsConfigurationWithIndex querySuggestionsConfigurationWithIndex0 = new QuerySuggestionsConfigurationWithIndex(); - { - String indexName1 = "theIndexName"; - querySuggestionsConfigurationWithIndex0.setIndexName(indexName1); - List sourceIndices1 = new ArrayList<>(); - { - SourceIndex sourceIndices_02 = new SourceIndex(); - { - String indexName3 = "testIndex"; - sourceIndices_02.setIndexName(indexName3); - List facets3 = new ArrayList<>(); - { - Facet facets_04 = new Facet(); - { - String attribute5 = "test"; - facets_04.setAttribute(attribute5); - } - facets3.add(facets_04); - } - sourceIndices_02.setFacets(facets3); - List> generate3 = new ArrayList<>(); - { - List generate_04 = new ArrayList<>(); - { - String generate_0_05 = "facetA"; - generate_04.add(generate_0_05); - String generate_0_15 = "facetB"; - generate_04.add(generate_0_15); - } - generate3.add(generate_04); - List generate_14 = new ArrayList<>(); - { - String generate_1_05 = "facetC"; - generate_14.add(generate_1_05); - } - generate3.add(generate_14); - } - sourceIndices_02.setGenerate(generate3); - } - sourceIndices1.add(sourceIndices_02); - } - querySuggestionsConfigurationWithIndex0.setSourceIndices(sourceIndices1); - List languages1 = new ArrayList<>(); - { - String languages_02 = "french"; - languages1.add(languages_02); - } - querySuggestionsConfigurationWithIndex0.setLanguages(Languages.of(languages1)); - List exclude1 = new ArrayList<>(); - { - String exclude_02 = "test"; - exclude1.add(exclude_02); - } - querySuggestionsConfigurationWithIndex0.setExclude(exclude1); - } - - assertDoesNotThrow(() -> { - client.createConfig(querySuggestionsConfigurationWithIndex0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/configs", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals( - "{\"indexName\":\"theIndexName\",\"sourceIndices\":[{\"indexName\":\"testIndex\",\"facets\":[{\"attribute\":\"test\"}],\"generate\":[[\"facetA\",\"facetB\"],[\"facetC\"]]}],\"languages\":[\"french\"],\"exclude\":[\"test\"]}", - req.body, - JSONCompareMode.STRICT - ) - ); - } - - @Test - @DisplayName("allow del method for a custom path with minimal parameters") - void customDeleteTest0() { - String path0 = "/test/minimal"; - - assertDoesNotThrow(() -> { - client.customDelete(path0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/minimal", req.path); - assertEquals("DELETE", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("allow del method for a custom path with all parameters") - void customDeleteTest1() { - String path0 = "/test/all"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - - assertDoesNotThrow(() -> { - client.customDelete(path0, parameters0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/all", req.path); - assertEquals("DELETE", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("allow get method for a custom path with minimal parameters") - void customGetTest0() { - String path0 = "/test/minimal"; - - assertDoesNotThrow(() -> { - client.customGet(path0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/minimal", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("allow get method for a custom path with all parameters") - void customGetTest1() { - String path0 = "/test/all"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - - assertDoesNotThrow(() -> { - client.customGet(path0, parameters0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/all", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("allow post method for a custom path with minimal parameters") - void customPostTest0() { - String path0 = "/test/minimal"; - - assertDoesNotThrow(() -> { - client.customPost(path0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/minimal", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{}", req.body, JSONCompareMode.STRICT)); - } - - @Test - @DisplayName("allow post method for a custom path with all parameters") - void customPostTest1() { - String path0 = "/test/all"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String body1 = "parameters"; - body0.put("body", body1); - } - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/all", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"body\":\"parameters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions can override default query parameters") - void customPostTest2() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("query", "myQueryParameter"); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"myQueryParameter\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions merges query parameters with default ones") - void customPostTest3() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("query2", "myQueryParameter"); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"parameters\",\"query2\":\"myQueryParameter\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions can override default headers") - void customPostTest4() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraHeader("x-algolia-api-key", "myApiKey"); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - - try { - Map expectedHeaders = json.readValue( - "{\"x-algolia-api-key\":\"myApiKey\"}", - new TypeReference>() {} - ); - Map actualHeaders = req.headers; - - for (Map.Entry p : expectedHeaders.entrySet()) { - assertEquals(p.getValue(), actualHeaders.get(p.getKey())); - } - } catch (JsonProcessingException e) { - fail("failed to parse headers json"); - } - } - - @Test - @DisplayName("requestOptions merges headers with default ones") - void customPostTest5() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraHeader("x-algolia-api-key", "myApiKey"); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - - try { - Map expectedHeaders = json.readValue( - "{\"x-algolia-api-key\":\"myApiKey\"}", - new TypeReference>() {} - ); - Map actualHeaders = req.headers; - - for (Map.Entry p : expectedHeaders.entrySet()) { - assertEquals(p.getValue(), actualHeaders.get(p.getKey())); - } - } catch (JsonProcessingException e) { - fail("failed to parse headers json"); - } - } - - @Test - @DisplayName("requestOptions queryParameters accepts booleans") - void customPostTest6() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("isItWorking", true); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"parameters\",\"isItWorking\":\"true\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions queryParameters accepts integers") - void customPostTest7() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("myParam", 2); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"parameters\",\"myParam\":\"2\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions queryParameters accepts list of string") - void customPostTest8() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("myParam", Arrays.asList("c", "d")); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"parameters\",\"myParam\":\"c,d\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions queryParameters accepts list of booleans") - void customPostTest9() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("myParam", Arrays.asList(true, true, false)); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"parameters\",\"myParam\":\"true,true,false\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions queryParameters accepts list of integers") - void customPostTest10() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("myParam", Arrays.asList(1, 2)); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"parameters\",\"myParam\":\"1,2\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("allow put method for a custom path with minimal parameters") - void customPutTest0() { - String path0 = "/test/minimal"; - - assertDoesNotThrow(() -> { - client.customPut(path0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/minimal", req.path); - assertEquals("PUT", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{}", req.body, JSONCompareMode.STRICT)); - } - - @Test - @DisplayName("allow put method for a custom path with all parameters") - void customPutTest1() { - String path0 = "/test/all"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String body1 = "parameters"; - body0.put("body", body1); - } - - assertDoesNotThrow(() -> { - client.customPut(path0, parameters0, body0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/all", req.path); - assertEquals("PUT", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"body\":\"parameters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("deleteConfig0") - void deleteConfigTest0() { - String indexName0 = "theIndexName"; - - assertDoesNotThrow(() -> { - client.deleteConfig(indexName0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/configs/theIndexName", req.path); - assertEquals("DELETE", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("getAllConfigs0") - void getAllConfigsTest0() { - assertDoesNotThrow(() -> { - client.getAllConfigs(); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/configs", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("getConfig0") - void getConfigTest0() { - String indexName0 = "theIndexName"; - - assertDoesNotThrow(() -> { - client.getConfig(indexName0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/configs/theIndexName", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("getConfigStatus0") - void getConfigStatusTest0() { - String indexName0 = "theIndexName"; - - assertDoesNotThrow(() -> { - client.getConfigStatus(indexName0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/configs/theIndexName/status", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("getLogFile0") - void getLogFileTest0() { - String indexName0 = "theIndexName"; - - assertDoesNotThrow(() -> { - client.getLogFile(indexName0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/logs/theIndexName", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("updateConfig0") - void updateConfigTest0() { - String indexName0 = "theIndexName"; - QuerySuggestionsConfiguration querySuggestionsConfiguration0 = new QuerySuggestionsConfiguration(); - { - List sourceIndices1 = new ArrayList<>(); - { - SourceIndex sourceIndices_02 = new SourceIndex(); - { - String indexName3 = "testIndex"; - sourceIndices_02.setIndexName(indexName3); - List facets3 = new ArrayList<>(); - { - Facet facets_04 = new Facet(); - { - String attribute5 = "test"; - facets_04.setAttribute(attribute5); - } - facets3.add(facets_04); - } - sourceIndices_02.setFacets(facets3); - List> generate3 = new ArrayList<>(); - { - List generate_04 = new ArrayList<>(); - { - String generate_0_05 = "facetA"; - generate_04.add(generate_0_05); - String generate_0_15 = "facetB"; - generate_04.add(generate_0_15); - } - generate3.add(generate_04); - List generate_14 = new ArrayList<>(); - { - String generate_1_05 = "facetC"; - generate_14.add(generate_1_05); - } - generate3.add(generate_14); - } - sourceIndices_02.setGenerate(generate3); - } - sourceIndices1.add(sourceIndices_02); - } - querySuggestionsConfiguration0.setSourceIndices(sourceIndices1); - List languages1 = new ArrayList<>(); - { - String languages_02 = "french"; - languages1.add(languages_02); - } - querySuggestionsConfiguration0.setLanguages(Languages.of(languages1)); - List exclude1 = new ArrayList<>(); - { - String exclude_02 = "test"; - exclude1.add(exclude_02); - } - querySuggestionsConfiguration0.setExclude(exclude1); - } - - assertDoesNotThrow(() -> { - client.updateConfig(indexName0, querySuggestionsConfiguration0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/configs/theIndexName", req.path); - assertEquals("PUT", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals( - "{\"sourceIndices\":[{\"indexName\":\"testIndex\",\"facets\":[{\"attribute\":\"test\"}],\"generate\":[[\"facetA\",\"facetB\"],[\"facetC\"]]}],\"languages\":[\"french\"],\"exclude\":[\"test\"]}", - req.body, - JSONCompareMode.STRICT - ) - ); - } -} diff --git a/tests/output/java/src/test/java/com/algolia/methods/requests/Recommend.test.java b/tests/output/java/src/test/java/com/algolia/methods/requests/Recommend.test.java deleted file mode 100644 index 57ccdae114..0000000000 --- a/tests/output/java/src/test/java/com/algolia/methods/requests/Recommend.test.java +++ /dev/null @@ -1,1089 +0,0 @@ -package com.algolia.methods.requests; - -import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNull; -import static org.junit.jupiter.api.Assertions.fail; - -import com.algolia.EchoInterceptor; -import com.algolia.EchoResponse; -import com.algolia.api.RecommendClient; -import com.algolia.config.*; -import com.algolia.model.recommend.*; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.json.JsonMapper; -import java.util.*; -import org.junit.jupiter.api.*; -import org.skyscreamer.jsonassert.JSONAssert; -import org.skyscreamer.jsonassert.JSONCompareMode; - -@TestInstance(TestInstance.Lifecycle.PER_CLASS) -class RecommendClientRequestsTests { - - private RecommendClient client; - private EchoInterceptor echo; - private ObjectMapper json; - - @BeforeAll - void init() { - this.json = JsonMapper.builder().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false).build(); - this.echo = new EchoInterceptor(); - var options = ClientOptions.builder().setRequesterConfig(requester -> requester.addInterceptor(echo)).build(); - this.client = new RecommendClient("appId", "apiKey", options); - } - - @AfterAll - void tearUp() throws Exception { - client.close(); - } - - @Test - @DisplayName("allow del method for a custom path with minimal parameters") - void customDeleteTest0() { - String path0 = "/test/minimal"; - - assertDoesNotThrow(() -> { - client.customDelete(path0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/minimal", req.path); - assertEquals("DELETE", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("allow del method for a custom path with all parameters") - void customDeleteTest1() { - String path0 = "/test/all"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - - assertDoesNotThrow(() -> { - client.customDelete(path0, parameters0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/all", req.path); - assertEquals("DELETE", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("allow get method for a custom path with minimal parameters") - void customGetTest0() { - String path0 = "/test/minimal"; - - assertDoesNotThrow(() -> { - client.customGet(path0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/minimal", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("allow get method for a custom path with all parameters") - void customGetTest1() { - String path0 = "/test/all"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - - assertDoesNotThrow(() -> { - client.customGet(path0, parameters0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/all", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("allow post method for a custom path with minimal parameters") - void customPostTest0() { - String path0 = "/test/minimal"; - - assertDoesNotThrow(() -> { - client.customPost(path0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/minimal", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{}", req.body, JSONCompareMode.STRICT)); - } - - @Test - @DisplayName("allow post method for a custom path with all parameters") - void customPostTest1() { - String path0 = "/test/all"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String body1 = "parameters"; - body0.put("body", body1); - } - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/all", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"body\":\"parameters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions can override default query parameters") - void customPostTest2() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("query", "myQueryParameter"); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"myQueryParameter\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions merges query parameters with default ones") - void customPostTest3() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("query2", "myQueryParameter"); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"parameters\",\"query2\":\"myQueryParameter\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions can override default headers") - void customPostTest4() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraHeader("x-algolia-api-key", "myApiKey"); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - - try { - Map expectedHeaders = json.readValue( - "{\"x-algolia-api-key\":\"myApiKey\"}", - new TypeReference>() {} - ); - Map actualHeaders = req.headers; - - for (Map.Entry p : expectedHeaders.entrySet()) { - assertEquals(p.getValue(), actualHeaders.get(p.getKey())); - } - } catch (JsonProcessingException e) { - fail("failed to parse headers json"); - } - } - - @Test - @DisplayName("requestOptions merges headers with default ones") - void customPostTest5() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraHeader("x-algolia-api-key", "myApiKey"); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - - try { - Map expectedHeaders = json.readValue( - "{\"x-algolia-api-key\":\"myApiKey\"}", - new TypeReference>() {} - ); - Map actualHeaders = req.headers; - - for (Map.Entry p : expectedHeaders.entrySet()) { - assertEquals(p.getValue(), actualHeaders.get(p.getKey())); - } - } catch (JsonProcessingException e) { - fail("failed to parse headers json"); - } - } - - @Test - @DisplayName("requestOptions queryParameters accepts booleans") - void customPostTest6() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("isItWorking", true); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"parameters\",\"isItWorking\":\"true\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions queryParameters accepts integers") - void customPostTest7() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("myParam", 2); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"parameters\",\"myParam\":\"2\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions queryParameters accepts list of string") - void customPostTest8() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("myParam", Arrays.asList("c", "d")); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"parameters\",\"myParam\":\"c,d\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions queryParameters accepts list of booleans") - void customPostTest9() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("myParam", Arrays.asList(true, true, false)); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"parameters\",\"myParam\":\"true,true,false\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions queryParameters accepts list of integers") - void customPostTest10() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("myParam", Arrays.asList(1, 2)); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"parameters\",\"myParam\":\"1,2\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("allow put method for a custom path with minimal parameters") - void customPutTest0() { - String path0 = "/test/minimal"; - - assertDoesNotThrow(() -> { - client.customPut(path0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/minimal", req.path); - assertEquals("PUT", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{}", req.body, JSONCompareMode.STRICT)); - } - - @Test - @DisplayName("allow put method for a custom path with all parameters") - void customPutTest1() { - String path0 = "/test/all"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String body1 = "parameters"; - body0.put("body", body1); - } - - assertDoesNotThrow(() -> { - client.customPut(path0, parameters0, body0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/all", req.path); - assertEquals("PUT", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"body\":\"parameters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("deleteRecommendRule0") - void deleteRecommendRuleTest0() { - String indexName0 = "indexName"; - RecommendModels model0 = RecommendModels.fromValue("related-products"); - String objectID0 = "objectID"; - - assertDoesNotThrow(() -> { - client.deleteRecommendRule(indexName0, model0, objectID0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/indexName/related-products/recommend/rules/objectID", req.path); - assertEquals("DELETE", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("getRecommendRule0") - void getRecommendRuleTest0() { - String indexName0 = "indexName"; - RecommendModels model0 = RecommendModels.fromValue("related-products"); - String objectID0 = "objectID"; - - assertDoesNotThrow(() -> { - client.getRecommendRule(indexName0, model0, objectID0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/indexName/related-products/recommend/rules/objectID", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("getRecommendStatus0") - void getRecommendStatusTest0() { - String indexName0 = "indexName"; - RecommendModels model0 = RecommendModels.fromValue("related-products"); - long taskID0 = 12345L; - - assertDoesNotThrow(() -> { - client.getRecommendStatus(indexName0, model0, taskID0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/indexName/related-products/task/12345", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("get recommendations for recommend model with minimal parameters") - void getRecommendationsTest0() { - GetRecommendationsParams getRecommendationsParams0 = new GetRecommendationsParams(); - { - List requests1 = new ArrayList<>(); - { - RecommendationsQuery requests_02 = new RecommendationsQuery(); - { - String indexName3 = "indexName"; - requests_02.setIndexName(indexName3); - String objectID3 = "objectID"; - requests_02.setObjectID(objectID3); - RecommendationModels model3 = RecommendationModels.fromValue("related-products"); - requests_02.setModel(model3); - int threshold3 = 42; - requests_02.setThreshold(threshold3); - } - requests1.add(requests_02); - } - getRecommendationsParams0.setRequests(requests1); - } - - assertDoesNotThrow(() -> { - client.getRecommendations(getRecommendationsParams0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/*/recommendations", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals( - "{\"requests\":[{\"indexName\":\"indexName\",\"objectID\":\"objectID\",\"model\":\"related-products\",\"threshold\":42}]}", - req.body, - JSONCompareMode.STRICT - ) - ); - } - - @Test - @DisplayName("get recommendations for recommend model with all parameters") - void getRecommendationsTest1() { - GetRecommendationsParams getRecommendationsParams0 = new GetRecommendationsParams(); - { - List requests1 = new ArrayList<>(); - { - RecommendationsQuery requests_02 = new RecommendationsQuery(); - { - String indexName3 = "indexName"; - requests_02.setIndexName(indexName3); - String objectID3 = "objectID"; - requests_02.setObjectID(objectID3); - RecommendationModels model3 = RecommendationModels.fromValue("related-products"); - requests_02.setModel(model3); - int threshold3 = 42; - requests_02.setThreshold(threshold3); - int maxRecommendations3 = 10; - requests_02.setMaxRecommendations(maxRecommendations3); - SearchParamsObject queryParameters3 = new SearchParamsObject(); - { - String query4 = "myQuery"; - queryParameters3.setQuery(query4); - List facetFilters4 = new ArrayList<>(); - { - String facetFilters_05 = "query"; - facetFilters4.add(MixedSearchFilters.of(facetFilters_05)); - } - queryParameters3.setFacetFilters(FacetFilters.of(facetFilters4)); - } - requests_02.setQueryParameters(queryParameters3); - SearchParamsObject fallbackParameters3 = new SearchParamsObject(); - { - String query4 = "myQuery"; - fallbackParameters3.setQuery(query4); - List facetFilters4 = new ArrayList<>(); - { - String facetFilters_05 = "fallback"; - facetFilters4.add(MixedSearchFilters.of(facetFilters_05)); - } - fallbackParameters3.setFacetFilters(FacetFilters.of(facetFilters4)); - } - requests_02.setFallbackParameters(fallbackParameters3); - } - requests1.add(requests_02); - } - getRecommendationsParams0.setRequests(requests1); - } - - assertDoesNotThrow(() -> { - client.getRecommendations(getRecommendationsParams0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/*/recommendations", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals( - "{\"requests\":[{\"indexName\":\"indexName\",\"objectID\":\"objectID\",\"model\":\"related-products\",\"threshold\":42,\"maxRecommendations\":10,\"queryParameters\":{\"query\":\"myQuery\",\"facetFilters\":[\"query\"]},\"fallbackParameters\":{\"query\":\"myQuery\",\"facetFilters\":[\"fallback\"]}}]}", - req.body, - JSONCompareMode.STRICT - ) - ); - } - - @Test - @DisplayName("get recommendations for trending model with minimal parameters") - void getRecommendationsTest2() { - GetRecommendationsParams getRecommendationsParams0 = new GetRecommendationsParams(); - { - List requests1 = new ArrayList<>(); - { - TrendingItemsQuery requests_02 = new TrendingItemsQuery(); - { - String indexName3 = "indexName"; - requests_02.setIndexName(indexName3); - TrendingItemsModel model3 = TrendingItemsModel.fromValue("trending-items"); - requests_02.setModel(model3); - int threshold3 = 42; - requests_02.setThreshold(threshold3); - } - requests1.add(requests_02); - } - getRecommendationsParams0.setRequests(requests1); - } - - assertDoesNotThrow(() -> { - client.getRecommendations(getRecommendationsParams0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/*/recommendations", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals( - "{\"requests\":[{\"indexName\":\"indexName\",\"model\":\"trending-items\",\"threshold\":42}]}", - req.body, - JSONCompareMode.STRICT - ) - ); - } - - @Test - @DisplayName("get recommendations for trending model with all parameters") - void getRecommendationsTest3() { - GetRecommendationsParams getRecommendationsParams0 = new GetRecommendationsParams(); - { - List requests1 = new ArrayList<>(); - { - TrendingItemsQuery requests_02 = new TrendingItemsQuery(); - { - String indexName3 = "indexName"; - requests_02.setIndexName(indexName3); - TrendingItemsModel model3 = TrendingItemsModel.fromValue("trending-items"); - requests_02.setModel(model3); - int threshold3 = 42; - requests_02.setThreshold(threshold3); - int maxRecommendations3 = 10; - requests_02.setMaxRecommendations(maxRecommendations3); - String facetName3 = "myFacetName"; - requests_02.setFacetName(facetName3); - String facetValue3 = "myFacetValue"; - requests_02.setFacetValue(facetValue3); - SearchParamsObject queryParameters3 = new SearchParamsObject(); - { - String query4 = "myQuery"; - queryParameters3.setQuery(query4); - List facetFilters4 = new ArrayList<>(); - { - String facetFilters_05 = "query"; - facetFilters4.add(MixedSearchFilters.of(facetFilters_05)); - } - queryParameters3.setFacetFilters(FacetFilters.of(facetFilters4)); - } - requests_02.setQueryParameters(queryParameters3); - SearchParamsObject fallbackParameters3 = new SearchParamsObject(); - { - String query4 = "myQuery"; - fallbackParameters3.setQuery(query4); - List facetFilters4 = new ArrayList<>(); - { - String facetFilters_05 = "fallback"; - facetFilters4.add(MixedSearchFilters.of(facetFilters_05)); - } - fallbackParameters3.setFacetFilters(FacetFilters.of(facetFilters4)); - } - requests_02.setFallbackParameters(fallbackParameters3); - } - requests1.add(requests_02); - } - getRecommendationsParams0.setRequests(requests1); - } - - assertDoesNotThrow(() -> { - client.getRecommendations(getRecommendationsParams0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/*/recommendations", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals( - "{\"requests\":[{\"indexName\":\"indexName\",\"model\":\"trending-items\",\"threshold\":42,\"maxRecommendations\":10,\"facetName\":\"myFacetName\",\"facetValue\":\"myFacetValue\",\"queryParameters\":{\"query\":\"myQuery\",\"facetFilters\":[\"query\"]},\"fallbackParameters\":{\"query\":\"myQuery\",\"facetFilters\":[\"fallback\"]}}]}", - req.body, - JSONCompareMode.STRICT - ) - ); - } - - @Test - @DisplayName("get multiple recommendations with minimal parameters") - void getRecommendationsTest4() { - GetRecommendationsParams getRecommendationsParams0 = new GetRecommendationsParams(); - { - List requests1 = new ArrayList<>(); - { - RecommendationsQuery requests_02 = new RecommendationsQuery(); - { - String indexName3 = "indexName1"; - requests_02.setIndexName(indexName3); - String objectID3 = "objectID1"; - requests_02.setObjectID(objectID3); - RecommendationModels model3 = RecommendationModels.fromValue("related-products"); - requests_02.setModel(model3); - int threshold3 = 21; - requests_02.setThreshold(threshold3); - } - requests1.add(requests_02); - RecommendationsQuery requests_12 = new RecommendationsQuery(); - { - String indexName3 = "indexName2"; - requests_12.setIndexName(indexName3); - String objectID3 = "objectID2"; - requests_12.setObjectID(objectID3); - RecommendationModels model3 = RecommendationModels.fromValue("related-products"); - requests_12.setModel(model3); - int threshold3 = 21; - requests_12.setThreshold(threshold3); - } - requests1.add(requests_12); - } - getRecommendationsParams0.setRequests(requests1); - } - - assertDoesNotThrow(() -> { - client.getRecommendations(getRecommendationsParams0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/*/recommendations", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals( - "{\"requests\":[{\"indexName\":\"indexName1\",\"objectID\":\"objectID1\",\"model\":\"related-products\",\"threshold\":21},{\"indexName\":\"indexName2\",\"objectID\":\"objectID2\",\"model\":\"related-products\",\"threshold\":21}]}", - req.body, - JSONCompareMode.STRICT - ) - ); - } - - @Test - @DisplayName("get multiple recommendations with all parameters") - void getRecommendationsTest5() { - GetRecommendationsParams getRecommendationsParams0 = new GetRecommendationsParams(); - { - List requests1 = new ArrayList<>(); - { - RecommendationsQuery requests_02 = new RecommendationsQuery(); - { - String indexName3 = "indexName1"; - requests_02.setIndexName(indexName3); - String objectID3 = "objectID1"; - requests_02.setObjectID(objectID3); - RecommendationModels model3 = RecommendationModels.fromValue("related-products"); - requests_02.setModel(model3); - int threshold3 = 21; - requests_02.setThreshold(threshold3); - int maxRecommendations3 = 10; - requests_02.setMaxRecommendations(maxRecommendations3); - SearchParamsObject queryParameters3 = new SearchParamsObject(); - { - String query4 = "myQuery"; - queryParameters3.setQuery(query4); - List facetFilters4 = new ArrayList<>(); - { - String facetFilters_05 = "query1"; - facetFilters4.add(MixedSearchFilters.of(facetFilters_05)); - } - queryParameters3.setFacetFilters(FacetFilters.of(facetFilters4)); - } - requests_02.setQueryParameters(queryParameters3); - SearchParamsObject fallbackParameters3 = new SearchParamsObject(); - { - String query4 = "myQuery"; - fallbackParameters3.setQuery(query4); - List facetFilters4 = new ArrayList<>(); - { - String facetFilters_05 = "fallback1"; - facetFilters4.add(MixedSearchFilters.of(facetFilters_05)); - } - fallbackParameters3.setFacetFilters(FacetFilters.of(facetFilters4)); - } - requests_02.setFallbackParameters(fallbackParameters3); - } - requests1.add(requests_02); - RecommendationsQuery requests_12 = new RecommendationsQuery(); - { - String indexName3 = "indexName2"; - requests_12.setIndexName(indexName3); - String objectID3 = "objectID2"; - requests_12.setObjectID(objectID3); - RecommendationModels model3 = RecommendationModels.fromValue("related-products"); - requests_12.setModel(model3); - int threshold3 = 21; - requests_12.setThreshold(threshold3); - int maxRecommendations3 = 10; - requests_12.setMaxRecommendations(maxRecommendations3); - SearchParamsObject queryParameters3 = new SearchParamsObject(); - { - String query4 = "myQuery"; - queryParameters3.setQuery(query4); - List facetFilters4 = new ArrayList<>(); - { - String facetFilters_05 = "query2"; - facetFilters4.add(MixedSearchFilters.of(facetFilters_05)); - } - queryParameters3.setFacetFilters(FacetFilters.of(facetFilters4)); - } - requests_12.setQueryParameters(queryParameters3); - SearchParamsObject fallbackParameters3 = new SearchParamsObject(); - { - String query4 = "myQuery"; - fallbackParameters3.setQuery(query4); - List facetFilters4 = new ArrayList<>(); - { - String facetFilters_05 = "fallback2"; - facetFilters4.add(MixedSearchFilters.of(facetFilters_05)); - } - fallbackParameters3.setFacetFilters(FacetFilters.of(facetFilters4)); - } - requests_12.setFallbackParameters(fallbackParameters3); - } - requests1.add(requests_12); - } - getRecommendationsParams0.setRequests(requests1); - } - - assertDoesNotThrow(() -> { - client.getRecommendations(getRecommendationsParams0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/*/recommendations", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals( - "{\"requests\":[{\"indexName\":\"indexName1\",\"objectID\":\"objectID1\",\"model\":\"related-products\",\"threshold\":21,\"maxRecommendations\":10,\"queryParameters\":{\"query\":\"myQuery\",\"facetFilters\":[\"query1\"]},\"fallbackParameters\":{\"query\":\"myQuery\",\"facetFilters\":[\"fallback1\"]}},{\"indexName\":\"indexName2\",\"objectID\":\"objectID2\",\"model\":\"related-products\",\"threshold\":21,\"maxRecommendations\":10,\"queryParameters\":{\"query\":\"myQuery\",\"facetFilters\":[\"query2\"]},\"fallbackParameters\":{\"query\":\"myQuery\",\"facetFilters\":[\"fallback2\"]}}]}", - req.body, - JSONCompareMode.STRICT - ) - ); - } - - @Test - @DisplayName("get frequently bought together recommendations") - void getRecommendationsTest6() { - GetRecommendationsParams getRecommendationsParams0 = new GetRecommendationsParams(); - { - List requests1 = new ArrayList<>(); - { - RecommendationsQuery requests_02 = new RecommendationsQuery(); - { - String indexName3 = "indexName1"; - requests_02.setIndexName(indexName3); - String objectID3 = "objectID1"; - requests_02.setObjectID(objectID3); - RecommendationModels model3 = RecommendationModels.fromValue("bought-together"); - requests_02.setModel(model3); - int threshold3 = 42; - requests_02.setThreshold(threshold3); - } - requests1.add(requests_02); - } - getRecommendationsParams0.setRequests(requests1); - } - - assertDoesNotThrow(() -> { - client.getRecommendations(getRecommendationsParams0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/*/recommendations", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals( - "{\"requests\":[{\"indexName\":\"indexName1\",\"objectID\":\"objectID1\",\"model\":\"bought-together\",\"threshold\":42}]}", - req.body, - JSONCompareMode.STRICT - ) - ); - } - - @Test - @DisplayName("searchRecommendRules0") - void searchRecommendRulesTest0() { - String indexName0 = "indexName"; - RecommendModels model0 = RecommendModels.fromValue("related-products"); - - assertDoesNotThrow(() -> { - client.searchRecommendRules(indexName0, model0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/indexName/related-products/recommend/rules/search", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{}", req.body, JSONCompareMode.STRICT)); - } -} diff --git a/tests/output/java/src/test/java/com/algolia/methods/requests/Search.test.java b/tests/output/java/src/test/java/com/algolia/methods/requests/Search.test.java deleted file mode 100644 index 3688a98f36..0000000000 --- a/tests/output/java/src/test/java/com/algolia/methods/requests/Search.test.java +++ /dev/null @@ -1,4328 +0,0 @@ -package com.algolia.methods.requests; - -import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNull; -import static org.junit.jupiter.api.Assertions.fail; - -import com.algolia.EchoInterceptor; -import com.algolia.EchoResponse; -import com.algolia.api.SearchClient; -import com.algolia.config.*; -import com.algolia.model.search.*; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.json.JsonMapper; -import java.util.*; -import org.junit.jupiter.api.*; -import org.skyscreamer.jsonassert.JSONAssert; -import org.skyscreamer.jsonassert.JSONCompareMode; - -@TestInstance(TestInstance.Lifecycle.PER_CLASS) -class SearchClientRequestsTests { - - private SearchClient client; - private EchoInterceptor echo; - private ObjectMapper json; - - @BeforeAll - void init() { - this.json = JsonMapper.builder().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false).build(); - this.echo = new EchoInterceptor(); - var options = ClientOptions.builder().setRequesterConfig(requester -> requester.addInterceptor(echo)).build(); - this.client = new SearchClient("appId", "apiKey", options); - } - - @AfterAll - void tearUp() throws Exception { - client.close(); - } - - @Test - @DisplayName("addApiKey0") - void addApiKeyTest0() { - ApiKey apiKey0 = new ApiKey(); - { - List acl1 = new ArrayList<>(); - { - Acl acl_02 = Acl.fromValue("search"); - acl1.add(acl_02); - Acl acl_12 = Acl.fromValue("addObject"); - acl1.add(acl_12); - } - apiKey0.setAcl(acl1); - String description1 = "my new api key"; - apiKey0.setDescription(description1); - int validity1 = 300; - apiKey0.setValidity(validity1); - int maxQueriesPerIPPerHour1 = 100; - apiKey0.setMaxQueriesPerIPPerHour(maxQueriesPerIPPerHour1); - int maxHitsPerQuery1 = 20; - apiKey0.setMaxHitsPerQuery(maxHitsPerQuery1); - } - - assertDoesNotThrow(() -> { - client.addApiKey(apiKey0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/keys", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals( - "{\"acl\":[\"search\",\"addObject\"],\"description\":\"my new api" + - " key\",\"validity\":300,\"maxQueriesPerIPPerHour\":100,\"maxHitsPerQuery\":20}", - req.body, - JSONCompareMode.STRICT - ) - ); - } - - @Test - @DisplayName("addOrUpdateObject0") - void addOrUpdateObjectTest0() { - String indexName0 = "indexName"; - String objectID0 = "uniqueID"; - Map body0 = new HashMap<>(); - { - String key1 = "value"; - body0.put("key", key1); - } - - assertDoesNotThrow(() -> { - client.addOrUpdateObject(indexName0, objectID0, body0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/indexName/uniqueID", req.path); - assertEquals("PUT", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"key\":\"value\"}", req.body, JSONCompareMode.STRICT)); - } - - @Test - @DisplayName("appendSource0") - void appendSourceTest0() { - Source source0 = new Source(); - { - String source1 = "theSource"; - source0.setSource(source1); - String description1 = "theDescription"; - source0.setDescription(description1); - } - - assertDoesNotThrow(() -> { - client.appendSource(source0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/security/sources/append", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals("{\"source\":\"theSource\",\"description\":\"theDescription\"}", req.body, JSONCompareMode.STRICT) - ); - } - - @Test - @DisplayName("assignUserId0") - void assignUserIdTest0() { - String xAlgoliaUserID0 = "userID"; - AssignUserIdParams assignUserIdParams0 = new AssignUserIdParams(); - { - String cluster1 = "theCluster"; - assignUserIdParams0.setCluster(cluster1); - } - - assertDoesNotThrow(() -> { - client.assignUserId(xAlgoliaUserID0, assignUserIdParams0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/clusters/mapping", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"cluster\":\"theCluster\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedHeaders = json.readValue( - "{\"x-algolia-user-id\":\"userID\"}", - new TypeReference>() {} - ); - Map actualHeaders = req.headers; - - for (Map.Entry p : expectedHeaders.entrySet()) { - assertEquals(p.getValue(), actualHeaders.get(p.getKey())); - } - } catch (JsonProcessingException e) { - fail("failed to parse headers json"); - } - } - - @Test - @DisplayName("allows batch method with `addObject` action") - void batchTest0() { - String indexName0 = "theIndexName"; - BatchWriteParams batchWriteParams0 = new BatchWriteParams(); - { - List requests1 = new ArrayList<>(); - { - BatchRequest requests_02 = new BatchRequest(); - { - Action action3 = Action.fromValue("addObject"); - requests_02.setAction(action3); - Map body3 = new HashMap<>(); - { - String key4 = "value"; - body3.put("key", key4); - } - requests_02.setBody(body3); - } - requests1.add(requests_02); - } - batchWriteParams0.setRequests(requests1); - } - - assertDoesNotThrow(() -> { - client.batch(indexName0, batchWriteParams0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/theIndexName/batch", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals("{\"requests\":[{\"action\":\"addObject\",\"body\":{\"key\":\"value\"}}]}", req.body, JSONCompareMode.STRICT) - ); - } - - @Test - @DisplayName("allows batch method with `clear` action") - void batchTest1() { - String indexName0 = "theIndexName"; - BatchWriteParams batchWriteParams0 = new BatchWriteParams(); - { - List requests1 = new ArrayList<>(); - { - BatchRequest requests_02 = new BatchRequest(); - { - Action action3 = Action.fromValue("clear"); - requests_02.setAction(action3); - Map body3 = new HashMap<>(); - { - String key4 = "value"; - body3.put("key", key4); - } - requests_02.setBody(body3); - } - requests1.add(requests_02); - } - batchWriteParams0.setRequests(requests1); - } - - assertDoesNotThrow(() -> { - client.batch(indexName0, batchWriteParams0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/theIndexName/batch", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals("{\"requests\":[{\"action\":\"clear\",\"body\":{\"key\":\"value\"}}]}", req.body, JSONCompareMode.STRICT) - ); - } - - @Test - @DisplayName("allows batch method with `delete` action") - void batchTest2() { - String indexName0 = "theIndexName"; - BatchWriteParams batchWriteParams0 = new BatchWriteParams(); - { - List requests1 = new ArrayList<>(); - { - BatchRequest requests_02 = new BatchRequest(); - { - Action action3 = Action.fromValue("delete"); - requests_02.setAction(action3); - Map body3 = new HashMap<>(); - { - String key4 = "value"; - body3.put("key", key4); - } - requests_02.setBody(body3); - } - requests1.add(requests_02); - } - batchWriteParams0.setRequests(requests1); - } - - assertDoesNotThrow(() -> { - client.batch(indexName0, batchWriteParams0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/theIndexName/batch", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals("{\"requests\":[{\"action\":\"delete\",\"body\":{\"key\":\"value\"}}]}", req.body, JSONCompareMode.STRICT) - ); - } - - @Test - @DisplayName("allows batch method with `deleteObject` action") - void batchTest3() { - String indexName0 = "theIndexName"; - BatchWriteParams batchWriteParams0 = new BatchWriteParams(); - { - List requests1 = new ArrayList<>(); - { - BatchRequest requests_02 = new BatchRequest(); - { - Action action3 = Action.fromValue("deleteObject"); - requests_02.setAction(action3); - Map body3 = new HashMap<>(); - { - String key4 = "value"; - body3.put("key", key4); - } - requests_02.setBody(body3); - } - requests1.add(requests_02); - } - batchWriteParams0.setRequests(requests1); - } - - assertDoesNotThrow(() -> { - client.batch(indexName0, batchWriteParams0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/theIndexName/batch", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals( - "{\"requests\":[{\"action\":\"deleteObject\",\"body\":{\"key\":\"value\"}}]}", - req.body, - JSONCompareMode.STRICT - ) - ); - } - - @Test - @DisplayName("allows batch method with `partialUpdateObject` action") - void batchTest4() { - String indexName0 = "theIndexName"; - BatchWriteParams batchWriteParams0 = new BatchWriteParams(); - { - List requests1 = new ArrayList<>(); - { - BatchRequest requests_02 = new BatchRequest(); - { - Action action3 = Action.fromValue("partialUpdateObject"); - requests_02.setAction(action3); - Map body3 = new HashMap<>(); - { - String key4 = "value"; - body3.put("key", key4); - } - requests_02.setBody(body3); - } - requests1.add(requests_02); - } - batchWriteParams0.setRequests(requests1); - } - - assertDoesNotThrow(() -> { - client.batch(indexName0, batchWriteParams0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/theIndexName/batch", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals( - "{\"requests\":[{\"action\":\"partialUpdateObject\",\"body\":{\"key\":\"value\"}}]}", - req.body, - JSONCompareMode.STRICT - ) - ); - } - - @Test - @DisplayName("allows batch method with `partialUpdateObjectNoCreate` action") - void batchTest5() { - String indexName0 = "theIndexName"; - BatchWriteParams batchWriteParams0 = new BatchWriteParams(); - { - List requests1 = new ArrayList<>(); - { - BatchRequest requests_02 = new BatchRequest(); - { - Action action3 = Action.fromValue("partialUpdateObjectNoCreate"); - requests_02.setAction(action3); - Map body3 = new HashMap<>(); - { - String key4 = "value"; - body3.put("key", key4); - } - requests_02.setBody(body3); - } - requests1.add(requests_02); - } - batchWriteParams0.setRequests(requests1); - } - - assertDoesNotThrow(() -> { - client.batch(indexName0, batchWriteParams0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/theIndexName/batch", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals( - "{\"requests\":[{\"action\":\"partialUpdateObjectNoCreate\",\"body\":{\"key\":\"value\"}}]}", - req.body, - JSONCompareMode.STRICT - ) - ); - } - - @Test - @DisplayName("allows batch method with `updateObject` action") - void batchTest6() { - String indexName0 = "theIndexName"; - BatchWriteParams batchWriteParams0 = new BatchWriteParams(); - { - List requests1 = new ArrayList<>(); - { - BatchRequest requests_02 = new BatchRequest(); - { - Action action3 = Action.fromValue("updateObject"); - requests_02.setAction(action3); - Map body3 = new HashMap<>(); - { - String key4 = "value"; - body3.put("key", key4); - } - requests_02.setBody(body3); - } - requests1.add(requests_02); - } - batchWriteParams0.setRequests(requests1); - } - - assertDoesNotThrow(() -> { - client.batch(indexName0, batchWriteParams0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/theIndexName/batch", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals( - "{\"requests\":[{\"action\":\"updateObject\",\"body\":{\"key\":\"value\"}}]}", - req.body, - JSONCompareMode.STRICT - ) - ); - } - - @Test - @DisplayName("batchAssignUserIds0") - void batchAssignUserIdsTest0() { - String xAlgoliaUserID0 = "userID"; - BatchAssignUserIdsParams batchAssignUserIdsParams0 = new BatchAssignUserIdsParams(); - { - String cluster1 = "theCluster"; - batchAssignUserIdsParams0.setCluster(cluster1); - List users1 = new ArrayList<>(); - { - String users_02 = "user1"; - users1.add(users_02); - String users_12 = "user2"; - users1.add(users_12); - } - batchAssignUserIdsParams0.setUsers(users1); - } - - assertDoesNotThrow(() -> { - client.batchAssignUserIds(xAlgoliaUserID0, batchAssignUserIdsParams0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/clusters/mapping/batch", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals("{\"cluster\":\"theCluster\",\"users\":[\"user1\",\"user2\"]}", req.body, JSONCompareMode.STRICT) - ); - - try { - Map expectedHeaders = json.readValue( - "{\"x-algolia-user-id\":\"userID\"}", - new TypeReference>() {} - ); - Map actualHeaders = req.headers; - - for (Map.Entry p : expectedHeaders.entrySet()) { - assertEquals(p.getValue(), actualHeaders.get(p.getKey())); - } - } catch (JsonProcessingException e) { - fail("failed to parse headers json"); - } - } - - @Test - @DisplayName("get batchDictionaryEntries results with minimal parameters") - void batchDictionaryEntriesTest0() { - DictionaryType dictionaryName0 = DictionaryType.fromValue("compounds"); - BatchDictionaryEntriesParams batchDictionaryEntriesParams0 = new BatchDictionaryEntriesParams(); - { - List requests1 = new ArrayList<>(); - { - BatchDictionaryEntriesRequest requests_02 = new BatchDictionaryEntriesRequest(); - { - DictionaryAction action3 = DictionaryAction.fromValue("addEntry"); - requests_02.setAction(action3); - DictionaryEntry body3 = new DictionaryEntry(); - { - String objectID4 = "1"; - body3.setObjectID(objectID4); - String language4 = "en"; - body3.setLanguage(language4); - } - requests_02.setBody(body3); - } - requests1.add(requests_02); - BatchDictionaryEntriesRequest requests_12 = new BatchDictionaryEntriesRequest(); - { - DictionaryAction action3 = DictionaryAction.fromValue("deleteEntry"); - requests_12.setAction(action3); - DictionaryEntry body3 = new DictionaryEntry(); - { - String objectID4 = "2"; - body3.setObjectID(objectID4); - String language4 = "fr"; - body3.setLanguage(language4); - } - requests_12.setBody(body3); - } - requests1.add(requests_12); - } - batchDictionaryEntriesParams0.setRequests(requests1); - } - - assertDoesNotThrow(() -> { - client.batchDictionaryEntries(dictionaryName0, batchDictionaryEntriesParams0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/dictionaries/compounds/batch", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals( - "{\"requests\":[{\"action\":\"addEntry\",\"body\":{\"objectID\":\"1\",\"language\":\"en\"}},{\"action\":\"deleteEntry\",\"body\":{\"objectID\":\"2\",\"language\":\"fr\"}}]}", - req.body, - JSONCompareMode.STRICT - ) - ); - } - - @Test - @DisplayName("get batchDictionaryEntries results with all parameters") - void batchDictionaryEntriesTest1() { - DictionaryType dictionaryName0 = DictionaryType.fromValue("compounds"); - BatchDictionaryEntriesParams batchDictionaryEntriesParams0 = new BatchDictionaryEntriesParams(); - { - boolean clearExistingDictionaryEntries1 = false; - batchDictionaryEntriesParams0.setClearExistingDictionaryEntries(clearExistingDictionaryEntries1); - List requests1 = new ArrayList<>(); - { - BatchDictionaryEntriesRequest requests_02 = new BatchDictionaryEntriesRequest(); - { - DictionaryAction action3 = DictionaryAction.fromValue("addEntry"); - requests_02.setAction(action3); - DictionaryEntry body3 = new DictionaryEntry(); - { - String objectID4 = "1"; - body3.setObjectID(objectID4); - String language4 = "en"; - body3.setLanguage(language4); - String word4 = "fancy"; - body3.setWord(word4); - List words4 = new ArrayList<>(); - { - String words_05 = "believe"; - words4.add(words_05); - String words_15 = "algolia"; - words4.add(words_15); - } - body3.setWords(words4); - List decomposition4 = new ArrayList<>(); - { - String decomposition_05 = "trust"; - decomposition4.add(decomposition_05); - String decomposition_15 = "algolia"; - decomposition4.add(decomposition_15); - } - body3.setDecomposition(decomposition4); - DictionaryEntryState state4 = DictionaryEntryState.fromValue("enabled"); - body3.setState(state4); - } - requests_02.setBody(body3); - } - requests1.add(requests_02); - BatchDictionaryEntriesRequest requests_12 = new BatchDictionaryEntriesRequest(); - { - DictionaryAction action3 = DictionaryAction.fromValue("deleteEntry"); - requests_12.setAction(action3); - DictionaryEntry body3 = new DictionaryEntry(); - { - String objectID4 = "2"; - body3.setObjectID(objectID4); - String language4 = "fr"; - body3.setLanguage(language4); - String word4 = "humility"; - body3.setWord(word4); - List words4 = new ArrayList<>(); - { - String words_05 = "candor"; - words4.add(words_05); - String words_15 = "algolia"; - words4.add(words_15); - } - body3.setWords(words4); - List decomposition4 = new ArrayList<>(); - { - String decomposition_05 = "grit"; - decomposition4.add(decomposition_05); - String decomposition_15 = "algolia"; - decomposition4.add(decomposition_15); - } - body3.setDecomposition(decomposition4); - DictionaryEntryState state4 = DictionaryEntryState.fromValue("enabled"); - body3.setState(state4); - } - requests_12.setBody(body3); - } - requests1.add(requests_12); - } - batchDictionaryEntriesParams0.setRequests(requests1); - } - - assertDoesNotThrow(() -> { - client.batchDictionaryEntries(dictionaryName0, batchDictionaryEntriesParams0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/dictionaries/compounds/batch", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals( - "{\"clearExistingDictionaryEntries\":false,\"requests\":[{\"action\":\"addEntry\",\"body\":{\"objectID\":\"1\",\"language\":\"en\",\"word\":\"fancy\",\"words\":[\"believe\",\"algolia\"],\"decomposition\":[\"trust\",\"algolia\"],\"state\":\"enabled\"}},{\"action\":\"deleteEntry\",\"body\":{\"objectID\":\"2\",\"language\":\"fr\",\"word\":\"humility\",\"words\":[\"candor\",\"algolia\"],\"decomposition\":[\"grit\",\"algolia\"],\"state\":\"enabled\"}}]}", - req.body, - JSONCompareMode.STRICT - ) - ); - } - - @Test - @DisplayName("get batchDictionaryEntries results additional properties") - void batchDictionaryEntriesTest2() { - DictionaryType dictionaryName0 = DictionaryType.fromValue("compounds"); - BatchDictionaryEntriesParams batchDictionaryEntriesParams0 = new BatchDictionaryEntriesParams(); - { - List requests1 = new ArrayList<>(); - { - BatchDictionaryEntriesRequest requests_02 = new BatchDictionaryEntriesRequest(); - { - DictionaryAction action3 = DictionaryAction.fromValue("addEntry"); - requests_02.setAction(action3); - DictionaryEntry body3 = new DictionaryEntry(); - { - String objectID4 = "1"; - body3.setObjectID(objectID4); - String language4 = "en"; - body3.setLanguage(language4); - String additional4 = "try me"; - body3.setAdditionalProperty("additional", additional4); - } - requests_02.setBody(body3); - } - requests1.add(requests_02); - } - batchDictionaryEntriesParams0.setRequests(requests1); - } - - assertDoesNotThrow(() -> { - client.batchDictionaryEntries(dictionaryName0, batchDictionaryEntriesParams0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/dictionaries/compounds/batch", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals( - "{\"requests\":[{\"action\":\"addEntry\",\"body\":{\"objectID\":\"1\",\"language\":\"en\",\"additional\":\"try" + " me\"}}]}", - req.body, - JSONCompareMode.STRICT - ) - ); - } - - @Test - @DisplayName("browse with minimal parameters") - void browseTest0() { - String indexName0 = "indexName"; - - assertDoesNotThrow(() -> { - client.browse(indexName0, Object.class); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/indexName/browse", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{}", req.body, JSONCompareMode.STRICT)); - } - - @Test - @DisplayName("browse with search parameters") - void browseTest1() { - String indexName0 = "indexName"; - BrowseParamsObject browseParams0 = new BrowseParamsObject(); - { - String query1 = "myQuery"; - browseParams0.setQuery(query1); - List facetFilters1 = new ArrayList<>(); - { - String facetFilters_02 = "tags:algolia"; - facetFilters1.add(MixedSearchFilters.of(facetFilters_02)); - } - browseParams0.setFacetFilters(FacetFilters.of(facetFilters1)); - } - - assertDoesNotThrow(() -> { - client.browse(indexName0, browseParams0, Object.class); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/indexName/browse", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals("{\"query\":\"myQuery\",\"facetFilters\":[\"tags:algolia\"]}", req.body, JSONCompareMode.STRICT) - ); - } - - @Test - @DisplayName("browse allow a cursor in parameters") - void browseTest2() { - String indexName0 = "indexName"; - BrowseParamsObject browseParams0 = new BrowseParamsObject(); - { - String cursor1 = "test"; - browseParams0.setCursor(cursor1); - } - - assertDoesNotThrow(() -> { - client.browse(indexName0, browseParams0, Object.class); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/indexName/browse", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"cursor\":\"test\"}", req.body, JSONCompareMode.STRICT)); - } - - @Test - @DisplayName("clearAllSynonyms0") - void clearAllSynonymsTest0() { - String indexName0 = "indexName"; - - assertDoesNotThrow(() -> { - client.clearAllSynonyms(indexName0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/indexName/synonyms/clear", req.path); - assertEquals("POST", req.method); - assertEquals("{}", req.body); - } - - @Test - @DisplayName("clearObjects0") - void clearObjectsTest0() { - String indexName0 = "theIndexName"; - - assertDoesNotThrow(() -> { - client.clearObjects(indexName0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/theIndexName/clear", req.path); - assertEquals("POST", req.method); - assertEquals("{}", req.body); - } - - @Test - @DisplayName("clearRules0") - void clearRulesTest0() { - String indexName0 = "indexName"; - - assertDoesNotThrow(() -> { - client.clearRules(indexName0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/indexName/rules/clear", req.path); - assertEquals("POST", req.method); - assertEquals("{}", req.body); - } - - @Test - @DisplayName("allow del method for a custom path with minimal parameters") - void customDeleteTest0() { - String path0 = "/test/minimal"; - - assertDoesNotThrow(() -> { - client.customDelete(path0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/minimal", req.path); - assertEquals("DELETE", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("allow del method for a custom path with all parameters") - void customDeleteTest1() { - String path0 = "/test/all"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - - assertDoesNotThrow(() -> { - client.customDelete(path0, parameters0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/all", req.path); - assertEquals("DELETE", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("allow get method for a custom path with minimal parameters") - void customGetTest0() { - String path0 = "/test/minimal"; - - assertDoesNotThrow(() -> { - client.customGet(path0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/minimal", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("allow get method for a custom path with all parameters") - void customGetTest1() { - String path0 = "/test/all"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - - assertDoesNotThrow(() -> { - client.customGet(path0, parameters0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/all", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("allow post method for a custom path with minimal parameters") - void customPostTest0() { - String path0 = "/test/minimal"; - - assertDoesNotThrow(() -> { - client.customPost(path0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/minimal", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{}", req.body, JSONCompareMode.STRICT)); - } - - @Test - @DisplayName("allow post method for a custom path with all parameters") - void customPostTest1() { - String path0 = "/test/all"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String body1 = "parameters"; - body0.put("body", body1); - } - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/all", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"body\":\"parameters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions can override default query parameters") - void customPostTest2() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("query", "myQueryParameter"); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"myQueryParameter\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions merges query parameters with default ones") - void customPostTest3() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("query2", "myQueryParameter"); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"parameters\",\"query2\":\"myQueryParameter\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions can override default headers") - void customPostTest4() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraHeader("x-algolia-api-key", "myApiKey"); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - - try { - Map expectedHeaders = json.readValue( - "{\"x-algolia-api-key\":\"myApiKey\"}", - new TypeReference>() {} - ); - Map actualHeaders = req.headers; - - for (Map.Entry p : expectedHeaders.entrySet()) { - assertEquals(p.getValue(), actualHeaders.get(p.getKey())); - } - } catch (JsonProcessingException e) { - fail("failed to parse headers json"); - } - } - - @Test - @DisplayName("requestOptions merges headers with default ones") - void customPostTest5() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraHeader("x-algolia-api-key", "myApiKey"); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - - try { - Map expectedHeaders = json.readValue( - "{\"x-algolia-api-key\":\"myApiKey\"}", - new TypeReference>() {} - ); - Map actualHeaders = req.headers; - - for (Map.Entry p : expectedHeaders.entrySet()) { - assertEquals(p.getValue(), actualHeaders.get(p.getKey())); - } - } catch (JsonProcessingException e) { - fail("failed to parse headers json"); - } - } - - @Test - @DisplayName("requestOptions queryParameters accepts booleans") - void customPostTest6() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("isItWorking", true); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"parameters\",\"isItWorking\":\"true\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions queryParameters accepts integers") - void customPostTest7() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("myParam", 2); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"parameters\",\"myParam\":\"2\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions queryParameters accepts list of string") - void customPostTest8() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("myParam", Arrays.asList("c", "d")); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"parameters\",\"myParam\":\"c,d\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions queryParameters accepts list of booleans") - void customPostTest9() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("myParam", Arrays.asList(true, true, false)); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"parameters\",\"myParam\":\"true,true,false\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("requestOptions queryParameters accepts list of integers") - void customPostTest10() { - String path0 = "/test/requestOptions"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String facet1 = "filters"; - body0.put("facet", facet1); - } - - RequestOptions requestOptions = new RequestOptions(); - requestOptions.addExtraQueryParameters("myParam", Arrays.asList(1, 2)); - - assertDoesNotThrow(() -> { - client.customPost(path0, parameters0, body0, requestOptions); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/requestOptions", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"query\":\"parameters\",\"myParam\":\"1,2\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("allow put method for a custom path with minimal parameters") - void customPutTest0() { - String path0 = "/test/minimal"; - - assertDoesNotThrow(() -> { - client.customPut(path0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/minimal", req.path); - assertEquals("PUT", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{}", req.body, JSONCompareMode.STRICT)); - } - - @Test - @DisplayName("allow put method for a custom path with all parameters") - void customPutTest1() { - String path0 = "/test/all"; - Map parameters0 = new HashMap<>(); - { - String query1 = "parameters"; - parameters0.put("query", query1); - } - Map body0 = new HashMap<>(); - { - String body1 = "parameters"; - body0.put("body", body1); - } - - assertDoesNotThrow(() -> { - client.customPut(path0, parameters0, body0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/test/all", req.path); - assertEquals("PUT", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"body\":\"parameters\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("deleteApiKey0") - void deleteApiKeyTest0() { - String key0 = "myTestApiKey"; - - assertDoesNotThrow(() -> { - client.deleteApiKey(key0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/keys/myTestApiKey", req.path); - assertEquals("DELETE", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("deleteBy0") - void deleteByTest0() { - String indexName0 = "theIndexName"; - DeleteByParams deleteByParams0 = new DeleteByParams(); - { - String filters1 = "brand:brandName"; - deleteByParams0.setFilters(filters1); - } - - assertDoesNotThrow(() -> { - client.deleteBy(indexName0, deleteByParams0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/theIndexName/deleteByQuery", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"filters\":\"brand:brandName\"}", req.body, JSONCompareMode.STRICT)); - } - - @Test - @DisplayName("deleteIndex0") - void deleteIndexTest0() { - String indexName0 = "theIndexName"; - - assertDoesNotThrow(() -> { - client.deleteIndex(indexName0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/theIndexName", req.path); - assertEquals("DELETE", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("deleteObject0") - void deleteObjectTest0() { - String indexName0 = "theIndexName"; - String objectID0 = "uniqueID"; - - assertDoesNotThrow(() -> { - client.deleteObject(indexName0, objectID0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/theIndexName/uniqueID", req.path); - assertEquals("DELETE", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("delete rule simple case") - void deleteRuleTest0() { - String indexName0 = "indexName"; - String objectID0 = "id1"; - - assertDoesNotThrow(() -> { - client.deleteRule(indexName0, objectID0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/indexName/rules/id1", req.path); - assertEquals("DELETE", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("delete rule with simple characters to encode in objectID") - void deleteRuleTest1() { - String indexName0 = "indexName"; - String objectID0 = "test/with/slash"; - - assertDoesNotThrow(() -> { - client.deleteRule(indexName0, objectID0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/indexName/rules/test%2Fwith%2Fslash", req.path); - assertEquals("DELETE", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("deleteSource0") - void deleteSourceTest0() { - String source0 = "theSource"; - - assertDoesNotThrow(() -> { - client.deleteSource(source0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/security/sources/theSource", req.path); - assertEquals("DELETE", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("deleteSynonym0") - void deleteSynonymTest0() { - String indexName0 = "indexName"; - String objectID0 = "id1"; - - assertDoesNotThrow(() -> { - client.deleteSynonym(indexName0, objectID0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/indexName/synonyms/id1", req.path); - assertEquals("DELETE", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("getApiKey0") - void getApiKeyTest0() { - String key0 = "myTestApiKey"; - - assertDoesNotThrow(() -> { - client.getApiKey(key0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/keys/myTestApiKey", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("get getDictionaryLanguages") - void getDictionaryLanguagesTest0() { - assertDoesNotThrow(() -> { - client.getDictionaryLanguages(); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/dictionaries/*/languages", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("get getDictionarySettings results") - void getDictionarySettingsTest0() { - assertDoesNotThrow(() -> { - client.getDictionarySettings(); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/dictionaries/*/settings", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("getLogs with minimal parameters") - void getLogsTest0() { - assertDoesNotThrow(() -> { - client.getLogs(); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/logs", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("getLogs with parameters") - void getLogsTest1() { - int offset0 = 5; - int length0 = 10; - String indexName0 = "theIndexName"; - LogType type0 = LogType.fromValue("all"); - - assertDoesNotThrow(() -> { - client.getLogs(offset0, length0, indexName0, type0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/logs", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue( - "{\"offset\":\"5\",\"length\":\"10\",\"indexName\":\"theIndexName\",\"type\":\"all\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("getObject0") - void getObjectTest0() { - String indexName0 = "theIndexName"; - String objectID0 = "uniqueID"; - List attributesToRetrieve0 = new ArrayList<>(); - { - String attributesToRetrieve_01 = "attr1"; - attributesToRetrieve0.add(attributesToRetrieve_01); - String attributesToRetrieve_11 = "attr2"; - attributesToRetrieve0.add(attributesToRetrieve_11); - } - - assertDoesNotThrow(() -> { - client.getObject(indexName0, objectID0, attributesToRetrieve0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/theIndexName/uniqueID", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue( - "{\"attributesToRetrieve\":\"attr1,attr2\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("getObjects0") - void getObjectsTest0() { - GetObjectsParams getObjectsParams0 = new GetObjectsParams(); - { - List requests1 = new ArrayList<>(); - { - GetObjectsRequest requests_02 = new GetObjectsRequest(); - { - List attributesToRetrieve3 = new ArrayList<>(); - { - String attributesToRetrieve_04 = "attr1"; - attributesToRetrieve3.add(attributesToRetrieve_04); - String attributesToRetrieve_14 = "attr2"; - attributesToRetrieve3.add(attributesToRetrieve_14); - } - requests_02.setAttributesToRetrieve(attributesToRetrieve3); - String objectID3 = "uniqueID"; - requests_02.setObjectID(objectID3); - String indexName3 = "theIndexName"; - requests_02.setIndexName(indexName3); - } - requests1.add(requests_02); - } - getObjectsParams0.setRequests(requests1); - } - - assertDoesNotThrow(() -> { - client.getObjects(getObjectsParams0, Object.class); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/*/objects", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals( - "{\"requests\":[{\"attributesToRetrieve\":[\"attr1\",\"attr2\"],\"objectID\":\"uniqueID\",\"indexName\":\"theIndexName\"}]}", - req.body, - JSONCompareMode.STRICT - ) - ); - } - - @Test - @DisplayName("getRule0") - void getRuleTest0() { - String indexName0 = "indexName"; - String objectID0 = "id1"; - - assertDoesNotThrow(() -> { - client.getRule(indexName0, objectID0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/indexName/rules/id1", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("getSettings0") - void getSettingsTest0() { - String indexName0 = "theIndexName"; - - assertDoesNotThrow(() -> { - client.getSettings(indexName0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/theIndexName/settings", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("getSources0") - void getSourcesTest0() { - assertDoesNotThrow(() -> { - client.getSources(); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/security/sources", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("getSynonym0") - void getSynonymTest0() { - String indexName0 = "indexName"; - String objectID0 = "id1"; - - assertDoesNotThrow(() -> { - client.getSynonym(indexName0, objectID0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/indexName/synonyms/id1", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("getTask0") - void getTaskTest0() { - String indexName0 = "theIndexName"; - long taskID0 = 123L; - - assertDoesNotThrow(() -> { - client.getTask(indexName0, taskID0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/theIndexName/task/123", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("getTopUserIds0") - void getTopUserIdsTest0() { - assertDoesNotThrow(() -> { - client.getTopUserIds(); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/clusters/mapping/top", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("getUserId0") - void getUserIdTest0() { - String userID0 = "uniqueID"; - - assertDoesNotThrow(() -> { - client.getUserId(userID0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/clusters/mapping/uniqueID", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("hasPendingMappings with minimal parameters") - void hasPendingMappingsTest0() { - assertDoesNotThrow(() -> { - client.hasPendingMappings(); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/clusters/mapping/pending", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("hasPendingMappings with parameters") - void hasPendingMappingsTest1() { - boolean getClusters0 = true; - - assertDoesNotThrow(() -> { - client.hasPendingMappings(getClusters0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/clusters/mapping/pending", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue("{\"getClusters\":\"true\"}", new TypeReference>() {}); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("listApiKeys0") - void listApiKeysTest0() { - assertDoesNotThrow(() -> { - client.listApiKeys(); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/keys", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("listClusters0") - void listClustersTest0() { - assertDoesNotThrow(() -> { - client.listClusters(); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/clusters", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("listIndices with minimal parameters") - void listIndicesTest0() { - assertDoesNotThrow(() -> { - client.listIndices(); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("listIndices with parameters") - void listIndicesTest1() { - int page0 = 8; - int hitsPerPage0 = 3; - - assertDoesNotThrow(() -> { - client.listIndices(page0, hitsPerPage0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue( - "{\"page\":\"8\",\"hitsPerPage\":\"3\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("listUserIds with minimal parameters") - void listUserIdsTest0() { - assertDoesNotThrow(() -> { - client.listUserIds(); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/clusters/mapping", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("listUserIds with parameters") - void listUserIdsTest1() { - int page0 = 8; - int hitsPerPage0 = 100; - - assertDoesNotThrow(() -> { - client.listUserIds(page0, hitsPerPage0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/clusters/mapping", req.path); - assertEquals("GET", req.method); - assertNull(req.body); - - try { - Map expectedQuery = json.readValue( - "{\"page\":\"8\",\"hitsPerPage\":\"100\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("multipleBatch0") - void multipleBatchTest0() { - BatchParams batchParams0 = new BatchParams(); - { - List requests1 = new ArrayList<>(); - { - MultipleBatchRequest requests_02 = new MultipleBatchRequest(); - { - Action action3 = Action.fromValue("addObject"); - requests_02.setAction(action3); - Map body3 = new HashMap<>(); - { - String key4 = "value"; - body3.put("key", key4); - } - requests_02.setBody(body3); - String indexName3 = "theIndexName"; - requests_02.setIndexName(indexName3); - } - requests1.add(requests_02); - } - batchParams0.setRequests(requests1); - } - - assertDoesNotThrow(() -> { - client.multipleBatch(batchParams0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/*/batch", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals( - "{\"requests\":[{\"action\":\"addObject\",\"body\":{\"key\":\"value\"},\"indexName\":\"theIndexName\"}]}", - req.body, - JSONCompareMode.STRICT - ) - ); - } - - @Test - @DisplayName("operationIndex0") - void operationIndexTest0() { - String indexName0 = "theIndexName"; - OperationIndexParams operationIndexParams0 = new OperationIndexParams(); - { - OperationType operation1 = OperationType.fromValue("copy"); - operationIndexParams0.setOperation(operation1); - String destination1 = "dest"; - operationIndexParams0.setDestination(destination1); - List scope1 = new ArrayList<>(); - { - ScopeType scope_02 = ScopeType.fromValue("rules"); - scope1.add(scope_02); - ScopeType scope_12 = ScopeType.fromValue("settings"); - scope1.add(scope_12); - } - operationIndexParams0.setScope(scope1); - } - - assertDoesNotThrow(() -> { - client.operationIndex(indexName0, operationIndexParams0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/theIndexName/operation", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals( - "{\"operation\":\"copy\",\"destination\":\"dest\",\"scope\":[\"rules\",\"settings\"]}", - req.body, - JSONCompareMode.STRICT - ) - ); - } - - @Test - @DisplayName("partialUpdateObject0") - void partialUpdateObjectTest0() { - String indexName0 = "theIndexName"; - String objectID0 = "uniqueID"; - Map attributesToUpdate0 = new HashMap<>(); - { - String id11 = "test"; - attributesToUpdate0.put("id1", AttributeToUpdate.of(id11)); - BuiltInOperation id21 = new BuiltInOperation(); - { - BuiltInOperationType operation2 = BuiltInOperationType.fromValue("AddUnique"); - id21.setOperation(operation2); - String value2 = "test2"; - id21.setValue(value2); - } - attributesToUpdate0.put("id2", id21); - } - boolean createIfNotExists0 = true; - - assertDoesNotThrow(() -> { - client.partialUpdateObject(indexName0, objectID0, attributesToUpdate0, createIfNotExists0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/theIndexName/uniqueID/partial", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals( - "{\"id1\":\"test\",\"id2\":{\"_operation\":\"AddUnique\",\"value\":\"test2\"}}", - req.body, - JSONCompareMode.STRICT - ) - ); - - try { - Map expectedQuery = json.readValue( - "{\"createIfNotExists\":\"true\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("removeUserId0") - void removeUserIdTest0() { - String userID0 = "uniqueID"; - - assertDoesNotThrow(() -> { - client.removeUserId(userID0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/clusters/mapping/uniqueID", req.path); - assertEquals("DELETE", req.method); - assertNull(req.body); - } - - @Test - @DisplayName("replaceSources0") - void replaceSourcesTest0() { - List source0 = new ArrayList<>(); - { - Source source_01 = new Source(); - { - String source2 = "theSource"; - source_01.setSource(source2); - String description2 = "theDescription"; - source_01.setDescription(description2); - } - source0.add(source_01); - } - - assertDoesNotThrow(() -> { - client.replaceSources(source0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/security/sources", req.path); - assertEquals("PUT", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals("[{\"source\":\"theSource\",\"description\":\"theDescription\"}]", req.body, JSONCompareMode.STRICT) - ); - } - - @Test - @DisplayName("restoreApiKey0") - void restoreApiKeyTest0() { - String key0 = "myApiKey"; - - assertDoesNotThrow(() -> { - client.restoreApiKey(key0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/keys/myApiKey/restore", req.path); - assertEquals("POST", req.method); - assertEquals("{}", req.body); - } - - @Test - @DisplayName("saveObject0") - void saveObjectTest0() { - String indexName0 = "theIndexName"; - Map body0 = new HashMap<>(); - { - String objectID1 = "id"; - body0.put("objectID", objectID1); - String test1 = "val"; - body0.put("test", test1); - } - - assertDoesNotThrow(() -> { - client.saveObject(indexName0, body0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/theIndexName", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"objectID\":\"id\",\"test\":\"val\"}", req.body, JSONCompareMode.STRICT)); - } - - @Test - @DisplayName("saveRule with minimal parameters") - void saveRuleTest0() { - String indexName0 = "indexName"; - String objectID0 = "id1"; - Rule rule0 = new Rule(); - { - String objectID1 = "id1"; - rule0.setObjectID(objectID1); - List conditions1 = new ArrayList<>(); - { - Condition conditions_02 = new Condition(); - { - String pattern3 = "apple"; - conditions_02.setPattern(pattern3); - Anchoring anchoring3 = Anchoring.fromValue("contains"); - conditions_02.setAnchoring(anchoring3); - } - conditions1.add(conditions_02); - } - rule0.setConditions(conditions1); - } - - assertDoesNotThrow(() -> { - client.saveRule(indexName0, objectID0, rule0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/indexName/rules/id1", req.path); - assertEquals("PUT", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals( - "{\"objectID\":\"id1\",\"conditions\":[{\"pattern\":\"apple\",\"anchoring\":\"contains\"}]}", - req.body, - JSONCompareMode.STRICT - ) - ); - } - - @Test - @DisplayName("saveRule with all parameters") - void saveRuleTest1() { - String indexName0 = "indexName"; - String objectID0 = "id1"; - Rule rule0 = new Rule(); - { - String objectID1 = "id1"; - rule0.setObjectID(objectID1); - List conditions1 = new ArrayList<>(); - { - Condition conditions_02 = new Condition(); - { - String pattern3 = "apple"; - conditions_02.setPattern(pattern3); - Anchoring anchoring3 = Anchoring.fromValue("contains"); - conditions_02.setAnchoring(anchoring3); - boolean alternatives3 = false; - conditions_02.setAlternatives(alternatives3); - String context3 = "search"; - conditions_02.setContext(context3); - } - conditions1.add(conditions_02); - } - rule0.setConditions(conditions1); - Consequence consequence1 = new Consequence(); - { - ConsequenceParams params2 = new ConsequenceParams(); - { - String filters3 = "brand:apple"; - params2.setFilters(filters3); - ConsequenceQueryObject query3 = new ConsequenceQueryObject(); - { - List remove4 = new ArrayList<>(); - { - String remove_05 = "algolia"; - remove4.add(remove_05); - } - query3.setRemove(remove4); - List edits4 = new ArrayList<>(); - { - Edit edits_05 = new Edit(); - { - EditType type6 = EditType.fromValue("remove"); - edits_05.setType(type6); - String delete6 = "abc"; - edits_05.setDelete(delete6); - String insert6 = "cde"; - edits_05.setInsert(insert6); - } - edits4.add(edits_05); - Edit edits_15 = new Edit(); - { - EditType type6 = EditType.fromValue("replace"); - edits_15.setType(type6); - String delete6 = "abc"; - edits_15.setDelete(delete6); - String insert6 = "cde"; - edits_15.setInsert(insert6); - } - edits4.add(edits_15); - } - query3.setEdits(edits4); - } - params2.setQuery(query3); - } - consequence1.setParams(params2); - List hide2 = new ArrayList<>(); - { - ConsequenceHide hide_03 = new ConsequenceHide(); - { - String objectID4 = "321"; - hide_03.setObjectID(objectID4); - } - hide2.add(hide_03); - } - consequence1.setHide(hide2); - boolean filterPromotes2 = false; - consequence1.setFilterPromotes(filterPromotes2); - Map userData2 = Map.of("algolia", "aloglia"); - consequence1.setUserData(userData2); - List promote2 = new ArrayList<>(); - { - PromoteObjectID promote_03 = new PromoteObjectID(); - { - String objectID4 = "abc"; - promote_03.setObjectID(objectID4); - int position4 = 3; - promote_03.setPosition(position4); - } - promote2.add(promote_03); - PromoteObjectIDs promote_13 = new PromoteObjectIDs(); - { - List objectIDs4 = new ArrayList<>(); - { - String objectIDs_05 = "abc"; - objectIDs4.add(objectIDs_05); - String objectIDs_15 = "def"; - objectIDs4.add(objectIDs_15); - } - promote_13.setObjectIDs(objectIDs4); - int position4 = 1; - promote_13.setPosition(position4); - } - promote2.add(promote_13); - } - consequence1.setPromote(promote2); - } - rule0.setConsequence(consequence1); - String description1 = "test"; - rule0.setDescription(description1); - boolean enabled1 = true; - rule0.setEnabled(enabled1); - List validity1 = new ArrayList<>(); - { - TimeRange validity_02 = new TimeRange(); - { - int from3 = 1656670273; - validity_02.setFrom(from3); - int until3 = 1656670277; - validity_02.setUntil(until3); - } - validity1.add(validity_02); - } - rule0.setValidity(validity1); - } - boolean forwardToReplicas0 = true; - - assertDoesNotThrow(() -> { - client.saveRule(indexName0, objectID0, rule0, forwardToReplicas0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/indexName/rules/id1", req.path); - assertEquals("PUT", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals( - "{\"objectID\":\"id1\",\"conditions\":[{\"pattern\":\"apple\",\"anchoring\":\"contains\",\"alternatives\":false,\"context\":\"search\"}],\"consequence\":{\"params\":{\"filters\":\"brand:apple\",\"query\":{\"remove\":[\"algolia\"],\"edits\":[{\"type\":\"remove\",\"delete\":\"abc\",\"insert\":\"cde\"},{\"type\":\"replace\",\"delete\":\"abc\",\"insert\":\"cde\"}]}},\"hide\":[{\"objectID\":\"321\"}],\"filterPromotes\":false,\"userData\":{\"algolia\":\"aloglia\"},\"promote\":[{\"objectID\":\"abc\",\"position\":3},{\"objectIDs\":[\"abc\",\"def\"],\"position\":1}]},\"description\":\"test\",\"enabled\":true,\"validity\":[{\"from\":1656670273,\"until\":1656670277}]}", - req.body, - JSONCompareMode.STRICT - ) - ); - - try { - Map expectedQuery = json.readValue( - "{\"forwardToReplicas\":\"true\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("saveRules with minimal parameters") - void saveRulesTest0() { - String indexName0 = "indexName"; - List rules0 = new ArrayList<>(); - { - Rule rules_01 = new Rule(); - { - String objectID2 = "a-rule-id"; - rules_01.setObjectID(objectID2); - List conditions2 = new ArrayList<>(); - { - Condition conditions_03 = new Condition(); - { - String pattern4 = "smartphone"; - conditions_03.setPattern(pattern4); - Anchoring anchoring4 = Anchoring.fromValue("contains"); - conditions_03.setAnchoring(anchoring4); - } - conditions2.add(conditions_03); - } - rules_01.setConditions(conditions2); - } - rules0.add(rules_01); - Rule rules_11 = new Rule(); - { - String objectID2 = "a-second-rule-id"; - rules_11.setObjectID(objectID2); - List conditions2 = new ArrayList<>(); - { - Condition conditions_03 = new Condition(); - { - String pattern4 = "apple"; - conditions_03.setPattern(pattern4); - Anchoring anchoring4 = Anchoring.fromValue("contains"); - conditions_03.setAnchoring(anchoring4); - } - conditions2.add(conditions_03); - } - rules_11.setConditions(conditions2); - } - rules0.add(rules_11); - } - - assertDoesNotThrow(() -> { - client.saveRules(indexName0, rules0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/indexName/rules/batch", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals( - "[{\"objectID\":\"a-rule-id\",\"conditions\":[{\"pattern\":\"smartphone\",\"anchoring\":\"contains\"}]},{\"objectID\":\"a-second-rule-id\",\"conditions\":[{\"pattern\":\"apple\",\"anchoring\":\"contains\"}]}]", - req.body, - JSONCompareMode.STRICT - ) - ); - } - - @Test - @DisplayName("saveRules with all parameters") - void saveRulesTest1() { - String indexName0 = "indexName"; - List rules0 = new ArrayList<>(); - { - Rule rules_01 = new Rule(); - { - String objectID2 = "id1"; - rules_01.setObjectID(objectID2); - List conditions2 = new ArrayList<>(); - { - Condition conditions_03 = new Condition(); - { - String pattern4 = "apple"; - conditions_03.setPattern(pattern4); - Anchoring anchoring4 = Anchoring.fromValue("contains"); - conditions_03.setAnchoring(anchoring4); - boolean alternatives4 = false; - conditions_03.setAlternatives(alternatives4); - String context4 = "search"; - conditions_03.setContext(context4); - } - conditions2.add(conditions_03); - } - rules_01.setConditions(conditions2); - Consequence consequence2 = new Consequence(); - { - ConsequenceParams params3 = new ConsequenceParams(); - { - String filters4 = "brand:apple"; - params3.setFilters(filters4); - ConsequenceQueryObject query4 = new ConsequenceQueryObject(); - { - List remove5 = new ArrayList<>(); - { - String remove_06 = "algolia"; - remove5.add(remove_06); - } - query4.setRemove(remove5); - List edits5 = new ArrayList<>(); - { - Edit edits_06 = new Edit(); - { - EditType type7 = EditType.fromValue("remove"); - edits_06.setType(type7); - String delete7 = "abc"; - edits_06.setDelete(delete7); - String insert7 = "cde"; - edits_06.setInsert(insert7); - } - edits5.add(edits_06); - Edit edits_16 = new Edit(); - { - EditType type7 = EditType.fromValue("replace"); - edits_16.setType(type7); - String delete7 = "abc"; - edits_16.setDelete(delete7); - String insert7 = "cde"; - edits_16.setInsert(insert7); - } - edits5.add(edits_16); - } - query4.setEdits(edits5); - } - params3.setQuery(query4); - } - consequence2.setParams(params3); - List hide3 = new ArrayList<>(); - { - ConsequenceHide hide_04 = new ConsequenceHide(); - { - String objectID5 = "321"; - hide_04.setObjectID(objectID5); - } - hide3.add(hide_04); - } - consequence2.setHide(hide3); - boolean filterPromotes3 = false; - consequence2.setFilterPromotes(filterPromotes3); - Map userData3 = Map.of("algolia", "aloglia"); - consequence2.setUserData(userData3); - List promote3 = new ArrayList<>(); - { - PromoteObjectID promote_04 = new PromoteObjectID(); - { - String objectID5 = "abc"; - promote_04.setObjectID(objectID5); - int position5 = 3; - promote_04.setPosition(position5); - } - promote3.add(promote_04); - PromoteObjectIDs promote_14 = new PromoteObjectIDs(); - { - List objectIDs5 = new ArrayList<>(); - { - String objectIDs_06 = "abc"; - objectIDs5.add(objectIDs_06); - String objectIDs_16 = "def"; - objectIDs5.add(objectIDs_16); - } - promote_14.setObjectIDs(objectIDs5); - int position5 = 1; - promote_14.setPosition(position5); - } - promote3.add(promote_14); - } - consequence2.setPromote(promote3); - } - rules_01.setConsequence(consequence2); - String description2 = "test"; - rules_01.setDescription(description2); - boolean enabled2 = true; - rules_01.setEnabled(enabled2); - List validity2 = new ArrayList<>(); - { - TimeRange validity_03 = new TimeRange(); - { - int from4 = 1656670273; - validity_03.setFrom(from4); - int until4 = 1656670277; - validity_03.setUntil(until4); - } - validity2.add(validity_03); - } - rules_01.setValidity(validity2); - } - rules0.add(rules_01); - } - boolean forwardToReplicas0 = true; - boolean clearExistingRules0 = true; - - assertDoesNotThrow(() -> { - client.saveRules(indexName0, rules0, forwardToReplicas0, clearExistingRules0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/indexName/rules/batch", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals( - "[{\"objectID\":\"id1\",\"conditions\":[{\"pattern\":\"apple\",\"anchoring\":\"contains\",\"alternatives\":false,\"context\":\"search\"}],\"consequence\":{\"params\":{\"filters\":\"brand:apple\",\"query\":{\"remove\":[\"algolia\"],\"edits\":[{\"type\":\"remove\",\"delete\":\"abc\",\"insert\":\"cde\"},{\"type\":\"replace\",\"delete\":\"abc\",\"insert\":\"cde\"}]}},\"hide\":[{\"objectID\":\"321\"}],\"filterPromotes\":false,\"userData\":{\"algolia\":\"aloglia\"},\"promote\":[{\"objectID\":\"abc\",\"position\":3},{\"objectIDs\":[\"abc\",\"def\"],\"position\":1}]},\"description\":\"test\",\"enabled\":true,\"validity\":[{\"from\":1656670273,\"until\":1656670277}]}]", - req.body, - JSONCompareMode.STRICT - ) - ); - - try { - Map expectedQuery = json.readValue( - "{\"forwardToReplicas\":\"true\",\"clearExistingRules\":\"true\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("saveSynonym0") - void saveSynonymTest0() { - String indexName0 = "indexName"; - String objectID0 = "id1"; - SynonymHit synonymHit0 = new SynonymHit(); - { - String objectID1 = "id1"; - synonymHit0.setObjectID(objectID1); - SynonymType type1 = SynonymType.fromValue("synonym"); - synonymHit0.setType(type1); - List synonyms1 = new ArrayList<>(); - { - String synonyms_02 = "car"; - synonyms1.add(synonyms_02); - String synonyms_12 = "vehicule"; - synonyms1.add(synonyms_12); - String synonyms_22 = "auto"; - synonyms1.add(synonyms_22); - } - synonymHit0.setSynonyms(synonyms1); - } - boolean forwardToReplicas0 = true; - - assertDoesNotThrow(() -> { - client.saveSynonym(indexName0, objectID0, synonymHit0, forwardToReplicas0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/indexName/synonyms/id1", req.path); - assertEquals("PUT", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals( - "{\"objectID\":\"id1\",\"type\":\"synonym\",\"synonyms\":[\"car\",\"vehicule\",\"auto\"]}", - req.body, - JSONCompareMode.STRICT - ) - ); - - try { - Map expectedQuery = json.readValue( - "{\"forwardToReplicas\":\"true\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("saveSynonyms0") - void saveSynonymsTest0() { - String indexName0 = "indexName"; - List synonymHit0 = new ArrayList<>(); - { - SynonymHit synonymHit_01 = new SynonymHit(); - { - String objectID2 = "id1"; - synonymHit_01.setObjectID(objectID2); - SynonymType type2 = SynonymType.fromValue("synonym"); - synonymHit_01.setType(type2); - List synonyms2 = new ArrayList<>(); - { - String synonyms_03 = "car"; - synonyms2.add(synonyms_03); - String synonyms_13 = "vehicule"; - synonyms2.add(synonyms_13); - String synonyms_23 = "auto"; - synonyms2.add(synonyms_23); - } - synonymHit_01.setSynonyms(synonyms2); - } - synonymHit0.add(synonymHit_01); - SynonymHit synonymHit_11 = new SynonymHit(); - { - String objectID2 = "id2"; - synonymHit_11.setObjectID(objectID2); - SynonymType type2 = SynonymType.fromValue("onewaysynonym"); - synonymHit_11.setType(type2); - String input2 = "iphone"; - synonymHit_11.setInput(input2); - List synonyms2 = new ArrayList<>(); - { - String synonyms_03 = "ephone"; - synonyms2.add(synonyms_03); - String synonyms_13 = "aphone"; - synonyms2.add(synonyms_13); - String synonyms_23 = "yphone"; - synonyms2.add(synonyms_23); - } - synonymHit_11.setSynonyms(synonyms2); - } - synonymHit0.add(synonymHit_11); - } - boolean forwardToReplicas0 = true; - boolean replaceExistingSynonyms0 = false; - - assertDoesNotThrow(() -> { - client.saveSynonyms(indexName0, synonymHit0, forwardToReplicas0, replaceExistingSynonyms0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/indexName/synonyms/batch", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals( - "[{\"objectID\":\"id1\",\"type\":\"synonym\",\"synonyms\":[\"car\",\"vehicule\",\"auto\"]},{\"objectID\":\"id2\",\"type\":\"onewaysynonym\",\"input\":\"iphone\",\"synonyms\":[\"ephone\",\"aphone\",\"yphone\"]}]", - req.body, - JSONCompareMode.STRICT - ) - ); - - try { - Map expectedQuery = json.readValue( - "{\"forwardToReplicas\":\"true\",\"replaceExistingSynonyms\":\"false\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("search for a single hits request with minimal parameters") - void searchTest0() { - SearchMethodParams searchMethodParams0 = new SearchMethodParams(); - { - List requests1 = new ArrayList<>(); - { - SearchForHits requests_02 = new SearchForHits(); - { - String indexName3 = "cts_e2e_search_empty_index"; - requests_02.setIndexName(indexName3); - } - requests1.add(requests_02); - } - searchMethodParams0.setRequests(requests1); - } - - assertDoesNotThrow(() -> { - client.search(searchMethodParams0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/*/queries", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals("{\"requests\":[{\"indexName\":\"cts_e2e_search_empty_index\"}]}", req.body, JSONCompareMode.STRICT) - ); - } - - @Test - @DisplayName("search for a single facet request with minimal parameters") - void searchTest1() { - SearchMethodParams searchMethodParams0 = new SearchMethodParams(); - { - List requests1 = new ArrayList<>(); - { - SearchForFacets requests_02 = new SearchForFacets(); - { - String indexName3 = "cts_e2e_search_facet"; - requests_02.setIndexName(indexName3); - SearchTypeFacet type3 = SearchTypeFacet.fromValue("facet"); - requests_02.setType(type3); - String facet3 = "editor"; - requests_02.setFacet(facet3); - } - requests1.add(requests_02); - } - searchMethodParams0.setRequests(requests1); - SearchStrategy strategy1 = SearchStrategy.fromValue("stopIfEnoughMatches"); - searchMethodParams0.setStrategy(strategy1); - } - - assertDoesNotThrow(() -> { - client.search(searchMethodParams0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/*/queries", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals( - "{\"requests\":[{\"indexName\":\"cts_e2e_search_facet\",\"type\":\"facet\",\"facet\":\"editor\"}],\"strategy\":\"stopIfEnoughMatches\"}", - req.body, - JSONCompareMode.STRICT - ) - ); - } - - @Test - @DisplayName("search for a single hits request with all parameters") - void searchTest2() { - SearchMethodParams searchMethodParams0 = new SearchMethodParams(); - { - List requests1 = new ArrayList<>(); - { - SearchForHits requests_02 = new SearchForHits(); - { - String indexName3 = "theIndexName"; - requests_02.setIndexName(indexName3); - String query3 = "myQuery"; - requests_02.setQuery(query3); - int hitsPerPage3 = 50; - requests_02.setHitsPerPage(hitsPerPage3); - SearchTypeDefault type3 = SearchTypeDefault.fromValue("default"); - requests_02.setType(type3); - } - requests1.add(requests_02); - } - searchMethodParams0.setRequests(requests1); - } - - assertDoesNotThrow(() -> { - client.search(searchMethodParams0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/*/queries", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals( - "{\"requests\":[{\"indexName\":\"theIndexName\",\"query\":\"myQuery\",\"hitsPerPage\":50,\"type\":\"default\"}]}", - req.body, - JSONCompareMode.STRICT - ) - ); - } - - @Test - @DisplayName("search for a single facet request with all parameters") - void searchTest3() { - SearchMethodParams searchMethodParams0 = new SearchMethodParams(); - { - List requests1 = new ArrayList<>(); - { - SearchForFacets requests_02 = new SearchForFacets(); - { - String indexName3 = "theIndexName"; - requests_02.setIndexName(indexName3); - SearchTypeFacet type3 = SearchTypeFacet.fromValue("facet"); - requests_02.setType(type3); - String facet3 = "theFacet"; - requests_02.setFacet(facet3); - String facetQuery3 = "theFacetQuery"; - requests_02.setFacetQuery(facetQuery3); - String query3 = "theQuery"; - requests_02.setQuery(query3); - int maxFacetHits3 = 50; - requests_02.setMaxFacetHits(maxFacetHits3); - } - requests1.add(requests_02); - } - searchMethodParams0.setRequests(requests1); - SearchStrategy strategy1 = SearchStrategy.fromValue("stopIfEnoughMatches"); - searchMethodParams0.setStrategy(strategy1); - } - - assertDoesNotThrow(() -> { - client.search(searchMethodParams0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/*/queries", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals( - "{\"requests\":[{\"indexName\":\"theIndexName\",\"type\":\"facet\",\"facet\":\"theFacet\",\"facetQuery\":\"theFacetQuery\",\"query\":\"theQuery\",\"maxFacetHits\":50}],\"strategy\":\"stopIfEnoughMatches\"}", - req.body, - JSONCompareMode.STRICT - ) - ); - } - - @Test - @DisplayName("search for multiple mixed requests in multiple indices with minimal parameters") - void searchTest4() { - SearchMethodParams searchMethodParams0 = new SearchMethodParams(); - { - List requests1 = new ArrayList<>(); - { - SearchForHits requests_02 = new SearchForHits(); - { - String indexName3 = "theIndexName"; - requests_02.setIndexName(indexName3); - } - requests1.add(requests_02); - SearchForFacets requests_12 = new SearchForFacets(); - { - String indexName3 = "theIndexName2"; - requests_12.setIndexName(indexName3); - SearchTypeFacet type3 = SearchTypeFacet.fromValue("facet"); - requests_12.setType(type3); - String facet3 = "theFacet"; - requests_12.setFacet(facet3); - } - requests1.add(requests_12); - SearchForHits requests_22 = new SearchForHits(); - { - String indexName3 = "theIndexName"; - requests_22.setIndexName(indexName3); - SearchTypeDefault type3 = SearchTypeDefault.fromValue("default"); - requests_22.setType(type3); - } - requests1.add(requests_22); - } - searchMethodParams0.setRequests(requests1); - SearchStrategy strategy1 = SearchStrategy.fromValue("stopIfEnoughMatches"); - searchMethodParams0.setStrategy(strategy1); - } - - assertDoesNotThrow(() -> { - client.search(searchMethodParams0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/*/queries", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals( - "{\"requests\":[{\"indexName\":\"theIndexName\"},{\"indexName\":\"theIndexName2\",\"type\":\"facet\",\"facet\":\"theFacet\"},{\"indexName\":\"theIndexName\",\"type\":\"default\"}],\"strategy\":\"stopIfEnoughMatches\"}", - req.body, - JSONCompareMode.STRICT - ) - ); - } - - @Test - @DisplayName("search for multiple mixed requests in multiple indices with all parameters") - void searchTest5() { - SearchMethodParams searchMethodParams0 = new SearchMethodParams(); - { - List requests1 = new ArrayList<>(); - { - SearchForFacets requests_02 = new SearchForFacets(); - { - String indexName3 = "theIndexName"; - requests_02.setIndexName(indexName3); - SearchTypeFacet type3 = SearchTypeFacet.fromValue("facet"); - requests_02.setType(type3); - String facet3 = "theFacet"; - requests_02.setFacet(facet3); - String facetQuery3 = "theFacetQuery"; - requests_02.setFacetQuery(facetQuery3); - String query3 = "theQuery"; - requests_02.setQuery(query3); - int maxFacetHits3 = 50; - requests_02.setMaxFacetHits(maxFacetHits3); - } - requests1.add(requests_02); - SearchForHits requests_12 = new SearchForHits(); - { - String indexName3 = "theIndexName"; - requests_12.setIndexName(indexName3); - String query3 = "myQuery"; - requests_12.setQuery(query3); - int hitsPerPage3 = 50; - requests_12.setHitsPerPage(hitsPerPage3); - SearchTypeDefault type3 = SearchTypeDefault.fromValue("default"); - requests_12.setType(type3); - } - requests1.add(requests_12); - } - searchMethodParams0.setRequests(requests1); - SearchStrategy strategy1 = SearchStrategy.fromValue("stopIfEnoughMatches"); - searchMethodParams0.setStrategy(strategy1); - } - - assertDoesNotThrow(() -> { - client.search(searchMethodParams0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/*/queries", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals( - "{\"requests\":[{\"indexName\":\"theIndexName\",\"type\":\"facet\",\"facet\":\"theFacet\",\"facetQuery\":\"theFacetQuery\",\"query\":\"theQuery\",\"maxFacetHits\":50},{\"indexName\":\"theIndexName\",\"query\":\"myQuery\",\"hitsPerPage\":50,\"type\":\"default\"}],\"strategy\":\"stopIfEnoughMatches\"}", - req.body, - JSONCompareMode.STRICT - ) - ); - } - - @Test - @DisplayName("search filters accept all of the possible shapes") - void searchTest6() { - SearchMethodParams searchMethodParams0 = new SearchMethodParams(); - { - List requests1 = new ArrayList<>(); - { - SearchForHits requests_02 = new SearchForHits(); - { - String indexName3 = "theIndexName"; - requests_02.setIndexName(indexName3); - String facetFilters3 = "mySearch:filters"; - requests_02.setFacetFilters(FacetFilters.of(facetFilters3)); - String reRankingApplyFilter3 = "mySearch:filters"; - requests_02.setReRankingApplyFilter(ReRankingApplyFilter.of(reRankingApplyFilter3)); - String tagFilters3 = "mySearch:filters"; - requests_02.setTagFilters(TagFilters.of(tagFilters3)); - String numericFilters3 = "mySearch:filters"; - requests_02.setNumericFilters(NumericFilters.of(numericFilters3)); - String optionalFilters3 = "mySearch:filters"; - requests_02.setOptionalFilters(OptionalFilters.of(optionalFilters3)); - } - requests1.add(requests_02); - SearchForHits requests_12 = new SearchForHits(); - { - String indexName3 = "theIndexName"; - requests_12.setIndexName(indexName3); - List facetFilters3 = new ArrayList<>(); - { - String facetFilters_04 = "mySearch:filters"; - facetFilters3.add(MixedSearchFilters.of(facetFilters_04)); - List facetFilters_14 = new ArrayList<>(); - { - String facetFilters_1_05 = "mySearch:filters"; - facetFilters_14.add(facetFilters_1_05); - } - facetFilters3.add(MixedSearchFilters.of(facetFilters_14)); - } - requests_12.setFacetFilters(FacetFilters.of(facetFilters3)); - List reRankingApplyFilter3 = new ArrayList<>(); - { - String reRankingApplyFilter_04 = "mySearch:filters"; - reRankingApplyFilter3.add(MixedSearchFilters.of(reRankingApplyFilter_04)); - List reRankingApplyFilter_14 = new ArrayList<>(); - { - String reRankingApplyFilter_1_05 = "mySearch:filters"; - reRankingApplyFilter_14.add(reRankingApplyFilter_1_05); - } - reRankingApplyFilter3.add(MixedSearchFilters.of(reRankingApplyFilter_14)); - } - requests_12.setReRankingApplyFilter(ReRankingApplyFilter.of(reRankingApplyFilter3)); - List tagFilters3 = new ArrayList<>(); - { - String tagFilters_04 = "mySearch:filters"; - tagFilters3.add(MixedSearchFilters.of(tagFilters_04)); - List tagFilters_14 = new ArrayList<>(); - { - String tagFilters_1_05 = "mySearch:filters"; - tagFilters_14.add(tagFilters_1_05); - } - tagFilters3.add(MixedSearchFilters.of(tagFilters_14)); - } - requests_12.setTagFilters(TagFilters.of(tagFilters3)); - List numericFilters3 = new ArrayList<>(); - { - String numericFilters_04 = "mySearch:filters"; - numericFilters3.add(MixedSearchFilters.of(numericFilters_04)); - List numericFilters_14 = new ArrayList<>(); - { - String numericFilters_1_05 = "mySearch:filters"; - numericFilters_14.add(numericFilters_1_05); - } - numericFilters3.add(MixedSearchFilters.of(numericFilters_14)); - } - requests_12.setNumericFilters(NumericFilters.of(numericFilters3)); - List optionalFilters3 = new ArrayList<>(); - { - String optionalFilters_04 = "mySearch:filters"; - optionalFilters3.add(MixedSearchFilters.of(optionalFilters_04)); - List optionalFilters_14 = new ArrayList<>(); - { - String optionalFilters_1_05 = "mySearch:filters"; - optionalFilters_14.add(optionalFilters_1_05); - } - optionalFilters3.add(MixedSearchFilters.of(optionalFilters_14)); - } - requests_12.setOptionalFilters(OptionalFilters.of(optionalFilters3)); - } - requests1.add(requests_12); - } - searchMethodParams0.setRequests(requests1); - } - - assertDoesNotThrow(() -> { - client.search(searchMethodParams0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/*/queries", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals( - "{\"requests\":[{\"indexName\":\"theIndexName\",\"facetFilters\":\"mySearch:filters\",\"reRankingApplyFilter\":\"mySearch:filters\",\"tagFilters\":\"mySearch:filters\",\"numericFilters\":\"mySearch:filters\",\"optionalFilters\":\"mySearch:filters\"},{\"indexName\":\"theIndexName\",\"facetFilters\":[\"mySearch:filters\",[\"mySearch:filters\"]],\"reRankingApplyFilter\":[\"mySearch:filters\",[\"mySearch:filters\"]],\"tagFilters\":[\"mySearch:filters\",[\"mySearch:filters\"]],\"numericFilters\":[\"mySearch:filters\",[\"mySearch:filters\"]],\"optionalFilters\":[\"mySearch:filters\",[\"mySearch:filters\"]]}]}", - req.body, - JSONCompareMode.STRICT - ) - ); - } - - @Test - @DisplayName("search with all search parameters") - void searchTest7() { - SearchMethodParams searchMethodParams0 = new SearchMethodParams(); - { - List requests1 = new ArrayList<>(); - { - SearchForHits requests_02 = new SearchForHits(); - { - boolean advancedSyntax3 = true; - requests_02.setAdvancedSyntax(advancedSyntax3); - List advancedSyntaxFeatures3 = new ArrayList<>(); - { - AdvancedSyntaxFeatures advancedSyntaxFeatures_04 = AdvancedSyntaxFeatures.fromValue("exactPhrase"); - advancedSyntaxFeatures3.add(advancedSyntaxFeatures_04); - } - requests_02.setAdvancedSyntaxFeatures(advancedSyntaxFeatures3); - boolean allowTyposOnNumericTokens3 = true; - requests_02.setAllowTyposOnNumericTokens(allowTyposOnNumericTokens3); - List alternativesAsExact3 = new ArrayList<>(); - { - AlternativesAsExact alternativesAsExact_04 = AlternativesAsExact.fromValue("multiWordsSynonym"); - alternativesAsExact3.add(alternativesAsExact_04); - } - requests_02.setAlternativesAsExact(alternativesAsExact3); - boolean analytics3 = true; - requests_02.setAnalytics(analytics3); - List analyticsTags3 = new ArrayList<>(); - { - String analyticsTags_04 = ""; - analyticsTags3.add(analyticsTags_04); - } - requests_02.setAnalyticsTags(analyticsTags3); - String aroundLatLng3 = ""; - requests_02.setAroundLatLng(aroundLatLng3); - boolean aroundLatLngViaIP3 = true; - requests_02.setAroundLatLngViaIP(aroundLatLngViaIP3); - int aroundPrecision3 = 0; - requests_02.setAroundPrecision(AroundPrecision.of(aroundPrecision3)); - AroundRadiusAll aroundRadius3 = AroundRadiusAll.fromValue("all"); - requests_02.setAroundRadius(aroundRadius3); - boolean attributeCriteriaComputedByMinProximity3 = true; - requests_02.setAttributeCriteriaComputedByMinProximity(attributeCriteriaComputedByMinProximity3); - List attributesForFaceting3 = new ArrayList<>(); - { - String attributesForFaceting_04 = ""; - attributesForFaceting3.add(attributesForFaceting_04); - } - requests_02.setAttributesForFaceting(attributesForFaceting3); - List attributesToHighlight3 = new ArrayList<>(); - { - String attributesToHighlight_04 = ""; - attributesToHighlight3.add(attributesToHighlight_04); - } - requests_02.setAttributesToHighlight(attributesToHighlight3); - List attributesToRetrieve3 = new ArrayList<>(); - { - String attributesToRetrieve_04 = ""; - attributesToRetrieve3.add(attributesToRetrieve_04); - } - requests_02.setAttributesToRetrieve(attributesToRetrieve3); - List attributesToSnippet3 = new ArrayList<>(); - { - String attributesToSnippet_04 = ""; - attributesToSnippet3.add(attributesToSnippet_04); - } - requests_02.setAttributesToSnippet(attributesToSnippet3); - boolean clickAnalytics3 = true; - requests_02.setClickAnalytics(clickAnalytics3); - List customRanking3 = new ArrayList<>(); - { - String customRanking_04 = ""; - customRanking3.add(customRanking_04); - } - requests_02.setCustomRanking(customRanking3); - boolean decompoundQuery3 = true; - requests_02.setDecompoundQuery(decompoundQuery3); - List disableExactOnAttributes3 = new ArrayList<>(); - { - String disableExactOnAttributes_04 = ""; - disableExactOnAttributes3.add(disableExactOnAttributes_04); - } - requests_02.setDisableExactOnAttributes(disableExactOnAttributes3); - List disableTypoToleranceOnAttributes3 = new ArrayList<>(); - { - String disableTypoToleranceOnAttributes_04 = ""; - disableTypoToleranceOnAttributes3.add(disableTypoToleranceOnAttributes_04); - } - requests_02.setDisableTypoToleranceOnAttributes(disableTypoToleranceOnAttributes3); - int distinct3 = 0; - requests_02.setDistinct(Distinct.of(distinct3)); - boolean enableABTest3 = true; - requests_02.setEnableABTest(enableABTest3); - boolean enablePersonalization3 = true; - requests_02.setEnablePersonalization(enablePersonalization3); - boolean enableReRanking3 = true; - requests_02.setEnableReRanking(enableReRanking3); - boolean enableRules3 = true; - requests_02.setEnableRules(enableRules3); - ExactOnSingleWordQuery exactOnSingleWordQuery3 = ExactOnSingleWordQuery.fromValue("attribute"); - requests_02.setExactOnSingleWordQuery(exactOnSingleWordQuery3); - List explain3 = new ArrayList<>(); - { - String explain_04 = "foo"; - explain3.add(explain_04); - String explain_14 = "bar"; - explain3.add(explain_14); - } - requests_02.setExplain(explain3); - List facetFilters3 = new ArrayList<>(); - { - String facetFilters_04 = ""; - facetFilters3.add(MixedSearchFilters.of(facetFilters_04)); - } - requests_02.setFacetFilters(FacetFilters.of(facetFilters3)); - boolean facetingAfterDistinct3 = true; - requests_02.setFacetingAfterDistinct(facetingAfterDistinct3); - List facets3 = new ArrayList<>(); - { - String facets_04 = ""; - facets3.add(facets_04); - } - requests_02.setFacets(facets3); - String filters3 = ""; - requests_02.setFilters(filters3); - boolean getRankingInfo3 = true; - requests_02.setGetRankingInfo(getRankingInfo3); - String highlightPostTag3 = ""; - requests_02.setHighlightPostTag(highlightPostTag3); - String highlightPreTag3 = ""; - requests_02.setHighlightPreTag(highlightPreTag3); - int hitsPerPage3 = 1; - requests_02.setHitsPerPage(hitsPerPage3); - boolean ignorePlurals3 = false; - requests_02.setIgnorePlurals(IgnorePlurals.of(ignorePlurals3)); - String indexName3 = "theIndexName"; - requests_02.setIndexName(indexName3); - List> insideBoundingBox3 = new ArrayList<>(); - { - List insideBoundingBox_04 = new ArrayList<>(); - { - double insideBoundingBox_0_05 = 47.3165; - insideBoundingBox_04.add(insideBoundingBox_0_05); - double insideBoundingBox_0_15 = 4.9665; - insideBoundingBox_04.add(insideBoundingBox_0_15); - double insideBoundingBox_0_25 = 47.3424; - insideBoundingBox_04.add(insideBoundingBox_0_25); - double insideBoundingBox_0_35 = 5.0201; - insideBoundingBox_04.add(insideBoundingBox_0_35); - } - insideBoundingBox3.add(insideBoundingBox_04); - List insideBoundingBox_14 = new ArrayList<>(); - { - double insideBoundingBox_1_05 = 40.9234; - insideBoundingBox_14.add(insideBoundingBox_1_05); - double insideBoundingBox_1_15 = 2.1185; - insideBoundingBox_14.add(insideBoundingBox_1_15); - double insideBoundingBox_1_25 = 38.643; - insideBoundingBox_14.add(insideBoundingBox_1_25); - double insideBoundingBox_1_35 = 1.9916; - insideBoundingBox_14.add(insideBoundingBox_1_35); - } - insideBoundingBox3.add(insideBoundingBox_14); - } - requests_02.setInsideBoundingBox(insideBoundingBox3); - List> insidePolygon3 = new ArrayList<>(); - { - List insidePolygon_04 = new ArrayList<>(); - { - double insidePolygon_0_05 = 47.3165; - insidePolygon_04.add(insidePolygon_0_05); - double insidePolygon_0_15 = 4.9665; - insidePolygon_04.add(insidePolygon_0_15); - double insidePolygon_0_25 = 47.3424; - insidePolygon_04.add(insidePolygon_0_25); - double insidePolygon_0_35 = 5.0201; - insidePolygon_04.add(insidePolygon_0_35); - double insidePolygon_0_45 = 47.32; - insidePolygon_04.add(insidePolygon_0_45); - double insidePolygon_0_55 = 4.9; - insidePolygon_04.add(insidePolygon_0_55); - } - insidePolygon3.add(insidePolygon_04); - List insidePolygon_14 = new ArrayList<>(); - { - double insidePolygon_1_05 = 40.9234; - insidePolygon_14.add(insidePolygon_1_05); - double insidePolygon_1_15 = 2.1185; - insidePolygon_14.add(insidePolygon_1_15); - double insidePolygon_1_25 = 38.643; - insidePolygon_14.add(insidePolygon_1_25); - double insidePolygon_1_35 = 1.9916; - insidePolygon_14.add(insidePolygon_1_35); - double insidePolygon_1_45 = 39.2587; - insidePolygon_14.add(insidePolygon_1_45); - double insidePolygon_1_55 = 2.0104; - insidePolygon_14.add(insidePolygon_1_55); - } - insidePolygon3.add(insidePolygon_14); - } - requests_02.setInsidePolygon(insidePolygon3); - String keepDiacriticsOnCharacters3 = ""; - requests_02.setKeepDiacriticsOnCharacters(keepDiacriticsOnCharacters3); - int length3 = 1; - requests_02.setLength(length3); - int maxValuesPerFacet3 = 0; - requests_02.setMaxValuesPerFacet(maxValuesPerFacet3); - int minProximity3 = 1; - requests_02.setMinProximity(minProximity3); - int minWordSizefor1Typo3 = 0; - requests_02.setMinWordSizefor1Typo(minWordSizefor1Typo3); - int minWordSizefor2Typos3 = 0; - requests_02.setMinWordSizefor2Typos(minWordSizefor2Typos3); - int minimumAroundRadius3 = 1; - requests_02.setMinimumAroundRadius(minimumAroundRadius3); - List naturalLanguages3 = new ArrayList<>(); - { - String naturalLanguages_04 = ""; - naturalLanguages3.add(naturalLanguages_04); - } - requests_02.setNaturalLanguages(naturalLanguages3); - List numericFilters3 = new ArrayList<>(); - { - String numericFilters_04 = ""; - numericFilters3.add(MixedSearchFilters.of(numericFilters_04)); - } - requests_02.setNumericFilters(NumericFilters.of(numericFilters3)); - int offset3 = 0; - requests_02.setOffset(offset3); - List optionalFilters3 = new ArrayList<>(); - { - String optionalFilters_04 = ""; - optionalFilters3.add(MixedSearchFilters.of(optionalFilters_04)); - } - requests_02.setOptionalFilters(OptionalFilters.of(optionalFilters3)); - List optionalWords3 = new ArrayList<>(); - { - String optionalWords_04 = ""; - optionalWords3.add(optionalWords_04); - } - requests_02.setOptionalWords(optionalWords3); - int page3 = 0; - requests_02.setPage(page3); - boolean percentileComputation3 = true; - requests_02.setPercentileComputation(percentileComputation3); - int personalizationImpact3 = 0; - requests_02.setPersonalizationImpact(personalizationImpact3); - String query3 = ""; - requests_02.setQuery(query3); - List queryLanguages3 = new ArrayList<>(); - { - String queryLanguages_04 = ""; - queryLanguages3.add(queryLanguages_04); - } - requests_02.setQueryLanguages(queryLanguages3); - QueryType queryType3 = QueryType.fromValue("prefixAll"); - requests_02.setQueryType(queryType3); - List ranking3 = new ArrayList<>(); - { - String ranking_04 = ""; - ranking3.add(ranking_04); - } - requests_02.setRanking(ranking3); - List reRankingApplyFilter3 = new ArrayList<>(); - { - String reRankingApplyFilter_04 = ""; - reRankingApplyFilter3.add(MixedSearchFilters.of(reRankingApplyFilter_04)); - } - requests_02.setReRankingApplyFilter(ReRankingApplyFilter.of(reRankingApplyFilter3)); - int relevancyStrictness3 = 0; - requests_02.setRelevancyStrictness(relevancyStrictness3); - boolean removeStopWords3 = true; - requests_02.setRemoveStopWords(RemoveStopWords.of(removeStopWords3)); - RemoveWordsIfNoResults removeWordsIfNoResults3 = RemoveWordsIfNoResults.fromValue("allOptional"); - requests_02.setRemoveWordsIfNoResults(removeWordsIfNoResults3); - RenderingContent renderingContent3 = new RenderingContent(); - { - FacetOrdering facetOrdering4 = new FacetOrdering(); - { - Facets facets5 = new Facets(); - { - List order6 = new ArrayList<>(); - { - String order_07 = "a"; - order6.add(order_07); - String order_17 = "b"; - order6.add(order_17); - } - facets5.setOrder(order6); - } - facetOrdering4.setFacets(facets5); - Map values5 = new HashMap<>(); - { - Value a6 = new Value(); - { - List order7 = new ArrayList<>(); - { - String order_08 = "b"; - order7.add(order_08); - } - a6.setOrder(order7); - SortRemainingBy sortRemainingBy7 = SortRemainingBy.fromValue("count"); - a6.setSortRemainingBy(sortRemainingBy7); - } - values5.put("a", a6); - } - facetOrdering4.setValues(values5); - } - renderingContent3.setFacetOrdering(facetOrdering4); - } - requests_02.setRenderingContent(renderingContent3); - boolean replaceSynonymsInHighlight3 = true; - requests_02.setReplaceSynonymsInHighlight(replaceSynonymsInHighlight3); - List responseFields3 = new ArrayList<>(); - { - String responseFields_04 = ""; - responseFields3.add(responseFields_04); - } - requests_02.setResponseFields(responseFields3); - boolean restrictHighlightAndSnippetArrays3 = true; - requests_02.setRestrictHighlightAndSnippetArrays(restrictHighlightAndSnippetArrays3); - List restrictSearchableAttributes3 = new ArrayList<>(); - { - String restrictSearchableAttributes_04 = ""; - restrictSearchableAttributes3.add(restrictSearchableAttributes_04); - } - requests_02.setRestrictSearchableAttributes(restrictSearchableAttributes3); - List ruleContexts3 = new ArrayList<>(); - { - String ruleContexts_04 = ""; - ruleContexts3.add(ruleContexts_04); - } - requests_02.setRuleContexts(ruleContexts3); - String similarQuery3 = ""; - requests_02.setSimilarQuery(similarQuery3); - String snippetEllipsisText3 = ""; - requests_02.setSnippetEllipsisText(snippetEllipsisText3); - String sortFacetValuesBy3 = ""; - requests_02.setSortFacetValuesBy(sortFacetValuesBy3); - boolean sumOrFiltersScores3 = true; - requests_02.setSumOrFiltersScores(sumOrFiltersScores3); - boolean synonyms3 = true; - requests_02.setSynonyms(synonyms3); - List tagFilters3 = new ArrayList<>(); - { - String tagFilters_04 = ""; - tagFilters3.add(MixedSearchFilters.of(tagFilters_04)); - } - requests_02.setTagFilters(TagFilters.of(tagFilters3)); - SearchTypeDefault type3 = SearchTypeDefault.fromValue("default"); - requests_02.setType(type3); - TypoToleranceEnum typoTolerance3 = TypoToleranceEnum.fromValue("min"); - requests_02.setTypoTolerance(typoTolerance3); - String userToken3 = ""; - requests_02.setUserToken(userToken3); - } - requests1.add(requests_02); - } - searchMethodParams0.setRequests(requests1); - } - - assertDoesNotThrow(() -> { - client.search(searchMethodParams0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/*/queries", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals( - "{\"requests\":[{\"advancedSyntax\":true,\"advancedSyntaxFeatures\":[\"exactPhrase\"],\"allowTyposOnNumericTokens\":true,\"alternativesAsExact\":[\"multiWordsSynonym\"],\"analytics\":true,\"analyticsTags\":[\"\"],\"aroundLatLng\":\"\",\"aroundLatLngViaIP\":true,\"aroundPrecision\":0,\"aroundRadius\":\"all\",\"attributeCriteriaComputedByMinProximity\":true,\"attributesForFaceting\":[\"\"],\"attributesToHighlight\":[\"\"],\"attributesToRetrieve\":[\"\"],\"attributesToSnippet\":[\"\"],\"clickAnalytics\":true,\"customRanking\":[\"\"],\"decompoundQuery\":true,\"disableExactOnAttributes\":[\"\"],\"disableTypoToleranceOnAttributes\":[\"\"],\"distinct\":0,\"enableABTest\":true,\"enablePersonalization\":true,\"enableReRanking\":true,\"enableRules\":true,\"exactOnSingleWordQuery\":\"attribute\",\"explain\":[\"foo\",\"bar\"],\"facetFilters\":[\"\"],\"facetingAfterDistinct\":true,\"facets\":[\"\"],\"filters\":\"\",\"getRankingInfo\":true,\"highlightPostTag\":\"\",\"highlightPreTag\":\"\",\"hitsPerPage\":1,\"ignorePlurals\":false,\"indexName\":\"theIndexName\",\"insideBoundingBox\":[[47.3165,4.9665,47.3424,5.0201],[40.9234,2.1185,38.643,1.9916]],\"insidePolygon\":[[47.3165,4.9665,47.3424,5.0201,47.32,4.9],[40.9234,2.1185,38.643,1.9916,39.2587,2.0104]],\"keepDiacriticsOnCharacters\":\"\",\"length\":1,\"maxValuesPerFacet\":0,\"minProximity\":1,\"minWordSizefor1Typo\":0,\"minWordSizefor2Typos\":0,\"minimumAroundRadius\":1,\"naturalLanguages\":[\"\"],\"numericFilters\":[\"\"],\"offset\":0,\"optionalFilters\":[\"\"],\"optionalWords\":[\"\"],\"page\":0,\"percentileComputation\":true,\"personalizationImpact\":0,\"query\":\"\",\"queryLanguages\":[\"\"],\"queryType\":\"prefixAll\",\"ranking\":[\"\"],\"reRankingApplyFilter\":[\"\"],\"relevancyStrictness\":0,\"removeStopWords\":true,\"removeWordsIfNoResults\":\"allOptional\",\"renderingContent\":{\"facetOrdering\":{\"facets\":{\"order\":[\"a\",\"b\"]},\"values\":{\"a\":{\"order\":[\"b\"],\"sortRemainingBy\":\"count\"}}}},\"replaceSynonymsInHighlight\":true,\"responseFields\":[\"\"],\"restrictHighlightAndSnippetArrays\":true,\"restrictSearchableAttributes\":[\"\"],\"ruleContexts\":[\"\"],\"similarQuery\":\"\",\"snippetEllipsisText\":\"\",\"sortFacetValuesBy\":\"\",\"sumOrFiltersScores\":true,\"synonyms\":true,\"tagFilters\":[\"\"],\"type\":\"default\",\"typoTolerance\":\"min\",\"userToken\":\"\"}]}", - req.body, - JSONCompareMode.STRICT - ) - ); - } - - @Test - @DisplayName("get searchDictionaryEntries results with minimal parameters") - void searchDictionaryEntriesTest0() { - DictionaryType dictionaryName0 = DictionaryType.fromValue("compounds"); - SearchDictionaryEntriesParams searchDictionaryEntriesParams0 = new SearchDictionaryEntriesParams(); - { - String query1 = "foo"; - searchDictionaryEntriesParams0.setQuery(query1); - } - - assertDoesNotThrow(() -> { - client.searchDictionaryEntries(dictionaryName0, searchDictionaryEntriesParams0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/dictionaries/compounds/search", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"query\":\"foo\"}", req.body, JSONCompareMode.STRICT)); - } - - @Test - @DisplayName("get searchDictionaryEntries results with all parameters") - void searchDictionaryEntriesTest1() { - DictionaryType dictionaryName0 = DictionaryType.fromValue("compounds"); - SearchDictionaryEntriesParams searchDictionaryEntriesParams0 = new SearchDictionaryEntriesParams(); - { - String query1 = "foo"; - searchDictionaryEntriesParams0.setQuery(query1); - int page1 = 4; - searchDictionaryEntriesParams0.setPage(page1); - int hitsPerPage1 = 2; - searchDictionaryEntriesParams0.setHitsPerPage(hitsPerPage1); - String language1 = "fr"; - searchDictionaryEntriesParams0.setLanguage(language1); - } - - assertDoesNotThrow(() -> { - client.searchDictionaryEntries(dictionaryName0, searchDictionaryEntriesParams0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/dictionaries/compounds/search", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals("{\"query\":\"foo\",\"page\":4,\"hitsPerPage\":2,\"language\":\"fr\"}", req.body, JSONCompareMode.STRICT) - ); - } - - @Test - @DisplayName("get searchForFacetValues results with minimal parameters") - void searchForFacetValuesTest0() { - String indexName0 = "indexName"; - String facetName0 = "facetName"; - - assertDoesNotThrow(() -> { - client.searchForFacetValues(indexName0, facetName0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/indexName/facets/facetName/query", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{}", req.body, JSONCompareMode.STRICT)); - } - - @Test - @DisplayName("get searchForFacetValues results with all parameters") - void searchForFacetValuesTest1() { - String indexName0 = "indexName"; - String facetName0 = "facetName"; - SearchForFacetValuesRequest searchForFacetValuesRequest0 = new SearchForFacetValuesRequest(); - { - String params1 = "query=foo&facetFilters=['bar']"; - searchForFacetValuesRequest0.setParams(params1); - String facetQuery1 = "foo"; - searchForFacetValuesRequest0.setFacetQuery(facetQuery1); - int maxFacetHits1 = 42; - searchForFacetValuesRequest0.setMaxFacetHits(maxFacetHits1); - } - - assertDoesNotThrow(() -> { - client.searchForFacetValues(indexName0, facetName0, searchForFacetValuesRequest0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/indexName/facets/facetName/query", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals( - "{\"params\":\"query=foo&facetFilters=['bar']\",\"facetQuery\":\"foo\",\"maxFacetHits\":42}", - req.body, - JSONCompareMode.STRICT - ) - ); - } - - @Test - @DisplayName("searchRules0") - void searchRulesTest0() { - String indexName0 = "indexName"; - SearchRulesParams searchRulesParams0 = new SearchRulesParams(); - { - String query1 = "something"; - searchRulesParams0.setQuery(query1); - } - - assertDoesNotThrow(() -> { - client.searchRules(indexName0, searchRulesParams0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/indexName/rules/search", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"query\":\"something\"}", req.body, JSONCompareMode.STRICT)); - } - - @Test - @DisplayName("search with minimal parameters") - void searchSingleIndexTest0() { - String indexName0 = "indexName"; - - assertDoesNotThrow(() -> { - client.searchSingleIndex(indexName0, Object.class); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/indexName/query", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{}", req.body, JSONCompareMode.STRICT)); - } - - @Test - @DisplayName("search with searchParams") - void searchSingleIndexTest1() { - String indexName0 = "indexName"; - SearchParamsObject searchParams0 = new SearchParamsObject(); - { - String query1 = "myQuery"; - searchParams0.setQuery(query1); - List facetFilters1 = new ArrayList<>(); - { - String facetFilters_02 = "tags:algolia"; - facetFilters1.add(MixedSearchFilters.of(facetFilters_02)); - } - searchParams0.setFacetFilters(FacetFilters.of(facetFilters1)); - } - - assertDoesNotThrow(() -> { - client.searchSingleIndex(indexName0, searchParams0, Object.class); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/indexName/query", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals("{\"query\":\"myQuery\",\"facetFilters\":[\"tags:algolia\"]}", req.body, JSONCompareMode.STRICT) - ); - } - - @Test - @DisplayName("searchSynonyms with minimal parameters") - void searchSynonymsTest0() { - String indexName0 = "indexName"; - - assertDoesNotThrow(() -> { - client.searchSynonyms(indexName0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/indexName/synonyms/search", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{}", req.body, JSONCompareMode.STRICT)); - } - - @Test - @DisplayName("searchSynonyms with all parameters") - void searchSynonymsTest1() { - String indexName0 = "indexName"; - SynonymType type0 = SynonymType.fromValue("altcorrection1"); - int page0 = 10; - int hitsPerPage0 = 10; - SearchSynonymsParams searchSynonymsParams0 = new SearchSynonymsParams(); - { - String query1 = "myQuery"; - searchSynonymsParams0.setQuery(query1); - } - - assertDoesNotThrow(() -> { - client.searchSynonyms(indexName0, type0, page0, hitsPerPage0, searchSynonymsParams0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/indexName/synonyms/search", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"query\":\"myQuery\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"type\":\"altcorrection1\",\"page\":\"10\",\"hitsPerPage\":\"10\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("searchUserIds0") - void searchUserIdsTest0() { - SearchUserIdsParams searchUserIdsParams0 = new SearchUserIdsParams(); - { - String query1 = "test"; - searchUserIdsParams0.setQuery(query1); - String clusterName1 = "theClusterName"; - searchUserIdsParams0.setClusterName(clusterName1); - int page1 = 5; - searchUserIdsParams0.setPage(page1); - int hitsPerPage1 = 10; - searchUserIdsParams0.setHitsPerPage(hitsPerPage1); - } - - assertDoesNotThrow(() -> { - client.searchUserIds(searchUserIdsParams0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/clusters/mapping/search", req.path); - assertEquals("POST", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals( - "{\"query\":\"test\",\"clusterName\":\"theClusterName\",\"page\":5,\"hitsPerPage\":10}", - req.body, - JSONCompareMode.STRICT - ) - ); - } - - @Test - @DisplayName("get setDictionarySettings results with minimal parameters") - void setDictionarySettingsTest0() { - DictionarySettingsParams dictionarySettingsParams0 = new DictionarySettingsParams(); - { - StandardEntries disableStandardEntries1 = new StandardEntries(); - { - Map plurals2 = new HashMap<>(); - { - boolean fr3 = false; - plurals2.put("fr", fr3); - boolean en3 = false; - plurals2.put("en", en3); - boolean ru3 = true; - plurals2.put("ru", ru3); - } - disableStandardEntries1.setPlurals(plurals2); - } - dictionarySettingsParams0.setDisableStandardEntries(disableStandardEntries1); - } - - assertDoesNotThrow(() -> { - client.setDictionarySettings(dictionarySettingsParams0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/dictionaries/*/settings", req.path); - assertEquals("PUT", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals( - "{\"disableStandardEntries\":{\"plurals\":{\"fr\":false,\"en\":false,\"ru\":true}}}", - req.body, - JSONCompareMode.STRICT - ) - ); - } - - @Test - @DisplayName("get setDictionarySettings results with all parameters") - void setDictionarySettingsTest1() { - DictionarySettingsParams dictionarySettingsParams0 = new DictionarySettingsParams(); - { - StandardEntries disableStandardEntries1 = new StandardEntries(); - { - Map plurals2 = new HashMap<>(); - { - boolean fr3 = false; - plurals2.put("fr", fr3); - boolean en3 = false; - plurals2.put("en", en3); - boolean ru3 = true; - plurals2.put("ru", ru3); - } - disableStandardEntries1.setPlurals(plurals2); - Map stopwords2 = new HashMap<>(); - { - boolean fr3 = false; - stopwords2.put("fr", fr3); - } - disableStandardEntries1.setStopwords(stopwords2); - Map compounds2 = new HashMap<>(); - { - boolean ru3 = true; - compounds2.put("ru", ru3); - } - disableStandardEntries1.setCompounds(compounds2); - } - dictionarySettingsParams0.setDisableStandardEntries(disableStandardEntries1); - } - - assertDoesNotThrow(() -> { - client.setDictionarySettings(dictionarySettingsParams0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/dictionaries/*/settings", req.path); - assertEquals("PUT", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals( - "{\"disableStandardEntries\":{\"plurals\":{\"fr\":false,\"en\":false,\"ru\":true},\"stopwords\":{\"fr\":false},\"compounds\":{\"ru\":true}}}", - req.body, - JSONCompareMode.STRICT - ) - ); - } - - @Test - @DisplayName("setSettings with minimal parameters") - void setSettingsTest0() { - String indexName0 = "theIndexName"; - IndexSettings indexSettings0 = new IndexSettings(); - { - int paginationLimitedTo1 = 10; - indexSettings0.setPaginationLimitedTo(paginationLimitedTo1); - } - boolean forwardToReplicas0 = true; - - assertDoesNotThrow(() -> { - client.setSettings(indexName0, indexSettings0, forwardToReplicas0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/theIndexName/settings", req.path); - assertEquals("PUT", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"paginationLimitedTo\":10}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"forwardToReplicas\":\"true\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("setSettings allow boolean `typoTolerance`") - void setSettingsTest1() { - String indexName0 = "theIndexName"; - IndexSettings indexSettings0 = new IndexSettings(); - { - boolean typoTolerance1 = true; - indexSettings0.setTypoTolerance(TypoTolerance.of(typoTolerance1)); - } - boolean forwardToReplicas0 = true; - - assertDoesNotThrow(() -> { - client.setSettings(indexName0, indexSettings0, forwardToReplicas0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/theIndexName/settings", req.path); - assertEquals("PUT", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"typoTolerance\":true}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"forwardToReplicas\":\"true\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("setSettings allow enum `typoTolerance`") - void setSettingsTest2() { - String indexName0 = "theIndexName"; - IndexSettings indexSettings0 = new IndexSettings(); - { - TypoToleranceEnum typoTolerance1 = TypoToleranceEnum.fromValue("min"); - indexSettings0.setTypoTolerance(typoTolerance1); - } - boolean forwardToReplicas0 = true; - - assertDoesNotThrow(() -> { - client.setSettings(indexName0, indexSettings0, forwardToReplicas0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/theIndexName/settings", req.path); - assertEquals("PUT", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"typoTolerance\":\"min\"}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"forwardToReplicas\":\"true\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("setSettings allow boolean `ignorePlurals`") - void setSettingsTest3() { - String indexName0 = "theIndexName"; - IndexSettings indexSettings0 = new IndexSettings(); - { - boolean ignorePlurals1 = true; - indexSettings0.setIgnorePlurals(IgnorePlurals.of(ignorePlurals1)); - } - boolean forwardToReplicas0 = true; - - assertDoesNotThrow(() -> { - client.setSettings(indexName0, indexSettings0, forwardToReplicas0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/theIndexName/settings", req.path); - assertEquals("PUT", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"ignorePlurals\":true}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"forwardToReplicas\":\"true\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("setSettings allow list of string `ignorePlurals`") - void setSettingsTest4() { - String indexName0 = "theIndexName"; - IndexSettings indexSettings0 = new IndexSettings(); - { - List ignorePlurals1 = new ArrayList<>(); - { - String ignorePlurals_02 = "algolia"; - ignorePlurals1.add(ignorePlurals_02); - } - indexSettings0.setIgnorePlurals(IgnorePlurals.of(ignorePlurals1)); - } - boolean forwardToReplicas0 = true; - - assertDoesNotThrow(() -> { - client.setSettings(indexName0, indexSettings0, forwardToReplicas0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/theIndexName/settings", req.path); - assertEquals("PUT", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"ignorePlurals\":[\"algolia\"]}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"forwardToReplicas\":\"true\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("setSettings allow boolean `removeStopWords`") - void setSettingsTest5() { - String indexName0 = "theIndexName"; - IndexSettings indexSettings0 = new IndexSettings(); - { - boolean removeStopWords1 = true; - indexSettings0.setRemoveStopWords(RemoveStopWords.of(removeStopWords1)); - } - boolean forwardToReplicas0 = true; - - assertDoesNotThrow(() -> { - client.setSettings(indexName0, indexSettings0, forwardToReplicas0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/theIndexName/settings", req.path); - assertEquals("PUT", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"removeStopWords\":true}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"forwardToReplicas\":\"true\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("setSettings allow list of string `removeStopWords`") - void setSettingsTest6() { - String indexName0 = "theIndexName"; - IndexSettings indexSettings0 = new IndexSettings(); - { - List removeStopWords1 = new ArrayList<>(); - { - String removeStopWords_02 = "algolia"; - removeStopWords1.add(removeStopWords_02); - } - indexSettings0.setRemoveStopWords(RemoveStopWords.of(removeStopWords1)); - } - boolean forwardToReplicas0 = true; - - assertDoesNotThrow(() -> { - client.setSettings(indexName0, indexSettings0, forwardToReplicas0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/theIndexName/settings", req.path); - assertEquals("PUT", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"removeStopWords\":[\"algolia\"]}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"forwardToReplicas\":\"true\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("setSettings allow boolean `distinct`") - void setSettingsTest7() { - String indexName0 = "theIndexName"; - IndexSettings indexSettings0 = new IndexSettings(); - { - boolean distinct1 = true; - indexSettings0.setDistinct(Distinct.of(distinct1)); - } - boolean forwardToReplicas0 = true; - - assertDoesNotThrow(() -> { - client.setSettings(indexName0, indexSettings0, forwardToReplicas0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/theIndexName/settings", req.path); - assertEquals("PUT", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"distinct\":true}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"forwardToReplicas\":\"true\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("setSettings allow integers for `distinct`") - void setSettingsTest8() { - String indexName0 = "theIndexName"; - IndexSettings indexSettings0 = new IndexSettings(); - { - int distinct1 = 1; - indexSettings0.setDistinct(Distinct.of(distinct1)); - } - boolean forwardToReplicas0 = true; - - assertDoesNotThrow(() -> { - client.setSettings(indexName0, indexSettings0, forwardToReplicas0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/theIndexName/settings", req.path); - assertEquals("PUT", req.method); - assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"distinct\":1}", req.body, JSONCompareMode.STRICT)); - - try { - Map expectedQuery = json.readValue( - "{\"forwardToReplicas\":\"true\"}", - new TypeReference>() {} - ); - Map actualQuery = req.queryParameters; - - assertEquals(expectedQuery.size(), actualQuery.size()); - for (Map.Entry p : actualQuery.entrySet()) { - assertEquals(expectedQuery.get(p.getKey()), p.getValue()); - } - } catch (JsonProcessingException e) { - fail("failed to parse queryParameters json"); - } - } - - @Test - @DisplayName("setSettings allow all `indexSettings`") - void setSettingsTest9() { - String indexName0 = "theIndexName"; - IndexSettings indexSettings0 = new IndexSettings(); - { - boolean advancedSyntax1 = true; - indexSettings0.setAdvancedSyntax(advancedSyntax1); - List advancedSyntaxFeatures1 = new ArrayList<>(); - { - AdvancedSyntaxFeatures advancedSyntaxFeatures_02 = AdvancedSyntaxFeatures.fromValue("exactPhrase"); - advancedSyntaxFeatures1.add(advancedSyntaxFeatures_02); - } - indexSettings0.setAdvancedSyntaxFeatures(advancedSyntaxFeatures1); - boolean allowCompressionOfIntegerArray1 = true; - indexSettings0.setAllowCompressionOfIntegerArray(allowCompressionOfIntegerArray1); - boolean allowTyposOnNumericTokens1 = true; - indexSettings0.setAllowTyposOnNumericTokens(allowTyposOnNumericTokens1); - List alternativesAsExact1 = new ArrayList<>(); - { - AlternativesAsExact alternativesAsExact_02 = AlternativesAsExact.fromValue("singleWordSynonym"); - alternativesAsExact1.add(alternativesAsExact_02); - } - indexSettings0.setAlternativesAsExact(alternativesAsExact1); - boolean attributeCriteriaComputedByMinProximity1 = true; - indexSettings0.setAttributeCriteriaComputedByMinProximity(attributeCriteriaComputedByMinProximity1); - String attributeForDistinct1 = "test"; - indexSettings0.setAttributeForDistinct(attributeForDistinct1); - List attributesForFaceting1 = new ArrayList<>(); - { - String attributesForFaceting_02 = "algolia"; - attributesForFaceting1.add(attributesForFaceting_02); - } - indexSettings0.setAttributesForFaceting(attributesForFaceting1); - List attributesToHighlight1 = new ArrayList<>(); - { - String attributesToHighlight_02 = "algolia"; - attributesToHighlight1.add(attributesToHighlight_02); - } - indexSettings0.setAttributesToHighlight(attributesToHighlight1); - List attributesToRetrieve1 = new ArrayList<>(); - { - String attributesToRetrieve_02 = "algolia"; - attributesToRetrieve1.add(attributesToRetrieve_02); - } - indexSettings0.setAttributesToRetrieve(attributesToRetrieve1); - List attributesToSnippet1 = new ArrayList<>(); - { - String attributesToSnippet_02 = "algolia"; - attributesToSnippet1.add(attributesToSnippet_02); - } - indexSettings0.setAttributesToSnippet(attributesToSnippet1); - List attributesToTransliterate1 = new ArrayList<>(); - { - String attributesToTransliterate_02 = "algolia"; - attributesToTransliterate1.add(attributesToTransliterate_02); - } - indexSettings0.setAttributesToTransliterate(attributesToTransliterate1); - List camelCaseAttributes1 = new ArrayList<>(); - { - String camelCaseAttributes_02 = "algolia"; - camelCaseAttributes1.add(camelCaseAttributes_02); - } - indexSettings0.setCamelCaseAttributes(camelCaseAttributes1); - Map> customNormalization1 = new HashMap<>(); - { - Map algolia2 = new HashMap<>(); - { - String aloglia3 = "aglolia"; - algolia2.put("aloglia", aloglia3); - } - customNormalization1.put("algolia", algolia2); - } - indexSettings0.setCustomNormalization(customNormalization1); - List customRanking1 = new ArrayList<>(); - { - String customRanking_02 = "algolia"; - customRanking1.add(customRanking_02); - } - indexSettings0.setCustomRanking(customRanking1); - boolean decompoundQuery1 = false; - indexSettings0.setDecompoundQuery(decompoundQuery1); - Map decompoundedAttributes1 = new HashMap<>(); - { - String algolia2 = "aloglia"; - decompoundedAttributes1.put("algolia", algolia2); - } - indexSettings0.setDecompoundedAttributes(decompoundedAttributes1); - List disableExactOnAttributes1 = new ArrayList<>(); - { - String disableExactOnAttributes_02 = "algolia"; - disableExactOnAttributes1.add(disableExactOnAttributes_02); - } - indexSettings0.setDisableExactOnAttributes(disableExactOnAttributes1); - List disablePrefixOnAttributes1 = new ArrayList<>(); - { - String disablePrefixOnAttributes_02 = "algolia"; - disablePrefixOnAttributes1.add(disablePrefixOnAttributes_02); - } - indexSettings0.setDisablePrefixOnAttributes(disablePrefixOnAttributes1); - List disableTypoToleranceOnAttributes1 = new ArrayList<>(); - { - String disableTypoToleranceOnAttributes_02 = "algolia"; - disableTypoToleranceOnAttributes1.add(disableTypoToleranceOnAttributes_02); - } - indexSettings0.setDisableTypoToleranceOnAttributes(disableTypoToleranceOnAttributes1); - List disableTypoToleranceOnWords1 = new ArrayList<>(); - { - String disableTypoToleranceOnWords_02 = "algolia"; - disableTypoToleranceOnWords1.add(disableTypoToleranceOnWords_02); - } - indexSettings0.setDisableTypoToleranceOnWords(disableTypoToleranceOnWords1); - int distinct1 = 3; - indexSettings0.setDistinct(Distinct.of(distinct1)); - boolean enablePersonalization1 = true; - indexSettings0.setEnablePersonalization(enablePersonalization1); - boolean enableReRanking1 = false; - indexSettings0.setEnableReRanking(enableReRanking1); - boolean enableRules1 = true; - indexSettings0.setEnableRules(enableRules1); - ExactOnSingleWordQuery exactOnSingleWordQuery1 = ExactOnSingleWordQuery.fromValue("attribute"); - indexSettings0.setExactOnSingleWordQuery(exactOnSingleWordQuery1); - String highlightPreTag1 = ""; - indexSettings0.setHighlightPreTag(highlightPreTag1); - String highlightPostTag1 = ""; - indexSettings0.setHighlightPostTag(highlightPostTag1); - int hitsPerPage1 = 10; - indexSettings0.setHitsPerPage(hitsPerPage1); - boolean ignorePlurals1 = false; - indexSettings0.setIgnorePlurals(IgnorePlurals.of(ignorePlurals1)); - List indexLanguages1 = new ArrayList<>(); - { - String indexLanguages_02 = "algolia"; - indexLanguages1.add(indexLanguages_02); - } - indexSettings0.setIndexLanguages(indexLanguages1); - String keepDiacriticsOnCharacters1 = "abc"; - indexSettings0.setKeepDiacriticsOnCharacters(keepDiacriticsOnCharacters1); - int maxFacetHits1 = 20; - indexSettings0.setMaxFacetHits(maxFacetHits1); - int maxValuesPerFacet1 = 30; - indexSettings0.setMaxValuesPerFacet(maxValuesPerFacet1); - int minProximity1 = 6; - indexSettings0.setMinProximity(minProximity1); - int minWordSizefor1Typo1 = 5; - indexSettings0.setMinWordSizefor1Typo(minWordSizefor1Typo1); - int minWordSizefor2Typos1 = 11; - indexSettings0.setMinWordSizefor2Typos(minWordSizefor2Typos1); - Mode mode1 = Mode.fromValue("neuralSearch"); - indexSettings0.setMode(mode1); - List numericAttributesForFiltering1 = new ArrayList<>(); - { - String numericAttributesForFiltering_02 = "algolia"; - numericAttributesForFiltering1.add(numericAttributesForFiltering_02); - } - indexSettings0.setNumericAttributesForFiltering(numericAttributesForFiltering1); - List optionalWords1 = new ArrayList<>(); - { - String optionalWords_02 = "myspace"; - optionalWords1.add(optionalWords_02); - } - indexSettings0.setOptionalWords(optionalWords1); - int paginationLimitedTo1 = 0; - indexSettings0.setPaginationLimitedTo(paginationLimitedTo1); - List queryLanguages1 = new ArrayList<>(); - { - String queryLanguages_02 = "algolia"; - queryLanguages1.add(queryLanguages_02); - } - indexSettings0.setQueryLanguages(queryLanguages1); - QueryType queryType1 = QueryType.fromValue("prefixLast"); - indexSettings0.setQueryType(queryType1); - List ranking1 = new ArrayList<>(); - { - String ranking_02 = "geo"; - ranking1.add(ranking_02); - } - indexSettings0.setRanking(ranking1); - String reRankingApplyFilter1 = "mySearch:filters"; - indexSettings0.setReRankingApplyFilter(ReRankingApplyFilter.of(reRankingApplyFilter1)); - int relevancyStrictness1 = 10; - indexSettings0.setRelevancyStrictness(relevancyStrictness1); - boolean removeStopWords1 = false; - indexSettings0.setRemoveStopWords(RemoveStopWords.of(removeStopWords1)); - RemoveWordsIfNoResults removeWordsIfNoResults1 = RemoveWordsIfNoResults.fromValue("lastWords"); - indexSettings0.setRemoveWordsIfNoResults(removeWordsIfNoResults1); - RenderingContent renderingContent1 = new RenderingContent(); - { - FacetOrdering facetOrdering2 = new FacetOrdering(); - { - Facets facets3 = new Facets(); - { - List order4 = new ArrayList<>(); - { - String order_05 = "a"; - order4.add(order_05); - String order_15 = "b"; - order4.add(order_15); - } - facets3.setOrder(order4); - } - facetOrdering2.setFacets(facets3); - Map values3 = new HashMap<>(); - { - Value a4 = new Value(); - { - List order5 = new ArrayList<>(); - { - String order_06 = "b"; - order5.add(order_06); - } - a4.setOrder(order5); - SortRemainingBy sortRemainingBy5 = SortRemainingBy.fromValue("count"); - a4.setSortRemainingBy(sortRemainingBy5); - } - values3.put("a", a4); - } - facetOrdering2.setValues(values3); - } - renderingContent1.setFacetOrdering(facetOrdering2); - } - indexSettings0.setRenderingContent(renderingContent1); - boolean replaceSynonymsInHighlight1 = true; - indexSettings0.setReplaceSynonymsInHighlight(replaceSynonymsInHighlight1); - List replicas1 = new ArrayList<>(); - { - String replicas_02 = ""; - replicas1.add(replicas_02); - } - indexSettings0.setReplicas(replicas1); - List responseFields1 = new ArrayList<>(); - { - String responseFields_02 = "algolia"; - responseFields1.add(responseFields_02); - } - indexSettings0.setResponseFields(responseFields1); - boolean restrictHighlightAndSnippetArrays1 = true; - indexSettings0.setRestrictHighlightAndSnippetArrays(restrictHighlightAndSnippetArrays1); - List searchableAttributes1 = new ArrayList<>(); - { - String searchableAttributes_02 = "foo"; - searchableAttributes1.add(searchableAttributes_02); - } - indexSettings0.setSearchableAttributes(searchableAttributes1); - SemanticSearch semanticSearch1 = new SemanticSearch(); - { - List eventSources2 = new ArrayList<>(); - { - String eventSources_03 = "foo"; - eventSources2.add(eventSources_03); - } - semanticSearch1.setEventSources(eventSources2); - } - indexSettings0.setSemanticSearch(semanticSearch1); - String separatorsToIndex1 = "bar"; - indexSettings0.setSeparatorsToIndex(separatorsToIndex1); - String snippetEllipsisText1 = "---"; - indexSettings0.setSnippetEllipsisText(snippetEllipsisText1); - String sortFacetValuesBy1 = "date"; - indexSettings0.setSortFacetValuesBy(sortFacetValuesBy1); - boolean typoTolerance1 = false; - indexSettings0.setTypoTolerance(TypoTolerance.of(typoTolerance1)); - List unretrievableAttributes1 = new ArrayList<>(); - { - String unretrievableAttributes_02 = "foo"; - unretrievableAttributes1.add(unretrievableAttributes_02); - } - indexSettings0.setUnretrievableAttributes(unretrievableAttributes1); - Map userData1 = new HashMap<>(); - { - String user2 = "data"; - userData1.put("user", user2); - } - indexSettings0.setUserData(userData1); - } - - assertDoesNotThrow(() -> { - client.setSettings(indexName0, indexSettings0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/indexes/theIndexName/settings", req.path); - assertEquals("PUT", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals( - "{\"advancedSyntax\":true,\"advancedSyntaxFeatures\":[\"exactPhrase\"],\"allowCompressionOfIntegerArray\":true,\"allowTyposOnNumericTokens\":true,\"alternativesAsExact\":[\"singleWordSynonym\"],\"attributeCriteriaComputedByMinProximity\":true,\"attributeForDistinct\":\"test\",\"attributesForFaceting\":[\"algolia\"],\"attributesToHighlight\":[\"algolia\"],\"attributesToRetrieve\":[\"algolia\"],\"attributesToSnippet\":[\"algolia\"],\"attributesToTransliterate\":[\"algolia\"],\"camelCaseAttributes\":[\"algolia\"],\"customNormalization\":{\"algolia\":{\"aloglia\":\"aglolia\"}},\"customRanking\":[\"algolia\"],\"decompoundQuery\":false,\"decompoundedAttributes\":{\"algolia\":\"aloglia\"},\"disableExactOnAttributes\":[\"algolia\"],\"disablePrefixOnAttributes\":[\"algolia\"],\"disableTypoToleranceOnAttributes\":[\"algolia\"],\"disableTypoToleranceOnWords\":[\"algolia\"],\"distinct\":3,\"enablePersonalization\":true,\"enableReRanking\":false,\"enableRules\":true,\"exactOnSingleWordQuery\":\"attribute\",\"highlightPreTag\":\"\",\"highlightPostTag\":\"\",\"hitsPerPage\":10,\"ignorePlurals\":false,\"indexLanguages\":[\"algolia\"],\"keepDiacriticsOnCharacters\":\"abc\",\"maxFacetHits\":20,\"maxValuesPerFacet\":30,\"minProximity\":6,\"minWordSizefor1Typo\":5,\"minWordSizefor2Typos\":11,\"mode\":\"neuralSearch\",\"numericAttributesForFiltering\":[\"algolia\"],\"optionalWords\":[\"myspace\"],\"paginationLimitedTo\":0,\"queryLanguages\":[\"algolia\"],\"queryType\":\"prefixLast\",\"ranking\":[\"geo\"],\"reRankingApplyFilter\":\"mySearch:filters\",\"relevancyStrictness\":10,\"removeStopWords\":false,\"removeWordsIfNoResults\":\"lastWords\",\"renderingContent\":{\"facetOrdering\":{\"facets\":{\"order\":[\"a\",\"b\"]},\"values\":{\"a\":{\"order\":[\"b\"],\"sortRemainingBy\":\"count\"}}}},\"replaceSynonymsInHighlight\":true,\"replicas\":[\"\"],\"responseFields\":[\"algolia\"],\"restrictHighlightAndSnippetArrays\":true,\"searchableAttributes\":[\"foo\"],\"semanticSearch\":{\"eventSources\":[\"foo\"]},\"separatorsToIndex\":\"bar\",\"snippetEllipsisText\":\"---\",\"sortFacetValuesBy\":\"date\",\"typoTolerance\":false,\"unretrievableAttributes\":[\"foo\"],\"userData\":{\"user\":\"data\"}}", - req.body, - JSONCompareMode.STRICT - ) - ); - } - - @Test - @DisplayName("updateApiKey0") - void updateApiKeyTest0() { - String key0 = "myApiKey"; - ApiKey apiKey0 = new ApiKey(); - { - List acl1 = new ArrayList<>(); - { - Acl acl_02 = Acl.fromValue("search"); - acl1.add(acl_02); - Acl acl_12 = Acl.fromValue("addObject"); - acl1.add(acl_12); - } - apiKey0.setAcl(acl1); - int validity1 = 300; - apiKey0.setValidity(validity1); - int maxQueriesPerIPPerHour1 = 100; - apiKey0.setMaxQueriesPerIPPerHour(maxQueriesPerIPPerHour1); - int maxHitsPerQuery1 = 20; - apiKey0.setMaxHitsPerQuery(maxHitsPerQuery1); - } - - assertDoesNotThrow(() -> { - client.updateApiKey(key0, apiKey0); - }); - EchoResponse req = echo.getLastResponse(); - assertEquals("/1/keys/myApiKey", req.path); - assertEquals("PUT", req.method); - assertDoesNotThrow(() -> - JSONAssert.assertEquals( - "{\"acl\":[\"search\",\"addObject\"],\"validity\":300,\"maxQueriesPerIPPerHour\":100,\"maxHitsPerQuery\":20}", - req.body, - JSONCompareMode.STRICT - ) - ); - } -} diff --git a/tests/output/javascript/src/methods/requests/abtesting.test.ts b/tests/output/javascript/src/methods/requests/abtesting.test.ts deleted file mode 100644 index 1d6f7b9923..0000000000 --- a/tests/output/javascript/src/methods/requests/abtesting.test.ts +++ /dev/null @@ -1,408 +0,0 @@ -import { abtestingClient } from '@algolia/client-abtesting'; -import type { EchoResponse, RequestOptions } from '@algolia/client-common'; -import { echoRequester } from '@algolia/requester-node-http'; - -const appId = process.env.ALGOLIA_APPLICATION_ID || 'test_app_id'; -const apiKey = process.env.ALGOLIA_SEARCH_KEY || 'test_api_key'; - -const client = abtestingClient(appId, apiKey, 'us', { - requester: echoRequester(), -}); - -describe('addABTests', () => { - test('addABTests with minimal parameters', async () => { - const req = (await client.addABTests({ - endAt: '2022-12-31T00:00:00.000Z', - name: 'myABTest', - variants: [ - { index: 'AB_TEST_1', trafficPercentage: 30 }, - { index: 'AB_TEST_2', trafficPercentage: 50 }, - ], - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/2/abtests'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - endAt: '2022-12-31T00:00:00.000Z', - name: 'myABTest', - variants: [ - { index: 'AB_TEST_1', trafficPercentage: 30 }, - { index: 'AB_TEST_2', trafficPercentage: 50 }, - ], - }); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('customDelete', () => { - test('allow del method for a custom path with minimal parameters', async () => { - const req = (await client.customDelete({ - path: '/test/minimal', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/minimal'); - expect(req.method).toEqual('DELETE'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('allow del method for a custom path with all parameters', async () => { - const req = (await client.customDelete({ - path: '/test/all', - parameters: { query: 'parameters' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/all'); - expect(req.method).toEqual('DELETE'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - }); -}); - -describe('customGet', () => { - test('allow get method for a custom path with minimal parameters', async () => { - const req = (await client.customGet({ - path: '/test/minimal', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/minimal'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('allow get method for a custom path with all parameters', async () => { - const req = (await client.customGet({ - path: '/test/all', - parameters: { query: 'parameters' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/all'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - }); -}); - -describe('customPost', () => { - test('allow post method for a custom path with minimal parameters', async () => { - const req = (await client.customPost({ - path: '/test/minimal', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/minimal'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({}); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('allow post method for a custom path with all parameters', async () => { - const req = (await client.customPost({ - path: '/test/all', - parameters: { query: 'parameters' }, - body: { body: 'parameters' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/all'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ body: 'parameters' }); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - }); - - test('requestOptions can override default query parameters', async () => { - const requestOptions: RequestOptions = { - queryParameters: { query: 'myQueryParameter' }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ query: 'myQueryParameter' }); - }); - - test('requestOptions merges query parameters with default ones', async () => { - const requestOptions: RequestOptions = { - queryParameters: { query2: 'myQueryParameter' }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - query2: 'myQueryParameter', - }); - }); - - test('requestOptions can override default headers', async () => { - const requestOptions: RequestOptions = { - headers: { 'x-algolia-api-key': 'myApiKey' }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - expect(req.headers).toEqual( - expect.objectContaining({ 'x-algolia-api-key': 'myApiKey' }) - ); - }); - - test('requestOptions merges headers with default ones', async () => { - const requestOptions: RequestOptions = { - headers: { 'x-algolia-api-key': 'myApiKey' }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - expect(req.headers).toEqual( - expect.objectContaining({ 'x-algolia-api-key': 'myApiKey' }) - ); - }); - - test('requestOptions queryParameters accepts booleans', async () => { - const requestOptions: RequestOptions = { - queryParameters: { isItWorking: true }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - isItWorking: 'true', - }); - }); - - test('requestOptions queryParameters accepts integers', async () => { - const requestOptions: RequestOptions = { - queryParameters: { myParam: 2 }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - myParam: '2', - }); - }); - - test('requestOptions queryParameters accepts list of string', async () => { - const requestOptions: RequestOptions = { - queryParameters: { myParam: ['c', 'd'] }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - myParam: 'c,d', - }); - }); - - test('requestOptions queryParameters accepts list of booleans', async () => { - const requestOptions: RequestOptions = { - queryParameters: { myParam: [true, true, false] }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - myParam: 'true,true,false', - }); - }); - - test('requestOptions queryParameters accepts list of integers', async () => { - const requestOptions: RequestOptions = { - queryParameters: { myParam: [1, 2] }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - myParam: '1,2', - }); - }); -}); - -describe('customPut', () => { - test('allow put method for a custom path with minimal parameters', async () => { - const req = (await client.customPut({ - path: '/test/minimal', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/minimal'); - expect(req.method).toEqual('PUT'); - expect(req.data).toEqual({}); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('allow put method for a custom path with all parameters', async () => { - const req = (await client.customPut({ - path: '/test/all', - parameters: { query: 'parameters' }, - body: { body: 'parameters' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/all'); - expect(req.method).toEqual('PUT'); - expect(req.data).toEqual({ body: 'parameters' }); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - }); -}); - -describe('deleteABTest', () => { - test('deleteABTest', async () => { - const req = (await client.deleteABTest({ - id: 42, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/2/abtests/42'); - expect(req.method).toEqual('DELETE'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('getABTest', () => { - test('getABTest', async () => { - const req = (await client.getABTest({ id: 42 })) as unknown as EchoResponse; - - expect(req.path).toEqual('/2/abtests/42'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('listABTests', () => { - test('listABTests with minimal parameters', async () => { - const req = (await client.listABTests()) as unknown as EchoResponse; - - expect(req.path).toEqual('/2/abtests'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('listABTests with parameters', async () => { - const req = (await client.listABTests({ - offset: 42, - limit: 21, - indexPrefix: 'foo', - indexSuffix: 'bar', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/2/abtests'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ - offset: '42', - limit: '21', - indexPrefix: 'foo', - indexSuffix: 'bar', - }); - }); -}); - -describe('stopABTest', () => { - test('stopABTest', async () => { - const req = (await client.stopABTest({ - id: 42, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/2/abtests/42/stop'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); diff --git a/tests/output/javascript/src/methods/requests/algoliasearch.test.ts b/tests/output/javascript/src/methods/requests/algoliasearch.test.ts deleted file mode 100644 index c89702c405..0000000000 --- a/tests/output/javascript/src/methods/requests/algoliasearch.test.ts +++ /dev/null @@ -1,707 +0,0 @@ -import type { EchoResponse, RequestOptions } from '@algolia/client-common'; -import { echoRequester } from '@algolia/requester-node-http'; -import { liteClient } from 'algoliasearch/lite'; -import * as dotenv from 'dotenv'; - -dotenv.config({ path: '../../.env' }); - -const appId = process.env.ALGOLIA_APPLICATION_ID || 'test_app_id'; -const apiKey = process.env.ALGOLIA_SEARCH_KEY || 'test_api_key'; - -const client = liteClient(appId, apiKey, { requester: echoRequester() }); - -if (!process.env.ALGOLIA_APPLICATION_ID) { - throw new Error( - 'please provide an `ALGOLIA_APPLICATION_ID` env var for e2e tests' - ); -} - -if (!process.env.ALGOLIA_ADMIN_KEY) { - throw new Error( - 'please provide an `ALGOLIA_ADMIN_KEY` env var for e2e tests' - ); -} - -const e2eClient = liteClient( - process.env.ALGOLIA_APPLICATION_ID, - process.env.ALGOLIA_ADMIN_KEY -); - -describe('customPost', () => { - test('allow post method for a custom path with minimal parameters', async () => { - const req = (await client.customPost({ - path: '/test/minimal', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/minimal'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({}); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('allow post method for a custom path with all parameters', async () => { - const req = (await client.customPost({ - path: '/test/all', - parameters: { query: 'parameters' }, - body: { body: 'parameters' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/all'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ body: 'parameters' }); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - }); - - test('requestOptions can override default query parameters', async () => { - const requestOptions: RequestOptions = { - queryParameters: { query: 'myQueryParameter' }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ query: 'myQueryParameter' }); - }); - - test('requestOptions merges query parameters with default ones', async () => { - const requestOptions: RequestOptions = { - queryParameters: { query2: 'myQueryParameter' }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - query2: 'myQueryParameter', - }); - }); - - test('requestOptions can override default headers', async () => { - const requestOptions: RequestOptions = { - headers: { 'x-algolia-api-key': 'myApiKey' }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - expect(req.headers).toEqual( - expect.objectContaining({ 'x-algolia-api-key': 'myApiKey' }) - ); - }); - - test('requestOptions merges headers with default ones', async () => { - const requestOptions: RequestOptions = { - headers: { 'x-algolia-api-key': 'myApiKey' }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - expect(req.headers).toEqual( - expect.objectContaining({ 'x-algolia-api-key': 'myApiKey' }) - ); - }); - - test('requestOptions queryParameters accepts booleans', async () => { - const requestOptions: RequestOptions = { - queryParameters: { isItWorking: true }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - isItWorking: 'true', - }); - }); - - test('requestOptions queryParameters accepts integers', async () => { - const requestOptions: RequestOptions = { - queryParameters: { myParam: 2 }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - myParam: '2', - }); - }); - - test('requestOptions queryParameters accepts list of string', async () => { - const requestOptions: RequestOptions = { - queryParameters: { myParam: ['c', 'd'] }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - myParam: 'c,d', - }); - }); - - test('requestOptions queryParameters accepts list of booleans', async () => { - const requestOptions: RequestOptions = { - queryParameters: { myParam: [true, true, false] }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - myParam: 'true,true,false', - }); - }); - - test('requestOptions queryParameters accepts list of integers', async () => { - const requestOptions: RequestOptions = { - queryParameters: { myParam: [1, 2] }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - myParam: '1,2', - }); - }); -}); - -describe('search', () => { - test('search for a single hits request with minimal parameters', async () => { - const req = (await client.search({ - requests: [{ indexName: 'cts_e2e_search_empty_index' }], - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/*/queries'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - requests: [{ indexName: 'cts_e2e_search_empty_index' }], - }); - expect(req.searchParams).toStrictEqual(undefined); - - const resp = await e2eClient.search({ - requests: [{ indexName: 'cts_e2e_search_empty_index' }], - }); - - expect(resp).toMatchObject({ - results: [ - { - hits: [], - page: 0, - nbHits: 0, - nbPages: 0, - hitsPerPage: 20, - exhaustiveNbHits: true, - exhaustiveTypo: true, - exhaustive: { nbHits: true, typo: true }, - processingTimeMS: 1, - query: '', - params: '', - index: 'cts_e2e_search_empty_index', - renderingContent: {}, - }, - ], - }); - }); - - test('search for a single facet request with minimal parameters', async () => { - const req = (await client.search({ - requests: [ - { indexName: 'cts_e2e_search_facet', type: 'facet', facet: 'editor' }, - ], - strategy: 'stopIfEnoughMatches', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/*/queries'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - requests: [ - { indexName: 'cts_e2e_search_facet', type: 'facet', facet: 'editor' }, - ], - strategy: 'stopIfEnoughMatches', - }); - expect(req.searchParams).toStrictEqual(undefined); - - const resp = await e2eClient.search({ - requests: [ - { indexName: 'cts_e2e_search_facet', type: 'facet', facet: 'editor' }, - ], - strategy: 'stopIfEnoughMatches', - }); - - expect(resp).toMatchObject({ - results: [ - { - exhaustiveFacetsCount: true, - processingTimeMS: 1, - facetHits: [ - { count: 1, highlighted: 'goland', value: 'goland' }, - { count: 1, highlighted: 'neovim', value: 'neovim' }, - { count: 1, highlighted: 'vscode', value: 'vscode' }, - ], - }, - ], - }); - }); - - test('search for a single hits request with all parameters', async () => { - const req = (await client.search({ - requests: [ - { - indexName: 'theIndexName', - query: 'myQuery', - hitsPerPage: 50, - type: 'default', - }, - ], - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/*/queries'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - requests: [ - { - indexName: 'theIndexName', - query: 'myQuery', - hitsPerPage: 50, - type: 'default', - }, - ], - }); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('search for a single facet request with all parameters', async () => { - const req = (await client.search({ - requests: [ - { - indexName: 'theIndexName', - type: 'facet', - facet: 'theFacet', - facetQuery: 'theFacetQuery', - query: 'theQuery', - maxFacetHits: 50, - }, - ], - strategy: 'stopIfEnoughMatches', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/*/queries'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - requests: [ - { - indexName: 'theIndexName', - type: 'facet', - facet: 'theFacet', - facetQuery: 'theFacetQuery', - query: 'theQuery', - maxFacetHits: 50, - }, - ], - strategy: 'stopIfEnoughMatches', - }); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('search for multiple mixed requests in multiple indices with minimal parameters', async () => { - const req = (await client.search({ - requests: [ - { indexName: 'theIndexName' }, - { indexName: 'theIndexName2', type: 'facet', facet: 'theFacet' }, - { indexName: 'theIndexName', type: 'default' }, - ], - strategy: 'stopIfEnoughMatches', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/*/queries'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - requests: [ - { indexName: 'theIndexName' }, - { indexName: 'theIndexName2', type: 'facet', facet: 'theFacet' }, - { indexName: 'theIndexName', type: 'default' }, - ], - strategy: 'stopIfEnoughMatches', - }); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('search for multiple mixed requests in multiple indices with all parameters', async () => { - const req = (await client.search({ - requests: [ - { - indexName: 'theIndexName', - type: 'facet', - facet: 'theFacet', - facetQuery: 'theFacetQuery', - query: 'theQuery', - maxFacetHits: 50, - }, - { - indexName: 'theIndexName', - query: 'myQuery', - hitsPerPage: 50, - type: 'default', - }, - ], - strategy: 'stopIfEnoughMatches', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/*/queries'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - requests: [ - { - indexName: 'theIndexName', - type: 'facet', - facet: 'theFacet', - facetQuery: 'theFacetQuery', - query: 'theQuery', - maxFacetHits: 50, - }, - { - indexName: 'theIndexName', - query: 'myQuery', - hitsPerPage: 50, - type: 'default', - }, - ], - strategy: 'stopIfEnoughMatches', - }); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('search filters accept all of the possible shapes', async () => { - const req = (await client.search({ - requests: [ - { - indexName: 'theIndexName', - facetFilters: 'mySearch:filters', - reRankingApplyFilter: 'mySearch:filters', - tagFilters: 'mySearch:filters', - numericFilters: 'mySearch:filters', - optionalFilters: 'mySearch:filters', - }, - { - indexName: 'theIndexName', - facetFilters: ['mySearch:filters', ['mySearch:filters']], - reRankingApplyFilter: ['mySearch:filters', ['mySearch:filters']], - tagFilters: ['mySearch:filters', ['mySearch:filters']], - numericFilters: ['mySearch:filters', ['mySearch:filters']], - optionalFilters: ['mySearch:filters', ['mySearch:filters']], - }, - ], - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/*/queries'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - requests: [ - { - indexName: 'theIndexName', - facetFilters: 'mySearch:filters', - reRankingApplyFilter: 'mySearch:filters', - tagFilters: 'mySearch:filters', - numericFilters: 'mySearch:filters', - optionalFilters: 'mySearch:filters', - }, - { - indexName: 'theIndexName', - facetFilters: ['mySearch:filters', ['mySearch:filters']], - reRankingApplyFilter: ['mySearch:filters', ['mySearch:filters']], - tagFilters: ['mySearch:filters', ['mySearch:filters']], - numericFilters: ['mySearch:filters', ['mySearch:filters']], - optionalFilters: ['mySearch:filters', ['mySearch:filters']], - }, - ], - }); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('search with all search parameters', async () => { - const req = (await client.search({ - requests: [ - { - advancedSyntax: true, - advancedSyntaxFeatures: ['exactPhrase'], - allowTyposOnNumericTokens: true, - alternativesAsExact: ['multiWordsSynonym'], - analytics: true, - analyticsTags: [''], - aroundLatLng: '', - aroundLatLngViaIP: true, - aroundPrecision: 0, - aroundRadius: 'all', - attributeCriteriaComputedByMinProximity: true, - attributesForFaceting: [''], - attributesToHighlight: [''], - attributesToRetrieve: [''], - attributesToSnippet: [''], - clickAnalytics: true, - customRanking: [''], - decompoundQuery: true, - disableExactOnAttributes: [''], - disableTypoToleranceOnAttributes: [''], - distinct: 0, - enableABTest: true, - enablePersonalization: true, - enableReRanking: true, - enableRules: true, - exactOnSingleWordQuery: 'attribute', - explain: ['foo', 'bar'], - facetFilters: [''], - facetingAfterDistinct: true, - facets: [''], - filters: '', - getRankingInfo: true, - highlightPostTag: '', - highlightPreTag: '', - hitsPerPage: 1, - ignorePlurals: false, - indexName: 'theIndexName', - insideBoundingBox: [ - [47.3165, 4.9665, 47.3424, 5.0201], - [40.9234, 2.1185, 38.643, 1.9916], - ], - insidePolygon: [ - [47.3165, 4.9665, 47.3424, 5.0201, 47.32, 4.9], - [40.9234, 2.1185, 38.643, 1.9916, 39.2587, 2.0104], - ], - keepDiacriticsOnCharacters: '', - length: 1, - maxValuesPerFacet: 0, - minProximity: 1, - minWordSizefor1Typo: 0, - minWordSizefor2Typos: 0, - minimumAroundRadius: 1, - naturalLanguages: [''], - numericFilters: [''], - offset: 0, - optionalFilters: [''], - optionalWords: [''], - page: 0, - percentileComputation: true, - personalizationImpact: 0, - query: '', - queryLanguages: [''], - queryType: 'prefixAll', - ranking: [''], - reRankingApplyFilter: [''], - relevancyStrictness: 0, - removeStopWords: true, - removeWordsIfNoResults: 'allOptional', - renderingContent: { - facetOrdering: { - facets: { order: ['a', 'b'] }, - values: { a: { order: ['b'], sortRemainingBy: 'count' } }, - }, - }, - replaceSynonymsInHighlight: true, - responseFields: [''], - restrictHighlightAndSnippetArrays: true, - restrictSearchableAttributes: [''], - ruleContexts: [''], - similarQuery: '', - snippetEllipsisText: '', - sortFacetValuesBy: '', - sumOrFiltersScores: true, - synonyms: true, - tagFilters: [''], - type: 'default', - typoTolerance: 'min', - userToken: '', - }, - ], - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/*/queries'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - requests: [ - { - advancedSyntax: true, - advancedSyntaxFeatures: ['exactPhrase'], - allowTyposOnNumericTokens: true, - alternativesAsExact: ['multiWordsSynonym'], - analytics: true, - analyticsTags: [''], - aroundLatLng: '', - aroundLatLngViaIP: true, - aroundPrecision: 0, - aroundRadius: 'all', - attributeCriteriaComputedByMinProximity: true, - attributesForFaceting: [''], - attributesToHighlight: [''], - attributesToRetrieve: [''], - attributesToSnippet: [''], - clickAnalytics: true, - customRanking: [''], - decompoundQuery: true, - disableExactOnAttributes: [''], - disableTypoToleranceOnAttributes: [''], - distinct: 0, - enableABTest: true, - enablePersonalization: true, - enableReRanking: true, - enableRules: true, - exactOnSingleWordQuery: 'attribute', - explain: ['foo', 'bar'], - facetFilters: [''], - facetingAfterDistinct: true, - facets: [''], - filters: '', - getRankingInfo: true, - highlightPostTag: '', - highlightPreTag: '', - hitsPerPage: 1, - ignorePlurals: false, - indexName: 'theIndexName', - insideBoundingBox: [ - [47.3165, 4.9665, 47.3424, 5.0201], - [40.9234, 2.1185, 38.643, 1.9916], - ], - insidePolygon: [ - [47.3165, 4.9665, 47.3424, 5.0201, 47.32, 4.9], - [40.9234, 2.1185, 38.643, 1.9916, 39.2587, 2.0104], - ], - keepDiacriticsOnCharacters: '', - length: 1, - maxValuesPerFacet: 0, - minProximity: 1, - minWordSizefor1Typo: 0, - minWordSizefor2Typos: 0, - minimumAroundRadius: 1, - naturalLanguages: [''], - numericFilters: [''], - offset: 0, - optionalFilters: [''], - optionalWords: [''], - page: 0, - percentileComputation: true, - personalizationImpact: 0, - query: '', - queryLanguages: [''], - queryType: 'prefixAll', - ranking: [''], - reRankingApplyFilter: [''], - relevancyStrictness: 0, - removeStopWords: true, - removeWordsIfNoResults: 'allOptional', - renderingContent: { - facetOrdering: { - facets: { order: ['a', 'b'] }, - values: { a: { order: ['b'], sortRemainingBy: 'count' } }, - }, - }, - replaceSynonymsInHighlight: true, - responseFields: [''], - restrictHighlightAndSnippetArrays: true, - restrictSearchableAttributes: [''], - ruleContexts: [''], - similarQuery: '', - snippetEllipsisText: '', - sortFacetValuesBy: '', - sumOrFiltersScores: true, - synonyms: true, - tagFilters: [''], - type: 'default', - typoTolerance: 'min', - userToken: '', - }, - ], - }); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); diff --git a/tests/output/javascript/src/methods/requests/analytics.test.ts b/tests/output/javascript/src/methods/requests/analytics.test.ts deleted file mode 100644 index 16eab3660f..0000000000 --- a/tests/output/javascript/src/methods/requests/analytics.test.ts +++ /dev/null @@ -1,929 +0,0 @@ -import { analyticsClient } from '@algolia/client-analytics'; -import type { EchoResponse, RequestOptions } from '@algolia/client-common'; -import { echoRequester } from '@algolia/requester-node-http'; - -const appId = process.env.ALGOLIA_APPLICATION_ID || 'test_app_id'; -const apiKey = process.env.ALGOLIA_SEARCH_KEY || 'test_api_key'; - -const client = analyticsClient(appId, apiKey, 'us', { - requester: echoRequester(), -}); - -describe('customDelete', () => { - test('allow del method for a custom path with minimal parameters', async () => { - const req = (await client.customDelete({ - path: '/test/minimal', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/minimal'); - expect(req.method).toEqual('DELETE'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('allow del method for a custom path with all parameters', async () => { - const req = (await client.customDelete({ - path: '/test/all', - parameters: { query: 'parameters' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/all'); - expect(req.method).toEqual('DELETE'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - }); -}); - -describe('customGet', () => { - test('allow get method for a custom path with minimal parameters', async () => { - const req = (await client.customGet({ - path: '/test/minimal', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/minimal'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('allow get method for a custom path with all parameters', async () => { - const req = (await client.customGet({ - path: '/test/all', - parameters: { query: 'parameters' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/all'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - }); -}); - -describe('customPost', () => { - test('allow post method for a custom path with minimal parameters', async () => { - const req = (await client.customPost({ - path: '/test/minimal', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/minimal'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({}); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('allow post method for a custom path with all parameters', async () => { - const req = (await client.customPost({ - path: '/test/all', - parameters: { query: 'parameters' }, - body: { body: 'parameters' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/all'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ body: 'parameters' }); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - }); - - test('requestOptions can override default query parameters', async () => { - const requestOptions: RequestOptions = { - queryParameters: { query: 'myQueryParameter' }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ query: 'myQueryParameter' }); - }); - - test('requestOptions merges query parameters with default ones', async () => { - const requestOptions: RequestOptions = { - queryParameters: { query2: 'myQueryParameter' }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - query2: 'myQueryParameter', - }); - }); - - test('requestOptions can override default headers', async () => { - const requestOptions: RequestOptions = { - headers: { 'x-algolia-api-key': 'myApiKey' }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - expect(req.headers).toEqual( - expect.objectContaining({ 'x-algolia-api-key': 'myApiKey' }) - ); - }); - - test('requestOptions merges headers with default ones', async () => { - const requestOptions: RequestOptions = { - headers: { 'x-algolia-api-key': 'myApiKey' }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - expect(req.headers).toEqual( - expect.objectContaining({ 'x-algolia-api-key': 'myApiKey' }) - ); - }); - - test('requestOptions queryParameters accepts booleans', async () => { - const requestOptions: RequestOptions = { - queryParameters: { isItWorking: true }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - isItWorking: 'true', - }); - }); - - test('requestOptions queryParameters accepts integers', async () => { - const requestOptions: RequestOptions = { - queryParameters: { myParam: 2 }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - myParam: '2', - }); - }); - - test('requestOptions queryParameters accepts list of string', async () => { - const requestOptions: RequestOptions = { - queryParameters: { myParam: ['c', 'd'] }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - myParam: 'c,d', - }); - }); - - test('requestOptions queryParameters accepts list of booleans', async () => { - const requestOptions: RequestOptions = { - queryParameters: { myParam: [true, true, false] }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - myParam: 'true,true,false', - }); - }); - - test('requestOptions queryParameters accepts list of integers', async () => { - const requestOptions: RequestOptions = { - queryParameters: { myParam: [1, 2] }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - myParam: '1,2', - }); - }); -}); - -describe('customPut', () => { - test('allow put method for a custom path with minimal parameters', async () => { - const req = (await client.customPut({ - path: '/test/minimal', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/minimal'); - expect(req.method).toEqual('PUT'); - expect(req.data).toEqual({}); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('allow put method for a custom path with all parameters', async () => { - const req = (await client.customPut({ - path: '/test/all', - parameters: { query: 'parameters' }, - body: { body: 'parameters' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/all'); - expect(req.method).toEqual('PUT'); - expect(req.data).toEqual({ body: 'parameters' }); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - }); -}); - -describe('getAverageClickPosition', () => { - test('get getAverageClickPosition with minimal parameters', async () => { - const req = (await client.getAverageClickPosition({ - index: 'index', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/2/clicks/averageClickPosition'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ index: 'index' }); - }); - - test('get getAverageClickPosition with all parameters', async () => { - const req = (await client.getAverageClickPosition({ - index: 'index', - startDate: '1999-09-19', - endDate: '2001-01-01', - tags: 'tag', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/2/clicks/averageClickPosition'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ - index: 'index', - startDate: '1999-09-19', - endDate: '2001-01-01', - tags: 'tag', - }); - }); -}); - -describe('getClickPositions', () => { - test('get getClickPositions with minimal parameters', async () => { - const req = (await client.getClickPositions({ - index: 'index', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/2/clicks/positions'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ index: 'index' }); - }); - - test('get getClickPositions with all parameters', async () => { - const req = (await client.getClickPositions({ - index: 'index', - startDate: '1999-09-19', - endDate: '2001-01-01', - tags: 'tag', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/2/clicks/positions'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ - index: 'index', - startDate: '1999-09-19', - endDate: '2001-01-01', - tags: 'tag', - }); - }); -}); - -describe('getClickThroughRate', () => { - test('get getClickThroughRate with minimal parameters', async () => { - const req = (await client.getClickThroughRate({ - index: 'index', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/2/clicks/clickThroughRate'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ index: 'index' }); - }); - - test('get getClickThroughRate with all parameters', async () => { - const req = (await client.getClickThroughRate({ - index: 'index', - startDate: '1999-09-19', - endDate: '2001-01-01', - tags: 'tag', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/2/clicks/clickThroughRate'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ - index: 'index', - startDate: '1999-09-19', - endDate: '2001-01-01', - tags: 'tag', - }); - }); -}); - -describe('getConversationRate', () => { - test('get getConversationRate with minimal parameters', async () => { - const req = (await client.getConversationRate({ - index: 'index', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/2/conversions/conversionRate'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ index: 'index' }); - }); - - test('get getConversationRate with all parameters', async () => { - const req = (await client.getConversationRate({ - index: 'index', - startDate: '1999-09-19', - endDate: '2001-01-01', - tags: 'tag', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/2/conversions/conversionRate'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ - index: 'index', - startDate: '1999-09-19', - endDate: '2001-01-01', - tags: 'tag', - }); - }); -}); - -describe('getNoClickRate', () => { - test('get getNoClickRate with minimal parameters', async () => { - const req = (await client.getNoClickRate({ - index: 'index', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/2/searches/noClickRate'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ index: 'index' }); - }); - - test('get getNoClickRate with all parameters', async () => { - const req = (await client.getNoClickRate({ - index: 'index', - startDate: '1999-09-19', - endDate: '2001-01-01', - tags: 'tag', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/2/searches/noClickRate'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ - index: 'index', - startDate: '1999-09-19', - endDate: '2001-01-01', - tags: 'tag', - }); - }); -}); - -describe('getNoResultsRate', () => { - test('get getNoResultsRate with minimal parameters', async () => { - const req = (await client.getNoResultsRate({ - index: 'index', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/2/searches/noResultRate'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ index: 'index' }); - }); - - test('get getNoResultsRate with all parameters', async () => { - const req = (await client.getNoResultsRate({ - index: 'index', - startDate: '1999-09-19', - endDate: '2001-01-01', - tags: 'tag', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/2/searches/noResultRate'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ - index: 'index', - startDate: '1999-09-19', - endDate: '2001-01-01', - tags: 'tag', - }); - }); -}); - -describe('getSearchesCount', () => { - test('get getSearchesCount with minimal parameters', async () => { - const req = (await client.getSearchesCount({ - index: 'index', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/2/searches/count'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ index: 'index' }); - }); - - test('get getSearchesCount with all parameters', async () => { - const req = (await client.getSearchesCount({ - index: 'index', - startDate: '1999-09-19', - endDate: '2001-01-01', - tags: 'tag', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/2/searches/count'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ - index: 'index', - startDate: '1999-09-19', - endDate: '2001-01-01', - tags: 'tag', - }); - }); -}); - -describe('getSearchesNoClicks', () => { - test('get getSearchesNoClicks with minimal parameters', async () => { - const req = (await client.getSearchesNoClicks({ - index: 'index', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/2/searches/noClicks'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ index: 'index' }); - }); - - test('get getSearchesNoClicks with all parameters', async () => { - const req = (await client.getSearchesNoClicks({ - index: 'index', - startDate: '1999-09-19', - endDate: '2001-01-01', - limit: 21, - offset: 42, - tags: 'tag', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/2/searches/noClicks'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ - index: 'index', - startDate: '1999-09-19', - endDate: '2001-01-01', - limit: '21', - offset: '42', - tags: 'tag', - }); - }); -}); - -describe('getSearchesNoResults', () => { - test('get getSearchesNoResults with minimal parameters', async () => { - const req = (await client.getSearchesNoResults({ - index: 'index', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/2/searches/noResults'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ index: 'index' }); - }); - - test('get getSearchesNoResults with all parameters', async () => { - const req = (await client.getSearchesNoResults({ - index: 'index', - startDate: '1999-09-19', - endDate: '2001-01-01', - limit: 21, - offset: 42, - tags: 'tag', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/2/searches/noResults'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ - index: 'index', - startDate: '1999-09-19', - endDate: '2001-01-01', - limit: '21', - offset: '42', - tags: 'tag', - }); - }); -}); - -describe('getStatus', () => { - test('get getStatus with minimal parameters', async () => { - const req = (await client.getStatus({ - index: 'index', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/2/status'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ index: 'index' }); - }); -}); - -describe('getTopCountries', () => { - test('get getTopCountries with minimal parameters', async () => { - const req = (await client.getTopCountries({ - index: 'index', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/2/countries'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ index: 'index' }); - }); - - test('get getTopCountries with all parameters', async () => { - const req = (await client.getTopCountries({ - index: 'index', - startDate: '1999-09-19', - endDate: '2001-01-01', - limit: 21, - offset: 42, - tags: 'tag', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/2/countries'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ - index: 'index', - startDate: '1999-09-19', - endDate: '2001-01-01', - limit: '21', - offset: '42', - tags: 'tag', - }); - }); -}); - -describe('getTopFilterAttributes', () => { - test('get getTopFilterAttributes with minimal parameters', async () => { - const req = (await client.getTopFilterAttributes({ - index: 'index', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/2/filters'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ index: 'index' }); - }); - - test('get getTopFilterAttributes with all parameters', async () => { - const req = (await client.getTopFilterAttributes({ - index: 'index', - search: 'mySearch', - startDate: '1999-09-19', - endDate: '2001-01-01', - limit: 21, - offset: 42, - tags: 'tag', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/2/filters'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ - index: 'index', - search: 'mySearch', - startDate: '1999-09-19', - endDate: '2001-01-01', - limit: '21', - offset: '42', - tags: 'tag', - }); - }); -}); - -describe('getTopFilterForAttribute', () => { - test('get getTopFilterForAttribute with minimal parameters', async () => { - const req = (await client.getTopFilterForAttribute({ - attribute: 'myAttribute', - index: 'index', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/2/filters/myAttribute'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ index: 'index' }); - }); - - test('get getTopFilterForAttribute with minimal parameters and multiple attributes', async () => { - const req = (await client.getTopFilterForAttribute({ - attribute: 'myAttribute1,myAttribute2', - index: 'index', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/2/filters/myAttribute1%2CmyAttribute2'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ index: 'index' }); - }); - - test('get getTopFilterForAttribute with all parameters', async () => { - const req = (await client.getTopFilterForAttribute({ - attribute: 'myAttribute', - index: 'index', - search: 'mySearch', - startDate: '1999-09-19', - endDate: '2001-01-01', - limit: 21, - offset: 42, - tags: 'tag', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/2/filters/myAttribute'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ - index: 'index', - search: 'mySearch', - startDate: '1999-09-19', - endDate: '2001-01-01', - limit: '21', - offset: '42', - tags: 'tag', - }); - }); - - test('get getTopFilterForAttribute with all parameters and multiple attributes', async () => { - const req = (await client.getTopFilterForAttribute({ - attribute: 'myAttribute1,myAttribute2', - index: 'index', - search: 'mySearch', - startDate: '1999-09-19', - endDate: '2001-01-01', - limit: 21, - offset: 42, - tags: 'tag', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/2/filters/myAttribute1%2CmyAttribute2'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ - index: 'index', - search: 'mySearch', - startDate: '1999-09-19', - endDate: '2001-01-01', - limit: '21', - offset: '42', - tags: 'tag', - }); - }); -}); - -describe('getTopFiltersNoResults', () => { - test('get getTopFiltersNoResults with minimal parameters', async () => { - const req = (await client.getTopFiltersNoResults({ - index: 'index', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/2/filters/noResults'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ index: 'index' }); - }); - - test('get getTopFiltersNoResults with all parameters', async () => { - const req = (await client.getTopFiltersNoResults({ - index: 'index', - search: 'mySearch', - startDate: '1999-09-19', - endDate: '2001-01-01', - limit: 21, - offset: 42, - tags: 'tag', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/2/filters/noResults'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ - index: 'index', - search: 'mySearch', - startDate: '1999-09-19', - endDate: '2001-01-01', - limit: '21', - offset: '42', - tags: 'tag', - }); - }); -}); - -describe('getTopHits', () => { - test('get getTopHits with minimal parameters', async () => { - const req = (await client.getTopHits({ - index: 'index', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/2/hits'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ index: 'index' }); - }); - - test('get getTopHits with all parameters', async () => { - const req = (await client.getTopHits({ - index: 'index', - search: 'mySearch', - clickAnalytics: true, - startDate: '1999-09-19', - endDate: '2001-01-01', - limit: 21, - offset: 42, - tags: 'tag', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/2/hits'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ - index: 'index', - search: 'mySearch', - clickAnalytics: 'true', - startDate: '1999-09-19', - endDate: '2001-01-01', - limit: '21', - offset: '42', - tags: 'tag', - }); - }); -}); - -describe('getTopSearches', () => { - test('get getTopSearches with minimal parameters', async () => { - const req = (await client.getTopSearches({ - index: 'index', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/2/searches'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ index: 'index' }); - }); - - test('get getTopSearches with all parameters', async () => { - const req = (await client.getTopSearches({ - index: 'index', - clickAnalytics: true, - startDate: '1999-09-19', - endDate: '2001-01-01', - orderBy: 'searchCount', - direction: 'asc', - limit: 21, - offset: 42, - tags: 'tag', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/2/searches'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ - index: 'index', - clickAnalytics: 'true', - startDate: '1999-09-19', - endDate: '2001-01-01', - orderBy: 'searchCount', - direction: 'asc', - limit: '21', - offset: '42', - tags: 'tag', - }); - }); -}); - -describe('getUsersCount', () => { - test('get getUsersCount with minimal parameters', async () => { - const req = (await client.getUsersCount({ - index: 'index', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/2/users/count'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ index: 'index' }); - }); - - test('get getUsersCount with all parameters', async () => { - const req = (await client.getUsersCount({ - index: 'index', - startDate: '1999-09-19', - endDate: '2001-01-01', - tags: 'tag', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/2/users/count'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ - index: 'index', - startDate: '1999-09-19', - endDate: '2001-01-01', - tags: 'tag', - }); - }); -}); diff --git a/tests/output/javascript/src/methods/requests/ingestion.test.ts b/tests/output/javascript/src/methods/requests/ingestion.test.ts deleted file mode 100644 index 5dddcade4b..0000000000 --- a/tests/output/javascript/src/methods/requests/ingestion.test.ts +++ /dev/null @@ -1,901 +0,0 @@ -import type { EchoResponse, RequestOptions } from '@algolia/client-common'; -import { ingestionClient } from '@algolia/ingestion'; -import { echoRequester } from '@algolia/requester-node-http'; - -const appId = process.env.ALGOLIA_APPLICATION_ID || 'test_app_id'; -const apiKey = process.env.ALGOLIA_SEARCH_KEY || 'test_api_key'; - -const client = ingestionClient(appId, apiKey, 'us', { - requester: echoRequester(), -}); - -describe('createAuthentication', () => { - test('createAuthenticationOAuth', async () => { - const req = (await client.createAuthentication({ - type: 'oauth', - name: 'authName', - input: { - url: 'http://test.oauth', - client_id: 'myID', - client_secret: 'mySecret', - }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/authentications'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - type: 'oauth', - name: 'authName', - input: { - url: 'http://test.oauth', - client_id: 'myID', - client_secret: 'mySecret', - }, - }); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('createAuthenticationAlgolia', async () => { - const req = (await client.createAuthentication({ - type: 'algolia', - name: 'authName', - input: { appID: 'myappID', apiKey: 'randomApiKey' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/authentications'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - type: 'algolia', - name: 'authName', - input: { appID: 'myappID', apiKey: 'randomApiKey' }, - }); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('createDestination', () => { - test('createDestination', async () => { - const req = (await client.createDestination({ - type: 'search', - name: 'destinationName', - input: { indexPrefix: 'prefix_' }, - authenticationID: '6c02aeb1-775e-418e-870b-1faccd4b2c0f', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/destinations'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - type: 'search', - name: 'destinationName', - input: { indexPrefix: 'prefix_' }, - authenticationID: '6c02aeb1-775e-418e-870b-1faccd4b2c0f', - }); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('createSource', () => { - test('createSource', async () => { - const req = (await client.createSource({ - type: 'commercetools', - name: 'sourceName', - input: { - storeKeys: ['myStore'], - locales: ['de'], - url: 'http://commercetools.com', - projectKey: 'keyID', - }, - authenticationID: '6c02aeb1-775e-418e-870b-1faccd4b2c0f', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/sources'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - type: 'commercetools', - name: 'sourceName', - input: { - storeKeys: ['myStore'], - locales: ['de'], - url: 'http://commercetools.com', - projectKey: 'keyID', - }, - authenticationID: '6c02aeb1-775e-418e-870b-1faccd4b2c0f', - }); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('createTask', () => { - test('createTaskOnDemand', async () => { - const req = (await client.createTask({ - sourceID: 'search', - destinationID: 'destinationName', - trigger: { type: 'onDemand' }, - action: 'replace', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/tasks'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - sourceID: 'search', - destinationID: 'destinationName', - trigger: { type: 'onDemand' }, - action: 'replace', - }); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('createTaskSchedule', async () => { - const req = (await client.createTask({ - sourceID: 'search', - destinationID: 'destinationName', - trigger: { type: 'schedule', cron: '* * * * *' }, - action: 'replace', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/tasks'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - sourceID: 'search', - destinationID: 'destinationName', - trigger: { type: 'schedule', cron: '* * * * *' }, - action: 'replace', - }); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('createTaskSubscription', async () => { - const req = (await client.createTask({ - sourceID: 'search', - destinationID: 'destinationName', - trigger: { type: 'onDemand' }, - action: 'replace', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/tasks'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - sourceID: 'search', - destinationID: 'destinationName', - trigger: { type: 'onDemand' }, - action: 'replace', - }); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('customDelete', () => { - test('allow del method for a custom path with minimal parameters', async () => { - const req = (await client.customDelete({ - path: '/test/minimal', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/minimal'); - expect(req.method).toEqual('DELETE'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('allow del method for a custom path with all parameters', async () => { - const req = (await client.customDelete({ - path: '/test/all', - parameters: { query: 'parameters' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/all'); - expect(req.method).toEqual('DELETE'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - }); -}); - -describe('customGet', () => { - test('allow get method for a custom path with minimal parameters', async () => { - const req = (await client.customGet({ - path: '/test/minimal', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/minimal'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('allow get method for a custom path with all parameters', async () => { - const req = (await client.customGet({ - path: '/test/all', - parameters: { query: 'parameters' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/all'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - }); -}); - -describe('customPost', () => { - test('allow post method for a custom path with minimal parameters', async () => { - const req = (await client.customPost({ - path: '/test/minimal', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/minimal'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({}); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('allow post method for a custom path with all parameters', async () => { - const req = (await client.customPost({ - path: '/test/all', - parameters: { query: 'parameters' }, - body: { body: 'parameters' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/all'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ body: 'parameters' }); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - }); - - test('requestOptions can override default query parameters', async () => { - const requestOptions: RequestOptions = { - queryParameters: { query: 'myQueryParameter' }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ query: 'myQueryParameter' }); - }); - - test('requestOptions merges query parameters with default ones', async () => { - const requestOptions: RequestOptions = { - queryParameters: { query2: 'myQueryParameter' }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - query2: 'myQueryParameter', - }); - }); - - test('requestOptions can override default headers', async () => { - const requestOptions: RequestOptions = { - headers: { 'x-algolia-api-key': 'myApiKey' }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - expect(req.headers).toEqual( - expect.objectContaining({ 'x-algolia-api-key': 'myApiKey' }) - ); - }); - - test('requestOptions merges headers with default ones', async () => { - const requestOptions: RequestOptions = { - headers: { 'x-algolia-api-key': 'myApiKey' }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - expect(req.headers).toEqual( - expect.objectContaining({ 'x-algolia-api-key': 'myApiKey' }) - ); - }); - - test('requestOptions queryParameters accepts booleans', async () => { - const requestOptions: RequestOptions = { - queryParameters: { isItWorking: true }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - isItWorking: 'true', - }); - }); - - test('requestOptions queryParameters accepts integers', async () => { - const requestOptions: RequestOptions = { - queryParameters: { myParam: 2 }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - myParam: '2', - }); - }); - - test('requestOptions queryParameters accepts list of string', async () => { - const requestOptions: RequestOptions = { - queryParameters: { myParam: ['c', 'd'] }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - myParam: 'c,d', - }); - }); - - test('requestOptions queryParameters accepts list of booleans', async () => { - const requestOptions: RequestOptions = { - queryParameters: { myParam: [true, true, false] }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - myParam: 'true,true,false', - }); - }); - - test('requestOptions queryParameters accepts list of integers', async () => { - const requestOptions: RequestOptions = { - queryParameters: { myParam: [1, 2] }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - myParam: '1,2', - }); - }); -}); - -describe('customPut', () => { - test('allow put method for a custom path with minimal parameters', async () => { - const req = (await client.customPut({ - path: '/test/minimal', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/minimal'); - expect(req.method).toEqual('PUT'); - expect(req.data).toEqual({}); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('allow put method for a custom path with all parameters', async () => { - const req = (await client.customPut({ - path: '/test/all', - parameters: { query: 'parameters' }, - body: { body: 'parameters' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/all'); - expect(req.method).toEqual('PUT'); - expect(req.data).toEqual({ body: 'parameters' }); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - }); -}); - -describe('deleteAuthentication', () => { - test('deleteAuthentication', async () => { - const req = (await client.deleteAuthentication({ - authenticationID: '6c02aeb1-775e-418e-870b-1faccd4b2c0f', - })) as unknown as EchoResponse; - - expect(req.path).toEqual( - '/1/authentications/6c02aeb1-775e-418e-870b-1faccd4b2c0f' - ); - expect(req.method).toEqual('DELETE'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('deleteDestination', () => { - test('deleteDestination', async () => { - const req = (await client.deleteDestination({ - destinationID: '6c02aeb1-775e-418e-870b-1faccd4b2c0f', - })) as unknown as EchoResponse; - - expect(req.path).toEqual( - '/1/destinations/6c02aeb1-775e-418e-870b-1faccd4b2c0f' - ); - expect(req.method).toEqual('DELETE'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('deleteSource', () => { - test('deleteSource', async () => { - const req = (await client.deleteSource({ - sourceID: '6c02aeb1-775e-418e-870b-1faccd4b2c0f', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f'); - expect(req.method).toEqual('DELETE'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('deleteTask', () => { - test('deleteTask', async () => { - const req = (await client.deleteTask({ - taskID: '6c02aeb1-775e-418e-870b-1faccd4b2c0f', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f'); - expect(req.method).toEqual('DELETE'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('disableTask', () => { - test('disableTask', async () => { - const req = (await client.disableTask({ - taskID: '6c02aeb1-775e-418e-870b-1faccd4b2c0f', - })) as unknown as EchoResponse; - - expect(req.path).toEqual( - '/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f/disable' - ); - expect(req.method).toEqual('PUT'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('enableTask', () => { - test('enableTask', async () => { - const req = (await client.enableTask({ - taskID: '6c02aeb1-775e-418e-870b-1faccd4b2c0f', - })) as unknown as EchoResponse; - - expect(req.path).toEqual( - '/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f/enable' - ); - expect(req.method).toEqual('PUT'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('getAuthentication', () => { - test('getAuthentication', async () => { - const req = (await client.getAuthentication({ - authenticationID: '6c02aeb1-775e-418e-870b-1faccd4b2c0f', - })) as unknown as EchoResponse; - - expect(req.path).toEqual( - '/1/authentications/6c02aeb1-775e-418e-870b-1faccd4b2c0f' - ); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('getAuthentications', () => { - test('getAuthentications', async () => { - const req = (await client.getAuthentications()) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/authentications'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('getDestination', () => { - test('getDestination', async () => { - const req = (await client.getDestination({ - destinationID: '6c02aeb1-775e-418e-870b-1faccd4b2c0f', - })) as unknown as EchoResponse; - - expect(req.path).toEqual( - '/1/destinations/6c02aeb1-775e-418e-870b-1faccd4b2c0f' - ); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('getDestinations', () => { - test('getDestinations', async () => { - const req = (await client.getDestinations()) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/destinations'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('getDockerSourceStreams', () => { - test('getDockerSourceStreams', async () => { - const req = (await client.getDockerSourceStreams({ - sourceID: '6c02aeb1-775e-418e-870b-1faccd4b2c0f', - })) as unknown as EchoResponse; - - expect(req.path).toEqual( - '/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f/discover' - ); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('getEvent', () => { - test('getEvent', async () => { - const req = (await client.getEvent({ - runID: '6c02aeb1-775e-418e-870b-1faccd4b2c0f', - eventID: '6c02aeb1-775e-418e-870b-1faccd4b2c0c', - })) as unknown as EchoResponse; - - expect(req.path).toEqual( - '/1/runs/6c02aeb1-775e-418e-870b-1faccd4b2c0f/events/6c02aeb1-775e-418e-870b-1faccd4b2c0c' - ); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('getEvents', () => { - test('getEvents', async () => { - const req = (await client.getEvents({ - runID: '6c02aeb1-775e-418e-870b-1faccd4b2c0f', - })) as unknown as EchoResponse; - - expect(req.path).toEqual( - '/1/runs/6c02aeb1-775e-418e-870b-1faccd4b2c0f/events' - ); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('getRun', () => { - test('getRun', async () => { - const req = (await client.getRun({ - runID: '6c02aeb1-775e-418e-870b-1faccd4b2c0f', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/runs/6c02aeb1-775e-418e-870b-1faccd4b2c0f'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('getRuns', () => { - test('getRuns', async () => { - const req = (await client.getRuns()) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/runs'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('getSource', () => { - test('getSource', async () => { - const req = (await client.getSource({ - sourceID: '6c02aeb1-775e-418e-870b-1faccd4b2c0f', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('getSources', () => { - test('getSources', async () => { - const req = (await client.getSources()) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/sources'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('getTask', () => { - test('getTask', async () => { - const req = (await client.getTask({ - taskID: '6c02aeb1-775e-418e-870b-1faccd4b2c0f', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('getTasks', () => { - test('getTasks', async () => { - const req = (await client.getTasks()) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/tasks'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('runTask', () => { - test('runTask', async () => { - const req = (await client.runTask({ - taskID: '6c02aeb1-775e-418e-870b-1faccd4b2c0f', - })) as unknown as EchoResponse; - - expect(req.path).toEqual( - '/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f/run' - ); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('searchAuthentications', () => { - test('searchAuthentications', async () => { - const req = (await client.searchAuthentications({ - authenticationIDs: [ - '6c02aeb1-775e-418e-870b-1faccd4b2c0f', - '947ac9c4-7e58-4c87-b1e7-14a68e99699a', - ], - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/authentications/search'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - authenticationIDs: [ - '6c02aeb1-775e-418e-870b-1faccd4b2c0f', - '947ac9c4-7e58-4c87-b1e7-14a68e99699a', - ], - }); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('searchDestinations', () => { - test('searchDestinations', async () => { - const req = (await client.searchDestinations({ - destinationIDs: [ - '6c02aeb1-775e-418e-870b-1faccd4b2c0f', - '947ac9c4-7e58-4c87-b1e7-14a68e99699a', - ], - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/destinations/search'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - destinationIDs: [ - '6c02aeb1-775e-418e-870b-1faccd4b2c0f', - '947ac9c4-7e58-4c87-b1e7-14a68e99699a', - ], - }); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('searchSources', () => { - test('searchSources', async () => { - const req = (await client.searchSources({ - sourceIDs: [ - '6c02aeb1-775e-418e-870b-1faccd4b2c0f', - '947ac9c4-7e58-4c87-b1e7-14a68e99699a', - ], - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/sources/search'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - sourceIDs: [ - '6c02aeb1-775e-418e-870b-1faccd4b2c0f', - '947ac9c4-7e58-4c87-b1e7-14a68e99699a', - ], - }); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('searchTasks', () => { - test('searchTasks', async () => { - const req = (await client.searchTasks({ - taskIDs: [ - '6c02aeb1-775e-418e-870b-1faccd4b2c0f', - '947ac9c4-7e58-4c87-b1e7-14a68e99699a', - ], - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/tasks/search'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - taskIDs: [ - '6c02aeb1-775e-418e-870b-1faccd4b2c0f', - '947ac9c4-7e58-4c87-b1e7-14a68e99699a', - ], - }); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('triggerDockerSourceDiscover', () => { - test('triggerDockerSourceDiscover', async () => { - const req = (await client.triggerDockerSourceDiscover({ - sourceID: '6c02aeb1-775e-418e-870b-1faccd4b2c0f', - })) as unknown as EchoResponse; - - expect(req.path).toEqual( - '/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f/discover' - ); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('updateAuthentication', () => { - test('updateAuthentication', async () => { - const req = (await client.updateAuthentication({ - authenticationID: '6c02aeb1-775e-418e-870b-1faccd4b2c0f', - authenticationUpdate: { name: 'newName' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual( - '/1/authentications/6c02aeb1-775e-418e-870b-1faccd4b2c0f' - ); - expect(req.method).toEqual('PATCH'); - expect(req.data).toEqual({ name: 'newName' }); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('updateDestination', () => { - test('updateDestination', async () => { - const req = (await client.updateDestination({ - destinationID: '6c02aeb1-775e-418e-870b-1faccd4b2c0f', - destinationUpdate: { name: 'newName' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual( - '/1/destinations/6c02aeb1-775e-418e-870b-1faccd4b2c0f' - ); - expect(req.method).toEqual('PATCH'); - expect(req.data).toEqual({ name: 'newName' }); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('updateSource', () => { - test('updateSource', async () => { - const req = (await client.updateSource({ - sourceID: '6c02aeb1-775e-418e-870b-1faccd4b2c0f', - sourceUpdate: { name: 'newName' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f'); - expect(req.method).toEqual('PATCH'); - expect(req.data).toEqual({ name: 'newName' }); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('updateTask', () => { - test('updateTask', async () => { - const req = (await client.updateTask({ - taskID: '6c02aeb1-775e-418e-870b-1faccd4b2c0f', - taskUpdate: { enabled: false }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f'); - expect(req.method).toEqual('PATCH'); - expect(req.data).toEqual({ enabled: false }); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); diff --git a/tests/output/javascript/src/methods/requests/insights.test.ts b/tests/output/javascript/src/methods/requests/insights.test.ts deleted file mode 100644 index 3800632952..0000000000 --- a/tests/output/javascript/src/methods/requests/insights.test.ts +++ /dev/null @@ -1,523 +0,0 @@ -import type { EchoResponse, RequestOptions } from '@algolia/client-common'; -import { insightsClient } from '@algolia/client-insights'; -import { echoRequester } from '@algolia/requester-node-http'; - -const appId = process.env.ALGOLIA_APPLICATION_ID || 'test_app_id'; -const apiKey = process.env.ALGOLIA_SEARCH_KEY || 'test_api_key'; - -const client = insightsClient(appId, apiKey, 'us', { - requester: echoRequester(), -}); - -describe('customDelete', () => { - test('allow del method for a custom path with minimal parameters', async () => { - const req = (await client.customDelete({ - path: '/test/minimal', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/minimal'); - expect(req.method).toEqual('DELETE'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('allow del method for a custom path with all parameters', async () => { - const req = (await client.customDelete({ - path: '/test/all', - parameters: { query: 'parameters' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/all'); - expect(req.method).toEqual('DELETE'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - }); -}); - -describe('customGet', () => { - test('allow get method for a custom path with minimal parameters', async () => { - const req = (await client.customGet({ - path: '/test/minimal', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/minimal'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('allow get method for a custom path with all parameters', async () => { - const req = (await client.customGet({ - path: '/test/all', - parameters: { query: 'parameters' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/all'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - }); -}); - -describe('customPost', () => { - test('allow post method for a custom path with minimal parameters', async () => { - const req = (await client.customPost({ - path: '/test/minimal', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/minimal'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({}); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('allow post method for a custom path with all parameters', async () => { - const req = (await client.customPost({ - path: '/test/all', - parameters: { query: 'parameters' }, - body: { body: 'parameters' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/all'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ body: 'parameters' }); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - }); - - test('requestOptions can override default query parameters', async () => { - const requestOptions: RequestOptions = { - queryParameters: { query: 'myQueryParameter' }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ query: 'myQueryParameter' }); - }); - - test('requestOptions merges query parameters with default ones', async () => { - const requestOptions: RequestOptions = { - queryParameters: { query2: 'myQueryParameter' }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - query2: 'myQueryParameter', - }); - }); - - test('requestOptions can override default headers', async () => { - const requestOptions: RequestOptions = { - headers: { 'x-algolia-api-key': 'myApiKey' }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - expect(req.headers).toEqual( - expect.objectContaining({ 'x-algolia-api-key': 'myApiKey' }) - ); - }); - - test('requestOptions merges headers with default ones', async () => { - const requestOptions: RequestOptions = { - headers: { 'x-algolia-api-key': 'myApiKey' }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - expect(req.headers).toEqual( - expect.objectContaining({ 'x-algolia-api-key': 'myApiKey' }) - ); - }); - - test('requestOptions queryParameters accepts booleans', async () => { - const requestOptions: RequestOptions = { - queryParameters: { isItWorking: true }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - isItWorking: 'true', - }); - }); - - test('requestOptions queryParameters accepts integers', async () => { - const requestOptions: RequestOptions = { - queryParameters: { myParam: 2 }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - myParam: '2', - }); - }); - - test('requestOptions queryParameters accepts list of string', async () => { - const requestOptions: RequestOptions = { - queryParameters: { myParam: ['c', 'd'] }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - myParam: 'c,d', - }); - }); - - test('requestOptions queryParameters accepts list of booleans', async () => { - const requestOptions: RequestOptions = { - queryParameters: { myParam: [true, true, false] }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - myParam: 'true,true,false', - }); - }); - - test('requestOptions queryParameters accepts list of integers', async () => { - const requestOptions: RequestOptions = { - queryParameters: { myParam: [1, 2] }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - myParam: '1,2', - }); - }); -}); - -describe('customPut', () => { - test('allow put method for a custom path with minimal parameters', async () => { - const req = (await client.customPut({ - path: '/test/minimal', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/minimal'); - expect(req.method).toEqual('PUT'); - expect(req.data).toEqual({}); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('allow put method for a custom path with all parameters', async () => { - const req = (await client.customPut({ - path: '/test/all', - parameters: { query: 'parameters' }, - body: { body: 'parameters' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/all'); - expect(req.method).toEqual('PUT'); - expect(req.data).toEqual({ body: 'parameters' }); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - }); -}); - -describe('pushEvents', () => { - test('pushEvents0', async () => { - const req = (await client.pushEvents({ - events: [ - { - eventType: 'click', - eventName: 'Product Clicked', - index: 'products', - userToken: 'user-123456', - authenticatedUserToken: 'user-123456', - timestamp: 1641290601962, - objectIDs: ['9780545139700', '9780439784542'], - queryID: '43b15df305339e827f0ac0bdc5ebcaa7', - positions: [7, 6], - }, - ], - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/events'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - events: [ - { - eventType: 'click', - eventName: 'Product Clicked', - index: 'products', - userToken: 'user-123456', - authenticatedUserToken: 'user-123456', - timestamp: 1641290601962, - objectIDs: ['9780545139700', '9780439784542'], - queryID: '43b15df305339e827f0ac0bdc5ebcaa7', - positions: [7, 6], - }, - ], - }); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('Many events type', async () => { - const req = (await client.pushEvents({ - events: [ - { - eventType: 'conversion', - eventName: 'Product Purchased', - index: 'products', - userToken: 'user-123456', - authenticatedUserToken: 'user-123456', - timestamp: 1641290601962, - objectIDs: ['9780545139700', '9780439784542'], - queryID: '43b15df305339e827f0ac0bdc5ebcaa7', - }, - { - eventType: 'view', - eventName: 'Product Detail Page Viewed', - index: 'products', - userToken: 'user-123456', - authenticatedUserToken: 'user-123456', - timestamp: 1641290601962, - objectIDs: ['9780545139700', '9780439784542'], - }, - ], - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/events'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - events: [ - { - eventType: 'conversion', - eventName: 'Product Purchased', - index: 'products', - userToken: 'user-123456', - authenticatedUserToken: 'user-123456', - timestamp: 1641290601962, - objectIDs: ['9780545139700', '9780439784542'], - queryID: '43b15df305339e827f0ac0bdc5ebcaa7', - }, - { - eventType: 'view', - eventName: 'Product Detail Page Viewed', - index: 'products', - userToken: 'user-123456', - authenticatedUserToken: 'user-123456', - timestamp: 1641290601962, - objectIDs: ['9780545139700', '9780439784542'], - }, - ], - }); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('ConvertedObjectIDsAfterSearch', async () => { - const req = (await client.pushEvents({ - events: [ - { - eventType: 'conversion', - eventName: 'Product Purchased', - index: 'products', - userToken: 'user-123456', - authenticatedUserToken: 'user-123456', - timestamp: 1641290601962, - objectIDs: ['9780545139700', '9780439784542'], - queryID: '43b15df305339e827f0ac0bdc5ebcaa7', - }, - ], - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/events'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - events: [ - { - eventType: 'conversion', - eventName: 'Product Purchased', - index: 'products', - userToken: 'user-123456', - authenticatedUserToken: 'user-123456', - timestamp: 1641290601962, - objectIDs: ['9780545139700', '9780439784542'], - queryID: '43b15df305339e827f0ac0bdc5ebcaa7', - }, - ], - }); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('ViewedObjectIDs', async () => { - const req = (await client.pushEvents({ - events: [ - { - eventType: 'view', - eventName: 'Product Detail Page Viewed', - index: 'products', - userToken: 'user-123456', - authenticatedUserToken: 'user-123456', - timestamp: 1641290601962, - objectIDs: ['9780545139700', '9780439784542'], - }, - ], - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/events'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - events: [ - { - eventType: 'view', - eventName: 'Product Detail Page Viewed', - index: 'products', - userToken: 'user-123456', - authenticatedUserToken: 'user-123456', - timestamp: 1641290601962, - objectIDs: ['9780545139700', '9780439784542'], - }, - ], - }); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('AddedToCartObjectIDs', async () => { - const req = (await client.pushEvents({ - events: [ - { - eventType: 'conversion', - eventSubtype: 'addToCart', - eventName: 'Product Added To Cart', - index: 'products', - queryID: '43b15df305339e827f0ac0bdc5ebcaa7', - userToken: 'user-123456', - authenticatedUserToken: 'user-123456', - timestamp: 1641290601962, - objectIDs: ['9780545139700', '9780439784542'], - objectData: [ - { price: 19.99, quantity: 10, discount: 2.5 }, - { price: '8$', quantity: 7, discount: '30%' }, - ], - currency: 'USD', - }, - ], - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/events'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - events: [ - { - eventType: 'conversion', - eventSubtype: 'addToCart', - eventName: 'Product Added To Cart', - index: 'products', - queryID: '43b15df305339e827f0ac0bdc5ebcaa7', - userToken: 'user-123456', - authenticatedUserToken: 'user-123456', - timestamp: 1641290601962, - objectIDs: ['9780545139700', '9780439784542'], - objectData: [ - { price: 19.99, quantity: 10, discount: 2.5 }, - { price: '8$', quantity: 7, discount: '30%' }, - ], - currency: 'USD', - }, - ], - }); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); diff --git a/tests/output/javascript/src/methods/requests/monitoring.test.ts b/tests/output/javascript/src/methods/requests/monitoring.test.ts deleted file mode 100644 index a76f540d10..0000000000 --- a/tests/output/javascript/src/methods/requests/monitoring.test.ts +++ /dev/null @@ -1,426 +0,0 @@ -import type { EchoResponse, RequestOptions } from '@algolia/client-common'; -import { monitoringClient } from '@algolia/monitoring'; -import { echoRequester } from '@algolia/requester-node-http'; - -const appId = process.env.ALGOLIA_APPLICATION_ID || 'test_app_id'; -const apiKey = process.env.ALGOLIA_SEARCH_KEY || 'test_api_key'; - -const client = monitoringClient(appId, apiKey, { requester: echoRequester() }); - -describe('customDelete', () => { - test('allow del method for a custom path with minimal parameters', async () => { - const req = (await client.customDelete({ - path: '/test/minimal', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/minimal'); - expect(req.method).toEqual('DELETE'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('allow del method for a custom path with all parameters', async () => { - const req = (await client.customDelete({ - path: '/test/all', - parameters: { query: 'parameters' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/all'); - expect(req.method).toEqual('DELETE'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - }); -}); - -describe('customGet', () => { - test('allow get method for a custom path with minimal parameters', async () => { - const req = (await client.customGet({ - path: '/test/minimal', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/minimal'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('allow get method for a custom path with all parameters', async () => { - const req = (await client.customGet({ - path: '/test/all', - parameters: { query: 'parameters' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/all'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - }); -}); - -describe('customPost', () => { - test('allow post method for a custom path with minimal parameters', async () => { - const req = (await client.customPost({ - path: '/test/minimal', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/minimal'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({}); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('allow post method for a custom path with all parameters', async () => { - const req = (await client.customPost({ - path: '/test/all', - parameters: { query: 'parameters' }, - body: { body: 'parameters' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/all'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ body: 'parameters' }); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - }); - - test('requestOptions can override default query parameters', async () => { - const requestOptions: RequestOptions = { - queryParameters: { query: 'myQueryParameter' }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ query: 'myQueryParameter' }); - }); - - test('requestOptions merges query parameters with default ones', async () => { - const requestOptions: RequestOptions = { - queryParameters: { query2: 'myQueryParameter' }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - query2: 'myQueryParameter', - }); - }); - - test('requestOptions can override default headers', async () => { - const requestOptions: RequestOptions = { - headers: { 'x-algolia-api-key': 'myApiKey' }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - expect(req.headers).toEqual( - expect.objectContaining({ 'x-algolia-api-key': 'myApiKey' }) - ); - }); - - test('requestOptions merges headers with default ones', async () => { - const requestOptions: RequestOptions = { - headers: { 'x-algolia-api-key': 'myApiKey' }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - expect(req.headers).toEqual( - expect.objectContaining({ 'x-algolia-api-key': 'myApiKey' }) - ); - }); - - test('requestOptions queryParameters accepts booleans', async () => { - const requestOptions: RequestOptions = { - queryParameters: { isItWorking: true }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - isItWorking: 'true', - }); - }); - - test('requestOptions queryParameters accepts integers', async () => { - const requestOptions: RequestOptions = { - queryParameters: { myParam: 2 }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - myParam: '2', - }); - }); - - test('requestOptions queryParameters accepts list of string', async () => { - const requestOptions: RequestOptions = { - queryParameters: { myParam: ['c', 'd'] }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - myParam: 'c,d', - }); - }); - - test('requestOptions queryParameters accepts list of booleans', async () => { - const requestOptions: RequestOptions = { - queryParameters: { myParam: [true, true, false] }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - myParam: 'true,true,false', - }); - }); - - test('requestOptions queryParameters accepts list of integers', async () => { - const requestOptions: RequestOptions = { - queryParameters: { myParam: [1, 2] }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - myParam: '1,2', - }); - }); -}); - -describe('customPut', () => { - test('allow put method for a custom path with minimal parameters', async () => { - const req = (await client.customPut({ - path: '/test/minimal', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/minimal'); - expect(req.method).toEqual('PUT'); - expect(req.data).toEqual({}); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('allow put method for a custom path with all parameters', async () => { - const req = (await client.customPut({ - path: '/test/all', - parameters: { query: 'parameters' }, - body: { body: 'parameters' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/all'); - expect(req.method).toEqual('PUT'); - expect(req.data).toEqual({ body: 'parameters' }); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - }); -}); - -describe('getClusterIncidents', () => { - test('getClusterIncidents', async () => { - const req = (await client.getClusterIncidents({ - clusters: 'c1-de', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/incidents/c1-de'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('getClusterStatus', () => { - test('getClusterStatus', async () => { - const req = (await client.getClusterStatus({ - clusters: 'c1-de', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/status/c1-de'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('getIncidents', () => { - test('getIncidents', async () => { - const req = (await client.getIncidents()) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/incidents'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('getIndexingTime', () => { - test('getIndexingTime', async () => { - const req = (await client.getIndexingTime({ - clusters: 'c1-de', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexing/c1-de'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('getInventory', () => { - test('getInventory', async () => { - const req = (await client.getInventory()) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/inventory/servers'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('getLatency', () => { - test('getLatency', async () => { - const req = (await client.getLatency({ - clusters: 'c1-de', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/latency/c1-de'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('getMetrics', () => { - test('getMetrics', async () => { - const req = (await client.getMetrics({ - metric: 'avg_build_time', - period: 'minute', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/infrastructure/avg_build_time/period/minute'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('getReachability', () => { - test('getReachability', async () => { - const req = (await client.getReachability({ - clusters: 'c1-de', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/reachability/c1-de/probes'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('getStatus', () => { - test('getStatus', async () => { - const req = (await client.getStatus()) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/status'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); diff --git a/tests/output/javascript/src/methods/requests/personalization.test.ts b/tests/output/javascript/src/methods/requests/personalization.test.ts deleted file mode 100644 index 423c121417..0000000000 --- a/tests/output/javascript/src/methods/requests/personalization.test.ts +++ /dev/null @@ -1,373 +0,0 @@ -import type { EchoResponse, RequestOptions } from '@algolia/client-common'; -import { personalizationClient } from '@algolia/client-personalization'; -import { echoRequester } from '@algolia/requester-node-http'; - -const appId = process.env.ALGOLIA_APPLICATION_ID || 'test_app_id'; -const apiKey = process.env.ALGOLIA_SEARCH_KEY || 'test_api_key'; - -const client = personalizationClient(appId, apiKey, 'us', { - requester: echoRequester(), -}); - -describe('customDelete', () => { - test('allow del method for a custom path with minimal parameters', async () => { - const req = (await client.customDelete({ - path: '/test/minimal', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/minimal'); - expect(req.method).toEqual('DELETE'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('allow del method for a custom path with all parameters', async () => { - const req = (await client.customDelete({ - path: '/test/all', - parameters: { query: 'parameters' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/all'); - expect(req.method).toEqual('DELETE'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - }); -}); - -describe('customGet', () => { - test('allow get method for a custom path with minimal parameters', async () => { - const req = (await client.customGet({ - path: '/test/minimal', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/minimal'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('allow get method for a custom path with all parameters', async () => { - const req = (await client.customGet({ - path: '/test/all', - parameters: { query: 'parameters' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/all'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - }); -}); - -describe('customPost', () => { - test('allow post method for a custom path with minimal parameters', async () => { - const req = (await client.customPost({ - path: '/test/minimal', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/minimal'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({}); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('allow post method for a custom path with all parameters', async () => { - const req = (await client.customPost({ - path: '/test/all', - parameters: { query: 'parameters' }, - body: { body: 'parameters' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/all'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ body: 'parameters' }); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - }); - - test('requestOptions can override default query parameters', async () => { - const requestOptions: RequestOptions = { - queryParameters: { query: 'myQueryParameter' }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ query: 'myQueryParameter' }); - }); - - test('requestOptions merges query parameters with default ones', async () => { - const requestOptions: RequestOptions = { - queryParameters: { query2: 'myQueryParameter' }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - query2: 'myQueryParameter', - }); - }); - - test('requestOptions can override default headers', async () => { - const requestOptions: RequestOptions = { - headers: { 'x-algolia-api-key': 'myApiKey' }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - expect(req.headers).toEqual( - expect.objectContaining({ 'x-algolia-api-key': 'myApiKey' }) - ); - }); - - test('requestOptions merges headers with default ones', async () => { - const requestOptions: RequestOptions = { - headers: { 'x-algolia-api-key': 'myApiKey' }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - expect(req.headers).toEqual( - expect.objectContaining({ 'x-algolia-api-key': 'myApiKey' }) - ); - }); - - test('requestOptions queryParameters accepts booleans', async () => { - const requestOptions: RequestOptions = { - queryParameters: { isItWorking: true }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - isItWorking: 'true', - }); - }); - - test('requestOptions queryParameters accepts integers', async () => { - const requestOptions: RequestOptions = { - queryParameters: { myParam: 2 }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - myParam: '2', - }); - }); - - test('requestOptions queryParameters accepts list of string', async () => { - const requestOptions: RequestOptions = { - queryParameters: { myParam: ['c', 'd'] }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - myParam: 'c,d', - }); - }); - - test('requestOptions queryParameters accepts list of booleans', async () => { - const requestOptions: RequestOptions = { - queryParameters: { myParam: [true, true, false] }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - myParam: 'true,true,false', - }); - }); - - test('requestOptions queryParameters accepts list of integers', async () => { - const requestOptions: RequestOptions = { - queryParameters: { myParam: [1, 2] }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - myParam: '1,2', - }); - }); -}); - -describe('customPut', () => { - test('allow put method for a custom path with minimal parameters', async () => { - const req = (await client.customPut({ - path: '/test/minimal', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/minimal'); - expect(req.method).toEqual('PUT'); - expect(req.data).toEqual({}); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('allow put method for a custom path with all parameters', async () => { - const req = (await client.customPut({ - path: '/test/all', - parameters: { query: 'parameters' }, - body: { body: 'parameters' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/all'); - expect(req.method).toEqual('PUT'); - expect(req.data).toEqual({ body: 'parameters' }); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - }); -}); - -describe('deleteUserProfile', () => { - test('delete deleteUserProfile', async () => { - const req = (await client.deleteUserProfile({ - userToken: 'UserToken', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/profiles/UserToken'); - expect(req.method).toEqual('DELETE'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('getPersonalizationStrategy', () => { - test('get getPersonalizationStrategy', async () => { - const req = - (await client.getPersonalizationStrategy()) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/strategies/personalization'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('getUserTokenProfile', () => { - test('get getUserTokenProfile', async () => { - const req = (await client.getUserTokenProfile({ - userToken: 'UserToken', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/profiles/personalization/UserToken'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('setPersonalizationStrategy', () => { - test('set setPersonalizationStrategy', async () => { - const req = (await client.setPersonalizationStrategy({ - eventScoring: [{ score: 42, eventName: 'Algolia', eventType: 'Event' }], - facetScoring: [{ score: 42, facetName: 'Event' }], - personalizationImpact: 42, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/strategies/personalization'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - eventScoring: [{ score: 42, eventName: 'Algolia', eventType: 'Event' }], - facetScoring: [{ score: 42, facetName: 'Event' }], - personalizationImpact: 42, - }); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); diff --git a/tests/output/javascript/src/methods/requests/querySuggestions.test.ts b/tests/output/javascript/src/methods/requests/querySuggestions.test.ts deleted file mode 100644 index f9642a1c37..0000000000 --- a/tests/output/javascript/src/methods/requests/querySuggestions.test.ts +++ /dev/null @@ -1,446 +0,0 @@ -import type { EchoResponse, RequestOptions } from '@algolia/client-common'; -import { querySuggestionsClient } from '@algolia/client-query-suggestions'; -import { echoRequester } from '@algolia/requester-node-http'; - -const appId = process.env.ALGOLIA_APPLICATION_ID || 'test_app_id'; -const apiKey = process.env.ALGOLIA_SEARCH_KEY || 'test_api_key'; - -const client = querySuggestionsClient(appId, apiKey, 'us', { - requester: echoRequester(), -}); - -describe('createConfig', () => { - test('createConfig0', async () => { - const req = (await client.createConfig({ - indexName: 'theIndexName', - sourceIndices: [ - { - indexName: 'testIndex', - facets: [{ attribute: 'test' }], - generate: [['facetA', 'facetB'], ['facetC']], - }, - ], - languages: ['french'], - exclude: ['test'], - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/configs'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - indexName: 'theIndexName', - sourceIndices: [ - { - indexName: 'testIndex', - facets: [{ attribute: 'test' }], - generate: [['facetA', 'facetB'], ['facetC']], - }, - ], - languages: ['french'], - exclude: ['test'], - }); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('customDelete', () => { - test('allow del method for a custom path with minimal parameters', async () => { - const req = (await client.customDelete({ - path: '/test/minimal', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/minimal'); - expect(req.method).toEqual('DELETE'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('allow del method for a custom path with all parameters', async () => { - const req = (await client.customDelete({ - path: '/test/all', - parameters: { query: 'parameters' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/all'); - expect(req.method).toEqual('DELETE'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - }); -}); - -describe('customGet', () => { - test('allow get method for a custom path with minimal parameters', async () => { - const req = (await client.customGet({ - path: '/test/minimal', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/minimal'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('allow get method for a custom path with all parameters', async () => { - const req = (await client.customGet({ - path: '/test/all', - parameters: { query: 'parameters' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/all'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - }); -}); - -describe('customPost', () => { - test('allow post method for a custom path with minimal parameters', async () => { - const req = (await client.customPost({ - path: '/test/minimal', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/minimal'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({}); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('allow post method for a custom path with all parameters', async () => { - const req = (await client.customPost({ - path: '/test/all', - parameters: { query: 'parameters' }, - body: { body: 'parameters' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/all'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ body: 'parameters' }); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - }); - - test('requestOptions can override default query parameters', async () => { - const requestOptions: RequestOptions = { - queryParameters: { query: 'myQueryParameter' }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ query: 'myQueryParameter' }); - }); - - test('requestOptions merges query parameters with default ones', async () => { - const requestOptions: RequestOptions = { - queryParameters: { query2: 'myQueryParameter' }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - query2: 'myQueryParameter', - }); - }); - - test('requestOptions can override default headers', async () => { - const requestOptions: RequestOptions = { - headers: { 'x-algolia-api-key': 'myApiKey' }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - expect(req.headers).toEqual( - expect.objectContaining({ 'x-algolia-api-key': 'myApiKey' }) - ); - }); - - test('requestOptions merges headers with default ones', async () => { - const requestOptions: RequestOptions = { - headers: { 'x-algolia-api-key': 'myApiKey' }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - expect(req.headers).toEqual( - expect.objectContaining({ 'x-algolia-api-key': 'myApiKey' }) - ); - }); - - test('requestOptions queryParameters accepts booleans', async () => { - const requestOptions: RequestOptions = { - queryParameters: { isItWorking: true }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - isItWorking: 'true', - }); - }); - - test('requestOptions queryParameters accepts integers', async () => { - const requestOptions: RequestOptions = { - queryParameters: { myParam: 2 }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - myParam: '2', - }); - }); - - test('requestOptions queryParameters accepts list of string', async () => { - const requestOptions: RequestOptions = { - queryParameters: { myParam: ['c', 'd'] }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - myParam: 'c,d', - }); - }); - - test('requestOptions queryParameters accepts list of booleans', async () => { - const requestOptions: RequestOptions = { - queryParameters: { myParam: [true, true, false] }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - myParam: 'true,true,false', - }); - }); - - test('requestOptions queryParameters accepts list of integers', async () => { - const requestOptions: RequestOptions = { - queryParameters: { myParam: [1, 2] }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - myParam: '1,2', - }); - }); -}); - -describe('customPut', () => { - test('allow put method for a custom path with minimal parameters', async () => { - const req = (await client.customPut({ - path: '/test/minimal', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/minimal'); - expect(req.method).toEqual('PUT'); - expect(req.data).toEqual({}); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('allow put method for a custom path with all parameters', async () => { - const req = (await client.customPut({ - path: '/test/all', - parameters: { query: 'parameters' }, - body: { body: 'parameters' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/all'); - expect(req.method).toEqual('PUT'); - expect(req.data).toEqual({ body: 'parameters' }); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - }); -}); - -describe('deleteConfig', () => { - test('deleteConfig0', async () => { - const req = (await client.deleteConfig({ - indexName: 'theIndexName', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/configs/theIndexName'); - expect(req.method).toEqual('DELETE'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('getAllConfigs', () => { - test('getAllConfigs0', async () => { - const req = (await client.getAllConfigs()) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/configs'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('getConfig', () => { - test('getConfig0', async () => { - const req = (await client.getConfig({ - indexName: 'theIndexName', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/configs/theIndexName'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('getConfigStatus', () => { - test('getConfigStatus0', async () => { - const req = (await client.getConfigStatus({ - indexName: 'theIndexName', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/configs/theIndexName/status'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('getLogFile', () => { - test('getLogFile0', async () => { - const req = (await client.getLogFile({ - indexName: 'theIndexName', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/logs/theIndexName'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('updateConfig', () => { - test('updateConfig0', async () => { - const req = (await client.updateConfig({ - indexName: 'theIndexName', - querySuggestionsConfiguration: { - sourceIndices: [ - { - indexName: 'testIndex', - facets: [{ attribute: 'test' }], - generate: [['facetA', 'facetB'], ['facetC']], - }, - ], - languages: ['french'], - exclude: ['test'], - }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/configs/theIndexName'); - expect(req.method).toEqual('PUT'); - expect(req.data).toEqual({ - sourceIndices: [ - { - indexName: 'testIndex', - facets: [{ attribute: 'test' }], - generate: [['facetA', 'facetB'], ['facetC']], - }, - ], - languages: ['french'], - exclude: ['test'], - }); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); diff --git a/tests/output/javascript/src/methods/requests/recommend.test.ts b/tests/output/javascript/src/methods/requests/recommend.test.ts deleted file mode 100644 index 870bbff507..0000000000 --- a/tests/output/javascript/src/methods/requests/recommend.test.ts +++ /dev/null @@ -1,612 +0,0 @@ -import type { EchoResponse, RequestOptions } from '@algolia/client-common'; -import { recommendClient } from '@algolia/recommend'; -import { echoRequester } from '@algolia/requester-node-http'; - -const appId = process.env.ALGOLIA_APPLICATION_ID || 'test_app_id'; -const apiKey = process.env.ALGOLIA_SEARCH_KEY || 'test_api_key'; - -const client = recommendClient(appId, apiKey, { requester: echoRequester() }); - -describe('customDelete', () => { - test('allow del method for a custom path with minimal parameters', async () => { - const req = (await client.customDelete({ - path: '/test/minimal', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/minimal'); - expect(req.method).toEqual('DELETE'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('allow del method for a custom path with all parameters', async () => { - const req = (await client.customDelete({ - path: '/test/all', - parameters: { query: 'parameters' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/all'); - expect(req.method).toEqual('DELETE'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - }); -}); - -describe('customGet', () => { - test('allow get method for a custom path with minimal parameters', async () => { - const req = (await client.customGet({ - path: '/test/minimal', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/minimal'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('allow get method for a custom path with all parameters', async () => { - const req = (await client.customGet({ - path: '/test/all', - parameters: { query: 'parameters' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/all'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - }); -}); - -describe('customPost', () => { - test('allow post method for a custom path with minimal parameters', async () => { - const req = (await client.customPost({ - path: '/test/minimal', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/minimal'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({}); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('allow post method for a custom path with all parameters', async () => { - const req = (await client.customPost({ - path: '/test/all', - parameters: { query: 'parameters' }, - body: { body: 'parameters' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/all'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ body: 'parameters' }); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - }); - - test('requestOptions can override default query parameters', async () => { - const requestOptions: RequestOptions = { - queryParameters: { query: 'myQueryParameter' }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ query: 'myQueryParameter' }); - }); - - test('requestOptions merges query parameters with default ones', async () => { - const requestOptions: RequestOptions = { - queryParameters: { query2: 'myQueryParameter' }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - query2: 'myQueryParameter', - }); - }); - - test('requestOptions can override default headers', async () => { - const requestOptions: RequestOptions = { - headers: { 'x-algolia-api-key': 'myApiKey' }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - expect(req.headers).toEqual( - expect.objectContaining({ 'x-algolia-api-key': 'myApiKey' }) - ); - }); - - test('requestOptions merges headers with default ones', async () => { - const requestOptions: RequestOptions = { - headers: { 'x-algolia-api-key': 'myApiKey' }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - expect(req.headers).toEqual( - expect.objectContaining({ 'x-algolia-api-key': 'myApiKey' }) - ); - }); - - test('requestOptions queryParameters accepts booleans', async () => { - const requestOptions: RequestOptions = { - queryParameters: { isItWorking: true }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - isItWorking: 'true', - }); - }); - - test('requestOptions queryParameters accepts integers', async () => { - const requestOptions: RequestOptions = { - queryParameters: { myParam: 2 }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - myParam: '2', - }); - }); - - test('requestOptions queryParameters accepts list of string', async () => { - const requestOptions: RequestOptions = { - queryParameters: { myParam: ['c', 'd'] }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - myParam: 'c,d', - }); - }); - - test('requestOptions queryParameters accepts list of booleans', async () => { - const requestOptions: RequestOptions = { - queryParameters: { myParam: [true, true, false] }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - myParam: 'true,true,false', - }); - }); - - test('requestOptions queryParameters accepts list of integers', async () => { - const requestOptions: RequestOptions = { - queryParameters: { myParam: [1, 2] }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - myParam: '1,2', - }); - }); -}); - -describe('customPut', () => { - test('allow put method for a custom path with minimal parameters', async () => { - const req = (await client.customPut({ - path: '/test/minimal', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/minimal'); - expect(req.method).toEqual('PUT'); - expect(req.data).toEqual({}); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('allow put method for a custom path with all parameters', async () => { - const req = (await client.customPut({ - path: '/test/all', - parameters: { query: 'parameters' }, - body: { body: 'parameters' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/all'); - expect(req.method).toEqual('PUT'); - expect(req.data).toEqual({ body: 'parameters' }); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - }); -}); - -describe('deleteRecommendRule', () => { - test('deleteRecommendRule0', async () => { - const req = (await client.deleteRecommendRule({ - indexName: 'indexName', - model: 'related-products', - objectID: 'objectID', - })) as unknown as EchoResponse; - - expect(req.path).toEqual( - '/1/indexes/indexName/related-products/recommend/rules/objectID' - ); - expect(req.method).toEqual('DELETE'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('getRecommendRule', () => { - test('getRecommendRule0', async () => { - const req = (await client.getRecommendRule({ - indexName: 'indexName', - model: 'related-products', - objectID: 'objectID', - })) as unknown as EchoResponse; - - expect(req.path).toEqual( - '/1/indexes/indexName/related-products/recommend/rules/objectID' - ); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('getRecommendStatus', () => { - test('getRecommendStatus0', async () => { - const req = (await client.getRecommendStatus({ - indexName: 'indexName', - model: 'related-products', - taskID: 12345, - })) as unknown as EchoResponse; - - expect(req.path).toEqual( - '/1/indexes/indexName/related-products/task/12345' - ); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('getRecommendations', () => { - test('get recommendations for recommend model with minimal parameters', async () => { - const req = (await client.getRecommendations({ - requests: [ - { - indexName: 'indexName', - objectID: 'objectID', - model: 'related-products', - threshold: 42, - }, - ], - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/*/recommendations'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - requests: [ - { - indexName: 'indexName', - objectID: 'objectID', - model: 'related-products', - threshold: 42, - }, - ], - }); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('get recommendations for recommend model with all parameters', async () => { - const req = (await client.getRecommendations({ - requests: [ - { - indexName: 'indexName', - objectID: 'objectID', - model: 'related-products', - threshold: 42, - maxRecommendations: 10, - queryParameters: { query: 'myQuery', facetFilters: ['query'] }, - fallbackParameters: { query: 'myQuery', facetFilters: ['fallback'] }, - }, - ], - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/*/recommendations'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - requests: [ - { - indexName: 'indexName', - objectID: 'objectID', - model: 'related-products', - threshold: 42, - maxRecommendations: 10, - queryParameters: { query: 'myQuery', facetFilters: ['query'] }, - fallbackParameters: { query: 'myQuery', facetFilters: ['fallback'] }, - }, - ], - }); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('get recommendations for trending model with minimal parameters', async () => { - const req = (await client.getRecommendations({ - requests: [ - { indexName: 'indexName', model: 'trending-items', threshold: 42 }, - ], - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/*/recommendations'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - requests: [ - { indexName: 'indexName', model: 'trending-items', threshold: 42 }, - ], - }); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('get recommendations for trending model with all parameters', async () => { - const req = (await client.getRecommendations({ - requests: [ - { - indexName: 'indexName', - model: 'trending-items', - threshold: 42, - maxRecommendations: 10, - facetName: 'myFacetName', - facetValue: 'myFacetValue', - queryParameters: { query: 'myQuery', facetFilters: ['query'] }, - fallbackParameters: { query: 'myQuery', facetFilters: ['fallback'] }, - }, - ], - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/*/recommendations'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - requests: [ - { - indexName: 'indexName', - model: 'trending-items', - threshold: 42, - maxRecommendations: 10, - facetName: 'myFacetName', - facetValue: 'myFacetValue', - queryParameters: { query: 'myQuery', facetFilters: ['query'] }, - fallbackParameters: { query: 'myQuery', facetFilters: ['fallback'] }, - }, - ], - }); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('get multiple recommendations with minimal parameters', async () => { - const req = (await client.getRecommendations({ - requests: [ - { - indexName: 'indexName1', - objectID: 'objectID1', - model: 'related-products', - threshold: 21, - }, - { - indexName: 'indexName2', - objectID: 'objectID2', - model: 'related-products', - threshold: 21, - }, - ], - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/*/recommendations'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - requests: [ - { - indexName: 'indexName1', - objectID: 'objectID1', - model: 'related-products', - threshold: 21, - }, - { - indexName: 'indexName2', - objectID: 'objectID2', - model: 'related-products', - threshold: 21, - }, - ], - }); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('get multiple recommendations with all parameters', async () => { - const req = (await client.getRecommendations({ - requests: [ - { - indexName: 'indexName1', - objectID: 'objectID1', - model: 'related-products', - threshold: 21, - maxRecommendations: 10, - queryParameters: { query: 'myQuery', facetFilters: ['query1'] }, - fallbackParameters: { query: 'myQuery', facetFilters: ['fallback1'] }, - }, - { - indexName: 'indexName2', - objectID: 'objectID2', - model: 'related-products', - threshold: 21, - maxRecommendations: 10, - queryParameters: { query: 'myQuery', facetFilters: ['query2'] }, - fallbackParameters: { query: 'myQuery', facetFilters: ['fallback2'] }, - }, - ], - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/*/recommendations'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - requests: [ - { - indexName: 'indexName1', - objectID: 'objectID1', - model: 'related-products', - threshold: 21, - maxRecommendations: 10, - queryParameters: { query: 'myQuery', facetFilters: ['query1'] }, - fallbackParameters: { query: 'myQuery', facetFilters: ['fallback1'] }, - }, - { - indexName: 'indexName2', - objectID: 'objectID2', - model: 'related-products', - threshold: 21, - maxRecommendations: 10, - queryParameters: { query: 'myQuery', facetFilters: ['query2'] }, - fallbackParameters: { query: 'myQuery', facetFilters: ['fallback2'] }, - }, - ], - }); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('get frequently bought together recommendations', async () => { - const req = (await client.getRecommendations({ - requests: [ - { - indexName: 'indexName1', - objectID: 'objectID1', - model: 'bought-together', - threshold: 42, - }, - ], - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/*/recommendations'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - requests: [ - { - indexName: 'indexName1', - objectID: 'objectID1', - model: 'bought-together', - threshold: 42, - }, - ], - }); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('searchRecommendRules', () => { - test('searchRecommendRules0', async () => { - const req = (await client.searchRecommendRules({ - indexName: 'indexName', - model: 'related-products', - })) as unknown as EchoResponse; - - expect(req.path).toEqual( - '/1/indexes/indexName/related-products/recommend/rules/search' - ); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({}); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); diff --git a/tests/output/javascript/src/methods/requests/search.test.ts b/tests/output/javascript/src/methods/requests/search.test.ts deleted file mode 100644 index b63580b747..0000000000 --- a/tests/output/javascript/src/methods/requests/search.test.ts +++ /dev/null @@ -1,2487 +0,0 @@ -import type { EchoResponse, RequestOptions } from '@algolia/client-common'; -import { searchClient } from '@algolia/client-search'; -import { echoRequester } from '@algolia/requester-node-http'; -import * as dotenv from 'dotenv'; - -dotenv.config({ path: '../../.env' }); - -const appId = process.env.ALGOLIA_APPLICATION_ID || 'test_app_id'; -const apiKey = process.env.ALGOLIA_SEARCH_KEY || 'test_api_key'; - -const client = searchClient(appId, apiKey, { requester: echoRequester() }); - -if (!process.env.ALGOLIA_APPLICATION_ID) { - throw new Error( - 'please provide an `ALGOLIA_APPLICATION_ID` env var for e2e tests' - ); -} - -if (!process.env.ALGOLIA_ADMIN_KEY) { - throw new Error( - 'please provide an `ALGOLIA_ADMIN_KEY` env var for e2e tests' - ); -} - -const e2eClient = searchClient( - process.env.ALGOLIA_APPLICATION_ID, - process.env.ALGOLIA_ADMIN_KEY -); - -describe('addApiKey', () => { - test('addApiKey0', async () => { - const req = (await client.addApiKey({ - acl: ['search', 'addObject'], - description: 'my new api key', - validity: 300, - maxQueriesPerIPPerHour: 100, - maxHitsPerQuery: 20, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/keys'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - acl: ['search', 'addObject'], - description: 'my new api key', - validity: 300, - maxQueriesPerIPPerHour: 100, - maxHitsPerQuery: 20, - }); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('addOrUpdateObject', () => { - test('addOrUpdateObject0', async () => { - const req = (await client.addOrUpdateObject({ - indexName: 'indexName', - objectID: 'uniqueID', - body: { key: 'value' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/indexName/uniqueID'); - expect(req.method).toEqual('PUT'); - expect(req.data).toEqual({ key: 'value' }); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('appendSource', () => { - test('appendSource0', async () => { - const req = (await client.appendSource({ - source: 'theSource', - description: 'theDescription', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/security/sources/append'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - source: 'theSource', - description: 'theDescription', - }); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('assignUserId', () => { - test('assignUserId0', async () => { - const req = (await client.assignUserId({ - xAlgoliaUserID: 'userID', - assignUserIdParams: { cluster: 'theCluster' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/clusters/mapping'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ cluster: 'theCluster' }); - expect(req.searchParams).toStrictEqual(undefined); - expect(req.headers).toEqual( - expect.objectContaining({ 'x-algolia-user-id': 'userID' }) - ); - }); -}); - -describe('batch', () => { - test('allows batch method with `addObject` action', async () => { - const req = (await client.batch({ - indexName: 'theIndexName', - batchWriteParams: { - requests: [{ action: 'addObject', body: { key: 'value' } }], - }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/theIndexName/batch'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - requests: [{ action: 'addObject', body: { key: 'value' } }], - }); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('allows batch method with `clear` action', async () => { - const req = (await client.batch({ - indexName: 'theIndexName', - batchWriteParams: { - requests: [{ action: 'clear', body: { key: 'value' } }], - }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/theIndexName/batch'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - requests: [{ action: 'clear', body: { key: 'value' } }], - }); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('allows batch method with `delete` action', async () => { - const req = (await client.batch({ - indexName: 'theIndexName', - batchWriteParams: { - requests: [{ action: 'delete', body: { key: 'value' } }], - }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/theIndexName/batch'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - requests: [{ action: 'delete', body: { key: 'value' } }], - }); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('allows batch method with `deleteObject` action', async () => { - const req = (await client.batch({ - indexName: 'theIndexName', - batchWriteParams: { - requests: [{ action: 'deleteObject', body: { key: 'value' } }], - }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/theIndexName/batch'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - requests: [{ action: 'deleteObject', body: { key: 'value' } }], - }); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('allows batch method with `partialUpdateObject` action', async () => { - const req = (await client.batch({ - indexName: 'theIndexName', - batchWriteParams: { - requests: [{ action: 'partialUpdateObject', body: { key: 'value' } }], - }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/theIndexName/batch'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - requests: [{ action: 'partialUpdateObject', body: { key: 'value' } }], - }); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('allows batch method with `partialUpdateObjectNoCreate` action', async () => { - const req = (await client.batch({ - indexName: 'theIndexName', - batchWriteParams: { - requests: [ - { action: 'partialUpdateObjectNoCreate', body: { key: 'value' } }, - ], - }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/theIndexName/batch'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - requests: [ - { action: 'partialUpdateObjectNoCreate', body: { key: 'value' } }, - ], - }); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('allows batch method with `updateObject` action', async () => { - const req = (await client.batch({ - indexName: 'theIndexName', - batchWriteParams: { - requests: [{ action: 'updateObject', body: { key: 'value' } }], - }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/theIndexName/batch'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - requests: [{ action: 'updateObject', body: { key: 'value' } }], - }); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('batchAssignUserIds', () => { - test('batchAssignUserIds0', async () => { - const req = (await client.batchAssignUserIds({ - xAlgoliaUserID: 'userID', - batchAssignUserIdsParams: { - cluster: 'theCluster', - users: ['user1', 'user2'], - }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/clusters/mapping/batch'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - cluster: 'theCluster', - users: ['user1', 'user2'], - }); - expect(req.searchParams).toStrictEqual(undefined); - expect(req.headers).toEqual( - expect.objectContaining({ 'x-algolia-user-id': 'userID' }) - ); - }); -}); - -describe('batchDictionaryEntries', () => { - test('get batchDictionaryEntries results with minimal parameters', async () => { - const req = (await client.batchDictionaryEntries({ - dictionaryName: 'compounds', - batchDictionaryEntriesParams: { - requests: [ - { action: 'addEntry', body: { objectID: '1', language: 'en' } }, - { action: 'deleteEntry', body: { objectID: '2', language: 'fr' } }, - ], - }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/dictionaries/compounds/batch'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - requests: [ - { action: 'addEntry', body: { objectID: '1', language: 'en' } }, - { action: 'deleteEntry', body: { objectID: '2', language: 'fr' } }, - ], - }); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('get batchDictionaryEntries results with all parameters', async () => { - const req = (await client.batchDictionaryEntries({ - dictionaryName: 'compounds', - batchDictionaryEntriesParams: { - clearExistingDictionaryEntries: false, - requests: [ - { - action: 'addEntry', - body: { - objectID: '1', - language: 'en', - word: 'fancy', - words: ['believe', 'algolia'], - decomposition: ['trust', 'algolia'], - state: 'enabled', - }, - }, - { - action: 'deleteEntry', - body: { - objectID: '2', - language: 'fr', - word: 'humility', - words: ['candor', 'algolia'], - decomposition: ['grit', 'algolia'], - state: 'enabled', - }, - }, - ], - }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/dictionaries/compounds/batch'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - clearExistingDictionaryEntries: false, - requests: [ - { - action: 'addEntry', - body: { - objectID: '1', - language: 'en', - word: 'fancy', - words: ['believe', 'algolia'], - decomposition: ['trust', 'algolia'], - state: 'enabled', - }, - }, - { - action: 'deleteEntry', - body: { - objectID: '2', - language: 'fr', - word: 'humility', - words: ['candor', 'algolia'], - decomposition: ['grit', 'algolia'], - state: 'enabled', - }, - }, - ], - }); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('get batchDictionaryEntries results additional properties', async () => { - const req = (await client.batchDictionaryEntries({ - dictionaryName: 'compounds', - batchDictionaryEntriesParams: { - requests: [ - { - action: 'addEntry', - body: { objectID: '1', language: 'en', additional: 'try me' }, - }, - ], - }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/dictionaries/compounds/batch'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - requests: [ - { - action: 'addEntry', - body: { objectID: '1', language: 'en', additional: 'try me' }, - }, - ], - }); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('browse', () => { - test('browse with minimal parameters', async () => { - const req = (await client.browse({ - indexName: 'indexName', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/indexName/browse'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({}); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('browse with search parameters', async () => { - const req = (await client.browse({ - indexName: 'indexName', - browseParams: { query: 'myQuery', facetFilters: ['tags:algolia'] }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/indexName/browse'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - query: 'myQuery', - facetFilters: ['tags:algolia'], - }); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('browse allow a cursor in parameters', async () => { - const req = (await client.browse({ - indexName: 'indexName', - browseParams: { cursor: 'test' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/indexName/browse'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ cursor: 'test' }); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('clearAllSynonyms', () => { - test('clearAllSynonyms0', async () => { - const req = (await client.clearAllSynonyms({ - indexName: 'indexName', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/indexName/synonyms/clear'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('clearObjects', () => { - test('clearObjects0', async () => { - const req = (await client.clearObjects({ - indexName: 'theIndexName', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/theIndexName/clear'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('clearRules', () => { - test('clearRules0', async () => { - const req = (await client.clearRules({ - indexName: 'indexName', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/indexName/rules/clear'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('customDelete', () => { - test('allow del method for a custom path with minimal parameters', async () => { - const req = (await client.customDelete({ - path: '/test/minimal', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/minimal'); - expect(req.method).toEqual('DELETE'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('allow del method for a custom path with all parameters', async () => { - const req = (await client.customDelete({ - path: '/test/all', - parameters: { query: 'parameters' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/all'); - expect(req.method).toEqual('DELETE'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - }); -}); - -describe('customGet', () => { - test('allow get method for a custom path with minimal parameters', async () => { - const req = (await client.customGet({ - path: '/test/minimal', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/minimal'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('allow get method for a custom path with all parameters', async () => { - const req = (await client.customGet({ - path: '/test/all', - parameters: { query: 'parameters' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/all'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - }); -}); - -describe('customPost', () => { - test('allow post method for a custom path with minimal parameters', async () => { - const req = (await client.customPost({ - path: '/test/minimal', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/minimal'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({}); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('allow post method for a custom path with all parameters', async () => { - const req = (await client.customPost({ - path: '/test/all', - parameters: { query: 'parameters' }, - body: { body: 'parameters' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/all'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ body: 'parameters' }); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - }); - - test('requestOptions can override default query parameters', async () => { - const requestOptions: RequestOptions = { - queryParameters: { query: 'myQueryParameter' }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ query: 'myQueryParameter' }); - }); - - test('requestOptions merges query parameters with default ones', async () => { - const requestOptions: RequestOptions = { - queryParameters: { query2: 'myQueryParameter' }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - query2: 'myQueryParameter', - }); - }); - - test('requestOptions can override default headers', async () => { - const requestOptions: RequestOptions = { - headers: { 'x-algolia-api-key': 'myApiKey' }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - expect(req.headers).toEqual( - expect.objectContaining({ 'x-algolia-api-key': 'myApiKey' }) - ); - }); - - test('requestOptions merges headers with default ones', async () => { - const requestOptions: RequestOptions = { - headers: { 'x-algolia-api-key': 'myApiKey' }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - expect(req.headers).toEqual( - expect.objectContaining({ 'x-algolia-api-key': 'myApiKey' }) - ); - }); - - test('requestOptions queryParameters accepts booleans', async () => { - const requestOptions: RequestOptions = { - queryParameters: { isItWorking: true }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - isItWorking: 'true', - }); - }); - - test('requestOptions queryParameters accepts integers', async () => { - const requestOptions: RequestOptions = { - queryParameters: { myParam: 2 }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - myParam: '2', - }); - }); - - test('requestOptions queryParameters accepts list of string', async () => { - const requestOptions: RequestOptions = { - queryParameters: { myParam: ['c', 'd'] }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - myParam: 'c,d', - }); - }); - - test('requestOptions queryParameters accepts list of booleans', async () => { - const requestOptions: RequestOptions = { - queryParameters: { myParam: [true, true, false] }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - myParam: 'true,true,false', - }); - }); - - test('requestOptions queryParameters accepts list of integers', async () => { - const requestOptions: RequestOptions = { - queryParameters: { myParam: [1, 2] }, - }; - - const req = (await client.customPost( - { - path: '/test/requestOptions', - parameters: { query: 'parameters' }, - body: { facet: 'filters' }, - }, - requestOptions - )) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/requestOptions'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ facet: 'filters' }); - expect(req.searchParams).toStrictEqual({ - query: 'parameters', - myParam: '1,2', - }); - }); -}); - -describe('customPut', () => { - test('allow put method for a custom path with minimal parameters', async () => { - const req = (await client.customPut({ - path: '/test/minimal', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/minimal'); - expect(req.method).toEqual('PUT'); - expect(req.data).toEqual({}); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('allow put method for a custom path with all parameters', async () => { - const req = (await client.customPut({ - path: '/test/all', - parameters: { query: 'parameters' }, - body: { body: 'parameters' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/test/all'); - expect(req.method).toEqual('PUT'); - expect(req.data).toEqual({ body: 'parameters' }); - expect(req.searchParams).toStrictEqual({ query: 'parameters' }); - }); -}); - -describe('deleteApiKey', () => { - test('deleteApiKey0', async () => { - const req = (await client.deleteApiKey({ - key: 'myTestApiKey', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/keys/myTestApiKey'); - expect(req.method).toEqual('DELETE'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('deleteBy', () => { - test('deleteBy0', async () => { - const req = (await client.deleteBy({ - indexName: 'theIndexName', - deleteByParams: { filters: 'brand:brandName' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/theIndexName/deleteByQuery'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ filters: 'brand:brandName' }); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('deleteIndex', () => { - test('deleteIndex0', async () => { - const req = (await client.deleteIndex({ - indexName: 'theIndexName', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/theIndexName'); - expect(req.method).toEqual('DELETE'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('deleteObject', () => { - test('deleteObject0', async () => { - const req = (await client.deleteObject({ - indexName: 'theIndexName', - objectID: 'uniqueID', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/theIndexName/uniqueID'); - expect(req.method).toEqual('DELETE'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('deleteRule', () => { - test('delete rule simple case', async () => { - const req = (await client.deleteRule({ - indexName: 'indexName', - objectID: 'id1', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/indexName/rules/id1'); - expect(req.method).toEqual('DELETE'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('delete rule with simple characters to encode in objectID', async () => { - const req = (await client.deleteRule({ - indexName: 'indexName', - objectID: 'test/with/slash', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/indexName/rules/test%2Fwith%2Fslash'); - expect(req.method).toEqual('DELETE'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('deleteSource', () => { - test('deleteSource0', async () => { - const req = (await client.deleteSource({ - source: 'theSource', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/security/sources/theSource'); - expect(req.method).toEqual('DELETE'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('deleteSynonym', () => { - test('deleteSynonym0', async () => { - const req = (await client.deleteSynonym({ - indexName: 'indexName', - objectID: 'id1', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/indexName/synonyms/id1'); - expect(req.method).toEqual('DELETE'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('getApiKey', () => { - test('getApiKey0', async () => { - const req = (await client.getApiKey({ - key: 'myTestApiKey', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/keys/myTestApiKey'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('getDictionaryLanguages', () => { - test('get getDictionaryLanguages', async () => { - const req = - (await client.getDictionaryLanguages()) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/dictionaries/*/languages'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('getDictionarySettings', () => { - test('get getDictionarySettings results', async () => { - const req = - (await client.getDictionarySettings()) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/dictionaries/*/settings'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('getLogs', () => { - test('getLogs with minimal parameters', async () => { - const req = (await client.getLogs()) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/logs'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('getLogs with parameters', async () => { - const req = (await client.getLogs({ - offset: 5, - length: 10, - indexName: 'theIndexName', - type: 'all', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/logs'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ - offset: '5', - length: '10', - indexName: 'theIndexName', - type: 'all', - }); - }); -}); - -describe('getObject', () => { - test('getObject0', async () => { - const req = (await client.getObject({ - indexName: 'theIndexName', - objectID: 'uniqueID', - attributesToRetrieve: ['attr1', 'attr2'], - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/theIndexName/uniqueID'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ - attributesToRetrieve: 'attr1,attr2', - }); - }); -}); - -describe('getObjects', () => { - test('getObjects0', async () => { - const req = (await client.getObjects({ - requests: [ - { - attributesToRetrieve: ['attr1', 'attr2'], - objectID: 'uniqueID', - indexName: 'theIndexName', - }, - ], - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/*/objects'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - requests: [ - { - attributesToRetrieve: ['attr1', 'attr2'], - objectID: 'uniqueID', - indexName: 'theIndexName', - }, - ], - }); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('getRule', () => { - test('getRule0', async () => { - const req = (await client.getRule({ - indexName: 'indexName', - objectID: 'id1', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/indexName/rules/id1'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('getSettings', () => { - test('getSettings0', async () => { - const req = (await client.getSettings({ - indexName: 'theIndexName', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/theIndexName/settings'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('getSources', () => { - test('getSources0', async () => { - const req = (await client.getSources()) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/security/sources'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('getSynonym', () => { - test('getSynonym0', async () => { - const req = (await client.getSynonym({ - indexName: 'indexName', - objectID: 'id1', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/indexName/synonyms/id1'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('getTask', () => { - test('getTask0', async () => { - const req = (await client.getTask({ - indexName: 'theIndexName', - taskID: 123, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/theIndexName/task/123'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('getTopUserIds', () => { - test('getTopUserIds0', async () => { - const req = (await client.getTopUserIds()) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/clusters/mapping/top'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('getUserId', () => { - test('getUserId0', async () => { - const req = (await client.getUserId({ - userID: 'uniqueID', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/clusters/mapping/uniqueID'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('hasPendingMappings', () => { - test('hasPendingMappings with minimal parameters', async () => { - const req = (await client.hasPendingMappings()) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/clusters/mapping/pending'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('hasPendingMappings with parameters', async () => { - const req = (await client.hasPendingMappings({ - getClusters: true, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/clusters/mapping/pending'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ getClusters: 'true' }); - }); -}); - -describe('listApiKeys', () => { - test('listApiKeys0', async () => { - const req = (await client.listApiKeys()) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/keys'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('listClusters', () => { - test('listClusters0', async () => { - const req = (await client.listClusters()) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/clusters'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('listIndices', () => { - test('listIndices with minimal parameters', async () => { - const req = (await client.listIndices()) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('listIndices with parameters', async () => { - const req = (await client.listIndices({ - page: 8, - hitsPerPage: 3, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ page: '8', hitsPerPage: '3' }); - }); -}); - -describe('listUserIds', () => { - test('listUserIds with minimal parameters', async () => { - const req = (await client.listUserIds()) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/clusters/mapping'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('listUserIds with parameters', async () => { - const req = (await client.listUserIds({ - page: 8, - hitsPerPage: 100, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/clusters/mapping'); - expect(req.method).toEqual('GET'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual({ page: '8', hitsPerPage: '100' }); - }); -}); - -describe('multipleBatch', () => { - test('multipleBatch0', async () => { - const req = (await client.multipleBatch({ - requests: [ - { - action: 'addObject', - body: { key: 'value' }, - indexName: 'theIndexName', - }, - ], - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/*/batch'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - requests: [ - { - action: 'addObject', - body: { key: 'value' }, - indexName: 'theIndexName', - }, - ], - }); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('operationIndex', () => { - test('operationIndex0', async () => { - const req = (await client.operationIndex({ - indexName: 'theIndexName', - operationIndexParams: { - operation: 'copy', - destination: 'dest', - scope: ['rules', 'settings'], - }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/theIndexName/operation'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - operation: 'copy', - destination: 'dest', - scope: ['rules', 'settings'], - }); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('partialUpdateObject', () => { - test('partialUpdateObject0', async () => { - const req = (await client.partialUpdateObject({ - indexName: 'theIndexName', - objectID: 'uniqueID', - attributesToUpdate: { - id1: 'test', - id2: { _operation: 'AddUnique', value: 'test2' }, - }, - createIfNotExists: true, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/theIndexName/uniqueID/partial'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - id1: 'test', - id2: { _operation: 'AddUnique', value: 'test2' }, - }); - expect(req.searchParams).toStrictEqual({ createIfNotExists: 'true' }); - }); -}); - -describe('removeUserId', () => { - test('removeUserId0', async () => { - const req = (await client.removeUserId({ - userID: 'uniqueID', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/clusters/mapping/uniqueID'); - expect(req.method).toEqual('DELETE'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('replaceSources', () => { - test('replaceSources0', async () => { - const req = (await client.replaceSources({ - source: [{ source: 'theSource', description: 'theDescription' }], - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/security/sources'); - expect(req.method).toEqual('PUT'); - expect(req.data).toEqual([ - { source: 'theSource', description: 'theDescription' }, - ]); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('restoreApiKey', () => { - test('restoreApiKey0', async () => { - const req = (await client.restoreApiKey({ - key: 'myApiKey', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/keys/myApiKey/restore'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual(undefined); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('saveObject', () => { - test('saveObject0', async () => { - const req = (await client.saveObject({ - indexName: 'theIndexName', - body: { objectID: 'id', test: 'val' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/theIndexName'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ objectID: 'id', test: 'val' }); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('saveRule', () => { - test('saveRule with minimal parameters', async () => { - const req = (await client.saveRule({ - indexName: 'indexName', - objectID: 'id1', - rule: { - objectID: 'id1', - conditions: [{ pattern: 'apple', anchoring: 'contains' }], - }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/indexName/rules/id1'); - expect(req.method).toEqual('PUT'); - expect(req.data).toEqual({ - objectID: 'id1', - conditions: [{ pattern: 'apple', anchoring: 'contains' }], - }); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('saveRule with all parameters', async () => { - const req = (await client.saveRule({ - indexName: 'indexName', - objectID: 'id1', - rule: { - objectID: 'id1', - conditions: [ - { - pattern: 'apple', - anchoring: 'contains', - alternatives: false, - context: 'search', - }, - ], - consequence: { - params: { - filters: 'brand:apple', - query: { - remove: ['algolia'], - edits: [ - { type: 'remove', delete: 'abc', insert: 'cde' }, - { type: 'replace', delete: 'abc', insert: 'cde' }, - ], - }, - }, - hide: [{ objectID: '321' }], - filterPromotes: false, - userData: { algolia: 'aloglia' }, - promote: [ - { objectID: 'abc', position: 3 }, - { objectIDs: ['abc', 'def'], position: 1 }, - ], - }, - description: 'test', - enabled: true, - validity: [{ from: 1656670273, until: 1656670277 }], - }, - forwardToReplicas: true, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/indexName/rules/id1'); - expect(req.method).toEqual('PUT'); - expect(req.data).toEqual({ - objectID: 'id1', - conditions: [ - { - pattern: 'apple', - anchoring: 'contains', - alternatives: false, - context: 'search', - }, - ], - consequence: { - params: { - filters: 'brand:apple', - query: { - remove: ['algolia'], - edits: [ - { type: 'remove', delete: 'abc', insert: 'cde' }, - { type: 'replace', delete: 'abc', insert: 'cde' }, - ], - }, - }, - hide: [{ objectID: '321' }], - filterPromotes: false, - userData: { algolia: 'aloglia' }, - promote: [ - { objectID: 'abc', position: 3 }, - { objectIDs: ['abc', 'def'], position: 1 }, - ], - }, - description: 'test', - enabled: true, - validity: [{ from: 1656670273, until: 1656670277 }], - }); - expect(req.searchParams).toStrictEqual({ forwardToReplicas: 'true' }); - }); -}); - -describe('saveRules', () => { - test('saveRules with minimal parameters', async () => { - const req = (await client.saveRules({ - indexName: 'indexName', - rules: [ - { - objectID: 'a-rule-id', - conditions: [{ pattern: 'smartphone', anchoring: 'contains' }], - }, - { - objectID: 'a-second-rule-id', - conditions: [{ pattern: 'apple', anchoring: 'contains' }], - }, - ], - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/indexName/rules/batch'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual([ - { - objectID: 'a-rule-id', - conditions: [{ pattern: 'smartphone', anchoring: 'contains' }], - }, - { - objectID: 'a-second-rule-id', - conditions: [{ pattern: 'apple', anchoring: 'contains' }], - }, - ]); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('saveRules with all parameters', async () => { - const req = (await client.saveRules({ - indexName: 'indexName', - rules: [ - { - objectID: 'id1', - conditions: [ - { - pattern: 'apple', - anchoring: 'contains', - alternatives: false, - context: 'search', - }, - ], - consequence: { - params: { - filters: 'brand:apple', - query: { - remove: ['algolia'], - edits: [ - { type: 'remove', delete: 'abc', insert: 'cde' }, - { type: 'replace', delete: 'abc', insert: 'cde' }, - ], - }, - }, - hide: [{ objectID: '321' }], - filterPromotes: false, - userData: { algolia: 'aloglia' }, - promote: [ - { objectID: 'abc', position: 3 }, - { objectIDs: ['abc', 'def'], position: 1 }, - ], - }, - description: 'test', - enabled: true, - validity: [{ from: 1656670273, until: 1656670277 }], - }, - ], - forwardToReplicas: true, - clearExistingRules: true, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/indexName/rules/batch'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual([ - { - objectID: 'id1', - conditions: [ - { - pattern: 'apple', - anchoring: 'contains', - alternatives: false, - context: 'search', - }, - ], - consequence: { - params: { - filters: 'brand:apple', - query: { - remove: ['algolia'], - edits: [ - { type: 'remove', delete: 'abc', insert: 'cde' }, - { type: 'replace', delete: 'abc', insert: 'cde' }, - ], - }, - }, - hide: [{ objectID: '321' }], - filterPromotes: false, - userData: { algolia: 'aloglia' }, - promote: [ - { objectID: 'abc', position: 3 }, - { objectIDs: ['abc', 'def'], position: 1 }, - ], - }, - description: 'test', - enabled: true, - validity: [{ from: 1656670273, until: 1656670277 }], - }, - ]); - expect(req.searchParams).toStrictEqual({ - forwardToReplicas: 'true', - clearExistingRules: 'true', - }); - }); -}); - -describe('saveSynonym', () => { - test('saveSynonym0', async () => { - const req = (await client.saveSynonym({ - indexName: 'indexName', - objectID: 'id1', - synonymHit: { - objectID: 'id1', - type: 'synonym', - synonyms: ['car', 'vehicule', 'auto'], - }, - forwardToReplicas: true, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/indexName/synonyms/id1'); - expect(req.method).toEqual('PUT'); - expect(req.data).toEqual({ - objectID: 'id1', - type: 'synonym', - synonyms: ['car', 'vehicule', 'auto'], - }); - expect(req.searchParams).toStrictEqual({ forwardToReplicas: 'true' }); - }); -}); - -describe('saveSynonyms', () => { - test('saveSynonyms0', async () => { - const req = (await client.saveSynonyms({ - indexName: 'indexName', - synonymHit: [ - { - objectID: 'id1', - type: 'synonym', - synonyms: ['car', 'vehicule', 'auto'], - }, - { - objectID: 'id2', - type: 'onewaysynonym', - input: 'iphone', - synonyms: ['ephone', 'aphone', 'yphone'], - }, - ], - forwardToReplicas: true, - replaceExistingSynonyms: false, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/indexName/synonyms/batch'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual([ - { - objectID: 'id1', - type: 'synonym', - synonyms: ['car', 'vehicule', 'auto'], - }, - { - objectID: 'id2', - type: 'onewaysynonym', - input: 'iphone', - synonyms: ['ephone', 'aphone', 'yphone'], - }, - ]); - expect(req.searchParams).toStrictEqual({ - forwardToReplicas: 'true', - replaceExistingSynonyms: 'false', - }); - }); -}); - -describe('search', () => { - test('search for a single hits request with minimal parameters', async () => { - const req = (await client.search({ - requests: [{ indexName: 'cts_e2e_search_empty_index' }], - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/*/queries'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - requests: [{ indexName: 'cts_e2e_search_empty_index' }], - }); - expect(req.searchParams).toStrictEqual(undefined); - - const resp = await e2eClient.search({ - requests: [{ indexName: 'cts_e2e_search_empty_index' }], - }); - - expect(resp).toMatchObject({ - results: [ - { - hits: [], - page: 0, - nbHits: 0, - nbPages: 0, - hitsPerPage: 20, - exhaustiveNbHits: true, - exhaustiveTypo: true, - exhaustive: { nbHits: true, typo: true }, - processingTimeMS: 1, - query: '', - params: '', - index: 'cts_e2e_search_empty_index', - renderingContent: {}, - }, - ], - }); - }); - - test('search for a single facet request with minimal parameters', async () => { - const req = (await client.search({ - requests: [ - { indexName: 'cts_e2e_search_facet', type: 'facet', facet: 'editor' }, - ], - strategy: 'stopIfEnoughMatches', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/*/queries'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - requests: [ - { indexName: 'cts_e2e_search_facet', type: 'facet', facet: 'editor' }, - ], - strategy: 'stopIfEnoughMatches', - }); - expect(req.searchParams).toStrictEqual(undefined); - - const resp = await e2eClient.search({ - requests: [ - { indexName: 'cts_e2e_search_facet', type: 'facet', facet: 'editor' }, - ], - strategy: 'stopIfEnoughMatches', - }); - - expect(resp).toMatchObject({ - results: [ - { - exhaustiveFacetsCount: true, - processingTimeMS: 1, - facetHits: [ - { count: 1, highlighted: 'goland', value: 'goland' }, - { count: 1, highlighted: 'neovim', value: 'neovim' }, - { count: 1, highlighted: 'vscode', value: 'vscode' }, - ], - }, - ], - }); - }); - - test('search for a single hits request with all parameters', async () => { - const req = (await client.search({ - requests: [ - { - indexName: 'theIndexName', - query: 'myQuery', - hitsPerPage: 50, - type: 'default', - }, - ], - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/*/queries'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - requests: [ - { - indexName: 'theIndexName', - query: 'myQuery', - hitsPerPage: 50, - type: 'default', - }, - ], - }); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('search for a single facet request with all parameters', async () => { - const req = (await client.search({ - requests: [ - { - indexName: 'theIndexName', - type: 'facet', - facet: 'theFacet', - facetQuery: 'theFacetQuery', - query: 'theQuery', - maxFacetHits: 50, - }, - ], - strategy: 'stopIfEnoughMatches', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/*/queries'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - requests: [ - { - indexName: 'theIndexName', - type: 'facet', - facet: 'theFacet', - facetQuery: 'theFacetQuery', - query: 'theQuery', - maxFacetHits: 50, - }, - ], - strategy: 'stopIfEnoughMatches', - }); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('search for multiple mixed requests in multiple indices with minimal parameters', async () => { - const req = (await client.search({ - requests: [ - { indexName: 'theIndexName' }, - { indexName: 'theIndexName2', type: 'facet', facet: 'theFacet' }, - { indexName: 'theIndexName', type: 'default' }, - ], - strategy: 'stopIfEnoughMatches', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/*/queries'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - requests: [ - { indexName: 'theIndexName' }, - { indexName: 'theIndexName2', type: 'facet', facet: 'theFacet' }, - { indexName: 'theIndexName', type: 'default' }, - ], - strategy: 'stopIfEnoughMatches', - }); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('search for multiple mixed requests in multiple indices with all parameters', async () => { - const req = (await client.search({ - requests: [ - { - indexName: 'theIndexName', - type: 'facet', - facet: 'theFacet', - facetQuery: 'theFacetQuery', - query: 'theQuery', - maxFacetHits: 50, - }, - { - indexName: 'theIndexName', - query: 'myQuery', - hitsPerPage: 50, - type: 'default', - }, - ], - strategy: 'stopIfEnoughMatches', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/*/queries'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - requests: [ - { - indexName: 'theIndexName', - type: 'facet', - facet: 'theFacet', - facetQuery: 'theFacetQuery', - query: 'theQuery', - maxFacetHits: 50, - }, - { - indexName: 'theIndexName', - query: 'myQuery', - hitsPerPage: 50, - type: 'default', - }, - ], - strategy: 'stopIfEnoughMatches', - }); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('search filters accept all of the possible shapes', async () => { - const req = (await client.search({ - requests: [ - { - indexName: 'theIndexName', - facetFilters: 'mySearch:filters', - reRankingApplyFilter: 'mySearch:filters', - tagFilters: 'mySearch:filters', - numericFilters: 'mySearch:filters', - optionalFilters: 'mySearch:filters', - }, - { - indexName: 'theIndexName', - facetFilters: ['mySearch:filters', ['mySearch:filters']], - reRankingApplyFilter: ['mySearch:filters', ['mySearch:filters']], - tagFilters: ['mySearch:filters', ['mySearch:filters']], - numericFilters: ['mySearch:filters', ['mySearch:filters']], - optionalFilters: ['mySearch:filters', ['mySearch:filters']], - }, - ], - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/*/queries'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - requests: [ - { - indexName: 'theIndexName', - facetFilters: 'mySearch:filters', - reRankingApplyFilter: 'mySearch:filters', - tagFilters: 'mySearch:filters', - numericFilters: 'mySearch:filters', - optionalFilters: 'mySearch:filters', - }, - { - indexName: 'theIndexName', - facetFilters: ['mySearch:filters', ['mySearch:filters']], - reRankingApplyFilter: ['mySearch:filters', ['mySearch:filters']], - tagFilters: ['mySearch:filters', ['mySearch:filters']], - numericFilters: ['mySearch:filters', ['mySearch:filters']], - optionalFilters: ['mySearch:filters', ['mySearch:filters']], - }, - ], - }); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('search with all search parameters', async () => { - const req = (await client.search({ - requests: [ - { - advancedSyntax: true, - advancedSyntaxFeatures: ['exactPhrase'], - allowTyposOnNumericTokens: true, - alternativesAsExact: ['multiWordsSynonym'], - analytics: true, - analyticsTags: [''], - aroundLatLng: '', - aroundLatLngViaIP: true, - aroundPrecision: 0, - aroundRadius: 'all', - attributeCriteriaComputedByMinProximity: true, - attributesForFaceting: [''], - attributesToHighlight: [''], - attributesToRetrieve: [''], - attributesToSnippet: [''], - clickAnalytics: true, - customRanking: [''], - decompoundQuery: true, - disableExactOnAttributes: [''], - disableTypoToleranceOnAttributes: [''], - distinct: 0, - enableABTest: true, - enablePersonalization: true, - enableReRanking: true, - enableRules: true, - exactOnSingleWordQuery: 'attribute', - explain: ['foo', 'bar'], - facetFilters: [''], - facetingAfterDistinct: true, - facets: [''], - filters: '', - getRankingInfo: true, - highlightPostTag: '', - highlightPreTag: '', - hitsPerPage: 1, - ignorePlurals: false, - indexName: 'theIndexName', - insideBoundingBox: [ - [47.3165, 4.9665, 47.3424, 5.0201], - [40.9234, 2.1185, 38.643, 1.9916], - ], - insidePolygon: [ - [47.3165, 4.9665, 47.3424, 5.0201, 47.32, 4.9], - [40.9234, 2.1185, 38.643, 1.9916, 39.2587, 2.0104], - ], - keepDiacriticsOnCharacters: '', - length: 1, - maxValuesPerFacet: 0, - minProximity: 1, - minWordSizefor1Typo: 0, - minWordSizefor2Typos: 0, - minimumAroundRadius: 1, - naturalLanguages: [''], - numericFilters: [''], - offset: 0, - optionalFilters: [''], - optionalWords: [''], - page: 0, - percentileComputation: true, - personalizationImpact: 0, - query: '', - queryLanguages: [''], - queryType: 'prefixAll', - ranking: [''], - reRankingApplyFilter: [''], - relevancyStrictness: 0, - removeStopWords: true, - removeWordsIfNoResults: 'allOptional', - renderingContent: { - facetOrdering: { - facets: { order: ['a', 'b'] }, - values: { a: { order: ['b'], sortRemainingBy: 'count' } }, - }, - }, - replaceSynonymsInHighlight: true, - responseFields: [''], - restrictHighlightAndSnippetArrays: true, - restrictSearchableAttributes: [''], - ruleContexts: [''], - similarQuery: '', - snippetEllipsisText: '', - sortFacetValuesBy: '', - sumOrFiltersScores: true, - synonyms: true, - tagFilters: [''], - type: 'default', - typoTolerance: 'min', - userToken: '', - }, - ], - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/*/queries'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - requests: [ - { - advancedSyntax: true, - advancedSyntaxFeatures: ['exactPhrase'], - allowTyposOnNumericTokens: true, - alternativesAsExact: ['multiWordsSynonym'], - analytics: true, - analyticsTags: [''], - aroundLatLng: '', - aroundLatLngViaIP: true, - aroundPrecision: 0, - aroundRadius: 'all', - attributeCriteriaComputedByMinProximity: true, - attributesForFaceting: [''], - attributesToHighlight: [''], - attributesToRetrieve: [''], - attributesToSnippet: [''], - clickAnalytics: true, - customRanking: [''], - decompoundQuery: true, - disableExactOnAttributes: [''], - disableTypoToleranceOnAttributes: [''], - distinct: 0, - enableABTest: true, - enablePersonalization: true, - enableReRanking: true, - enableRules: true, - exactOnSingleWordQuery: 'attribute', - explain: ['foo', 'bar'], - facetFilters: [''], - facetingAfterDistinct: true, - facets: [''], - filters: '', - getRankingInfo: true, - highlightPostTag: '', - highlightPreTag: '', - hitsPerPage: 1, - ignorePlurals: false, - indexName: 'theIndexName', - insideBoundingBox: [ - [47.3165, 4.9665, 47.3424, 5.0201], - [40.9234, 2.1185, 38.643, 1.9916], - ], - insidePolygon: [ - [47.3165, 4.9665, 47.3424, 5.0201, 47.32, 4.9], - [40.9234, 2.1185, 38.643, 1.9916, 39.2587, 2.0104], - ], - keepDiacriticsOnCharacters: '', - length: 1, - maxValuesPerFacet: 0, - minProximity: 1, - minWordSizefor1Typo: 0, - minWordSizefor2Typos: 0, - minimumAroundRadius: 1, - naturalLanguages: [''], - numericFilters: [''], - offset: 0, - optionalFilters: [''], - optionalWords: [''], - page: 0, - percentileComputation: true, - personalizationImpact: 0, - query: '', - queryLanguages: [''], - queryType: 'prefixAll', - ranking: [''], - reRankingApplyFilter: [''], - relevancyStrictness: 0, - removeStopWords: true, - removeWordsIfNoResults: 'allOptional', - renderingContent: { - facetOrdering: { - facets: { order: ['a', 'b'] }, - values: { a: { order: ['b'], sortRemainingBy: 'count' } }, - }, - }, - replaceSynonymsInHighlight: true, - responseFields: [''], - restrictHighlightAndSnippetArrays: true, - restrictSearchableAttributes: [''], - ruleContexts: [''], - similarQuery: '', - snippetEllipsisText: '', - sortFacetValuesBy: '', - sumOrFiltersScores: true, - synonyms: true, - tagFilters: [''], - type: 'default', - typoTolerance: 'min', - userToken: '', - }, - ], - }); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('searchDictionaryEntries', () => { - test('get searchDictionaryEntries results with minimal parameters', async () => { - const req = (await client.searchDictionaryEntries({ - dictionaryName: 'compounds', - searchDictionaryEntriesParams: { query: 'foo' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/dictionaries/compounds/search'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ query: 'foo' }); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('get searchDictionaryEntries results with all parameters', async () => { - const req = (await client.searchDictionaryEntries({ - dictionaryName: 'compounds', - searchDictionaryEntriesParams: { - query: 'foo', - page: 4, - hitsPerPage: 2, - language: 'fr', - }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/dictionaries/compounds/search'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - query: 'foo', - page: 4, - hitsPerPage: 2, - language: 'fr', - }); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('searchForFacetValues', () => { - test('get searchForFacetValues results with minimal parameters', async () => { - const req = (await client.searchForFacetValues({ - indexName: 'indexName', - facetName: 'facetName', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/indexName/facets/facetName/query'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({}); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('get searchForFacetValues results with all parameters', async () => { - const req = (await client.searchForFacetValues({ - indexName: 'indexName', - facetName: 'facetName', - searchForFacetValuesRequest: { - params: "query=foo&facetFilters=['bar']", - facetQuery: 'foo', - maxFacetHits: 42, - }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/indexName/facets/facetName/query'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - params: "query=foo&facetFilters=['bar']", - facetQuery: 'foo', - maxFacetHits: 42, - }); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('searchRules', () => { - test('searchRules0', async () => { - const req = (await client.searchRules({ - indexName: 'indexName', - searchRulesParams: { query: 'something' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/indexName/rules/search'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ query: 'something' }); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('searchSingleIndex', () => { - test('search with minimal parameters', async () => { - const req = (await client.searchSingleIndex({ - indexName: 'indexName', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/indexName/query'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({}); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('search with searchParams', async () => { - const req = (await client.searchSingleIndex({ - indexName: 'indexName', - searchParams: { query: 'myQuery', facetFilters: ['tags:algolia'] }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/indexName/query'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - query: 'myQuery', - facetFilters: ['tags:algolia'], - }); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('searchSynonyms', () => { - test('searchSynonyms with minimal parameters', async () => { - const req = (await client.searchSynonyms({ - indexName: 'indexName', - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/indexName/synonyms/search'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({}); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('searchSynonyms with all parameters', async () => { - const req = (await client.searchSynonyms({ - indexName: 'indexName', - type: 'altcorrection1', - page: 10, - hitsPerPage: 10, - searchSynonymsParams: { query: 'myQuery' }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/indexName/synonyms/search'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ query: 'myQuery' }); - expect(req.searchParams).toStrictEqual({ - type: 'altcorrection1', - page: '10', - hitsPerPage: '10', - }); - }); -}); - -describe('searchUserIds', () => { - test('searchUserIds0', async () => { - const req = (await client.searchUserIds({ - query: 'test', - clusterName: 'theClusterName', - page: 5, - hitsPerPage: 10, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/clusters/mapping/search'); - expect(req.method).toEqual('POST'); - expect(req.data).toEqual({ - query: 'test', - clusterName: 'theClusterName', - page: 5, - hitsPerPage: 10, - }); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('setDictionarySettings', () => { - test('get setDictionarySettings results with minimal parameters', async () => { - const req = (await client.setDictionarySettings({ - disableStandardEntries: { plurals: { fr: false, en: false, ru: true } }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/dictionaries/*/settings'); - expect(req.method).toEqual('PUT'); - expect(req.data).toEqual({ - disableStandardEntries: { plurals: { fr: false, en: false, ru: true } }, - }); - expect(req.searchParams).toStrictEqual(undefined); - }); - - test('get setDictionarySettings results with all parameters', async () => { - const req = (await client.setDictionarySettings({ - disableStandardEntries: { - plurals: { fr: false, en: false, ru: true }, - stopwords: { fr: false }, - compounds: { ru: true }, - }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/dictionaries/*/settings'); - expect(req.method).toEqual('PUT'); - expect(req.data).toEqual({ - disableStandardEntries: { - plurals: { fr: false, en: false, ru: true }, - stopwords: { fr: false }, - compounds: { ru: true }, - }, - }); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('setSettings', () => { - test('setSettings with minimal parameters', async () => { - const req = (await client.setSettings({ - indexName: 'theIndexName', - indexSettings: { paginationLimitedTo: 10 }, - forwardToReplicas: true, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/theIndexName/settings'); - expect(req.method).toEqual('PUT'); - expect(req.data).toEqual({ paginationLimitedTo: 10 }); - expect(req.searchParams).toStrictEqual({ forwardToReplicas: 'true' }); - }); - - test('setSettings allow boolean `typoTolerance`', async () => { - const req = (await client.setSettings({ - indexName: 'theIndexName', - indexSettings: { typoTolerance: true }, - forwardToReplicas: true, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/theIndexName/settings'); - expect(req.method).toEqual('PUT'); - expect(req.data).toEqual({ typoTolerance: true }); - expect(req.searchParams).toStrictEqual({ forwardToReplicas: 'true' }); - }); - - test('setSettings allow enum `typoTolerance`', async () => { - const req = (await client.setSettings({ - indexName: 'theIndexName', - indexSettings: { typoTolerance: 'min' }, - forwardToReplicas: true, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/theIndexName/settings'); - expect(req.method).toEqual('PUT'); - expect(req.data).toEqual({ typoTolerance: 'min' }); - expect(req.searchParams).toStrictEqual({ forwardToReplicas: 'true' }); - }); - - test('setSettings allow boolean `ignorePlurals`', async () => { - const req = (await client.setSettings({ - indexName: 'theIndexName', - indexSettings: { ignorePlurals: true }, - forwardToReplicas: true, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/theIndexName/settings'); - expect(req.method).toEqual('PUT'); - expect(req.data).toEqual({ ignorePlurals: true }); - expect(req.searchParams).toStrictEqual({ forwardToReplicas: 'true' }); - }); - - test('setSettings allow list of string `ignorePlurals`', async () => { - const req = (await client.setSettings({ - indexName: 'theIndexName', - indexSettings: { ignorePlurals: ['algolia'] }, - forwardToReplicas: true, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/theIndexName/settings'); - expect(req.method).toEqual('PUT'); - expect(req.data).toEqual({ ignorePlurals: ['algolia'] }); - expect(req.searchParams).toStrictEqual({ forwardToReplicas: 'true' }); - }); - - test('setSettings allow boolean `removeStopWords`', async () => { - const req = (await client.setSettings({ - indexName: 'theIndexName', - indexSettings: { removeStopWords: true }, - forwardToReplicas: true, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/theIndexName/settings'); - expect(req.method).toEqual('PUT'); - expect(req.data).toEqual({ removeStopWords: true }); - expect(req.searchParams).toStrictEqual({ forwardToReplicas: 'true' }); - }); - - test('setSettings allow list of string `removeStopWords`', async () => { - const req = (await client.setSettings({ - indexName: 'theIndexName', - indexSettings: { removeStopWords: ['algolia'] }, - forwardToReplicas: true, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/theIndexName/settings'); - expect(req.method).toEqual('PUT'); - expect(req.data).toEqual({ removeStopWords: ['algolia'] }); - expect(req.searchParams).toStrictEqual({ forwardToReplicas: 'true' }); - }); - - test('setSettings allow boolean `distinct`', async () => { - const req = (await client.setSettings({ - indexName: 'theIndexName', - indexSettings: { distinct: true }, - forwardToReplicas: true, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/theIndexName/settings'); - expect(req.method).toEqual('PUT'); - expect(req.data).toEqual({ distinct: true }); - expect(req.searchParams).toStrictEqual({ forwardToReplicas: 'true' }); - }); - - test('setSettings allow integers for `distinct`', async () => { - const req = (await client.setSettings({ - indexName: 'theIndexName', - indexSettings: { distinct: 1 }, - forwardToReplicas: true, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/theIndexName/settings'); - expect(req.method).toEqual('PUT'); - expect(req.data).toEqual({ distinct: 1 }); - expect(req.searchParams).toStrictEqual({ forwardToReplicas: 'true' }); - }); - - test('setSettings allow all `indexSettings`', async () => { - const req = (await client.setSettings({ - indexName: 'theIndexName', - indexSettings: { - advancedSyntax: true, - advancedSyntaxFeatures: ['exactPhrase'], - allowCompressionOfIntegerArray: true, - allowTyposOnNumericTokens: true, - alternativesAsExact: ['singleWordSynonym'], - attributeCriteriaComputedByMinProximity: true, - attributeForDistinct: 'test', - attributesForFaceting: ['algolia'], - attributesToHighlight: ['algolia'], - attributesToRetrieve: ['algolia'], - attributesToSnippet: ['algolia'], - attributesToTransliterate: ['algolia'], - camelCaseAttributes: ['algolia'], - customNormalization: { algolia: { aloglia: 'aglolia' } }, - customRanking: ['algolia'], - decompoundQuery: false, - decompoundedAttributes: { algolia: 'aloglia' }, - disableExactOnAttributes: ['algolia'], - disablePrefixOnAttributes: ['algolia'], - disableTypoToleranceOnAttributes: ['algolia'], - disableTypoToleranceOnWords: ['algolia'], - distinct: 3, - enablePersonalization: true, - enableReRanking: false, - enableRules: true, - exactOnSingleWordQuery: 'attribute', - highlightPreTag: '', - highlightPostTag: '', - hitsPerPage: 10, - ignorePlurals: false, - indexLanguages: ['algolia'], - keepDiacriticsOnCharacters: 'abc', - maxFacetHits: 20, - maxValuesPerFacet: 30, - minProximity: 6, - minWordSizefor1Typo: 5, - minWordSizefor2Typos: 11, - mode: 'neuralSearch', - numericAttributesForFiltering: ['algolia'], - optionalWords: ['myspace'], - paginationLimitedTo: 0, - queryLanguages: ['algolia'], - queryType: 'prefixLast', - ranking: ['geo'], - reRankingApplyFilter: 'mySearch:filters', - relevancyStrictness: 10, - removeStopWords: false, - removeWordsIfNoResults: 'lastWords', - renderingContent: { - facetOrdering: { - facets: { order: ['a', 'b'] }, - values: { a: { order: ['b'], sortRemainingBy: 'count' } }, - }, - }, - replaceSynonymsInHighlight: true, - replicas: [''], - responseFields: ['algolia'], - restrictHighlightAndSnippetArrays: true, - searchableAttributes: ['foo'], - semanticSearch: { eventSources: ['foo'] }, - separatorsToIndex: 'bar', - snippetEllipsisText: '---', - sortFacetValuesBy: 'date', - typoTolerance: false, - unretrievableAttributes: ['foo'], - userData: { user: 'data' }, - }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/indexes/theIndexName/settings'); - expect(req.method).toEqual('PUT'); - expect(req.data).toEqual({ - advancedSyntax: true, - advancedSyntaxFeatures: ['exactPhrase'], - allowCompressionOfIntegerArray: true, - allowTyposOnNumericTokens: true, - alternativesAsExact: ['singleWordSynonym'], - attributeCriteriaComputedByMinProximity: true, - attributeForDistinct: 'test', - attributesForFaceting: ['algolia'], - attributesToHighlight: ['algolia'], - attributesToRetrieve: ['algolia'], - attributesToSnippet: ['algolia'], - attributesToTransliterate: ['algolia'], - camelCaseAttributes: ['algolia'], - customNormalization: { algolia: { aloglia: 'aglolia' } }, - customRanking: ['algolia'], - decompoundQuery: false, - decompoundedAttributes: { algolia: 'aloglia' }, - disableExactOnAttributes: ['algolia'], - disablePrefixOnAttributes: ['algolia'], - disableTypoToleranceOnAttributes: ['algolia'], - disableTypoToleranceOnWords: ['algolia'], - distinct: 3, - enablePersonalization: true, - enableReRanking: false, - enableRules: true, - exactOnSingleWordQuery: 'attribute', - highlightPreTag: '', - highlightPostTag: '', - hitsPerPage: 10, - ignorePlurals: false, - indexLanguages: ['algolia'], - keepDiacriticsOnCharacters: 'abc', - maxFacetHits: 20, - maxValuesPerFacet: 30, - minProximity: 6, - minWordSizefor1Typo: 5, - minWordSizefor2Typos: 11, - mode: 'neuralSearch', - numericAttributesForFiltering: ['algolia'], - optionalWords: ['myspace'], - paginationLimitedTo: 0, - queryLanguages: ['algolia'], - queryType: 'prefixLast', - ranking: ['geo'], - reRankingApplyFilter: 'mySearch:filters', - relevancyStrictness: 10, - removeStopWords: false, - removeWordsIfNoResults: 'lastWords', - renderingContent: { - facetOrdering: { - facets: { order: ['a', 'b'] }, - values: { a: { order: ['b'], sortRemainingBy: 'count' } }, - }, - }, - replaceSynonymsInHighlight: true, - replicas: [''], - responseFields: ['algolia'], - restrictHighlightAndSnippetArrays: true, - searchableAttributes: ['foo'], - semanticSearch: { eventSources: ['foo'] }, - separatorsToIndex: 'bar', - snippetEllipsisText: '---', - sortFacetValuesBy: 'date', - typoTolerance: false, - unretrievableAttributes: ['foo'], - userData: { user: 'data' }, - }); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); - -describe('updateApiKey', () => { - test('updateApiKey0', async () => { - const req = (await client.updateApiKey({ - key: 'myApiKey', - apiKey: { - acl: ['search', 'addObject'], - validity: 300, - maxQueriesPerIPPerHour: 100, - maxHitsPerQuery: 20, - }, - })) as unknown as EchoResponse; - - expect(req.path).toEqual('/1/keys/myApiKey'); - expect(req.method).toEqual('PUT'); - expect(req.data).toEqual({ - acl: ['search', 'addObject'], - validity: 300, - maxQueriesPerIPPerHour: 100, - maxHitsPerQuery: 20, - }); - expect(req.searchParams).toStrictEqual(undefined); - }); -}); diff --git a/tests/output/kotlin/src/commonTest/kotlin/com/algolia/methods/requests/AbtestingTest.kt b/tests/output/kotlin/src/commonTest/kotlin/com/algolia/methods/requests/AbtestingTest.kt deleted file mode 100644 index 1abc042685..0000000000 --- a/tests/output/kotlin/src/commonTest/kotlin/com/algolia/methods/requests/AbtestingTest.kt +++ /dev/null @@ -1,560 +0,0 @@ -package com.algolia.methods.requests - -import com.algolia.client.api.AbtestingClient -import com.algolia.client.configuration.* -import com.algolia.client.model.abtesting.* -import com.algolia.client.transport.* -import com.algolia.utils.* -import io.ktor.http.* -import kotlinx.coroutines.test.* -import kotlinx.serialization.json.* -import kotlin.test.* - -class AbtestingTest { - - val client = AbtestingClient( - appId = "appId", - apiKey = "apiKey", - region = "us", - ) - - // addABTests - - @Test - fun `addABTests with minimal parameters`() = runTest { - client.runTest( - call = { - addABTests( - addABTestsRequest = AddABTestsRequest( - endAt = "2022-12-31T00:00:00.000Z", - name = "myABTest", - variants = listOf( - AbTestsVariant( - index = "AB_TEST_1", - trafficPercentage = 30, - ), - AbTestsVariant( - index = "AB_TEST_2", - trafficPercentage = 50, - ), - ), - ), - ) - }, - intercept = { - assertEquals("/2/abtests".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"endAt":"2022-12-31T00:00:00.000Z","name":"myABTest","variants":[{"index":"AB_TEST_1","trafficPercentage":30},{"index":"AB_TEST_2","trafficPercentage":50}]}""", it.body) - }, - ) - } - - // customDelete - - @Test - fun `allow del method for a custom path with minimal parameters`() = runTest { - client.runTest( - call = { - customDelete( - path = "/test/minimal", - ) - }, - intercept = { - assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("DELETE"), it.method) - assertNoBody(it.body) - }, - ) - } - - @Test - fun `allow del method for a custom path with all parameters`() = runTest { - client.runTest( - call = { - customDelete( - path = "/test/all", - parameters = mapOf("query" to "parameters"), - ) - }, - intercept = { - assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("DELETE"), it.method) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - // customGet - - @Test - fun `allow get method for a custom path with minimal parameters`() = runTest { - client.runTest( - call = { - customGet( - path = "/test/minimal", - ) - }, - intercept = { - assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - @Test - fun `allow get method for a custom path with all parameters`() = runTest { - client.runTest( - call = { - customGet( - path = "/test/all", - parameters = mapOf("query" to "parameters"), - ) - }, - intercept = { - assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - // customPost - - @Test - fun `allow post method for a custom path with minimal parameters`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/minimal", - ) - }, - intercept = { - assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{}""", it.body) - }, - ) - } - - @Test - fun `allow post method for a custom path with all parameters`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/all", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "body", - JsonPrimitive("parameters"), - ) - }, - ) - }, - intercept = { - assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertJsonBody("""{"body":"parameters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions can override default query parameters`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("query", "myQueryParameter") - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"myQueryParameter"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions merges query parameters with default ones`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("query2", "myQueryParameter") - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","query2":"myQueryParameter"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions can override default headers`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - headers = buildMap { - put("x-algolia-api-key", "myApiKey") - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"x-algolia-api-key":"myApiKey"}""", it.headers) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions merges headers with default ones`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - headers = buildMap { - put("x-algolia-api-key", "myApiKey") - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"x-algolia-api-key":"myApiKey"}""", it.headers) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions queryParameters accepts booleans`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("isItWorking", true) - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","isItWorking":"true"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions queryParameters accepts integers`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("myParam", 2) - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","myParam":"2"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions queryParameters accepts list of string`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("myParam", listOf("c", "d")) - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","myParam":"c,d"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions queryParameters accepts list of booleans`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("myParam", listOf(true, true, false)) - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","myParam":"true,true,false"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions queryParameters accepts list of integers`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("myParam", listOf(1, 2)) - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","myParam":"1,2"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - // customPut - - @Test - fun `allow put method for a custom path with minimal parameters`() = runTest { - client.runTest( - call = { - customPut( - path = "/test/minimal", - ) - }, - intercept = { - assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("PUT"), it.method) - assertJsonBody("""{}""", it.body) - }, - ) - } - - @Test - fun `allow put method for a custom path with all parameters`() = runTest { - client.runTest( - call = { - customPut( - path = "/test/all", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "body", - JsonPrimitive("parameters"), - ) - }, - ) - }, - intercept = { - assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("PUT"), it.method) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertJsonBody("""{"body":"parameters"}""", it.body) - }, - ) - } - - // deleteABTest - - @Test - fun `deleteABTest`() = runTest { - client.runTest( - call = { - deleteABTest( - id = 42, - ) - }, - intercept = { - assertEquals("/2/abtests/42".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("DELETE"), it.method) - assertNoBody(it.body) - }, - ) - } - - // getABTest - - @Test - fun `getABTest`() = runTest { - client.runTest( - call = { - getABTest( - id = 42, - ) - }, - intercept = { - assertEquals("/2/abtests/42".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - // listABTests - - @Test - fun `listABTests with minimal parameters`() = runTest { - client.runTest( - call = { - listABTests() - }, - intercept = { - assertEquals("/2/abtests".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - @Test - fun `listABTests with parameters`() = runTest { - client.runTest( - call = { - listABTests( - offset = 42, - limit = 21, - indexPrefix = "foo", - indexSuffix = "bar", - ) - }, - intercept = { - assertEquals("/2/abtests".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"offset":"42","limit":"21","indexPrefix":"foo","indexSuffix":"bar"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - // stopABTest - - @Test - fun `stopABTest`() = runTest { - client.runTest( - call = { - stopABTest( - id = 42, - ) - }, - intercept = { - assertEquals("/2/abtests/42/stop".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertEmptyBody(it.body) - }, - ) - } -} diff --git a/tests/output/kotlin/src/commonTest/kotlin/com/algolia/methods/requests/AnalyticsTest.kt b/tests/output/kotlin/src/commonTest/kotlin/com/algolia/methods/requests/AnalyticsTest.kt deleted file mode 100644 index fe7dfba4dd..0000000000 --- a/tests/output/kotlin/src/commonTest/kotlin/com/algolia/methods/requests/AnalyticsTest.kt +++ /dev/null @@ -1,1150 +0,0 @@ -package com.algolia.methods.requests - -import com.algolia.client.api.AnalyticsClient -import com.algolia.client.configuration.* -import com.algolia.client.model.analytics.* -import com.algolia.client.transport.* -import com.algolia.utils.* -import io.ktor.http.* -import kotlinx.coroutines.test.* -import kotlinx.serialization.json.* -import kotlin.test.* - -class AnalyticsTest { - - val client = AnalyticsClient( - appId = "appId", - apiKey = "apiKey", - region = "us", - ) - - // customDelete - - @Test - fun `allow del method for a custom path with minimal parameters`() = runTest { - client.runTest( - call = { - customDelete( - path = "/test/minimal", - ) - }, - intercept = { - assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("DELETE"), it.method) - assertNoBody(it.body) - }, - ) - } - - @Test - fun `allow del method for a custom path with all parameters`() = runTest { - client.runTest( - call = { - customDelete( - path = "/test/all", - parameters = mapOf("query" to "parameters"), - ) - }, - intercept = { - assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("DELETE"), it.method) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - // customGet - - @Test - fun `allow get method for a custom path with minimal parameters`() = runTest { - client.runTest( - call = { - customGet( - path = "/test/minimal", - ) - }, - intercept = { - assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - @Test - fun `allow get method for a custom path with all parameters`() = runTest { - client.runTest( - call = { - customGet( - path = "/test/all", - parameters = mapOf("query" to "parameters"), - ) - }, - intercept = { - assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - // customPost - - @Test - fun `allow post method for a custom path with minimal parameters`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/minimal", - ) - }, - intercept = { - assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{}""", it.body) - }, - ) - } - - @Test - fun `allow post method for a custom path with all parameters`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/all", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "body", - JsonPrimitive("parameters"), - ) - }, - ) - }, - intercept = { - assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertJsonBody("""{"body":"parameters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions can override default query parameters`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("query", "myQueryParameter") - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"myQueryParameter"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions merges query parameters with default ones`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("query2", "myQueryParameter") - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","query2":"myQueryParameter"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions can override default headers`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - headers = buildMap { - put("x-algolia-api-key", "myApiKey") - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"x-algolia-api-key":"myApiKey"}""", it.headers) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions merges headers with default ones`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - headers = buildMap { - put("x-algolia-api-key", "myApiKey") - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"x-algolia-api-key":"myApiKey"}""", it.headers) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions queryParameters accepts booleans`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("isItWorking", true) - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","isItWorking":"true"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions queryParameters accepts integers`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("myParam", 2) - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","myParam":"2"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions queryParameters accepts list of string`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("myParam", listOf("c", "d")) - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","myParam":"c,d"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions queryParameters accepts list of booleans`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("myParam", listOf(true, true, false)) - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","myParam":"true,true,false"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions queryParameters accepts list of integers`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("myParam", listOf(1, 2)) - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","myParam":"1,2"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - // customPut - - @Test - fun `allow put method for a custom path with minimal parameters`() = runTest { - client.runTest( - call = { - customPut( - path = "/test/minimal", - ) - }, - intercept = { - assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("PUT"), it.method) - assertJsonBody("""{}""", it.body) - }, - ) - } - - @Test - fun `allow put method for a custom path with all parameters`() = runTest { - client.runTest( - call = { - customPut( - path = "/test/all", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "body", - JsonPrimitive("parameters"), - ) - }, - ) - }, - intercept = { - assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("PUT"), it.method) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertJsonBody("""{"body":"parameters"}""", it.body) - }, - ) - } - - // getAverageClickPosition - - @Test - fun `get getAverageClickPosition with minimal parameters`() = runTest { - client.runTest( - call = { - getAverageClickPosition( - index = "index", - ) - }, - intercept = { - assertEquals("/2/clicks/averageClickPosition".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"index":"index"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - @Test - fun `get getAverageClickPosition with all parameters`() = runTest { - client.runTest( - call = { - getAverageClickPosition( - index = "index", - startDate = "1999-09-19", - endDate = "2001-01-01", - tags = "tag", - ) - }, - intercept = { - assertEquals("/2/clicks/averageClickPosition".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - // getClickPositions - - @Test - fun `get getClickPositions with minimal parameters`() = runTest { - client.runTest( - call = { - getClickPositions( - index = "index", - ) - }, - intercept = { - assertEquals("/2/clicks/positions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"index":"index"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - @Test - fun `get getClickPositions with all parameters`() = runTest { - client.runTest( - call = { - getClickPositions( - index = "index", - startDate = "1999-09-19", - endDate = "2001-01-01", - tags = "tag", - ) - }, - intercept = { - assertEquals("/2/clicks/positions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - // getClickThroughRate - - @Test - fun `get getClickThroughRate with minimal parameters`() = runTest { - client.runTest( - call = { - getClickThroughRate( - index = "index", - ) - }, - intercept = { - assertEquals("/2/clicks/clickThroughRate".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"index":"index"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - @Test - fun `get getClickThroughRate with all parameters`() = runTest { - client.runTest( - call = { - getClickThroughRate( - index = "index", - startDate = "1999-09-19", - endDate = "2001-01-01", - tags = "tag", - ) - }, - intercept = { - assertEquals("/2/clicks/clickThroughRate".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - // getConversationRate - - @Test - fun `get getConversationRate with minimal parameters`() = runTest { - client.runTest( - call = { - getConversationRate( - index = "index", - ) - }, - intercept = { - assertEquals("/2/conversions/conversionRate".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"index":"index"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - @Test - fun `get getConversationRate with all parameters`() = runTest { - client.runTest( - call = { - getConversationRate( - index = "index", - startDate = "1999-09-19", - endDate = "2001-01-01", - tags = "tag", - ) - }, - intercept = { - assertEquals("/2/conversions/conversionRate".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - // getNoClickRate - - @Test - fun `get getNoClickRate with minimal parameters`() = runTest { - client.runTest( - call = { - getNoClickRate( - index = "index", - ) - }, - intercept = { - assertEquals("/2/searches/noClickRate".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"index":"index"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - @Test - fun `get getNoClickRate with all parameters`() = runTest { - client.runTest( - call = { - getNoClickRate( - index = "index", - startDate = "1999-09-19", - endDate = "2001-01-01", - tags = "tag", - ) - }, - intercept = { - assertEquals("/2/searches/noClickRate".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - // getNoResultsRate - - @Test - fun `get getNoResultsRate with minimal parameters`() = runTest { - client.runTest( - call = { - getNoResultsRate( - index = "index", - ) - }, - intercept = { - assertEquals("/2/searches/noResultRate".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"index":"index"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - @Test - fun `get getNoResultsRate with all parameters`() = runTest { - client.runTest( - call = { - getNoResultsRate( - index = "index", - startDate = "1999-09-19", - endDate = "2001-01-01", - tags = "tag", - ) - }, - intercept = { - assertEquals("/2/searches/noResultRate".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - // getSearchesCount - - @Test - fun `get getSearchesCount with minimal parameters`() = runTest { - client.runTest( - call = { - getSearchesCount( - index = "index", - ) - }, - intercept = { - assertEquals("/2/searches/count".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"index":"index"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - @Test - fun `get getSearchesCount with all parameters`() = runTest { - client.runTest( - call = { - getSearchesCount( - index = "index", - startDate = "1999-09-19", - endDate = "2001-01-01", - tags = "tag", - ) - }, - intercept = { - assertEquals("/2/searches/count".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - // getSearchesNoClicks - - @Test - fun `get getSearchesNoClicks with minimal parameters`() = runTest { - client.runTest( - call = { - getSearchesNoClicks( - index = "index", - ) - }, - intercept = { - assertEquals("/2/searches/noClicks".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"index":"index"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - @Test - fun `get getSearchesNoClicks with all parameters`() = runTest { - client.runTest( - call = { - getSearchesNoClicks( - index = "index", - startDate = "1999-09-19", - endDate = "2001-01-01", - limit = 21, - offset = 42, - tags = "tag", - ) - }, - intercept = { - assertEquals("/2/searches/noClicks".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - // getSearchesNoResults - - @Test - fun `get getSearchesNoResults with minimal parameters`() = runTest { - client.runTest( - call = { - getSearchesNoResults( - index = "index", - ) - }, - intercept = { - assertEquals("/2/searches/noResults".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"index":"index"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - @Test - fun `get getSearchesNoResults with all parameters`() = runTest { - client.runTest( - call = { - getSearchesNoResults( - index = "index", - startDate = "1999-09-19", - endDate = "2001-01-01", - limit = 21, - offset = 42, - tags = "tag", - ) - }, - intercept = { - assertEquals("/2/searches/noResults".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - // getStatus - - @Test - fun `get getStatus with minimal parameters`() = runTest { - client.runTest( - call = { - getStatus( - index = "index", - ) - }, - intercept = { - assertEquals("/2/status".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"index":"index"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - // getTopCountries - - @Test - fun `get getTopCountries with minimal parameters`() = runTest { - client.runTest( - call = { - getTopCountries( - index = "index", - ) - }, - intercept = { - assertEquals("/2/countries".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"index":"index"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - @Test - fun `get getTopCountries with all parameters`() = runTest { - client.runTest( - call = { - getTopCountries( - index = "index", - startDate = "1999-09-19", - endDate = "2001-01-01", - limit = 21, - offset = 42, - tags = "tag", - ) - }, - intercept = { - assertEquals("/2/countries".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - // getTopFilterAttributes - - @Test - fun `get getTopFilterAttributes with minimal parameters`() = runTest { - client.runTest( - call = { - getTopFilterAttributes( - index = "index", - ) - }, - intercept = { - assertEquals("/2/filters".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"index":"index"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - @Test - fun `get getTopFilterAttributes with all parameters`() = runTest { - client.runTest( - call = { - getTopFilterAttributes( - index = "index", - search = "mySearch", - startDate = "1999-09-19", - endDate = "2001-01-01", - limit = 21, - offset = 42, - tags = "tag", - ) - }, - intercept = { - assertEquals("/2/filters".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"index":"index","search":"mySearch","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - // getTopFilterForAttribute - - @Test - fun `get getTopFilterForAttribute with minimal parameters`() = runTest { - client.runTest( - call = { - getTopFilterForAttribute( - attribute = "myAttribute", - index = "index", - ) - }, - intercept = { - assertEquals("/2/filters/myAttribute".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"index":"index"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - @Test - fun `get getTopFilterForAttribute with minimal parameters and multiple attributes`() = runTest { - client.runTest( - call = { - getTopFilterForAttribute( - attribute = "myAttribute1,myAttribute2", - index = "index", - ) - }, - intercept = { - assertEquals("/2/filters/myAttribute1%2CmyAttribute2".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"index":"index"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - @Test - fun `get getTopFilterForAttribute with all parameters`() = runTest { - client.runTest( - call = { - getTopFilterForAttribute( - attribute = "myAttribute", - index = "index", - search = "mySearch", - startDate = "1999-09-19", - endDate = "2001-01-01", - limit = 21, - offset = 42, - tags = "tag", - ) - }, - intercept = { - assertEquals("/2/filters/myAttribute".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"index":"index","search":"mySearch","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - @Test - fun `get getTopFilterForAttribute with all parameters and multiple attributes`() = runTest { - client.runTest( - call = { - getTopFilterForAttribute( - attribute = "myAttribute1,myAttribute2", - index = "index", - search = "mySearch", - startDate = "1999-09-19", - endDate = "2001-01-01", - limit = 21, - offset = 42, - tags = "tag", - ) - }, - intercept = { - assertEquals("/2/filters/myAttribute1%2CmyAttribute2".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"index":"index","search":"mySearch","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - // getTopFiltersNoResults - - @Test - fun `get getTopFiltersNoResults with minimal parameters`() = runTest { - client.runTest( - call = { - getTopFiltersNoResults( - index = "index", - ) - }, - intercept = { - assertEquals("/2/filters/noResults".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"index":"index"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - @Test - fun `get getTopFiltersNoResults with all parameters`() = runTest { - client.runTest( - call = { - getTopFiltersNoResults( - index = "index", - search = "mySearch", - startDate = "1999-09-19", - endDate = "2001-01-01", - limit = 21, - offset = 42, - tags = "tag", - ) - }, - intercept = { - assertEquals("/2/filters/noResults".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"index":"index","search":"mySearch","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - // getTopHits - - @Test - fun `get getTopHits with minimal parameters`() = runTest { - client.runTest( - call = { - getTopHits( - index = "index", - ) - }, - intercept = { - assertEquals("/2/hits".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"index":"index"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - @Test - fun `get getTopHits with all parameters`() = runTest { - client.runTest( - call = { - getTopHits( - index = "index", - search = "mySearch", - clickAnalytics = true, - startDate = "1999-09-19", - endDate = "2001-01-01", - limit = 21, - offset = 42, - tags = "tag", - ) - }, - intercept = { - assertEquals("/2/hits".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"index":"index","search":"mySearch","clickAnalytics":"true","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - // getTopSearches - - @Test - fun `get getTopSearches with minimal parameters`() = runTest { - client.runTest( - call = { - getTopSearches( - index = "index", - ) - }, - intercept = { - assertEquals("/2/searches".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"index":"index"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - @Test - fun `get getTopSearches with all parameters`() = runTest { - client.runTest( - call = { - getTopSearches( - index = "index", - clickAnalytics = true, - startDate = "1999-09-19", - endDate = "2001-01-01", - orderBy = OrderBy.entries.first { it.value == "searchCount" }, - direction = Direction.entries.first { it.value == "asc" }, - limit = 21, - offset = 42, - tags = "tag", - ) - }, - intercept = { - assertEquals("/2/searches".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"index":"index","clickAnalytics":"true","startDate":"1999-09-19","endDate":"2001-01-01","orderBy":"searchCount","direction":"asc","limit":"21","offset":"42","tags":"tag"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - // getUsersCount - - @Test - fun `get getUsersCount with minimal parameters`() = runTest { - client.runTest( - call = { - getUsersCount( - index = "index", - ) - }, - intercept = { - assertEquals("/2/users/count".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"index":"index"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - @Test - fun `get getUsersCount with all parameters`() = runTest { - client.runTest( - call = { - getUsersCount( - index = "index", - startDate = "1999-09-19", - endDate = "2001-01-01", - tags = "tag", - ) - }, - intercept = { - assertEquals("/2/users/count".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } -} diff --git a/tests/output/kotlin/src/commonTest/kotlin/com/algolia/methods/requests/IngestionTest.kt b/tests/output/kotlin/src/commonTest/kotlin/com/algolia/methods/requests/IngestionTest.kt deleted file mode 100644 index cab34de8d4..0000000000 --- a/tests/output/kotlin/src/commonTest/kotlin/com/algolia/methods/requests/IngestionTest.kt +++ /dev/null @@ -1,1146 +0,0 @@ -package com.algolia.methods.requests - -import com.algolia.client.api.IngestionClient -import com.algolia.client.configuration.* -import com.algolia.client.model.ingestion.* -import com.algolia.client.transport.* -import com.algolia.utils.* -import io.ktor.http.* -import kotlinx.coroutines.test.* -import kotlinx.serialization.json.* -import kotlin.test.* - -class IngestionTest { - - val client = IngestionClient( - appId = "appId", - apiKey = "apiKey", - region = "us", - ) - - // createAuthentication - - @Test - fun `createAuthenticationOAuth`() = runTest { - client.runTest( - call = { - createAuthentication( - authenticationCreate = AuthenticationCreate( - type = AuthenticationType.entries.first { it.value == "oauth" }, - name = "authName", - input = AuthOAuth( - url = "http://test.oauth", - clientId = "myID", - clientSecret = "mySecret", - ), - ), - ) - }, - intercept = { - assertEquals("/1/authentications".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"type":"oauth","name":"authName","input":{"url":"http://test.oauth","client_id":"myID","client_secret":"mySecret"}}""", it.body) - }, - ) - } - - @Test - fun `createAuthenticationAlgolia`() = runTest { - client.runTest( - call = { - createAuthentication( - authenticationCreate = AuthenticationCreate( - type = AuthenticationType.entries.first { it.value == "algolia" }, - name = "authName", - input = AuthAlgolia( - appID = "myappID", - apiKey = "randomApiKey", - ), - ), - ) - }, - intercept = { - assertEquals("/1/authentications".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"type":"algolia","name":"authName","input":{"appID":"myappID","apiKey":"randomApiKey"}}""", it.body) - }, - ) - } - - // createDestination - - @Test - fun `createDestination`() = runTest { - client.runTest( - call = { - createDestination( - destinationCreate = DestinationCreate( - type = DestinationType.entries.first { it.value == "search" }, - name = "destinationName", - input = DestinationIndexPrefix( - indexPrefix = "prefix_", - ), - authenticationID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", - ), - ) - }, - intercept = { - assertEquals("/1/destinations".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"type":"search","name":"destinationName","input":{"indexPrefix":"prefix_"},"authenticationID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}""", it.body) - }, - ) - } - - // createSource - - @Test - fun `createSource`() = runTest { - client.runTest( - call = { - createSource( - sourceCreate = SourceCreate( - type = SourceType.entries.first { it.value == "commercetools" }, - name = "sourceName", - input = SourceCommercetools( - storeKeys = listOf("myStore"), - locales = listOf("de"), - url = "http://commercetools.com", - projectKey = "keyID", - ), - authenticationID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", - ), - ) - }, - intercept = { - assertEquals("/1/sources".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"type":"commercetools","name":"sourceName","input":{"storeKeys":["myStore"],"locales":["de"],"url":"http://commercetools.com","projectKey":"keyID"},"authenticationID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}""", it.body) - }, - ) - } - - // createTask - - @Test - fun `createTaskOnDemand`() = runTest { - client.runTest( - call = { - createTask( - taskCreate = TaskCreate( - sourceID = "search", - destinationID = "destinationName", - trigger = OnDemandTriggerInput( - type = OnDemandTriggerType.entries.first { it.value == "onDemand" }, - ), - action = ActionType.entries.first { it.value == "replace" }, - ), - ) - }, - intercept = { - assertEquals("/1/tasks".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"sourceID":"search","destinationID":"destinationName","trigger":{"type":"onDemand"},"action":"replace"}""", it.body) - }, - ) - } - - @Test - fun `createTaskSchedule`() = runTest { - client.runTest( - call = { - createTask( - taskCreate = TaskCreate( - sourceID = "search", - destinationID = "destinationName", - trigger = ScheduleTriggerInput( - type = ScheduleTriggerType.entries.first { it.value == "schedule" }, - cron = "* * * * *", - ), - action = ActionType.entries.first { it.value == "replace" }, - ), - ) - }, - intercept = { - assertEquals("/1/tasks".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"sourceID":"search","destinationID":"destinationName","trigger":{"type":"schedule","cron":"* * * * *"},"action":"replace"}""", it.body) - }, - ) - } - - @Test - fun `createTaskSubscription`() = runTest { - client.runTest( - call = { - createTask( - taskCreate = TaskCreate( - sourceID = "search", - destinationID = "destinationName", - trigger = OnDemandTriggerInput( - type = OnDemandTriggerType.entries.first { it.value == "onDemand" }, - ), - action = ActionType.entries.first { it.value == "replace" }, - ), - ) - }, - intercept = { - assertEquals("/1/tasks".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"sourceID":"search","destinationID":"destinationName","trigger":{"type":"onDemand"},"action":"replace"}""", it.body) - }, - ) - } - - // customDelete - - @Test - fun `allow del method for a custom path with minimal parameters`() = runTest { - client.runTest( - call = { - customDelete( - path = "/test/minimal", - ) - }, - intercept = { - assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("DELETE"), it.method) - assertNoBody(it.body) - }, - ) - } - - @Test - fun `allow del method for a custom path with all parameters`() = runTest { - client.runTest( - call = { - customDelete( - path = "/test/all", - parameters = mapOf("query" to "parameters"), - ) - }, - intercept = { - assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("DELETE"), it.method) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - // customGet - - @Test - fun `allow get method for a custom path with minimal parameters`() = runTest { - client.runTest( - call = { - customGet( - path = "/test/minimal", - ) - }, - intercept = { - assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - @Test - fun `allow get method for a custom path with all parameters`() = runTest { - client.runTest( - call = { - customGet( - path = "/test/all", - parameters = mapOf("query" to "parameters"), - ) - }, - intercept = { - assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - // customPost - - @Test - fun `allow post method for a custom path with minimal parameters`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/minimal", - ) - }, - intercept = { - assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{}""", it.body) - }, - ) - } - - @Test - fun `allow post method for a custom path with all parameters`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/all", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "body", - JsonPrimitive("parameters"), - ) - }, - ) - }, - intercept = { - assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertJsonBody("""{"body":"parameters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions can override default query parameters`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("query", "myQueryParameter") - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"myQueryParameter"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions merges query parameters with default ones`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("query2", "myQueryParameter") - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","query2":"myQueryParameter"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions can override default headers`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - headers = buildMap { - put("x-algolia-api-key", "myApiKey") - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"x-algolia-api-key":"myApiKey"}""", it.headers) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions merges headers with default ones`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - headers = buildMap { - put("x-algolia-api-key", "myApiKey") - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"x-algolia-api-key":"myApiKey"}""", it.headers) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions queryParameters accepts booleans`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("isItWorking", true) - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","isItWorking":"true"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions queryParameters accepts integers`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("myParam", 2) - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","myParam":"2"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions queryParameters accepts list of string`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("myParam", listOf("c", "d")) - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","myParam":"c,d"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions queryParameters accepts list of booleans`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("myParam", listOf(true, true, false)) - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","myParam":"true,true,false"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions queryParameters accepts list of integers`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("myParam", listOf(1, 2)) - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","myParam":"1,2"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - // customPut - - @Test - fun `allow put method for a custom path with minimal parameters`() = runTest { - client.runTest( - call = { - customPut( - path = "/test/minimal", - ) - }, - intercept = { - assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("PUT"), it.method) - assertJsonBody("""{}""", it.body) - }, - ) - } - - @Test - fun `allow put method for a custom path with all parameters`() = runTest { - client.runTest( - call = { - customPut( - path = "/test/all", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "body", - JsonPrimitive("parameters"), - ) - }, - ) - }, - intercept = { - assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("PUT"), it.method) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertJsonBody("""{"body":"parameters"}""", it.body) - }, - ) - } - - // deleteAuthentication - - @Test - fun `deleteAuthentication`() = runTest { - client.runTest( - call = { - deleteAuthentication( - authenticationID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", - ) - }, - intercept = { - assertEquals("/1/authentications/6c02aeb1-775e-418e-870b-1faccd4b2c0f".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("DELETE"), it.method) - assertNoBody(it.body) - }, - ) - } - - // deleteDestination - - @Test - fun `deleteDestination`() = runTest { - client.runTest( - call = { - deleteDestination( - destinationID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", - ) - }, - intercept = { - assertEquals("/1/destinations/6c02aeb1-775e-418e-870b-1faccd4b2c0f".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("DELETE"), it.method) - assertNoBody(it.body) - }, - ) - } - - // deleteSource - - @Test - fun `deleteSource`() = runTest { - client.runTest( - call = { - deleteSource( - sourceID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", - ) - }, - intercept = { - assertEquals("/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("DELETE"), it.method) - assertNoBody(it.body) - }, - ) - } - - // deleteTask - - @Test - fun `deleteTask`() = runTest { - client.runTest( - call = { - deleteTask( - taskID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", - ) - }, - intercept = { - assertEquals("/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("DELETE"), it.method) - assertNoBody(it.body) - }, - ) - } - - // disableTask - - @Test - fun `disableTask`() = runTest { - client.runTest( - call = { - disableTask( - taskID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", - ) - }, - intercept = { - assertEquals("/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f/disable".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("PUT"), it.method) - assertEmptyBody(it.body) - }, - ) - } - - // enableTask - - @Test - fun `enableTask`() = runTest { - client.runTest( - call = { - enableTask( - taskID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", - ) - }, - intercept = { - assertEquals("/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f/enable".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("PUT"), it.method) - assertEmptyBody(it.body) - }, - ) - } - - // getAuthentication - - @Test - fun `getAuthentication`() = runTest { - client.runTest( - call = { - getAuthentication( - authenticationID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", - ) - }, - intercept = { - assertEquals("/1/authentications/6c02aeb1-775e-418e-870b-1faccd4b2c0f".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - // getAuthentications - - @Test - fun `getAuthentications`() = runTest { - client.runTest( - call = { - getAuthentications() - }, - intercept = { - assertEquals("/1/authentications".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - // getDestination - - @Test - fun `getDestination`() = runTest { - client.runTest( - call = { - getDestination( - destinationID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", - ) - }, - intercept = { - assertEquals("/1/destinations/6c02aeb1-775e-418e-870b-1faccd4b2c0f".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - // getDestinations - - @Test - fun `getDestinations`() = runTest { - client.runTest( - call = { - getDestinations() - }, - intercept = { - assertEquals("/1/destinations".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - // getDockerSourceStreams - - @Test - fun `getDockerSourceStreams`() = runTest { - client.runTest( - call = { - getDockerSourceStreams( - sourceID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", - ) - }, - intercept = { - assertEquals("/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f/discover".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - // getEvent - - @Test - fun `getEvent`() = runTest { - client.runTest( - call = { - getEvent( - runID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", - eventID = "6c02aeb1-775e-418e-870b-1faccd4b2c0c", - ) - }, - intercept = { - assertEquals("/1/runs/6c02aeb1-775e-418e-870b-1faccd4b2c0f/events/6c02aeb1-775e-418e-870b-1faccd4b2c0c".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - // getEvents - - @Test - fun `getEvents`() = runTest { - client.runTest( - call = { - getEvents( - runID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", - ) - }, - intercept = { - assertEquals("/1/runs/6c02aeb1-775e-418e-870b-1faccd4b2c0f/events".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - // getRun - - @Test - fun `getRun`() = runTest { - client.runTest( - call = { - getRun( - runID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", - ) - }, - intercept = { - assertEquals("/1/runs/6c02aeb1-775e-418e-870b-1faccd4b2c0f".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - // getRuns - - @Test - fun `getRuns`() = runTest { - client.runTest( - call = { - getRuns() - }, - intercept = { - assertEquals("/1/runs".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - // getSource - - @Test - fun `getSource`() = runTest { - client.runTest( - call = { - getSource( - sourceID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", - ) - }, - intercept = { - assertEquals("/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - // getSources - - @Test - fun `getSources`() = runTest { - client.runTest( - call = { - getSources() - }, - intercept = { - assertEquals("/1/sources".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - // getTask - - @Test - fun `getTask`() = runTest { - client.runTest( - call = { - getTask( - taskID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", - ) - }, - intercept = { - assertEquals("/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - // getTasks - - @Test - fun `getTasks`() = runTest { - client.runTest( - call = { - getTasks() - }, - intercept = { - assertEquals("/1/tasks".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - // runTask - - @Test - fun `runTask`() = runTest { - client.runTest( - call = { - runTask( - taskID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", - ) - }, - intercept = { - assertEquals("/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f/run".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertEmptyBody(it.body) - }, - ) - } - - // searchAuthentications - - @Test - fun `searchAuthentications`() = runTest { - client.runTest( - call = { - searchAuthentications( - authenticationSearch = AuthenticationSearch( - authenticationIDs = listOf("6c02aeb1-775e-418e-870b-1faccd4b2c0f", "947ac9c4-7e58-4c87-b1e7-14a68e99699a"), - ), - ) - }, - intercept = { - assertEquals("/1/authentications/search".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"authenticationIDs":["6c02aeb1-775e-418e-870b-1faccd4b2c0f","947ac9c4-7e58-4c87-b1e7-14a68e99699a"]}""", it.body) - }, - ) - } - - // searchDestinations - - @Test - fun `searchDestinations`() = runTest { - client.runTest( - call = { - searchDestinations( - destinationSearch = DestinationSearch( - destinationIDs = listOf("6c02aeb1-775e-418e-870b-1faccd4b2c0f", "947ac9c4-7e58-4c87-b1e7-14a68e99699a"), - ), - ) - }, - intercept = { - assertEquals("/1/destinations/search".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"destinationIDs":["6c02aeb1-775e-418e-870b-1faccd4b2c0f","947ac9c4-7e58-4c87-b1e7-14a68e99699a"]}""", it.body) - }, - ) - } - - // searchSources - - @Test - fun `searchSources`() = runTest { - client.runTest( - call = { - searchSources( - sourceSearch = SourceSearch( - sourceIDs = listOf("6c02aeb1-775e-418e-870b-1faccd4b2c0f", "947ac9c4-7e58-4c87-b1e7-14a68e99699a"), - ), - ) - }, - intercept = { - assertEquals("/1/sources/search".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"sourceIDs":["6c02aeb1-775e-418e-870b-1faccd4b2c0f","947ac9c4-7e58-4c87-b1e7-14a68e99699a"]}""", it.body) - }, - ) - } - - // searchTasks - - @Test - fun `searchTasks`() = runTest { - client.runTest( - call = { - searchTasks( - taskSearch = TaskSearch( - taskIDs = listOf("6c02aeb1-775e-418e-870b-1faccd4b2c0f", "947ac9c4-7e58-4c87-b1e7-14a68e99699a"), - ), - ) - }, - intercept = { - assertEquals("/1/tasks/search".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"taskIDs":["6c02aeb1-775e-418e-870b-1faccd4b2c0f","947ac9c4-7e58-4c87-b1e7-14a68e99699a"]}""", it.body) - }, - ) - } - - // triggerDockerSourceDiscover - - @Test - fun `triggerDockerSourceDiscover`() = runTest { - client.runTest( - call = { - triggerDockerSourceDiscover( - sourceID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", - ) - }, - intercept = { - assertEquals("/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f/discover".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertEmptyBody(it.body) - }, - ) - } - - // updateAuthentication - - @Test - fun `updateAuthentication`() = runTest { - client.runTest( - call = { - updateAuthentication( - authenticationID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", - authenticationUpdate = AuthenticationUpdate( - name = "newName", - ), - ) - }, - intercept = { - assertEquals("/1/authentications/6c02aeb1-775e-418e-870b-1faccd4b2c0f".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("PATCH"), it.method) - assertJsonBody("""{"name":"newName"}""", it.body) - }, - ) - } - - // updateDestination - - @Test - fun `updateDestination`() = runTest { - client.runTest( - call = { - updateDestination( - destinationID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", - destinationUpdate = DestinationUpdate( - name = "newName", - ), - ) - }, - intercept = { - assertEquals("/1/destinations/6c02aeb1-775e-418e-870b-1faccd4b2c0f".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("PATCH"), it.method) - assertJsonBody("""{"name":"newName"}""", it.body) - }, - ) - } - - // updateSource - - @Test - fun `updateSource`() = runTest { - client.runTest( - call = { - updateSource( - sourceID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", - sourceUpdate = SourceUpdate( - name = "newName", - ), - ) - }, - intercept = { - assertEquals("/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("PATCH"), it.method) - assertJsonBody("""{"name":"newName"}""", it.body) - }, - ) - } - - // updateTask - - @Test - fun `updateTask`() = runTest { - client.runTest( - call = { - updateTask( - taskID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", - taskUpdate = TaskUpdate( - enabled = false, - ), - ) - }, - intercept = { - assertEquals("/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("PATCH"), it.method) - assertJsonBody("""{"enabled":false}""", it.body) - }, - ) - } -} diff --git a/tests/output/kotlin/src/commonTest/kotlin/com/algolia/methods/requests/InsightsTest.kt b/tests/output/kotlin/src/commonTest/kotlin/com/algolia/methods/requests/InsightsTest.kt deleted file mode 100644 index dd3d850627..0000000000 --- a/tests/output/kotlin/src/commonTest/kotlin/com/algolia/methods/requests/InsightsTest.kt +++ /dev/null @@ -1,609 +0,0 @@ -package com.algolia.methods.requests - -import com.algolia.client.api.InsightsClient -import com.algolia.client.configuration.* -import com.algolia.client.model.insights.* -import com.algolia.client.transport.* -import com.algolia.utils.* -import io.ktor.http.* -import kotlinx.coroutines.test.* -import kotlinx.serialization.json.* -import kotlin.test.* - -class InsightsTest { - - val client = InsightsClient( - appId = "appId", - apiKey = "apiKey", - region = "us", - ) - - // customDelete - - @Test - fun `allow del method for a custom path with minimal parameters`() = runTest { - client.runTest( - call = { - customDelete( - path = "/test/minimal", - ) - }, - intercept = { - assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("DELETE"), it.method) - assertNoBody(it.body) - }, - ) - } - - @Test - fun `allow del method for a custom path with all parameters`() = runTest { - client.runTest( - call = { - customDelete( - path = "/test/all", - parameters = mapOf("query" to "parameters"), - ) - }, - intercept = { - assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("DELETE"), it.method) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - // customGet - - @Test - fun `allow get method for a custom path with minimal parameters`() = runTest { - client.runTest( - call = { - customGet( - path = "/test/minimal", - ) - }, - intercept = { - assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - @Test - fun `allow get method for a custom path with all parameters`() = runTest { - client.runTest( - call = { - customGet( - path = "/test/all", - parameters = mapOf("query" to "parameters"), - ) - }, - intercept = { - assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - // customPost - - @Test - fun `allow post method for a custom path with minimal parameters`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/minimal", - ) - }, - intercept = { - assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{}""", it.body) - }, - ) - } - - @Test - fun `allow post method for a custom path with all parameters`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/all", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "body", - JsonPrimitive("parameters"), - ) - }, - ) - }, - intercept = { - assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertJsonBody("""{"body":"parameters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions can override default query parameters`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("query", "myQueryParameter") - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"myQueryParameter"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions merges query parameters with default ones`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("query2", "myQueryParameter") - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","query2":"myQueryParameter"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions can override default headers`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - headers = buildMap { - put("x-algolia-api-key", "myApiKey") - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"x-algolia-api-key":"myApiKey"}""", it.headers) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions merges headers with default ones`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - headers = buildMap { - put("x-algolia-api-key", "myApiKey") - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"x-algolia-api-key":"myApiKey"}""", it.headers) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions queryParameters accepts booleans`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("isItWorking", true) - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","isItWorking":"true"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions queryParameters accepts integers`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("myParam", 2) - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","myParam":"2"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions queryParameters accepts list of string`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("myParam", listOf("c", "d")) - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","myParam":"c,d"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions queryParameters accepts list of booleans`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("myParam", listOf(true, true, false)) - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","myParam":"true,true,false"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions queryParameters accepts list of integers`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("myParam", listOf(1, 2)) - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","myParam":"1,2"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - // customPut - - @Test - fun `allow put method for a custom path with minimal parameters`() = runTest { - client.runTest( - call = { - customPut( - path = "/test/minimal", - ) - }, - intercept = { - assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("PUT"), it.method) - assertJsonBody("""{}""", it.body) - }, - ) - } - - @Test - fun `allow put method for a custom path with all parameters`() = runTest { - client.runTest( - call = { - customPut( - path = "/test/all", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "body", - JsonPrimitive("parameters"), - ) - }, - ) - }, - intercept = { - assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("PUT"), it.method) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertJsonBody("""{"body":"parameters"}""", it.body) - }, - ) - } - - // pushEvents - - @Test - fun `pushEvents0`() = runTest { - client.runTest( - call = { - pushEvents( - insightsEvents = InsightsEvents( - events = listOf( - ClickedObjectIDsAfterSearch( - eventType = ClickEvent.entries.first { it.value == "click" }, - eventName = "Product Clicked", - index = "products", - userToken = "user-123456", - authenticatedUserToken = "user-123456", - timestamp = 1641290601962L, - objectIDs = listOf("9780545139700", "9780439784542"), - queryID = "43b15df305339e827f0ac0bdc5ebcaa7", - positions = listOf(7, 6), - ), - ), - ), - ) - }, - intercept = { - assertEquals("/1/events".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"events":[{"eventType":"click","eventName":"Product Clicked","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"queryID":"43b15df305339e827f0ac0bdc5ebcaa7","positions":[7,6]}]}""", it.body) - }, - ) - } - - @Test - fun `Many events type`() = runTest { - client.runTest( - call = { - pushEvents( - insightsEvents = InsightsEvents( - events = listOf( - ConvertedObjectIDsAfterSearch( - eventType = ConversionEvent.entries.first { it.value == "conversion" }, - eventName = "Product Purchased", - index = "products", - userToken = "user-123456", - authenticatedUserToken = "user-123456", - timestamp = 1641290601962L, - objectIDs = listOf("9780545139700", "9780439784542"), - queryID = "43b15df305339e827f0ac0bdc5ebcaa7", - ), - ViewedObjectIDs( - eventType = ViewEvent.entries.first { it.value == "view" }, - eventName = "Product Detail Page Viewed", - index = "products", - userToken = "user-123456", - authenticatedUserToken = "user-123456", - timestamp = 1641290601962L, - objectIDs = listOf("9780545139700", "9780439784542"), - ), - ), - ), - ) - }, - intercept = { - assertEquals("/1/events".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"events":[{"eventType":"conversion","eventName":"Product Purchased","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"queryID":"43b15df305339e827f0ac0bdc5ebcaa7"},{"eventType":"view","eventName":"Product Detail Page Viewed","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"]}]}""", it.body) - }, - ) - } - - @Test - fun `ConvertedObjectIDsAfterSearch`() = runTest { - client.runTest( - call = { - pushEvents( - insightsEvents = InsightsEvents( - events = listOf( - ConvertedObjectIDsAfterSearch( - eventType = ConversionEvent.entries.first { it.value == "conversion" }, - eventName = "Product Purchased", - index = "products", - userToken = "user-123456", - authenticatedUserToken = "user-123456", - timestamp = 1641290601962L, - objectIDs = listOf("9780545139700", "9780439784542"), - queryID = "43b15df305339e827f0ac0bdc5ebcaa7", - ), - ), - ), - ) - }, - intercept = { - assertEquals("/1/events".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"events":[{"eventType":"conversion","eventName":"Product Purchased","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"queryID":"43b15df305339e827f0ac0bdc5ebcaa7"}]}""", it.body) - }, - ) - } - - @Test - fun `ViewedObjectIDs`() = runTest { - client.runTest( - call = { - pushEvents( - insightsEvents = InsightsEvents( - events = listOf( - ViewedObjectIDs( - eventType = ViewEvent.entries.first { it.value == "view" }, - eventName = "Product Detail Page Viewed", - index = "products", - userToken = "user-123456", - authenticatedUserToken = "user-123456", - timestamp = 1641290601962L, - objectIDs = listOf("9780545139700", "9780439784542"), - ), - ), - ), - ) - }, - intercept = { - assertEquals("/1/events".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"events":[{"eventType":"view","eventName":"Product Detail Page Viewed","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"]}]}""", it.body) - }, - ) - } - - @Test - fun `AddedToCartObjectIDs`() = runTest { - client.runTest( - call = { - pushEvents( - insightsEvents = InsightsEvents( - events = listOf( - AddedToCartObjectIDsAfterSearch( - eventType = ConversionEvent.entries.first { it.value == "conversion" }, - eventSubtype = AddToCartEvent.entries.first { it.value == "addToCart" }, - eventName = "Product Added To Cart", - index = "products", - queryID = "43b15df305339e827f0ac0bdc5ebcaa7", - userToken = "user-123456", - authenticatedUserToken = "user-123456", - timestamp = 1641290601962L, - objectIDs = listOf("9780545139700", "9780439784542"), - objectData = listOf( - ObjectDataAfterSearch( - price = Price.of(19.99), - quantity = 10, - discount = Discount.of(2.5), - ), - ObjectDataAfterSearch( - price = Price.of("8$"), - quantity = 7, - discount = Discount.of("30%"), - ), - ), - currency = "USD", - ), - ), - ), - ) - }, - intercept = { - assertEquals("/1/events".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"events":[{"eventType":"conversion","eventSubtype":"addToCart","eventName":"Product Added To Cart","index":"products","queryID":"43b15df305339e827f0ac0bdc5ebcaa7","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"objectData":[{"price":19.99,"quantity":10,"discount":2.5},{"price":"8$","quantity":7,"discount":"30%"}],"currency":"USD"}]}""", it.body) - }, - ) - } -} diff --git a/tests/output/kotlin/src/commonTest/kotlin/com/algolia/methods/requests/MonitoringTest.kt b/tests/output/kotlin/src/commonTest/kotlin/com/algolia/methods/requests/MonitoringTest.kt deleted file mode 100644 index a423b0c54c..0000000000 --- a/tests/output/kotlin/src/commonTest/kotlin/com/algolia/methods/requests/MonitoringTest.kt +++ /dev/null @@ -1,595 +0,0 @@ -package com.algolia.methods.requests - -import com.algolia.client.api.MonitoringClient -import com.algolia.client.configuration.* -import com.algolia.client.model.monitoring.* -import com.algolia.client.transport.* -import com.algolia.utils.* -import io.ktor.http.* -import kotlinx.coroutines.test.* -import kotlinx.serialization.json.* -import kotlin.test.* - -class MonitoringTest { - - val client = MonitoringClient( - appId = "appId", - apiKey = "apiKey", - ) - - // customDelete - - @Test - fun `allow del method for a custom path with minimal parameters`() = runTest { - client.runTest( - call = { - customDelete( - path = "/test/minimal", - ) - }, - intercept = { - assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("DELETE"), it.method) - assertNoBody(it.body) - }, - ) - } - - @Test - fun `allow del method for a custom path with all parameters`() = runTest { - client.runTest( - call = { - customDelete( - path = "/test/all", - parameters = mapOf("query" to "parameters"), - ) - }, - intercept = { - assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("DELETE"), it.method) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - // customGet - - @Test - fun `allow get method for a custom path with minimal parameters`() = runTest { - client.runTest( - call = { - customGet( - path = "/test/minimal", - ) - }, - intercept = { - assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - @Test - fun `allow get method for a custom path with all parameters`() = runTest { - client.runTest( - call = { - customGet( - path = "/test/all", - parameters = mapOf("query" to "parameters"), - ) - }, - intercept = { - assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - // customPost - - @Test - fun `allow post method for a custom path with minimal parameters`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/minimal", - ) - }, - intercept = { - assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{}""", it.body) - }, - ) - } - - @Test - fun `allow post method for a custom path with all parameters`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/all", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "body", - JsonPrimitive("parameters"), - ) - }, - ) - }, - intercept = { - assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertJsonBody("""{"body":"parameters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions can override default query parameters`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("query", "myQueryParameter") - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"myQueryParameter"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions merges query parameters with default ones`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("query2", "myQueryParameter") - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","query2":"myQueryParameter"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions can override default headers`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - headers = buildMap { - put("x-algolia-api-key", "myApiKey") - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"x-algolia-api-key":"myApiKey"}""", it.headers) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions merges headers with default ones`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - headers = buildMap { - put("x-algolia-api-key", "myApiKey") - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"x-algolia-api-key":"myApiKey"}""", it.headers) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions queryParameters accepts booleans`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("isItWorking", true) - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","isItWorking":"true"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions queryParameters accepts integers`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("myParam", 2) - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","myParam":"2"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions queryParameters accepts list of string`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("myParam", listOf("c", "d")) - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","myParam":"c,d"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions queryParameters accepts list of booleans`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("myParam", listOf(true, true, false)) - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","myParam":"true,true,false"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions queryParameters accepts list of integers`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("myParam", listOf(1, 2)) - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","myParam":"1,2"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - // customPut - - @Test - fun `allow put method for a custom path with minimal parameters`() = runTest { - client.runTest( - call = { - customPut( - path = "/test/minimal", - ) - }, - intercept = { - assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("PUT"), it.method) - assertJsonBody("""{}""", it.body) - }, - ) - } - - @Test - fun `allow put method for a custom path with all parameters`() = runTest { - client.runTest( - call = { - customPut( - path = "/test/all", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "body", - JsonPrimitive("parameters"), - ) - }, - ) - }, - intercept = { - assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("PUT"), it.method) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertJsonBody("""{"body":"parameters"}""", it.body) - }, - ) - } - - // getClusterIncidents - - @Test - fun `getClusterIncidents`() = runTest { - client.runTest( - call = { - getClusterIncidents( - clusters = "c1-de", - ) - }, - intercept = { - assertEquals("/1/incidents/c1-de".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - // getClusterStatus - - @Test - fun `getClusterStatus`() = runTest { - client.runTest( - call = { - getClusterStatus( - clusters = "c1-de", - ) - }, - intercept = { - assertEquals("/1/status/c1-de".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - // getIncidents - - @Test - fun `getIncidents`() = runTest { - client.runTest( - call = { - getIncidents() - }, - intercept = { - assertEquals("/1/incidents".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - // getIndexingTime - - @Test - fun `getIndexingTime`() = runTest { - client.runTest( - call = { - getIndexingTime( - clusters = "c1-de", - ) - }, - intercept = { - assertEquals("/1/indexing/c1-de".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - // getInventory - - @Test - fun `getInventory`() = runTest { - client.runTest( - call = { - getInventory() - }, - intercept = { - assertEquals("/1/inventory/servers".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - // getLatency - - @Test - fun `getLatency`() = runTest { - client.runTest( - call = { - getLatency( - clusters = "c1-de", - ) - }, - intercept = { - assertEquals("/1/latency/c1-de".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - // getMetrics - - @Test - fun `getMetrics`() = runTest { - client.runTest( - call = { - getMetrics( - metric = Metric.entries.first { it.value == "avg_build_time" }, - period = Period.entries.first { it.value == "minute" }, - ) - }, - intercept = { - assertEquals("/1/infrastructure/avg_build_time/period/minute".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - // getReachability - - @Test - fun `getReachability`() = runTest { - client.runTest( - call = { - getReachability( - clusters = "c1-de", - ) - }, - intercept = { - assertEquals("/1/reachability/c1-de/probes".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - // getStatus - - @Test - fun `getStatus`() = runTest { - client.runTest( - call = { - getStatus() - }, - intercept = { - assertEquals("/1/status".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } -} diff --git a/tests/output/kotlin/src/commonTest/kotlin/com/algolia/methods/requests/PersonalizationTest.kt b/tests/output/kotlin/src/commonTest/kotlin/com/algolia/methods/requests/PersonalizationTest.kt deleted file mode 100644 index d4eb53d53d..0000000000 --- a/tests/output/kotlin/src/commonTest/kotlin/com/algolia/methods/requests/PersonalizationTest.kt +++ /dev/null @@ -1,524 +0,0 @@ -package com.algolia.methods.requests - -import com.algolia.client.api.PersonalizationClient -import com.algolia.client.configuration.* -import com.algolia.client.model.personalization.* -import com.algolia.client.transport.* -import com.algolia.utils.* -import io.ktor.http.* -import kotlinx.coroutines.test.* -import kotlinx.serialization.json.* -import kotlin.test.* - -class PersonalizationTest { - - val client = PersonalizationClient( - appId = "appId", - apiKey = "apiKey", - region = "us", - ) - - // customDelete - - @Test - fun `allow del method for a custom path with minimal parameters`() = runTest { - client.runTest( - call = { - customDelete( - path = "/test/minimal", - ) - }, - intercept = { - assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("DELETE"), it.method) - assertNoBody(it.body) - }, - ) - } - - @Test - fun `allow del method for a custom path with all parameters`() = runTest { - client.runTest( - call = { - customDelete( - path = "/test/all", - parameters = mapOf("query" to "parameters"), - ) - }, - intercept = { - assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("DELETE"), it.method) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - // customGet - - @Test - fun `allow get method for a custom path with minimal parameters`() = runTest { - client.runTest( - call = { - customGet( - path = "/test/minimal", - ) - }, - intercept = { - assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - @Test - fun `allow get method for a custom path with all parameters`() = runTest { - client.runTest( - call = { - customGet( - path = "/test/all", - parameters = mapOf("query" to "parameters"), - ) - }, - intercept = { - assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - // customPost - - @Test - fun `allow post method for a custom path with minimal parameters`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/minimal", - ) - }, - intercept = { - assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{}""", it.body) - }, - ) - } - - @Test - fun `allow post method for a custom path with all parameters`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/all", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "body", - JsonPrimitive("parameters"), - ) - }, - ) - }, - intercept = { - assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertJsonBody("""{"body":"parameters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions can override default query parameters`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("query", "myQueryParameter") - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"myQueryParameter"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions merges query parameters with default ones`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("query2", "myQueryParameter") - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","query2":"myQueryParameter"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions can override default headers`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - headers = buildMap { - put("x-algolia-api-key", "myApiKey") - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"x-algolia-api-key":"myApiKey"}""", it.headers) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions merges headers with default ones`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - headers = buildMap { - put("x-algolia-api-key", "myApiKey") - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"x-algolia-api-key":"myApiKey"}""", it.headers) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions queryParameters accepts booleans`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("isItWorking", true) - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","isItWorking":"true"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions queryParameters accepts integers`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("myParam", 2) - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","myParam":"2"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions queryParameters accepts list of string`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("myParam", listOf("c", "d")) - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","myParam":"c,d"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions queryParameters accepts list of booleans`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("myParam", listOf(true, true, false)) - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","myParam":"true,true,false"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions queryParameters accepts list of integers`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("myParam", listOf(1, 2)) - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","myParam":"1,2"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - // customPut - - @Test - fun `allow put method for a custom path with minimal parameters`() = runTest { - client.runTest( - call = { - customPut( - path = "/test/minimal", - ) - }, - intercept = { - assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("PUT"), it.method) - assertJsonBody("""{}""", it.body) - }, - ) - } - - @Test - fun `allow put method for a custom path with all parameters`() = runTest { - client.runTest( - call = { - customPut( - path = "/test/all", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "body", - JsonPrimitive("parameters"), - ) - }, - ) - }, - intercept = { - assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("PUT"), it.method) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertJsonBody("""{"body":"parameters"}""", it.body) - }, - ) - } - - // deleteUserProfile - - @Test - fun `delete deleteUserProfile`() = runTest { - client.runTest( - call = { - deleteUserProfile( - userToken = "UserToken", - ) - }, - intercept = { - assertEquals("/1/profiles/UserToken".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("DELETE"), it.method) - assertNoBody(it.body) - }, - ) - } - - // getPersonalizationStrategy - - @Test - fun `get getPersonalizationStrategy`() = runTest { - client.runTest( - call = { - getPersonalizationStrategy() - }, - intercept = { - assertEquals("/1/strategies/personalization".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - // getUserTokenProfile - - @Test - fun `get getUserTokenProfile`() = runTest { - client.runTest( - call = { - getUserTokenProfile( - userToken = "UserToken", - ) - }, - intercept = { - assertEquals("/1/profiles/personalization/UserToken".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - // setPersonalizationStrategy - - @Test - fun `set setPersonalizationStrategy`() = runTest { - client.runTest( - call = { - setPersonalizationStrategy( - personalizationStrategyParams = PersonalizationStrategyParams( - eventScoring = listOf( - EventScoring( - score = 42, - eventName = "Algolia", - eventType = "Event", - ), - ), - facetScoring = listOf( - FacetScoring( - score = 42, - facetName = "Event", - ), - ), - personalizationImpact = 42, - ), - ) - }, - intercept = { - assertEquals("/1/strategies/personalization".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"eventScoring":[{"score":42,"eventName":"Algolia","eventType":"Event"}],"facetScoring":[{"score":42,"facetName":"Event"}],"personalizationImpact":42}""", it.body) - }, - ) - } -} diff --git a/tests/output/kotlin/src/commonTest/kotlin/com/algolia/methods/requests/QuerySuggestionsTest.kt b/tests/output/kotlin/src/commonTest/kotlin/com/algolia/methods/requests/QuerySuggestionsTest.kt deleted file mode 100644 index 011024c6d2..0000000000 --- a/tests/output/kotlin/src/commonTest/kotlin/com/algolia/methods/requests/QuerySuggestionsTest.kt +++ /dev/null @@ -1,593 +0,0 @@ -package com.algolia.methods.requests - -import com.algolia.client.api.QuerySuggestionsClient -import com.algolia.client.configuration.* -import com.algolia.client.model.querysuggestions.* -import com.algolia.client.transport.* -import com.algolia.utils.* -import io.ktor.http.* -import kotlinx.coroutines.test.* -import kotlinx.serialization.json.* -import kotlin.test.* - -class QuerySuggestionsTest { - - val client = QuerySuggestionsClient( - appId = "appId", - apiKey = "apiKey", - region = "us", - ) - - // createConfig - - @Test - fun `createConfig0`() = runTest { - client.runTest( - call = { - createConfig( - querySuggestionsConfigurationWithIndex = QuerySuggestionsConfigurationWithIndex( - indexName = "theIndexName", - sourceIndices = listOf( - SourceIndex( - indexName = "testIndex", - facets = listOf( - Facet( - attribute = "test", - ), - ), - generate = listOf(listOf("facetA", "facetB"), listOf("facetC")), - ), - ), - languages = Languages.of(listOf("french")), - exclude = listOf("test"), - ), - ) - }, - intercept = { - assertEquals("/1/configs".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"indexName":"theIndexName","sourceIndices":[{"indexName":"testIndex","facets":[{"attribute":"test"}],"generate":[["facetA","facetB"],["facetC"]]}],"languages":["french"],"exclude":["test"]}""", it.body) - }, - ) - } - - // customDelete - - @Test - fun `allow del method for a custom path with minimal parameters`() = runTest { - client.runTest( - call = { - customDelete( - path = "/test/minimal", - ) - }, - intercept = { - assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("DELETE"), it.method) - assertNoBody(it.body) - }, - ) - } - - @Test - fun `allow del method for a custom path with all parameters`() = runTest { - client.runTest( - call = { - customDelete( - path = "/test/all", - parameters = mapOf("query" to "parameters"), - ) - }, - intercept = { - assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("DELETE"), it.method) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - // customGet - - @Test - fun `allow get method for a custom path with minimal parameters`() = runTest { - client.runTest( - call = { - customGet( - path = "/test/minimal", - ) - }, - intercept = { - assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - @Test - fun `allow get method for a custom path with all parameters`() = runTest { - client.runTest( - call = { - customGet( - path = "/test/all", - parameters = mapOf("query" to "parameters"), - ) - }, - intercept = { - assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - // customPost - - @Test - fun `allow post method for a custom path with minimal parameters`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/minimal", - ) - }, - intercept = { - assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{}""", it.body) - }, - ) - } - - @Test - fun `allow post method for a custom path with all parameters`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/all", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "body", - JsonPrimitive("parameters"), - ) - }, - ) - }, - intercept = { - assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertJsonBody("""{"body":"parameters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions can override default query parameters`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("query", "myQueryParameter") - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"myQueryParameter"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions merges query parameters with default ones`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("query2", "myQueryParameter") - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","query2":"myQueryParameter"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions can override default headers`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - headers = buildMap { - put("x-algolia-api-key", "myApiKey") - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"x-algolia-api-key":"myApiKey"}""", it.headers) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions merges headers with default ones`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - headers = buildMap { - put("x-algolia-api-key", "myApiKey") - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"x-algolia-api-key":"myApiKey"}""", it.headers) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions queryParameters accepts booleans`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("isItWorking", true) - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","isItWorking":"true"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions queryParameters accepts integers`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("myParam", 2) - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","myParam":"2"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions queryParameters accepts list of string`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("myParam", listOf("c", "d")) - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","myParam":"c,d"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions queryParameters accepts list of booleans`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("myParam", listOf(true, true, false)) - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","myParam":"true,true,false"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions queryParameters accepts list of integers`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("myParam", listOf(1, 2)) - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","myParam":"1,2"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - // customPut - - @Test - fun `allow put method for a custom path with minimal parameters`() = runTest { - client.runTest( - call = { - customPut( - path = "/test/minimal", - ) - }, - intercept = { - assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("PUT"), it.method) - assertJsonBody("""{}""", it.body) - }, - ) - } - - @Test - fun `allow put method for a custom path with all parameters`() = runTest { - client.runTest( - call = { - customPut( - path = "/test/all", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "body", - JsonPrimitive("parameters"), - ) - }, - ) - }, - intercept = { - assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("PUT"), it.method) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertJsonBody("""{"body":"parameters"}""", it.body) - }, - ) - } - - // deleteConfig - - @Test - fun `deleteConfig0`() = runTest { - client.runTest( - call = { - deleteConfig( - indexName = "theIndexName", - ) - }, - intercept = { - assertEquals("/1/configs/theIndexName".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("DELETE"), it.method) - assertNoBody(it.body) - }, - ) - } - - // getAllConfigs - - @Test - fun `getAllConfigs0`() = runTest { - client.runTest( - call = { - getAllConfigs() - }, - intercept = { - assertEquals("/1/configs".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - // getConfig - - @Test - fun `getConfig0`() = runTest { - client.runTest( - call = { - getConfig( - indexName = "theIndexName", - ) - }, - intercept = { - assertEquals("/1/configs/theIndexName".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - // getConfigStatus - - @Test - fun `getConfigStatus0`() = runTest { - client.runTest( - call = { - getConfigStatus( - indexName = "theIndexName", - ) - }, - intercept = { - assertEquals("/1/configs/theIndexName/status".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - // getLogFile - - @Test - fun `getLogFile0`() = runTest { - client.runTest( - call = { - getLogFile( - indexName = "theIndexName", - ) - }, - intercept = { - assertEquals("/1/logs/theIndexName".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - // updateConfig - - @Test - fun `updateConfig0`() = runTest { - client.runTest( - call = { - updateConfig( - indexName = "theIndexName", - querySuggestionsConfiguration = QuerySuggestionsConfiguration( - sourceIndices = listOf( - SourceIndex( - indexName = "testIndex", - facets = listOf( - Facet( - attribute = "test", - ), - ), - generate = listOf(listOf("facetA", "facetB"), listOf("facetC")), - ), - ), - languages = Languages.of(listOf("french")), - exclude = listOf("test"), - ), - ) - }, - intercept = { - assertEquals("/1/configs/theIndexName".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("PUT"), it.method) - assertJsonBody("""{"sourceIndices":[{"indexName":"testIndex","facets":[{"attribute":"test"}],"generate":[["facetA","facetB"],["facetC"]]}],"languages":["french"],"exclude":["test"]}""", it.body) - }, - ) - } -} diff --git a/tests/output/kotlin/src/commonTest/kotlin/com/algolia/methods/requests/RecommendTest.kt b/tests/output/kotlin/src/commonTest/kotlin/com/algolia/methods/requests/RecommendTest.kt deleted file mode 100644 index 8896429094..0000000000 --- a/tests/output/kotlin/src/commonTest/kotlin/com/algolia/methods/requests/RecommendTest.kt +++ /dev/null @@ -1,742 +0,0 @@ -package com.algolia.methods.requests - -import com.algolia.client.api.RecommendClient -import com.algolia.client.configuration.* -import com.algolia.client.model.recommend.* -import com.algolia.client.transport.* -import com.algolia.utils.* -import io.ktor.http.* -import kotlinx.coroutines.test.* -import kotlinx.serialization.json.* -import kotlin.test.* - -class RecommendTest { - - val client = RecommendClient( - appId = "appId", - apiKey = "apiKey", - ) - - // customDelete - - @Test - fun `allow del method for a custom path with minimal parameters`() = runTest { - client.runTest( - call = { - customDelete( - path = "/test/minimal", - ) - }, - intercept = { - assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("DELETE"), it.method) - assertNoBody(it.body) - }, - ) - } - - @Test - fun `allow del method for a custom path with all parameters`() = runTest { - client.runTest( - call = { - customDelete( - path = "/test/all", - parameters = mapOf("query" to "parameters"), - ) - }, - intercept = { - assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("DELETE"), it.method) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - // customGet - - @Test - fun `allow get method for a custom path with minimal parameters`() = runTest { - client.runTest( - call = { - customGet( - path = "/test/minimal", - ) - }, - intercept = { - assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - @Test - fun `allow get method for a custom path with all parameters`() = runTest { - client.runTest( - call = { - customGet( - path = "/test/all", - parameters = mapOf("query" to "parameters"), - ) - }, - intercept = { - assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - // customPost - - @Test - fun `allow post method for a custom path with minimal parameters`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/minimal", - ) - }, - intercept = { - assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{}""", it.body) - }, - ) - } - - @Test - fun `allow post method for a custom path with all parameters`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/all", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "body", - JsonPrimitive("parameters"), - ) - }, - ) - }, - intercept = { - assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertJsonBody("""{"body":"parameters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions can override default query parameters`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("query", "myQueryParameter") - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"myQueryParameter"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions merges query parameters with default ones`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("query2", "myQueryParameter") - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","query2":"myQueryParameter"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions can override default headers`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - headers = buildMap { - put("x-algolia-api-key", "myApiKey") - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"x-algolia-api-key":"myApiKey"}""", it.headers) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions merges headers with default ones`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - headers = buildMap { - put("x-algolia-api-key", "myApiKey") - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"x-algolia-api-key":"myApiKey"}""", it.headers) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions queryParameters accepts booleans`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("isItWorking", true) - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","isItWorking":"true"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions queryParameters accepts integers`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("myParam", 2) - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","myParam":"2"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions queryParameters accepts list of string`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("myParam", listOf("c", "d")) - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","myParam":"c,d"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions queryParameters accepts list of booleans`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("myParam", listOf(true, true, false)) - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","myParam":"true,true,false"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions queryParameters accepts list of integers`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("myParam", listOf(1, 2)) - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","myParam":"1,2"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - // customPut - - @Test - fun `allow put method for a custom path with minimal parameters`() = runTest { - client.runTest( - call = { - customPut( - path = "/test/minimal", - ) - }, - intercept = { - assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("PUT"), it.method) - assertJsonBody("""{}""", it.body) - }, - ) - } - - @Test - fun `allow put method for a custom path with all parameters`() = runTest { - client.runTest( - call = { - customPut( - path = "/test/all", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "body", - JsonPrimitive("parameters"), - ) - }, - ) - }, - intercept = { - assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("PUT"), it.method) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertJsonBody("""{"body":"parameters"}""", it.body) - }, - ) - } - - // deleteRecommendRule - - @Test - fun `deleteRecommendRule0`() = runTest { - client.runTest( - call = { - deleteRecommendRule( - indexName = "indexName", - model = RecommendModels.entries.first { it.value == "related-products" }, - objectID = "objectID", - ) - }, - intercept = { - assertEquals("/1/indexes/indexName/related-products/recommend/rules/objectID".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("DELETE"), it.method) - assertNoBody(it.body) - }, - ) - } - - // getRecommendRule - - @Test - fun `getRecommendRule0`() = runTest { - client.runTest( - call = { - getRecommendRule( - indexName = "indexName", - model = RecommendModels.entries.first { it.value == "related-products" }, - objectID = "objectID", - ) - }, - intercept = { - assertEquals("/1/indexes/indexName/related-products/recommend/rules/objectID".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - // getRecommendStatus - - @Test - fun `getRecommendStatus0`() = runTest { - client.runTest( - call = { - getRecommendStatus( - indexName = "indexName", - model = RecommendModels.entries.first { it.value == "related-products" }, - taskID = 12345L, - ) - }, - intercept = { - assertEquals("/1/indexes/indexName/related-products/task/12345".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - // getRecommendations - - @Test - fun `get recommendations for recommend model with minimal parameters`() = runTest { - client.runTest( - call = { - getRecommendations( - getRecommendationsParams = GetRecommendationsParams( - requests = listOf( - RecommendationsQuery( - indexName = "indexName", - objectID = "objectID", - model = RecommendationModels.entries.first { it.value == "related-products" }, - threshold = 42, - ), - ), - ), - ) - }, - intercept = { - assertEquals("/1/indexes/*/recommendations".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"requests":[{"indexName":"indexName","objectID":"objectID","model":"related-products","threshold":42}]}""", it.body) - }, - ) - } - - @Test - fun `get recommendations for recommend model with all parameters`() = runTest { - client.runTest( - call = { - getRecommendations( - getRecommendationsParams = GetRecommendationsParams( - requests = listOf( - RecommendationsQuery( - indexName = "indexName", - objectID = "objectID", - model = RecommendationModels.entries.first { it.value == "related-products" }, - threshold = 42, - maxRecommendations = 10, - queryParameters = SearchParamsObject( - query = "myQuery", - facetFilters = FacetFilters.of(listOf(MixedSearchFilters.of("query"))), - ), - fallbackParameters = SearchParamsObject( - query = "myQuery", - facetFilters = FacetFilters.of(listOf(MixedSearchFilters.of("fallback"))), - ), - ), - ), - ), - ) - }, - intercept = { - assertEquals("/1/indexes/*/recommendations".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"requests":[{"indexName":"indexName","objectID":"objectID","model":"related-products","threshold":42,"maxRecommendations":10,"queryParameters":{"query":"myQuery","facetFilters":["query"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback"]}}]}""", it.body) - }, - ) - } - - @Test - fun `get recommendations for trending model with minimal parameters`() = runTest { - client.runTest( - call = { - getRecommendations( - getRecommendationsParams = GetRecommendationsParams( - requests = listOf( - TrendingItemsQuery( - indexName = "indexName", - model = TrendingItemsModel.entries.first { it.value == "trending-items" }, - threshold = 42, - ), - ), - ), - ) - }, - intercept = { - assertEquals("/1/indexes/*/recommendations".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"requests":[{"indexName":"indexName","model":"trending-items","threshold":42}]}""", it.body) - }, - ) - } - - @Test - fun `get recommendations for trending model with all parameters`() = runTest { - client.runTest( - call = { - getRecommendations( - getRecommendationsParams = GetRecommendationsParams( - requests = listOf( - TrendingItemsQuery( - indexName = "indexName", - model = TrendingItemsModel.entries.first { it.value == "trending-items" }, - threshold = 42, - maxRecommendations = 10, - facetName = "myFacetName", - facetValue = "myFacetValue", - queryParameters = SearchParamsObject( - query = "myQuery", - facetFilters = FacetFilters.of(listOf(MixedSearchFilters.of("query"))), - ), - fallbackParameters = SearchParamsObject( - query = "myQuery", - facetFilters = FacetFilters.of(listOf(MixedSearchFilters.of("fallback"))), - ), - ), - ), - ), - ) - }, - intercept = { - assertEquals("/1/indexes/*/recommendations".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"requests":[{"indexName":"indexName","model":"trending-items","threshold":42,"maxRecommendations":10,"facetName":"myFacetName","facetValue":"myFacetValue","queryParameters":{"query":"myQuery","facetFilters":["query"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback"]}}]}""", it.body) - }, - ) - } - - @Test - fun `get multiple recommendations with minimal parameters`() = runTest { - client.runTest( - call = { - getRecommendations( - getRecommendationsParams = GetRecommendationsParams( - requests = listOf( - RecommendationsQuery( - indexName = "indexName1", - objectID = "objectID1", - model = RecommendationModels.entries.first { it.value == "related-products" }, - threshold = 21, - ), - RecommendationsQuery( - indexName = "indexName2", - objectID = "objectID2", - model = RecommendationModels.entries.first { it.value == "related-products" }, - threshold = 21, - ), - ), - ), - ) - }, - intercept = { - assertEquals("/1/indexes/*/recommendations".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"requests":[{"indexName":"indexName1","objectID":"objectID1","model":"related-products","threshold":21},{"indexName":"indexName2","objectID":"objectID2","model":"related-products","threshold":21}]}""", it.body) - }, - ) - } - - @Test - fun `get multiple recommendations with all parameters`() = runTest { - client.runTest( - call = { - getRecommendations( - getRecommendationsParams = GetRecommendationsParams( - requests = listOf( - RecommendationsQuery( - indexName = "indexName1", - objectID = "objectID1", - model = RecommendationModels.entries.first { it.value == "related-products" }, - threshold = 21, - maxRecommendations = 10, - queryParameters = SearchParamsObject( - query = "myQuery", - facetFilters = FacetFilters.of(listOf(MixedSearchFilters.of("query1"))), - ), - fallbackParameters = SearchParamsObject( - query = "myQuery", - facetFilters = FacetFilters.of(listOf(MixedSearchFilters.of("fallback1"))), - ), - ), - RecommendationsQuery( - indexName = "indexName2", - objectID = "objectID2", - model = RecommendationModels.entries.first { it.value == "related-products" }, - threshold = 21, - maxRecommendations = 10, - queryParameters = SearchParamsObject( - query = "myQuery", - facetFilters = FacetFilters.of(listOf(MixedSearchFilters.of("query2"))), - ), - fallbackParameters = SearchParamsObject( - query = "myQuery", - facetFilters = FacetFilters.of(listOf(MixedSearchFilters.of("fallback2"))), - ), - ), - ), - ), - ) - }, - intercept = { - assertEquals("/1/indexes/*/recommendations".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"requests":[{"indexName":"indexName1","objectID":"objectID1","model":"related-products","threshold":21,"maxRecommendations":10,"queryParameters":{"query":"myQuery","facetFilters":["query1"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback1"]}},{"indexName":"indexName2","objectID":"objectID2","model":"related-products","threshold":21,"maxRecommendations":10,"queryParameters":{"query":"myQuery","facetFilters":["query2"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback2"]}}]}""", it.body) - }, - ) - } - - @Test - fun `get frequently bought together recommendations`() = runTest { - client.runTest( - call = { - getRecommendations( - getRecommendationsParams = GetRecommendationsParams( - requests = listOf( - RecommendationsQuery( - indexName = "indexName1", - objectID = "objectID1", - model = RecommendationModels.entries.first { it.value == "bought-together" }, - threshold = 42, - ), - ), - ), - ) - }, - intercept = { - assertEquals("/1/indexes/*/recommendations".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"requests":[{"indexName":"indexName1","objectID":"objectID1","model":"bought-together","threshold":42}]}""", it.body) - }, - ) - } - - // searchRecommendRules - - @Test - fun `searchRecommendRules0`() = runTest { - client.runTest( - call = { - searchRecommendRules( - indexName = "indexName", - model = RecommendModels.entries.first { it.value == "related-products" }, - ) - }, - intercept = { - assertEquals("/1/indexes/indexName/related-products/recommend/rules/search".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{}""", it.body) - }, - ) - } -} diff --git a/tests/output/kotlin/src/commonTest/kotlin/com/algolia/methods/requests/SearchTest.kt b/tests/output/kotlin/src/commonTest/kotlin/com/algolia/methods/requests/SearchTest.kt deleted file mode 100644 index 57e23a4805..0000000000 --- a/tests/output/kotlin/src/commonTest/kotlin/com/algolia/methods/requests/SearchTest.kt +++ /dev/null @@ -1,2851 +0,0 @@ -package com.algolia.methods.requests - -import com.algolia.client.api.SearchClient -import com.algolia.client.configuration.* -import com.algolia.client.model.search.* -import com.algolia.client.transport.* -import com.algolia.utils.* -import io.ktor.http.* -import kotlinx.coroutines.test.* -import kotlinx.serialization.json.* -import kotlin.test.* - -class SearchTest { - - val client = SearchClient( - appId = "appId", - apiKey = "apiKey", - ) - - // addApiKey - - @Test - fun `addApiKey0`() = runTest { - client.runTest( - call = { - addApiKey( - apiKey = ApiKey( - acl = listOf(Acl.entries.first { it.value == "search" }, Acl.entries.first { it.value == "addObject" }), - description = "my new api key", - validity = 300, - maxQueriesPerIPPerHour = 100, - maxHitsPerQuery = 20, - ), - ) - }, - intercept = { - assertEquals("/1/keys".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"acl":["search","addObject"],"description":"my new api key","validity":300,"maxQueriesPerIPPerHour":100,"maxHitsPerQuery":20}""", it.body) - }, - ) - } - - // addOrUpdateObject - - @Test - fun `addOrUpdateObject0`() = runTest { - client.runTest( - call = { - addOrUpdateObject( - indexName = "indexName", - objectID = "uniqueID", - body = buildJsonObject { - put( - "key", - JsonPrimitive("value"), - ) - }, - ) - }, - intercept = { - assertEquals("/1/indexes/indexName/uniqueID".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("PUT"), it.method) - assertJsonBody("""{"key":"value"}""", it.body) - }, - ) - } - - // appendSource - - @Test - fun `appendSource0`() = runTest { - client.runTest( - call = { - appendSource( - source = Source( - source = "theSource", - description = "theDescription", - ), - ) - }, - intercept = { - assertEquals("/1/security/sources/append".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"source":"theSource","description":"theDescription"}""", it.body) - }, - ) - } - - // assignUserId - - @Test - fun `assignUserId0`() = runTest { - client.runTest( - call = { - assignUserId( - xAlgoliaUserID = "userID", - assignUserIdParams = AssignUserIdParams( - cluster = "theCluster", - ), - ) - }, - intercept = { - assertEquals("/1/clusters/mapping".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"x-algolia-user-id":"userID"}""", it.headers) - assertJsonBody("""{"cluster":"theCluster"}""", it.body) - }, - ) - } - - // batch - - @Test - fun `allows batch method with 'addObject' action`() = runTest { - client.runTest( - call = { - batch( - indexName = "theIndexName", - batchWriteParams = BatchWriteParams( - requests = listOf( - BatchRequest( - action = Action.entries.first { it.value == "addObject" }, - body = buildJsonObject { - put( - "key", - JsonPrimitive("value"), - ) - }, - ), - ), - ), - ) - }, - intercept = { - assertEquals("/1/indexes/theIndexName/batch".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"requests":[{"action":"addObject","body":{"key":"value"}}]}""", it.body) - }, - ) - } - - @Test - fun `allows batch method with 'clear' action`() = runTest { - client.runTest( - call = { - batch( - indexName = "theIndexName", - batchWriteParams = BatchWriteParams( - requests = listOf( - BatchRequest( - action = Action.entries.first { it.value == "clear" }, - body = buildJsonObject { - put( - "key", - JsonPrimitive("value"), - ) - }, - ), - ), - ), - ) - }, - intercept = { - assertEquals("/1/indexes/theIndexName/batch".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"requests":[{"action":"clear","body":{"key":"value"}}]}""", it.body) - }, - ) - } - - @Test - fun `allows batch method with 'delete' action`() = runTest { - client.runTest( - call = { - batch( - indexName = "theIndexName", - batchWriteParams = BatchWriteParams( - requests = listOf( - BatchRequest( - action = Action.entries.first { it.value == "delete" }, - body = buildJsonObject { - put( - "key", - JsonPrimitive("value"), - ) - }, - ), - ), - ), - ) - }, - intercept = { - assertEquals("/1/indexes/theIndexName/batch".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"requests":[{"action":"delete","body":{"key":"value"}}]}""", it.body) - }, - ) - } - - @Test - fun `allows batch method with 'deleteObject' action`() = runTest { - client.runTest( - call = { - batch( - indexName = "theIndexName", - batchWriteParams = BatchWriteParams( - requests = listOf( - BatchRequest( - action = Action.entries.first { it.value == "deleteObject" }, - body = buildJsonObject { - put( - "key", - JsonPrimitive("value"), - ) - }, - ), - ), - ), - ) - }, - intercept = { - assertEquals("/1/indexes/theIndexName/batch".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"requests":[{"action":"deleteObject","body":{"key":"value"}}]}""", it.body) - }, - ) - } - - @Test - fun `allows batch method with 'partialUpdateObject' action`() = runTest { - client.runTest( - call = { - batch( - indexName = "theIndexName", - batchWriteParams = BatchWriteParams( - requests = listOf( - BatchRequest( - action = Action.entries.first { it.value == "partialUpdateObject" }, - body = buildJsonObject { - put( - "key", - JsonPrimitive("value"), - ) - }, - ), - ), - ), - ) - }, - intercept = { - assertEquals("/1/indexes/theIndexName/batch".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"requests":[{"action":"partialUpdateObject","body":{"key":"value"}}]}""", it.body) - }, - ) - } - - @Test - fun `allows batch method with 'partialUpdateObjectNoCreate' action`() = runTest { - client.runTest( - call = { - batch( - indexName = "theIndexName", - batchWriteParams = BatchWriteParams( - requests = listOf( - BatchRequest( - action = Action.entries.first { it.value == "partialUpdateObjectNoCreate" }, - body = buildJsonObject { - put( - "key", - JsonPrimitive("value"), - ) - }, - ), - ), - ), - ) - }, - intercept = { - assertEquals("/1/indexes/theIndexName/batch".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"requests":[{"action":"partialUpdateObjectNoCreate","body":{"key":"value"}}]}""", it.body) - }, - ) - } - - @Test - fun `allows batch method with 'updateObject' action`() = runTest { - client.runTest( - call = { - batch( - indexName = "theIndexName", - batchWriteParams = BatchWriteParams( - requests = listOf( - BatchRequest( - action = Action.entries.first { it.value == "updateObject" }, - body = buildJsonObject { - put( - "key", - JsonPrimitive("value"), - ) - }, - ), - ), - ), - ) - }, - intercept = { - assertEquals("/1/indexes/theIndexName/batch".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"requests":[{"action":"updateObject","body":{"key":"value"}}]}""", it.body) - }, - ) - } - - // batchAssignUserIds - - @Test - fun `batchAssignUserIds0`() = runTest { - client.runTest( - call = { - batchAssignUserIds( - xAlgoliaUserID = "userID", - batchAssignUserIdsParams = BatchAssignUserIdsParams( - cluster = "theCluster", - users = listOf("user1", "user2"), - ), - ) - }, - intercept = { - assertEquals("/1/clusters/mapping/batch".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"x-algolia-user-id":"userID"}""", it.headers) - assertJsonBody("""{"cluster":"theCluster","users":["user1","user2"]}""", it.body) - }, - ) - } - - // batchDictionaryEntries - - @Test - fun `get batchDictionaryEntries results with minimal parameters`() = runTest { - client.runTest( - call = { - batchDictionaryEntries( - dictionaryName = DictionaryType.entries.first { it.value == "compounds" }, - batchDictionaryEntriesParams = BatchDictionaryEntriesParams( - requests = listOf( - BatchDictionaryEntriesRequest( - action = DictionaryAction.entries.first { it.value == "addEntry" }, - body = DictionaryEntry( - objectID = "1", - language = "en", - ), - ), - BatchDictionaryEntriesRequest( - action = DictionaryAction.entries.first { it.value == "deleteEntry" }, - body = DictionaryEntry( - objectID = "2", - language = "fr", - ), - ), - ), - ), - ) - }, - intercept = { - assertEquals("/1/dictionaries/compounds/batch".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"requests":[{"action":"addEntry","body":{"objectID":"1","language":"en"}},{"action":"deleteEntry","body":{"objectID":"2","language":"fr"}}]}""", it.body) - }, - ) - } - - @Test - fun `get batchDictionaryEntries results with all parameters`() = runTest { - client.runTest( - call = { - batchDictionaryEntries( - dictionaryName = DictionaryType.entries.first { it.value == "compounds" }, - batchDictionaryEntriesParams = BatchDictionaryEntriesParams( - clearExistingDictionaryEntries = false, - requests = listOf( - BatchDictionaryEntriesRequest( - action = DictionaryAction.entries.first { it.value == "addEntry" }, - body = DictionaryEntry( - objectID = "1", - language = "en", - word = "fancy", - words = listOf("believe", "algolia"), - decomposition = listOf("trust", "algolia"), - state = DictionaryEntryState.entries.first { it.value == "enabled" }, - ), - ), - BatchDictionaryEntriesRequest( - action = DictionaryAction.entries.first { it.value == "deleteEntry" }, - body = DictionaryEntry( - objectID = "2", - language = "fr", - word = "humility", - words = listOf("candor", "algolia"), - decomposition = listOf("grit", "algolia"), - state = DictionaryEntryState.entries.first { it.value == "enabled" }, - ), - ), - ), - ), - ) - }, - intercept = { - assertEquals("/1/dictionaries/compounds/batch".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"clearExistingDictionaryEntries":false,"requests":[{"action":"addEntry","body":{"objectID":"1","language":"en","word":"fancy","words":["believe","algolia"],"decomposition":["trust","algolia"],"state":"enabled"}},{"action":"deleteEntry","body":{"objectID":"2","language":"fr","word":"humility","words":["candor","algolia"],"decomposition":["grit","algolia"],"state":"enabled"}}]}""", it.body) - }, - ) - } - - @Test - fun `get batchDictionaryEntries results additional properties`() = runTest { - client.runTest( - call = { - batchDictionaryEntries( - dictionaryName = DictionaryType.entries.first { it.value == "compounds" }, - batchDictionaryEntriesParams = BatchDictionaryEntriesParams( - requests = listOf( - BatchDictionaryEntriesRequest( - action = DictionaryAction.entries.first { it.value == "addEntry" }, - body = DictionaryEntry( - objectID = "1", - language = "en", - additionalProperties = mapOf( - "additional" to JsonPrimitive("try me"), - ), - ), - ), - ), - ), - ) - }, - intercept = { - assertEquals("/1/dictionaries/compounds/batch".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"requests":[{"action":"addEntry","body":{"objectID":"1","language":"en","additional":"try me"}}]}""", it.body) - }, - ) - } - - // browse - - @Test - fun `browse with minimal parameters`() = runTest { - client.runTest( - call = { - browse( - indexName = "indexName", - ) - }, - intercept = { - assertEquals("/1/indexes/indexName/browse".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{}""", it.body) - }, - ) - } - - @Test - fun `browse with search parameters`() = runTest { - client.runTest( - call = { - browse( - indexName = "indexName", - browseParams = BrowseParamsObject( - query = "myQuery", - facetFilters = FacetFilters.of(listOf(MixedSearchFilters.of("tags:algolia"))), - ), - ) - }, - intercept = { - assertEquals("/1/indexes/indexName/browse".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"query":"myQuery","facetFilters":["tags:algolia"]}""", it.body) - }, - ) - } - - @Test - fun `browse allow a cursor in parameters`() = runTest { - client.runTest( - call = { - browse( - indexName = "indexName", - browseParams = BrowseParamsObject( - cursor = "test", - ), - ) - }, - intercept = { - assertEquals("/1/indexes/indexName/browse".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"cursor":"test"}""", it.body) - }, - ) - } - - // clearAllSynonyms - - @Test - fun `clearAllSynonyms0`() = runTest { - client.runTest( - call = { - clearAllSynonyms( - indexName = "indexName", - ) - }, - intercept = { - assertEquals("/1/indexes/indexName/synonyms/clear".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertEmptyBody(it.body) - }, - ) - } - - // clearObjects - - @Test - fun `clearObjects0`() = runTest { - client.runTest( - call = { - clearObjects( - indexName = "theIndexName", - ) - }, - intercept = { - assertEquals("/1/indexes/theIndexName/clear".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertEmptyBody(it.body) - }, - ) - } - - // clearRules - - @Test - fun `clearRules0`() = runTest { - client.runTest( - call = { - clearRules( - indexName = "indexName", - ) - }, - intercept = { - assertEquals("/1/indexes/indexName/rules/clear".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertEmptyBody(it.body) - }, - ) - } - - // customDelete - - @Test - fun `allow del method for a custom path with minimal parameters`() = runTest { - client.runTest( - call = { - customDelete( - path = "/test/minimal", - ) - }, - intercept = { - assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("DELETE"), it.method) - assertNoBody(it.body) - }, - ) - } - - @Test - fun `allow del method for a custom path with all parameters`() = runTest { - client.runTest( - call = { - customDelete( - path = "/test/all", - parameters = mapOf("query" to "parameters"), - ) - }, - intercept = { - assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("DELETE"), it.method) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - // customGet - - @Test - fun `allow get method for a custom path with minimal parameters`() = runTest { - client.runTest( - call = { - customGet( - path = "/test/minimal", - ) - }, - intercept = { - assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - @Test - fun `allow get method for a custom path with all parameters`() = runTest { - client.runTest( - call = { - customGet( - path = "/test/all", - parameters = mapOf("query" to "parameters"), - ) - }, - intercept = { - assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - // customPost - - @Test - fun `allow post method for a custom path with minimal parameters`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/minimal", - ) - }, - intercept = { - assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{}""", it.body) - }, - ) - } - - @Test - fun `allow post method for a custom path with all parameters`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/all", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "body", - JsonPrimitive("parameters"), - ) - }, - ) - }, - intercept = { - assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertJsonBody("""{"body":"parameters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions can override default query parameters`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("query", "myQueryParameter") - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"myQueryParameter"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions merges query parameters with default ones`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("query2", "myQueryParameter") - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","query2":"myQueryParameter"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions can override default headers`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - headers = buildMap { - put("x-algolia-api-key", "myApiKey") - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"x-algolia-api-key":"myApiKey"}""", it.headers) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions merges headers with default ones`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - headers = buildMap { - put("x-algolia-api-key", "myApiKey") - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"x-algolia-api-key":"myApiKey"}""", it.headers) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions queryParameters accepts booleans`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("isItWorking", true) - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","isItWorking":"true"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions queryParameters accepts integers`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("myParam", 2) - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","myParam":"2"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions queryParameters accepts list of string`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("myParam", listOf("c", "d")) - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","myParam":"c,d"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions queryParameters accepts list of booleans`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("myParam", listOf(true, true, false)) - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","myParam":"true,true,false"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - @Test - fun `requestOptions queryParameters accepts list of integers`() = runTest { - client.runTest( - call = { - customPost( - path = "/test/requestOptions", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "facet", - JsonPrimitive("filters"), - ) - }, - requestOptions = RequestOptions( - urlParameters = buildMap { - put("myParam", listOf(1, 2)) - }, - ), - ) - }, - intercept = { - assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"query":"parameters","myParam":"1,2"}""", it.url.parameters) - assertJsonBody("""{"facet":"filters"}""", it.body) - }, - ) - } - - // customPut - - @Test - fun `allow put method for a custom path with minimal parameters`() = runTest { - client.runTest( - call = { - customPut( - path = "/test/minimal", - ) - }, - intercept = { - assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("PUT"), it.method) - assertJsonBody("""{}""", it.body) - }, - ) - } - - @Test - fun `allow put method for a custom path with all parameters`() = runTest { - client.runTest( - call = { - customPut( - path = "/test/all", - parameters = mapOf("query" to "parameters"), - body = buildJsonObject { - put( - "body", - JsonPrimitive("parameters"), - ) - }, - ) - }, - intercept = { - assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("PUT"), it.method) - assertContainsAll("""{"query":"parameters"}""", it.url.parameters) - assertJsonBody("""{"body":"parameters"}""", it.body) - }, - ) - } - - // deleteApiKey - - @Test - fun `deleteApiKey0`() = runTest { - client.runTest( - call = { - deleteApiKey( - key = "myTestApiKey", - ) - }, - intercept = { - assertEquals("/1/keys/myTestApiKey".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("DELETE"), it.method) - assertNoBody(it.body) - }, - ) - } - - // deleteBy - - @Test - fun `deleteBy0`() = runTest { - client.runTest( - call = { - deleteBy( - indexName = "theIndexName", - deleteByParams = DeleteByParams( - filters = "brand:brandName", - ), - ) - }, - intercept = { - assertEquals("/1/indexes/theIndexName/deleteByQuery".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"filters":"brand:brandName"}""", it.body) - }, - ) - } - - // deleteIndex - - @Test - fun `deleteIndex0`() = runTest { - client.runTest( - call = { - deleteIndex( - indexName = "theIndexName", - ) - }, - intercept = { - assertEquals("/1/indexes/theIndexName".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("DELETE"), it.method) - assertNoBody(it.body) - }, - ) - } - - // deleteObject - - @Test - fun `deleteObject0`() = runTest { - client.runTest( - call = { - deleteObject( - indexName = "theIndexName", - objectID = "uniqueID", - ) - }, - intercept = { - assertEquals("/1/indexes/theIndexName/uniqueID".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("DELETE"), it.method) - assertNoBody(it.body) - }, - ) - } - - // deleteRule - - @Test - fun `delete rule simple case`() = runTest { - client.runTest( - call = { - deleteRule( - indexName = "indexName", - objectID = "id1", - ) - }, - intercept = { - assertEquals("/1/indexes/indexName/rules/id1".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("DELETE"), it.method) - assertNoBody(it.body) - }, - ) - } - - @Test - fun `delete rule with simple characters to encode in objectID`() = runTest { - client.runTest( - call = { - deleteRule( - indexName = "indexName", - objectID = "test/with/slash", - ) - }, - intercept = { - assertEquals("/1/indexes/indexName/rules/test%2Fwith%2Fslash".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("DELETE"), it.method) - assertNoBody(it.body) - }, - ) - } - - // deleteSource - - @Test - fun `deleteSource0`() = runTest { - client.runTest( - call = { - deleteSource( - source = "theSource", - ) - }, - intercept = { - assertEquals("/1/security/sources/theSource".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("DELETE"), it.method) - assertNoBody(it.body) - }, - ) - } - - // deleteSynonym - - @Test - fun `deleteSynonym0`() = runTest { - client.runTest( - call = { - deleteSynonym( - indexName = "indexName", - objectID = "id1", - ) - }, - intercept = { - assertEquals("/1/indexes/indexName/synonyms/id1".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("DELETE"), it.method) - assertNoBody(it.body) - }, - ) - } - - // getApiKey - - @Test - fun `getApiKey0`() = runTest { - client.runTest( - call = { - getApiKey( - key = "myTestApiKey", - ) - }, - intercept = { - assertEquals("/1/keys/myTestApiKey".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - // getDictionaryLanguages - - @Test - fun `get getDictionaryLanguages`() = runTest { - client.runTest( - call = { - getDictionaryLanguages() - }, - intercept = { - assertEquals("/1/dictionaries/*/languages".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - // getDictionarySettings - - @Test - fun `get getDictionarySettings results`() = runTest { - client.runTest( - call = { - getDictionarySettings() - }, - intercept = { - assertEquals("/1/dictionaries/*/settings".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - // getLogs - - @Test - fun `getLogs with minimal parameters`() = runTest { - client.runTest( - call = { - getLogs() - }, - intercept = { - assertEquals("/1/logs".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - @Test - fun `getLogs with parameters`() = runTest { - client.runTest( - call = { - getLogs( - offset = 5, - length = 10, - indexName = "theIndexName", - type = LogType.entries.first { it.value == "all" }, - ) - }, - intercept = { - assertEquals("/1/logs".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"offset":"5","length":"10","indexName":"theIndexName","type":"all"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - // getObject - - @Test - fun `getObject0`() = runTest { - client.runTest( - call = { - getObject( - indexName = "theIndexName", - objectID = "uniqueID", - attributesToRetrieve = listOf("attr1", "attr2"), - ) - }, - intercept = { - assertEquals("/1/indexes/theIndexName/uniqueID".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"attributesToRetrieve":"attr1,attr2"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - // getObjects - - @Test - fun `getObjects0`() = runTest { - client.runTest( - call = { - getObjects( - getObjectsParams = GetObjectsParams( - requests = listOf( - GetObjectsRequest( - attributesToRetrieve = listOf("attr1", "attr2"), - objectID = "uniqueID", - indexName = "theIndexName", - ), - ), - ), - ) - }, - intercept = { - assertEquals("/1/indexes/*/objects".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"requests":[{"attributesToRetrieve":["attr1","attr2"],"objectID":"uniqueID","indexName":"theIndexName"}]}""", it.body) - }, - ) - } - - // getRule - - @Test - fun `getRule0`() = runTest { - client.runTest( - call = { - getRule( - indexName = "indexName", - objectID = "id1", - ) - }, - intercept = { - assertEquals("/1/indexes/indexName/rules/id1".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - // getSettings - - @Test - fun `getSettings0`() = runTest { - client.runTest( - call = { - getSettings( - indexName = "theIndexName", - ) - }, - intercept = { - assertEquals("/1/indexes/theIndexName/settings".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - // getSources - - @Test - fun `getSources0`() = runTest { - client.runTest( - call = { - getSources() - }, - intercept = { - assertEquals("/1/security/sources".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - // getSynonym - - @Test - fun `getSynonym0`() = runTest { - client.runTest( - call = { - getSynonym( - indexName = "indexName", - objectID = "id1", - ) - }, - intercept = { - assertEquals("/1/indexes/indexName/synonyms/id1".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - // getTask - - @Test - fun `getTask0`() = runTest { - client.runTest( - call = { - getTask( - indexName = "theIndexName", - taskID = 123L, - ) - }, - intercept = { - assertEquals("/1/indexes/theIndexName/task/123".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - // getTopUserIds - - @Test - fun `getTopUserIds0`() = runTest { - client.runTest( - call = { - getTopUserIds() - }, - intercept = { - assertEquals("/1/clusters/mapping/top".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - // getUserId - - @Test - fun `getUserId0`() = runTest { - client.runTest( - call = { - getUserId( - userID = "uniqueID", - ) - }, - intercept = { - assertEquals("/1/clusters/mapping/uniqueID".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - // hasPendingMappings - - @Test - fun `hasPendingMappings with minimal parameters`() = runTest { - client.runTest( - call = { - hasPendingMappings() - }, - intercept = { - assertEquals("/1/clusters/mapping/pending".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - @Test - fun `hasPendingMappings with parameters`() = runTest { - client.runTest( - call = { - hasPendingMappings( - getClusters = true, - ) - }, - intercept = { - assertEquals("/1/clusters/mapping/pending".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"getClusters":"true"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - // listApiKeys - - @Test - fun `listApiKeys0`() = runTest { - client.runTest( - call = { - listApiKeys() - }, - intercept = { - assertEquals("/1/keys".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - // listClusters - - @Test - fun `listClusters0`() = runTest { - client.runTest( - call = { - listClusters() - }, - intercept = { - assertEquals("/1/clusters".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - // listIndices - - @Test - fun `listIndices with minimal parameters`() = runTest { - client.runTest( - call = { - listIndices() - }, - intercept = { - assertEquals("/1/indexes".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - @Test - fun `listIndices with parameters`() = runTest { - client.runTest( - call = { - listIndices( - page = 8, - hitsPerPage = 3, - ) - }, - intercept = { - assertEquals("/1/indexes".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"page":"8","hitsPerPage":"3"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - // listUserIds - - @Test - fun `listUserIds with minimal parameters`() = runTest { - client.runTest( - call = { - listUserIds() - }, - intercept = { - assertEquals("/1/clusters/mapping".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertNoBody(it.body) - }, - ) - } - - @Test - fun `listUserIds with parameters`() = runTest { - client.runTest( - call = { - listUserIds( - page = 8, - hitsPerPage = 100, - ) - }, - intercept = { - assertEquals("/1/clusters/mapping".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("GET"), it.method) - assertContainsAll("""{"page":"8","hitsPerPage":"100"}""", it.url.parameters) - assertNoBody(it.body) - }, - ) - } - - // multipleBatch - - @Test - fun `multipleBatch0`() = runTest { - client.runTest( - call = { - multipleBatch( - batchParams = BatchParams( - requests = listOf( - MultipleBatchRequest( - action = Action.entries.first { it.value == "addObject" }, - body = buildJsonObject { - put( - "key", - JsonPrimitive("value"), - ) - }, - indexName = "theIndexName", - ), - ), - ), - ) - }, - intercept = { - assertEquals("/1/indexes/*/batch".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"requests":[{"action":"addObject","body":{"key":"value"},"indexName":"theIndexName"}]}""", it.body) - }, - ) - } - - // operationIndex - - @Test - fun `operationIndex0`() = runTest { - client.runTest( - call = { - operationIndex( - indexName = "theIndexName", - operationIndexParams = OperationIndexParams( - operation = OperationType.entries.first { it.value == "copy" }, - destination = "dest", - scope = listOf(ScopeType.entries.first { it.value == "rules" }, ScopeType.entries.first { it.value == "settings" }), - ), - ) - }, - intercept = { - assertEquals("/1/indexes/theIndexName/operation".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"operation":"copy","destination":"dest","scope":["rules","settings"]}""", it.body) - }, - ) - } - - // partialUpdateObject - - @Test - fun `partialUpdateObject0`() = runTest { - client.runTest( - call = { - partialUpdateObject( - indexName = "theIndexName", - objectID = "uniqueID", - attributesToUpdate = mapOf( - "id1" to AttributeToUpdate.of("test"), - "id2" to BuiltInOperation( - operation = BuiltInOperationType.entries.first { it.value == "AddUnique" }, - value = "test2", - ), - ), - createIfNotExists = true, - ) - }, - intercept = { - assertEquals("/1/indexes/theIndexName/uniqueID/partial".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"createIfNotExists":"true"}""", it.url.parameters) - assertJsonBody("""{"id1":"test","id2":{"_operation":"AddUnique","value":"test2"}}""", it.body) - }, - ) - } - - // removeUserId - - @Test - fun `removeUserId0`() = runTest { - client.runTest( - call = { - removeUserId( - userID = "uniqueID", - ) - }, - intercept = { - assertEquals("/1/clusters/mapping/uniqueID".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("DELETE"), it.method) - assertNoBody(it.body) - }, - ) - } - - // replaceSources - - @Test - fun `replaceSources0`() = runTest { - client.runTest( - call = { - replaceSources( - source = listOf( - Source( - source = "theSource", - description = "theDescription", - ), - ), - ) - }, - intercept = { - assertEquals("/1/security/sources".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("PUT"), it.method) - assertJsonBody("""[{"source":"theSource","description":"theDescription"}]""", it.body) - }, - ) - } - - // restoreApiKey - - @Test - fun `restoreApiKey0`() = runTest { - client.runTest( - call = { - restoreApiKey( - key = "myApiKey", - ) - }, - intercept = { - assertEquals("/1/keys/myApiKey/restore".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertEmptyBody(it.body) - }, - ) - } - - // saveObject - - @Test - fun `saveObject0`() = runTest { - client.runTest( - call = { - saveObject( - indexName = "theIndexName", - body = buildJsonObject { - put( - "objectID", - JsonPrimitive("id"), - ) - put( - "test", - JsonPrimitive("val"), - ) - }, - ) - }, - intercept = { - assertEquals("/1/indexes/theIndexName".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"objectID":"id","test":"val"}""", it.body) - }, - ) - } - - // saveRule - - @Test - fun `saveRule with minimal parameters`() = runTest { - client.runTest( - call = { - saveRule( - indexName = "indexName", - objectID = "id1", - rule = Rule( - objectID = "id1", - conditions = listOf( - Condition( - pattern = "apple", - anchoring = Anchoring.entries.first { it.value == "contains" }, - ), - ), - ), - ) - }, - intercept = { - assertEquals("/1/indexes/indexName/rules/id1".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("PUT"), it.method) - assertJsonBody("""{"objectID":"id1","conditions":[{"pattern":"apple","anchoring":"contains"}]}""", it.body) - }, - ) - } - - @Test - fun `saveRule with all parameters`() = runTest { - client.runTest( - call = { - saveRule( - indexName = "indexName", - objectID = "id1", - rule = Rule( - objectID = "id1", - conditions = listOf( - Condition( - pattern = "apple", - anchoring = Anchoring.entries.first { it.value == "contains" }, - alternatives = false, - context = "search", - ), - ), - consequence = Consequence( - params = ConsequenceParams( - filters = "brand:apple", - query = ConsequenceQueryObject( - remove = listOf("algolia"), - edits = listOf( - Edit( - type = EditType.entries.first { it.value == "remove" }, - delete = "abc", - insert = "cde", - ), - Edit( - type = EditType.entries.first { it.value == "replace" }, - delete = "abc", - insert = "cde", - ), - ), - ), - ), - hide = listOf( - ConsequenceHide( - objectID = "321", - ), - ), - filterPromotes = false, - userData = buildJsonObject { - put("algolia", "aloglia") - }, - promote = listOf( - PromoteObjectID( - objectID = "abc", - position = 3, - ), - PromoteObjectIDs( - objectIDs = listOf("abc", "def"), - position = 1, - ), - ), - ), - description = "test", - enabled = true, - validity = listOf( - TimeRange( - from = 1656670273, - until = 1656670277, - ), - ), - ), - forwardToReplicas = true, - ) - }, - intercept = { - assertEquals("/1/indexes/indexName/rules/id1".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("PUT"), it.method) - assertContainsAll("""{"forwardToReplicas":"true"}""", it.url.parameters) - assertJsonBody("""{"objectID":"id1","conditions":[{"pattern":"apple","anchoring":"contains","alternatives":false,"context":"search"}],"consequence":{"params":{"filters":"brand:apple","query":{"remove":["algolia"],"edits":[{"type":"remove","delete":"abc","insert":"cde"},{"type":"replace","delete":"abc","insert":"cde"}]}},"hide":[{"objectID":"321"}],"filterPromotes":false,"userData":{"algolia":"aloglia"},"promote":[{"objectID":"abc","position":3},{"objectIDs":["abc","def"],"position":1}]},"description":"test","enabled":true,"validity":[{"from":1656670273,"until":1656670277}]}""", it.body) - }, - ) - } - - // saveRules - - @Test - fun `saveRules with minimal parameters`() = runTest { - client.runTest( - call = { - saveRules( - indexName = "indexName", - rules = listOf( - Rule( - objectID = "a-rule-id", - conditions = listOf( - Condition( - pattern = "smartphone", - anchoring = Anchoring.entries.first { it.value == "contains" }, - ), - ), - ), - Rule( - objectID = "a-second-rule-id", - conditions = listOf( - Condition( - pattern = "apple", - anchoring = Anchoring.entries.first { it.value == "contains" }, - ), - ), - ), - ), - ) - }, - intercept = { - assertEquals("/1/indexes/indexName/rules/batch".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""[{"objectID":"a-rule-id","conditions":[{"pattern":"smartphone","anchoring":"contains"}]},{"objectID":"a-second-rule-id","conditions":[{"pattern":"apple","anchoring":"contains"}]}]""", it.body) - }, - ) - } - - @Test - fun `saveRules with all parameters`() = runTest { - client.runTest( - call = { - saveRules( - indexName = "indexName", - rules = listOf( - Rule( - objectID = "id1", - conditions = listOf( - Condition( - pattern = "apple", - anchoring = Anchoring.entries.first { it.value == "contains" }, - alternatives = false, - context = "search", - ), - ), - consequence = Consequence( - params = ConsequenceParams( - filters = "brand:apple", - query = ConsequenceQueryObject( - remove = listOf("algolia"), - edits = listOf( - Edit( - type = EditType.entries.first { it.value == "remove" }, - delete = "abc", - insert = "cde", - ), - Edit( - type = EditType.entries.first { it.value == "replace" }, - delete = "abc", - insert = "cde", - ), - ), - ), - ), - hide = listOf( - ConsequenceHide( - objectID = "321", - ), - ), - filterPromotes = false, - userData = buildJsonObject { - put("algolia", "aloglia") - }, - promote = listOf( - PromoteObjectID( - objectID = "abc", - position = 3, - ), - PromoteObjectIDs( - objectIDs = listOf("abc", "def"), - position = 1, - ), - ), - ), - description = "test", - enabled = true, - validity = listOf( - TimeRange( - from = 1656670273, - until = 1656670277, - ), - ), - ), - ), - forwardToReplicas = true, - clearExistingRules = true, - ) - }, - intercept = { - assertEquals("/1/indexes/indexName/rules/batch".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"forwardToReplicas":"true","clearExistingRules":"true"}""", it.url.parameters) - assertJsonBody("""[{"objectID":"id1","conditions":[{"pattern":"apple","anchoring":"contains","alternatives":false,"context":"search"}],"consequence":{"params":{"filters":"brand:apple","query":{"remove":["algolia"],"edits":[{"type":"remove","delete":"abc","insert":"cde"},{"type":"replace","delete":"abc","insert":"cde"}]}},"hide":[{"objectID":"321"}],"filterPromotes":false,"userData":{"algolia":"aloglia"},"promote":[{"objectID":"abc","position":3},{"objectIDs":["abc","def"],"position":1}]},"description":"test","enabled":true,"validity":[{"from":1656670273,"until":1656670277}]}]""", it.body) - }, - ) - } - - // saveSynonym - - @Test - fun `saveSynonym0`() = runTest { - client.runTest( - call = { - saveSynonym( - indexName = "indexName", - objectID = "id1", - synonymHit = SynonymHit( - objectID = "id1", - type = SynonymType.entries.first { it.value == "synonym" }, - synonyms = listOf("car", "vehicule", "auto"), - ), - forwardToReplicas = true, - ) - }, - intercept = { - assertEquals("/1/indexes/indexName/synonyms/id1".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("PUT"), it.method) - assertContainsAll("""{"forwardToReplicas":"true"}""", it.url.parameters) - assertJsonBody("""{"objectID":"id1","type":"synonym","synonyms":["car","vehicule","auto"]}""", it.body) - }, - ) - } - - // saveSynonyms - - @Test - fun `saveSynonyms0`() = runTest { - client.runTest( - call = { - saveSynonyms( - indexName = "indexName", - synonymHit = listOf( - SynonymHit( - objectID = "id1", - type = SynonymType.entries.first { it.value == "synonym" }, - synonyms = listOf("car", "vehicule", "auto"), - ), - SynonymHit( - objectID = "id2", - type = SynonymType.entries.first { it.value == "onewaysynonym" }, - input = "iphone", - synonyms = listOf("ephone", "aphone", "yphone"), - ), - ), - forwardToReplicas = true, - replaceExistingSynonyms = false, - ) - }, - intercept = { - assertEquals("/1/indexes/indexName/synonyms/batch".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"forwardToReplicas":"true","replaceExistingSynonyms":"false"}""", it.url.parameters) - assertJsonBody("""[{"objectID":"id1","type":"synonym","synonyms":["car","vehicule","auto"]},{"objectID":"id2","type":"onewaysynonym","input":"iphone","synonyms":["ephone","aphone","yphone"]}]""", it.body) - }, - ) - } - - // search - - @Test - fun `search for a single hits request with minimal parameters`() = runTest { - client.runTest( - call = { - search( - searchMethodParams = SearchMethodParams( - requests = listOf( - SearchForHits( - indexName = "cts_e2e_search_empty_index", - ), - ), - ), - ) - }, - intercept = { - assertEquals("/1/indexes/*/queries".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"requests":[{"indexName":"cts_e2e_search_empty_index"}]}""", it.body) - }, - ) - } - - @Test - fun `search for a single facet request with minimal parameters`() = runTest { - client.runTest( - call = { - search( - searchMethodParams = SearchMethodParams( - requests = listOf( - SearchForFacets( - indexName = "cts_e2e_search_facet", - type = SearchTypeFacet.entries.first { it.value == "facet" }, - facet = "editor", - ), - ), - strategy = SearchStrategy.entries.first { it.value == "stopIfEnoughMatches" }, - ), - ) - }, - intercept = { - assertEquals("/1/indexes/*/queries".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"requests":[{"indexName":"cts_e2e_search_facet","type":"facet","facet":"editor"}],"strategy":"stopIfEnoughMatches"}""", it.body) - }, - ) - } - - @Test - fun `search for a single hits request with all parameters`() = runTest { - client.runTest( - call = { - search( - searchMethodParams = SearchMethodParams( - requests = listOf( - SearchForHits( - indexName = "theIndexName", - query = "myQuery", - hitsPerPage = 50, - type = SearchTypeDefault.entries.first { it.value == "default" }, - ), - ), - ), - ) - }, - intercept = { - assertEquals("/1/indexes/*/queries".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"requests":[{"indexName":"theIndexName","query":"myQuery","hitsPerPage":50,"type":"default"}]}""", it.body) - }, - ) - } - - @Test - fun `search for a single facet request with all parameters`() = runTest { - client.runTest( - call = { - search( - searchMethodParams = SearchMethodParams( - requests = listOf( - SearchForFacets( - indexName = "theIndexName", - type = SearchTypeFacet.entries.first { it.value == "facet" }, - facet = "theFacet", - facetQuery = "theFacetQuery", - query = "theQuery", - maxFacetHits = 50, - ), - ), - strategy = SearchStrategy.entries.first { it.value == "stopIfEnoughMatches" }, - ), - ) - }, - intercept = { - assertEquals("/1/indexes/*/queries".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"requests":[{"indexName":"theIndexName","type":"facet","facet":"theFacet","facetQuery":"theFacetQuery","query":"theQuery","maxFacetHits":50}],"strategy":"stopIfEnoughMatches"}""", it.body) - }, - ) - } - - @Test - fun `search for multiple mixed requests in multiple indices with minimal parameters`() = runTest { - client.runTest( - call = { - search( - searchMethodParams = SearchMethodParams( - requests = listOf( - SearchForHits( - indexName = "theIndexName", - ), - SearchForFacets( - indexName = "theIndexName2", - type = SearchTypeFacet.entries.first { it.value == "facet" }, - facet = "theFacet", - ), - SearchForHits( - indexName = "theIndexName", - type = SearchTypeDefault.entries.first { it.value == "default" }, - ), - ), - strategy = SearchStrategy.entries.first { it.value == "stopIfEnoughMatches" }, - ), - ) - }, - intercept = { - assertEquals("/1/indexes/*/queries".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"requests":[{"indexName":"theIndexName"},{"indexName":"theIndexName2","type":"facet","facet":"theFacet"},{"indexName":"theIndexName","type":"default"}],"strategy":"stopIfEnoughMatches"}""", it.body) - }, - ) - } - - @Test - fun `search for multiple mixed requests in multiple indices with all parameters`() = runTest { - client.runTest( - call = { - search( - searchMethodParams = SearchMethodParams( - requests = listOf( - SearchForFacets( - indexName = "theIndexName", - type = SearchTypeFacet.entries.first { it.value == "facet" }, - facet = "theFacet", - facetQuery = "theFacetQuery", - query = "theQuery", - maxFacetHits = 50, - ), - SearchForHits( - indexName = "theIndexName", - query = "myQuery", - hitsPerPage = 50, - type = SearchTypeDefault.entries.first { it.value == "default" }, - ), - ), - strategy = SearchStrategy.entries.first { it.value == "stopIfEnoughMatches" }, - ), - ) - }, - intercept = { - assertEquals("/1/indexes/*/queries".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"requests":[{"indexName":"theIndexName","type":"facet","facet":"theFacet","facetQuery":"theFacetQuery","query":"theQuery","maxFacetHits":50},{"indexName":"theIndexName","query":"myQuery","hitsPerPage":50,"type":"default"}],"strategy":"stopIfEnoughMatches"}""", it.body) - }, - ) - } - - @Test - fun `search filters accept all of the possible shapes`() = runTest { - client.runTest( - call = { - search( - searchMethodParams = SearchMethodParams( - requests = listOf( - SearchForHits( - indexName = "theIndexName", - facetFilters = FacetFilters.of("mySearch:filters"), - reRankingApplyFilter = ReRankingApplyFilter.of("mySearch:filters"), - tagFilters = TagFilters.of("mySearch:filters"), - numericFilters = NumericFilters.of("mySearch:filters"), - optionalFilters = OptionalFilters.of("mySearch:filters"), - ), - SearchForHits( - indexName = "theIndexName", - facetFilters = FacetFilters.of(listOf(MixedSearchFilters.of("mySearch:filters"), MixedSearchFilters.of(listOf("mySearch:filters")))), - reRankingApplyFilter = ReRankingApplyFilter.of(listOf(MixedSearchFilters.of("mySearch:filters"), MixedSearchFilters.of(listOf("mySearch:filters")))), - tagFilters = TagFilters.of(listOf(MixedSearchFilters.of("mySearch:filters"), MixedSearchFilters.of(listOf("mySearch:filters")))), - numericFilters = NumericFilters.of(listOf(MixedSearchFilters.of("mySearch:filters"), MixedSearchFilters.of(listOf("mySearch:filters")))), - optionalFilters = OptionalFilters.of(listOf(MixedSearchFilters.of("mySearch:filters"), MixedSearchFilters.of(listOf("mySearch:filters")))), - ), - ), - ), - ) - }, - intercept = { - assertEquals("/1/indexes/*/queries".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"requests":[{"indexName":"theIndexName","facetFilters":"mySearch:filters","reRankingApplyFilter":"mySearch:filters","tagFilters":"mySearch:filters","numericFilters":"mySearch:filters","optionalFilters":"mySearch:filters"},{"indexName":"theIndexName","facetFilters":["mySearch:filters",["mySearch:filters"]],"reRankingApplyFilter":["mySearch:filters",["mySearch:filters"]],"tagFilters":["mySearch:filters",["mySearch:filters"]],"numericFilters":["mySearch:filters",["mySearch:filters"]],"optionalFilters":["mySearch:filters",["mySearch:filters"]]}]}""", it.body) - }, - ) - } - - @Test - fun `search with all search parameters`() = runTest { - client.runTest( - call = { - search( - searchMethodParams = SearchMethodParams( - requests = listOf( - SearchForHits( - advancedSyntax = true, - advancedSyntaxFeatures = listOf(AdvancedSyntaxFeatures.entries.first { it.value == "exactPhrase" }), - allowTyposOnNumericTokens = true, - alternativesAsExact = listOf(AlternativesAsExact.entries.first { it.value == "multiWordsSynonym" }), - analytics = true, - analyticsTags = listOf(""), - aroundLatLng = "", - aroundLatLngViaIP = true, - aroundPrecision = AroundPrecision.of(0), - aroundRadius = AroundRadiusAll.entries.first { it.value == "all" }, - attributeCriteriaComputedByMinProximity = true, - attributesForFaceting = listOf(""), - attributesToHighlight = listOf(""), - attributesToRetrieve = listOf(""), - attributesToSnippet = listOf(""), - clickAnalytics = true, - customRanking = listOf(""), - decompoundQuery = true, - disableExactOnAttributes = listOf(""), - disableTypoToleranceOnAttributes = listOf(""), - distinct = Distinct.of(0), - enableABTest = true, - enablePersonalization = true, - enableReRanking = true, - enableRules = true, - exactOnSingleWordQuery = ExactOnSingleWordQuery.entries.first { it.value == "attribute" }, - explain = listOf("foo", "bar"), - facetFilters = FacetFilters.of(listOf(MixedSearchFilters.of(""))), - facetingAfterDistinct = true, - facets = listOf(""), - filters = "", - getRankingInfo = true, - highlightPostTag = "", - highlightPreTag = "", - hitsPerPage = 1, - ignorePlurals = IgnorePlurals.of(false), - indexName = "theIndexName", - insideBoundingBox = listOf(listOf(47.3165, 4.9665, 47.3424, 5.0201), listOf(40.9234, 2.1185, 38.643, 1.9916)), - insidePolygon = listOf(listOf(47.3165, 4.9665, 47.3424, 5.0201, 47.32, 4.9), listOf(40.9234, 2.1185, 38.643, 1.9916, 39.2587, 2.0104)), - keepDiacriticsOnCharacters = "", - length = 1, - maxValuesPerFacet = 0, - minProximity = 1, - minWordSizefor1Typo = 0, - minWordSizefor2Typos = 0, - minimumAroundRadius = 1, - naturalLanguages = listOf(""), - numericFilters = NumericFilters.of(listOf(MixedSearchFilters.of(""))), - offset = 0, - optionalFilters = OptionalFilters.of(listOf(MixedSearchFilters.of(""))), - optionalWords = listOf(""), - page = 0, - percentileComputation = true, - personalizationImpact = 0, - query = "", - queryLanguages = listOf(""), - queryType = QueryType.entries.first { it.value == "prefixAll" }, - ranking = listOf(""), - reRankingApplyFilter = ReRankingApplyFilter.of(listOf(MixedSearchFilters.of(""))), - relevancyStrictness = 0, - removeStopWords = RemoveStopWords.of(true), - removeWordsIfNoResults = RemoveWordsIfNoResults.entries.first { it.value == "allOptional" }, - renderingContent = RenderingContent( - facetOrdering = FacetOrdering( - facets = Facets( - order = listOf("a", "b"), - ), - values = mapOf( - "a" to Value( - order = listOf("b"), - sortRemainingBy = SortRemainingBy.entries.first { it.value == "count" }, - ), - ), - ), - ), - replaceSynonymsInHighlight = true, - responseFields = listOf(""), - restrictHighlightAndSnippetArrays = true, - restrictSearchableAttributes = listOf(""), - ruleContexts = listOf(""), - similarQuery = "", - snippetEllipsisText = "", - sortFacetValuesBy = "", - sumOrFiltersScores = true, - synonyms = true, - tagFilters = TagFilters.of(listOf(MixedSearchFilters.of(""))), - type = SearchTypeDefault.entries.first { it.value == "default" }, - typoTolerance = TypoToleranceEnum.entries.first { it.value == "min" }, - userToken = "", - ), - ), - ), - ) - }, - intercept = { - assertEquals("/1/indexes/*/queries".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"requests":[{"advancedSyntax":true,"advancedSyntaxFeatures":["exactPhrase"],"allowTyposOnNumericTokens":true,"alternativesAsExact":["multiWordsSynonym"],"analytics":true,"analyticsTags":[""],"aroundLatLng":"","aroundLatLngViaIP":true,"aroundPrecision":0,"aroundRadius":"all","attributeCriteriaComputedByMinProximity":true,"attributesForFaceting":[""],"attributesToHighlight":[""],"attributesToRetrieve":[""],"attributesToSnippet":[""],"clickAnalytics":true,"customRanking":[""],"decompoundQuery":true,"disableExactOnAttributes":[""],"disableTypoToleranceOnAttributes":[""],"distinct":0,"enableABTest":true,"enablePersonalization":true,"enableReRanking":true,"enableRules":true,"exactOnSingleWordQuery":"attribute","explain":["foo","bar"],"facetFilters":[""],"facetingAfterDistinct":true,"facets":[""],"filters":"","getRankingInfo":true,"highlightPostTag":"","highlightPreTag":"","hitsPerPage":1,"ignorePlurals":false,"indexName":"theIndexName","insideBoundingBox":[[47.3165,4.9665,47.3424,5.0201],[40.9234,2.1185,38.643,1.9916]],"insidePolygon":[[47.3165,4.9665,47.3424,5.0201,47.32,4.9],[40.9234,2.1185,38.643,1.9916,39.2587,2.0104]],"keepDiacriticsOnCharacters":"","length":1,"maxValuesPerFacet":0,"minProximity":1,"minWordSizefor1Typo":0,"minWordSizefor2Typos":0,"minimumAroundRadius":1,"naturalLanguages":[""],"numericFilters":[""],"offset":0,"optionalFilters":[""],"optionalWords":[""],"page":0,"percentileComputation":true,"personalizationImpact":0,"query":"","queryLanguages":[""],"queryType":"prefixAll","ranking":[""],"reRankingApplyFilter":[""],"relevancyStrictness":0,"removeStopWords":true,"removeWordsIfNoResults":"allOptional","renderingContent":{"facetOrdering":{"facets":{"order":["a","b"]},"values":{"a":{"order":["b"],"sortRemainingBy":"count"}}}},"replaceSynonymsInHighlight":true,"responseFields":[""],"restrictHighlightAndSnippetArrays":true,"restrictSearchableAttributes":[""],"ruleContexts":[""],"similarQuery":"","snippetEllipsisText":"","sortFacetValuesBy":"","sumOrFiltersScores":true,"synonyms":true,"tagFilters":[""],"type":"default","typoTolerance":"min","userToken":""}]}""", it.body) - }, - ) - } - - // searchDictionaryEntries - - @Test - fun `get searchDictionaryEntries results with minimal parameters`() = runTest { - client.runTest( - call = { - searchDictionaryEntries( - dictionaryName = DictionaryType.entries.first { it.value == "compounds" }, - searchDictionaryEntriesParams = SearchDictionaryEntriesParams( - query = "foo", - ), - ) - }, - intercept = { - assertEquals("/1/dictionaries/compounds/search".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"query":"foo"}""", it.body) - }, - ) - } - - @Test - fun `get searchDictionaryEntries results with all parameters`() = runTest { - client.runTest( - call = { - searchDictionaryEntries( - dictionaryName = DictionaryType.entries.first { it.value == "compounds" }, - searchDictionaryEntriesParams = SearchDictionaryEntriesParams( - query = "foo", - page = 4, - hitsPerPage = 2, - language = "fr", - ), - ) - }, - intercept = { - assertEquals("/1/dictionaries/compounds/search".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"query":"foo","page":4,"hitsPerPage":2,"language":"fr"}""", it.body) - }, - ) - } - - // searchForFacetValues - - @Test - fun `get searchForFacetValues results with minimal parameters`() = runTest { - client.runTest( - call = { - searchForFacetValues( - indexName = "indexName", - facetName = "facetName", - ) - }, - intercept = { - assertEquals("/1/indexes/indexName/facets/facetName/query".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{}""", it.body) - }, - ) - } - - @Test - fun `get searchForFacetValues results with all parameters`() = runTest { - client.runTest( - call = { - searchForFacetValues( - indexName = "indexName", - facetName = "facetName", - searchForFacetValuesRequest = SearchForFacetValuesRequest( - params = "query=foo&facetFilters=['bar']", - facetQuery = "foo", - maxFacetHits = 42, - ), - ) - }, - intercept = { - assertEquals("/1/indexes/indexName/facets/facetName/query".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"params":"query=foo&facetFilters=['bar']","facetQuery":"foo","maxFacetHits":42}""", it.body) - }, - ) - } - - // searchRules - - @Test - fun `searchRules0`() = runTest { - client.runTest( - call = { - searchRules( - indexName = "indexName", - searchRulesParams = SearchRulesParams( - query = "something", - ), - ) - }, - intercept = { - assertEquals("/1/indexes/indexName/rules/search".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"query":"something"}""", it.body) - }, - ) - } - - // searchSingleIndex - - @Test - fun `search with minimal parameters`() = runTest { - client.runTest( - call = { - searchSingleIndex( - indexName = "indexName", - ) - }, - intercept = { - assertEquals("/1/indexes/indexName/query".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{}""", it.body) - }, - ) - } - - @Test - fun `search with searchParams`() = runTest { - client.runTest( - call = { - searchSingleIndex( - indexName = "indexName", - searchParams = SearchParamsObject( - query = "myQuery", - facetFilters = FacetFilters.of(listOf(MixedSearchFilters.of("tags:algolia"))), - ), - ) - }, - intercept = { - assertEquals("/1/indexes/indexName/query".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"query":"myQuery","facetFilters":["tags:algolia"]}""", it.body) - }, - ) - } - - // searchSynonyms - - @Test - fun `searchSynonyms with minimal parameters`() = runTest { - client.runTest( - call = { - searchSynonyms( - indexName = "indexName", - ) - }, - intercept = { - assertEquals("/1/indexes/indexName/synonyms/search".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{}""", it.body) - }, - ) - } - - @Test - fun `searchSynonyms with all parameters`() = runTest { - client.runTest( - call = { - searchSynonyms( - indexName = "indexName", - type = SynonymType.entries.first { it.value == "altcorrection1" }, - page = 10, - hitsPerPage = 10, - searchSynonymsParams = SearchSynonymsParams( - query = "myQuery", - ), - ) - }, - intercept = { - assertEquals("/1/indexes/indexName/synonyms/search".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertContainsAll("""{"type":"altcorrection1","page":"10","hitsPerPage":"10"}""", it.url.parameters) - assertJsonBody("""{"query":"myQuery"}""", it.body) - }, - ) - } - - // searchUserIds - - @Test - fun `searchUserIds0`() = runTest { - client.runTest( - call = { - searchUserIds( - searchUserIdsParams = SearchUserIdsParams( - query = "test", - clusterName = "theClusterName", - page = 5, - hitsPerPage = 10, - ), - ) - }, - intercept = { - assertEquals("/1/clusters/mapping/search".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("POST"), it.method) - assertJsonBody("""{"query":"test","clusterName":"theClusterName","page":5,"hitsPerPage":10}""", it.body) - }, - ) - } - - // setDictionarySettings - - @Test - fun `get setDictionarySettings results with minimal parameters`() = runTest { - client.runTest( - call = { - setDictionarySettings( - dictionarySettingsParams = DictionarySettingsParams( - disableStandardEntries = StandardEntries( - plurals = mapOf("fr" to false, "en" to false, "ru" to true), - ), - ), - ) - }, - intercept = { - assertEquals("/1/dictionaries/*/settings".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("PUT"), it.method) - assertJsonBody("""{"disableStandardEntries":{"plurals":{"fr":false,"en":false,"ru":true}}}""", it.body) - }, - ) - } - - @Test - fun `get setDictionarySettings results with all parameters`() = runTest { - client.runTest( - call = { - setDictionarySettings( - dictionarySettingsParams = DictionarySettingsParams( - disableStandardEntries = StandardEntries( - plurals = mapOf("fr" to false, "en" to false, "ru" to true), - stopwords = mapOf("fr" to false), - compounds = mapOf("ru" to true), - ), - ), - ) - }, - intercept = { - assertEquals("/1/dictionaries/*/settings".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("PUT"), it.method) - assertJsonBody("""{"disableStandardEntries":{"plurals":{"fr":false,"en":false,"ru":true},"stopwords":{"fr":false},"compounds":{"ru":true}}}""", it.body) - }, - ) - } - - // setSettings - - @Test - fun `setSettings with minimal parameters`() = runTest { - client.runTest( - call = { - setSettings( - indexName = "theIndexName", - indexSettings = IndexSettings( - paginationLimitedTo = 10, - ), - forwardToReplicas = true, - ) - }, - intercept = { - assertEquals("/1/indexes/theIndexName/settings".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("PUT"), it.method) - assertContainsAll("""{"forwardToReplicas":"true"}""", it.url.parameters) - assertJsonBody("""{"paginationLimitedTo":10}""", it.body) - }, - ) - } - - @Test - fun `setSettings allow boolean 'typoTolerance'`() = runTest { - client.runTest( - call = { - setSettings( - indexName = "theIndexName", - indexSettings = IndexSettings( - typoTolerance = TypoTolerance.of(true), - ), - forwardToReplicas = true, - ) - }, - intercept = { - assertEquals("/1/indexes/theIndexName/settings".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("PUT"), it.method) - assertContainsAll("""{"forwardToReplicas":"true"}""", it.url.parameters) - assertJsonBody("""{"typoTolerance":true}""", it.body) - }, - ) - } - - @Test - fun `setSettings allow enum 'typoTolerance'`() = runTest { - client.runTest( - call = { - setSettings( - indexName = "theIndexName", - indexSettings = IndexSettings( - typoTolerance = TypoToleranceEnum.entries.first { it.value == "min" }, - ), - forwardToReplicas = true, - ) - }, - intercept = { - assertEquals("/1/indexes/theIndexName/settings".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("PUT"), it.method) - assertContainsAll("""{"forwardToReplicas":"true"}""", it.url.parameters) - assertJsonBody("""{"typoTolerance":"min"}""", it.body) - }, - ) - } - - @Test - fun `setSettings allow boolean 'ignorePlurals'`() = runTest { - client.runTest( - call = { - setSettings( - indexName = "theIndexName", - indexSettings = IndexSettings( - ignorePlurals = IgnorePlurals.of(true), - ), - forwardToReplicas = true, - ) - }, - intercept = { - assertEquals("/1/indexes/theIndexName/settings".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("PUT"), it.method) - assertContainsAll("""{"forwardToReplicas":"true"}""", it.url.parameters) - assertJsonBody("""{"ignorePlurals":true}""", it.body) - }, - ) - } - - @Test - fun `setSettings allow list of string 'ignorePlurals'`() = runTest { - client.runTest( - call = { - setSettings( - indexName = "theIndexName", - indexSettings = IndexSettings( - ignorePlurals = IgnorePlurals.of(listOf("algolia")), - ), - forwardToReplicas = true, - ) - }, - intercept = { - assertEquals("/1/indexes/theIndexName/settings".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("PUT"), it.method) - assertContainsAll("""{"forwardToReplicas":"true"}""", it.url.parameters) - assertJsonBody("""{"ignorePlurals":["algolia"]}""", it.body) - }, - ) - } - - @Test - fun `setSettings allow boolean 'removeStopWords'`() = runTest { - client.runTest( - call = { - setSettings( - indexName = "theIndexName", - indexSettings = IndexSettings( - removeStopWords = RemoveStopWords.of(true), - ), - forwardToReplicas = true, - ) - }, - intercept = { - assertEquals("/1/indexes/theIndexName/settings".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("PUT"), it.method) - assertContainsAll("""{"forwardToReplicas":"true"}""", it.url.parameters) - assertJsonBody("""{"removeStopWords":true}""", it.body) - }, - ) - } - - @Test - fun `setSettings allow list of string 'removeStopWords'`() = runTest { - client.runTest( - call = { - setSettings( - indexName = "theIndexName", - indexSettings = IndexSettings( - removeStopWords = RemoveStopWords.of(listOf("algolia")), - ), - forwardToReplicas = true, - ) - }, - intercept = { - assertEquals("/1/indexes/theIndexName/settings".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("PUT"), it.method) - assertContainsAll("""{"forwardToReplicas":"true"}""", it.url.parameters) - assertJsonBody("""{"removeStopWords":["algolia"]}""", it.body) - }, - ) - } - - @Test - fun `setSettings allow boolean 'distinct'`() = runTest { - client.runTest( - call = { - setSettings( - indexName = "theIndexName", - indexSettings = IndexSettings( - distinct = Distinct.of(true), - ), - forwardToReplicas = true, - ) - }, - intercept = { - assertEquals("/1/indexes/theIndexName/settings".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("PUT"), it.method) - assertContainsAll("""{"forwardToReplicas":"true"}""", it.url.parameters) - assertJsonBody("""{"distinct":true}""", it.body) - }, - ) - } - - @Test - fun `setSettings allow integers for 'distinct'`() = runTest { - client.runTest( - call = { - setSettings( - indexName = "theIndexName", - indexSettings = IndexSettings( - distinct = Distinct.of(1), - ), - forwardToReplicas = true, - ) - }, - intercept = { - assertEquals("/1/indexes/theIndexName/settings".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("PUT"), it.method) - assertContainsAll("""{"forwardToReplicas":"true"}""", it.url.parameters) - assertJsonBody("""{"distinct":1}""", it.body) - }, - ) - } - - @Test - fun `setSettings allow all 'indexSettings'`() = runTest { - client.runTest( - call = { - setSettings( - indexName = "theIndexName", - indexSettings = IndexSettings( - advancedSyntax = true, - advancedSyntaxFeatures = listOf(AdvancedSyntaxFeatures.entries.first { it.value == "exactPhrase" }), - allowCompressionOfIntegerArray = true, - allowTyposOnNumericTokens = true, - alternativesAsExact = listOf(AlternativesAsExact.entries.first { it.value == "singleWordSynonym" }), - attributeCriteriaComputedByMinProximity = true, - attributeForDistinct = "test", - attributesForFaceting = listOf("algolia"), - attributesToHighlight = listOf("algolia"), - attributesToRetrieve = listOf("algolia"), - attributesToSnippet = listOf("algolia"), - attributesToTransliterate = listOf("algolia"), - camelCaseAttributes = listOf("algolia"), - customNormalization = mapOf("algolia" to mapOf("aloglia" to "aglolia")), - customRanking = listOf("algolia"), - decompoundQuery = false, - decompoundedAttributes = buildJsonObject { - put( - "algolia", - JsonPrimitive("aloglia"), - ) - }, - disableExactOnAttributes = listOf("algolia"), - disablePrefixOnAttributes = listOf("algolia"), - disableTypoToleranceOnAttributes = listOf("algolia"), - disableTypoToleranceOnWords = listOf("algolia"), - distinct = Distinct.of(3), - enablePersonalization = true, - enableReRanking = false, - enableRules = true, - exactOnSingleWordQuery = ExactOnSingleWordQuery.entries.first { it.value == "attribute" }, - highlightPreTag = "", - highlightPostTag = "", - hitsPerPage = 10, - ignorePlurals = IgnorePlurals.of(false), - indexLanguages = listOf("algolia"), - keepDiacriticsOnCharacters = "abc", - maxFacetHits = 20, - maxValuesPerFacet = 30, - minProximity = 6, - minWordSizefor1Typo = 5, - minWordSizefor2Typos = 11, - mode = Mode.entries.first { it.value == "neuralSearch" }, - numericAttributesForFiltering = listOf("algolia"), - optionalWords = listOf("myspace"), - paginationLimitedTo = 0, - queryLanguages = listOf("algolia"), - queryType = QueryType.entries.first { it.value == "prefixLast" }, - ranking = listOf("geo"), - reRankingApplyFilter = ReRankingApplyFilter.of("mySearch:filters"), - relevancyStrictness = 10, - removeStopWords = RemoveStopWords.of(false), - removeWordsIfNoResults = RemoveWordsIfNoResults.entries.first { it.value == "lastWords" }, - renderingContent = RenderingContent( - facetOrdering = FacetOrdering( - facets = Facets( - order = listOf("a", "b"), - ), - values = mapOf( - "a" to Value( - order = listOf("b"), - sortRemainingBy = SortRemainingBy.entries.first { it.value == "count" }, - ), - ), - ), - ), - replaceSynonymsInHighlight = true, - replicas = listOf(""), - responseFields = listOf("algolia"), - restrictHighlightAndSnippetArrays = true, - searchableAttributes = listOf("foo"), - semanticSearch = SemanticSearch( - eventSources = listOf("foo"), - ), - separatorsToIndex = "bar", - snippetEllipsisText = "---", - sortFacetValuesBy = "date", - typoTolerance = TypoTolerance.of(false), - unretrievableAttributes = listOf("foo"), - userData = buildJsonObject { - put( - "user", - JsonPrimitive("data"), - ) - }, - ), - ) - }, - intercept = { - assertEquals("/1/indexes/theIndexName/settings".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("PUT"), it.method) - assertJsonBody("""{"advancedSyntax":true,"advancedSyntaxFeatures":["exactPhrase"],"allowCompressionOfIntegerArray":true,"allowTyposOnNumericTokens":true,"alternativesAsExact":["singleWordSynonym"],"attributeCriteriaComputedByMinProximity":true,"attributeForDistinct":"test","attributesForFaceting":["algolia"],"attributesToHighlight":["algolia"],"attributesToRetrieve":["algolia"],"attributesToSnippet":["algolia"],"attributesToTransliterate":["algolia"],"camelCaseAttributes":["algolia"],"customNormalization":{"algolia":{"aloglia":"aglolia"}},"customRanking":["algolia"],"decompoundQuery":false,"decompoundedAttributes":{"algolia":"aloglia"},"disableExactOnAttributes":["algolia"],"disablePrefixOnAttributes":["algolia"],"disableTypoToleranceOnAttributes":["algolia"],"disableTypoToleranceOnWords":["algolia"],"distinct":3,"enablePersonalization":true,"enableReRanking":false,"enableRules":true,"exactOnSingleWordQuery":"attribute","highlightPreTag":"","highlightPostTag":"","hitsPerPage":10,"ignorePlurals":false,"indexLanguages":["algolia"],"keepDiacriticsOnCharacters":"abc","maxFacetHits":20,"maxValuesPerFacet":30,"minProximity":6,"minWordSizefor1Typo":5,"minWordSizefor2Typos":11,"mode":"neuralSearch","numericAttributesForFiltering":["algolia"],"optionalWords":["myspace"],"paginationLimitedTo":0,"queryLanguages":["algolia"],"queryType":"prefixLast","ranking":["geo"],"reRankingApplyFilter":"mySearch:filters","relevancyStrictness":10,"removeStopWords":false,"removeWordsIfNoResults":"lastWords","renderingContent":{"facetOrdering":{"facets":{"order":["a","b"]},"values":{"a":{"order":["b"],"sortRemainingBy":"count"}}}},"replaceSynonymsInHighlight":true,"replicas":[""],"responseFields":["algolia"],"restrictHighlightAndSnippetArrays":true,"searchableAttributes":["foo"],"semanticSearch":{"eventSources":["foo"]},"separatorsToIndex":"bar","snippetEllipsisText":"---","sortFacetValuesBy":"date","typoTolerance":false,"unretrievableAttributes":["foo"],"userData":{"user":"data"}}""", it.body) - }, - ) - } - - // updateApiKey - - @Test - fun `updateApiKey0`() = runTest { - client.runTest( - call = { - updateApiKey( - key = "myApiKey", - apiKey = ApiKey( - acl = listOf(Acl.entries.first { it.value == "search" }, Acl.entries.first { it.value == "addObject" }), - validity = 300, - maxQueriesPerIPPerHour = 100, - maxHitsPerQuery = 20, - ), - ) - }, - intercept = { - assertEquals("/1/keys/myApiKey".toPathSegments(), it.url.pathSegments) - assertEquals(HttpMethod.parse("PUT"), it.method) - assertJsonBody("""{"acl":["search","addObject"],"validity":300,"maxQueriesPerIPPerHour":100,"maxHitsPerQuery":20}""", it.body) - }, - ) - } -} diff --git a/tests/output/php/src/methods/requests/AbtestingTest.php b/tests/output/php/src/methods/requests/AbtestingTest.php deleted file mode 100644 index 95323120bf..0000000000 --- a/tests/output/php/src/methods/requests/AbtestingTest.php +++ /dev/null @@ -1,697 +0,0 @@ -recordedRequests[] = $request; - - return new Response(200, [], '{}'); - } - - /** - * Test case for AddABTests - * addABTests with minimal parameters. - */ - public function testAddABTests0() - { - $client = $this->getClient(); - $client->addABTests( - ['endAt' => '2022-12-31T00:00:00.000Z', - 'name' => 'myABTest', - 'variants' => [ - ['index' => 'AB_TEST_1', - 'trafficPercentage' => 30, - ], - - ['index' => 'AB_TEST_2', - 'trafficPercentage' => 50, - ], - ], - ], - ); - - $this->assertRequests([ - [ - 'path' => '/2/abtests', - 'method' => 'POST', - 'body' => json_decode('{"endAt":"2022-12-31T00:00:00.000Z","name":"myABTest","variants":[{"index":"AB_TEST_1","trafficPercentage":30},{"index":"AB_TEST_2","trafficPercentage":50}]}'), - ], - ]); - } - - /** - * Test case for CustomDelete - * allow del method for a custom path with minimal parameters. - */ - public function testCustomDelete0() - { - $client = $this->getClient(); - $client->customDelete( - '/test/minimal', - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/minimal', - 'method' => 'DELETE', - 'body' => null, - ], - ]); - } - - /** - * Test case for CustomDelete - * allow del method for a custom path with all parameters. - */ - public function testCustomDelete1() - { - $client = $this->getClient(); - $client->customDelete( - '/test/all', - ['query' => 'parameters', - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/all', - 'method' => 'DELETE', - 'body' => null, - 'queryParameters' => json_decode('{"query":"parameters"}', true), - ], - ]); - } - - /** - * Test case for CustomGet - * allow get method for a custom path with minimal parameters. - */ - public function testCustomGet0() - { - $client = $this->getClient(); - $client->customGet( - '/test/minimal', - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/minimal', - 'method' => 'GET', - 'body' => null, - ], - ]); - } - - /** - * Test case for CustomGet - * allow get method for a custom path with all parameters. - */ - public function testCustomGet1() - { - $client = $this->getClient(); - $client->customGet( - '/test/all', - ['query' => 'parameters', - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/all', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"query":"parameters"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * allow post method for a custom path with minimal parameters. - */ - public function testCustomPost0() - { - $client = $this->getClient(); - $client->customPost( - '/test/minimal', - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/minimal', - 'method' => 'POST', - 'body' => json_decode('{}'), - ], - ]); - } - - /** - * Test case for CustomPost - * allow post method for a custom path with all parameters. - */ - public function testCustomPost1() - { - $client = $this->getClient(); - $client->customPost( - '/test/all', - ['query' => 'parameters', - ], - ['body' => 'parameters', - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/all', - 'method' => 'POST', - 'body' => json_decode('{"body":"parameters"}'), - 'queryParameters' => json_decode('{"query":"parameters"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions can override default query parameters. - */ - public function testCustomPost2() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'query' => 'myQueryParameter', - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"myQueryParameter"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions merges query parameters with default ones. - */ - public function testCustomPost3() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'query2' => 'myQueryParameter', - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters","query2":"myQueryParameter"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions can override default headers. - */ - public function testCustomPost4() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - ], - 'headers' => [ - 'x-algolia-api-key' => 'myApiKey', - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters"}', true), - 'headers' => json_decode('{"x-algolia-api-key":"myApiKey"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions merges headers with default ones. - */ - public function testCustomPost5() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - ], - 'headers' => [ - 'x-algolia-api-key' => 'myApiKey', - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters"}', true), - 'headers' => json_decode('{"x-algolia-api-key":"myApiKey"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions queryParameters accepts booleans. - */ - public function testCustomPost6() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'isItWorking' => true, - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters","isItWorking":"true"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions queryParameters accepts integers. - */ - public function testCustomPost7() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'myParam' => 2, - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters","myParam":"2"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions queryParameters accepts list of string. - */ - public function testCustomPost8() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'myParam' => ['c', 'd', - ], - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters","myParam":"c,d"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions queryParameters accepts list of booleans. - */ - public function testCustomPost9() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'myParam' => [true, true, false, - ], - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters","myParam":"true,true,false"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions queryParameters accepts list of integers. - */ - public function testCustomPost10() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'myParam' => [1, 2, - ], - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters","myParam":"1,2"}', true), - ], - ]); - } - - /** - * Test case for CustomPut - * allow put method for a custom path with minimal parameters. - */ - public function testCustomPut0() - { - $client = $this->getClient(); - $client->customPut( - '/test/minimal', - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/minimal', - 'method' => 'PUT', - 'body' => json_decode('{}'), - ], - ]); - } - - /** - * Test case for CustomPut - * allow put method for a custom path with all parameters. - */ - public function testCustomPut1() - { - $client = $this->getClient(); - $client->customPut( - '/test/all', - ['query' => 'parameters', - ], - ['body' => 'parameters', - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/all', - 'method' => 'PUT', - 'body' => json_decode('{"body":"parameters"}'), - 'queryParameters' => json_decode('{"query":"parameters"}', true), - ], - ]); - } - - /** - * Test case for DeleteABTest - * deleteABTest. - */ - public function testDeleteABTest0() - { - $client = $this->getClient(); - $client->deleteABTest( - 42, - ); - - $this->assertRequests([ - [ - 'path' => '/2/abtests/42', - 'method' => 'DELETE', - 'body' => null, - ], - ]); - } - - /** - * Test case for GetABTest - * getABTest. - */ - public function testGetABTest0() - { - $client = $this->getClient(); - $client->getABTest( - 42, - ); - - $this->assertRequests([ - [ - 'path' => '/2/abtests/42', - 'method' => 'GET', - 'body' => null, - ], - ]); - } - - /** - * Test case for ListABTests - * listABTests with minimal parameters. - */ - public function testListABTests0() - { - $client = $this->getClient(); - $client->listABTests(); - - $this->assertRequests([ - [ - 'path' => '/2/abtests', - 'method' => 'GET', - 'body' => null, - ], - ]); - } - - /** - * Test case for ListABTests - * listABTests with parameters. - */ - public function testListABTests1() - { - $client = $this->getClient(); - $client->listABTests( - 42, - 21, - 'foo', - 'bar', - ); - - $this->assertRequests([ - [ - 'path' => '/2/abtests', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"offset":"42","limit":"21","indexPrefix":"foo","indexSuffix":"bar"}', true), - ], - ]); - } - - /** - * Test case for StopABTest - * stopABTest. - */ - public function testStopABTest0() - { - $client = $this->getClient(); - $client->stopABTest( - 42, - ); - - $this->assertRequests([ - [ - 'path' => '/2/abtests/42/stop', - 'method' => 'POST', - 'body' => json_decode(''), - ], - ]); - } - - protected function assertRequests(array $requests) - { - $this->assertGreaterThan(0, count($requests)); - $this->assertEquals(count($requests), count($this->recordedRequests)); - - foreach ($requests as $i => $request) { - $recordedRequest = $this->recordedRequests[$i]; - - $this->assertEquals($request['method'], $recordedRequest->getMethod()); - - $this->assertEquals($request['path'], $recordedRequest->getUri()->getPath()); - - if (isset($request['body'])) { - $this->assertEquals( - json_encode($request['body']), - $recordedRequest->getBody()->getContents() - ); - } - - if (isset($request['queryParameters'])) { - $this->assertEquals( - Query::build($request['queryParameters']), - $recordedRequest->getUri()->getQuery() - ); - } - - if (isset($request['headers'])) { - foreach ($request['headers'] as $key => $value) { - $this->assertArrayHasKey( - $key, - $recordedRequest->getHeaders() - ); - $this->assertEquals( - $recordedRequest->getHeaderLine($key), - $value - ); - } - } - } - } - - protected function getClient() - { - $api = new ApiWrapper($this, AbtestingConfig::create(getenv('ALGOLIA_APP_ID'), getenv('ALGOLIA_API_KEY')), ClusterHosts::create('127.0.0.1')); - $config = AbtestingConfig::create('foo', 'bar'); - - return new AbtestingClient($api, $config); - } -} diff --git a/tests/output/php/src/methods/requests/AnalyticsTest.php b/tests/output/php/src/methods/requests/AnalyticsTest.php deleted file mode 100644 index b037a51c97..0000000000 --- a/tests/output/php/src/methods/requests/AnalyticsTest.php +++ /dev/null @@ -1,1381 +0,0 @@ -recordedRequests[] = $request; - - return new Response(200, [], '{}'); - } - - /** - * Test case for CustomDelete - * allow del method for a custom path with minimal parameters. - */ - public function testCustomDelete0() - { - $client = $this->getClient(); - $client->customDelete( - '/test/minimal', - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/minimal', - 'method' => 'DELETE', - 'body' => null, - ], - ]); - } - - /** - * Test case for CustomDelete - * allow del method for a custom path with all parameters. - */ - public function testCustomDelete1() - { - $client = $this->getClient(); - $client->customDelete( - '/test/all', - ['query' => 'parameters', - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/all', - 'method' => 'DELETE', - 'body' => null, - 'queryParameters' => json_decode('{"query":"parameters"}', true), - ], - ]); - } - - /** - * Test case for CustomGet - * allow get method for a custom path with minimal parameters. - */ - public function testCustomGet0() - { - $client = $this->getClient(); - $client->customGet( - '/test/minimal', - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/minimal', - 'method' => 'GET', - 'body' => null, - ], - ]); - } - - /** - * Test case for CustomGet - * allow get method for a custom path with all parameters. - */ - public function testCustomGet1() - { - $client = $this->getClient(); - $client->customGet( - '/test/all', - ['query' => 'parameters', - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/all', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"query":"parameters"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * allow post method for a custom path with minimal parameters. - */ - public function testCustomPost0() - { - $client = $this->getClient(); - $client->customPost( - '/test/minimal', - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/minimal', - 'method' => 'POST', - 'body' => json_decode('{}'), - ], - ]); - } - - /** - * Test case for CustomPost - * allow post method for a custom path with all parameters. - */ - public function testCustomPost1() - { - $client = $this->getClient(); - $client->customPost( - '/test/all', - ['query' => 'parameters', - ], - ['body' => 'parameters', - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/all', - 'method' => 'POST', - 'body' => json_decode('{"body":"parameters"}'), - 'queryParameters' => json_decode('{"query":"parameters"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions can override default query parameters. - */ - public function testCustomPost2() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'query' => 'myQueryParameter', - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"myQueryParameter"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions merges query parameters with default ones. - */ - public function testCustomPost3() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'query2' => 'myQueryParameter', - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters","query2":"myQueryParameter"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions can override default headers. - */ - public function testCustomPost4() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - ], - 'headers' => [ - 'x-algolia-api-key' => 'myApiKey', - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters"}', true), - 'headers' => json_decode('{"x-algolia-api-key":"myApiKey"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions merges headers with default ones. - */ - public function testCustomPost5() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - ], - 'headers' => [ - 'x-algolia-api-key' => 'myApiKey', - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters"}', true), - 'headers' => json_decode('{"x-algolia-api-key":"myApiKey"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions queryParameters accepts booleans. - */ - public function testCustomPost6() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'isItWorking' => true, - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters","isItWorking":"true"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions queryParameters accepts integers. - */ - public function testCustomPost7() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'myParam' => 2, - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters","myParam":"2"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions queryParameters accepts list of string. - */ - public function testCustomPost8() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'myParam' => ['c', 'd', - ], - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters","myParam":"c,d"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions queryParameters accepts list of booleans. - */ - public function testCustomPost9() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'myParam' => [true, true, false, - ], - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters","myParam":"true,true,false"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions queryParameters accepts list of integers. - */ - public function testCustomPost10() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'myParam' => [1, 2, - ], - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters","myParam":"1,2"}', true), - ], - ]); - } - - /** - * Test case for CustomPut - * allow put method for a custom path with minimal parameters. - */ - public function testCustomPut0() - { - $client = $this->getClient(); - $client->customPut( - '/test/minimal', - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/minimal', - 'method' => 'PUT', - 'body' => json_decode('{}'), - ], - ]); - } - - /** - * Test case for CustomPut - * allow put method for a custom path with all parameters. - */ - public function testCustomPut1() - { - $client = $this->getClient(); - $client->customPut( - '/test/all', - ['query' => 'parameters', - ], - ['body' => 'parameters', - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/all', - 'method' => 'PUT', - 'body' => json_decode('{"body":"parameters"}'), - 'queryParameters' => json_decode('{"query":"parameters"}', true), - ], - ]); - } - - /** - * Test case for GetAverageClickPosition - * get getAverageClickPosition with minimal parameters. - */ - public function testGetAverageClickPosition0() - { - $client = $this->getClient(); - $client->getAverageClickPosition( - 'index', - ); - - $this->assertRequests([ - [ - 'path' => '/2/clicks/averageClickPosition', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"index":"index"}', true), - ], - ]); - } - - /** - * Test case for GetAverageClickPosition - * get getAverageClickPosition with all parameters. - */ - public function testGetAverageClickPosition1() - { - $client = $this->getClient(); - $client->getAverageClickPosition( - 'index', - '1999-09-19', - '2001-01-01', - 'tag', - ); - - $this->assertRequests([ - [ - 'path' => '/2/clicks/averageClickPosition', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}', true), - ], - ]); - } - - /** - * Test case for GetClickPositions - * get getClickPositions with minimal parameters. - */ - public function testGetClickPositions0() - { - $client = $this->getClient(); - $client->getClickPositions( - 'index', - ); - - $this->assertRequests([ - [ - 'path' => '/2/clicks/positions', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"index":"index"}', true), - ], - ]); - } - - /** - * Test case for GetClickPositions - * get getClickPositions with all parameters. - */ - public function testGetClickPositions1() - { - $client = $this->getClient(); - $client->getClickPositions( - 'index', - '1999-09-19', - '2001-01-01', - 'tag', - ); - - $this->assertRequests([ - [ - 'path' => '/2/clicks/positions', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}', true), - ], - ]); - } - - /** - * Test case for GetClickThroughRate - * get getClickThroughRate with minimal parameters. - */ - public function testGetClickThroughRate0() - { - $client = $this->getClient(); - $client->getClickThroughRate( - 'index', - ); - - $this->assertRequests([ - [ - 'path' => '/2/clicks/clickThroughRate', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"index":"index"}', true), - ], - ]); - } - - /** - * Test case for GetClickThroughRate - * get getClickThroughRate with all parameters. - */ - public function testGetClickThroughRate1() - { - $client = $this->getClient(); - $client->getClickThroughRate( - 'index', - '1999-09-19', - '2001-01-01', - 'tag', - ); - - $this->assertRequests([ - [ - 'path' => '/2/clicks/clickThroughRate', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}', true), - ], - ]); - } - - /** - * Test case for GetConversationRate - * get getConversationRate with minimal parameters. - */ - public function testGetConversationRate0() - { - $client = $this->getClient(); - $client->getConversationRate( - 'index', - ); - - $this->assertRequests([ - [ - 'path' => '/2/conversions/conversionRate', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"index":"index"}', true), - ], - ]); - } - - /** - * Test case for GetConversationRate - * get getConversationRate with all parameters. - */ - public function testGetConversationRate1() - { - $client = $this->getClient(); - $client->getConversationRate( - 'index', - '1999-09-19', - '2001-01-01', - 'tag', - ); - - $this->assertRequests([ - [ - 'path' => '/2/conversions/conversionRate', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}', true), - ], - ]); - } - - /** - * Test case for GetNoClickRate - * get getNoClickRate with minimal parameters. - */ - public function testGetNoClickRate0() - { - $client = $this->getClient(); - $client->getNoClickRate( - 'index', - ); - - $this->assertRequests([ - [ - 'path' => '/2/searches/noClickRate', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"index":"index"}', true), - ], - ]); - } - - /** - * Test case for GetNoClickRate - * get getNoClickRate with all parameters. - */ - public function testGetNoClickRate1() - { - $client = $this->getClient(); - $client->getNoClickRate( - 'index', - '1999-09-19', - '2001-01-01', - 'tag', - ); - - $this->assertRequests([ - [ - 'path' => '/2/searches/noClickRate', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}', true), - ], - ]); - } - - /** - * Test case for GetNoResultsRate - * get getNoResultsRate with minimal parameters. - */ - public function testGetNoResultsRate0() - { - $client = $this->getClient(); - $client->getNoResultsRate( - 'index', - ); - - $this->assertRequests([ - [ - 'path' => '/2/searches/noResultRate', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"index":"index"}', true), - ], - ]); - } - - /** - * Test case for GetNoResultsRate - * get getNoResultsRate with all parameters. - */ - public function testGetNoResultsRate1() - { - $client = $this->getClient(); - $client->getNoResultsRate( - 'index', - '1999-09-19', - '2001-01-01', - 'tag', - ); - - $this->assertRequests([ - [ - 'path' => '/2/searches/noResultRate', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}', true), - ], - ]); - } - - /** - * Test case for GetSearchesCount - * get getSearchesCount with minimal parameters. - */ - public function testGetSearchesCount0() - { - $client = $this->getClient(); - $client->getSearchesCount( - 'index', - ); - - $this->assertRequests([ - [ - 'path' => '/2/searches/count', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"index":"index"}', true), - ], - ]); - } - - /** - * Test case for GetSearchesCount - * get getSearchesCount with all parameters. - */ - public function testGetSearchesCount1() - { - $client = $this->getClient(); - $client->getSearchesCount( - 'index', - '1999-09-19', - '2001-01-01', - 'tag', - ); - - $this->assertRequests([ - [ - 'path' => '/2/searches/count', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}', true), - ], - ]); - } - - /** - * Test case for GetSearchesNoClicks - * get getSearchesNoClicks with minimal parameters. - */ - public function testGetSearchesNoClicks0() - { - $client = $this->getClient(); - $client->getSearchesNoClicks( - 'index', - ); - - $this->assertRequests([ - [ - 'path' => '/2/searches/noClicks', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"index":"index"}', true), - ], - ]); - } - - /** - * Test case for GetSearchesNoClicks - * get getSearchesNoClicks with all parameters. - */ - public function testGetSearchesNoClicks1() - { - $client = $this->getClient(); - $client->getSearchesNoClicks( - 'index', - '1999-09-19', - '2001-01-01', - 21, - 42, - 'tag', - ); - - $this->assertRequests([ - [ - 'path' => '/2/searches/noClicks', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}', true), - ], - ]); - } - - /** - * Test case for GetSearchesNoResults - * get getSearchesNoResults with minimal parameters. - */ - public function testGetSearchesNoResults0() - { - $client = $this->getClient(); - $client->getSearchesNoResults( - 'index', - ); - - $this->assertRequests([ - [ - 'path' => '/2/searches/noResults', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"index":"index"}', true), - ], - ]); - } - - /** - * Test case for GetSearchesNoResults - * get getSearchesNoResults with all parameters. - */ - public function testGetSearchesNoResults1() - { - $client = $this->getClient(); - $client->getSearchesNoResults( - 'index', - '1999-09-19', - '2001-01-01', - 21, - 42, - 'tag', - ); - - $this->assertRequests([ - [ - 'path' => '/2/searches/noResults', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}', true), - ], - ]); - } - - /** - * Test case for GetStatus - * get getStatus with minimal parameters. - */ - public function testGetStatus0() - { - $client = $this->getClient(); - $client->getStatus( - 'index', - ); - - $this->assertRequests([ - [ - 'path' => '/2/status', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"index":"index"}', true), - ], - ]); - } - - /** - * Test case for GetTopCountries - * get getTopCountries with minimal parameters. - */ - public function testGetTopCountries0() - { - $client = $this->getClient(); - $client->getTopCountries( - 'index', - ); - - $this->assertRequests([ - [ - 'path' => '/2/countries', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"index":"index"}', true), - ], - ]); - } - - /** - * Test case for GetTopCountries - * get getTopCountries with all parameters. - */ - public function testGetTopCountries1() - { - $client = $this->getClient(); - $client->getTopCountries( - 'index', - '1999-09-19', - '2001-01-01', - 21, - 42, - 'tag', - ); - - $this->assertRequests([ - [ - 'path' => '/2/countries', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}', true), - ], - ]); - } - - /** - * Test case for GetTopFilterAttributes - * get getTopFilterAttributes with minimal parameters. - */ - public function testGetTopFilterAttributes0() - { - $client = $this->getClient(); - $client->getTopFilterAttributes( - 'index', - ); - - $this->assertRequests([ - [ - 'path' => '/2/filters', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"index":"index"}', true), - ], - ]); - } - - /** - * Test case for GetTopFilterAttributes - * get getTopFilterAttributes with all parameters. - */ - public function testGetTopFilterAttributes1() - { - $client = $this->getClient(); - $client->getTopFilterAttributes( - 'index', - 'mySearch', - '1999-09-19', - '2001-01-01', - 21, - 42, - 'tag', - ); - - $this->assertRequests([ - [ - 'path' => '/2/filters', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"index":"index","search":"mySearch","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}', true), - ], - ]); - } - - /** - * Test case for GetTopFilterForAttribute - * get getTopFilterForAttribute with minimal parameters. - */ - public function testGetTopFilterForAttribute0() - { - $client = $this->getClient(); - $client->getTopFilterForAttribute( - 'myAttribute', - 'index', - ); - - $this->assertRequests([ - [ - 'path' => '/2/filters/myAttribute', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"index":"index"}', true), - ], - ]); - } - - /** - * Test case for GetTopFilterForAttribute - * get getTopFilterForAttribute with minimal parameters and multiple attributes. - */ - public function testGetTopFilterForAttribute1() - { - $client = $this->getClient(); - $client->getTopFilterForAttribute( - 'myAttribute1,myAttribute2', - 'index', - ); - - $this->assertRequests([ - [ - 'path' => '/2/filters/myAttribute1%2CmyAttribute2', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"index":"index"}', true), - ], - ]); - } - - /** - * Test case for GetTopFilterForAttribute - * get getTopFilterForAttribute with all parameters. - */ - public function testGetTopFilterForAttribute2() - { - $client = $this->getClient(); - $client->getTopFilterForAttribute( - 'myAttribute', - 'index', - 'mySearch', - '1999-09-19', - '2001-01-01', - 21, - 42, - 'tag', - ); - - $this->assertRequests([ - [ - 'path' => '/2/filters/myAttribute', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"index":"index","search":"mySearch","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}', true), - ], - ]); - } - - /** - * Test case for GetTopFilterForAttribute - * get getTopFilterForAttribute with all parameters and multiple attributes. - */ - public function testGetTopFilterForAttribute3() - { - $client = $this->getClient(); - $client->getTopFilterForAttribute( - 'myAttribute1,myAttribute2', - 'index', - 'mySearch', - '1999-09-19', - '2001-01-01', - 21, - 42, - 'tag', - ); - - $this->assertRequests([ - [ - 'path' => '/2/filters/myAttribute1%2CmyAttribute2', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"index":"index","search":"mySearch","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}', true), - ], - ]); - } - - /** - * Test case for GetTopFiltersNoResults - * get getTopFiltersNoResults with minimal parameters. - */ - public function testGetTopFiltersNoResults0() - { - $client = $this->getClient(); - $client->getTopFiltersNoResults( - 'index', - ); - - $this->assertRequests([ - [ - 'path' => '/2/filters/noResults', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"index":"index"}', true), - ], - ]); - } - - /** - * Test case for GetTopFiltersNoResults - * get getTopFiltersNoResults with all parameters. - */ - public function testGetTopFiltersNoResults1() - { - $client = $this->getClient(); - $client->getTopFiltersNoResults( - 'index', - 'mySearch', - '1999-09-19', - '2001-01-01', - 21, - 42, - 'tag', - ); - - $this->assertRequests([ - [ - 'path' => '/2/filters/noResults', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"index":"index","search":"mySearch","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}', true), - ], - ]); - } - - /** - * Test case for GetTopHits - * get getTopHits with minimal parameters. - */ - public function testGetTopHits0() - { - $client = $this->getClient(); - $client->getTopHits( - 'index', - ); - - $this->assertRequests([ - [ - 'path' => '/2/hits', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"index":"index"}', true), - ], - ]); - } - - /** - * Test case for GetTopHits - * get getTopHits with all parameters. - */ - public function testGetTopHits1() - { - $client = $this->getClient(); - $client->getTopHits( - 'index', - 'mySearch', - true, - '1999-09-19', - '2001-01-01', - 21, - 42, - 'tag', - ); - - $this->assertRequests([ - [ - 'path' => '/2/hits', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"index":"index","search":"mySearch","clickAnalytics":"true","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}', true), - ], - ]); - } - - /** - * Test case for GetTopSearches - * get getTopSearches with minimal parameters. - */ - public function testGetTopSearches0() - { - $client = $this->getClient(); - $client->getTopSearches( - 'index', - ); - - $this->assertRequests([ - [ - 'path' => '/2/searches', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"index":"index"}', true), - ], - ]); - } - - /** - * Test case for GetTopSearches - * get getTopSearches with all parameters. - */ - public function testGetTopSearches1() - { - $client = $this->getClient(); - $client->getTopSearches( - 'index', - true, - '1999-09-19', - '2001-01-01', - 'searchCount', - 'asc', - 21, - 42, - 'tag', - ); - - $this->assertRequests([ - [ - 'path' => '/2/searches', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"index":"index","clickAnalytics":"true","startDate":"1999-09-19","endDate":"2001-01-01","orderBy":"searchCount","direction":"asc","limit":"21","offset":"42","tags":"tag"}', true), - ], - ]); - } - - /** - * Test case for GetUsersCount - * get getUsersCount with minimal parameters. - */ - public function testGetUsersCount0() - { - $client = $this->getClient(); - $client->getUsersCount( - 'index', - ); - - $this->assertRequests([ - [ - 'path' => '/2/users/count', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"index":"index"}', true), - ], - ]); - } - - /** - * Test case for GetUsersCount - * get getUsersCount with all parameters. - */ - public function testGetUsersCount1() - { - $client = $this->getClient(); - $client->getUsersCount( - 'index', - '1999-09-19', - '2001-01-01', - 'tag', - ); - - $this->assertRequests([ - [ - 'path' => '/2/users/count', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}', true), - ], - ]); - } - - protected function assertRequests(array $requests) - { - $this->assertGreaterThan(0, count($requests)); - $this->assertEquals(count($requests), count($this->recordedRequests)); - - foreach ($requests as $i => $request) { - $recordedRequest = $this->recordedRequests[$i]; - - $this->assertEquals($request['method'], $recordedRequest->getMethod()); - - $this->assertEquals($request['path'], $recordedRequest->getUri()->getPath()); - - if (isset($request['body'])) { - $this->assertEquals( - json_encode($request['body']), - $recordedRequest->getBody()->getContents() - ); - } - - if (isset($request['queryParameters'])) { - $this->assertEquals( - Query::build($request['queryParameters']), - $recordedRequest->getUri()->getQuery() - ); - } - - if (isset($request['headers'])) { - foreach ($request['headers'] as $key => $value) { - $this->assertArrayHasKey( - $key, - $recordedRequest->getHeaders() - ); - $this->assertEquals( - $recordedRequest->getHeaderLine($key), - $value - ); - } - } - } - } - - protected function getClient() - { - $api = new ApiWrapper($this, AnalyticsConfig::create(getenv('ALGOLIA_APP_ID'), getenv('ALGOLIA_API_KEY')), ClusterHosts::create('127.0.0.1')); - $config = AnalyticsConfig::create('foo', 'bar'); - - return new AnalyticsClient($api, $config); - } -} diff --git a/tests/output/php/src/methods/requests/InsightsTest.php b/tests/output/php/src/methods/requests/InsightsTest.php deleted file mode 100644 index aaeb11f0e5..0000000000 --- a/tests/output/php/src/methods/requests/InsightsTest.php +++ /dev/null @@ -1,769 +0,0 @@ -recordedRequests[] = $request; - - return new Response(200, [], '{}'); - } - - /** - * Test case for CustomDelete - * allow del method for a custom path with minimal parameters. - */ - public function testCustomDelete0() - { - $client = $this->getClient(); - $client->customDelete( - '/test/minimal', - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/minimal', - 'method' => 'DELETE', - 'body' => null, - ], - ]); - } - - /** - * Test case for CustomDelete - * allow del method for a custom path with all parameters. - */ - public function testCustomDelete1() - { - $client = $this->getClient(); - $client->customDelete( - '/test/all', - ['query' => 'parameters', - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/all', - 'method' => 'DELETE', - 'body' => null, - 'queryParameters' => json_decode('{"query":"parameters"}', true), - ], - ]); - } - - /** - * Test case for CustomGet - * allow get method for a custom path with minimal parameters. - */ - public function testCustomGet0() - { - $client = $this->getClient(); - $client->customGet( - '/test/minimal', - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/minimal', - 'method' => 'GET', - 'body' => null, - ], - ]); - } - - /** - * Test case for CustomGet - * allow get method for a custom path with all parameters. - */ - public function testCustomGet1() - { - $client = $this->getClient(); - $client->customGet( - '/test/all', - ['query' => 'parameters', - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/all', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"query":"parameters"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * allow post method for a custom path with minimal parameters. - */ - public function testCustomPost0() - { - $client = $this->getClient(); - $client->customPost( - '/test/minimal', - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/minimal', - 'method' => 'POST', - 'body' => json_decode('{}'), - ], - ]); - } - - /** - * Test case for CustomPost - * allow post method for a custom path with all parameters. - */ - public function testCustomPost1() - { - $client = $this->getClient(); - $client->customPost( - '/test/all', - ['query' => 'parameters', - ], - ['body' => 'parameters', - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/all', - 'method' => 'POST', - 'body' => json_decode('{"body":"parameters"}'), - 'queryParameters' => json_decode('{"query":"parameters"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions can override default query parameters. - */ - public function testCustomPost2() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'query' => 'myQueryParameter', - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"myQueryParameter"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions merges query parameters with default ones. - */ - public function testCustomPost3() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'query2' => 'myQueryParameter', - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters","query2":"myQueryParameter"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions can override default headers. - */ - public function testCustomPost4() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - ], - 'headers' => [ - 'x-algolia-api-key' => 'myApiKey', - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters"}', true), - 'headers' => json_decode('{"x-algolia-api-key":"myApiKey"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions merges headers with default ones. - */ - public function testCustomPost5() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - ], - 'headers' => [ - 'x-algolia-api-key' => 'myApiKey', - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters"}', true), - 'headers' => json_decode('{"x-algolia-api-key":"myApiKey"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions queryParameters accepts booleans. - */ - public function testCustomPost6() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'isItWorking' => true, - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters","isItWorking":"true"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions queryParameters accepts integers. - */ - public function testCustomPost7() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'myParam' => 2, - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters","myParam":"2"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions queryParameters accepts list of string. - */ - public function testCustomPost8() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'myParam' => ['c', 'd', - ], - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters","myParam":"c,d"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions queryParameters accepts list of booleans. - */ - public function testCustomPost9() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'myParam' => [true, true, false, - ], - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters","myParam":"true,true,false"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions queryParameters accepts list of integers. - */ - public function testCustomPost10() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'myParam' => [1, 2, - ], - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters","myParam":"1,2"}', true), - ], - ]); - } - - /** - * Test case for CustomPut - * allow put method for a custom path with minimal parameters. - */ - public function testCustomPut0() - { - $client = $this->getClient(); - $client->customPut( - '/test/minimal', - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/minimal', - 'method' => 'PUT', - 'body' => json_decode('{}'), - ], - ]); - } - - /** - * Test case for CustomPut - * allow put method for a custom path with all parameters. - */ - public function testCustomPut1() - { - $client = $this->getClient(); - $client->customPut( - '/test/all', - ['query' => 'parameters', - ], - ['body' => 'parameters', - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/all', - 'method' => 'PUT', - 'body' => json_decode('{"body":"parameters"}'), - 'queryParameters' => json_decode('{"query":"parameters"}', true), - ], - ]); - } - - /** - * Test case for PushEvents - * pushEvents0. - */ - public function testPushEvents0() - { - $client = $this->getClient(); - $client->pushEvents( - ['events' => [ - ['eventType' => 'click', - 'eventName' => 'Product Clicked', - 'index' => 'products', - 'userToken' => 'user-123456', - 'authenticatedUserToken' => 'user-123456', - 'timestamp' => 1641290601962, - 'objectIDs' => [ - '9780545139700', - - '9780439784542', - ], - 'queryID' => '43b15df305339e827f0ac0bdc5ebcaa7', - 'positions' => [ - 7, - - 6, - ], - ], - ], - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/events', - 'method' => 'POST', - 'body' => json_decode('{"events":[{"eventType":"click","eventName":"Product Clicked","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"queryID":"43b15df305339e827f0ac0bdc5ebcaa7","positions":[7,6]}]}'), - ], - ]); - } - - /** - * Test case for PushEvents - * Many events type. - */ - public function testPushEvents1() - { - $client = $this->getClient(); - $client->pushEvents( - ['events' => [ - ['eventType' => 'conversion', - 'eventName' => 'Product Purchased', - 'index' => 'products', - 'userToken' => 'user-123456', - 'authenticatedUserToken' => 'user-123456', - 'timestamp' => 1641290601962, - 'objectIDs' => [ - '9780545139700', - - '9780439784542', - ], - 'queryID' => '43b15df305339e827f0ac0bdc5ebcaa7', - ], - - ['eventType' => 'view', - 'eventName' => 'Product Detail Page Viewed', - 'index' => 'products', - 'userToken' => 'user-123456', - 'authenticatedUserToken' => 'user-123456', - 'timestamp' => 1641290601962, - 'objectIDs' => [ - '9780545139700', - - '9780439784542', - ], - ], - ], - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/events', - 'method' => 'POST', - 'body' => json_decode('{"events":[{"eventType":"conversion","eventName":"Product Purchased","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"queryID":"43b15df305339e827f0ac0bdc5ebcaa7"},{"eventType":"view","eventName":"Product Detail Page Viewed","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"]}]}'), - ], - ]); - } - - /** - * Test case for PushEvents - * ConvertedObjectIDsAfterSearch. - */ - public function testPushEvents2() - { - $client = $this->getClient(); - $client->pushEvents( - ['events' => [ - ['eventType' => 'conversion', - 'eventName' => 'Product Purchased', - 'index' => 'products', - 'userToken' => 'user-123456', - 'authenticatedUserToken' => 'user-123456', - 'timestamp' => 1641290601962, - 'objectIDs' => [ - '9780545139700', - - '9780439784542', - ], - 'queryID' => '43b15df305339e827f0ac0bdc5ebcaa7', - ], - ], - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/events', - 'method' => 'POST', - 'body' => json_decode('{"events":[{"eventType":"conversion","eventName":"Product Purchased","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"queryID":"43b15df305339e827f0ac0bdc5ebcaa7"}]}'), - ], - ]); - } - - /** - * Test case for PushEvents - * ViewedObjectIDs. - */ - public function testPushEvents3() - { - $client = $this->getClient(); - $client->pushEvents( - ['events' => [ - ['eventType' => 'view', - 'eventName' => 'Product Detail Page Viewed', - 'index' => 'products', - 'userToken' => 'user-123456', - 'authenticatedUserToken' => 'user-123456', - 'timestamp' => 1641290601962, - 'objectIDs' => [ - '9780545139700', - - '9780439784542', - ], - ], - ], - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/events', - 'method' => 'POST', - 'body' => json_decode('{"events":[{"eventType":"view","eventName":"Product Detail Page Viewed","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"]}]}'), - ], - ]); - } - - /** - * Test case for PushEvents - * AddedToCartObjectIDs. - */ - public function testPushEvents4() - { - $client = $this->getClient(); - $client->pushEvents( - ['events' => [ - ['eventType' => 'conversion', - 'eventSubtype' => 'addToCart', - 'eventName' => 'Product Added To Cart', - 'index' => 'products', - 'queryID' => '43b15df305339e827f0ac0bdc5ebcaa7', - 'userToken' => 'user-123456', - 'authenticatedUserToken' => 'user-123456', - 'timestamp' => 1641290601962, - 'objectIDs' => [ - '9780545139700', - - '9780439784542', - ], - 'objectData' => [ - ['price' => 19.99, - 'quantity' => 10, - 'discount' => 2.5, - ], - - ['price' => '8$', - 'quantity' => 7, - 'discount' => '30%', - ], - ], - 'currency' => 'USD', - ], - ], - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/events', - 'method' => 'POST', - 'body' => json_decode('{"events":[{"eventType":"conversion","eventSubtype":"addToCart","eventName":"Product Added To Cart","index":"products","queryID":"43b15df305339e827f0ac0bdc5ebcaa7","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"objectData":[{"price":19.99,"quantity":10,"discount":2.5},{"price":"8$","quantity":7,"discount":"30%"}],"currency":"USD"}]}'), - ], - ]); - } - - protected function assertRequests(array $requests) - { - $this->assertGreaterThan(0, count($requests)); - $this->assertEquals(count($requests), count($this->recordedRequests)); - - foreach ($requests as $i => $request) { - $recordedRequest = $this->recordedRequests[$i]; - - $this->assertEquals($request['method'], $recordedRequest->getMethod()); - - $this->assertEquals($request['path'], $recordedRequest->getUri()->getPath()); - - if (isset($request['body'])) { - $this->assertEquals( - json_encode($request['body']), - $recordedRequest->getBody()->getContents() - ); - } - - if (isset($request['queryParameters'])) { - $this->assertEquals( - Query::build($request['queryParameters']), - $recordedRequest->getUri()->getQuery() - ); - } - - if (isset($request['headers'])) { - foreach ($request['headers'] as $key => $value) { - $this->assertArrayHasKey( - $key, - $recordedRequest->getHeaders() - ); - $this->assertEquals( - $recordedRequest->getHeaderLine($key), - $value - ); - } - } - } - } - - protected function getClient() - { - $api = new ApiWrapper($this, InsightsConfig::create(getenv('ALGOLIA_APP_ID'), getenv('ALGOLIA_API_KEY')), ClusterHosts::create('127.0.0.1')); - $config = InsightsConfig::create('foo', 'bar'); - - return new InsightsClient($api, $config); - } -} diff --git a/tests/output/php/src/methods/requests/MonitoringTest.php b/tests/output/php/src/methods/requests/MonitoringTest.php deleted file mode 100644 index 8672c3810a..0000000000 --- a/tests/output/php/src/methods/requests/MonitoringTest.php +++ /dev/null @@ -1,739 +0,0 @@ -recordedRequests[] = $request; - - return new Response(200, [], '{}'); - } - - /** - * Test case for CustomDelete - * allow del method for a custom path with minimal parameters. - */ - public function testCustomDelete0() - { - $client = $this->getClient(); - $client->customDelete( - '/test/minimal', - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/minimal', - 'method' => 'DELETE', - 'body' => null, - ], - ]); - } - - /** - * Test case for CustomDelete - * allow del method for a custom path with all parameters. - */ - public function testCustomDelete1() - { - $client = $this->getClient(); - $client->customDelete( - '/test/all', - ['query' => 'parameters', - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/all', - 'method' => 'DELETE', - 'body' => null, - 'queryParameters' => json_decode('{"query":"parameters"}', true), - ], - ]); - } - - /** - * Test case for CustomGet - * allow get method for a custom path with minimal parameters. - */ - public function testCustomGet0() - { - $client = $this->getClient(); - $client->customGet( - '/test/minimal', - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/minimal', - 'method' => 'GET', - 'body' => null, - ], - ]); - } - - /** - * Test case for CustomGet - * allow get method for a custom path with all parameters. - */ - public function testCustomGet1() - { - $client = $this->getClient(); - $client->customGet( - '/test/all', - ['query' => 'parameters', - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/all', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"query":"parameters"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * allow post method for a custom path with minimal parameters. - */ - public function testCustomPost0() - { - $client = $this->getClient(); - $client->customPost( - '/test/minimal', - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/minimal', - 'method' => 'POST', - 'body' => json_decode('{}'), - ], - ]); - } - - /** - * Test case for CustomPost - * allow post method for a custom path with all parameters. - */ - public function testCustomPost1() - { - $client = $this->getClient(); - $client->customPost( - '/test/all', - ['query' => 'parameters', - ], - ['body' => 'parameters', - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/all', - 'method' => 'POST', - 'body' => json_decode('{"body":"parameters"}'), - 'queryParameters' => json_decode('{"query":"parameters"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions can override default query parameters. - */ - public function testCustomPost2() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'query' => 'myQueryParameter', - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"myQueryParameter"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions merges query parameters with default ones. - */ - public function testCustomPost3() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'query2' => 'myQueryParameter', - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters","query2":"myQueryParameter"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions can override default headers. - */ - public function testCustomPost4() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - ], - 'headers' => [ - 'x-algolia-api-key' => 'myApiKey', - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters"}', true), - 'headers' => json_decode('{"x-algolia-api-key":"myApiKey"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions merges headers with default ones. - */ - public function testCustomPost5() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - ], - 'headers' => [ - 'x-algolia-api-key' => 'myApiKey', - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters"}', true), - 'headers' => json_decode('{"x-algolia-api-key":"myApiKey"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions queryParameters accepts booleans. - */ - public function testCustomPost6() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'isItWorking' => true, - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters","isItWorking":"true"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions queryParameters accepts integers. - */ - public function testCustomPost7() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'myParam' => 2, - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters","myParam":"2"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions queryParameters accepts list of string. - */ - public function testCustomPost8() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'myParam' => ['c', 'd', - ], - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters","myParam":"c,d"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions queryParameters accepts list of booleans. - */ - public function testCustomPost9() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'myParam' => [true, true, false, - ], - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters","myParam":"true,true,false"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions queryParameters accepts list of integers. - */ - public function testCustomPost10() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'myParam' => [1, 2, - ], - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters","myParam":"1,2"}', true), - ], - ]); - } - - /** - * Test case for CustomPut - * allow put method for a custom path with minimal parameters. - */ - public function testCustomPut0() - { - $client = $this->getClient(); - $client->customPut( - '/test/minimal', - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/minimal', - 'method' => 'PUT', - 'body' => json_decode('{}'), - ], - ]); - } - - /** - * Test case for CustomPut - * allow put method for a custom path with all parameters. - */ - public function testCustomPut1() - { - $client = $this->getClient(); - $client->customPut( - '/test/all', - ['query' => 'parameters', - ], - ['body' => 'parameters', - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/all', - 'method' => 'PUT', - 'body' => json_decode('{"body":"parameters"}'), - 'queryParameters' => json_decode('{"query":"parameters"}', true), - ], - ]); - } - - /** - * Test case for GetClusterIncidents - * getClusterIncidents. - */ - public function testGetClusterIncidents0() - { - $client = $this->getClient(); - $client->getClusterIncidents( - 'c1-de', - ); - - $this->assertRequests([ - [ - 'path' => '/1/incidents/c1-de', - 'method' => 'GET', - 'body' => null, - ], - ]); - } - - /** - * Test case for GetClusterStatus - * getClusterStatus. - */ - public function testGetClusterStatus0() - { - $client = $this->getClient(); - $client->getClusterStatus( - 'c1-de', - ); - - $this->assertRequests([ - [ - 'path' => '/1/status/c1-de', - 'method' => 'GET', - 'body' => null, - ], - ]); - } - - /** - * Test case for GetIncidents - * getIncidents. - */ - public function testGetIncidents0() - { - $client = $this->getClient(); - $client->getIncidents(); - - $this->assertRequests([ - [ - 'path' => '/1/incidents', - 'method' => 'GET', - 'body' => null, - ], - ]); - } - - /** - * Test case for GetIndexingTime - * getIndexingTime. - */ - public function testGetIndexingTime0() - { - $client = $this->getClient(); - $client->getIndexingTime( - 'c1-de', - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexing/c1-de', - 'method' => 'GET', - 'body' => null, - ], - ]); - } - - /** - * Test case for GetInventory - * getInventory. - */ - public function testGetInventory0() - { - $client = $this->getClient(); - $client->getInventory(); - - $this->assertRequests([ - [ - 'path' => '/1/inventory/servers', - 'method' => 'GET', - 'body' => null, - ], - ]); - } - - /** - * Test case for GetLatency - * getLatency. - */ - public function testGetLatency0() - { - $client = $this->getClient(); - $client->getLatency( - 'c1-de', - ); - - $this->assertRequests([ - [ - 'path' => '/1/latency/c1-de', - 'method' => 'GET', - 'body' => null, - ], - ]); - } - - /** - * Test case for GetMetrics - * getMetrics. - */ - public function testGetMetrics0() - { - $client = $this->getClient(); - $client->getMetrics( - 'avg_build_time', - 'minute', - ); - - $this->assertRequests([ - [ - 'path' => '/1/infrastructure/avg_build_time/period/minute', - 'method' => 'GET', - 'body' => null, - ], - ]); - } - - /** - * Test case for GetReachability - * getReachability. - */ - public function testGetReachability0() - { - $client = $this->getClient(); - $client->getReachability( - 'c1-de', - ); - - $this->assertRequests([ - [ - 'path' => '/1/reachability/c1-de/probes', - 'method' => 'GET', - 'body' => null, - ], - ]); - } - - /** - * Test case for GetStatus - * getStatus. - */ - public function testGetStatus0() - { - $client = $this->getClient(); - $client->getStatus(); - - $this->assertRequests([ - [ - 'path' => '/1/status', - 'method' => 'GET', - 'body' => null, - ], - ]); - } - - protected function assertRequests(array $requests) - { - $this->assertGreaterThan(0, count($requests)); - $this->assertEquals(count($requests), count($this->recordedRequests)); - - foreach ($requests as $i => $request) { - $recordedRequest = $this->recordedRequests[$i]; - - $this->assertEquals($request['method'], $recordedRequest->getMethod()); - - $this->assertEquals($request['path'], $recordedRequest->getUri()->getPath()); - - if (isset($request['body'])) { - $this->assertEquals( - json_encode($request['body']), - $recordedRequest->getBody()->getContents() - ); - } - - if (isset($request['queryParameters'])) { - $this->assertEquals( - Query::build($request['queryParameters']), - $recordedRequest->getUri()->getQuery() - ); - } - - if (isset($request['headers'])) { - foreach ($request['headers'] as $key => $value) { - $this->assertArrayHasKey( - $key, - $recordedRequest->getHeaders() - ); - $this->assertEquals( - $recordedRequest->getHeaderLine($key), - $value - ); - } - } - } - } - - protected function getClient() - { - $api = new ApiWrapper($this, MonitoringConfig::create(getenv('ALGOLIA_APP_ID'), getenv('ALGOLIA_API_KEY')), ClusterHosts::create('127.0.0.1')); - $config = MonitoringConfig::create('foo', 'bar'); - - return new MonitoringClient($api, $config); - } -} diff --git a/tests/output/php/src/methods/requests/PersonalizationTest.php b/tests/output/php/src/methods/requests/PersonalizationTest.php deleted file mode 100644 index ea5e5f1af9..0000000000 --- a/tests/output/php/src/methods/requests/PersonalizationTest.php +++ /dev/null @@ -1,654 +0,0 @@ -recordedRequests[] = $request; - - return new Response(200, [], '{}'); - } - - /** - * Test case for CustomDelete - * allow del method for a custom path with minimal parameters. - */ - public function testCustomDelete0() - { - $client = $this->getClient(); - $client->customDelete( - '/test/minimal', - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/minimal', - 'method' => 'DELETE', - 'body' => null, - ], - ]); - } - - /** - * Test case for CustomDelete - * allow del method for a custom path with all parameters. - */ - public function testCustomDelete1() - { - $client = $this->getClient(); - $client->customDelete( - '/test/all', - ['query' => 'parameters', - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/all', - 'method' => 'DELETE', - 'body' => null, - 'queryParameters' => json_decode('{"query":"parameters"}', true), - ], - ]); - } - - /** - * Test case for CustomGet - * allow get method for a custom path with minimal parameters. - */ - public function testCustomGet0() - { - $client = $this->getClient(); - $client->customGet( - '/test/minimal', - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/minimal', - 'method' => 'GET', - 'body' => null, - ], - ]); - } - - /** - * Test case for CustomGet - * allow get method for a custom path with all parameters. - */ - public function testCustomGet1() - { - $client = $this->getClient(); - $client->customGet( - '/test/all', - ['query' => 'parameters', - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/all', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"query":"parameters"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * allow post method for a custom path with minimal parameters. - */ - public function testCustomPost0() - { - $client = $this->getClient(); - $client->customPost( - '/test/minimal', - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/minimal', - 'method' => 'POST', - 'body' => json_decode('{}'), - ], - ]); - } - - /** - * Test case for CustomPost - * allow post method for a custom path with all parameters. - */ - public function testCustomPost1() - { - $client = $this->getClient(); - $client->customPost( - '/test/all', - ['query' => 'parameters', - ], - ['body' => 'parameters', - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/all', - 'method' => 'POST', - 'body' => json_decode('{"body":"parameters"}'), - 'queryParameters' => json_decode('{"query":"parameters"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions can override default query parameters. - */ - public function testCustomPost2() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'query' => 'myQueryParameter', - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"myQueryParameter"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions merges query parameters with default ones. - */ - public function testCustomPost3() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'query2' => 'myQueryParameter', - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters","query2":"myQueryParameter"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions can override default headers. - */ - public function testCustomPost4() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - ], - 'headers' => [ - 'x-algolia-api-key' => 'myApiKey', - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters"}', true), - 'headers' => json_decode('{"x-algolia-api-key":"myApiKey"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions merges headers with default ones. - */ - public function testCustomPost5() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - ], - 'headers' => [ - 'x-algolia-api-key' => 'myApiKey', - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters"}', true), - 'headers' => json_decode('{"x-algolia-api-key":"myApiKey"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions queryParameters accepts booleans. - */ - public function testCustomPost6() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'isItWorking' => true, - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters","isItWorking":"true"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions queryParameters accepts integers. - */ - public function testCustomPost7() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'myParam' => 2, - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters","myParam":"2"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions queryParameters accepts list of string. - */ - public function testCustomPost8() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'myParam' => ['c', 'd', - ], - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters","myParam":"c,d"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions queryParameters accepts list of booleans. - */ - public function testCustomPost9() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'myParam' => [true, true, false, - ], - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters","myParam":"true,true,false"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions queryParameters accepts list of integers. - */ - public function testCustomPost10() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'myParam' => [1, 2, - ], - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters","myParam":"1,2"}', true), - ], - ]); - } - - /** - * Test case for CustomPut - * allow put method for a custom path with minimal parameters. - */ - public function testCustomPut0() - { - $client = $this->getClient(); - $client->customPut( - '/test/minimal', - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/minimal', - 'method' => 'PUT', - 'body' => json_decode('{}'), - ], - ]); - } - - /** - * Test case for CustomPut - * allow put method for a custom path with all parameters. - */ - public function testCustomPut1() - { - $client = $this->getClient(); - $client->customPut( - '/test/all', - ['query' => 'parameters', - ], - ['body' => 'parameters', - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/all', - 'method' => 'PUT', - 'body' => json_decode('{"body":"parameters"}'), - 'queryParameters' => json_decode('{"query":"parameters"}', true), - ], - ]); - } - - /** - * Test case for DeleteUserProfile - * delete deleteUserProfile. - */ - public function testDeleteUserProfile0() - { - $client = $this->getClient(); - $client->deleteUserProfile( - 'UserToken', - ); - - $this->assertRequests([ - [ - 'path' => '/1/profiles/UserToken', - 'method' => 'DELETE', - 'body' => null, - ], - ]); - } - - /** - * Test case for GetPersonalizationStrategy - * get getPersonalizationStrategy. - */ - public function testGetPersonalizationStrategy0() - { - $client = $this->getClient(); - $client->getPersonalizationStrategy(); - - $this->assertRequests([ - [ - 'path' => '/1/strategies/personalization', - 'method' => 'GET', - 'body' => null, - ], - ]); - } - - /** - * Test case for GetUserTokenProfile - * get getUserTokenProfile. - */ - public function testGetUserTokenProfile0() - { - $client = $this->getClient(); - $client->getUserTokenProfile( - 'UserToken', - ); - - $this->assertRequests([ - [ - 'path' => '/1/profiles/personalization/UserToken', - 'method' => 'GET', - 'body' => null, - ], - ]); - } - - /** - * Test case for SetPersonalizationStrategy - * set setPersonalizationStrategy. - */ - public function testSetPersonalizationStrategy0() - { - $client = $this->getClient(); - $client->setPersonalizationStrategy( - ['eventScoring' => [ - ['score' => 42, - 'eventName' => 'Algolia', - 'eventType' => 'Event', - ], - ], - 'facetScoring' => [ - ['score' => 42, - 'facetName' => 'Event', - ], - ], - 'personalizationImpact' => 42, - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/strategies/personalization', - 'method' => 'POST', - 'body' => json_decode('{"eventScoring":[{"score":42,"eventName":"Algolia","eventType":"Event"}],"facetScoring":[{"score":42,"facetName":"Event"}],"personalizationImpact":42}'), - ], - ]); - } - - protected function assertRequests(array $requests) - { - $this->assertGreaterThan(0, count($requests)); - $this->assertEquals(count($requests), count($this->recordedRequests)); - - foreach ($requests as $i => $request) { - $recordedRequest = $this->recordedRequests[$i]; - - $this->assertEquals($request['method'], $recordedRequest->getMethod()); - - $this->assertEquals($request['path'], $recordedRequest->getUri()->getPath()); - - if (isset($request['body'])) { - $this->assertEquals( - json_encode($request['body']), - $recordedRequest->getBody()->getContents() - ); - } - - if (isset($request['queryParameters'])) { - $this->assertEquals( - Query::build($request['queryParameters']), - $recordedRequest->getUri()->getQuery() - ); - } - - if (isset($request['headers'])) { - foreach ($request['headers'] as $key => $value) { - $this->assertArrayHasKey( - $key, - $recordedRequest->getHeaders() - ); - $this->assertEquals( - $recordedRequest->getHeaderLine($key), - $value - ); - } - } - } - } - - protected function getClient() - { - $api = new ApiWrapper($this, PersonalizationConfig::create(getenv('ALGOLIA_APP_ID'), getenv('ALGOLIA_API_KEY')), ClusterHosts::create('127.0.0.1')); - $config = PersonalizationConfig::create('foo', 'bar'); - - return new PersonalizationClient($api, $config); - } -} diff --git a/tests/output/php/src/methods/requests/QuerySuggestionsTest.php b/tests/output/php/src/methods/requests/QuerySuggestionsTest.php deleted file mode 100644 index 0444aa84c8..0000000000 --- a/tests/output/php/src/methods/requests/QuerySuggestionsTest.php +++ /dev/null @@ -1,754 +0,0 @@ -recordedRequests[] = $request; - - return new Response(200, [], '{}'); - } - - /** - * Test case for CreateConfig - * createConfig0. - */ - public function testCreateConfig0() - { - $client = $this->getClient(); - $client->createConfig( - ['indexName' => 'theIndexName', - 'sourceIndices' => [ - ['indexName' => 'testIndex', - 'facets' => [ - ['attribute' => 'test', - ], - ], - 'generate' => [ - [ - 'facetA', - - 'facetB', - ], - - [ - 'facetC', - ], - ], - ], - ], - 'languages' => [ - 'french', - ], - 'exclude' => [ - 'test', - ], - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/configs', - 'method' => 'POST', - 'body' => json_decode('{"indexName":"theIndexName","sourceIndices":[{"indexName":"testIndex","facets":[{"attribute":"test"}],"generate":[["facetA","facetB"],["facetC"]]}],"languages":["french"],"exclude":["test"]}'), - ], - ]); - } - - /** - * Test case for CustomDelete - * allow del method for a custom path with minimal parameters. - */ - public function testCustomDelete0() - { - $client = $this->getClient(); - $client->customDelete( - '/test/minimal', - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/minimal', - 'method' => 'DELETE', - 'body' => null, - ], - ]); - } - - /** - * Test case for CustomDelete - * allow del method for a custom path with all parameters. - */ - public function testCustomDelete1() - { - $client = $this->getClient(); - $client->customDelete( - '/test/all', - ['query' => 'parameters', - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/all', - 'method' => 'DELETE', - 'body' => null, - 'queryParameters' => json_decode('{"query":"parameters"}', true), - ], - ]); - } - - /** - * Test case for CustomGet - * allow get method for a custom path with minimal parameters. - */ - public function testCustomGet0() - { - $client = $this->getClient(); - $client->customGet( - '/test/minimal', - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/minimal', - 'method' => 'GET', - 'body' => null, - ], - ]); - } - - /** - * Test case for CustomGet - * allow get method for a custom path with all parameters. - */ - public function testCustomGet1() - { - $client = $this->getClient(); - $client->customGet( - '/test/all', - ['query' => 'parameters', - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/all', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"query":"parameters"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * allow post method for a custom path with minimal parameters. - */ - public function testCustomPost0() - { - $client = $this->getClient(); - $client->customPost( - '/test/minimal', - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/minimal', - 'method' => 'POST', - 'body' => json_decode('{}'), - ], - ]); - } - - /** - * Test case for CustomPost - * allow post method for a custom path with all parameters. - */ - public function testCustomPost1() - { - $client = $this->getClient(); - $client->customPost( - '/test/all', - ['query' => 'parameters', - ], - ['body' => 'parameters', - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/all', - 'method' => 'POST', - 'body' => json_decode('{"body":"parameters"}'), - 'queryParameters' => json_decode('{"query":"parameters"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions can override default query parameters. - */ - public function testCustomPost2() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'query' => 'myQueryParameter', - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"myQueryParameter"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions merges query parameters with default ones. - */ - public function testCustomPost3() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'query2' => 'myQueryParameter', - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters","query2":"myQueryParameter"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions can override default headers. - */ - public function testCustomPost4() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - ], - 'headers' => [ - 'x-algolia-api-key' => 'myApiKey', - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters"}', true), - 'headers' => json_decode('{"x-algolia-api-key":"myApiKey"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions merges headers with default ones. - */ - public function testCustomPost5() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - ], - 'headers' => [ - 'x-algolia-api-key' => 'myApiKey', - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters"}', true), - 'headers' => json_decode('{"x-algolia-api-key":"myApiKey"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions queryParameters accepts booleans. - */ - public function testCustomPost6() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'isItWorking' => true, - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters","isItWorking":"true"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions queryParameters accepts integers. - */ - public function testCustomPost7() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'myParam' => 2, - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters","myParam":"2"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions queryParameters accepts list of string. - */ - public function testCustomPost8() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'myParam' => ['c', 'd', - ], - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters","myParam":"c,d"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions queryParameters accepts list of booleans. - */ - public function testCustomPost9() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'myParam' => [true, true, false, - ], - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters","myParam":"true,true,false"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions queryParameters accepts list of integers. - */ - public function testCustomPost10() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'myParam' => [1, 2, - ], - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters","myParam":"1,2"}', true), - ], - ]); - } - - /** - * Test case for CustomPut - * allow put method for a custom path with minimal parameters. - */ - public function testCustomPut0() - { - $client = $this->getClient(); - $client->customPut( - '/test/minimal', - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/minimal', - 'method' => 'PUT', - 'body' => json_decode('{}'), - ], - ]); - } - - /** - * Test case for CustomPut - * allow put method for a custom path with all parameters. - */ - public function testCustomPut1() - { - $client = $this->getClient(); - $client->customPut( - '/test/all', - ['query' => 'parameters', - ], - ['body' => 'parameters', - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/all', - 'method' => 'PUT', - 'body' => json_decode('{"body":"parameters"}'), - 'queryParameters' => json_decode('{"query":"parameters"}', true), - ], - ]); - } - - /** - * Test case for DeleteConfig - * deleteConfig0. - */ - public function testDeleteConfig0() - { - $client = $this->getClient(); - $client->deleteConfig( - 'theIndexName', - ); - - $this->assertRequests([ - [ - 'path' => '/1/configs/theIndexName', - 'method' => 'DELETE', - 'body' => null, - ], - ]); - } - - /** - * Test case for GetAllConfigs - * getAllConfigs0. - */ - public function testGetAllConfigs0() - { - $client = $this->getClient(); - $client->getAllConfigs(); - - $this->assertRequests([ - [ - 'path' => '/1/configs', - 'method' => 'GET', - 'body' => null, - ], - ]); - } - - /** - * Test case for GetConfig - * getConfig0. - */ - public function testGetConfig0() - { - $client = $this->getClient(); - $client->getConfig( - 'theIndexName', - ); - - $this->assertRequests([ - [ - 'path' => '/1/configs/theIndexName', - 'method' => 'GET', - 'body' => null, - ], - ]); - } - - /** - * Test case for GetConfigStatus - * getConfigStatus0. - */ - public function testGetConfigStatus0() - { - $client = $this->getClient(); - $client->getConfigStatus( - 'theIndexName', - ); - - $this->assertRequests([ - [ - 'path' => '/1/configs/theIndexName/status', - 'method' => 'GET', - 'body' => null, - ], - ]); - } - - /** - * Test case for GetLogFile - * getLogFile0. - */ - public function testGetLogFile0() - { - $client = $this->getClient(); - $client->getLogFile( - 'theIndexName', - ); - - $this->assertRequests([ - [ - 'path' => '/1/logs/theIndexName', - 'method' => 'GET', - 'body' => null, - ], - ]); - } - - /** - * Test case for UpdateConfig - * updateConfig0. - */ - public function testUpdateConfig0() - { - $client = $this->getClient(); - $client->updateConfig( - 'theIndexName', - ['sourceIndices' => [ - ['indexName' => 'testIndex', - 'facets' => [ - ['attribute' => 'test', - ], - ], - 'generate' => [ - [ - 'facetA', - - 'facetB', - ], - - [ - 'facetC', - ], - ], - ], - ], - 'languages' => [ - 'french', - ], - 'exclude' => [ - 'test', - ], - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/configs/theIndexName', - 'method' => 'PUT', - 'body' => json_decode('{"sourceIndices":[{"indexName":"testIndex","facets":[{"attribute":"test"}],"generate":[["facetA","facetB"],["facetC"]]}],"languages":["french"],"exclude":["test"]}'), - ], - ]); - } - - protected function assertRequests(array $requests) - { - $this->assertGreaterThan(0, count($requests)); - $this->assertEquals(count($requests), count($this->recordedRequests)); - - foreach ($requests as $i => $request) { - $recordedRequest = $this->recordedRequests[$i]; - - $this->assertEquals($request['method'], $recordedRequest->getMethod()); - - $this->assertEquals($request['path'], $recordedRequest->getUri()->getPath()); - - if (isset($request['body'])) { - $this->assertEquals( - json_encode($request['body']), - $recordedRequest->getBody()->getContents() - ); - } - - if (isset($request['queryParameters'])) { - $this->assertEquals( - Query::build($request['queryParameters']), - $recordedRequest->getUri()->getQuery() - ); - } - - if (isset($request['headers'])) { - foreach ($request['headers'] as $key => $value) { - $this->assertArrayHasKey( - $key, - $recordedRequest->getHeaders() - ); - $this->assertEquals( - $recordedRequest->getHeaderLine($key), - $value - ); - } - } - } - } - - protected function getClient() - { - $api = new ApiWrapper($this, QuerySuggestionsConfig::create(getenv('ALGOLIA_APP_ID'), getenv('ALGOLIA_API_KEY')), ClusterHosts::create('127.0.0.1')); - $config = QuerySuggestionsConfig::create('foo', 'bar'); - - return new QuerySuggestionsClient($api, $config); - } -} diff --git a/tests/output/php/src/methods/requests/RecommendTest.php b/tests/output/php/src/methods/requests/RecommendTest.php deleted file mode 100644 index 550b0fd812..0000000000 --- a/tests/output/php/src/methods/requests/RecommendTest.php +++ /dev/null @@ -1,896 +0,0 @@ -recordedRequests[] = $request; - - return new Response(200, [], '{}'); - } - - /** - * Test case for CustomDelete - * allow del method for a custom path with minimal parameters. - */ - public function testCustomDelete0() - { - $client = $this->getClient(); - $client->customDelete( - '/test/minimal', - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/minimal', - 'method' => 'DELETE', - 'body' => null, - ], - ]); - } - - /** - * Test case for CustomDelete - * allow del method for a custom path with all parameters. - */ - public function testCustomDelete1() - { - $client = $this->getClient(); - $client->customDelete( - '/test/all', - ['query' => 'parameters', - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/all', - 'method' => 'DELETE', - 'body' => null, - 'queryParameters' => json_decode('{"query":"parameters"}', true), - ], - ]); - } - - /** - * Test case for CustomGet - * allow get method for a custom path with minimal parameters. - */ - public function testCustomGet0() - { - $client = $this->getClient(); - $client->customGet( - '/test/minimal', - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/minimal', - 'method' => 'GET', - 'body' => null, - ], - ]); - } - - /** - * Test case for CustomGet - * allow get method for a custom path with all parameters. - */ - public function testCustomGet1() - { - $client = $this->getClient(); - $client->customGet( - '/test/all', - ['query' => 'parameters', - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/all', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"query":"parameters"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * allow post method for a custom path with minimal parameters. - */ - public function testCustomPost0() - { - $client = $this->getClient(); - $client->customPost( - '/test/minimal', - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/minimal', - 'method' => 'POST', - 'body' => json_decode('{}'), - ], - ]); - } - - /** - * Test case for CustomPost - * allow post method for a custom path with all parameters. - */ - public function testCustomPost1() - { - $client = $this->getClient(); - $client->customPost( - '/test/all', - ['query' => 'parameters', - ], - ['body' => 'parameters', - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/all', - 'method' => 'POST', - 'body' => json_decode('{"body":"parameters"}'), - 'queryParameters' => json_decode('{"query":"parameters"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions can override default query parameters. - */ - public function testCustomPost2() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'query' => 'myQueryParameter', - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"myQueryParameter"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions merges query parameters with default ones. - */ - public function testCustomPost3() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'query2' => 'myQueryParameter', - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters","query2":"myQueryParameter"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions can override default headers. - */ - public function testCustomPost4() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - ], - 'headers' => [ - 'x-algolia-api-key' => 'myApiKey', - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters"}', true), - 'headers' => json_decode('{"x-algolia-api-key":"myApiKey"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions merges headers with default ones. - */ - public function testCustomPost5() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - ], - 'headers' => [ - 'x-algolia-api-key' => 'myApiKey', - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters"}', true), - 'headers' => json_decode('{"x-algolia-api-key":"myApiKey"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions queryParameters accepts booleans. - */ - public function testCustomPost6() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'isItWorking' => true, - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters","isItWorking":"true"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions queryParameters accepts integers. - */ - public function testCustomPost7() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'myParam' => 2, - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters","myParam":"2"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions queryParameters accepts list of string. - */ - public function testCustomPost8() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'myParam' => ['c', 'd', - ], - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters","myParam":"c,d"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions queryParameters accepts list of booleans. - */ - public function testCustomPost9() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'myParam' => [true, true, false, - ], - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters","myParam":"true,true,false"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions queryParameters accepts list of integers. - */ - public function testCustomPost10() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'myParam' => [1, 2, - ], - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters","myParam":"1,2"}', true), - ], - ]); - } - - /** - * Test case for CustomPut - * allow put method for a custom path with minimal parameters. - */ - public function testCustomPut0() - { - $client = $this->getClient(); - $client->customPut( - '/test/minimal', - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/minimal', - 'method' => 'PUT', - 'body' => json_decode('{}'), - ], - ]); - } - - /** - * Test case for CustomPut - * allow put method for a custom path with all parameters. - */ - public function testCustomPut1() - { - $client = $this->getClient(); - $client->customPut( - '/test/all', - ['query' => 'parameters', - ], - ['body' => 'parameters', - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/all', - 'method' => 'PUT', - 'body' => json_decode('{"body":"parameters"}'), - 'queryParameters' => json_decode('{"query":"parameters"}', true), - ], - ]); - } - - /** - * Test case for DeleteRecommendRule - * deleteRecommendRule0. - */ - public function testDeleteRecommendRule0() - { - $client = $this->getClient(); - $client->deleteRecommendRule( - 'indexName', - 'related-products', - 'objectID', - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/indexName/related-products/recommend/rules/objectID', - 'method' => 'DELETE', - 'body' => null, - ], - ]); - } - - /** - * Test case for GetRecommendRule - * getRecommendRule0. - */ - public function testGetRecommendRule0() - { - $client = $this->getClient(); - $client->getRecommendRule( - 'indexName', - 'related-products', - 'objectID', - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/indexName/related-products/recommend/rules/objectID', - 'method' => 'GET', - 'body' => null, - ], - ]); - } - - /** - * Test case for GetRecommendStatus - * getRecommendStatus0. - */ - public function testGetRecommendStatus0() - { - $client = $this->getClient(); - $client->getRecommendStatus( - 'indexName', - 'related-products', - 12345, - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/indexName/related-products/task/12345', - 'method' => 'GET', - 'body' => null, - ], - ]); - } - - /** - * Test case for GetRecommendations - * get recommendations for recommend model with minimal parameters. - */ - public function testGetRecommendations0() - { - $client = $this->getClient(); - $client->getRecommendations( - ['requests' => [ - ['indexName' => 'indexName', - 'objectID' => 'objectID', - 'model' => 'related-products', - 'threshold' => 42, - ], - ], - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/*/recommendations', - 'method' => 'POST', - 'body' => json_decode('{"requests":[{"indexName":"indexName","objectID":"objectID","model":"related-products","threshold":42}]}'), - ], - ]); - } - - /** - * Test case for GetRecommendations - * get recommendations for recommend model with all parameters. - */ - public function testGetRecommendations1() - { - $client = $this->getClient(); - $client->getRecommendations( - ['requests' => [ - ['indexName' => 'indexName', - 'objectID' => 'objectID', - 'model' => 'related-products', - 'threshold' => 42, - 'maxRecommendations' => 10, - 'queryParameters' => ['query' => 'myQuery', - 'facetFilters' => [ - 'query', - ], - ], - 'fallbackParameters' => ['query' => 'myQuery', - 'facetFilters' => [ - 'fallback', - ], - ], - ], - ], - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/*/recommendations', - 'method' => 'POST', - 'body' => json_decode('{"requests":[{"indexName":"indexName","objectID":"objectID","model":"related-products","threshold":42,"maxRecommendations":10,"queryParameters":{"query":"myQuery","facetFilters":["query"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback"]}}]}'), - ], - ]); - } - - /** - * Test case for GetRecommendations - * get recommendations for trending model with minimal parameters. - */ - public function testGetRecommendations2() - { - $client = $this->getClient(); - $client->getRecommendations( - ['requests' => [ - ['indexName' => 'indexName', - 'model' => 'trending-items', - 'threshold' => 42, - ], - ], - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/*/recommendations', - 'method' => 'POST', - 'body' => json_decode('{"requests":[{"indexName":"indexName","model":"trending-items","threshold":42}]}'), - ], - ]); - } - - /** - * Test case for GetRecommendations - * get recommendations for trending model with all parameters. - */ - public function testGetRecommendations3() - { - $client = $this->getClient(); - $client->getRecommendations( - ['requests' => [ - ['indexName' => 'indexName', - 'model' => 'trending-items', - 'threshold' => 42, - 'maxRecommendations' => 10, - 'facetName' => 'myFacetName', - 'facetValue' => 'myFacetValue', - 'queryParameters' => ['query' => 'myQuery', - 'facetFilters' => [ - 'query', - ], - ], - 'fallbackParameters' => ['query' => 'myQuery', - 'facetFilters' => [ - 'fallback', - ], - ], - ], - ], - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/*/recommendations', - 'method' => 'POST', - 'body' => json_decode('{"requests":[{"indexName":"indexName","model":"trending-items","threshold":42,"maxRecommendations":10,"facetName":"myFacetName","facetValue":"myFacetValue","queryParameters":{"query":"myQuery","facetFilters":["query"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback"]}}]}'), - ], - ]); - } - - /** - * Test case for GetRecommendations - * get multiple recommendations with minimal parameters. - */ - public function testGetRecommendations4() - { - $client = $this->getClient(); - $client->getRecommendations( - ['requests' => [ - ['indexName' => 'indexName1', - 'objectID' => 'objectID1', - 'model' => 'related-products', - 'threshold' => 21, - ], - - ['indexName' => 'indexName2', - 'objectID' => 'objectID2', - 'model' => 'related-products', - 'threshold' => 21, - ], - ], - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/*/recommendations', - 'method' => 'POST', - 'body' => json_decode('{"requests":[{"indexName":"indexName1","objectID":"objectID1","model":"related-products","threshold":21},{"indexName":"indexName2","objectID":"objectID2","model":"related-products","threshold":21}]}'), - ], - ]); - } - - /** - * Test case for GetRecommendations - * get multiple recommendations with all parameters. - */ - public function testGetRecommendations5() - { - $client = $this->getClient(); - $client->getRecommendations( - ['requests' => [ - ['indexName' => 'indexName1', - 'objectID' => 'objectID1', - 'model' => 'related-products', - 'threshold' => 21, - 'maxRecommendations' => 10, - 'queryParameters' => ['query' => 'myQuery', - 'facetFilters' => [ - 'query1', - ], - ], - 'fallbackParameters' => ['query' => 'myQuery', - 'facetFilters' => [ - 'fallback1', - ], - ], - ], - - ['indexName' => 'indexName2', - 'objectID' => 'objectID2', - 'model' => 'related-products', - 'threshold' => 21, - 'maxRecommendations' => 10, - 'queryParameters' => ['query' => 'myQuery', - 'facetFilters' => [ - 'query2', - ], - ], - 'fallbackParameters' => ['query' => 'myQuery', - 'facetFilters' => [ - 'fallback2', - ], - ], - ], - ], - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/*/recommendations', - 'method' => 'POST', - 'body' => json_decode('{"requests":[{"indexName":"indexName1","objectID":"objectID1","model":"related-products","threshold":21,"maxRecommendations":10,"queryParameters":{"query":"myQuery","facetFilters":["query1"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback1"]}},{"indexName":"indexName2","objectID":"objectID2","model":"related-products","threshold":21,"maxRecommendations":10,"queryParameters":{"query":"myQuery","facetFilters":["query2"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback2"]}}]}'), - ], - ]); - } - - /** - * Test case for GetRecommendations - * get frequently bought together recommendations. - */ - public function testGetRecommendations6() - { - $client = $this->getClient(); - $client->getRecommendations( - ['requests' => [ - ['indexName' => 'indexName1', - 'objectID' => 'objectID1', - 'model' => 'bought-together', - 'threshold' => 42, - ], - ], - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/*/recommendations', - 'method' => 'POST', - 'body' => json_decode('{"requests":[{"indexName":"indexName1","objectID":"objectID1","model":"bought-together","threshold":42}]}'), - ], - ]); - } - - /** - * Test case for SearchRecommendRules - * searchRecommendRules0. - */ - public function testSearchRecommendRules0() - { - $client = $this->getClient(); - $client->searchRecommendRules( - 'indexName', - 'related-products', - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/indexName/related-products/recommend/rules/search', - 'method' => 'POST', - 'body' => json_decode('{}'), - ], - ]); - } - - protected function assertRequests(array $requests) - { - $this->assertGreaterThan(0, count($requests)); - $this->assertEquals(count($requests), count($this->recordedRequests)); - - foreach ($requests as $i => $request) { - $recordedRequest = $this->recordedRequests[$i]; - - $this->assertEquals($request['method'], $recordedRequest->getMethod()); - - $this->assertEquals($request['path'], $recordedRequest->getUri()->getPath()); - - if (isset($request['body'])) { - $this->assertEquals( - json_encode($request['body']), - $recordedRequest->getBody()->getContents() - ); - } - - if (isset($request['queryParameters'])) { - $this->assertEquals( - Query::build($request['queryParameters']), - $recordedRequest->getUri()->getQuery() - ); - } - - if (isset($request['headers'])) { - foreach ($request['headers'] as $key => $value) { - $this->assertArrayHasKey( - $key, - $recordedRequest->getHeaders() - ); - $this->assertEquals( - $recordedRequest->getHeaderLine($key), - $value - ); - } - } - } - } - - protected function getClient() - { - $api = new ApiWrapper($this, RecommendConfig::create(getenv('ALGOLIA_APP_ID'), getenv('ALGOLIA_API_KEY')), ClusterHosts::create('127.0.0.1')); - $config = RecommendConfig::create('foo', 'bar'); - - return new RecommendClient($api, $config); - } -} diff --git a/tests/output/php/src/methods/requests/SearchTest.php b/tests/output/php/src/methods/requests/SearchTest.php deleted file mode 100644 index f11a874a82..0000000000 --- a/tests/output/php/src/methods/requests/SearchTest.php +++ /dev/null @@ -1,3385 +0,0 @@ -load(); -} else { - $_ENV = getenv(); -} - -/** - * SearchTest. - * - * @category Class - * - * @internal - * - * @coversNothing - */ -class SearchTest extends TestCase implements HttpClientInterface -{ - /** - * @var RequestInterface[] - */ - private $recordedRequests = []; - - public function sendRequest(RequestInterface $request, $timeout, $connectTimeout) - { - $this->recordedRequests[] = $request; - - return new Response(200, [], '{}'); - } - - /** - * Test case for AddApiKey - * addApiKey0. - */ - public function testAddApiKey0() - { - $client = $this->getClient(); - $client->addApiKey( - ['acl' => [ - 'search', - - 'addObject', - ], - 'description' => 'my new api key', - 'validity' => 300, - 'maxQueriesPerIPPerHour' => 100, - 'maxHitsPerQuery' => 20, - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/keys', - 'method' => 'POST', - 'body' => json_decode('{"acl":["search","addObject"],"description":"my new api key","validity":300,"maxQueriesPerIPPerHour":100,"maxHitsPerQuery":20}'), - ], - ]); - } - - /** - * Test case for AddOrUpdateObject - * addOrUpdateObject0. - */ - public function testAddOrUpdateObject0() - { - $client = $this->getClient(); - $client->addOrUpdateObject( - 'indexName', - 'uniqueID', - ['key' => 'value', - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/indexName/uniqueID', - 'method' => 'PUT', - 'body' => json_decode('{"key":"value"}'), - ], - ]); - } - - /** - * Test case for AppendSource - * appendSource0. - */ - public function testAppendSource0() - { - $client = $this->getClient(); - $client->appendSource( - ['source' => 'theSource', - 'description' => 'theDescription', - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/security/sources/append', - 'method' => 'POST', - 'body' => json_decode('{"source":"theSource","description":"theDescription"}'), - ], - ]); - } - - /** - * Test case for AssignUserId - * assignUserId0. - */ - public function testAssignUserId0() - { - $client = $this->getClient(); - $client->assignUserId( - 'userID', - ['cluster' => 'theCluster', - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/clusters/mapping', - 'method' => 'POST', - 'body' => json_decode('{"cluster":"theCluster"}'), - 'headers' => json_decode('{"x-algolia-user-id":"userID"}', true), - ], - ]); - } - - /** - * Test case for Batch - * allows batch method with `addObject` action. - */ - public function testBatch0() - { - $client = $this->getClient(); - $client->batch( - 'theIndexName', - ['requests' => [ - ['action' => 'addObject', - 'body' => ['key' => 'value', - ], - ], - ], - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/theIndexName/batch', - 'method' => 'POST', - 'body' => json_decode('{"requests":[{"action":"addObject","body":{"key":"value"}}]}'), - ], - ]); - } - - /** - * Test case for Batch - * allows batch method with `clear` action. - */ - public function testBatch1() - { - $client = $this->getClient(); - $client->batch( - 'theIndexName', - ['requests' => [ - ['action' => 'clear', - 'body' => ['key' => 'value', - ], - ], - ], - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/theIndexName/batch', - 'method' => 'POST', - 'body' => json_decode('{"requests":[{"action":"clear","body":{"key":"value"}}]}'), - ], - ]); - } - - /** - * Test case for Batch - * allows batch method with `delete` action. - */ - public function testBatch2() - { - $client = $this->getClient(); - $client->batch( - 'theIndexName', - ['requests' => [ - ['action' => 'delete', - 'body' => ['key' => 'value', - ], - ], - ], - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/theIndexName/batch', - 'method' => 'POST', - 'body' => json_decode('{"requests":[{"action":"delete","body":{"key":"value"}}]}'), - ], - ]); - } - - /** - * Test case for Batch - * allows batch method with `deleteObject` action. - */ - public function testBatch3() - { - $client = $this->getClient(); - $client->batch( - 'theIndexName', - ['requests' => [ - ['action' => 'deleteObject', - 'body' => ['key' => 'value', - ], - ], - ], - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/theIndexName/batch', - 'method' => 'POST', - 'body' => json_decode('{"requests":[{"action":"deleteObject","body":{"key":"value"}}]}'), - ], - ]); - } - - /** - * Test case for Batch - * allows batch method with `partialUpdateObject` action. - */ - public function testBatch4() - { - $client = $this->getClient(); - $client->batch( - 'theIndexName', - ['requests' => [ - ['action' => 'partialUpdateObject', - 'body' => ['key' => 'value', - ], - ], - ], - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/theIndexName/batch', - 'method' => 'POST', - 'body' => json_decode('{"requests":[{"action":"partialUpdateObject","body":{"key":"value"}}]}'), - ], - ]); - } - - /** - * Test case for Batch - * allows batch method with `partialUpdateObjectNoCreate` action. - */ - public function testBatch5() - { - $client = $this->getClient(); - $client->batch( - 'theIndexName', - ['requests' => [ - ['action' => 'partialUpdateObjectNoCreate', - 'body' => ['key' => 'value', - ], - ], - ], - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/theIndexName/batch', - 'method' => 'POST', - 'body' => json_decode('{"requests":[{"action":"partialUpdateObjectNoCreate","body":{"key":"value"}}]}'), - ], - ]); - } - - /** - * Test case for Batch - * allows batch method with `updateObject` action. - */ - public function testBatch6() - { - $client = $this->getClient(); - $client->batch( - 'theIndexName', - ['requests' => [ - ['action' => 'updateObject', - 'body' => ['key' => 'value', - ], - ], - ], - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/theIndexName/batch', - 'method' => 'POST', - 'body' => json_decode('{"requests":[{"action":"updateObject","body":{"key":"value"}}]}'), - ], - ]); - } - - /** - * Test case for BatchAssignUserIds - * batchAssignUserIds0. - */ - public function testBatchAssignUserIds0() - { - $client = $this->getClient(); - $client->batchAssignUserIds( - 'userID', - ['cluster' => 'theCluster', - 'users' => [ - 'user1', - - 'user2', - ], - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/clusters/mapping/batch', - 'method' => 'POST', - 'body' => json_decode('{"cluster":"theCluster","users":["user1","user2"]}'), - 'headers' => json_decode('{"x-algolia-user-id":"userID"}', true), - ], - ]); - } - - /** - * Test case for BatchDictionaryEntries - * get batchDictionaryEntries results with minimal parameters. - */ - public function testBatchDictionaryEntries0() - { - $client = $this->getClient(); - $client->batchDictionaryEntries( - 'compounds', - ['requests' => [ - ['action' => 'addEntry', - 'body' => ['objectID' => '1', - 'language' => 'en', - ], - ], - - ['action' => 'deleteEntry', - 'body' => ['objectID' => '2', - 'language' => 'fr', - ], - ], - ], - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/dictionaries/compounds/batch', - 'method' => 'POST', - 'body' => json_decode('{"requests":[{"action":"addEntry","body":{"objectID":"1","language":"en"}},{"action":"deleteEntry","body":{"objectID":"2","language":"fr"}}]}'), - ], - ]); - } - - /** - * Test case for BatchDictionaryEntries - * get batchDictionaryEntries results with all parameters. - */ - public function testBatchDictionaryEntries1() - { - $client = $this->getClient(); - $client->batchDictionaryEntries( - 'compounds', - ['clearExistingDictionaryEntries' => false, - 'requests' => [ - ['action' => 'addEntry', - 'body' => ['objectID' => '1', - 'language' => 'en', - 'word' => 'fancy', - 'words' => [ - 'believe', - - 'algolia', - ], - 'decomposition' => [ - 'trust', - - 'algolia', - ], - 'state' => 'enabled', - ], - ], - - ['action' => 'deleteEntry', - 'body' => ['objectID' => '2', - 'language' => 'fr', - 'word' => 'humility', - 'words' => [ - 'candor', - - 'algolia', - ], - 'decomposition' => [ - 'grit', - - 'algolia', - ], - 'state' => 'enabled', - ], - ], - ], - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/dictionaries/compounds/batch', - 'method' => 'POST', - 'body' => json_decode('{"clearExistingDictionaryEntries":false,"requests":[{"action":"addEntry","body":{"objectID":"1","language":"en","word":"fancy","words":["believe","algolia"],"decomposition":["trust","algolia"],"state":"enabled"}},{"action":"deleteEntry","body":{"objectID":"2","language":"fr","word":"humility","words":["candor","algolia"],"decomposition":["grit","algolia"],"state":"enabled"}}]}'), - ], - ]); - } - - /** - * Test case for BatchDictionaryEntries - * get batchDictionaryEntries results additional properties. - */ - public function testBatchDictionaryEntries2() - { - $client = $this->getClient(); - $client->batchDictionaryEntries( - 'compounds', - ['requests' => [ - ['action' => 'addEntry', - 'body' => ['objectID' => '1', - 'language' => 'en', - 'additional' => 'try me', - ], - ], - ], - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/dictionaries/compounds/batch', - 'method' => 'POST', - 'body' => json_decode('{"requests":[{"action":"addEntry","body":{"objectID":"1","language":"en","additional":"try me"}}]}'), - ], - ]); - } - - /** - * Test case for Browse - * browse with minimal parameters. - */ - public function testBrowse0() - { - $client = $this->getClient(); - $client->browse( - 'indexName', - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/indexName/browse', - 'method' => 'POST', - 'body' => json_decode('{}'), - ], - ]); - } - - /** - * Test case for Browse - * browse with search parameters. - */ - public function testBrowse1() - { - $client = $this->getClient(); - $client->browse( - 'indexName', - ['query' => 'myQuery', - 'facetFilters' => [ - 'tags:algolia', - ], - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/indexName/browse', - 'method' => 'POST', - 'body' => json_decode('{"query":"myQuery","facetFilters":["tags:algolia"]}'), - ], - ]); - } - - /** - * Test case for Browse - * browse allow a cursor in parameters. - */ - public function testBrowse2() - { - $client = $this->getClient(); - $client->browse( - 'indexName', - ['cursor' => 'test', - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/indexName/browse', - 'method' => 'POST', - 'body' => json_decode('{"cursor":"test"}'), - ], - ]); - } - - /** - * Test case for ClearAllSynonyms - * clearAllSynonyms0. - */ - public function testClearAllSynonyms0() - { - $client = $this->getClient(); - $client->clearAllSynonyms( - 'indexName', - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/indexName/synonyms/clear', - 'method' => 'POST', - 'body' => json_decode(''), - ], - ]); - } - - /** - * Test case for ClearObjects - * clearObjects0. - */ - public function testClearObjects0() - { - $client = $this->getClient(); - $client->clearObjects( - 'theIndexName', - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/theIndexName/clear', - 'method' => 'POST', - 'body' => json_decode(''), - ], - ]); - } - - /** - * Test case for ClearRules - * clearRules0. - */ - public function testClearRules0() - { - $client = $this->getClient(); - $client->clearRules( - 'indexName', - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/indexName/rules/clear', - 'method' => 'POST', - 'body' => json_decode(''), - ], - ]); - } - - /** - * Test case for CustomDelete - * allow del method for a custom path with minimal parameters. - */ - public function testCustomDelete0() - { - $client = $this->getClient(); - $client->customDelete( - '/test/minimal', - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/minimal', - 'method' => 'DELETE', - 'body' => null, - ], - ]); - } - - /** - * Test case for CustomDelete - * allow del method for a custom path with all parameters. - */ - public function testCustomDelete1() - { - $client = $this->getClient(); - $client->customDelete( - '/test/all', - ['query' => 'parameters', - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/all', - 'method' => 'DELETE', - 'body' => null, - 'queryParameters' => json_decode('{"query":"parameters"}', true), - ], - ]); - } - - /** - * Test case for CustomGet - * allow get method for a custom path with minimal parameters. - */ - public function testCustomGet0() - { - $client = $this->getClient(); - $client->customGet( - '/test/minimal', - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/minimal', - 'method' => 'GET', - 'body' => null, - ], - ]); - } - - /** - * Test case for CustomGet - * allow get method for a custom path with all parameters. - */ - public function testCustomGet1() - { - $client = $this->getClient(); - $client->customGet( - '/test/all', - ['query' => 'parameters', - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/all', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"query":"parameters"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * allow post method for a custom path with minimal parameters. - */ - public function testCustomPost0() - { - $client = $this->getClient(); - $client->customPost( - '/test/minimal', - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/minimal', - 'method' => 'POST', - 'body' => json_decode('{}'), - ], - ]); - } - - /** - * Test case for CustomPost - * allow post method for a custom path with all parameters. - */ - public function testCustomPost1() - { - $client = $this->getClient(); - $client->customPost( - '/test/all', - ['query' => 'parameters', - ], - ['body' => 'parameters', - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/all', - 'method' => 'POST', - 'body' => json_decode('{"body":"parameters"}'), - 'queryParameters' => json_decode('{"query":"parameters"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions can override default query parameters. - */ - public function testCustomPost2() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'query' => 'myQueryParameter', - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"myQueryParameter"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions merges query parameters with default ones. - */ - public function testCustomPost3() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'query2' => 'myQueryParameter', - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters","query2":"myQueryParameter"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions can override default headers. - */ - public function testCustomPost4() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - ], - 'headers' => [ - 'x-algolia-api-key' => 'myApiKey', - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters"}', true), - 'headers' => json_decode('{"x-algolia-api-key":"myApiKey"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions merges headers with default ones. - */ - public function testCustomPost5() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - ], - 'headers' => [ - 'x-algolia-api-key' => 'myApiKey', - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters"}', true), - 'headers' => json_decode('{"x-algolia-api-key":"myApiKey"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions queryParameters accepts booleans. - */ - public function testCustomPost6() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'isItWorking' => true, - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters","isItWorking":"true"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions queryParameters accepts integers. - */ - public function testCustomPost7() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'myParam' => 2, - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters","myParam":"2"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions queryParameters accepts list of string. - */ - public function testCustomPost8() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'myParam' => ['c', 'd', - ], - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters","myParam":"c,d"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions queryParameters accepts list of booleans. - */ - public function testCustomPost9() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'myParam' => [true, true, false, - ], - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters","myParam":"true,true,false"}', true), - ], - ]); - } - - /** - * Test case for CustomPost - * requestOptions queryParameters accepts list of integers. - */ - public function testCustomPost10() - { - $client = $this->getClient(); - $requestOptions = [ - 'queryParameters' => [ - 'myParam' => [1, 2, - ], - ], - 'headers' => [ - ], - ]; - $client->customPost( - '/test/requestOptions', - ['query' => 'parameters', - ], - ['facet' => 'filters', - ], - $requestOptions - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/requestOptions', - 'method' => 'POST', - 'body' => json_decode('{"facet":"filters"}'), - 'queryParameters' => json_decode('{"query":"parameters","myParam":"1,2"}', true), - ], - ]); - } - - /** - * Test case for CustomPut - * allow put method for a custom path with minimal parameters. - */ - public function testCustomPut0() - { - $client = $this->getClient(); - $client->customPut( - '/test/minimal', - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/minimal', - 'method' => 'PUT', - 'body' => json_decode('{}'), - ], - ]); - } - - /** - * Test case for CustomPut - * allow put method for a custom path with all parameters. - */ - public function testCustomPut1() - { - $client = $this->getClient(); - $client->customPut( - '/test/all', - ['query' => 'parameters', - ], - ['body' => 'parameters', - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/test/all', - 'method' => 'PUT', - 'body' => json_decode('{"body":"parameters"}'), - 'queryParameters' => json_decode('{"query":"parameters"}', true), - ], - ]); - } - - /** - * Test case for DeleteApiKey - * deleteApiKey0. - */ - public function testDeleteApiKey0() - { - $client = $this->getClient(); - $client->deleteApiKey( - 'myTestApiKey', - ); - - $this->assertRequests([ - [ - 'path' => '/1/keys/myTestApiKey', - 'method' => 'DELETE', - 'body' => null, - ], - ]); - } - - /** - * Test case for DeleteBy - * deleteBy0. - */ - public function testDeleteBy0() - { - $client = $this->getClient(); - $client->deleteBy( - 'theIndexName', - ['filters' => 'brand:brandName', - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/theIndexName/deleteByQuery', - 'method' => 'POST', - 'body' => json_decode('{"filters":"brand:brandName"}'), - ], - ]); - } - - /** - * Test case for DeleteIndex - * deleteIndex0. - */ - public function testDeleteIndex0() - { - $client = $this->getClient(); - $client->deleteIndex( - 'theIndexName', - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/theIndexName', - 'method' => 'DELETE', - 'body' => null, - ], - ]); - } - - /** - * Test case for DeleteObject - * deleteObject0. - */ - public function testDeleteObject0() - { - $client = $this->getClient(); - $client->deleteObject( - 'theIndexName', - 'uniqueID', - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/theIndexName/uniqueID', - 'method' => 'DELETE', - 'body' => null, - ], - ]); - } - - /** - * Test case for DeleteRule - * delete rule simple case. - */ - public function testDeleteRule0() - { - $client = $this->getClient(); - $client->deleteRule( - 'indexName', - 'id1', - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/indexName/rules/id1', - 'method' => 'DELETE', - 'body' => null, - ], - ]); - } - - /** - * Test case for DeleteRule - * delete rule with simple characters to encode in objectID. - */ - public function testDeleteRule1() - { - $client = $this->getClient(); - $client->deleteRule( - 'indexName', - 'test/with/slash', - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/indexName/rules/test%2Fwith%2Fslash', - 'method' => 'DELETE', - 'body' => null, - ], - ]); - } - - /** - * Test case for DeleteSource - * deleteSource0. - */ - public function testDeleteSource0() - { - $client = $this->getClient(); - $client->deleteSource( - 'theSource', - ); - - $this->assertRequests([ - [ - 'path' => '/1/security/sources/theSource', - 'method' => 'DELETE', - 'body' => null, - ], - ]); - } - - /** - * Test case for DeleteSynonym - * deleteSynonym0. - */ - public function testDeleteSynonym0() - { - $client = $this->getClient(); - $client->deleteSynonym( - 'indexName', - 'id1', - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/indexName/synonyms/id1', - 'method' => 'DELETE', - 'body' => null, - ], - ]); - } - - /** - * Test case for GetApiKey - * getApiKey0. - */ - public function testGetApiKey0() - { - $client = $this->getClient(); - $client->getApiKey( - 'myTestApiKey', - ); - - $this->assertRequests([ - [ - 'path' => '/1/keys/myTestApiKey', - 'method' => 'GET', - 'body' => null, - ], - ]); - } - - /** - * Test case for GetDictionaryLanguages - * get getDictionaryLanguages. - */ - public function testGetDictionaryLanguages0() - { - $client = $this->getClient(); - $client->getDictionaryLanguages(); - - $this->assertRequests([ - [ - 'path' => '/1/dictionaries/*/languages', - 'method' => 'GET', - 'body' => null, - ], - ]); - } - - /** - * Test case for GetDictionarySettings - * get getDictionarySettings results. - */ - public function testGetDictionarySettings0() - { - $client = $this->getClient(); - $client->getDictionarySettings(); - - $this->assertRequests([ - [ - 'path' => '/1/dictionaries/*/settings', - 'method' => 'GET', - 'body' => null, - ], - ]); - } - - /** - * Test case for GetLogs - * getLogs with minimal parameters. - */ - public function testGetLogs0() - { - $client = $this->getClient(); - $client->getLogs(); - - $this->assertRequests([ - [ - 'path' => '/1/logs', - 'method' => 'GET', - 'body' => null, - ], - ]); - } - - /** - * Test case for GetLogs - * getLogs with parameters. - */ - public function testGetLogs1() - { - $client = $this->getClient(); - $client->getLogs( - 5, - 10, - 'theIndexName', - 'all', - ); - - $this->assertRequests([ - [ - 'path' => '/1/logs', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"offset":"5","length":"10","indexName":"theIndexName","type":"all"}', true), - ], - ]); - } - - /** - * Test case for GetObject - * getObject0. - */ - public function testGetObject0() - { - $client = $this->getClient(); - $client->getObject( - 'theIndexName', - 'uniqueID', - [ - 'attr1', - - 'attr2', - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/theIndexName/uniqueID', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"attributesToRetrieve":"attr1,attr2"}', true), - ], - ]); - } - - /** - * Test case for GetObjects - * getObjects0. - */ - public function testGetObjects0() - { - $client = $this->getClient(); - $client->getObjects( - ['requests' => [ - ['attributesToRetrieve' => [ - 'attr1', - - 'attr2', - ], - 'objectID' => 'uniqueID', - 'indexName' => 'theIndexName', - ], - ], - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/*/objects', - 'method' => 'POST', - 'body' => json_decode('{"requests":[{"attributesToRetrieve":["attr1","attr2"],"objectID":"uniqueID","indexName":"theIndexName"}]}'), - ], - ]); - } - - /** - * Test case for GetRule - * getRule0. - */ - public function testGetRule0() - { - $client = $this->getClient(); - $client->getRule( - 'indexName', - 'id1', - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/indexName/rules/id1', - 'method' => 'GET', - 'body' => null, - ], - ]); - } - - /** - * Test case for GetSettings - * getSettings0. - */ - public function testGetSettings0() - { - $client = $this->getClient(); - $client->getSettings( - 'theIndexName', - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/theIndexName/settings', - 'method' => 'GET', - 'body' => null, - ], - ]); - } - - /** - * Test case for GetSources - * getSources0. - */ - public function testGetSources0() - { - $client = $this->getClient(); - $client->getSources(); - - $this->assertRequests([ - [ - 'path' => '/1/security/sources', - 'method' => 'GET', - 'body' => null, - ], - ]); - } - - /** - * Test case for GetSynonym - * getSynonym0. - */ - public function testGetSynonym0() - { - $client = $this->getClient(); - $client->getSynonym( - 'indexName', - 'id1', - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/indexName/synonyms/id1', - 'method' => 'GET', - 'body' => null, - ], - ]); - } - - /** - * Test case for GetTask - * getTask0. - */ - public function testGetTask0() - { - $client = $this->getClient(); - $client->getTask( - 'theIndexName', - 123, - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/theIndexName/task/123', - 'method' => 'GET', - 'body' => null, - ], - ]); - } - - /** - * Test case for GetTopUserIds - * getTopUserIds0. - */ - public function testGetTopUserIds0() - { - $client = $this->getClient(); - $client->getTopUserIds(); - - $this->assertRequests([ - [ - 'path' => '/1/clusters/mapping/top', - 'method' => 'GET', - 'body' => null, - ], - ]); - } - - /** - * Test case for GetUserId - * getUserId0. - */ - public function testGetUserId0() - { - $client = $this->getClient(); - $client->getUserId( - 'uniqueID', - ); - - $this->assertRequests([ - [ - 'path' => '/1/clusters/mapping/uniqueID', - 'method' => 'GET', - 'body' => null, - ], - ]); - } - - /** - * Test case for HasPendingMappings - * hasPendingMappings with minimal parameters. - */ - public function testHasPendingMappings0() - { - $client = $this->getClient(); - $client->hasPendingMappings(); - - $this->assertRequests([ - [ - 'path' => '/1/clusters/mapping/pending', - 'method' => 'GET', - 'body' => null, - ], - ]); - } - - /** - * Test case for HasPendingMappings - * hasPendingMappings with parameters. - */ - public function testHasPendingMappings1() - { - $client = $this->getClient(); - $client->hasPendingMappings( - true, - ); - - $this->assertRequests([ - [ - 'path' => '/1/clusters/mapping/pending', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"getClusters":"true"}', true), - ], - ]); - } - - /** - * Test case for ListApiKeys - * listApiKeys0. - */ - public function testListApiKeys0() - { - $client = $this->getClient(); - $client->listApiKeys(); - - $this->assertRequests([ - [ - 'path' => '/1/keys', - 'method' => 'GET', - 'body' => null, - ], - ]); - } - - /** - * Test case for ListClusters - * listClusters0. - */ - public function testListClusters0() - { - $client = $this->getClient(); - $client->listClusters(); - - $this->assertRequests([ - [ - 'path' => '/1/clusters', - 'method' => 'GET', - 'body' => null, - ], - ]); - } - - /** - * Test case for ListIndices - * listIndices with minimal parameters. - */ - public function testListIndices0() - { - $client = $this->getClient(); - $client->listIndices(); - - $this->assertRequests([ - [ - 'path' => '/1/indexes', - 'method' => 'GET', - 'body' => null, - ], - ]); - } - - /** - * Test case for ListIndices - * listIndices with parameters. - */ - public function testListIndices1() - { - $client = $this->getClient(); - $client->listIndices( - 8, - 3, - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"page":"8","hitsPerPage":"3"}', true), - ], - ]); - } - - /** - * Test case for ListUserIds - * listUserIds with minimal parameters. - */ - public function testListUserIds0() - { - $client = $this->getClient(); - $client->listUserIds(); - - $this->assertRequests([ - [ - 'path' => '/1/clusters/mapping', - 'method' => 'GET', - 'body' => null, - ], - ]); - } - - /** - * Test case for ListUserIds - * listUserIds with parameters. - */ - public function testListUserIds1() - { - $client = $this->getClient(); - $client->listUserIds( - 8, - 100, - ); - - $this->assertRequests([ - [ - 'path' => '/1/clusters/mapping', - 'method' => 'GET', - 'body' => null, - 'queryParameters' => json_decode('{"page":"8","hitsPerPage":"100"}', true), - ], - ]); - } - - /** - * Test case for MultipleBatch - * multipleBatch0. - */ - public function testMultipleBatch0() - { - $client = $this->getClient(); - $client->multipleBatch( - ['requests' => [ - ['action' => 'addObject', - 'body' => ['key' => 'value', - ], - 'indexName' => 'theIndexName', - ], - ], - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/*/batch', - 'method' => 'POST', - 'body' => json_decode('{"requests":[{"action":"addObject","body":{"key":"value"},"indexName":"theIndexName"}]}'), - ], - ]); - } - - /** - * Test case for OperationIndex - * operationIndex0. - */ - public function testOperationIndex0() - { - $client = $this->getClient(); - $client->operationIndex( - 'theIndexName', - ['operation' => 'copy', - 'destination' => 'dest', - 'scope' => [ - 'rules', - - 'settings', - ], - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/theIndexName/operation', - 'method' => 'POST', - 'body' => json_decode('{"operation":"copy","destination":"dest","scope":["rules","settings"]}'), - ], - ]); - } - - /** - * Test case for PartialUpdateObject - * partialUpdateObject0. - */ - public function testPartialUpdateObject0() - { - $client = $this->getClient(); - $client->partialUpdateObject( - 'theIndexName', - 'uniqueID', - ['id1' => 'test', - 'id2' => ['_operation' => 'AddUnique', - 'value' => 'test2', - ], - ], - true, - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/theIndexName/uniqueID/partial', - 'method' => 'POST', - 'body' => json_decode('{"id1":"test","id2":{"_operation":"AddUnique","value":"test2"}}'), - 'queryParameters' => json_decode('{"createIfNotExists":"true"}', true), - ], - ]); - } - - /** - * Test case for RemoveUserId - * removeUserId0. - */ - public function testRemoveUserId0() - { - $client = $this->getClient(); - $client->removeUserId( - 'uniqueID', - ); - - $this->assertRequests([ - [ - 'path' => '/1/clusters/mapping/uniqueID', - 'method' => 'DELETE', - 'body' => null, - ], - ]); - } - - /** - * Test case for ReplaceSources - * replaceSources0. - */ - public function testReplaceSources0() - { - $client = $this->getClient(); - $client->replaceSources( - [ - ['source' => 'theSource', - 'description' => 'theDescription', - ], - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/security/sources', - 'method' => 'PUT', - 'body' => json_decode('[{"source":"theSource","description":"theDescription"}]'), - ], - ]); - } - - /** - * Test case for RestoreApiKey - * restoreApiKey0. - */ - public function testRestoreApiKey0() - { - $client = $this->getClient(); - $client->restoreApiKey( - 'myApiKey', - ); - - $this->assertRequests([ - [ - 'path' => '/1/keys/myApiKey/restore', - 'method' => 'POST', - 'body' => json_decode(''), - ], - ]); - } - - /** - * Test case for SaveObject - * saveObject0. - */ - public function testSaveObject0() - { - $client = $this->getClient(); - $client->saveObject( - 'theIndexName', - ['objectID' => 'id', - 'test' => 'val', - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/theIndexName', - 'method' => 'POST', - 'body' => json_decode('{"objectID":"id","test":"val"}'), - ], - ]); - } - - /** - * Test case for SaveRule - * saveRule with minimal parameters. - */ - public function testSaveRule0() - { - $client = $this->getClient(); - $client->saveRule( - 'indexName', - 'id1', - ['objectID' => 'id1', - 'conditions' => [ - ['pattern' => 'apple', - 'anchoring' => 'contains', - ], - ], - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/indexName/rules/id1', - 'method' => 'PUT', - 'body' => json_decode('{"objectID":"id1","conditions":[{"pattern":"apple","anchoring":"contains"}]}'), - ], - ]); - } - - /** - * Test case for SaveRule - * saveRule with all parameters. - */ - public function testSaveRule1() - { - $client = $this->getClient(); - $client->saveRule( - 'indexName', - 'id1', - ['objectID' => 'id1', - 'conditions' => [ - ['pattern' => 'apple', - 'anchoring' => 'contains', - 'alternatives' => false, - 'context' => 'search', - ], - ], - 'consequence' => ['params' => ['filters' => 'brand:apple', - 'query' => ['remove' => [ - 'algolia', - ], - 'edits' => [ - ['type' => 'remove', - 'delete' => 'abc', - 'insert' => 'cde', - ], - - ['type' => 'replace', - 'delete' => 'abc', - 'insert' => 'cde', - ], - ], - ], - ], - 'hide' => [ - ['objectID' => '321', - ], - ], - 'filterPromotes' => false, - 'userData' => ['algolia' => 'aloglia'], - 'promote' => [ - ['objectID' => 'abc', - 'position' => 3, - ], - - ['objectIDs' => [ - 'abc', - - 'def', - ], - 'position' => 1, - ], - ], - ], - 'description' => 'test', - 'enabled' => true, - 'validity' => [ - ['from' => 1656670273, - 'until' => 1656670277, - ], - ], - ], - true, - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/indexName/rules/id1', - 'method' => 'PUT', - 'body' => json_decode('{"objectID":"id1","conditions":[{"pattern":"apple","anchoring":"contains","alternatives":false,"context":"search"}],"consequence":{"params":{"filters":"brand:apple","query":{"remove":["algolia"],"edits":[{"type":"remove","delete":"abc","insert":"cde"},{"type":"replace","delete":"abc","insert":"cde"}]}},"hide":[{"objectID":"321"}],"filterPromotes":false,"userData":{"algolia":"aloglia"},"promote":[{"objectID":"abc","position":3},{"objectIDs":["abc","def"],"position":1}]},"description":"test","enabled":true,"validity":[{"from":1656670273,"until":1656670277}]}'), - 'queryParameters' => json_decode('{"forwardToReplicas":"true"}', true), - ], - ]); - } - - /** - * Test case for SaveRules - * saveRules with minimal parameters. - */ - public function testSaveRules0() - { - $client = $this->getClient(); - $client->saveRules( - 'indexName', - [ - ['objectID' => 'a-rule-id', - 'conditions' => [ - ['pattern' => 'smartphone', - 'anchoring' => 'contains', - ], - ], - ], - - ['objectID' => 'a-second-rule-id', - 'conditions' => [ - ['pattern' => 'apple', - 'anchoring' => 'contains', - ], - ], - ], - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/indexName/rules/batch', - 'method' => 'POST', - 'body' => json_decode('[{"objectID":"a-rule-id","conditions":[{"pattern":"smartphone","anchoring":"contains"}]},{"objectID":"a-second-rule-id","conditions":[{"pattern":"apple","anchoring":"contains"}]}]'), - ], - ]); - } - - /** - * Test case for SaveRules - * saveRules with all parameters. - */ - public function testSaveRules1() - { - $client = $this->getClient(); - $client->saveRules( - 'indexName', - [ - ['objectID' => 'id1', - 'conditions' => [ - ['pattern' => 'apple', - 'anchoring' => 'contains', - 'alternatives' => false, - 'context' => 'search', - ], - ], - 'consequence' => ['params' => ['filters' => 'brand:apple', - 'query' => ['remove' => [ - 'algolia', - ], - 'edits' => [ - ['type' => 'remove', - 'delete' => 'abc', - 'insert' => 'cde', - ], - - ['type' => 'replace', - 'delete' => 'abc', - 'insert' => 'cde', - ], - ], - ], - ], - 'hide' => [ - ['objectID' => '321', - ], - ], - 'filterPromotes' => false, - 'userData' => ['algolia' => 'aloglia'], - 'promote' => [ - ['objectID' => 'abc', - 'position' => 3, - ], - - ['objectIDs' => [ - 'abc', - - 'def', - ], - 'position' => 1, - ], - ], - ], - 'description' => 'test', - 'enabled' => true, - 'validity' => [ - ['from' => 1656670273, - 'until' => 1656670277, - ], - ], - ], - ], - true, - true, - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/indexName/rules/batch', - 'method' => 'POST', - 'body' => json_decode('[{"objectID":"id1","conditions":[{"pattern":"apple","anchoring":"contains","alternatives":false,"context":"search"}],"consequence":{"params":{"filters":"brand:apple","query":{"remove":["algolia"],"edits":[{"type":"remove","delete":"abc","insert":"cde"},{"type":"replace","delete":"abc","insert":"cde"}]}},"hide":[{"objectID":"321"}],"filterPromotes":false,"userData":{"algolia":"aloglia"},"promote":[{"objectID":"abc","position":3},{"objectIDs":["abc","def"],"position":1}]},"description":"test","enabled":true,"validity":[{"from":1656670273,"until":1656670277}]}]'), - 'queryParameters' => json_decode('{"forwardToReplicas":"true","clearExistingRules":"true"}', true), - ], - ]); - } - - /** - * Test case for SaveSynonym - * saveSynonym0. - */ - public function testSaveSynonym0() - { - $client = $this->getClient(); - $client->saveSynonym( - 'indexName', - 'id1', - ['objectID' => 'id1', - 'type' => 'synonym', - 'synonyms' => [ - 'car', - - 'vehicule', - - 'auto', - ], - ], - true, - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/indexName/synonyms/id1', - 'method' => 'PUT', - 'body' => json_decode('{"objectID":"id1","type":"synonym","synonyms":["car","vehicule","auto"]}'), - 'queryParameters' => json_decode('{"forwardToReplicas":"true"}', true), - ], - ]); - } - - /** - * Test case for SaveSynonyms - * saveSynonyms0. - */ - public function testSaveSynonyms0() - { - $client = $this->getClient(); - $client->saveSynonyms( - 'indexName', - [ - ['objectID' => 'id1', - 'type' => 'synonym', - 'synonyms' => [ - 'car', - - 'vehicule', - - 'auto', - ], - ], - - ['objectID' => 'id2', - 'type' => 'onewaysynonym', - 'input' => 'iphone', - 'synonyms' => [ - 'ephone', - - 'aphone', - - 'yphone', - ], - ], - ], - true, - false, - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/indexName/synonyms/batch', - 'method' => 'POST', - 'body' => json_decode('[{"objectID":"id1","type":"synonym","synonyms":["car","vehicule","auto"]},{"objectID":"id2","type":"onewaysynonym","input":"iphone","synonyms":["ephone","aphone","yphone"]}]'), - 'queryParameters' => json_decode('{"forwardToReplicas":"true","replaceExistingSynonyms":"false"}', true), - ], - ]); - } - - /** - * Test case for Search - * search for a single hits request with minimal parameters. - */ - public function testSearch0() - { - $client = $this->getClient(); - $client->search( - ['requests' => [ - ['indexName' => 'cts_e2e_search_empty_index', - ], - ], - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/*/queries', - 'method' => 'POST', - 'body' => json_decode('{"requests":[{"indexName":"cts_e2e_search_empty_index"}]}'), - ], - ]); - - $e2eClient = $this->getE2EClient(); - $resp = $e2eClient->search( - ['requests' => [ - ['indexName' => 'cts_e2e_search_empty_index', - ], - ], - ], - ); - - $this->assertEquals($resp, json_decode('{"results":[{"hits":[],"page":0,"nbHits":0,"nbPages":0,"hitsPerPage":20,"exhaustiveNbHits":true,"exhaustiveTypo":true,"exhaustive":{"nbHits":true,"typo":true},"processingTimeMS":1,"query":"","params":"","index":"cts_e2e_search_empty_index","renderingContent":{}}]}', true)); - } - - /** - * Test case for Search - * search for a single facet request with minimal parameters. - */ - public function testSearch1() - { - $client = $this->getClient(); - $client->search( - ['requests' => [ - ['indexName' => 'cts_e2e_search_facet', - 'type' => 'facet', - 'facet' => 'editor', - ], - ], - 'strategy' => 'stopIfEnoughMatches', - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/*/queries', - 'method' => 'POST', - 'body' => json_decode('{"requests":[{"indexName":"cts_e2e_search_facet","type":"facet","facet":"editor"}],"strategy":"stopIfEnoughMatches"}'), - ], - ]); - - $e2eClient = $this->getE2EClient(); - $resp = $e2eClient->search( - ['requests' => [ - ['indexName' => 'cts_e2e_search_facet', - 'type' => 'facet', - 'facet' => 'editor', - ], - ], - 'strategy' => 'stopIfEnoughMatches', - ], - ); - - $this->assertEquals($resp, json_decode('{"results":[{"exhaustiveFacetsCount":true,"processingTimeMS":1,"facetHits":[{"count":1,"highlighted":"goland","value":"goland"},{"count":1,"highlighted":"neovim","value":"neovim"},{"count":1,"highlighted":"vscode","value":"vscode"}]}]}', true)); - } - - /** - * Test case for Search - * search for a single hits request with all parameters. - */ - public function testSearch2() - { - $client = $this->getClient(); - $client->search( - ['requests' => [ - ['indexName' => 'theIndexName', - 'query' => 'myQuery', - 'hitsPerPage' => 50, - 'type' => 'default', - ], - ], - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/*/queries', - 'method' => 'POST', - 'body' => json_decode('{"requests":[{"indexName":"theIndexName","query":"myQuery","hitsPerPage":50,"type":"default"}]}'), - ], - ]); - } - - /** - * Test case for Search - * search for a single facet request with all parameters. - */ - public function testSearch3() - { - $client = $this->getClient(); - $client->search( - ['requests' => [ - ['indexName' => 'theIndexName', - 'type' => 'facet', - 'facet' => 'theFacet', - 'facetQuery' => 'theFacetQuery', - 'query' => 'theQuery', - 'maxFacetHits' => 50, - ], - ], - 'strategy' => 'stopIfEnoughMatches', - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/*/queries', - 'method' => 'POST', - 'body' => json_decode('{"requests":[{"indexName":"theIndexName","type":"facet","facet":"theFacet","facetQuery":"theFacetQuery","query":"theQuery","maxFacetHits":50}],"strategy":"stopIfEnoughMatches"}'), - ], - ]); - } - - /** - * Test case for Search - * search for multiple mixed requests in multiple indices with minimal parameters. - */ - public function testSearch4() - { - $client = $this->getClient(); - $client->search( - ['requests' => [ - ['indexName' => 'theIndexName', - ], - - ['indexName' => 'theIndexName2', - 'type' => 'facet', - 'facet' => 'theFacet', - ], - - ['indexName' => 'theIndexName', - 'type' => 'default', - ], - ], - 'strategy' => 'stopIfEnoughMatches', - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/*/queries', - 'method' => 'POST', - 'body' => json_decode('{"requests":[{"indexName":"theIndexName"},{"indexName":"theIndexName2","type":"facet","facet":"theFacet"},{"indexName":"theIndexName","type":"default"}],"strategy":"stopIfEnoughMatches"}'), - ], - ]); - } - - /** - * Test case for Search - * search for multiple mixed requests in multiple indices with all parameters. - */ - public function testSearch5() - { - $client = $this->getClient(); - $client->search( - ['requests' => [ - ['indexName' => 'theIndexName', - 'type' => 'facet', - 'facet' => 'theFacet', - 'facetQuery' => 'theFacetQuery', - 'query' => 'theQuery', - 'maxFacetHits' => 50, - ], - - ['indexName' => 'theIndexName', - 'query' => 'myQuery', - 'hitsPerPage' => 50, - 'type' => 'default', - ], - ], - 'strategy' => 'stopIfEnoughMatches', - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/*/queries', - 'method' => 'POST', - 'body' => json_decode('{"requests":[{"indexName":"theIndexName","type":"facet","facet":"theFacet","facetQuery":"theFacetQuery","query":"theQuery","maxFacetHits":50},{"indexName":"theIndexName","query":"myQuery","hitsPerPage":50,"type":"default"}],"strategy":"stopIfEnoughMatches"}'), - ], - ]); - } - - /** - * Test case for Search - * search filters accept all of the possible shapes. - */ - public function testSearch6() - { - $client = $this->getClient(); - $client->search( - ['requests' => [ - ['indexName' => 'theIndexName', - 'facetFilters' => 'mySearch:filters', - 'reRankingApplyFilter' => 'mySearch:filters', - 'tagFilters' => 'mySearch:filters', - 'numericFilters' => 'mySearch:filters', - 'optionalFilters' => 'mySearch:filters', - ], - - ['indexName' => 'theIndexName', - 'facetFilters' => [ - 'mySearch:filters', - - [ - 'mySearch:filters', - ], - ], - 'reRankingApplyFilter' => [ - 'mySearch:filters', - - [ - 'mySearch:filters', - ], - ], - 'tagFilters' => [ - 'mySearch:filters', - - [ - 'mySearch:filters', - ], - ], - 'numericFilters' => [ - 'mySearch:filters', - - [ - 'mySearch:filters', - ], - ], - 'optionalFilters' => [ - 'mySearch:filters', - - [ - 'mySearch:filters', - ], - ], - ], - ], - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/*/queries', - 'method' => 'POST', - 'body' => json_decode('{"requests":[{"indexName":"theIndexName","facetFilters":"mySearch:filters","reRankingApplyFilter":"mySearch:filters","tagFilters":"mySearch:filters","numericFilters":"mySearch:filters","optionalFilters":"mySearch:filters"},{"indexName":"theIndexName","facetFilters":["mySearch:filters",["mySearch:filters"]],"reRankingApplyFilter":["mySearch:filters",["mySearch:filters"]],"tagFilters":["mySearch:filters",["mySearch:filters"]],"numericFilters":["mySearch:filters",["mySearch:filters"]],"optionalFilters":["mySearch:filters",["mySearch:filters"]]}]}'), - ], - ]); - } - - /** - * Test case for Search - * search with all search parameters. - */ - public function testSearch7() - { - $client = $this->getClient(); - $client->search( - ['requests' => [ - ['advancedSyntax' => true, - 'advancedSyntaxFeatures' => [ - 'exactPhrase', - ], - 'allowTyposOnNumericTokens' => true, - 'alternativesAsExact' => [ - 'multiWordsSynonym', - ], - 'analytics' => true, - 'analyticsTags' => [ - '', - ], - 'aroundLatLng' => '', - 'aroundLatLngViaIP' => true, - 'aroundPrecision' => 0, - 'aroundRadius' => 'all', - 'attributeCriteriaComputedByMinProximity' => true, - 'attributesForFaceting' => [ - '', - ], - 'attributesToHighlight' => [ - '', - ], - 'attributesToRetrieve' => [ - '', - ], - 'attributesToSnippet' => [ - '', - ], - 'clickAnalytics' => true, - 'customRanking' => [ - '', - ], - 'decompoundQuery' => true, - 'disableExactOnAttributes' => [ - '', - ], - 'disableTypoToleranceOnAttributes' => [ - '', - ], - 'distinct' => 0, - 'enableABTest' => true, - 'enablePersonalization' => true, - 'enableReRanking' => true, - 'enableRules' => true, - 'exactOnSingleWordQuery' => 'attribute', - 'explain' => [ - 'foo', - - 'bar', - ], - 'facetFilters' => [ - '', - ], - 'facetingAfterDistinct' => true, - 'facets' => [ - '', - ], - 'filters' => '', - 'getRankingInfo' => true, - 'highlightPostTag' => '', - 'highlightPreTag' => '', - 'hitsPerPage' => 1, - 'ignorePlurals' => false, - 'indexName' => 'theIndexName', - 'insideBoundingBox' => [ - [ - 47.3165, - - 4.9665, - - 47.3424, - - 5.0201, - ], - - [ - 40.9234, - - 2.1185, - - 38.643, - - 1.9916, - ], - ], - 'insidePolygon' => [ - [ - 47.3165, - - 4.9665, - - 47.3424, - - 5.0201, - - 47.32, - - 4.9, - ], - - [ - 40.9234, - - 2.1185, - - 38.643, - - 1.9916, - - 39.2587, - - 2.0104, - ], - ], - 'keepDiacriticsOnCharacters' => '', - 'length' => 1, - 'maxValuesPerFacet' => 0, - 'minProximity' => 1, - 'minWordSizefor1Typo' => 0, - 'minWordSizefor2Typos' => 0, - 'minimumAroundRadius' => 1, - 'naturalLanguages' => [ - '', - ], - 'numericFilters' => [ - '', - ], - 'offset' => 0, - 'optionalFilters' => [ - '', - ], - 'optionalWords' => [ - '', - ], - 'page' => 0, - 'percentileComputation' => true, - 'personalizationImpact' => 0, - 'query' => '', - 'queryLanguages' => [ - '', - ], - 'queryType' => 'prefixAll', - 'ranking' => [ - '', - ], - 'reRankingApplyFilter' => [ - '', - ], - 'relevancyStrictness' => 0, - 'removeStopWords' => true, - 'removeWordsIfNoResults' => 'allOptional', - 'renderingContent' => ['facetOrdering' => ['facets' => ['order' => [ - 'a', - - 'b', - ], - ], - 'values' => ['a' => ['order' => [ - 'b', - ], - 'sortRemainingBy' => 'count', - ], - ], - ], - ], - 'replaceSynonymsInHighlight' => true, - 'responseFields' => [ - '', - ], - 'restrictHighlightAndSnippetArrays' => true, - 'restrictSearchableAttributes' => [ - '', - ], - 'ruleContexts' => [ - '', - ], - 'similarQuery' => '', - 'snippetEllipsisText' => '', - 'sortFacetValuesBy' => '', - 'sumOrFiltersScores' => true, - 'synonyms' => true, - 'tagFilters' => [ - '', - ], - 'type' => 'default', - 'typoTolerance' => 'min', - 'userToken' => '', - ], - ], - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/*/queries', - 'method' => 'POST', - 'body' => json_decode('{"requests":[{"advancedSyntax":true,"advancedSyntaxFeatures":["exactPhrase"],"allowTyposOnNumericTokens":true,"alternativesAsExact":["multiWordsSynonym"],"analytics":true,"analyticsTags":[""],"aroundLatLng":"","aroundLatLngViaIP":true,"aroundPrecision":0,"aroundRadius":"all","attributeCriteriaComputedByMinProximity":true,"attributesForFaceting":[""],"attributesToHighlight":[""],"attributesToRetrieve":[""],"attributesToSnippet":[""],"clickAnalytics":true,"customRanking":[""],"decompoundQuery":true,"disableExactOnAttributes":[""],"disableTypoToleranceOnAttributes":[""],"distinct":0,"enableABTest":true,"enablePersonalization":true,"enableReRanking":true,"enableRules":true,"exactOnSingleWordQuery":"attribute","explain":["foo","bar"],"facetFilters":[""],"facetingAfterDistinct":true,"facets":[""],"filters":"","getRankingInfo":true,"highlightPostTag":"","highlightPreTag":"","hitsPerPage":1,"ignorePlurals":false,"indexName":"theIndexName","insideBoundingBox":[[47.3165,4.9665,47.3424,5.0201],[40.9234,2.1185,38.643,1.9916]],"insidePolygon":[[47.3165,4.9665,47.3424,5.0201,47.32,4.9],[40.9234,2.1185,38.643,1.9916,39.2587,2.0104]],"keepDiacriticsOnCharacters":"","length":1,"maxValuesPerFacet":0,"minProximity":1,"minWordSizefor1Typo":0,"minWordSizefor2Typos":0,"minimumAroundRadius":1,"naturalLanguages":[""],"numericFilters":[""],"offset":0,"optionalFilters":[""],"optionalWords":[""],"page":0,"percentileComputation":true,"personalizationImpact":0,"query":"","queryLanguages":[""],"queryType":"prefixAll","ranking":[""],"reRankingApplyFilter":[""],"relevancyStrictness":0,"removeStopWords":true,"removeWordsIfNoResults":"allOptional","renderingContent":{"facetOrdering":{"facets":{"order":["a","b"]},"values":{"a":{"order":["b"],"sortRemainingBy":"count"}}}},"replaceSynonymsInHighlight":true,"responseFields":[""],"restrictHighlightAndSnippetArrays":true,"restrictSearchableAttributes":[""],"ruleContexts":[""],"similarQuery":"","snippetEllipsisText":"","sortFacetValuesBy":"","sumOrFiltersScores":true,"synonyms":true,"tagFilters":[""],"type":"default","typoTolerance":"min","userToken":""}]}'), - ], - ]); - } - - /** - * Test case for SearchDictionaryEntries - * get searchDictionaryEntries results with minimal parameters. - */ - public function testSearchDictionaryEntries0() - { - $client = $this->getClient(); - $client->searchDictionaryEntries( - 'compounds', - ['query' => 'foo', - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/dictionaries/compounds/search', - 'method' => 'POST', - 'body' => json_decode('{"query":"foo"}'), - ], - ]); - } - - /** - * Test case for SearchDictionaryEntries - * get searchDictionaryEntries results with all parameters. - */ - public function testSearchDictionaryEntries1() - { - $client = $this->getClient(); - $client->searchDictionaryEntries( - 'compounds', - ['query' => 'foo', - 'page' => 4, - 'hitsPerPage' => 2, - 'language' => 'fr', - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/dictionaries/compounds/search', - 'method' => 'POST', - 'body' => json_decode('{"query":"foo","page":4,"hitsPerPage":2,"language":"fr"}'), - ], - ]); - } - - /** - * Test case for SearchForFacetValues - * get searchForFacetValues results with minimal parameters. - */ - public function testSearchForFacetValues0() - { - $client = $this->getClient(); - $client->searchForFacetValues( - 'indexName', - 'facetName', - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/indexName/facets/facetName/query', - 'method' => 'POST', - 'body' => json_decode('{}'), - ], - ]); - } - - /** - * Test case for SearchForFacetValues - * get searchForFacetValues results with all parameters. - */ - public function testSearchForFacetValues1() - { - $client = $this->getClient(); - $client->searchForFacetValues( - 'indexName', - 'facetName', - ['params' => "query=foo&facetFilters=['bar']", - 'facetQuery' => 'foo', - 'maxFacetHits' => 42, - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/indexName/facets/facetName/query', - 'method' => 'POST', - 'body' => json_decode("{\"params\":\"query=foo&facetFilters=['bar']\",\"facetQuery\":\"foo\",\"maxFacetHits\":42}"), - ], - ]); - } - - /** - * Test case for SearchRules - * searchRules0. - */ - public function testSearchRules0() - { - $client = $this->getClient(); - $client->searchRules( - 'indexName', - ['query' => 'something', - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/indexName/rules/search', - 'method' => 'POST', - 'body' => json_decode('{"query":"something"}'), - ], - ]); - } - - /** - * Test case for SearchSingleIndex - * search with minimal parameters. - */ - public function testSearchSingleIndex0() - { - $client = $this->getClient(); - $client->searchSingleIndex( - 'indexName', - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/indexName/query', - 'method' => 'POST', - 'body' => json_decode('{}'), - ], - ]); - } - - /** - * Test case for SearchSingleIndex - * search with searchParams. - */ - public function testSearchSingleIndex1() - { - $client = $this->getClient(); - $client->searchSingleIndex( - 'indexName', - ['query' => 'myQuery', - 'facetFilters' => [ - 'tags:algolia', - ], - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/indexName/query', - 'method' => 'POST', - 'body' => json_decode('{"query":"myQuery","facetFilters":["tags:algolia"]}'), - ], - ]); - } - - /** - * Test case for SearchSynonyms - * searchSynonyms with minimal parameters. - */ - public function testSearchSynonyms0() - { - $client = $this->getClient(); - $client->searchSynonyms( - 'indexName', - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/indexName/synonyms/search', - 'method' => 'POST', - 'body' => json_decode('{}'), - ], - ]); - } - - /** - * Test case for SearchSynonyms - * searchSynonyms with all parameters. - */ - public function testSearchSynonyms1() - { - $client = $this->getClient(); - $client->searchSynonyms( - 'indexName', - 'altcorrection1', - 10, - 10, - ['query' => 'myQuery', - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/indexName/synonyms/search', - 'method' => 'POST', - 'body' => json_decode('{"query":"myQuery"}'), - 'queryParameters' => json_decode('{"type":"altcorrection1","page":"10","hitsPerPage":"10"}', true), - ], - ]); - } - - /** - * Test case for SearchUserIds - * searchUserIds0. - */ - public function testSearchUserIds0() - { - $client = $this->getClient(); - $client->searchUserIds( - ['query' => 'test', - 'clusterName' => 'theClusterName', - 'page' => 5, - 'hitsPerPage' => 10, - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/clusters/mapping/search', - 'method' => 'POST', - 'body' => json_decode('{"query":"test","clusterName":"theClusterName","page":5,"hitsPerPage":10}'), - ], - ]); - } - - /** - * Test case for SetDictionarySettings - * get setDictionarySettings results with minimal parameters. - */ - public function testSetDictionarySettings0() - { - $client = $this->getClient(); - $client->setDictionarySettings( - ['disableStandardEntries' => ['plurals' => ['fr' => false, - 'en' => false, - 'ru' => true, - ], - ], - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/dictionaries/*/settings', - 'method' => 'PUT', - 'body' => json_decode('{"disableStandardEntries":{"plurals":{"fr":false,"en":false,"ru":true}}}'), - ], - ]); - } - - /** - * Test case for SetDictionarySettings - * get setDictionarySettings results with all parameters. - */ - public function testSetDictionarySettings1() - { - $client = $this->getClient(); - $client->setDictionarySettings( - ['disableStandardEntries' => ['plurals' => ['fr' => false, - 'en' => false, - 'ru' => true, - ], - 'stopwords' => ['fr' => false, - ], - 'compounds' => ['ru' => true, - ], - ], - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/dictionaries/*/settings', - 'method' => 'PUT', - 'body' => json_decode('{"disableStandardEntries":{"plurals":{"fr":false,"en":false,"ru":true},"stopwords":{"fr":false},"compounds":{"ru":true}}}'), - ], - ]); - } - - /** - * Test case for SetSettings - * setSettings with minimal parameters. - */ - public function testSetSettings0() - { - $client = $this->getClient(); - $client->setSettings( - 'theIndexName', - ['paginationLimitedTo' => 10, - ], - true, - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/theIndexName/settings', - 'method' => 'PUT', - 'body' => json_decode('{"paginationLimitedTo":10}'), - 'queryParameters' => json_decode('{"forwardToReplicas":"true"}', true), - ], - ]); - } - - /** - * Test case for SetSettings - * setSettings allow boolean `typoTolerance`. - */ - public function testSetSettings1() - { - $client = $this->getClient(); - $client->setSettings( - 'theIndexName', - ['typoTolerance' => true, - ], - true, - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/theIndexName/settings', - 'method' => 'PUT', - 'body' => json_decode('{"typoTolerance":true}'), - 'queryParameters' => json_decode('{"forwardToReplicas":"true"}', true), - ], - ]); - } - - /** - * Test case for SetSettings - * setSettings allow enum `typoTolerance`. - */ - public function testSetSettings2() - { - $client = $this->getClient(); - $client->setSettings( - 'theIndexName', - ['typoTolerance' => 'min', - ], - true, - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/theIndexName/settings', - 'method' => 'PUT', - 'body' => json_decode('{"typoTolerance":"min"}'), - 'queryParameters' => json_decode('{"forwardToReplicas":"true"}', true), - ], - ]); - } - - /** - * Test case for SetSettings - * setSettings allow boolean `ignorePlurals`. - */ - public function testSetSettings3() - { - $client = $this->getClient(); - $client->setSettings( - 'theIndexName', - ['ignorePlurals' => true, - ], - true, - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/theIndexName/settings', - 'method' => 'PUT', - 'body' => json_decode('{"ignorePlurals":true}'), - 'queryParameters' => json_decode('{"forwardToReplicas":"true"}', true), - ], - ]); - } - - /** - * Test case for SetSettings - * setSettings allow list of string `ignorePlurals`. - */ - public function testSetSettings4() - { - $client = $this->getClient(); - $client->setSettings( - 'theIndexName', - ['ignorePlurals' => [ - 'algolia', - ], - ], - true, - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/theIndexName/settings', - 'method' => 'PUT', - 'body' => json_decode('{"ignorePlurals":["algolia"]}'), - 'queryParameters' => json_decode('{"forwardToReplicas":"true"}', true), - ], - ]); - } - - /** - * Test case for SetSettings - * setSettings allow boolean `removeStopWords`. - */ - public function testSetSettings5() - { - $client = $this->getClient(); - $client->setSettings( - 'theIndexName', - ['removeStopWords' => true, - ], - true, - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/theIndexName/settings', - 'method' => 'PUT', - 'body' => json_decode('{"removeStopWords":true}'), - 'queryParameters' => json_decode('{"forwardToReplicas":"true"}', true), - ], - ]); - } - - /** - * Test case for SetSettings - * setSettings allow list of string `removeStopWords`. - */ - public function testSetSettings6() - { - $client = $this->getClient(); - $client->setSettings( - 'theIndexName', - ['removeStopWords' => [ - 'algolia', - ], - ], - true, - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/theIndexName/settings', - 'method' => 'PUT', - 'body' => json_decode('{"removeStopWords":["algolia"]}'), - 'queryParameters' => json_decode('{"forwardToReplicas":"true"}', true), - ], - ]); - } - - /** - * Test case for SetSettings - * setSettings allow boolean `distinct`. - */ - public function testSetSettings7() - { - $client = $this->getClient(); - $client->setSettings( - 'theIndexName', - ['distinct' => true, - ], - true, - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/theIndexName/settings', - 'method' => 'PUT', - 'body' => json_decode('{"distinct":true}'), - 'queryParameters' => json_decode('{"forwardToReplicas":"true"}', true), - ], - ]); - } - - /** - * Test case for SetSettings - * setSettings allow integers for `distinct`. - */ - public function testSetSettings8() - { - $client = $this->getClient(); - $client->setSettings( - 'theIndexName', - ['distinct' => 1, - ], - true, - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/theIndexName/settings', - 'method' => 'PUT', - 'body' => json_decode('{"distinct":1}'), - 'queryParameters' => json_decode('{"forwardToReplicas":"true"}', true), - ], - ]); - } - - /** - * Test case for SetSettings - * setSettings allow all `indexSettings`. - */ - public function testSetSettings9() - { - $client = $this->getClient(); - $client->setSettings( - 'theIndexName', - ['advancedSyntax' => true, - 'advancedSyntaxFeatures' => [ - 'exactPhrase', - ], - 'allowCompressionOfIntegerArray' => true, - 'allowTyposOnNumericTokens' => true, - 'alternativesAsExact' => [ - 'singleWordSynonym', - ], - 'attributeCriteriaComputedByMinProximity' => true, - 'attributeForDistinct' => 'test', - 'attributesForFaceting' => [ - 'algolia', - ], - 'attributesToHighlight' => [ - 'algolia', - ], - 'attributesToRetrieve' => [ - 'algolia', - ], - 'attributesToSnippet' => [ - 'algolia', - ], - 'attributesToTransliterate' => [ - 'algolia', - ], - 'camelCaseAttributes' => [ - 'algolia', - ], - 'customNormalization' => ['algolia' => ['aloglia' => 'aglolia', - ], - ], - 'customRanking' => [ - 'algolia', - ], - 'decompoundQuery' => false, - 'decompoundedAttributes' => ['algolia' => 'aloglia', - ], - 'disableExactOnAttributes' => [ - 'algolia', - ], - 'disablePrefixOnAttributes' => [ - 'algolia', - ], - 'disableTypoToleranceOnAttributes' => [ - 'algolia', - ], - 'disableTypoToleranceOnWords' => [ - 'algolia', - ], - 'distinct' => 3, - 'enablePersonalization' => true, - 'enableReRanking' => false, - 'enableRules' => true, - 'exactOnSingleWordQuery' => 'attribute', - 'highlightPreTag' => '', - 'highlightPostTag' => '', - 'hitsPerPage' => 10, - 'ignorePlurals' => false, - 'indexLanguages' => [ - 'algolia', - ], - 'keepDiacriticsOnCharacters' => 'abc', - 'maxFacetHits' => 20, - 'maxValuesPerFacet' => 30, - 'minProximity' => 6, - 'minWordSizefor1Typo' => 5, - 'minWordSizefor2Typos' => 11, - 'mode' => 'neuralSearch', - 'numericAttributesForFiltering' => [ - 'algolia', - ], - 'optionalWords' => [ - 'myspace', - ], - 'paginationLimitedTo' => 0, - 'queryLanguages' => [ - 'algolia', - ], - 'queryType' => 'prefixLast', - 'ranking' => [ - 'geo', - ], - 'reRankingApplyFilter' => 'mySearch:filters', - 'relevancyStrictness' => 10, - 'removeStopWords' => false, - 'removeWordsIfNoResults' => 'lastWords', - 'renderingContent' => ['facetOrdering' => ['facets' => ['order' => [ - 'a', - - 'b', - ], - ], - 'values' => ['a' => ['order' => [ - 'b', - ], - 'sortRemainingBy' => 'count', - ], - ], - ], - ], - 'replaceSynonymsInHighlight' => true, - 'replicas' => [ - '', - ], - 'responseFields' => [ - 'algolia', - ], - 'restrictHighlightAndSnippetArrays' => true, - 'searchableAttributes' => [ - 'foo', - ], - 'semanticSearch' => ['eventSources' => [ - 'foo', - ], - ], - 'separatorsToIndex' => 'bar', - 'snippetEllipsisText' => '---', - 'sortFacetValuesBy' => 'date', - 'typoTolerance' => false, - 'unretrievableAttributes' => [ - 'foo', - ], - 'userData' => ['user' => 'data', - ], - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/indexes/theIndexName/settings', - 'method' => 'PUT', - 'body' => json_decode('{"advancedSyntax":true,"advancedSyntaxFeatures":["exactPhrase"],"allowCompressionOfIntegerArray":true,"allowTyposOnNumericTokens":true,"alternativesAsExact":["singleWordSynonym"],"attributeCriteriaComputedByMinProximity":true,"attributeForDistinct":"test","attributesForFaceting":["algolia"],"attributesToHighlight":["algolia"],"attributesToRetrieve":["algolia"],"attributesToSnippet":["algolia"],"attributesToTransliterate":["algolia"],"camelCaseAttributes":["algolia"],"customNormalization":{"algolia":{"aloglia":"aglolia"}},"customRanking":["algolia"],"decompoundQuery":false,"decompoundedAttributes":{"algolia":"aloglia"},"disableExactOnAttributes":["algolia"],"disablePrefixOnAttributes":["algolia"],"disableTypoToleranceOnAttributes":["algolia"],"disableTypoToleranceOnWords":["algolia"],"distinct":3,"enablePersonalization":true,"enableReRanking":false,"enableRules":true,"exactOnSingleWordQuery":"attribute","highlightPreTag":"","highlightPostTag":"","hitsPerPage":10,"ignorePlurals":false,"indexLanguages":["algolia"],"keepDiacriticsOnCharacters":"abc","maxFacetHits":20,"maxValuesPerFacet":30,"minProximity":6,"minWordSizefor1Typo":5,"minWordSizefor2Typos":11,"mode":"neuralSearch","numericAttributesForFiltering":["algolia"],"optionalWords":["myspace"],"paginationLimitedTo":0,"queryLanguages":["algolia"],"queryType":"prefixLast","ranking":["geo"],"reRankingApplyFilter":"mySearch:filters","relevancyStrictness":10,"removeStopWords":false,"removeWordsIfNoResults":"lastWords","renderingContent":{"facetOrdering":{"facets":{"order":["a","b"]},"values":{"a":{"order":["b"],"sortRemainingBy":"count"}}}},"replaceSynonymsInHighlight":true,"replicas":[""],"responseFields":["algolia"],"restrictHighlightAndSnippetArrays":true,"searchableAttributes":["foo"],"semanticSearch":{"eventSources":["foo"]},"separatorsToIndex":"bar","snippetEllipsisText":"---","sortFacetValuesBy":"date","typoTolerance":false,"unretrievableAttributes":["foo"],"userData":{"user":"data"}}'), - ], - ]); - } - - /** - * Test case for UpdateApiKey - * updateApiKey0. - */ - public function testUpdateApiKey0() - { - $client = $this->getClient(); - $client->updateApiKey( - 'myApiKey', - ['acl' => [ - 'search', - - 'addObject', - ], - 'validity' => 300, - 'maxQueriesPerIPPerHour' => 100, - 'maxHitsPerQuery' => 20, - ], - ); - - $this->assertRequests([ - [ - 'path' => '/1/keys/myApiKey', - 'method' => 'PUT', - 'body' => json_decode('{"acl":["search","addObject"],"validity":300,"maxQueriesPerIPPerHour":100,"maxHitsPerQuery":20}'), - ], - ]); - } - - protected function assertRequests(array $requests) - { - $this->assertGreaterThan(0, count($requests)); - $this->assertEquals(count($requests), count($this->recordedRequests)); - - foreach ($requests as $i => $request) { - $recordedRequest = $this->recordedRequests[$i]; - - $this->assertEquals($request['method'], $recordedRequest->getMethod()); - - $this->assertEquals($request['path'], $recordedRequest->getUri()->getPath()); - - if (isset($request['body'])) { - $this->assertEquals( - json_encode($request['body']), - $recordedRequest->getBody()->getContents() - ); - } - - if (isset($request['queryParameters'])) { - $this->assertEquals( - Query::build($request['queryParameters']), - $recordedRequest->getUri()->getQuery() - ); - } - - if (isset($request['headers'])) { - foreach ($request['headers'] as $key => $value) { - $this->assertArrayHasKey( - $key, - $recordedRequest->getHeaders() - ); - $this->assertEquals( - $recordedRequest->getHeaderLine($key), - $value - ); - } - } - } - } - - protected function getE2EClient() - { - return SearchClient::create($_ENV['ALGOLIA_APPLICATION_ID'], $_ENV['ALGOLIA_ADMIN_KEY']); - } - - protected function getClient() - { - $api = new ApiWrapper($this, SearchConfig::create(getenv('ALGOLIA_APP_ID'), getenv('ALGOLIA_API_KEY')), ClusterHosts::create('127.0.0.1')); - $config = SearchConfig::create('foo', 'bar'); - - return new SearchClient($api, $config); - } -} diff --git a/tests/output/python/tests/methods/requests/abtesting_test.py b/tests/output/python/tests/methods/requests/abtesting_test.py deleted file mode 100644 index b3b311f106..0000000000 --- a/tests/output/python/tests/methods/requests/abtesting_test.py +++ /dev/null @@ -1,472 +0,0 @@ -from json import loads - -from algoliasearch.abtesting.client import AbtestingClient -from algoliasearch.abtesting.config import Config -from algoliasearch.http.transporter import EchoTransporter - - -class TestAbtestingClient: - _config = Config("test_app_id", "test_api_key", "us") - _client = AbtestingClient(EchoTransporter(_config), _config) - - async def test_add_ab_tests_0(self): - """ - addABTests with minimal parameters - """ - _req = await self._client.add_ab_tests_with_http_info( - add_ab_tests_request={ - "endAt": "2022-12-31T00:00:00.000Z", - "name": "myABTest", - "variants": [ - { - "index": "AB_TEST_1", - "trafficPercentage": 30, - }, - { - "index": "AB_TEST_2", - "trafficPercentage": 50, - }, - ], - }, - ) - - assert _req.path == "/2/abtests" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"endAt":"2022-12-31T00:00:00.000Z","name":"myABTest","variants":[{"index":"AB_TEST_1","trafficPercentage":30},{"index":"AB_TEST_2","trafficPercentage":50}]}""" - ) - - async def test_custom_delete_0(self): - """ - allow del method for a custom path with minimal parameters - """ - _req = await self._client.custom_delete_with_http_info( - path="/test/minimal", - ) - - assert _req.path == "/1/test/minimal" - assert _req.verb == "DELETE" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_custom_delete_1(self): - """ - allow del method for a custom path with all parameters - """ - _req = await self._client.custom_delete_with_http_info( - path="/test/all", - parameters={ - "query": "parameters", - }, - ) - - assert _req.path == "/1/test/all" - assert _req.verb == "DELETE" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_custom_get_0(self): - """ - allow get method for a custom path with minimal parameters - """ - _req = await self._client.custom_get_with_http_info( - path="/test/minimal", - ) - - assert _req.path == "/1/test/minimal" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_custom_get_1(self): - """ - allow get method for a custom path with all parameters - """ - _req = await self._client.custom_get_with_http_info( - path="/test/all", - parameters={ - "query": "parameters", - }, - ) - - assert _req.path == "/1/test/all" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_custom_post_0(self): - """ - allow post method for a custom path with minimal parameters - """ - _req = await self._client.custom_post_with_http_info( - path="/test/minimal", - ) - - assert _req.path == "/1/test/minimal" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{}""") - - async def test_custom_post_1(self): - """ - allow post method for a custom path with all parameters - """ - _req = await self._client.custom_post_with_http_info( - path="/test/all", - parameters={ - "query": "parameters", - }, - body={ - "body": "parameters", - }, - ) - - assert _req.path == "/1/test/all" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"body":"parameters"}""") - - async def test_custom_post_2(self): - """ - requestOptions can override default query parameters - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"query":"myQueryParameter"}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {"query": "myQueryParameter"}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_3(self): - """ - requestOptions merges query parameters with default ones - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"query2":"myQueryParameter"}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "query2": "myQueryParameter"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_4(self): - """ - requestOptions can override default headers - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "headers": loads("""{"x-algolia-api-key":"myApiKey"}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {"x-algolia-api-key": "myApiKey"}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_5(self): - """ - requestOptions merges headers with default ones - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "headers": loads("""{"x-algolia-api-key":"myApiKey"}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {"x-algolia-api-key": "myApiKey"}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_6(self): - """ - requestOptions queryParameters accepts booleans - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"isItWorking":true}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "isItWorking": "true"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_7(self): - """ - requestOptions queryParameters accepts integers - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"myParam":2}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "myParam": "2"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_8(self): - """ - requestOptions queryParameters accepts list of string - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"myParam":["c","d"]}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "myParam": "c,d"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_9(self): - """ - requestOptions queryParameters accepts list of booleans - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"myParam":[true,true,false]}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "myParam": "true,true,false"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_10(self): - """ - requestOptions queryParameters accepts list of integers - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"myParam":[1,2]}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "myParam": "1,2"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_put_0(self): - """ - allow put method for a custom path with minimal parameters - """ - _req = await self._client.custom_put_with_http_info( - path="/test/minimal", - ) - - assert _req.path == "/1/test/minimal" - assert _req.verb == "PUT" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{}""") - - async def test_custom_put_1(self): - """ - allow put method for a custom path with all parameters - """ - _req = await self._client.custom_put_with_http_info( - path="/test/all", - parameters={ - "query": "parameters", - }, - body={ - "body": "parameters", - }, - ) - - assert _req.path == "/1/test/all" - assert _req.verb == "PUT" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"body":"parameters"}""") - - async def test_delete_ab_test_0(self): - """ - deleteABTest - """ - _req = await self._client.delete_ab_test_with_http_info( - id=42, - ) - - assert _req.path == "/2/abtests/42" - assert _req.verb == "DELETE" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_ab_test_0(self): - """ - getABTest - """ - _req = await self._client.get_ab_test_with_http_info( - id=42, - ) - - assert _req.path == "/2/abtests/42" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_list_ab_tests_0(self): - """ - listABTests with minimal parameters - """ - _req = await self._client.list_ab_tests_with_http_info() - - assert _req.path == "/2/abtests" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_list_ab_tests_1(self): - """ - listABTests with parameters - """ - _req = await self._client.list_ab_tests_with_http_info( - offset=42, - limit=21, - index_prefix="foo", - index_suffix="bar", - ) - - assert _req.path == "/2/abtests" - assert _req.verb == "GET" - assert ( - _req.query_parameters.items() - >= { - "offset": "42", - "limit": "21", - "indexPrefix": "foo", - "indexSuffix": "bar", - }.items() - ) - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_stop_ab_test_0(self): - """ - stopABTest - """ - _req = await self._client.stop_ab_test_with_http_info( - id=42, - ) - - assert _req.path == "/2/abtests/42/stop" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() diff --git a/tests/output/python/tests/methods/requests/analytics_test.py b/tests/output/python/tests/methods/requests/analytics_test.py deleted file mode 100644 index 6f90b6b610..0000000000 --- a/tests/output/python/tests/methods/requests/analytics_test.py +++ /dev/null @@ -1,1100 +0,0 @@ -from json import loads - -from algoliasearch.analytics.client import AnalyticsClient -from algoliasearch.analytics.config import Config -from algoliasearch.http.transporter import EchoTransporter - - -class TestAnalyticsClient: - _config = Config("test_app_id", "test_api_key", "us") - _client = AnalyticsClient(EchoTransporter(_config), _config) - - async def test_custom_delete_0(self): - """ - allow del method for a custom path with minimal parameters - """ - _req = await self._client.custom_delete_with_http_info( - path="/test/minimal", - ) - - assert _req.path == "/1/test/minimal" - assert _req.verb == "DELETE" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_custom_delete_1(self): - """ - allow del method for a custom path with all parameters - """ - _req = await self._client.custom_delete_with_http_info( - path="/test/all", - parameters={ - "query": "parameters", - }, - ) - - assert _req.path == "/1/test/all" - assert _req.verb == "DELETE" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_custom_get_0(self): - """ - allow get method for a custom path with minimal parameters - """ - _req = await self._client.custom_get_with_http_info( - path="/test/minimal", - ) - - assert _req.path == "/1/test/minimal" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_custom_get_1(self): - """ - allow get method for a custom path with all parameters - """ - _req = await self._client.custom_get_with_http_info( - path="/test/all", - parameters={ - "query": "parameters", - }, - ) - - assert _req.path == "/1/test/all" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_custom_post_0(self): - """ - allow post method for a custom path with minimal parameters - """ - _req = await self._client.custom_post_with_http_info( - path="/test/minimal", - ) - - assert _req.path == "/1/test/minimal" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{}""") - - async def test_custom_post_1(self): - """ - allow post method for a custom path with all parameters - """ - _req = await self._client.custom_post_with_http_info( - path="/test/all", - parameters={ - "query": "parameters", - }, - body={ - "body": "parameters", - }, - ) - - assert _req.path == "/1/test/all" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"body":"parameters"}""") - - async def test_custom_post_2(self): - """ - requestOptions can override default query parameters - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"query":"myQueryParameter"}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {"query": "myQueryParameter"}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_3(self): - """ - requestOptions merges query parameters with default ones - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"query2":"myQueryParameter"}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "query2": "myQueryParameter"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_4(self): - """ - requestOptions can override default headers - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "headers": loads("""{"x-algolia-api-key":"myApiKey"}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {"x-algolia-api-key": "myApiKey"}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_5(self): - """ - requestOptions merges headers with default ones - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "headers": loads("""{"x-algolia-api-key":"myApiKey"}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {"x-algolia-api-key": "myApiKey"}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_6(self): - """ - requestOptions queryParameters accepts booleans - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"isItWorking":true}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "isItWorking": "true"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_7(self): - """ - requestOptions queryParameters accepts integers - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"myParam":2}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "myParam": "2"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_8(self): - """ - requestOptions queryParameters accepts list of string - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"myParam":["c","d"]}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "myParam": "c,d"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_9(self): - """ - requestOptions queryParameters accepts list of booleans - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"myParam":[true,true,false]}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "myParam": "true,true,false"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_10(self): - """ - requestOptions queryParameters accepts list of integers - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"myParam":[1,2]}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "myParam": "1,2"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_put_0(self): - """ - allow put method for a custom path with minimal parameters - """ - _req = await self._client.custom_put_with_http_info( - path="/test/minimal", - ) - - assert _req.path == "/1/test/minimal" - assert _req.verb == "PUT" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{}""") - - async def test_custom_put_1(self): - """ - allow put method for a custom path with all parameters - """ - _req = await self._client.custom_put_with_http_info( - path="/test/all", - parameters={ - "query": "parameters", - }, - body={ - "body": "parameters", - }, - ) - - assert _req.path == "/1/test/all" - assert _req.verb == "PUT" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"body":"parameters"}""") - - async def test_get_average_click_position_0(self): - """ - get getAverageClickPosition with minimal parameters - """ - _req = await self._client.get_average_click_position_with_http_info( - index="index", - ) - - assert _req.path == "/2/clicks/averageClickPosition" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {"index": "index"}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_average_click_position_1(self): - """ - get getAverageClickPosition with all parameters - """ - _req = await self._client.get_average_click_position_with_http_info( - index="index", - start_date="1999-09-19", - end_date="2001-01-01", - tags="tag", - ) - - assert _req.path == "/2/clicks/averageClickPosition" - assert _req.verb == "GET" - assert ( - _req.query_parameters.items() - >= { - "index": "index", - "startDate": "1999-09-19", - "endDate": "2001-01-01", - "tags": "tag", - }.items() - ) - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_click_positions_0(self): - """ - get getClickPositions with minimal parameters - """ - _req = await self._client.get_click_positions_with_http_info( - index="index", - ) - - assert _req.path == "/2/clicks/positions" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {"index": "index"}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_click_positions_1(self): - """ - get getClickPositions with all parameters - """ - _req = await self._client.get_click_positions_with_http_info( - index="index", - start_date="1999-09-19", - end_date="2001-01-01", - tags="tag", - ) - - assert _req.path == "/2/clicks/positions" - assert _req.verb == "GET" - assert ( - _req.query_parameters.items() - >= { - "index": "index", - "startDate": "1999-09-19", - "endDate": "2001-01-01", - "tags": "tag", - }.items() - ) - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_click_through_rate_0(self): - """ - get getClickThroughRate with minimal parameters - """ - _req = await self._client.get_click_through_rate_with_http_info( - index="index", - ) - - assert _req.path == "/2/clicks/clickThroughRate" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {"index": "index"}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_click_through_rate_1(self): - """ - get getClickThroughRate with all parameters - """ - _req = await self._client.get_click_through_rate_with_http_info( - index="index", - start_date="1999-09-19", - end_date="2001-01-01", - tags="tag", - ) - - assert _req.path == "/2/clicks/clickThroughRate" - assert _req.verb == "GET" - assert ( - _req.query_parameters.items() - >= { - "index": "index", - "startDate": "1999-09-19", - "endDate": "2001-01-01", - "tags": "tag", - }.items() - ) - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_conversation_rate_0(self): - """ - get getConversationRate with minimal parameters - """ - _req = await self._client.get_conversation_rate_with_http_info( - index="index", - ) - - assert _req.path == "/2/conversions/conversionRate" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {"index": "index"}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_conversation_rate_1(self): - """ - get getConversationRate with all parameters - """ - _req = await self._client.get_conversation_rate_with_http_info( - index="index", - start_date="1999-09-19", - end_date="2001-01-01", - tags="tag", - ) - - assert _req.path == "/2/conversions/conversionRate" - assert _req.verb == "GET" - assert ( - _req.query_parameters.items() - >= { - "index": "index", - "startDate": "1999-09-19", - "endDate": "2001-01-01", - "tags": "tag", - }.items() - ) - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_no_click_rate_0(self): - """ - get getNoClickRate with minimal parameters - """ - _req = await self._client.get_no_click_rate_with_http_info( - index="index", - ) - - assert _req.path == "/2/searches/noClickRate" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {"index": "index"}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_no_click_rate_1(self): - """ - get getNoClickRate with all parameters - """ - _req = await self._client.get_no_click_rate_with_http_info( - index="index", - start_date="1999-09-19", - end_date="2001-01-01", - tags="tag", - ) - - assert _req.path == "/2/searches/noClickRate" - assert _req.verb == "GET" - assert ( - _req.query_parameters.items() - >= { - "index": "index", - "startDate": "1999-09-19", - "endDate": "2001-01-01", - "tags": "tag", - }.items() - ) - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_no_results_rate_0(self): - """ - get getNoResultsRate with minimal parameters - """ - _req = await self._client.get_no_results_rate_with_http_info( - index="index", - ) - - assert _req.path == "/2/searches/noResultRate" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {"index": "index"}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_no_results_rate_1(self): - """ - get getNoResultsRate with all parameters - """ - _req = await self._client.get_no_results_rate_with_http_info( - index="index", - start_date="1999-09-19", - end_date="2001-01-01", - tags="tag", - ) - - assert _req.path == "/2/searches/noResultRate" - assert _req.verb == "GET" - assert ( - _req.query_parameters.items() - >= { - "index": "index", - "startDate": "1999-09-19", - "endDate": "2001-01-01", - "tags": "tag", - }.items() - ) - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_searches_count_0(self): - """ - get getSearchesCount with minimal parameters - """ - _req = await self._client.get_searches_count_with_http_info( - index="index", - ) - - assert _req.path == "/2/searches/count" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {"index": "index"}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_searches_count_1(self): - """ - get getSearchesCount with all parameters - """ - _req = await self._client.get_searches_count_with_http_info( - index="index", - start_date="1999-09-19", - end_date="2001-01-01", - tags="tag", - ) - - assert _req.path == "/2/searches/count" - assert _req.verb == "GET" - assert ( - _req.query_parameters.items() - >= { - "index": "index", - "startDate": "1999-09-19", - "endDate": "2001-01-01", - "tags": "tag", - }.items() - ) - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_searches_no_clicks_0(self): - """ - get getSearchesNoClicks with minimal parameters - """ - _req = await self._client.get_searches_no_clicks_with_http_info( - index="index", - ) - - assert _req.path == "/2/searches/noClicks" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {"index": "index"}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_searches_no_clicks_1(self): - """ - get getSearchesNoClicks with all parameters - """ - _req = await self._client.get_searches_no_clicks_with_http_info( - index="index", - start_date="1999-09-19", - end_date="2001-01-01", - limit=21, - offset=42, - tags="tag", - ) - - assert _req.path == "/2/searches/noClicks" - assert _req.verb == "GET" - assert ( - _req.query_parameters.items() - >= { - "index": "index", - "startDate": "1999-09-19", - "endDate": "2001-01-01", - "limit": "21", - "offset": "42", - "tags": "tag", - }.items() - ) - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_searches_no_results_0(self): - """ - get getSearchesNoResults with minimal parameters - """ - _req = await self._client.get_searches_no_results_with_http_info( - index="index", - ) - - assert _req.path == "/2/searches/noResults" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {"index": "index"}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_searches_no_results_1(self): - """ - get getSearchesNoResults with all parameters - """ - _req = await self._client.get_searches_no_results_with_http_info( - index="index", - start_date="1999-09-19", - end_date="2001-01-01", - limit=21, - offset=42, - tags="tag", - ) - - assert _req.path == "/2/searches/noResults" - assert _req.verb == "GET" - assert ( - _req.query_parameters.items() - >= { - "index": "index", - "startDate": "1999-09-19", - "endDate": "2001-01-01", - "limit": "21", - "offset": "42", - "tags": "tag", - }.items() - ) - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_status_0(self): - """ - get getStatus with minimal parameters - """ - _req = await self._client.get_status_with_http_info( - index="index", - ) - - assert _req.path == "/2/status" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {"index": "index"}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_top_countries_0(self): - """ - get getTopCountries with minimal parameters - """ - _req = await self._client.get_top_countries_with_http_info( - index="index", - ) - - assert _req.path == "/2/countries" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {"index": "index"}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_top_countries_1(self): - """ - get getTopCountries with all parameters - """ - _req = await self._client.get_top_countries_with_http_info( - index="index", - start_date="1999-09-19", - end_date="2001-01-01", - limit=21, - offset=42, - tags="tag", - ) - - assert _req.path == "/2/countries" - assert _req.verb == "GET" - assert ( - _req.query_parameters.items() - >= { - "index": "index", - "startDate": "1999-09-19", - "endDate": "2001-01-01", - "limit": "21", - "offset": "42", - "tags": "tag", - }.items() - ) - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_top_filter_attributes_0(self): - """ - get getTopFilterAttributes with minimal parameters - """ - _req = await self._client.get_top_filter_attributes_with_http_info( - index="index", - ) - - assert _req.path == "/2/filters" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {"index": "index"}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_top_filter_attributes_1(self): - """ - get getTopFilterAttributes with all parameters - """ - _req = await self._client.get_top_filter_attributes_with_http_info( - index="index", - search="mySearch", - start_date="1999-09-19", - end_date="2001-01-01", - limit=21, - offset=42, - tags="tag", - ) - - assert _req.path == "/2/filters" - assert _req.verb == "GET" - assert ( - _req.query_parameters.items() - >= { - "index": "index", - "search": "mySearch", - "startDate": "1999-09-19", - "endDate": "2001-01-01", - "limit": "21", - "offset": "42", - "tags": "tag", - }.items() - ) - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_top_filter_for_attribute_0(self): - """ - get getTopFilterForAttribute with minimal parameters - """ - _req = await self._client.get_top_filter_for_attribute_with_http_info( - attribute="myAttribute", - index="index", - ) - - assert _req.path == "/2/filters/myAttribute" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {"index": "index"}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_top_filter_for_attribute_1(self): - """ - get getTopFilterForAttribute with minimal parameters and multiple attributes - """ - _req = await self._client.get_top_filter_for_attribute_with_http_info( - attribute="myAttribute1,myAttribute2", - index="index", - ) - - assert _req.path == "/2/filters/myAttribute1%2CmyAttribute2" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {"index": "index"}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_top_filter_for_attribute_2(self): - """ - get getTopFilterForAttribute with all parameters - """ - _req = await self._client.get_top_filter_for_attribute_with_http_info( - attribute="myAttribute", - index="index", - search="mySearch", - start_date="1999-09-19", - end_date="2001-01-01", - limit=21, - offset=42, - tags="tag", - ) - - assert _req.path == "/2/filters/myAttribute" - assert _req.verb == "GET" - assert ( - _req.query_parameters.items() - >= { - "index": "index", - "search": "mySearch", - "startDate": "1999-09-19", - "endDate": "2001-01-01", - "limit": "21", - "offset": "42", - "tags": "tag", - }.items() - ) - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_top_filter_for_attribute_3(self): - """ - get getTopFilterForAttribute with all parameters and multiple attributes - """ - _req = await self._client.get_top_filter_for_attribute_with_http_info( - attribute="myAttribute1,myAttribute2", - index="index", - search="mySearch", - start_date="1999-09-19", - end_date="2001-01-01", - limit=21, - offset=42, - tags="tag", - ) - - assert _req.path == "/2/filters/myAttribute1%2CmyAttribute2" - assert _req.verb == "GET" - assert ( - _req.query_parameters.items() - >= { - "index": "index", - "search": "mySearch", - "startDate": "1999-09-19", - "endDate": "2001-01-01", - "limit": "21", - "offset": "42", - "tags": "tag", - }.items() - ) - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_top_filters_no_results_0(self): - """ - get getTopFiltersNoResults with minimal parameters - """ - _req = await self._client.get_top_filters_no_results_with_http_info( - index="index", - ) - - assert _req.path == "/2/filters/noResults" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {"index": "index"}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_top_filters_no_results_1(self): - """ - get getTopFiltersNoResults with all parameters - """ - _req = await self._client.get_top_filters_no_results_with_http_info( - index="index", - search="mySearch", - start_date="1999-09-19", - end_date="2001-01-01", - limit=21, - offset=42, - tags="tag", - ) - - assert _req.path == "/2/filters/noResults" - assert _req.verb == "GET" - assert ( - _req.query_parameters.items() - >= { - "index": "index", - "search": "mySearch", - "startDate": "1999-09-19", - "endDate": "2001-01-01", - "limit": "21", - "offset": "42", - "tags": "tag", - }.items() - ) - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_top_hits_0(self): - """ - get getTopHits with minimal parameters - """ - _req = await self._client.get_top_hits_with_http_info( - index="index", - ) - - assert _req.path == "/2/hits" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {"index": "index"}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_top_hits_1(self): - """ - get getTopHits with all parameters - """ - _req = await self._client.get_top_hits_with_http_info( - index="index", - search="mySearch", - click_analytics=True, - start_date="1999-09-19", - end_date="2001-01-01", - limit=21, - offset=42, - tags="tag", - ) - - assert _req.path == "/2/hits" - assert _req.verb == "GET" - assert ( - _req.query_parameters.items() - >= { - "index": "index", - "search": "mySearch", - "clickAnalytics": "true", - "startDate": "1999-09-19", - "endDate": "2001-01-01", - "limit": "21", - "offset": "42", - "tags": "tag", - }.items() - ) - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_top_searches_0(self): - """ - get getTopSearches with minimal parameters - """ - _req = await self._client.get_top_searches_with_http_info( - index="index", - ) - - assert _req.path == "/2/searches" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {"index": "index"}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_top_searches_1(self): - """ - get getTopSearches with all parameters - """ - _req = await self._client.get_top_searches_with_http_info( - index="index", - click_analytics=True, - start_date="1999-09-19", - end_date="2001-01-01", - order_by="searchCount", - direction="asc", - limit=21, - offset=42, - tags="tag", - ) - - assert _req.path == "/2/searches" - assert _req.verb == "GET" - assert ( - _req.query_parameters.items() - >= { - "index": "index", - "clickAnalytics": "true", - "startDate": "1999-09-19", - "endDate": "2001-01-01", - "orderBy": "searchCount", - "direction": "asc", - "limit": "21", - "offset": "42", - "tags": "tag", - }.items() - ) - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_users_count_0(self): - """ - get getUsersCount with minimal parameters - """ - _req = await self._client.get_users_count_with_http_info( - index="index", - ) - - assert _req.path == "/2/users/count" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {"index": "index"}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_users_count_1(self): - """ - get getUsersCount with all parameters - """ - _req = await self._client.get_users_count_with_http_info( - index="index", - start_date="1999-09-19", - end_date="2001-01-01", - tags="tag", - ) - - assert _req.path == "/2/users/count" - assert _req.verb == "GET" - assert ( - _req.query_parameters.items() - >= { - "index": "index", - "startDate": "1999-09-19", - "endDate": "2001-01-01", - "tags": "tag", - }.items() - ) - assert _req.headers.items() >= {}.items() - assert _req.data is None diff --git a/tests/output/python/tests/methods/requests/ingestion_test.py b/tests/output/python/tests/methods/requests/ingestion_test.py deleted file mode 100644 index 17ee146848..0000000000 --- a/tests/output/python/tests/methods/requests/ingestion_test.py +++ /dev/null @@ -1,971 +0,0 @@ -from json import loads - -from algoliasearch.http.transporter import EchoTransporter -from algoliasearch.ingestion.client import IngestionClient -from algoliasearch.ingestion.config import Config - - -class TestIngestionClient: - _config = Config("test_app_id", "test_api_key", "us") - _client = IngestionClient(EchoTransporter(_config), _config) - - async def test_create_authentication_0(self): - """ - createAuthenticationOAuth - """ - _req = await self._client.create_authentication_with_http_info( - authentication_create={ - "type": "oauth", - "name": "authName", - "input": { - "url": "http://test.oauth", - "client_id": "myID", - "client_secret": "mySecret", - }, - }, - ) - - assert _req.path == "/1/authentications" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"type":"oauth","name":"authName","input":{"url":"http://test.oauth","client_id":"myID","client_secret":"mySecret"}}""" - ) - - async def test_create_authentication_1(self): - """ - createAuthenticationAlgolia - """ - _req = await self._client.create_authentication_with_http_info( - authentication_create={ - "type": "algolia", - "name": "authName", - "input": { - "appID": "myappID", - "apiKey": "randomApiKey", - }, - }, - ) - - assert _req.path == "/1/authentications" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"type":"algolia","name":"authName","input":{"appID":"myappID","apiKey":"randomApiKey"}}""" - ) - - async def test_create_destination_0(self): - """ - createDestination - """ - _req = await self._client.create_destination_with_http_info( - destination_create={ - "type": "search", - "name": "destinationName", - "input": { - "indexPrefix": "prefix_", - }, - "authenticationID": "6c02aeb1-775e-418e-870b-1faccd4b2c0f", - }, - ) - - assert _req.path == "/1/destinations" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"type":"search","name":"destinationName","input":{"indexPrefix":"prefix_"},"authenticationID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}""" - ) - - async def test_create_source_0(self): - """ - createSource - """ - _req = await self._client.create_source_with_http_info( - source_create={ - "type": "commercetools", - "name": "sourceName", - "input": { - "storeKeys": [ - "myStore", - ], - "locales": [ - "de", - ], - "url": "http://commercetools.com", - "projectKey": "keyID", - }, - "authenticationID": "6c02aeb1-775e-418e-870b-1faccd4b2c0f", - }, - ) - - assert _req.path == "/1/sources" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"type":"commercetools","name":"sourceName","input":{"storeKeys":["myStore"],"locales":["de"],"url":"http://commercetools.com","projectKey":"keyID"},"authenticationID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}""" - ) - - async def test_create_task_0(self): - """ - createTaskOnDemand - """ - _req = await self._client.create_task_with_http_info( - task_create={ - "sourceID": "search", - "destinationID": "destinationName", - "trigger": { - "type": "onDemand", - }, - "action": "replace", - }, - ) - - assert _req.path == "/1/tasks" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"sourceID":"search","destinationID":"destinationName","trigger":{"type":"onDemand"},"action":"replace"}""" - ) - - async def test_create_task_1(self): - """ - createTaskSchedule - """ - _req = await self._client.create_task_with_http_info( - task_create={ - "sourceID": "search", - "destinationID": "destinationName", - "trigger": { - "type": "schedule", - "cron": "* * * * *", - }, - "action": "replace", - }, - ) - - assert _req.path == "/1/tasks" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"sourceID":"search","destinationID":"destinationName","trigger":{"type":"schedule","cron":"* * * * *"},"action":"replace"}""" - ) - - async def test_create_task_2(self): - """ - createTaskSubscription - """ - _req = await self._client.create_task_with_http_info( - task_create={ - "sourceID": "search", - "destinationID": "destinationName", - "trigger": { - "type": "onDemand", - }, - "action": "replace", - }, - ) - - assert _req.path == "/1/tasks" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"sourceID":"search","destinationID":"destinationName","trigger":{"type":"onDemand"},"action":"replace"}""" - ) - - async def test_custom_delete_0(self): - """ - allow del method for a custom path with minimal parameters - """ - _req = await self._client.custom_delete_with_http_info( - path="/test/minimal", - ) - - assert _req.path == "/1/test/minimal" - assert _req.verb == "DELETE" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_custom_delete_1(self): - """ - allow del method for a custom path with all parameters - """ - _req = await self._client.custom_delete_with_http_info( - path="/test/all", - parameters={ - "query": "parameters", - }, - ) - - assert _req.path == "/1/test/all" - assert _req.verb == "DELETE" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_custom_get_0(self): - """ - allow get method for a custom path with minimal parameters - """ - _req = await self._client.custom_get_with_http_info( - path="/test/minimal", - ) - - assert _req.path == "/1/test/minimal" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_custom_get_1(self): - """ - allow get method for a custom path with all parameters - """ - _req = await self._client.custom_get_with_http_info( - path="/test/all", - parameters={ - "query": "parameters", - }, - ) - - assert _req.path == "/1/test/all" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_custom_post_0(self): - """ - allow post method for a custom path with minimal parameters - """ - _req = await self._client.custom_post_with_http_info( - path="/test/minimal", - ) - - assert _req.path == "/1/test/minimal" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{}""") - - async def test_custom_post_1(self): - """ - allow post method for a custom path with all parameters - """ - _req = await self._client.custom_post_with_http_info( - path="/test/all", - parameters={ - "query": "parameters", - }, - body={ - "body": "parameters", - }, - ) - - assert _req.path == "/1/test/all" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"body":"parameters"}""") - - async def test_custom_post_2(self): - """ - requestOptions can override default query parameters - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"query":"myQueryParameter"}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {"query": "myQueryParameter"}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_3(self): - """ - requestOptions merges query parameters with default ones - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"query2":"myQueryParameter"}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "query2": "myQueryParameter"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_4(self): - """ - requestOptions can override default headers - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "headers": loads("""{"x-algolia-api-key":"myApiKey"}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {"x-algolia-api-key": "myApiKey"}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_5(self): - """ - requestOptions merges headers with default ones - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "headers": loads("""{"x-algolia-api-key":"myApiKey"}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {"x-algolia-api-key": "myApiKey"}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_6(self): - """ - requestOptions queryParameters accepts booleans - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"isItWorking":true}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "isItWorking": "true"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_7(self): - """ - requestOptions queryParameters accepts integers - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"myParam":2}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "myParam": "2"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_8(self): - """ - requestOptions queryParameters accepts list of string - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"myParam":["c","d"]}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "myParam": "c,d"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_9(self): - """ - requestOptions queryParameters accepts list of booleans - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"myParam":[true,true,false]}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "myParam": "true,true,false"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_10(self): - """ - requestOptions queryParameters accepts list of integers - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"myParam":[1,2]}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "myParam": "1,2"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_put_0(self): - """ - allow put method for a custom path with minimal parameters - """ - _req = await self._client.custom_put_with_http_info( - path="/test/minimal", - ) - - assert _req.path == "/1/test/minimal" - assert _req.verb == "PUT" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{}""") - - async def test_custom_put_1(self): - """ - allow put method for a custom path with all parameters - """ - _req = await self._client.custom_put_with_http_info( - path="/test/all", - parameters={ - "query": "parameters", - }, - body={ - "body": "parameters", - }, - ) - - assert _req.path == "/1/test/all" - assert _req.verb == "PUT" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"body":"parameters"}""") - - async def test_delete_authentication_0(self): - """ - deleteAuthentication - """ - _req = await self._client.delete_authentication_with_http_info( - authentication_id="6c02aeb1-775e-418e-870b-1faccd4b2c0f", - ) - - assert _req.path == "/1/authentications/6c02aeb1-775e-418e-870b-1faccd4b2c0f" - assert _req.verb == "DELETE" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_delete_destination_0(self): - """ - deleteDestination - """ - _req = await self._client.delete_destination_with_http_info( - destination_id="6c02aeb1-775e-418e-870b-1faccd4b2c0f", - ) - - assert _req.path == "/1/destinations/6c02aeb1-775e-418e-870b-1faccd4b2c0f" - assert _req.verb == "DELETE" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_delete_source_0(self): - """ - deleteSource - """ - _req = await self._client.delete_source_with_http_info( - source_id="6c02aeb1-775e-418e-870b-1faccd4b2c0f", - ) - - assert _req.path == "/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f" - assert _req.verb == "DELETE" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_delete_task_0(self): - """ - deleteTask - """ - _req = await self._client.delete_task_with_http_info( - task_id="6c02aeb1-775e-418e-870b-1faccd4b2c0f", - ) - - assert _req.path == "/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f" - assert _req.verb == "DELETE" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_disable_task_0(self): - """ - disableTask - """ - _req = await self._client.disable_task_with_http_info( - task_id="6c02aeb1-775e-418e-870b-1faccd4b2c0f", - ) - - assert _req.path == "/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f/disable" - assert _req.verb == "PUT" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - - async def test_enable_task_0(self): - """ - enableTask - """ - _req = await self._client.enable_task_with_http_info( - task_id="6c02aeb1-775e-418e-870b-1faccd4b2c0f", - ) - - assert _req.path == "/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f/enable" - assert _req.verb == "PUT" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - - async def test_get_authentication_0(self): - """ - getAuthentication - """ - _req = await self._client.get_authentication_with_http_info( - authentication_id="6c02aeb1-775e-418e-870b-1faccd4b2c0f", - ) - - assert _req.path == "/1/authentications/6c02aeb1-775e-418e-870b-1faccd4b2c0f" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_authentications_0(self): - """ - getAuthentications - """ - _req = await self._client.get_authentications_with_http_info() - - assert _req.path == "/1/authentications" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_destination_0(self): - """ - getDestination - """ - _req = await self._client.get_destination_with_http_info( - destination_id="6c02aeb1-775e-418e-870b-1faccd4b2c0f", - ) - - assert _req.path == "/1/destinations/6c02aeb1-775e-418e-870b-1faccd4b2c0f" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_destinations_0(self): - """ - getDestinations - """ - _req = await self._client.get_destinations_with_http_info() - - assert _req.path == "/1/destinations" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_docker_source_streams_0(self): - """ - getDockerSourceStreams - """ - _req = await self._client.get_docker_source_streams_with_http_info( - source_id="6c02aeb1-775e-418e-870b-1faccd4b2c0f", - ) - - assert _req.path == "/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f/discover" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_event_0(self): - """ - getEvent - """ - _req = await self._client.get_event_with_http_info( - run_id="6c02aeb1-775e-418e-870b-1faccd4b2c0f", - event_id="6c02aeb1-775e-418e-870b-1faccd4b2c0c", - ) - - assert ( - _req.path - == "/1/runs/6c02aeb1-775e-418e-870b-1faccd4b2c0f/events/6c02aeb1-775e-418e-870b-1faccd4b2c0c" - ) - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_events_0(self): - """ - getEvents - """ - _req = await self._client.get_events_with_http_info( - run_id="6c02aeb1-775e-418e-870b-1faccd4b2c0f", - ) - - assert _req.path == "/1/runs/6c02aeb1-775e-418e-870b-1faccd4b2c0f/events" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_run_0(self): - """ - getRun - """ - _req = await self._client.get_run_with_http_info( - run_id="6c02aeb1-775e-418e-870b-1faccd4b2c0f", - ) - - assert _req.path == "/1/runs/6c02aeb1-775e-418e-870b-1faccd4b2c0f" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_runs_0(self): - """ - getRuns - """ - _req = await self._client.get_runs_with_http_info() - - assert _req.path == "/1/runs" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_source_0(self): - """ - getSource - """ - _req = await self._client.get_source_with_http_info( - source_id="6c02aeb1-775e-418e-870b-1faccd4b2c0f", - ) - - assert _req.path == "/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_sources_0(self): - """ - getSources - """ - _req = await self._client.get_sources_with_http_info() - - assert _req.path == "/1/sources" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_task_0(self): - """ - getTask - """ - _req = await self._client.get_task_with_http_info( - task_id="6c02aeb1-775e-418e-870b-1faccd4b2c0f", - ) - - assert _req.path == "/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_tasks_0(self): - """ - getTasks - """ - _req = await self._client.get_tasks_with_http_info() - - assert _req.path == "/1/tasks" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_run_task_0(self): - """ - runTask - """ - _req = await self._client.run_task_with_http_info( - task_id="6c02aeb1-775e-418e-870b-1faccd4b2c0f", - ) - - assert _req.path == "/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f/run" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - - async def test_search_authentications_0(self): - """ - searchAuthentications - """ - _req = await self._client.search_authentications_with_http_info( - authentication_search={ - "authenticationIDs": [ - "6c02aeb1-775e-418e-870b-1faccd4b2c0f", - "947ac9c4-7e58-4c87-b1e7-14a68e99699a", - ], - }, - ) - - assert _req.path == "/1/authentications/search" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"authenticationIDs":["6c02aeb1-775e-418e-870b-1faccd4b2c0f","947ac9c4-7e58-4c87-b1e7-14a68e99699a"]}""" - ) - - async def test_search_destinations_0(self): - """ - searchDestinations - """ - _req = await self._client.search_destinations_with_http_info( - destination_search={ - "destinationIDs": [ - "6c02aeb1-775e-418e-870b-1faccd4b2c0f", - "947ac9c4-7e58-4c87-b1e7-14a68e99699a", - ], - }, - ) - - assert _req.path == "/1/destinations/search" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"destinationIDs":["6c02aeb1-775e-418e-870b-1faccd4b2c0f","947ac9c4-7e58-4c87-b1e7-14a68e99699a"]}""" - ) - - async def test_search_sources_0(self): - """ - searchSources - """ - _req = await self._client.search_sources_with_http_info( - source_search={ - "sourceIDs": [ - "6c02aeb1-775e-418e-870b-1faccd4b2c0f", - "947ac9c4-7e58-4c87-b1e7-14a68e99699a", - ], - }, - ) - - assert _req.path == "/1/sources/search" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"sourceIDs":["6c02aeb1-775e-418e-870b-1faccd4b2c0f","947ac9c4-7e58-4c87-b1e7-14a68e99699a"]}""" - ) - - async def test_search_tasks_0(self): - """ - searchTasks - """ - _req = await self._client.search_tasks_with_http_info( - task_search={ - "taskIDs": [ - "6c02aeb1-775e-418e-870b-1faccd4b2c0f", - "947ac9c4-7e58-4c87-b1e7-14a68e99699a", - ], - }, - ) - - assert _req.path == "/1/tasks/search" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"taskIDs":["6c02aeb1-775e-418e-870b-1faccd4b2c0f","947ac9c4-7e58-4c87-b1e7-14a68e99699a"]}""" - ) - - async def test_trigger_docker_source_discover_0(self): - """ - triggerDockerSourceDiscover - """ - _req = await self._client.trigger_docker_source_discover_with_http_info( - source_id="6c02aeb1-775e-418e-870b-1faccd4b2c0f", - ) - - assert _req.path == "/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f/discover" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - - async def test_update_authentication_0(self): - """ - updateAuthentication - """ - _req = await self._client.update_authentication_with_http_info( - authentication_id="6c02aeb1-775e-418e-870b-1faccd4b2c0f", - authentication_update={ - "name": "newName", - }, - ) - - assert _req.path == "/1/authentications/6c02aeb1-775e-418e-870b-1faccd4b2c0f" - assert _req.verb == "PATCH" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"name":"newName"}""") - - async def test_update_destination_0(self): - """ - updateDestination - """ - _req = await self._client.update_destination_with_http_info( - destination_id="6c02aeb1-775e-418e-870b-1faccd4b2c0f", - destination_update={ - "name": "newName", - }, - ) - - assert _req.path == "/1/destinations/6c02aeb1-775e-418e-870b-1faccd4b2c0f" - assert _req.verb == "PATCH" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"name":"newName"}""") - - async def test_update_source_0(self): - """ - updateSource - """ - _req = await self._client.update_source_with_http_info( - source_id="6c02aeb1-775e-418e-870b-1faccd4b2c0f", - source_update={ - "name": "newName", - }, - ) - - assert _req.path == "/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f" - assert _req.verb == "PATCH" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"name":"newName"}""") - - async def test_update_task_0(self): - """ - updateTask - """ - _req = await self._client.update_task_with_http_info( - task_id="6c02aeb1-775e-418e-870b-1faccd4b2c0f", - task_update={ - "enabled": False, - }, - ) - - assert _req.path == "/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f" - assert _req.verb == "PATCH" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"enabled":false}""") diff --git a/tests/output/python/tests/methods/requests/insights_test.py b/tests/output/python/tests/methods/requests/insights_test.py deleted file mode 100644 index e439f3b202..0000000000 --- a/tests/output/python/tests/methods/requests/insights_test.py +++ /dev/null @@ -1,554 +0,0 @@ -from json import loads - -from algoliasearch.http.transporter import EchoTransporter -from algoliasearch.insights.client import InsightsClient -from algoliasearch.insights.config import Config - - -class TestInsightsClient: - _config = Config("test_app_id", "test_api_key", "us") - _client = InsightsClient(EchoTransporter(_config), _config) - - async def test_custom_delete_0(self): - """ - allow del method for a custom path with minimal parameters - """ - _req = await self._client.custom_delete_with_http_info( - path="/test/minimal", - ) - - assert _req.path == "/1/test/minimal" - assert _req.verb == "DELETE" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_custom_delete_1(self): - """ - allow del method for a custom path with all parameters - """ - _req = await self._client.custom_delete_with_http_info( - path="/test/all", - parameters={ - "query": "parameters", - }, - ) - - assert _req.path == "/1/test/all" - assert _req.verb == "DELETE" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_custom_get_0(self): - """ - allow get method for a custom path with minimal parameters - """ - _req = await self._client.custom_get_with_http_info( - path="/test/minimal", - ) - - assert _req.path == "/1/test/minimal" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_custom_get_1(self): - """ - allow get method for a custom path with all parameters - """ - _req = await self._client.custom_get_with_http_info( - path="/test/all", - parameters={ - "query": "parameters", - }, - ) - - assert _req.path == "/1/test/all" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_custom_post_0(self): - """ - allow post method for a custom path with minimal parameters - """ - _req = await self._client.custom_post_with_http_info( - path="/test/minimal", - ) - - assert _req.path == "/1/test/minimal" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{}""") - - async def test_custom_post_1(self): - """ - allow post method for a custom path with all parameters - """ - _req = await self._client.custom_post_with_http_info( - path="/test/all", - parameters={ - "query": "parameters", - }, - body={ - "body": "parameters", - }, - ) - - assert _req.path == "/1/test/all" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"body":"parameters"}""") - - async def test_custom_post_2(self): - """ - requestOptions can override default query parameters - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"query":"myQueryParameter"}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {"query": "myQueryParameter"}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_3(self): - """ - requestOptions merges query parameters with default ones - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"query2":"myQueryParameter"}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "query2": "myQueryParameter"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_4(self): - """ - requestOptions can override default headers - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "headers": loads("""{"x-algolia-api-key":"myApiKey"}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {"x-algolia-api-key": "myApiKey"}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_5(self): - """ - requestOptions merges headers with default ones - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "headers": loads("""{"x-algolia-api-key":"myApiKey"}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {"x-algolia-api-key": "myApiKey"}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_6(self): - """ - requestOptions queryParameters accepts booleans - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"isItWorking":true}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "isItWorking": "true"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_7(self): - """ - requestOptions queryParameters accepts integers - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"myParam":2}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "myParam": "2"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_8(self): - """ - requestOptions queryParameters accepts list of string - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"myParam":["c","d"]}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "myParam": "c,d"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_9(self): - """ - requestOptions queryParameters accepts list of booleans - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"myParam":[true,true,false]}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "myParam": "true,true,false"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_10(self): - """ - requestOptions queryParameters accepts list of integers - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"myParam":[1,2]}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "myParam": "1,2"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_put_0(self): - """ - allow put method for a custom path with minimal parameters - """ - _req = await self._client.custom_put_with_http_info( - path="/test/minimal", - ) - - assert _req.path == "/1/test/minimal" - assert _req.verb == "PUT" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{}""") - - async def test_custom_put_1(self): - """ - allow put method for a custom path with all parameters - """ - _req = await self._client.custom_put_with_http_info( - path="/test/all", - parameters={ - "query": "parameters", - }, - body={ - "body": "parameters", - }, - ) - - assert _req.path == "/1/test/all" - assert _req.verb == "PUT" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"body":"parameters"}""") - - async def test_push_events_0(self): - """ - pushEvents0 - """ - _req = await self._client.push_events_with_http_info( - insights_events={ - "events": [ - { - "eventType": "click", - "eventName": "Product Clicked", - "index": "products", - "userToken": "user-123456", - "authenticatedUserToken": "user-123456", - "timestamp": 1641290601962, - "objectIDs": [ - "9780545139700", - "9780439784542", - ], - "queryID": "43b15df305339e827f0ac0bdc5ebcaa7", - "positions": [ - 7, - 6, - ], - }, - ], - }, - ) - - assert _req.path == "/1/events" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"events":[{"eventType":"click","eventName":"Product Clicked","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"queryID":"43b15df305339e827f0ac0bdc5ebcaa7","positions":[7,6]}]}""" - ) - - async def test_push_events_1(self): - """ - Many events type - """ - _req = await self._client.push_events_with_http_info( - insights_events={ - "events": [ - { - "eventType": "conversion", - "eventName": "Product Purchased", - "index": "products", - "userToken": "user-123456", - "authenticatedUserToken": "user-123456", - "timestamp": 1641290601962, - "objectIDs": [ - "9780545139700", - "9780439784542", - ], - "queryID": "43b15df305339e827f0ac0bdc5ebcaa7", - }, - { - "eventType": "view", - "eventName": "Product Detail Page Viewed", - "index": "products", - "userToken": "user-123456", - "authenticatedUserToken": "user-123456", - "timestamp": 1641290601962, - "objectIDs": [ - "9780545139700", - "9780439784542", - ], - }, - ], - }, - ) - - assert _req.path == "/1/events" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"events":[{"eventType":"conversion","eventName":"Product Purchased","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"queryID":"43b15df305339e827f0ac0bdc5ebcaa7"},{"eventType":"view","eventName":"Product Detail Page Viewed","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"]}]}""" - ) - - async def test_push_events_2(self): - """ - ConvertedObjectIDsAfterSearch - """ - _req = await self._client.push_events_with_http_info( - insights_events={ - "events": [ - { - "eventType": "conversion", - "eventName": "Product Purchased", - "index": "products", - "userToken": "user-123456", - "authenticatedUserToken": "user-123456", - "timestamp": 1641290601962, - "objectIDs": [ - "9780545139700", - "9780439784542", - ], - "queryID": "43b15df305339e827f0ac0bdc5ebcaa7", - }, - ], - }, - ) - - assert _req.path == "/1/events" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"events":[{"eventType":"conversion","eventName":"Product Purchased","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"queryID":"43b15df305339e827f0ac0bdc5ebcaa7"}]}""" - ) - - async def test_push_events_3(self): - """ - ViewedObjectIDs - """ - _req = await self._client.push_events_with_http_info( - insights_events={ - "events": [ - { - "eventType": "view", - "eventName": "Product Detail Page Viewed", - "index": "products", - "userToken": "user-123456", - "authenticatedUserToken": "user-123456", - "timestamp": 1641290601962, - "objectIDs": [ - "9780545139700", - "9780439784542", - ], - }, - ], - }, - ) - - assert _req.path == "/1/events" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"events":[{"eventType":"view","eventName":"Product Detail Page Viewed","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"]}]}""" - ) - - async def test_push_events_4(self): - """ - AddedToCartObjectIDs - """ - _req = await self._client.push_events_with_http_info( - insights_events={ - "events": [ - { - "eventType": "conversion", - "eventSubtype": "addToCart", - "eventName": "Product Added To Cart", - "index": "products", - "queryID": "43b15df305339e827f0ac0bdc5ebcaa7", - "userToken": "user-123456", - "authenticatedUserToken": "user-123456", - "timestamp": 1641290601962, - "objectIDs": [ - "9780545139700", - "9780439784542", - ], - "objectData": [ - { - "price": 19.99, - "quantity": 10, - "discount": 2.5, - }, - { - "price": "8$", - "quantity": 7, - "discount": "30%", - }, - ], - "currency": "USD", - }, - ], - }, - ) - - assert _req.path == "/1/events" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"events":[{"eventType":"conversion","eventSubtype":"addToCart","eventName":"Product Added To Cart","index":"products","queryID":"43b15df305339e827f0ac0bdc5ebcaa7","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"objectData":[{"price":19.99,"quantity":10,"discount":2.5},{"price":"8$","quantity":7,"discount":"30%"}],"currency":"USD"}]}""" - ) diff --git a/tests/output/python/tests/methods/requests/monitoring_test.py b/tests/output/python/tests/methods/requests/monitoring_test.py deleted file mode 100644 index 9c1f1a6aa5..0000000000 --- a/tests/output/python/tests/methods/requests/monitoring_test.py +++ /dev/null @@ -1,486 +0,0 @@ -from json import loads - -from algoliasearch.http.transporter import EchoTransporter -from algoliasearch.monitoring.client import MonitoringClient -from algoliasearch.monitoring.config import Config - - -class TestMonitoringClient: - _config = Config("test_app_id", "test_api_key") - _client = MonitoringClient(EchoTransporter(_config), _config) - - async def test_custom_delete_0(self): - """ - allow del method for a custom path with minimal parameters - """ - _req = await self._client.custom_delete_with_http_info( - path="/test/minimal", - ) - - assert _req.path == "/1/test/minimal" - assert _req.verb == "DELETE" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_custom_delete_1(self): - """ - allow del method for a custom path with all parameters - """ - _req = await self._client.custom_delete_with_http_info( - path="/test/all", - parameters={ - "query": "parameters", - }, - ) - - assert _req.path == "/1/test/all" - assert _req.verb == "DELETE" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_custom_get_0(self): - """ - allow get method for a custom path with minimal parameters - """ - _req = await self._client.custom_get_with_http_info( - path="/test/minimal", - ) - - assert _req.path == "/1/test/minimal" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_custom_get_1(self): - """ - allow get method for a custom path with all parameters - """ - _req = await self._client.custom_get_with_http_info( - path="/test/all", - parameters={ - "query": "parameters", - }, - ) - - assert _req.path == "/1/test/all" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_custom_post_0(self): - """ - allow post method for a custom path with minimal parameters - """ - _req = await self._client.custom_post_with_http_info( - path="/test/minimal", - ) - - assert _req.path == "/1/test/minimal" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{}""") - - async def test_custom_post_1(self): - """ - allow post method for a custom path with all parameters - """ - _req = await self._client.custom_post_with_http_info( - path="/test/all", - parameters={ - "query": "parameters", - }, - body={ - "body": "parameters", - }, - ) - - assert _req.path == "/1/test/all" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"body":"parameters"}""") - - async def test_custom_post_2(self): - """ - requestOptions can override default query parameters - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"query":"myQueryParameter"}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {"query": "myQueryParameter"}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_3(self): - """ - requestOptions merges query parameters with default ones - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"query2":"myQueryParameter"}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "query2": "myQueryParameter"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_4(self): - """ - requestOptions can override default headers - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "headers": loads("""{"x-algolia-api-key":"myApiKey"}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {"x-algolia-api-key": "myApiKey"}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_5(self): - """ - requestOptions merges headers with default ones - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "headers": loads("""{"x-algolia-api-key":"myApiKey"}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {"x-algolia-api-key": "myApiKey"}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_6(self): - """ - requestOptions queryParameters accepts booleans - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"isItWorking":true}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "isItWorking": "true"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_7(self): - """ - requestOptions queryParameters accepts integers - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"myParam":2}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "myParam": "2"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_8(self): - """ - requestOptions queryParameters accepts list of string - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"myParam":["c","d"]}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "myParam": "c,d"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_9(self): - """ - requestOptions queryParameters accepts list of booleans - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"myParam":[true,true,false]}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "myParam": "true,true,false"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_10(self): - """ - requestOptions queryParameters accepts list of integers - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"myParam":[1,2]}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "myParam": "1,2"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_put_0(self): - """ - allow put method for a custom path with minimal parameters - """ - _req = await self._client.custom_put_with_http_info( - path="/test/minimal", - ) - - assert _req.path == "/1/test/minimal" - assert _req.verb == "PUT" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{}""") - - async def test_custom_put_1(self): - """ - allow put method for a custom path with all parameters - """ - _req = await self._client.custom_put_with_http_info( - path="/test/all", - parameters={ - "query": "parameters", - }, - body={ - "body": "parameters", - }, - ) - - assert _req.path == "/1/test/all" - assert _req.verb == "PUT" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"body":"parameters"}""") - - async def test_get_cluster_incidents_0(self): - """ - getClusterIncidents - """ - _req = await self._client.get_cluster_incidents_with_http_info( - clusters="c1-de", - ) - - assert _req.path == "/1/incidents/c1-de" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_cluster_status_0(self): - """ - getClusterStatus - """ - _req = await self._client.get_cluster_status_with_http_info( - clusters="c1-de", - ) - - assert _req.path == "/1/status/c1-de" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_incidents_0(self): - """ - getIncidents - """ - _req = await self._client.get_incidents_with_http_info() - - assert _req.path == "/1/incidents" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_indexing_time_0(self): - """ - getIndexingTime - """ - _req = await self._client.get_indexing_time_with_http_info( - clusters="c1-de", - ) - - assert _req.path == "/1/indexing/c1-de" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_inventory_0(self): - """ - getInventory - """ - _req = await self._client.get_inventory_with_http_info() - - assert _req.path == "/1/inventory/servers" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_latency_0(self): - """ - getLatency - """ - _req = await self._client.get_latency_with_http_info( - clusters="c1-de", - ) - - assert _req.path == "/1/latency/c1-de" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_metrics_0(self): - """ - getMetrics - """ - _req = await self._client.get_metrics_with_http_info( - metric="avg_build_time", - period="minute", - ) - - assert _req.path == "/1/infrastructure/avg_build_time/period/minute" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_reachability_0(self): - """ - getReachability - """ - _req = await self._client.get_reachability_with_http_info( - clusters="c1-de", - ) - - assert _req.path == "/1/reachability/c1-de/probes" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_status_0(self): - """ - getStatus - """ - _req = await self._client.get_status_with_http_info() - - assert _req.path == "/1/status" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None diff --git a/tests/output/python/tests/methods/requests/personalization_test.py b/tests/output/python/tests/methods/requests/personalization_test.py deleted file mode 100644 index 828e9012dd..0000000000 --- a/tests/output/python/tests/methods/requests/personalization_test.py +++ /dev/null @@ -1,436 +0,0 @@ -from json import loads - -from algoliasearch.http.transporter import EchoTransporter -from algoliasearch.personalization.client import PersonalizationClient -from algoliasearch.personalization.config import Config - - -class TestPersonalizationClient: - _config = Config("test_app_id", "test_api_key", "us") - _client = PersonalizationClient(EchoTransporter(_config), _config) - - async def test_custom_delete_0(self): - """ - allow del method for a custom path with minimal parameters - """ - _req = await self._client.custom_delete_with_http_info( - path="/test/minimal", - ) - - assert _req.path == "/1/test/minimal" - assert _req.verb == "DELETE" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_custom_delete_1(self): - """ - allow del method for a custom path with all parameters - """ - _req = await self._client.custom_delete_with_http_info( - path="/test/all", - parameters={ - "query": "parameters", - }, - ) - - assert _req.path == "/1/test/all" - assert _req.verb == "DELETE" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_custom_get_0(self): - """ - allow get method for a custom path with minimal parameters - """ - _req = await self._client.custom_get_with_http_info( - path="/test/minimal", - ) - - assert _req.path == "/1/test/minimal" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_custom_get_1(self): - """ - allow get method for a custom path with all parameters - """ - _req = await self._client.custom_get_with_http_info( - path="/test/all", - parameters={ - "query": "parameters", - }, - ) - - assert _req.path == "/1/test/all" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_custom_post_0(self): - """ - allow post method for a custom path with minimal parameters - """ - _req = await self._client.custom_post_with_http_info( - path="/test/minimal", - ) - - assert _req.path == "/1/test/minimal" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{}""") - - async def test_custom_post_1(self): - """ - allow post method for a custom path with all parameters - """ - _req = await self._client.custom_post_with_http_info( - path="/test/all", - parameters={ - "query": "parameters", - }, - body={ - "body": "parameters", - }, - ) - - assert _req.path == "/1/test/all" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"body":"parameters"}""") - - async def test_custom_post_2(self): - """ - requestOptions can override default query parameters - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"query":"myQueryParameter"}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {"query": "myQueryParameter"}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_3(self): - """ - requestOptions merges query parameters with default ones - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"query2":"myQueryParameter"}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "query2": "myQueryParameter"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_4(self): - """ - requestOptions can override default headers - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "headers": loads("""{"x-algolia-api-key":"myApiKey"}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {"x-algolia-api-key": "myApiKey"}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_5(self): - """ - requestOptions merges headers with default ones - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "headers": loads("""{"x-algolia-api-key":"myApiKey"}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {"x-algolia-api-key": "myApiKey"}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_6(self): - """ - requestOptions queryParameters accepts booleans - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"isItWorking":true}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "isItWorking": "true"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_7(self): - """ - requestOptions queryParameters accepts integers - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"myParam":2}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "myParam": "2"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_8(self): - """ - requestOptions queryParameters accepts list of string - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"myParam":["c","d"]}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "myParam": "c,d"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_9(self): - """ - requestOptions queryParameters accepts list of booleans - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"myParam":[true,true,false]}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "myParam": "true,true,false"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_10(self): - """ - requestOptions queryParameters accepts list of integers - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"myParam":[1,2]}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "myParam": "1,2"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_put_0(self): - """ - allow put method for a custom path with minimal parameters - """ - _req = await self._client.custom_put_with_http_info( - path="/test/minimal", - ) - - assert _req.path == "/1/test/minimal" - assert _req.verb == "PUT" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{}""") - - async def test_custom_put_1(self): - """ - allow put method for a custom path with all parameters - """ - _req = await self._client.custom_put_with_http_info( - path="/test/all", - parameters={ - "query": "parameters", - }, - body={ - "body": "parameters", - }, - ) - - assert _req.path == "/1/test/all" - assert _req.verb == "PUT" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"body":"parameters"}""") - - async def test_delete_user_profile_0(self): - """ - delete deleteUserProfile - """ - _req = await self._client.delete_user_profile_with_http_info( - user_token="UserToken", - ) - - assert _req.path == "/1/profiles/UserToken" - assert _req.verb == "DELETE" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_personalization_strategy_0(self): - """ - get getPersonalizationStrategy - """ - _req = await self._client.get_personalization_strategy_with_http_info() - - assert _req.path == "/1/strategies/personalization" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_user_token_profile_0(self): - """ - get getUserTokenProfile - """ - _req = await self._client.get_user_token_profile_with_http_info( - user_token="UserToken", - ) - - assert _req.path == "/1/profiles/personalization/UserToken" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_set_personalization_strategy_0(self): - """ - set setPersonalizationStrategy - """ - _req = await self._client.set_personalization_strategy_with_http_info( - personalization_strategy_params={ - "eventScoring": [ - { - "score": 42, - "eventName": "Algolia", - "eventType": "Event", - }, - ], - "facetScoring": [ - { - "score": 42, - "facetName": "Event", - }, - ], - "personalizationImpact": 42, - }, - ) - - assert _req.path == "/1/strategies/personalization" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"eventScoring":[{"score":42,"eventName":"Algolia","eventType":"Event"}],"facetScoring":[{"score":42,"facetName":"Event"}],"personalizationImpact":42}""" - ) diff --git a/tests/output/python/tests/methods/requests/query_suggestions_test.py b/tests/output/python/tests/methods/requests/query_suggestions_test.py deleted file mode 100644 index 5f10f6b49c..0000000000 --- a/tests/output/python/tests/methods/requests/query_suggestions_test.py +++ /dev/null @@ -1,519 +0,0 @@ -from json import loads - -from algoliasearch.http.transporter import EchoTransporter -from algoliasearch.query_suggestions.client import QuerySuggestionsClient -from algoliasearch.query_suggestions.config import Config - - -class TestQuerySuggestionsClient: - _config = Config("test_app_id", "test_api_key", "us") - _client = QuerySuggestionsClient(EchoTransporter(_config), _config) - - async def test_create_config_0(self): - """ - createConfig0 - """ - _req = await self._client.create_config_with_http_info( - query_suggestions_configuration_with_index={ - "indexName": "theIndexName", - "sourceIndices": [ - { - "indexName": "testIndex", - "facets": [ - { - "attribute": "test", - }, - ], - "generate": [ - [ - "facetA", - "facetB", - ], - [ - "facetC", - ], - ], - }, - ], - "languages": [ - "french", - ], - "exclude": [ - "test", - ], - }, - ) - - assert _req.path == "/1/configs" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"indexName":"theIndexName","sourceIndices":[{"indexName":"testIndex","facets":[{"attribute":"test"}],"generate":[["facetA","facetB"],["facetC"]]}],"languages":["french"],"exclude":["test"]}""" - ) - - async def test_custom_delete_0(self): - """ - allow del method for a custom path with minimal parameters - """ - _req = await self._client.custom_delete_with_http_info( - path="/test/minimal", - ) - - assert _req.path == "/1/test/minimal" - assert _req.verb == "DELETE" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_custom_delete_1(self): - """ - allow del method for a custom path with all parameters - """ - _req = await self._client.custom_delete_with_http_info( - path="/test/all", - parameters={ - "query": "parameters", - }, - ) - - assert _req.path == "/1/test/all" - assert _req.verb == "DELETE" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_custom_get_0(self): - """ - allow get method for a custom path with minimal parameters - """ - _req = await self._client.custom_get_with_http_info( - path="/test/minimal", - ) - - assert _req.path == "/1/test/minimal" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_custom_get_1(self): - """ - allow get method for a custom path with all parameters - """ - _req = await self._client.custom_get_with_http_info( - path="/test/all", - parameters={ - "query": "parameters", - }, - ) - - assert _req.path == "/1/test/all" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_custom_post_0(self): - """ - allow post method for a custom path with minimal parameters - """ - _req = await self._client.custom_post_with_http_info( - path="/test/minimal", - ) - - assert _req.path == "/1/test/minimal" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{}""") - - async def test_custom_post_1(self): - """ - allow post method for a custom path with all parameters - """ - _req = await self._client.custom_post_with_http_info( - path="/test/all", - parameters={ - "query": "parameters", - }, - body={ - "body": "parameters", - }, - ) - - assert _req.path == "/1/test/all" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"body":"parameters"}""") - - async def test_custom_post_2(self): - """ - requestOptions can override default query parameters - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"query":"myQueryParameter"}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {"query": "myQueryParameter"}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_3(self): - """ - requestOptions merges query parameters with default ones - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"query2":"myQueryParameter"}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "query2": "myQueryParameter"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_4(self): - """ - requestOptions can override default headers - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "headers": loads("""{"x-algolia-api-key":"myApiKey"}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {"x-algolia-api-key": "myApiKey"}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_5(self): - """ - requestOptions merges headers with default ones - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "headers": loads("""{"x-algolia-api-key":"myApiKey"}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {"x-algolia-api-key": "myApiKey"}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_6(self): - """ - requestOptions queryParameters accepts booleans - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"isItWorking":true}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "isItWorking": "true"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_7(self): - """ - requestOptions queryParameters accepts integers - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"myParam":2}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "myParam": "2"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_8(self): - """ - requestOptions queryParameters accepts list of string - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"myParam":["c","d"]}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "myParam": "c,d"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_9(self): - """ - requestOptions queryParameters accepts list of booleans - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"myParam":[true,true,false]}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "myParam": "true,true,false"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_10(self): - """ - requestOptions queryParameters accepts list of integers - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"myParam":[1,2]}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "myParam": "1,2"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_put_0(self): - """ - allow put method for a custom path with minimal parameters - """ - _req = await self._client.custom_put_with_http_info( - path="/test/minimal", - ) - - assert _req.path == "/1/test/minimal" - assert _req.verb == "PUT" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{}""") - - async def test_custom_put_1(self): - """ - allow put method for a custom path with all parameters - """ - _req = await self._client.custom_put_with_http_info( - path="/test/all", - parameters={ - "query": "parameters", - }, - body={ - "body": "parameters", - }, - ) - - assert _req.path == "/1/test/all" - assert _req.verb == "PUT" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"body":"parameters"}""") - - async def test_delete_config_0(self): - """ - deleteConfig0 - """ - _req = await self._client.delete_config_with_http_info( - index_name="theIndexName", - ) - - assert _req.path == "/1/configs/theIndexName" - assert _req.verb == "DELETE" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_all_configs_0(self): - """ - getAllConfigs0 - """ - _req = await self._client.get_all_configs_with_http_info() - - assert _req.path == "/1/configs" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_config_0(self): - """ - getConfig0 - """ - _req = await self._client.get_config_with_http_info( - index_name="theIndexName", - ) - - assert _req.path == "/1/configs/theIndexName" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_config_status_0(self): - """ - getConfigStatus0 - """ - _req = await self._client.get_config_status_with_http_info( - index_name="theIndexName", - ) - - assert _req.path == "/1/configs/theIndexName/status" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_log_file_0(self): - """ - getLogFile0 - """ - _req = await self._client.get_log_file_with_http_info( - index_name="theIndexName", - ) - - assert _req.path == "/1/logs/theIndexName" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_update_config_0(self): - """ - updateConfig0 - """ - _req = await self._client.update_config_with_http_info( - index_name="theIndexName", - query_suggestions_configuration={ - "sourceIndices": [ - { - "indexName": "testIndex", - "facets": [ - { - "attribute": "test", - }, - ], - "generate": [ - [ - "facetA", - "facetB", - ], - [ - "facetC", - ], - ], - }, - ], - "languages": [ - "french", - ], - "exclude": [ - "test", - ], - }, - ) - - assert _req.path == "/1/configs/theIndexName" - assert _req.verb == "PUT" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"sourceIndices":[{"indexName":"testIndex","facets":[{"attribute":"test"}],"generate":[["facetA","facetB"],["facetC"]]}],"languages":["french"],"exclude":["test"]}""" - ) diff --git a/tests/output/python/tests/methods/requests/recommend_test.py b/tests/output/python/tests/methods/requests/recommend_test.py deleted file mode 100644 index 9a201301ed..0000000000 --- a/tests/output/python/tests/methods/requests/recommend_test.py +++ /dev/null @@ -1,675 +0,0 @@ -from json import loads - -from algoliasearch.http.transporter import EchoTransporter -from algoliasearch.recommend.client import RecommendClient -from algoliasearch.recommend.config import Config - - -class TestRecommendClient: - _config = Config("test_app_id", "test_api_key") - _client = RecommendClient(EchoTransporter(_config), _config) - - async def test_custom_delete_0(self): - """ - allow del method for a custom path with minimal parameters - """ - _req = await self._client.custom_delete_with_http_info( - path="/test/minimal", - ) - - assert _req.path == "/1/test/minimal" - assert _req.verb == "DELETE" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_custom_delete_1(self): - """ - allow del method for a custom path with all parameters - """ - _req = await self._client.custom_delete_with_http_info( - path="/test/all", - parameters={ - "query": "parameters", - }, - ) - - assert _req.path == "/1/test/all" - assert _req.verb == "DELETE" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_custom_get_0(self): - """ - allow get method for a custom path with minimal parameters - """ - _req = await self._client.custom_get_with_http_info( - path="/test/minimal", - ) - - assert _req.path == "/1/test/minimal" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_custom_get_1(self): - """ - allow get method for a custom path with all parameters - """ - _req = await self._client.custom_get_with_http_info( - path="/test/all", - parameters={ - "query": "parameters", - }, - ) - - assert _req.path == "/1/test/all" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_custom_post_0(self): - """ - allow post method for a custom path with minimal parameters - """ - _req = await self._client.custom_post_with_http_info( - path="/test/minimal", - ) - - assert _req.path == "/1/test/minimal" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{}""") - - async def test_custom_post_1(self): - """ - allow post method for a custom path with all parameters - """ - _req = await self._client.custom_post_with_http_info( - path="/test/all", - parameters={ - "query": "parameters", - }, - body={ - "body": "parameters", - }, - ) - - assert _req.path == "/1/test/all" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"body":"parameters"}""") - - async def test_custom_post_2(self): - """ - requestOptions can override default query parameters - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"query":"myQueryParameter"}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {"query": "myQueryParameter"}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_3(self): - """ - requestOptions merges query parameters with default ones - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"query2":"myQueryParameter"}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "query2": "myQueryParameter"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_4(self): - """ - requestOptions can override default headers - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "headers": loads("""{"x-algolia-api-key":"myApiKey"}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {"x-algolia-api-key": "myApiKey"}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_5(self): - """ - requestOptions merges headers with default ones - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "headers": loads("""{"x-algolia-api-key":"myApiKey"}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {"x-algolia-api-key": "myApiKey"}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_6(self): - """ - requestOptions queryParameters accepts booleans - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"isItWorking":true}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "isItWorking": "true"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_7(self): - """ - requestOptions queryParameters accepts integers - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"myParam":2}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "myParam": "2"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_8(self): - """ - requestOptions queryParameters accepts list of string - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"myParam":["c","d"]}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "myParam": "c,d"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_9(self): - """ - requestOptions queryParameters accepts list of booleans - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"myParam":[true,true,false]}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "myParam": "true,true,false"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_10(self): - """ - requestOptions queryParameters accepts list of integers - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"myParam":[1,2]}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "myParam": "1,2"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_put_0(self): - """ - allow put method for a custom path with minimal parameters - """ - _req = await self._client.custom_put_with_http_info( - path="/test/minimal", - ) - - assert _req.path == "/1/test/minimal" - assert _req.verb == "PUT" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{}""") - - async def test_custom_put_1(self): - """ - allow put method for a custom path with all parameters - """ - _req = await self._client.custom_put_with_http_info( - path="/test/all", - parameters={ - "query": "parameters", - }, - body={ - "body": "parameters", - }, - ) - - assert _req.path == "/1/test/all" - assert _req.verb == "PUT" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"body":"parameters"}""") - - async def test_delete_recommend_rule_0(self): - """ - deleteRecommendRule0 - """ - _req = await self._client.delete_recommend_rule_with_http_info( - index_name="indexName", - model="related-products", - object_id="objectID", - ) - - assert ( - _req.path - == "/1/indexes/indexName/related-products/recommend/rules/objectID" - ) - assert _req.verb == "DELETE" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_recommend_rule_0(self): - """ - getRecommendRule0 - """ - _req = await self._client.get_recommend_rule_with_http_info( - index_name="indexName", - model="related-products", - object_id="objectID", - ) - - assert ( - _req.path - == "/1/indexes/indexName/related-products/recommend/rules/objectID" - ) - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_recommend_status_0(self): - """ - getRecommendStatus0 - """ - _req = await self._client.get_recommend_status_with_http_info( - index_name="indexName", - model="related-products", - task_id=12345, - ) - - assert _req.path == "/1/indexes/indexName/related-products/task/12345" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_recommendations_0(self): - """ - get recommendations for recommend model with minimal parameters - """ - _req = await self._client.get_recommendations_with_http_info( - get_recommendations_params={ - "requests": [ - { - "indexName": "indexName", - "objectID": "objectID", - "model": "related-products", - "threshold": 42, - }, - ], - }, - ) - - assert _req.path == "/1/indexes/*/recommendations" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"requests":[{"indexName":"indexName","objectID":"objectID","model":"related-products","threshold":42}]}""" - ) - - async def test_get_recommendations_1(self): - """ - get recommendations for recommend model with all parameters - """ - _req = await self._client.get_recommendations_with_http_info( - get_recommendations_params={ - "requests": [ - { - "indexName": "indexName", - "objectID": "objectID", - "model": "related-products", - "threshold": 42, - "maxRecommendations": 10, - "queryParameters": { - "query": "myQuery", - "facetFilters": [ - "query", - ], - }, - "fallbackParameters": { - "query": "myQuery", - "facetFilters": [ - "fallback", - ], - }, - }, - ], - }, - ) - - assert _req.path == "/1/indexes/*/recommendations" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"requests":[{"indexName":"indexName","objectID":"objectID","model":"related-products","threshold":42,"maxRecommendations":10,"queryParameters":{"query":"myQuery","facetFilters":["query"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback"]}}]}""" - ) - - async def test_get_recommendations_2(self): - """ - get recommendations for trending model with minimal parameters - """ - _req = await self._client.get_recommendations_with_http_info( - get_recommendations_params={ - "requests": [ - { - "indexName": "indexName", - "model": "trending-items", - "threshold": 42, - }, - ], - }, - ) - - assert _req.path == "/1/indexes/*/recommendations" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"requests":[{"indexName":"indexName","model":"trending-items","threshold":42}]}""" - ) - - async def test_get_recommendations_3(self): - """ - get recommendations for trending model with all parameters - """ - _req = await self._client.get_recommendations_with_http_info( - get_recommendations_params={ - "requests": [ - { - "indexName": "indexName", - "model": "trending-items", - "threshold": 42, - "maxRecommendations": 10, - "facetName": "myFacetName", - "facetValue": "myFacetValue", - "queryParameters": { - "query": "myQuery", - "facetFilters": [ - "query", - ], - }, - "fallbackParameters": { - "query": "myQuery", - "facetFilters": [ - "fallback", - ], - }, - }, - ], - }, - ) - - assert _req.path == "/1/indexes/*/recommendations" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"requests":[{"indexName":"indexName","model":"trending-items","threshold":42,"maxRecommendations":10,"facetName":"myFacetName","facetValue":"myFacetValue","queryParameters":{"query":"myQuery","facetFilters":["query"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback"]}}]}""" - ) - - async def test_get_recommendations_4(self): - """ - get multiple recommendations with minimal parameters - """ - _req = await self._client.get_recommendations_with_http_info( - get_recommendations_params={ - "requests": [ - { - "indexName": "indexName1", - "objectID": "objectID1", - "model": "related-products", - "threshold": 21, - }, - { - "indexName": "indexName2", - "objectID": "objectID2", - "model": "related-products", - "threshold": 21, - }, - ], - }, - ) - - assert _req.path == "/1/indexes/*/recommendations" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"requests":[{"indexName":"indexName1","objectID":"objectID1","model":"related-products","threshold":21},{"indexName":"indexName2","objectID":"objectID2","model":"related-products","threshold":21}]}""" - ) - - async def test_get_recommendations_5(self): - """ - get multiple recommendations with all parameters - """ - _req = await self._client.get_recommendations_with_http_info( - get_recommendations_params={ - "requests": [ - { - "indexName": "indexName1", - "objectID": "objectID1", - "model": "related-products", - "threshold": 21, - "maxRecommendations": 10, - "queryParameters": { - "query": "myQuery", - "facetFilters": [ - "query1", - ], - }, - "fallbackParameters": { - "query": "myQuery", - "facetFilters": [ - "fallback1", - ], - }, - }, - { - "indexName": "indexName2", - "objectID": "objectID2", - "model": "related-products", - "threshold": 21, - "maxRecommendations": 10, - "queryParameters": { - "query": "myQuery", - "facetFilters": [ - "query2", - ], - }, - "fallbackParameters": { - "query": "myQuery", - "facetFilters": [ - "fallback2", - ], - }, - }, - ], - }, - ) - - assert _req.path == "/1/indexes/*/recommendations" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"requests":[{"indexName":"indexName1","objectID":"objectID1","model":"related-products","threshold":21,"maxRecommendations":10,"queryParameters":{"query":"myQuery","facetFilters":["query1"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback1"]}},{"indexName":"indexName2","objectID":"objectID2","model":"related-products","threshold":21,"maxRecommendations":10,"queryParameters":{"query":"myQuery","facetFilters":["query2"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback2"]}}]}""" - ) - - async def test_get_recommendations_6(self): - """ - get frequently bought together recommendations - """ - _req = await self._client.get_recommendations_with_http_info( - get_recommendations_params={ - "requests": [ - { - "indexName": "indexName1", - "objectID": "objectID1", - "model": "bought-together", - "threshold": 42, - }, - ], - }, - ) - - assert _req.path == "/1/indexes/*/recommendations" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"requests":[{"indexName":"indexName1","objectID":"objectID1","model":"bought-together","threshold":42}]}""" - ) - - async def test_search_recommend_rules_0(self): - """ - searchRecommendRules0 - """ - _req = await self._client.search_recommend_rules_with_http_info( - index_name="indexName", - model="related-products", - ) - - assert ( - _req.path == "/1/indexes/indexName/related-products/recommend/rules/search" - ) - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{}""") diff --git a/tests/output/python/tests/methods/requests/search_test.py b/tests/output/python/tests/methods/requests/search_test.py deleted file mode 100644 index 23d052dcc9..0000000000 --- a/tests/output/python/tests/methods/requests/search_test.py +++ /dev/null @@ -1,2796 +0,0 @@ -from json import loads -from os import environ - -from algoliasearch.http.transporter import EchoTransporter -from algoliasearch.search.client import SearchClient -from algoliasearch.search.config import Config -from dotenv import load_dotenv - -load_dotenv("../../.env") - - -class TestSearchClient: - _config = Config("test_app_id", "test_api_key") - _client = SearchClient(EchoTransporter(_config), _config) - - _e2e_app_id = environ.get("ALGOLIA_APPLICATION_ID") - if _e2e_app_id is None: - raise Exception( - "please provide an `ALGOLIA_APPLICATION_ID` env var for e2e tests" - ) - - _e2e_api_key = environ.get("ALGOLIA_ADMIN_KEY") - if _e2e_api_key is None: - raise Exception("please provide an `ALGOLIA_ADMIN_KEY` env var for e2e tests") - - async def test_add_api_key_0(self): - """ - addApiKey0 - """ - _req = await self._client.add_api_key_with_http_info( - api_key={ - "acl": [ - "search", - "addObject", - ], - "description": "my new api key", - "validity": 300, - "maxQueriesPerIPPerHour": 100, - "maxHitsPerQuery": 20, - }, - ) - - assert _req.path == "/1/keys" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"acl":["search","addObject"],"description":"my new api key","validity":300,"maxQueriesPerIPPerHour":100,"maxHitsPerQuery":20}""" - ) - - async def test_add_or_update_object_0(self): - """ - addOrUpdateObject0 - """ - _req = await self._client.add_or_update_object_with_http_info( - index_name="indexName", - object_id="uniqueID", - body={ - "key": "value", - }, - ) - - assert _req.path == "/1/indexes/indexName/uniqueID" - assert _req.verb == "PUT" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"key":"value"}""") - - async def test_append_source_0(self): - """ - appendSource0 - """ - _req = await self._client.append_source_with_http_info( - source={ - "source": "theSource", - "description": "theDescription", - }, - ) - - assert _req.path == "/1/security/sources/append" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"source":"theSource","description":"theDescription"}""" - ) - - async def test_assign_user_id_0(self): - """ - assignUserId0 - """ - _req = await self._client.assign_user_id_with_http_info( - x_algolia_user_id="userID", - assign_user_id_params={ - "cluster": "theCluster", - }, - ) - - assert _req.path == "/1/clusters/mapping" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {"x-algolia-user-id": "userID"}.items() - assert loads(_req.data) == loads("""{"cluster":"theCluster"}""") - - async def test_batch_0(self): - """ - allows batch method with `addObject` action - """ - _req = await self._client.batch_with_http_info( - index_name="theIndexName", - batch_write_params={ - "requests": [ - { - "action": "addObject", - "body": { - "key": "value", - }, - }, - ], - }, - ) - - assert _req.path == "/1/indexes/theIndexName/batch" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"requests":[{"action":"addObject","body":{"key":"value"}}]}""" - ) - - async def test_batch_1(self): - """ - allows batch method with `clear` action - """ - _req = await self._client.batch_with_http_info( - index_name="theIndexName", - batch_write_params={ - "requests": [ - { - "action": "clear", - "body": { - "key": "value", - }, - }, - ], - }, - ) - - assert _req.path == "/1/indexes/theIndexName/batch" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"requests":[{"action":"clear","body":{"key":"value"}}]}""" - ) - - async def test_batch_2(self): - """ - allows batch method with `delete` action - """ - _req = await self._client.batch_with_http_info( - index_name="theIndexName", - batch_write_params={ - "requests": [ - { - "action": "delete", - "body": { - "key": "value", - }, - }, - ], - }, - ) - - assert _req.path == "/1/indexes/theIndexName/batch" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"requests":[{"action":"delete","body":{"key":"value"}}]}""" - ) - - async def test_batch_3(self): - """ - allows batch method with `deleteObject` action - """ - _req = await self._client.batch_with_http_info( - index_name="theIndexName", - batch_write_params={ - "requests": [ - { - "action": "deleteObject", - "body": { - "key": "value", - }, - }, - ], - }, - ) - - assert _req.path == "/1/indexes/theIndexName/batch" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"requests":[{"action":"deleteObject","body":{"key":"value"}}]}""" - ) - - async def test_batch_4(self): - """ - allows batch method with `partialUpdateObject` action - """ - _req = await self._client.batch_with_http_info( - index_name="theIndexName", - batch_write_params={ - "requests": [ - { - "action": "partialUpdateObject", - "body": { - "key": "value", - }, - }, - ], - }, - ) - - assert _req.path == "/1/indexes/theIndexName/batch" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"requests":[{"action":"partialUpdateObject","body":{"key":"value"}}]}""" - ) - - async def test_batch_5(self): - """ - allows batch method with `partialUpdateObjectNoCreate` action - """ - _req = await self._client.batch_with_http_info( - index_name="theIndexName", - batch_write_params={ - "requests": [ - { - "action": "partialUpdateObjectNoCreate", - "body": { - "key": "value", - }, - }, - ], - }, - ) - - assert _req.path == "/1/indexes/theIndexName/batch" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"requests":[{"action":"partialUpdateObjectNoCreate","body":{"key":"value"}}]}""" - ) - - async def test_batch_6(self): - """ - allows batch method with `updateObject` action - """ - _req = await self._client.batch_with_http_info( - index_name="theIndexName", - batch_write_params={ - "requests": [ - { - "action": "updateObject", - "body": { - "key": "value", - }, - }, - ], - }, - ) - - assert _req.path == "/1/indexes/theIndexName/batch" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"requests":[{"action":"updateObject","body":{"key":"value"}}]}""" - ) - - async def test_batch_assign_user_ids_0(self): - """ - batchAssignUserIds0 - """ - _req = await self._client.batch_assign_user_ids_with_http_info( - x_algolia_user_id="userID", - batch_assign_user_ids_params={ - "cluster": "theCluster", - "users": [ - "user1", - "user2", - ], - }, - ) - - assert _req.path == "/1/clusters/mapping/batch" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {"x-algolia-user-id": "userID"}.items() - assert loads(_req.data) == loads( - """{"cluster":"theCluster","users":["user1","user2"]}""" - ) - - async def test_batch_dictionary_entries_0(self): - """ - get batchDictionaryEntries results with minimal parameters - """ - _req = await self._client.batch_dictionary_entries_with_http_info( - dictionary_name="compounds", - batch_dictionary_entries_params={ - "requests": [ - { - "action": "addEntry", - "body": { - "objectID": "1", - "language": "en", - }, - }, - { - "action": "deleteEntry", - "body": { - "objectID": "2", - "language": "fr", - }, - }, - ], - }, - ) - - assert _req.path == "/1/dictionaries/compounds/batch" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"requests":[{"action":"addEntry","body":{"objectID":"1","language":"en"}},{"action":"deleteEntry","body":{"objectID":"2","language":"fr"}}]}""" - ) - - async def test_batch_dictionary_entries_1(self): - """ - get batchDictionaryEntries results with all parameters - """ - _req = await self._client.batch_dictionary_entries_with_http_info( - dictionary_name="compounds", - batch_dictionary_entries_params={ - "clearExistingDictionaryEntries": False, - "requests": [ - { - "action": "addEntry", - "body": { - "objectID": "1", - "language": "en", - "word": "fancy", - "words": [ - "believe", - "algolia", - ], - "decomposition": [ - "trust", - "algolia", - ], - "state": "enabled", - }, - }, - { - "action": "deleteEntry", - "body": { - "objectID": "2", - "language": "fr", - "word": "humility", - "words": [ - "candor", - "algolia", - ], - "decomposition": [ - "grit", - "algolia", - ], - "state": "enabled", - }, - }, - ], - }, - ) - - assert _req.path == "/1/dictionaries/compounds/batch" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"clearExistingDictionaryEntries":false,"requests":[{"action":"addEntry","body":{"objectID":"1","language":"en","word":"fancy","words":["believe","algolia"],"decomposition":["trust","algolia"],"state":"enabled"}},{"action":"deleteEntry","body":{"objectID":"2","language":"fr","word":"humility","words":["candor","algolia"],"decomposition":["grit","algolia"],"state":"enabled"}}]}""" - ) - - async def test_batch_dictionary_entries_2(self): - """ - get batchDictionaryEntries results additional properties - """ - _req = await self._client.batch_dictionary_entries_with_http_info( - dictionary_name="compounds", - batch_dictionary_entries_params={ - "requests": [ - { - "action": "addEntry", - "body": { - "objectID": "1", - "language": "en", - "additional": "try me", - }, - }, - ], - }, - ) - - assert _req.path == "/1/dictionaries/compounds/batch" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"requests":[{"action":"addEntry","body":{"objectID":"1","language":"en","additional":"try me"}}]}""" - ) - - async def test_browse_0(self): - """ - browse with minimal parameters - """ - _req = await self._client.browse_with_http_info( - index_name="indexName", - ) - - assert _req.path == "/1/indexes/indexName/browse" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{}""") - - async def test_browse_1(self): - """ - browse with search parameters - """ - _req = await self._client.browse_with_http_info( - index_name="indexName", - browse_params={ - "query": "myQuery", - "facetFilters": [ - "tags:algolia", - ], - }, - ) - - assert _req.path == "/1/indexes/indexName/browse" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"query":"myQuery","facetFilters":["tags:algolia"]}""" - ) - - async def test_browse_2(self): - """ - browse allow a cursor in parameters - """ - _req = await self._client.browse_with_http_info( - index_name="indexName", - browse_params={ - "cursor": "test", - }, - ) - - assert _req.path == "/1/indexes/indexName/browse" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"cursor":"test"}""") - - async def test_clear_all_synonyms_0(self): - """ - clearAllSynonyms0 - """ - _req = await self._client.clear_all_synonyms_with_http_info( - index_name="indexName", - ) - - assert _req.path == "/1/indexes/indexName/synonyms/clear" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - - async def test_clear_objects_0(self): - """ - clearObjects0 - """ - _req = await self._client.clear_objects_with_http_info( - index_name="theIndexName", - ) - - assert _req.path == "/1/indexes/theIndexName/clear" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - - async def test_clear_rules_0(self): - """ - clearRules0 - """ - _req = await self._client.clear_rules_with_http_info( - index_name="indexName", - ) - - assert _req.path == "/1/indexes/indexName/rules/clear" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - - async def test_custom_delete_0(self): - """ - allow del method for a custom path with minimal parameters - """ - _req = await self._client.custom_delete_with_http_info( - path="/test/minimal", - ) - - assert _req.path == "/1/test/minimal" - assert _req.verb == "DELETE" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_custom_delete_1(self): - """ - allow del method for a custom path with all parameters - """ - _req = await self._client.custom_delete_with_http_info( - path="/test/all", - parameters={ - "query": "parameters", - }, - ) - - assert _req.path == "/1/test/all" - assert _req.verb == "DELETE" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_custom_get_0(self): - """ - allow get method for a custom path with minimal parameters - """ - _req = await self._client.custom_get_with_http_info( - path="/test/minimal", - ) - - assert _req.path == "/1/test/minimal" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_custom_get_1(self): - """ - allow get method for a custom path with all parameters - """ - _req = await self._client.custom_get_with_http_info( - path="/test/all", - parameters={ - "query": "parameters", - }, - ) - - assert _req.path == "/1/test/all" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_custom_post_0(self): - """ - allow post method for a custom path with minimal parameters - """ - _req = await self._client.custom_post_with_http_info( - path="/test/minimal", - ) - - assert _req.path == "/1/test/minimal" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{}""") - - async def test_custom_post_1(self): - """ - allow post method for a custom path with all parameters - """ - _req = await self._client.custom_post_with_http_info( - path="/test/all", - parameters={ - "query": "parameters", - }, - body={ - "body": "parameters", - }, - ) - - assert _req.path == "/1/test/all" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"body":"parameters"}""") - - async def test_custom_post_2(self): - """ - requestOptions can override default query parameters - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"query":"myQueryParameter"}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {"query": "myQueryParameter"}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_3(self): - """ - requestOptions merges query parameters with default ones - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"query2":"myQueryParameter"}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "query2": "myQueryParameter"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_4(self): - """ - requestOptions can override default headers - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "headers": loads("""{"x-algolia-api-key":"myApiKey"}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {"x-algolia-api-key": "myApiKey"}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_5(self): - """ - requestOptions merges headers with default ones - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "headers": loads("""{"x-algolia-api-key":"myApiKey"}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {"x-algolia-api-key": "myApiKey"}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_6(self): - """ - requestOptions queryParameters accepts booleans - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"isItWorking":true}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "isItWorking": "true"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_7(self): - """ - requestOptions queryParameters accepts integers - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"myParam":2}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "myParam": "2"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_8(self): - """ - requestOptions queryParameters accepts list of string - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"myParam":["c","d"]}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "myParam": "c,d"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_9(self): - """ - requestOptions queryParameters accepts list of booleans - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"myParam":[true,true,false]}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "myParam": "true,true,false"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_post_10(self): - """ - requestOptions queryParameters accepts list of integers - """ - _req = await self._client.custom_post_with_http_info( - path="/test/requestOptions", - parameters={ - "query": "parameters", - }, - body={ - "facet": "filters", - }, - request_options={ - "query_parameters": loads("""{"myParam":[1,2]}"""), - }, - ) - - assert _req.path == "/1/test/requestOptions" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"query": "parameters", "myParam": "1,2"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"facet":"filters"}""") - - async def test_custom_put_0(self): - """ - allow put method for a custom path with minimal parameters - """ - _req = await self._client.custom_put_with_http_info( - path="/test/minimal", - ) - - assert _req.path == "/1/test/minimal" - assert _req.verb == "PUT" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{}""") - - async def test_custom_put_1(self): - """ - allow put method for a custom path with all parameters - """ - _req = await self._client.custom_put_with_http_info( - path="/test/all", - parameters={ - "query": "parameters", - }, - body={ - "body": "parameters", - }, - ) - - assert _req.path == "/1/test/all" - assert _req.verb == "PUT" - assert _req.query_parameters.items() >= {"query": "parameters"}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"body":"parameters"}""") - - async def test_delete_api_key_0(self): - """ - deleteApiKey0 - """ - _req = await self._client.delete_api_key_with_http_info( - key="myTestApiKey", - ) - - assert _req.path == "/1/keys/myTestApiKey" - assert _req.verb == "DELETE" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_delete_by_0(self): - """ - deleteBy0 - """ - _req = await self._client.delete_by_with_http_info( - index_name="theIndexName", - delete_by_params={ - "filters": "brand:brandName", - }, - ) - - assert _req.path == "/1/indexes/theIndexName/deleteByQuery" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"filters":"brand:brandName"}""") - - async def test_delete_index_0(self): - """ - deleteIndex0 - """ - _req = await self._client.delete_index_with_http_info( - index_name="theIndexName", - ) - - assert _req.path == "/1/indexes/theIndexName" - assert _req.verb == "DELETE" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_delete_object_0(self): - """ - deleteObject0 - """ - _req = await self._client.delete_object_with_http_info( - index_name="theIndexName", - object_id="uniqueID", - ) - - assert _req.path == "/1/indexes/theIndexName/uniqueID" - assert _req.verb == "DELETE" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_delete_rule_0(self): - """ - delete rule simple case - """ - _req = await self._client.delete_rule_with_http_info( - index_name="indexName", - object_id="id1", - ) - - assert _req.path == "/1/indexes/indexName/rules/id1" - assert _req.verb == "DELETE" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_delete_rule_1(self): - """ - delete rule with simple characters to encode in objectID - """ - _req = await self._client.delete_rule_with_http_info( - index_name="indexName", - object_id="test/with/slash", - ) - - assert _req.path == "/1/indexes/indexName/rules/test%2Fwith%2Fslash" - assert _req.verb == "DELETE" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_delete_source_0(self): - """ - deleteSource0 - """ - _req = await self._client.delete_source_with_http_info( - source="theSource", - ) - - assert _req.path == "/1/security/sources/theSource" - assert _req.verb == "DELETE" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_delete_synonym_0(self): - """ - deleteSynonym0 - """ - _req = await self._client.delete_synonym_with_http_info( - index_name="indexName", - object_id="id1", - ) - - assert _req.path == "/1/indexes/indexName/synonyms/id1" - assert _req.verb == "DELETE" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_api_key_0(self): - """ - getApiKey0 - """ - _req = await self._client.get_api_key_with_http_info( - key="myTestApiKey", - ) - - assert _req.path == "/1/keys/myTestApiKey" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_dictionary_languages_0(self): - """ - get getDictionaryLanguages - """ - _req = await self._client.get_dictionary_languages_with_http_info() - - assert _req.path == "/1/dictionaries/*/languages" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_dictionary_settings_0(self): - """ - get getDictionarySettings results - """ - _req = await self._client.get_dictionary_settings_with_http_info() - - assert _req.path == "/1/dictionaries/*/settings" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_logs_0(self): - """ - getLogs with minimal parameters - """ - _req = await self._client.get_logs_with_http_info() - - assert _req.path == "/1/logs" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_logs_1(self): - """ - getLogs with parameters - """ - _req = await self._client.get_logs_with_http_info( - offset=5, - length=10, - index_name="theIndexName", - type="all", - ) - - assert _req.path == "/1/logs" - assert _req.verb == "GET" - assert ( - _req.query_parameters.items() - >= { - "offset": "5", - "length": "10", - "indexName": "theIndexName", - "type": "all", - }.items() - ) - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_object_0(self): - """ - getObject0 - """ - _req = await self._client.get_object_with_http_info( - index_name="theIndexName", - object_id="uniqueID", - attributes_to_retrieve=[ - "attr1", - "attr2", - ], - ) - - assert _req.path == "/1/indexes/theIndexName/uniqueID" - assert _req.verb == "GET" - assert ( - _req.query_parameters.items() - >= {"attributesToRetrieve": "attr1,attr2"}.items() - ) - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_objects_0(self): - """ - getObjects0 - """ - _req = await self._client.get_objects_with_http_info( - get_objects_params={ - "requests": [ - { - "attributesToRetrieve": [ - "attr1", - "attr2", - ], - "objectID": "uniqueID", - "indexName": "theIndexName", - }, - ], - }, - ) - - assert _req.path == "/1/indexes/*/objects" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"requests":[{"attributesToRetrieve":["attr1","attr2"],"objectID":"uniqueID","indexName":"theIndexName"}]}""" - ) - - async def test_get_rule_0(self): - """ - getRule0 - """ - _req = await self._client.get_rule_with_http_info( - index_name="indexName", - object_id="id1", - ) - - assert _req.path == "/1/indexes/indexName/rules/id1" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_settings_0(self): - """ - getSettings0 - """ - _req = await self._client.get_settings_with_http_info( - index_name="theIndexName", - ) - - assert _req.path == "/1/indexes/theIndexName/settings" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_sources_0(self): - """ - getSources0 - """ - _req = await self._client.get_sources_with_http_info() - - assert _req.path == "/1/security/sources" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_synonym_0(self): - """ - getSynonym0 - """ - _req = await self._client.get_synonym_with_http_info( - index_name="indexName", - object_id="id1", - ) - - assert _req.path == "/1/indexes/indexName/synonyms/id1" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_task_0(self): - """ - getTask0 - """ - _req = await self._client.get_task_with_http_info( - index_name="theIndexName", - task_id=123, - ) - - assert _req.path == "/1/indexes/theIndexName/task/123" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_top_user_ids_0(self): - """ - getTopUserIds0 - """ - _req = await self._client.get_top_user_ids_with_http_info() - - assert _req.path == "/1/clusters/mapping/top" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_get_user_id_0(self): - """ - getUserId0 - """ - _req = await self._client.get_user_id_with_http_info( - user_id="uniqueID", - ) - - assert _req.path == "/1/clusters/mapping/uniqueID" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_has_pending_mappings_0(self): - """ - hasPendingMappings with minimal parameters - """ - _req = await self._client.has_pending_mappings_with_http_info() - - assert _req.path == "/1/clusters/mapping/pending" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_has_pending_mappings_1(self): - """ - hasPendingMappings with parameters - """ - _req = await self._client.has_pending_mappings_with_http_info( - get_clusters=True, - ) - - assert _req.path == "/1/clusters/mapping/pending" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {"getClusters": "true"}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_list_api_keys_0(self): - """ - listApiKeys0 - """ - _req = await self._client.list_api_keys_with_http_info() - - assert _req.path == "/1/keys" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_list_clusters_0(self): - """ - listClusters0 - """ - _req = await self._client.list_clusters_with_http_info() - - assert _req.path == "/1/clusters" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_list_indices_0(self): - """ - listIndices with minimal parameters - """ - _req = await self._client.list_indices_with_http_info() - - assert _req.path == "/1/indexes" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_list_indices_1(self): - """ - listIndices with parameters - """ - _req = await self._client.list_indices_with_http_info( - page=8, - hits_per_page=3, - ) - - assert _req.path == "/1/indexes" - assert _req.verb == "GET" - assert ( - _req.query_parameters.items() >= {"page": "8", "hitsPerPage": "3"}.items() - ) - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_list_user_ids_0(self): - """ - listUserIds with minimal parameters - """ - _req = await self._client.list_user_ids_with_http_info() - - assert _req.path == "/1/clusters/mapping" - assert _req.verb == "GET" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_list_user_ids_1(self): - """ - listUserIds with parameters - """ - _req = await self._client.list_user_ids_with_http_info( - page=8, - hits_per_page=100, - ) - - assert _req.path == "/1/clusters/mapping" - assert _req.verb == "GET" - assert ( - _req.query_parameters.items() >= {"page": "8", "hitsPerPage": "100"}.items() - ) - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_multiple_batch_0(self): - """ - multipleBatch0 - """ - _req = await self._client.multiple_batch_with_http_info( - batch_params={ - "requests": [ - { - "action": "addObject", - "body": { - "key": "value", - }, - "indexName": "theIndexName", - }, - ], - }, - ) - - assert _req.path == "/1/indexes/*/batch" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"requests":[{"action":"addObject","body":{"key":"value"},"indexName":"theIndexName"}]}""" - ) - - async def test_operation_index_0(self): - """ - operationIndex0 - """ - _req = await self._client.operation_index_with_http_info( - index_name="theIndexName", - operation_index_params={ - "operation": "copy", - "destination": "dest", - "scope": [ - "rules", - "settings", - ], - }, - ) - - assert _req.path == "/1/indexes/theIndexName/operation" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"operation":"copy","destination":"dest","scope":["rules","settings"]}""" - ) - - async def test_partial_update_object_0(self): - """ - partialUpdateObject0 - """ - _req = await self._client.partial_update_object_with_http_info( - index_name="theIndexName", - object_id="uniqueID", - attributes_to_update={ - "id1": "test", - "id2": { - "_operation": "AddUnique", - "value": "test2", - }, - }, - create_if_not_exists=True, - ) - - assert _req.path == "/1/indexes/theIndexName/uniqueID/partial" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {"createIfNotExists": "true"}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"id1":"test","id2":{"_operation":"AddUnique","value":"test2"}}""" - ) - - async def test_remove_user_id_0(self): - """ - removeUserId0 - """ - _req = await self._client.remove_user_id_with_http_info( - user_id="uniqueID", - ) - - assert _req.path == "/1/clusters/mapping/uniqueID" - assert _req.verb == "DELETE" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert _req.data is None - - async def test_replace_sources_0(self): - """ - replaceSources0 - """ - _req = await self._client.replace_sources_with_http_info( - source=[ - { - "source": "theSource", - "description": "theDescription", - }, - ], - ) - - assert _req.path == "/1/security/sources" - assert _req.verb == "PUT" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """[{"source":"theSource","description":"theDescription"}]""" - ) - - async def test_restore_api_key_0(self): - """ - restoreApiKey0 - """ - _req = await self._client.restore_api_key_with_http_info( - key="myApiKey", - ) - - assert _req.path == "/1/keys/myApiKey/restore" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - - async def test_save_object_0(self): - """ - saveObject0 - """ - _req = await self._client.save_object_with_http_info( - index_name="theIndexName", - body={ - "objectID": "id", - "test": "val", - }, - ) - - assert _req.path == "/1/indexes/theIndexName" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"objectID":"id","test":"val"}""") - - async def test_save_rule_0(self): - """ - saveRule with minimal parameters - """ - _req = await self._client.save_rule_with_http_info( - index_name="indexName", - object_id="id1", - rule={ - "objectID": "id1", - "conditions": [ - { - "pattern": "apple", - "anchoring": "contains", - }, - ], - }, - ) - - assert _req.path == "/1/indexes/indexName/rules/id1" - assert _req.verb == "PUT" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"objectID":"id1","conditions":[{"pattern":"apple","anchoring":"contains"}]}""" - ) - - async def test_save_rule_1(self): - """ - saveRule with all parameters - """ - _req = await self._client.save_rule_with_http_info( - index_name="indexName", - object_id="id1", - rule={ - "objectID": "id1", - "conditions": [ - { - "pattern": "apple", - "anchoring": "contains", - "alternatives": False, - "context": "search", - }, - ], - "consequence": { - "params": { - "filters": "brand:apple", - "query": { - "remove": [ - "algolia", - ], - "edits": [ - { - "type": "remove", - "delete": "abc", - "insert": "cde", - }, - { - "type": "replace", - "delete": "abc", - "insert": "cde", - }, - ], - }, - }, - "hide": [ - { - "objectID": "321", - }, - ], - "filterPromotes": False, - "userData": {"algolia": "aloglia"}, - "promote": [ - { - "objectID": "abc", - "position": 3, - }, - { - "objectIDs": [ - "abc", - "def", - ], - "position": 1, - }, - ], - }, - "description": "test", - "enabled": True, - "validity": [ - { - "from": 1656670273, - "until": 1656670277, - }, - ], - }, - forward_to_replicas=True, - ) - - assert _req.path == "/1/indexes/indexName/rules/id1" - assert _req.verb == "PUT" - assert _req.query_parameters.items() >= {"forwardToReplicas": "true"}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"objectID":"id1","conditions":[{"pattern":"apple","anchoring":"contains","alternatives":false,"context":"search"}],"consequence":{"params":{"filters":"brand:apple","query":{"remove":["algolia"],"edits":[{"type":"remove","delete":"abc","insert":"cde"},{"type":"replace","delete":"abc","insert":"cde"}]}},"hide":[{"objectID":"321"}],"filterPromotes":false,"userData":{"algolia":"aloglia"},"promote":[{"objectID":"abc","position":3},{"objectIDs":["abc","def"],"position":1}]},"description":"test","enabled":true,"validity":[{"from":1656670273,"until":1656670277}]}""" - ) - - async def test_save_rules_0(self): - """ - saveRules with minimal parameters - """ - _req = await self._client.save_rules_with_http_info( - index_name="indexName", - rules=[ - { - "objectID": "a-rule-id", - "conditions": [ - { - "pattern": "smartphone", - "anchoring": "contains", - }, - ], - }, - { - "objectID": "a-second-rule-id", - "conditions": [ - { - "pattern": "apple", - "anchoring": "contains", - }, - ], - }, - ], - ) - - assert _req.path == "/1/indexes/indexName/rules/batch" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """[{"objectID":"a-rule-id","conditions":[{"pattern":"smartphone","anchoring":"contains"}]},{"objectID":"a-second-rule-id","conditions":[{"pattern":"apple","anchoring":"contains"}]}]""" - ) - - async def test_save_rules_1(self): - """ - saveRules with all parameters - """ - _req = await self._client.save_rules_with_http_info( - index_name="indexName", - rules=[ - { - "objectID": "id1", - "conditions": [ - { - "pattern": "apple", - "anchoring": "contains", - "alternatives": False, - "context": "search", - }, - ], - "consequence": { - "params": { - "filters": "brand:apple", - "query": { - "remove": [ - "algolia", - ], - "edits": [ - { - "type": "remove", - "delete": "abc", - "insert": "cde", - }, - { - "type": "replace", - "delete": "abc", - "insert": "cde", - }, - ], - }, - }, - "hide": [ - { - "objectID": "321", - }, - ], - "filterPromotes": False, - "userData": {"algolia": "aloglia"}, - "promote": [ - { - "objectID": "abc", - "position": 3, - }, - { - "objectIDs": [ - "abc", - "def", - ], - "position": 1, - }, - ], - }, - "description": "test", - "enabled": True, - "validity": [ - { - "from": 1656670273, - "until": 1656670277, - }, - ], - }, - ], - forward_to_replicas=True, - clear_existing_rules=True, - ) - - assert _req.path == "/1/indexes/indexName/rules/batch" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"forwardToReplicas": "true", "clearExistingRules": "true"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """[{"objectID":"id1","conditions":[{"pattern":"apple","anchoring":"contains","alternatives":false,"context":"search"}],"consequence":{"params":{"filters":"brand:apple","query":{"remove":["algolia"],"edits":[{"type":"remove","delete":"abc","insert":"cde"},{"type":"replace","delete":"abc","insert":"cde"}]}},"hide":[{"objectID":"321"}],"filterPromotes":false,"userData":{"algolia":"aloglia"},"promote":[{"objectID":"abc","position":3},{"objectIDs":["abc","def"],"position":1}]},"description":"test","enabled":true,"validity":[{"from":1656670273,"until":1656670277}]}]""" - ) - - async def test_save_synonym_0(self): - """ - saveSynonym0 - """ - _req = await self._client.save_synonym_with_http_info( - index_name="indexName", - object_id="id1", - synonym_hit={ - "objectID": "id1", - "type": "synonym", - "synonyms": [ - "car", - "vehicule", - "auto", - ], - }, - forward_to_replicas=True, - ) - - assert _req.path == "/1/indexes/indexName/synonyms/id1" - assert _req.verb == "PUT" - assert _req.query_parameters.items() >= {"forwardToReplicas": "true"}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"objectID":"id1","type":"synonym","synonyms":["car","vehicule","auto"]}""" - ) - - async def test_save_synonyms_0(self): - """ - saveSynonyms0 - """ - _req = await self._client.save_synonyms_with_http_info( - index_name="indexName", - synonym_hit=[ - { - "objectID": "id1", - "type": "synonym", - "synonyms": [ - "car", - "vehicule", - "auto", - ], - }, - { - "objectID": "id2", - "type": "onewaysynonym", - "input": "iphone", - "synonyms": [ - "ephone", - "aphone", - "yphone", - ], - }, - ], - forward_to_replicas=True, - replace_existing_synonyms=False, - ) - - assert _req.path == "/1/indexes/indexName/synonyms/batch" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"forwardToReplicas": "true", "replaceExistingSynonyms": "false"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """[{"objectID":"id1","type":"synonym","synonyms":["car","vehicule","auto"]},{"objectID":"id2","type":"onewaysynonym","input":"iphone","synonyms":["ephone","aphone","yphone"]}]""" - ) - - async def test_search_0(self): - """ - search for a single hits request with minimal parameters - """ - _req = await self._client.search_with_http_info( - search_method_params={ - "requests": [ - { - "indexName": "cts_e2e_search_empty_index", - }, - ], - }, - ) - - assert _req.path == "/1/indexes/*/queries" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"requests":[{"indexName":"cts_e2e_search_empty_index"}]}""" - ) - - resp = await SearchClient.create( - self._e2e_app_id, self._e2e_api_key - ).search_with_http_info( - search_method_params={ - "requests": [ - { - "indexName": "cts_e2e_search_empty_index", - }, - ], - }, - ) - - assert resp.status_code == 200 - assert loads(resp.raw_data) == loads( - """{"results":[{"hits":[],"page":0,"nbHits":0,"nbPages":0,"hitsPerPage":20,"exhaustiveNbHits":true,"exhaustiveTypo":true,"exhaustive":{"nbHits":true,"typo":true},"processingTimeMS":1,"query":"","params":"","index":"cts_e2e_search_empty_index","renderingContent":{}}]}""" - ) - - async def test_search_1(self): - """ - search for a single facet request with minimal parameters - """ - _req = await self._client.search_with_http_info( - search_method_params={ - "requests": [ - { - "indexName": "cts_e2e_search_facet", - "type": "facet", - "facet": "editor", - }, - ], - "strategy": "stopIfEnoughMatches", - }, - ) - - assert _req.path == "/1/indexes/*/queries" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"requests":[{"indexName":"cts_e2e_search_facet","type":"facet","facet":"editor"}],"strategy":"stopIfEnoughMatches"}""" - ) - - resp = await SearchClient.create( - self._e2e_app_id, self._e2e_api_key - ).search_with_http_info( - search_method_params={ - "requests": [ - { - "indexName": "cts_e2e_search_facet", - "type": "facet", - "facet": "editor", - }, - ], - "strategy": "stopIfEnoughMatches", - }, - ) - - assert resp.status_code == 200 - assert loads(resp.raw_data) == loads( - """{"results":[{"exhaustiveFacetsCount":true,"processingTimeMS":1,"facetHits":[{"count":1,"highlighted":"goland","value":"goland"},{"count":1,"highlighted":"neovim","value":"neovim"},{"count":1,"highlighted":"vscode","value":"vscode"}]}]}""" - ) - - async def test_search_2(self): - """ - search for a single hits request with all parameters - """ - _req = await self._client.search_with_http_info( - search_method_params={ - "requests": [ - { - "indexName": "theIndexName", - "query": "myQuery", - "hitsPerPage": 50, - "type": "default", - }, - ], - }, - ) - - assert _req.path == "/1/indexes/*/queries" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"requests":[{"indexName":"theIndexName","query":"myQuery","hitsPerPage":50,"type":"default"}]}""" - ) - - async def test_search_3(self): - """ - search for a single facet request with all parameters - """ - _req = await self._client.search_with_http_info( - search_method_params={ - "requests": [ - { - "indexName": "theIndexName", - "type": "facet", - "facet": "theFacet", - "facetQuery": "theFacetQuery", - "query": "theQuery", - "maxFacetHits": 50, - }, - ], - "strategy": "stopIfEnoughMatches", - }, - ) - - assert _req.path == "/1/indexes/*/queries" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"requests":[{"indexName":"theIndexName","type":"facet","facet":"theFacet","facetQuery":"theFacetQuery","query":"theQuery","maxFacetHits":50}],"strategy":"stopIfEnoughMatches"}""" - ) - - async def test_search_4(self): - """ - search for multiple mixed requests in multiple indices with minimal parameters - """ - _req = await self._client.search_with_http_info( - search_method_params={ - "requests": [ - { - "indexName": "theIndexName", - }, - { - "indexName": "theIndexName2", - "type": "facet", - "facet": "theFacet", - }, - { - "indexName": "theIndexName", - "type": "default", - }, - ], - "strategy": "stopIfEnoughMatches", - }, - ) - - assert _req.path == "/1/indexes/*/queries" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"requests":[{"indexName":"theIndexName"},{"indexName":"theIndexName2","type":"facet","facet":"theFacet"},{"indexName":"theIndexName","type":"default"}],"strategy":"stopIfEnoughMatches"}""" - ) - - async def test_search_5(self): - """ - search for multiple mixed requests in multiple indices with all parameters - """ - _req = await self._client.search_with_http_info( - search_method_params={ - "requests": [ - { - "indexName": "theIndexName", - "type": "facet", - "facet": "theFacet", - "facetQuery": "theFacetQuery", - "query": "theQuery", - "maxFacetHits": 50, - }, - { - "indexName": "theIndexName", - "query": "myQuery", - "hitsPerPage": 50, - "type": "default", - }, - ], - "strategy": "stopIfEnoughMatches", - }, - ) - - assert _req.path == "/1/indexes/*/queries" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"requests":[{"indexName":"theIndexName","type":"facet","facet":"theFacet","facetQuery":"theFacetQuery","query":"theQuery","maxFacetHits":50},{"indexName":"theIndexName","query":"myQuery","hitsPerPage":50,"type":"default"}],"strategy":"stopIfEnoughMatches"}""" - ) - - async def test_search_6(self): - """ - search filters accept all of the possible shapes - """ - _req = await self._client.search_with_http_info( - search_method_params={ - "requests": [ - { - "indexName": "theIndexName", - "facetFilters": "mySearch:filters", - "reRankingApplyFilter": "mySearch:filters", - "tagFilters": "mySearch:filters", - "numericFilters": "mySearch:filters", - "optionalFilters": "mySearch:filters", - }, - { - "indexName": "theIndexName", - "facetFilters": [ - "mySearch:filters", - [ - "mySearch:filters", - ], - ], - "reRankingApplyFilter": [ - "mySearch:filters", - [ - "mySearch:filters", - ], - ], - "tagFilters": [ - "mySearch:filters", - [ - "mySearch:filters", - ], - ], - "numericFilters": [ - "mySearch:filters", - [ - "mySearch:filters", - ], - ], - "optionalFilters": [ - "mySearch:filters", - [ - "mySearch:filters", - ], - ], - }, - ], - }, - ) - - assert _req.path == "/1/indexes/*/queries" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"requests":[{"indexName":"theIndexName","facetFilters":"mySearch:filters","reRankingApplyFilter":"mySearch:filters","tagFilters":"mySearch:filters","numericFilters":"mySearch:filters","optionalFilters":"mySearch:filters"},{"indexName":"theIndexName","facetFilters":["mySearch:filters",["mySearch:filters"]],"reRankingApplyFilter":["mySearch:filters",["mySearch:filters"]],"tagFilters":["mySearch:filters",["mySearch:filters"]],"numericFilters":["mySearch:filters",["mySearch:filters"]],"optionalFilters":["mySearch:filters",["mySearch:filters"]]}]}""" - ) - - async def test_search_7(self): - """ - search with all search parameters - """ - _req = await self._client.search_with_http_info( - search_method_params={ - "requests": [ - { - "advancedSyntax": True, - "advancedSyntaxFeatures": [ - "exactPhrase", - ], - "allowTyposOnNumericTokens": True, - "alternativesAsExact": [ - "multiWordsSynonym", - ], - "analytics": True, - "analyticsTags": [ - "", - ], - "aroundLatLng": "", - "aroundLatLngViaIP": True, - "aroundPrecision": 0, - "aroundRadius": "all", - "attributeCriteriaComputedByMinProximity": True, - "attributesForFaceting": [ - "", - ], - "attributesToHighlight": [ - "", - ], - "attributesToRetrieve": [ - "", - ], - "attributesToSnippet": [ - "", - ], - "clickAnalytics": True, - "customRanking": [ - "", - ], - "decompoundQuery": True, - "disableExactOnAttributes": [ - "", - ], - "disableTypoToleranceOnAttributes": [ - "", - ], - "distinct": 0, - "enableABTest": True, - "enablePersonalization": True, - "enableReRanking": True, - "enableRules": True, - "exactOnSingleWordQuery": "attribute", - "explain": [ - "foo", - "bar", - ], - "facetFilters": [ - "", - ], - "facetingAfterDistinct": True, - "facets": [ - "", - ], - "filters": "", - "getRankingInfo": True, - "highlightPostTag": "", - "highlightPreTag": "", - "hitsPerPage": 1, - "ignorePlurals": False, - "indexName": "theIndexName", - "insideBoundingBox": [ - [ - 47.3165, - 4.9665, - 47.3424, - 5.0201, - ], - [ - 40.9234, - 2.1185, - 38.643, - 1.9916, - ], - ], - "insidePolygon": [ - [ - 47.3165, - 4.9665, - 47.3424, - 5.0201, - 47.32, - 4.9, - ], - [ - 40.9234, - 2.1185, - 38.643, - 1.9916, - 39.2587, - 2.0104, - ], - ], - "keepDiacriticsOnCharacters": "", - "length": 1, - "maxValuesPerFacet": 0, - "minProximity": 1, - "minWordSizefor1Typo": 0, - "minWordSizefor2Typos": 0, - "minimumAroundRadius": 1, - "naturalLanguages": [ - "", - ], - "numericFilters": [ - "", - ], - "offset": 0, - "optionalFilters": [ - "", - ], - "optionalWords": [ - "", - ], - "page": 0, - "percentileComputation": True, - "personalizationImpact": 0, - "query": "", - "queryLanguages": [ - "", - ], - "queryType": "prefixAll", - "ranking": [ - "", - ], - "reRankingApplyFilter": [ - "", - ], - "relevancyStrictness": 0, - "removeStopWords": True, - "removeWordsIfNoResults": "allOptional", - "renderingContent": { - "facetOrdering": { - "facets": { - "order": [ - "a", - "b", - ], - }, - "values": { - "a": { - "order": [ - "b", - ], - "sortRemainingBy": "count", - }, - }, - }, - }, - "replaceSynonymsInHighlight": True, - "responseFields": [ - "", - ], - "restrictHighlightAndSnippetArrays": True, - "restrictSearchableAttributes": [ - "", - ], - "ruleContexts": [ - "", - ], - "similarQuery": "", - "snippetEllipsisText": "", - "sortFacetValuesBy": "", - "sumOrFiltersScores": True, - "synonyms": True, - "tagFilters": [ - "", - ], - "type": "default", - "typoTolerance": "min", - "userToken": "", - }, - ], - }, - ) - - assert _req.path == "/1/indexes/*/queries" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"requests":[{"advancedSyntax":true,"advancedSyntaxFeatures":["exactPhrase"],"allowTyposOnNumericTokens":true,"alternativesAsExact":["multiWordsSynonym"],"analytics":true,"analyticsTags":[""],"aroundLatLng":"","aroundLatLngViaIP":true,"aroundPrecision":0,"aroundRadius":"all","attributeCriteriaComputedByMinProximity":true,"attributesForFaceting":[""],"attributesToHighlight":[""],"attributesToRetrieve":[""],"attributesToSnippet":[""],"clickAnalytics":true,"customRanking":[""],"decompoundQuery":true,"disableExactOnAttributes":[""],"disableTypoToleranceOnAttributes":[""],"distinct":0,"enableABTest":true,"enablePersonalization":true,"enableReRanking":true,"enableRules":true,"exactOnSingleWordQuery":"attribute","explain":["foo","bar"],"facetFilters":[""],"facetingAfterDistinct":true,"facets":[""],"filters":"","getRankingInfo":true,"highlightPostTag":"","highlightPreTag":"","hitsPerPage":1,"ignorePlurals":false,"indexName":"theIndexName","insideBoundingBox":[[47.3165,4.9665,47.3424,5.0201],[40.9234,2.1185,38.643,1.9916]],"insidePolygon":[[47.3165,4.9665,47.3424,5.0201,47.32,4.9],[40.9234,2.1185,38.643,1.9916,39.2587,2.0104]],"keepDiacriticsOnCharacters":"","length":1,"maxValuesPerFacet":0,"minProximity":1,"minWordSizefor1Typo":0,"minWordSizefor2Typos":0,"minimumAroundRadius":1,"naturalLanguages":[""],"numericFilters":[""],"offset":0,"optionalFilters":[""],"optionalWords":[""],"page":0,"percentileComputation":true,"personalizationImpact":0,"query":"","queryLanguages":[""],"queryType":"prefixAll","ranking":[""],"reRankingApplyFilter":[""],"relevancyStrictness":0,"removeStopWords":true,"removeWordsIfNoResults":"allOptional","renderingContent":{"facetOrdering":{"facets":{"order":["a","b"]},"values":{"a":{"order":["b"],"sortRemainingBy":"count"}}}},"replaceSynonymsInHighlight":true,"responseFields":[""],"restrictHighlightAndSnippetArrays":true,"restrictSearchableAttributes":[""],"ruleContexts":[""],"similarQuery":"","snippetEllipsisText":"","sortFacetValuesBy":"","sumOrFiltersScores":true,"synonyms":true,"tagFilters":[""],"type":"default","typoTolerance":"min","userToken":""}]}""" - ) - - async def test_search_dictionary_entries_0(self): - """ - get searchDictionaryEntries results with minimal parameters - """ - _req = await self._client.search_dictionary_entries_with_http_info( - dictionary_name="compounds", - search_dictionary_entries_params={ - "query": "foo", - }, - ) - - assert _req.path == "/1/dictionaries/compounds/search" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"query":"foo"}""") - - async def test_search_dictionary_entries_1(self): - """ - get searchDictionaryEntries results with all parameters - """ - _req = await self._client.search_dictionary_entries_with_http_info( - dictionary_name="compounds", - search_dictionary_entries_params={ - "query": "foo", - "page": 4, - "hitsPerPage": 2, - "language": "fr", - }, - ) - - assert _req.path == "/1/dictionaries/compounds/search" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"query":"foo","page":4,"hitsPerPage":2,"language":"fr"}""" - ) - - async def test_search_for_facet_values_0(self): - """ - get searchForFacetValues results with minimal parameters - """ - _req = await self._client.search_for_facet_values_with_http_info( - index_name="indexName", - facet_name="facetName", - ) - - assert _req.path == "/1/indexes/indexName/facets/facetName/query" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{}""") - - async def test_search_for_facet_values_1(self): - """ - get searchForFacetValues results with all parameters - """ - _req = await self._client.search_for_facet_values_with_http_info( - index_name="indexName", - facet_name="facetName", - search_for_facet_values_request={ - "params": "query=foo&facetFilters=['bar']", - "facetQuery": "foo", - "maxFacetHits": 42, - }, - ) - - assert _req.path == "/1/indexes/indexName/facets/facetName/query" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"params":"query=foo&facetFilters=['bar']","facetQuery":"foo","maxFacetHits":42}""" - ) - - async def test_search_rules_0(self): - """ - searchRules0 - """ - _req = await self._client.search_rules_with_http_info( - index_name="indexName", - search_rules_params={ - "query": "something", - }, - ) - - assert _req.path == "/1/indexes/indexName/rules/search" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"query":"something"}""") - - async def test_search_single_index_0(self): - """ - search with minimal parameters - """ - _req = await self._client.search_single_index_with_http_info( - index_name="indexName", - ) - - assert _req.path == "/1/indexes/indexName/query" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{}""") - - async def test_search_single_index_1(self): - """ - search with searchParams - """ - _req = await self._client.search_single_index_with_http_info( - index_name="indexName", - search_params={ - "query": "myQuery", - "facetFilters": [ - "tags:algolia", - ], - }, - ) - - assert _req.path == "/1/indexes/indexName/query" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"query":"myQuery","facetFilters":["tags:algolia"]}""" - ) - - async def test_search_synonyms_0(self): - """ - searchSynonyms with minimal parameters - """ - _req = await self._client.search_synonyms_with_http_info( - index_name="indexName", - ) - - assert _req.path == "/1/indexes/indexName/synonyms/search" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{}""") - - async def test_search_synonyms_1(self): - """ - searchSynonyms with all parameters - """ - _req = await self._client.search_synonyms_with_http_info( - index_name="indexName", - type="altcorrection1", - page=10, - hits_per_page=10, - search_synonyms_params={ - "query": "myQuery", - }, - ) - - assert _req.path == "/1/indexes/indexName/synonyms/search" - assert _req.verb == "POST" - assert ( - _req.query_parameters.items() - >= {"type": "altcorrection1", "page": "10", "hitsPerPage": "10"}.items() - ) - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"query":"myQuery"}""") - - async def test_search_user_ids_0(self): - """ - searchUserIds0 - """ - _req = await self._client.search_user_ids_with_http_info( - search_user_ids_params={ - "query": "test", - "clusterName": "theClusterName", - "page": 5, - "hitsPerPage": 10, - }, - ) - - assert _req.path == "/1/clusters/mapping/search" - assert _req.verb == "POST" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"query":"test","clusterName":"theClusterName","page":5,"hitsPerPage":10}""" - ) - - async def test_set_dictionary_settings_0(self): - """ - get setDictionarySettings results with minimal parameters - """ - _req = await self._client.set_dictionary_settings_with_http_info( - dictionary_settings_params={ - "disableStandardEntries": { - "plurals": { - "fr": False, - "en": False, - "ru": True, - }, - }, - }, - ) - - assert _req.path == "/1/dictionaries/*/settings" - assert _req.verb == "PUT" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"disableStandardEntries":{"plurals":{"fr":false,"en":false,"ru":true}}}""" - ) - - async def test_set_dictionary_settings_1(self): - """ - get setDictionarySettings results with all parameters - """ - _req = await self._client.set_dictionary_settings_with_http_info( - dictionary_settings_params={ - "disableStandardEntries": { - "plurals": { - "fr": False, - "en": False, - "ru": True, - }, - "stopwords": { - "fr": False, - }, - "compounds": { - "ru": True, - }, - }, - }, - ) - - assert _req.path == "/1/dictionaries/*/settings" - assert _req.verb == "PUT" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"disableStandardEntries":{"plurals":{"fr":false,"en":false,"ru":true},"stopwords":{"fr":false},"compounds":{"ru":true}}}""" - ) - - async def test_set_settings_0(self): - """ - setSettings with minimal parameters - """ - _req = await self._client.set_settings_with_http_info( - index_name="theIndexName", - index_settings={ - "paginationLimitedTo": 10, - }, - forward_to_replicas=True, - ) - - assert _req.path == "/1/indexes/theIndexName/settings" - assert _req.verb == "PUT" - assert _req.query_parameters.items() >= {"forwardToReplicas": "true"}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"paginationLimitedTo":10}""") - - async def test_set_settings_1(self): - """ - setSettings allow boolean `typoTolerance` - """ - _req = await self._client.set_settings_with_http_info( - index_name="theIndexName", - index_settings={ - "typoTolerance": True, - }, - forward_to_replicas=True, - ) - - assert _req.path == "/1/indexes/theIndexName/settings" - assert _req.verb == "PUT" - assert _req.query_parameters.items() >= {"forwardToReplicas": "true"}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"typoTolerance":true}""") - - async def test_set_settings_2(self): - """ - setSettings allow enum `typoTolerance` - """ - _req = await self._client.set_settings_with_http_info( - index_name="theIndexName", - index_settings={ - "typoTolerance": "min", - }, - forward_to_replicas=True, - ) - - assert _req.path == "/1/indexes/theIndexName/settings" - assert _req.verb == "PUT" - assert _req.query_parameters.items() >= {"forwardToReplicas": "true"}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"typoTolerance":"min"}""") - - async def test_set_settings_3(self): - """ - setSettings allow boolean `ignorePlurals` - """ - _req = await self._client.set_settings_with_http_info( - index_name="theIndexName", - index_settings={ - "ignorePlurals": True, - }, - forward_to_replicas=True, - ) - - assert _req.path == "/1/indexes/theIndexName/settings" - assert _req.verb == "PUT" - assert _req.query_parameters.items() >= {"forwardToReplicas": "true"}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"ignorePlurals":true}""") - - async def test_set_settings_4(self): - """ - setSettings allow list of string `ignorePlurals` - """ - _req = await self._client.set_settings_with_http_info( - index_name="theIndexName", - index_settings={ - "ignorePlurals": [ - "algolia", - ], - }, - forward_to_replicas=True, - ) - - assert _req.path == "/1/indexes/theIndexName/settings" - assert _req.verb == "PUT" - assert _req.query_parameters.items() >= {"forwardToReplicas": "true"}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"ignorePlurals":["algolia"]}""") - - async def test_set_settings_5(self): - """ - setSettings allow boolean `removeStopWords` - """ - _req = await self._client.set_settings_with_http_info( - index_name="theIndexName", - index_settings={ - "removeStopWords": True, - }, - forward_to_replicas=True, - ) - - assert _req.path == "/1/indexes/theIndexName/settings" - assert _req.verb == "PUT" - assert _req.query_parameters.items() >= {"forwardToReplicas": "true"}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"removeStopWords":true}""") - - async def test_set_settings_6(self): - """ - setSettings allow list of string `removeStopWords` - """ - _req = await self._client.set_settings_with_http_info( - index_name="theIndexName", - index_settings={ - "removeStopWords": [ - "algolia", - ], - }, - forward_to_replicas=True, - ) - - assert _req.path == "/1/indexes/theIndexName/settings" - assert _req.verb == "PUT" - assert _req.query_parameters.items() >= {"forwardToReplicas": "true"}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"removeStopWords":["algolia"]}""") - - async def test_set_settings_7(self): - """ - setSettings allow boolean `distinct` - """ - _req = await self._client.set_settings_with_http_info( - index_name="theIndexName", - index_settings={ - "distinct": True, - }, - forward_to_replicas=True, - ) - - assert _req.path == "/1/indexes/theIndexName/settings" - assert _req.verb == "PUT" - assert _req.query_parameters.items() >= {"forwardToReplicas": "true"}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"distinct":true}""") - - async def test_set_settings_8(self): - """ - setSettings allow integers for `distinct` - """ - _req = await self._client.set_settings_with_http_info( - index_name="theIndexName", - index_settings={ - "distinct": 1, - }, - forward_to_replicas=True, - ) - - assert _req.path == "/1/indexes/theIndexName/settings" - assert _req.verb == "PUT" - assert _req.query_parameters.items() >= {"forwardToReplicas": "true"}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads("""{"distinct":1}""") - - async def test_set_settings_9(self): - """ - setSettings allow all `indexSettings` - """ - _req = await self._client.set_settings_with_http_info( - index_name="theIndexName", - index_settings={ - "advancedSyntax": True, - "advancedSyntaxFeatures": [ - "exactPhrase", - ], - "allowCompressionOfIntegerArray": True, - "allowTyposOnNumericTokens": True, - "alternativesAsExact": [ - "singleWordSynonym", - ], - "attributeCriteriaComputedByMinProximity": True, - "attributeForDistinct": "test", - "attributesForFaceting": [ - "algolia", - ], - "attributesToHighlight": [ - "algolia", - ], - "attributesToRetrieve": [ - "algolia", - ], - "attributesToSnippet": [ - "algolia", - ], - "attributesToTransliterate": [ - "algolia", - ], - "camelCaseAttributes": [ - "algolia", - ], - "customNormalization": { - "algolia": { - "aloglia": "aglolia", - }, - }, - "customRanking": [ - "algolia", - ], - "decompoundQuery": False, - "decompoundedAttributes": { - "algolia": "aloglia", - }, - "disableExactOnAttributes": [ - "algolia", - ], - "disablePrefixOnAttributes": [ - "algolia", - ], - "disableTypoToleranceOnAttributes": [ - "algolia", - ], - "disableTypoToleranceOnWords": [ - "algolia", - ], - "distinct": 3, - "enablePersonalization": True, - "enableReRanking": False, - "enableRules": True, - "exactOnSingleWordQuery": "attribute", - "highlightPreTag": "", - "highlightPostTag": "", - "hitsPerPage": 10, - "ignorePlurals": False, - "indexLanguages": [ - "algolia", - ], - "keepDiacriticsOnCharacters": "abc", - "maxFacetHits": 20, - "maxValuesPerFacet": 30, - "minProximity": 6, - "minWordSizefor1Typo": 5, - "minWordSizefor2Typos": 11, - "mode": "neuralSearch", - "numericAttributesForFiltering": [ - "algolia", - ], - "optionalWords": [ - "myspace", - ], - "paginationLimitedTo": 0, - "queryLanguages": [ - "algolia", - ], - "queryType": "prefixLast", - "ranking": [ - "geo", - ], - "reRankingApplyFilter": "mySearch:filters", - "relevancyStrictness": 10, - "removeStopWords": False, - "removeWordsIfNoResults": "lastWords", - "renderingContent": { - "facetOrdering": { - "facets": { - "order": [ - "a", - "b", - ], - }, - "values": { - "a": { - "order": [ - "b", - ], - "sortRemainingBy": "count", - }, - }, - }, - }, - "replaceSynonymsInHighlight": True, - "replicas": [ - "", - ], - "responseFields": [ - "algolia", - ], - "restrictHighlightAndSnippetArrays": True, - "searchableAttributes": [ - "foo", - ], - "semanticSearch": { - "eventSources": [ - "foo", - ], - }, - "separatorsToIndex": "bar", - "snippetEllipsisText": "---", - "sortFacetValuesBy": "date", - "typoTolerance": False, - "unretrievableAttributes": [ - "foo", - ], - "userData": { - "user": "data", - }, - }, - ) - - assert _req.path == "/1/indexes/theIndexName/settings" - assert _req.verb == "PUT" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"advancedSyntax":true,"advancedSyntaxFeatures":["exactPhrase"],"allowCompressionOfIntegerArray":true,"allowTyposOnNumericTokens":true,"alternativesAsExact":["singleWordSynonym"],"attributeCriteriaComputedByMinProximity":true,"attributeForDistinct":"test","attributesForFaceting":["algolia"],"attributesToHighlight":["algolia"],"attributesToRetrieve":["algolia"],"attributesToSnippet":["algolia"],"attributesToTransliterate":["algolia"],"camelCaseAttributes":["algolia"],"customNormalization":{"algolia":{"aloglia":"aglolia"}},"customRanking":["algolia"],"decompoundQuery":false,"decompoundedAttributes":{"algolia":"aloglia"},"disableExactOnAttributes":["algolia"],"disablePrefixOnAttributes":["algolia"],"disableTypoToleranceOnAttributes":["algolia"],"disableTypoToleranceOnWords":["algolia"],"distinct":3,"enablePersonalization":true,"enableReRanking":false,"enableRules":true,"exactOnSingleWordQuery":"attribute","highlightPreTag":"","highlightPostTag":"","hitsPerPage":10,"ignorePlurals":false,"indexLanguages":["algolia"],"keepDiacriticsOnCharacters":"abc","maxFacetHits":20,"maxValuesPerFacet":30,"minProximity":6,"minWordSizefor1Typo":5,"minWordSizefor2Typos":11,"mode":"neuralSearch","numericAttributesForFiltering":["algolia"],"optionalWords":["myspace"],"paginationLimitedTo":0,"queryLanguages":["algolia"],"queryType":"prefixLast","ranking":["geo"],"reRankingApplyFilter":"mySearch:filters","relevancyStrictness":10,"removeStopWords":false,"removeWordsIfNoResults":"lastWords","renderingContent":{"facetOrdering":{"facets":{"order":["a","b"]},"values":{"a":{"order":["b"],"sortRemainingBy":"count"}}}},"replaceSynonymsInHighlight":true,"replicas":[""],"responseFields":["algolia"],"restrictHighlightAndSnippetArrays":true,"searchableAttributes":["foo"],"semanticSearch":{"eventSources":["foo"]},"separatorsToIndex":"bar","snippetEllipsisText":"---","sortFacetValuesBy":"date","typoTolerance":false,"unretrievableAttributes":["foo"],"userData":{"user":"data"}}""" - ) - - async def test_update_api_key_0(self): - """ - updateApiKey0 - """ - _req = await self._client.update_api_key_with_http_info( - key="myApiKey", - api_key={ - "acl": [ - "search", - "addObject", - ], - "validity": 300, - "maxQueriesPerIPPerHour": 100, - "maxHitsPerQuery": 20, - }, - ) - - assert _req.path == "/1/keys/myApiKey" - assert _req.verb == "PUT" - assert _req.query_parameters.items() >= {}.items() - assert _req.headers.items() >= {}.items() - assert loads(_req.data) == loads( - """{"acl":["search","addObject"],"validity":300,"maxQueriesPerIPPerHour":100,"maxHitsPerQuery":20}""" - ) diff --git a/tests/output/ruby/test/methods/requests/abtesting_test.rb b/tests/output/ruby/test/methods/requests/abtesting_test.rb deleted file mode 100644 index 69d6c35a81..0000000000 --- a/tests/output/ruby/test/methods/requests/abtesting_test.rb +++ /dev/null @@ -1,289 +0,0 @@ -require 'algolia' -require 'test/unit' - -class TestAbtestingClient < Test::Unit::TestCase - include Algolia::Abtesting - def setup - @client = Algolia::AbtestingClient.create_with_config( - Algolia::Configuration.new( - 'APP_ID', - 'API_KEY', - [Algolia::Transport::StatefulHost.new('localhost')], - 'abtesting', - { requester: Algolia::Transport::EchoRequester.new } - ) - ) - end - - # addABTests with minimal parameters - def test_add_ab_tests0 - req = @client.add_ab_tests_with_http_info(AddABTestsRequest.new(end_at: "2022-12-31T00:00:00.000Z", name: "myABTest", - variants: [AbTestsVariant.new(index: "AB_TEST_1", traffic_percentage: 30), AbTestsVariant.new(index: "AB_TEST_2", traffic_percentage: 50)])) - - assert_equal(:post, req.method) - assert_equal('/2/abtests', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal( - JSON.parse('{"endAt":"2022-12-31T00:00:00.000Z","name":"myABTest","variants":[{"index":"AB_TEST_1","trafficPercentage":30},{"index":"AB_TEST_2","trafficPercentage":50}]}'), JSON.parse(req.body) - ) - end - - # allow del method for a custom path with minimal parameters - def test_custom_delete0 - req = @client.custom_delete_with_http_info("/test/minimal") - - assert_equal(:delete, req.method) - assert_equal('/1/test/minimal', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # allow del method for a custom path with all parameters - def test_custom_delete1 - req = @client.custom_delete_with_http_info("/test/all", { query: "parameters" }) - - assert_equal(:delete, req.method) - assert_equal('/1/test/all', req.path) - assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # allow get method for a custom path with minimal parameters - def test_custom_get0 - req = @client.custom_get_with_http_info("/test/minimal") - - assert_equal(:get, req.method) - assert_equal('/1/test/minimal', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # allow get method for a custom path with all parameters - def test_custom_get1 - req = @client.custom_get_with_http_info("/test/all", { query: "parameters" }) - - assert_equal(:get, req.method) - assert_equal('/1/test/all', req.path) - assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # allow post method for a custom path with minimal parameters - def test_custom_post0 - req = @client.custom_post_with_http_info("/test/minimal") - - assert_equal(:post, req.method) - assert_equal('/1/test/minimal', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{}'), JSON.parse(req.body)) - end - - # allow post method for a custom path with all parameters - def test_custom_post1 - req = @client.custom_post_with_http_info("/test/all", { query: "parameters" }, { body: "parameters" }) - - assert_equal(:post, req.method) - assert_equal('/1/test/all', req.path) - assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"body":"parameters"}'), JSON.parse(req.body)) - end - - # requestOptions can override default query parameters - def test_custom_post2 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"query":"myQueryParameter"}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "myQueryParameter" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions merges query parameters with default ones - def test_custom_post3 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"query2":"myQueryParameter"}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters", 'query2': "myQueryParameter" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions can override default headers - def test_custom_post4 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :header_params => JSON.parse('{"x-algolia-api-key":"myApiKey"}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({ 'x-algolia-api-key': "myApiKey" }.transform_keys(&:to_s).to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions merges headers with default ones - def test_custom_post5 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :header_params => JSON.parse('{"x-algolia-api-key":"myApiKey"}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({ 'x-algolia-api-key': "myApiKey" }.transform_keys(&:to_s).to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions queryParameters accepts booleans - def test_custom_post6 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"isItWorking":true}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters", 'isItWorking': "true" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions queryParameters accepts integers - def test_custom_post7 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"myParam":2}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters", 'myParam': "2" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions queryParameters accepts list of string - def test_custom_post8 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"myParam":["c","d"]}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters", 'myParam': "c,d" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions queryParameters accepts list of booleans - def test_custom_post9 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"myParam":[true,true,false]}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters", 'myParam': "true,true,false" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions queryParameters accepts list of integers - def test_custom_post10 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"myParam":[1,2]}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters", 'myParam': "1,2" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # allow put method for a custom path with minimal parameters - def test_custom_put0 - req = @client.custom_put_with_http_info("/test/minimal") - - assert_equal(:put, req.method) - assert_equal('/1/test/minimal', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{}'), JSON.parse(req.body)) - end - - # allow put method for a custom path with all parameters - def test_custom_put1 - req = @client.custom_put_with_http_info("/test/all", { query: "parameters" }, { body: "parameters" }) - - assert_equal(:put, req.method) - assert_equal('/1/test/all', req.path) - assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"body":"parameters"}'), JSON.parse(req.body)) - end - - # deleteABTest - def test_delete_ab_test0 - req = @client.delete_ab_test_with_http_info(42) - - assert_equal(:delete, req.method) - assert_equal('/2/abtests/42', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # getABTest - def test_get_ab_test0 - req = @client.get_ab_test_with_http_info(42) - - assert_equal(:get, req.method) - assert_equal('/2/abtests/42', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # listABTests with minimal parameters - def test_list_ab_tests0 - req = @client.list_ab_tests_with_http_info - - assert_equal(:get, req.method) - assert_equal('/2/abtests', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # listABTests with parameters - def test_list_ab_tests1 - req = @client.list_ab_tests_with_http_info(42, 21, "foo", "bar") - - assert_equal(:get, req.method) - assert_equal('/2/abtests', req.path) - assert(({ 'offset': "42", 'limit': "21", 'indexPrefix': "foo", 'indexSuffix': "bar" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # stopABTest - def test_stop_ab_test0 - req = @client.stop_ab_test_with_http_info(42) - - assert_equal(:post, req.method) - assert_equal('/2/abtests/42/stop', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - end -end diff --git a/tests/output/ruby/test/methods/requests/analytics_test.rb b/tests/output/ruby/test/methods/requests/analytics_test.rb deleted file mode 100644 index 4ac253f8ca..0000000000 --- a/tests/output/ruby/test/methods/requests/analytics_test.rb +++ /dev/null @@ -1,650 +0,0 @@ -require 'algolia' -require 'test/unit' - -class TestAnalyticsClient < Test::Unit::TestCase - include Algolia::Analytics - def setup - @client = Algolia::AnalyticsClient.create_with_config( - Algolia::Configuration.new( - 'APP_ID', - 'API_KEY', - [Algolia::Transport::StatefulHost.new('localhost')], - 'analytics', - { requester: Algolia::Transport::EchoRequester.new } - ) - ) - end - - # allow del method for a custom path with minimal parameters - def test_custom_delete0 - req = @client.custom_delete_with_http_info("/test/minimal") - - assert_equal(:delete, req.method) - assert_equal('/1/test/minimal', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # allow del method for a custom path with all parameters - def test_custom_delete1 - req = @client.custom_delete_with_http_info("/test/all", { query: "parameters" }) - - assert_equal(:delete, req.method) - assert_equal('/1/test/all', req.path) - assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # allow get method for a custom path with minimal parameters - def test_custom_get0 - req = @client.custom_get_with_http_info("/test/minimal") - - assert_equal(:get, req.method) - assert_equal('/1/test/minimal', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # allow get method for a custom path with all parameters - def test_custom_get1 - req = @client.custom_get_with_http_info("/test/all", { query: "parameters" }) - - assert_equal(:get, req.method) - assert_equal('/1/test/all', req.path) - assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # allow post method for a custom path with minimal parameters - def test_custom_post0 - req = @client.custom_post_with_http_info("/test/minimal") - - assert_equal(:post, req.method) - assert_equal('/1/test/minimal', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{}'), JSON.parse(req.body)) - end - - # allow post method for a custom path with all parameters - def test_custom_post1 - req = @client.custom_post_with_http_info("/test/all", { query: "parameters" }, { body: "parameters" }) - - assert_equal(:post, req.method) - assert_equal('/1/test/all', req.path) - assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"body":"parameters"}'), JSON.parse(req.body)) - end - - # requestOptions can override default query parameters - def test_custom_post2 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"query":"myQueryParameter"}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "myQueryParameter" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions merges query parameters with default ones - def test_custom_post3 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"query2":"myQueryParameter"}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters", 'query2': "myQueryParameter" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions can override default headers - def test_custom_post4 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :header_params => JSON.parse('{"x-algolia-api-key":"myApiKey"}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({ 'x-algolia-api-key': "myApiKey" }.transform_keys(&:to_s).to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions merges headers with default ones - def test_custom_post5 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :header_params => JSON.parse('{"x-algolia-api-key":"myApiKey"}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({ 'x-algolia-api-key': "myApiKey" }.transform_keys(&:to_s).to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions queryParameters accepts booleans - def test_custom_post6 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"isItWorking":true}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters", 'isItWorking': "true" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions queryParameters accepts integers - def test_custom_post7 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"myParam":2}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters", 'myParam': "2" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions queryParameters accepts list of string - def test_custom_post8 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"myParam":["c","d"]}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters", 'myParam': "c,d" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions queryParameters accepts list of booleans - def test_custom_post9 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"myParam":[true,true,false]}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters", 'myParam': "true,true,false" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions queryParameters accepts list of integers - def test_custom_post10 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"myParam":[1,2]}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters", 'myParam': "1,2" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # allow put method for a custom path with minimal parameters - def test_custom_put0 - req = @client.custom_put_with_http_info("/test/minimal") - - assert_equal(:put, req.method) - assert_equal('/1/test/minimal', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{}'), JSON.parse(req.body)) - end - - # allow put method for a custom path with all parameters - def test_custom_put1 - req = @client.custom_put_with_http_info("/test/all", { query: "parameters" }, { body: "parameters" }) - - assert_equal(:put, req.method) - assert_equal('/1/test/all', req.path) - assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"body":"parameters"}'), JSON.parse(req.body)) - end - - # get getAverageClickPosition with minimal parameters - def test_get_average_click_position0 - req = @client.get_average_click_position_with_http_info("index") - - assert_equal(:get, req.method) - assert_equal('/2/clicks/averageClickPosition', req.path) - assert(({ 'index': "index" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # get getAverageClickPosition with all parameters - def test_get_average_click_position1 - req = @client.get_average_click_position_with_http_info("index", "1999-09-19", "2001-01-01", "tag") - - assert_equal(:get, req.method) - assert_equal('/2/clicks/averageClickPosition', req.path) - assert(({ 'index': "index", 'startDate': "1999-09-19", 'endDate': "2001-01-01", 'tags': "tag" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # get getClickPositions with minimal parameters - def test_get_click_positions0 - req = @client.get_click_positions_with_http_info("index") - - assert_equal(:get, req.method) - assert_equal('/2/clicks/positions', req.path) - assert(({ 'index': "index" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # get getClickPositions with all parameters - def test_get_click_positions1 - req = @client.get_click_positions_with_http_info("index", "1999-09-19", "2001-01-01", "tag") - - assert_equal(:get, req.method) - assert_equal('/2/clicks/positions', req.path) - assert(({ 'index': "index", 'startDate': "1999-09-19", 'endDate': "2001-01-01", 'tags': "tag" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # get getClickThroughRate with minimal parameters - def test_get_click_through_rate0 - req = @client.get_click_through_rate_with_http_info("index") - - assert_equal(:get, req.method) - assert_equal('/2/clicks/clickThroughRate', req.path) - assert(({ 'index': "index" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # get getClickThroughRate with all parameters - def test_get_click_through_rate1 - req = @client.get_click_through_rate_with_http_info("index", "1999-09-19", "2001-01-01", "tag") - - assert_equal(:get, req.method) - assert_equal('/2/clicks/clickThroughRate', req.path) - assert(({ 'index': "index", 'startDate': "1999-09-19", 'endDate': "2001-01-01", 'tags': "tag" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # get getConversationRate with minimal parameters - def test_get_conversation_rate0 - req = @client.get_conversation_rate_with_http_info("index") - - assert_equal(:get, req.method) - assert_equal('/2/conversions/conversionRate', req.path) - assert(({ 'index': "index" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # get getConversationRate with all parameters - def test_get_conversation_rate1 - req = @client.get_conversation_rate_with_http_info("index", "1999-09-19", "2001-01-01", "tag") - - assert_equal(:get, req.method) - assert_equal('/2/conversions/conversionRate', req.path) - assert(({ 'index': "index", 'startDate': "1999-09-19", 'endDate': "2001-01-01", 'tags': "tag" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # get getNoClickRate with minimal parameters - def test_get_no_click_rate0 - req = @client.get_no_click_rate_with_http_info("index") - - assert_equal(:get, req.method) - assert_equal('/2/searches/noClickRate', req.path) - assert(({ 'index': "index" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # get getNoClickRate with all parameters - def test_get_no_click_rate1 - req = @client.get_no_click_rate_with_http_info("index", "1999-09-19", "2001-01-01", "tag") - - assert_equal(:get, req.method) - assert_equal('/2/searches/noClickRate', req.path) - assert(({ 'index': "index", 'startDate': "1999-09-19", 'endDate': "2001-01-01", 'tags': "tag" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # get getNoResultsRate with minimal parameters - def test_get_no_results_rate0 - req = @client.get_no_results_rate_with_http_info("index") - - assert_equal(:get, req.method) - assert_equal('/2/searches/noResultRate', req.path) - assert(({ 'index': "index" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # get getNoResultsRate with all parameters - def test_get_no_results_rate1 - req = @client.get_no_results_rate_with_http_info("index", "1999-09-19", "2001-01-01", "tag") - - assert_equal(:get, req.method) - assert_equal('/2/searches/noResultRate', req.path) - assert(({ 'index': "index", 'startDate': "1999-09-19", 'endDate': "2001-01-01", 'tags': "tag" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # get getSearchesCount with minimal parameters - def test_get_searches_count0 - req = @client.get_searches_count_with_http_info("index") - - assert_equal(:get, req.method) - assert_equal('/2/searches/count', req.path) - assert(({ 'index': "index" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # get getSearchesCount with all parameters - def test_get_searches_count1 - req = @client.get_searches_count_with_http_info("index", "1999-09-19", "2001-01-01", "tag") - - assert_equal(:get, req.method) - assert_equal('/2/searches/count', req.path) - assert(({ 'index': "index", 'startDate': "1999-09-19", 'endDate': "2001-01-01", 'tags': "tag" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # get getSearchesNoClicks with minimal parameters - def test_get_searches_no_clicks0 - req = @client.get_searches_no_clicks_with_http_info("index") - - assert_equal(:get, req.method) - assert_equal('/2/searches/noClicks', req.path) - assert(({ 'index': "index" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # get getSearchesNoClicks with all parameters - def test_get_searches_no_clicks1 - req = @client.get_searches_no_clicks_with_http_info("index", "1999-09-19", "2001-01-01", 21, 42, "tag") - - assert_equal(:get, req.method) - assert_equal('/2/searches/noClicks', req.path) - assert(({ 'index': "index", 'startDate': "1999-09-19", 'endDate': "2001-01-01", 'limit': "21", 'offset': "42", 'tags': "tag" }.to_a - req.query_params.to_a).empty?, - req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # get getSearchesNoResults with minimal parameters - def test_get_searches_no_results0 - req = @client.get_searches_no_results_with_http_info("index") - - assert_equal(:get, req.method) - assert_equal('/2/searches/noResults', req.path) - assert(({ 'index': "index" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # get getSearchesNoResults with all parameters - def test_get_searches_no_results1 - req = @client.get_searches_no_results_with_http_info("index", "1999-09-19", "2001-01-01", 21, 42, "tag") - - assert_equal(:get, req.method) - assert_equal('/2/searches/noResults', req.path) - assert(({ 'index': "index", 'startDate': "1999-09-19", 'endDate': "2001-01-01", 'limit': "21", 'offset': "42", 'tags': "tag" }.to_a - req.query_params.to_a).empty?, - req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # get getStatus with minimal parameters - def test_get_status0 - req = @client.get_status_with_http_info("index") - - assert_equal(:get, req.method) - assert_equal('/2/status', req.path) - assert(({ 'index': "index" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # get getTopCountries with minimal parameters - def test_get_top_countries0 - req = @client.get_top_countries_with_http_info("index") - - assert_equal(:get, req.method) - assert_equal('/2/countries', req.path) - assert(({ 'index': "index" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # get getTopCountries with all parameters - def test_get_top_countries1 - req = @client.get_top_countries_with_http_info("index", "1999-09-19", "2001-01-01", 21, 42, "tag") - - assert_equal(:get, req.method) - assert_equal('/2/countries', req.path) - assert(({ 'index': "index", 'startDate': "1999-09-19", 'endDate': "2001-01-01", 'limit': "21", 'offset': "42", 'tags': "tag" }.to_a - req.query_params.to_a).empty?, - req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # get getTopFilterAttributes with minimal parameters - def test_get_top_filter_attributes0 - req = @client.get_top_filter_attributes_with_http_info("index") - - assert_equal(:get, req.method) - assert_equal('/2/filters', req.path) - assert(({ 'index': "index" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # get getTopFilterAttributes with all parameters - def test_get_top_filter_attributes1 - req = @client.get_top_filter_attributes_with_http_info("index", "mySearch", "1999-09-19", "2001-01-01", 21, 42, "tag") - - assert_equal(:get, req.method) - assert_equal('/2/filters', req.path) - assert(({ 'index': "index", 'search': "mySearch", 'startDate': "1999-09-19", 'endDate': "2001-01-01", 'limit': "21", 'offset': "42", 'tags': "tag" }.to_a - req.query_params.to_a).empty?, - req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # get getTopFilterForAttribute with minimal parameters - def test_get_top_filter_for_attribute0 - req = @client.get_top_filter_for_attribute_with_http_info("myAttribute", "index") - - assert_equal(:get, req.method) - assert_equal('/2/filters/myAttribute', req.path) - assert(({ 'index': "index" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # get getTopFilterForAttribute with minimal parameters and multiple attributes - def test_get_top_filter_for_attribute1 - req = @client.get_top_filter_for_attribute_with_http_info("myAttribute1,myAttribute2", "index") - - assert_equal(:get, req.method) - assert_equal('/2/filters/myAttribute1%2CmyAttribute2', req.path) - assert(({ 'index': "index" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # get getTopFilterForAttribute with all parameters - def test_get_top_filter_for_attribute2 - req = @client.get_top_filter_for_attribute_with_http_info("myAttribute", "index", "mySearch", "1999-09-19", "2001-01-01", 21, 42, "tag") - - assert_equal(:get, req.method) - assert_equal('/2/filters/myAttribute', req.path) - assert(({ 'index': "index", 'search': "mySearch", 'startDate': "1999-09-19", 'endDate': "2001-01-01", 'limit': "21", 'offset': "42", 'tags': "tag" }.to_a - req.query_params.to_a).empty?, - req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # get getTopFilterForAttribute with all parameters and multiple attributes - def test_get_top_filter_for_attribute3 - req = @client.get_top_filter_for_attribute_with_http_info("myAttribute1,myAttribute2", "index", "mySearch", "1999-09-19", "2001-01-01", 21, 42, "tag") - - assert_equal(:get, req.method) - assert_equal('/2/filters/myAttribute1%2CmyAttribute2', req.path) - assert(({ 'index': "index", 'search': "mySearch", 'startDate': "1999-09-19", 'endDate': "2001-01-01", 'limit': "21", 'offset': "42", 'tags': "tag" }.to_a - req.query_params.to_a).empty?, - req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # get getTopFiltersNoResults with minimal parameters - def test_get_top_filters_no_results0 - req = @client.get_top_filters_no_results_with_http_info("index") - - assert_equal(:get, req.method) - assert_equal('/2/filters/noResults', req.path) - assert(({ 'index': "index" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # get getTopFiltersNoResults with all parameters - def test_get_top_filters_no_results1 - req = @client.get_top_filters_no_results_with_http_info("index", "mySearch", "1999-09-19", "2001-01-01", 21, 42, "tag") - - assert_equal(:get, req.method) - assert_equal('/2/filters/noResults', req.path) - assert(({ 'index': "index", 'search': "mySearch", 'startDate': "1999-09-19", 'endDate': "2001-01-01", 'limit': "21", 'offset': "42", 'tags': "tag" }.to_a - req.query_params.to_a).empty?, - req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # get getTopHits with minimal parameters - def test_get_top_hits0 - req = @client.get_top_hits_with_http_info("index") - - assert_equal(:get, req.method) - assert_equal('/2/hits', req.path) - assert(({ 'index': "index" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # get getTopHits with all parameters - def test_get_top_hits1 - req = @client.get_top_hits_with_http_info("index", "mySearch", true, "1999-09-19", "2001-01-01", 21, 42, "tag") - - assert_equal(:get, req.method) - assert_equal('/2/hits', req.path) - assert( - ({ 'index': "index", 'search': "mySearch", 'clickAnalytics': "true", 'startDate': "1999-09-19", 'endDate': "2001-01-01", 'limit': "21", 'offset': "42", - 'tags': "tag" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s - ) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # get getTopSearches with minimal parameters - def test_get_top_searches0 - req = @client.get_top_searches_with_http_info("index") - - assert_equal(:get, req.method) - assert_equal('/2/searches', req.path) - assert(({ 'index': "index" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # get getTopSearches with all parameters - def test_get_top_searches1 - req = @client.get_top_searches_with_http_info("index", true, "1999-09-19", "2001-01-01", 'searchCount', 'asc', 21, 42, "tag") - - assert_equal(:get, req.method) - assert_equal('/2/searches', req.path) - assert( - ({ 'index': "index", 'clickAnalytics': "true", 'startDate': "1999-09-19", 'endDate': "2001-01-01", 'orderBy': "searchCount", 'direction': "asc", 'limit': "21", 'offset': "42", - 'tags': "tag" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s - ) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # get getUsersCount with minimal parameters - def test_get_users_count0 - req = @client.get_users_count_with_http_info("index") - - assert_equal(:get, req.method) - assert_equal('/2/users/count', req.path) - assert(({ 'index': "index" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # get getUsersCount with all parameters - def test_get_users_count1 - req = @client.get_users_count_with_http_info("index", "1999-09-19", "2001-01-01", "tag") - - assert_equal(:get, req.method) - assert_equal('/2/users/count', req.path) - assert(({ 'index': "index", 'startDate': "1999-09-19", 'endDate': "2001-01-01", 'tags': "tag" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end -end diff --git a/tests/output/ruby/test/methods/requests/ingestion_test.rb b/tests/output/ruby/test/methods/requests/ingestion_test.rb deleted file mode 100644 index c669d212bc..0000000000 --- a/tests/output/ruby/test/methods/requests/ingestion_test.rb +++ /dev/null @@ -1,638 +0,0 @@ -require 'algolia' -require 'test/unit' - -class TestIngestionClient < Test::Unit::TestCase - include Algolia::Ingestion - def setup - @client = Algolia::IngestionClient.create_with_config( - Algolia::Configuration.new( - 'APP_ID', - 'API_KEY', - [Algolia::Transport::StatefulHost.new('localhost')], - 'ingestion', - { requester: Algolia::Transport::EchoRequester.new } - ) - ) - end - - # createAuthenticationOAuth - def test_create_authentication0 - req = @client.create_authentication_with_http_info(AuthenticationCreate.new(type: 'oauth', name: "authName", - input: AuthOAuth.new(url: "http://test.oauth", client_id: "myID", client_secret: "mySecret"))) - - assert_equal(:post, req.method) - assert_equal('/1/authentications', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"type":"oauth","name":"authName","input":{"url":"http://test.oauth","client_id":"myID","client_secret":"mySecret"}}'), JSON.parse(req.body)) - end - - # createAuthenticationAlgolia - def test_create_authentication1 - req = @client.create_authentication_with_http_info(AuthenticationCreate.new(type: 'algolia', name: "authName", - input: AuthAlgolia.new(app_id: "myappID", api_key: "randomApiKey"))) - - assert_equal(:post, req.method) - assert_equal('/1/authentications', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"type":"algolia","name":"authName","input":{"appID":"myappID","apiKey":"randomApiKey"}}'), JSON.parse(req.body)) - end - - # createDestination - def test_create_destination0 - req = @client.create_destination_with_http_info(DestinationCreate.new(type: 'search', name: "destinationName", - input: DestinationIndexPrefix.new(index_prefix: "prefix_"), authentication_id: "6c02aeb1-775e-418e-870b-1faccd4b2c0f")) - - assert_equal(:post, req.method) - assert_equal('/1/destinations', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"type":"search","name":"destinationName","input":{"indexPrefix":"prefix_"},"authenticationID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}'), - JSON.parse(req.body)) - end - - # createSource - def test_create_source0 - req = @client.create_source_with_http_info(SourceCreate.new(type: 'commercetools', name: "sourceName", - input: SourceCommercetools.new(store_keys: ["myStore"], locales: ["de"], url: "http://commercetools.com", project_key: "keyID"), authentication_id: "6c02aeb1-775e-418e-870b-1faccd4b2c0f")) - - assert_equal(:post, req.method) - assert_equal('/1/sources', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal( - JSON.parse('{"type":"commercetools","name":"sourceName","input":{"storeKeys":["myStore"],"locales":["de"],"url":"http://commercetools.com","projectKey":"keyID"},"authenticationID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}'), JSON.parse(req.body) - ) - end - - # createTaskOnDemand - def test_create_task0 - req = @client.create_task_with_http_info(TaskCreate.new(source_id: "search", destination_id: "destinationName", trigger: OnDemandTriggerInput.new(type: 'onDemand'), - action: 'replace')) - - assert_equal(:post, req.method) - assert_equal('/1/tasks', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"sourceID":"search","destinationID":"destinationName","trigger":{"type":"onDemand"},"action":"replace"}'), JSON.parse(req.body)) - end - - # createTaskSchedule - def test_create_task1 - req = @client.create_task_with_http_info(TaskCreate.new(source_id: "search", destination_id: "destinationName", - trigger: ScheduleTriggerInput.new(type: 'schedule', cron: "* * * * *"), action: 'replace')) - - assert_equal(:post, req.method) - assert_equal('/1/tasks', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"sourceID":"search","destinationID":"destinationName","trigger":{"type":"schedule","cron":"* * * * *"},"action":"replace"}'), JSON.parse(req.body)) - end - - # createTaskSubscription - def test_create_task2 - req = @client.create_task_with_http_info(TaskCreate.new(source_id: "search", destination_id: "destinationName", trigger: OnDemandTriggerInput.new(type: 'onDemand'), - action: 'replace')) - - assert_equal(:post, req.method) - assert_equal('/1/tasks', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"sourceID":"search","destinationID":"destinationName","trigger":{"type":"onDemand"},"action":"replace"}'), JSON.parse(req.body)) - end - - # allow del method for a custom path with minimal parameters - def test_custom_delete0 - req = @client.custom_delete_with_http_info("/test/minimal") - - assert_equal(:delete, req.method) - assert_equal('/1/test/minimal', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # allow del method for a custom path with all parameters - def test_custom_delete1 - req = @client.custom_delete_with_http_info("/test/all", { query: "parameters" }) - - assert_equal(:delete, req.method) - assert_equal('/1/test/all', req.path) - assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # allow get method for a custom path with minimal parameters - def test_custom_get0 - req = @client.custom_get_with_http_info("/test/minimal") - - assert_equal(:get, req.method) - assert_equal('/1/test/minimal', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # allow get method for a custom path with all parameters - def test_custom_get1 - req = @client.custom_get_with_http_info("/test/all", { query: "parameters" }) - - assert_equal(:get, req.method) - assert_equal('/1/test/all', req.path) - assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # allow post method for a custom path with minimal parameters - def test_custom_post0 - req = @client.custom_post_with_http_info("/test/minimal") - - assert_equal(:post, req.method) - assert_equal('/1/test/minimal', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{}'), JSON.parse(req.body)) - end - - # allow post method for a custom path with all parameters - def test_custom_post1 - req = @client.custom_post_with_http_info("/test/all", { query: "parameters" }, { body: "parameters" }) - - assert_equal(:post, req.method) - assert_equal('/1/test/all', req.path) - assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"body":"parameters"}'), JSON.parse(req.body)) - end - - # requestOptions can override default query parameters - def test_custom_post2 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"query":"myQueryParameter"}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "myQueryParameter" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions merges query parameters with default ones - def test_custom_post3 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"query2":"myQueryParameter"}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters", 'query2': "myQueryParameter" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions can override default headers - def test_custom_post4 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :header_params => JSON.parse('{"x-algolia-api-key":"myApiKey"}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({ 'x-algolia-api-key': "myApiKey" }.transform_keys(&:to_s).to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions merges headers with default ones - def test_custom_post5 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :header_params => JSON.parse('{"x-algolia-api-key":"myApiKey"}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({ 'x-algolia-api-key': "myApiKey" }.transform_keys(&:to_s).to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions queryParameters accepts booleans - def test_custom_post6 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"isItWorking":true}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters", 'isItWorking': "true" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions queryParameters accepts integers - def test_custom_post7 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"myParam":2}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters", 'myParam': "2" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions queryParameters accepts list of string - def test_custom_post8 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"myParam":["c","d"]}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters", 'myParam': "c,d" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions queryParameters accepts list of booleans - def test_custom_post9 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"myParam":[true,true,false]}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters", 'myParam': "true,true,false" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions queryParameters accepts list of integers - def test_custom_post10 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"myParam":[1,2]}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters", 'myParam': "1,2" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # allow put method for a custom path with minimal parameters - def test_custom_put0 - req = @client.custom_put_with_http_info("/test/minimal") - - assert_equal(:put, req.method) - assert_equal('/1/test/minimal', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{}'), JSON.parse(req.body)) - end - - # allow put method for a custom path with all parameters - def test_custom_put1 - req = @client.custom_put_with_http_info("/test/all", { query: "parameters" }, { body: "parameters" }) - - assert_equal(:put, req.method) - assert_equal('/1/test/all', req.path) - assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"body":"parameters"}'), JSON.parse(req.body)) - end - - # deleteAuthentication - def test_delete_authentication0 - req = @client.delete_authentication_with_http_info("6c02aeb1-775e-418e-870b-1faccd4b2c0f") - - assert_equal(:delete, req.method) - assert_equal('/1/authentications/6c02aeb1-775e-418e-870b-1faccd4b2c0f', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # deleteDestination - def test_delete_destination0 - req = @client.delete_destination_with_http_info("6c02aeb1-775e-418e-870b-1faccd4b2c0f") - - assert_equal(:delete, req.method) - assert_equal('/1/destinations/6c02aeb1-775e-418e-870b-1faccd4b2c0f', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # deleteSource - def test_delete_source0 - req = @client.delete_source_with_http_info("6c02aeb1-775e-418e-870b-1faccd4b2c0f") - - assert_equal(:delete, req.method) - assert_equal('/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # deleteTask - def test_delete_task0 - req = @client.delete_task_with_http_info("6c02aeb1-775e-418e-870b-1faccd4b2c0f") - - assert_equal(:delete, req.method) - assert_equal('/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # disableTask - def test_disable_task0 - req = @client.disable_task_with_http_info("6c02aeb1-775e-418e-870b-1faccd4b2c0f") - - assert_equal(:put, req.method) - assert_equal('/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f/disable', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - end - - # enableTask - def test_enable_task0 - req = @client.enable_task_with_http_info("6c02aeb1-775e-418e-870b-1faccd4b2c0f") - - assert_equal(:put, req.method) - assert_equal('/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f/enable', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - end - - # getAuthentication - def test_get_authentication0 - req = @client.get_authentication_with_http_info("6c02aeb1-775e-418e-870b-1faccd4b2c0f") - - assert_equal(:get, req.method) - assert_equal('/1/authentications/6c02aeb1-775e-418e-870b-1faccd4b2c0f', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # getAuthentications - def test_get_authentications0 - req = @client.get_authentications_with_http_info - - assert_equal(:get, req.method) - assert_equal('/1/authentications', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # getDestination - def test_get_destination0 - req = @client.get_destination_with_http_info("6c02aeb1-775e-418e-870b-1faccd4b2c0f") - - assert_equal(:get, req.method) - assert_equal('/1/destinations/6c02aeb1-775e-418e-870b-1faccd4b2c0f', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # getDestinations - def test_get_destinations0 - req = @client.get_destinations_with_http_info - - assert_equal(:get, req.method) - assert_equal('/1/destinations', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # getDockerSourceStreams - def test_get_docker_source_streams0 - req = @client.get_docker_source_streams_with_http_info("6c02aeb1-775e-418e-870b-1faccd4b2c0f") - - assert_equal(:get, req.method) - assert_equal('/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f/discover', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # getEvent - def test_get_event0 - req = @client.get_event_with_http_info("6c02aeb1-775e-418e-870b-1faccd4b2c0f", "6c02aeb1-775e-418e-870b-1faccd4b2c0c") - - assert_equal(:get, req.method) - assert_equal('/1/runs/6c02aeb1-775e-418e-870b-1faccd4b2c0f/events/6c02aeb1-775e-418e-870b-1faccd4b2c0c', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # getEvents - def test_get_events0 - req = @client.get_events_with_http_info("6c02aeb1-775e-418e-870b-1faccd4b2c0f") - - assert_equal(:get, req.method) - assert_equal('/1/runs/6c02aeb1-775e-418e-870b-1faccd4b2c0f/events', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # getRun - def test_get_run0 - req = @client.get_run_with_http_info("6c02aeb1-775e-418e-870b-1faccd4b2c0f") - - assert_equal(:get, req.method) - assert_equal('/1/runs/6c02aeb1-775e-418e-870b-1faccd4b2c0f', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # getRuns - def test_get_runs0 - req = @client.get_runs_with_http_info - - assert_equal(:get, req.method) - assert_equal('/1/runs', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # getSource - def test_get_source0 - req = @client.get_source_with_http_info("6c02aeb1-775e-418e-870b-1faccd4b2c0f") - - assert_equal(:get, req.method) - assert_equal('/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # getSources - def test_get_sources0 - req = @client.get_sources_with_http_info - - assert_equal(:get, req.method) - assert_equal('/1/sources', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # getTask - def test_get_task0 - req = @client.get_task_with_http_info("6c02aeb1-775e-418e-870b-1faccd4b2c0f") - - assert_equal(:get, req.method) - assert_equal('/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # getTasks - def test_get_tasks0 - req = @client.get_tasks_with_http_info - - assert_equal(:get, req.method) - assert_equal('/1/tasks', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # runTask - def test_run_task0 - req = @client.run_task_with_http_info("6c02aeb1-775e-418e-870b-1faccd4b2c0f") - - assert_equal(:post, req.method) - assert_equal('/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f/run', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - end - - # searchAuthentications - def test_search_authentications0 - req = @client.search_authentications_with_http_info(AuthenticationSearch.new(authentication_ids: ["6c02aeb1-775e-418e-870b-1faccd4b2c0f", - "947ac9c4-7e58-4c87-b1e7-14a68e99699a"])) - - assert_equal(:post, req.method) - assert_equal('/1/authentications/search', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"authenticationIDs":["6c02aeb1-775e-418e-870b-1faccd4b2c0f","947ac9c4-7e58-4c87-b1e7-14a68e99699a"]}'), JSON.parse(req.body)) - end - - # searchDestinations - def test_search_destinations0 - req = @client.search_destinations_with_http_info(DestinationSearch.new(destination_ids: ["6c02aeb1-775e-418e-870b-1faccd4b2c0f", - "947ac9c4-7e58-4c87-b1e7-14a68e99699a"])) - - assert_equal(:post, req.method) - assert_equal('/1/destinations/search', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"destinationIDs":["6c02aeb1-775e-418e-870b-1faccd4b2c0f","947ac9c4-7e58-4c87-b1e7-14a68e99699a"]}'), JSON.parse(req.body)) - end - - # searchSources - def test_search_sources0 - req = @client.search_sources_with_http_info(SourceSearch.new(source_ids: ["6c02aeb1-775e-418e-870b-1faccd4b2c0f", "947ac9c4-7e58-4c87-b1e7-14a68e99699a"])) - - assert_equal(:post, req.method) - assert_equal('/1/sources/search', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"sourceIDs":["6c02aeb1-775e-418e-870b-1faccd4b2c0f","947ac9c4-7e58-4c87-b1e7-14a68e99699a"]}'), JSON.parse(req.body)) - end - - # searchTasks - def test_search_tasks0 - req = @client.search_tasks_with_http_info(TaskSearch.new(task_ids: ["6c02aeb1-775e-418e-870b-1faccd4b2c0f", "947ac9c4-7e58-4c87-b1e7-14a68e99699a"])) - - assert_equal(:post, req.method) - assert_equal('/1/tasks/search', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"taskIDs":["6c02aeb1-775e-418e-870b-1faccd4b2c0f","947ac9c4-7e58-4c87-b1e7-14a68e99699a"]}'), JSON.parse(req.body)) - end - - # triggerDockerSourceDiscover - def test_trigger_docker_source_discover0 - req = @client.trigger_docker_source_discover_with_http_info("6c02aeb1-775e-418e-870b-1faccd4b2c0f") - - assert_equal(:post, req.method) - assert_equal('/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f/discover', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - end - - # updateAuthentication - def test_update_authentication0 - req = @client.update_authentication_with_http_info("6c02aeb1-775e-418e-870b-1faccd4b2c0f", AuthenticationUpdate.new(name: "newName")) - - assert_equal(:patch, req.method) - assert_equal('/1/authentications/6c02aeb1-775e-418e-870b-1faccd4b2c0f', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"name":"newName"}'), JSON.parse(req.body)) - end - - # updateDestination - def test_update_destination0 - req = @client.update_destination_with_http_info("6c02aeb1-775e-418e-870b-1faccd4b2c0f", DestinationUpdate.new(name: "newName")) - - assert_equal(:patch, req.method) - assert_equal('/1/destinations/6c02aeb1-775e-418e-870b-1faccd4b2c0f', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"name":"newName"}'), JSON.parse(req.body)) - end - - # updateSource - def test_update_source0 - req = @client.update_source_with_http_info("6c02aeb1-775e-418e-870b-1faccd4b2c0f", SourceUpdate.new(name: "newName")) - - assert_equal(:patch, req.method) - assert_equal('/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"name":"newName"}'), JSON.parse(req.body)) - end - - # updateTask - def test_update_task0 - req = @client.update_task_with_http_info("6c02aeb1-775e-418e-870b-1faccd4b2c0f", TaskUpdate.new(enabled: false)) - - assert_equal(:patch, req.method) - assert_equal('/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"enabled":false}'), JSON.parse(req.body)) - end -end diff --git a/tests/output/ruby/test/methods/requests/insights_test.rb b/tests/output/ruby/test/methods/requests/insights_test.rb deleted file mode 100644 index bfb29cd22f..0000000000 --- a/tests/output/ruby/test/methods/requests/insights_test.rb +++ /dev/null @@ -1,289 +0,0 @@ -require 'algolia' -require 'test/unit' - -class TestInsightsClient < Test::Unit::TestCase - include Algolia::Insights - def setup - @client = Algolia::InsightsClient.create_with_config( - Algolia::Configuration.new( - 'APP_ID', - 'API_KEY', - [Algolia::Transport::StatefulHost.new('localhost')], - 'insights', - { requester: Algolia::Transport::EchoRequester.new } - ) - ) - end - - # allow del method for a custom path with minimal parameters - def test_custom_delete0 - req = @client.custom_delete_with_http_info("/test/minimal") - - assert_equal(:delete, req.method) - assert_equal('/1/test/minimal', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # allow del method for a custom path with all parameters - def test_custom_delete1 - req = @client.custom_delete_with_http_info("/test/all", { query: "parameters" }) - - assert_equal(:delete, req.method) - assert_equal('/1/test/all', req.path) - assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # allow get method for a custom path with minimal parameters - def test_custom_get0 - req = @client.custom_get_with_http_info("/test/minimal") - - assert_equal(:get, req.method) - assert_equal('/1/test/minimal', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # allow get method for a custom path with all parameters - def test_custom_get1 - req = @client.custom_get_with_http_info("/test/all", { query: "parameters" }) - - assert_equal(:get, req.method) - assert_equal('/1/test/all', req.path) - assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # allow post method for a custom path with minimal parameters - def test_custom_post0 - req = @client.custom_post_with_http_info("/test/minimal") - - assert_equal(:post, req.method) - assert_equal('/1/test/minimal', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{}'), JSON.parse(req.body)) - end - - # allow post method for a custom path with all parameters - def test_custom_post1 - req = @client.custom_post_with_http_info("/test/all", { query: "parameters" }, { body: "parameters" }) - - assert_equal(:post, req.method) - assert_equal('/1/test/all', req.path) - assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"body":"parameters"}'), JSON.parse(req.body)) - end - - # requestOptions can override default query parameters - def test_custom_post2 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"query":"myQueryParameter"}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "myQueryParameter" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions merges query parameters with default ones - def test_custom_post3 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"query2":"myQueryParameter"}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters", 'query2': "myQueryParameter" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions can override default headers - def test_custom_post4 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :header_params => JSON.parse('{"x-algolia-api-key":"myApiKey"}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({ 'x-algolia-api-key': "myApiKey" }.transform_keys(&:to_s).to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions merges headers with default ones - def test_custom_post5 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :header_params => JSON.parse('{"x-algolia-api-key":"myApiKey"}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({ 'x-algolia-api-key': "myApiKey" }.transform_keys(&:to_s).to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions queryParameters accepts booleans - def test_custom_post6 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"isItWorking":true}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters", 'isItWorking': "true" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions queryParameters accepts integers - def test_custom_post7 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"myParam":2}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters", 'myParam': "2" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions queryParameters accepts list of string - def test_custom_post8 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"myParam":["c","d"]}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters", 'myParam': "c,d" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions queryParameters accepts list of booleans - def test_custom_post9 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"myParam":[true,true,false]}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters", 'myParam': "true,true,false" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions queryParameters accepts list of integers - def test_custom_post10 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"myParam":[1,2]}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters", 'myParam': "1,2" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # allow put method for a custom path with minimal parameters - def test_custom_put0 - req = @client.custom_put_with_http_info("/test/minimal") - - assert_equal(:put, req.method) - assert_equal('/1/test/minimal', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{}'), JSON.parse(req.body)) - end - - # allow put method for a custom path with all parameters - def test_custom_put1 - req = @client.custom_put_with_http_info("/test/all", { query: "parameters" }, { body: "parameters" }) - - assert_equal(:put, req.method) - assert_equal('/1/test/all', req.path) - assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"body":"parameters"}'), JSON.parse(req.body)) - end - - # pushEvents0 - def test_push_events0 - req = @client.push_events_with_http_info(InsightsEvents.new(events: [ClickedObjectIDsAfterSearch.new(event_type: 'click', event_name: "Product Clicked", - index: "products", user_token: "user-123456", authenticated_user_token: "user-123456", timestamp: 1_641_290_601_962, object_ids: ["9780545139700", "9780439784542"], query_id: "43b15df305339e827f0ac0bdc5ebcaa7", positions: [7, 6])])) - - assert_equal(:post, req.method) - assert_equal('/1/events', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal( - JSON.parse('{"events":[{"eventType":"click","eventName":"Product Clicked","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"queryID":"43b15df305339e827f0ac0bdc5ebcaa7","positions":[7,6]}]}'), JSON.parse(req.body) - ) - end - - # Many events type - def test_push_events1 - req = @client.push_events_with_http_info(InsightsEvents.new(events: [ - ConvertedObjectIDsAfterSearch.new(event_type: 'conversion', event_name: "Product Purchased", index: "products", user_token: "user-123456", authenticated_user_token: "user-123456", - timestamp: 1_641_290_601_962, object_ids: ["9780545139700", "9780439784542"], query_id: "43b15df305339e827f0ac0bdc5ebcaa7"), ViewedObjectIDs.new(event_type: 'view', event_name: "Product Detail Page Viewed", index: "products", user_token: "user-123456", authenticated_user_token: "user-123456", timestamp: 1_641_290_601_962, object_ids: ["9780545139700", "9780439784542"]) - ])) - - assert_equal(:post, req.method) - assert_equal('/1/events', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal( - JSON.parse('{"events":[{"eventType":"conversion","eventName":"Product Purchased","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"queryID":"43b15df305339e827f0ac0bdc5ebcaa7"},{"eventType":"view","eventName":"Product Detail Page Viewed","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"]}]}'), JSON.parse(req.body) - ) - end - - # ConvertedObjectIDsAfterSearch - def test_push_events2 - req = @client.push_events_with_http_info(InsightsEvents.new(events: [ConvertedObjectIDsAfterSearch.new(event_type: 'conversion', event_name: "Product Purchased", - index: "products", user_token: "user-123456", authenticated_user_token: "user-123456", timestamp: 1_641_290_601_962, object_ids: ["9780545139700", "9780439784542"], query_id: "43b15df305339e827f0ac0bdc5ebcaa7")])) - - assert_equal(:post, req.method) - assert_equal('/1/events', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal( - JSON.parse('{"events":[{"eventType":"conversion","eventName":"Product Purchased","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"queryID":"43b15df305339e827f0ac0bdc5ebcaa7"}]}'), JSON.parse(req.body) - ) - end - - # ViewedObjectIDs - def test_push_events3 - req = @client.push_events_with_http_info(InsightsEvents.new(events: [ViewedObjectIDs.new(event_type: 'view', event_name: "Product Detail Page Viewed", - index: "products", user_token: "user-123456", authenticated_user_token: "user-123456", timestamp: 1_641_290_601_962, object_ids: ["9780545139700", "9780439784542"])])) - - assert_equal(:post, req.method) - assert_equal('/1/events', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal( - JSON.parse('{"events":[{"eventType":"view","eventName":"Product Detail Page Viewed","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"]}]}'), JSON.parse(req.body) - ) - end - - # AddedToCartObjectIDs - def test_push_events4 - req = @client.push_events_with_http_info(InsightsEvents.new(events: [AddedToCartObjectIDsAfterSearch.new(event_type: 'conversion', event_subtype: 'addToCart', - event_name: "Product Added To Cart", index: "products", query_id: "43b15df305339e827f0ac0bdc5ebcaa7", user_token: "user-123456", authenticated_user_token: "user-123456", timestamp: 1_641_290_601_962, object_ids: ["9780545139700", "9780439784542"], object_data: [ObjectDataAfterSearch.new(price: 19.99, quantity: 10, discount: 2.5), ObjectDataAfterSearch.new(price: "8$", quantity: 7, discount: "30%")], currency: "USD")])) - - assert_equal(:post, req.method) - assert_equal('/1/events', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal( - JSON.parse('{"events":[{"eventType":"conversion","eventSubtype":"addToCart","eventName":"Product Added To Cart","index":"products","queryID":"43b15df305339e827f0ac0bdc5ebcaa7","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"objectData":[{"price":19.99,"quantity":10,"discount":2.5},{"price":"8$","quantity":7,"discount":"30%"}],"currency":"USD"}]}'), JSON.parse(req.body) - ) - end -end diff --git a/tests/output/ruby/test/methods/requests/monitoring_test.rb b/tests/output/ruby/test/methods/requests/monitoring_test.rb deleted file mode 100644 index 4033d86627..0000000000 --- a/tests/output/ruby/test/methods/requests/monitoring_test.rb +++ /dev/null @@ -1,325 +0,0 @@ -require 'algolia' -require 'test/unit' - -class TestMonitoringClient < Test::Unit::TestCase - include Algolia::Monitoring - def setup - @client = Algolia::MonitoringClient.create_with_config( - Algolia::Configuration.new( - 'APP_ID', - 'API_KEY', - [Algolia::Transport::StatefulHost.new('localhost')], - 'monitoring', - { requester: Algolia::Transport::EchoRequester.new } - ) - ) - end - - # allow del method for a custom path with minimal parameters - def test_custom_delete0 - req = @client.custom_delete_with_http_info("/test/minimal") - - assert_equal(:delete, req.method) - assert_equal('/1/test/minimal', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # allow del method for a custom path with all parameters - def test_custom_delete1 - req = @client.custom_delete_with_http_info("/test/all", { query: "parameters" }) - - assert_equal(:delete, req.method) - assert_equal('/1/test/all', req.path) - assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # allow get method for a custom path with minimal parameters - def test_custom_get0 - req = @client.custom_get_with_http_info("/test/minimal") - - assert_equal(:get, req.method) - assert_equal('/1/test/minimal', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # allow get method for a custom path with all parameters - def test_custom_get1 - req = @client.custom_get_with_http_info("/test/all", { query: "parameters" }) - - assert_equal(:get, req.method) - assert_equal('/1/test/all', req.path) - assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # allow post method for a custom path with minimal parameters - def test_custom_post0 - req = @client.custom_post_with_http_info("/test/minimal") - - assert_equal(:post, req.method) - assert_equal('/1/test/minimal', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{}'), JSON.parse(req.body)) - end - - # allow post method for a custom path with all parameters - def test_custom_post1 - req = @client.custom_post_with_http_info("/test/all", { query: "parameters" }, { body: "parameters" }) - - assert_equal(:post, req.method) - assert_equal('/1/test/all', req.path) - assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"body":"parameters"}'), JSON.parse(req.body)) - end - - # requestOptions can override default query parameters - def test_custom_post2 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"query":"myQueryParameter"}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "myQueryParameter" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions merges query parameters with default ones - def test_custom_post3 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"query2":"myQueryParameter"}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters", 'query2': "myQueryParameter" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions can override default headers - def test_custom_post4 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :header_params => JSON.parse('{"x-algolia-api-key":"myApiKey"}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({ 'x-algolia-api-key': "myApiKey" }.transform_keys(&:to_s).to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions merges headers with default ones - def test_custom_post5 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :header_params => JSON.parse('{"x-algolia-api-key":"myApiKey"}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({ 'x-algolia-api-key': "myApiKey" }.transform_keys(&:to_s).to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions queryParameters accepts booleans - def test_custom_post6 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"isItWorking":true}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters", 'isItWorking': "true" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions queryParameters accepts integers - def test_custom_post7 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"myParam":2}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters", 'myParam': "2" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions queryParameters accepts list of string - def test_custom_post8 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"myParam":["c","d"]}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters", 'myParam': "c,d" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions queryParameters accepts list of booleans - def test_custom_post9 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"myParam":[true,true,false]}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters", 'myParam': "true,true,false" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions queryParameters accepts list of integers - def test_custom_post10 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"myParam":[1,2]}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters", 'myParam': "1,2" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # allow put method for a custom path with minimal parameters - def test_custom_put0 - req = @client.custom_put_with_http_info("/test/minimal") - - assert_equal(:put, req.method) - assert_equal('/1/test/minimal', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{}'), JSON.parse(req.body)) - end - - # allow put method for a custom path with all parameters - def test_custom_put1 - req = @client.custom_put_with_http_info("/test/all", { query: "parameters" }, { body: "parameters" }) - - assert_equal(:put, req.method) - assert_equal('/1/test/all', req.path) - assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"body":"parameters"}'), JSON.parse(req.body)) - end - - # getClusterIncidents - def test_get_cluster_incidents0 - req = @client.get_cluster_incidents_with_http_info("c1-de") - - assert_equal(:get, req.method) - assert_equal('/1/incidents/c1-de', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # getClusterStatus - def test_get_cluster_status0 - req = @client.get_cluster_status_with_http_info("c1-de") - - assert_equal(:get, req.method) - assert_equal('/1/status/c1-de', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # getIncidents - def test_get_incidents0 - req = @client.get_incidents_with_http_info - - assert_equal(:get, req.method) - assert_equal('/1/incidents', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # getIndexingTime - def test_get_indexing_time0 - req = @client.get_indexing_time_with_http_info("c1-de") - - assert_equal(:get, req.method) - assert_equal('/1/indexing/c1-de', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # getInventory - def test_get_inventory0 - req = @client.get_inventory_with_http_info - - assert_equal(:get, req.method) - assert_equal('/1/inventory/servers', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # getLatency - def test_get_latency0 - req = @client.get_latency_with_http_info("c1-de") - - assert_equal(:get, req.method) - assert_equal('/1/latency/c1-de', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # getMetrics - def test_get_metrics0 - req = @client.get_metrics_with_http_info('avg_build_time', 'minute') - - assert_equal(:get, req.method) - assert_equal('/1/infrastructure/avg_build_time/period/minute', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # getReachability - def test_get_reachability0 - req = @client.get_reachability_with_http_info("c1-de") - - assert_equal(:get, req.method) - assert_equal('/1/reachability/c1-de/probes', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # getStatus - def test_get_status0 - req = @client.get_status_with_http_info - - assert_equal(:get, req.method) - assert_equal('/1/status', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end -end diff --git a/tests/output/ruby/test/methods/requests/personalization_test.rb b/tests/output/ruby/test/methods/requests/personalization_test.rb deleted file mode 100644 index b4dafb69de..0000000000 --- a/tests/output/ruby/test/methods/requests/personalization_test.rb +++ /dev/null @@ -1,269 +0,0 @@ -require 'algolia' -require 'test/unit' - -class TestPersonalizationClient < Test::Unit::TestCase - include Algolia::Personalization - def setup - @client = Algolia::PersonalizationClient.create_with_config( - Algolia::Configuration.new( - 'APP_ID', - 'API_KEY', - [Algolia::Transport::StatefulHost.new('localhost')], - 'personalization', - { requester: Algolia::Transport::EchoRequester.new } - ) - ) - end - - # allow del method for a custom path with minimal parameters - def test_custom_delete0 - req = @client.custom_delete_with_http_info("/test/minimal") - - assert_equal(:delete, req.method) - assert_equal('/1/test/minimal', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # allow del method for a custom path with all parameters - def test_custom_delete1 - req = @client.custom_delete_with_http_info("/test/all", { query: "parameters" }) - - assert_equal(:delete, req.method) - assert_equal('/1/test/all', req.path) - assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # allow get method for a custom path with minimal parameters - def test_custom_get0 - req = @client.custom_get_with_http_info("/test/minimal") - - assert_equal(:get, req.method) - assert_equal('/1/test/minimal', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # allow get method for a custom path with all parameters - def test_custom_get1 - req = @client.custom_get_with_http_info("/test/all", { query: "parameters" }) - - assert_equal(:get, req.method) - assert_equal('/1/test/all', req.path) - assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # allow post method for a custom path with minimal parameters - def test_custom_post0 - req = @client.custom_post_with_http_info("/test/minimal") - - assert_equal(:post, req.method) - assert_equal('/1/test/minimal', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{}'), JSON.parse(req.body)) - end - - # allow post method for a custom path with all parameters - def test_custom_post1 - req = @client.custom_post_with_http_info("/test/all", { query: "parameters" }, { body: "parameters" }) - - assert_equal(:post, req.method) - assert_equal('/1/test/all', req.path) - assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"body":"parameters"}'), JSON.parse(req.body)) - end - - # requestOptions can override default query parameters - def test_custom_post2 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"query":"myQueryParameter"}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "myQueryParameter" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions merges query parameters with default ones - def test_custom_post3 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"query2":"myQueryParameter"}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters", 'query2': "myQueryParameter" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions can override default headers - def test_custom_post4 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :header_params => JSON.parse('{"x-algolia-api-key":"myApiKey"}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({ 'x-algolia-api-key': "myApiKey" }.transform_keys(&:to_s).to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions merges headers with default ones - def test_custom_post5 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :header_params => JSON.parse('{"x-algolia-api-key":"myApiKey"}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({ 'x-algolia-api-key': "myApiKey" }.transform_keys(&:to_s).to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions queryParameters accepts booleans - def test_custom_post6 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"isItWorking":true}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters", 'isItWorking': "true" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions queryParameters accepts integers - def test_custom_post7 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"myParam":2}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters", 'myParam': "2" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions queryParameters accepts list of string - def test_custom_post8 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"myParam":["c","d"]}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters", 'myParam': "c,d" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions queryParameters accepts list of booleans - def test_custom_post9 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"myParam":[true,true,false]}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters", 'myParam': "true,true,false" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions queryParameters accepts list of integers - def test_custom_post10 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"myParam":[1,2]}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters", 'myParam': "1,2" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # allow put method for a custom path with minimal parameters - def test_custom_put0 - req = @client.custom_put_with_http_info("/test/minimal") - - assert_equal(:put, req.method) - assert_equal('/1/test/minimal', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{}'), JSON.parse(req.body)) - end - - # allow put method for a custom path with all parameters - def test_custom_put1 - req = @client.custom_put_with_http_info("/test/all", { query: "parameters" }, { body: "parameters" }) - - assert_equal(:put, req.method) - assert_equal('/1/test/all', req.path) - assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"body":"parameters"}'), JSON.parse(req.body)) - end - - # delete deleteUserProfile - def test_delete_user_profile0 - req = @client.delete_user_profile_with_http_info("UserToken") - - assert_equal(:delete, req.method) - assert_equal('/1/profiles/UserToken', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # get getPersonalizationStrategy - def test_get_personalization_strategy0 - req = @client.get_personalization_strategy_with_http_info - - assert_equal(:get, req.method) - assert_equal('/1/strategies/personalization', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # get getUserTokenProfile - def test_get_user_token_profile0 - req = @client.get_user_token_profile_with_http_info("UserToken") - - assert_equal(:get, req.method) - assert_equal('/1/profiles/personalization/UserToken', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # set setPersonalizationStrategy - def test_set_personalization_strategy0 - req = @client.set_personalization_strategy_with_http_info(PersonalizationStrategyParams.new( - event_scoring: [EventScoring.new(score: 42, event_name: "Algolia", - event_type: "Event")], facet_scoring: [FacetScoring.new(score: 42, facet_name: "Event")], personalization_impact: 42 - )) - - assert_equal(:post, req.method) - assert_equal('/1/strategies/personalization', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal( - JSON.parse('{"eventScoring":[{"score":42,"eventName":"Algolia","eventType":"Event"}],"facetScoring":[{"score":42,"facetName":"Event"}],"personalizationImpact":42}'), JSON.parse(req.body) - ) - end -end diff --git a/tests/output/ruby/test/methods/requests/recommend_test.rb b/tests/output/ruby/test/methods/requests/recommend_test.rb deleted file mode 100644 index 872040afc0..0000000000 --- a/tests/output/ruby/test/methods/requests/recommend_test.rb +++ /dev/null @@ -1,360 +0,0 @@ -require 'algolia' -require 'test/unit' - -class TestRecommendClient < Test::Unit::TestCase - include Algolia::Recommend - def setup - @client = Algolia::RecommendClient.create_with_config( - Algolia::Configuration.new( - 'APP_ID', - 'API_KEY', - [Algolia::Transport::StatefulHost.new('localhost')], - 'recommend', - { requester: Algolia::Transport::EchoRequester.new } - ) - ) - end - - # allow del method for a custom path with minimal parameters - def test_custom_delete0 - req = @client.custom_delete_with_http_info("/test/minimal") - - assert_equal(:delete, req.method) - assert_equal('/1/test/minimal', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # allow del method for a custom path with all parameters - def test_custom_delete1 - req = @client.custom_delete_with_http_info("/test/all", { query: "parameters" }) - - assert_equal(:delete, req.method) - assert_equal('/1/test/all', req.path) - assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # allow get method for a custom path with minimal parameters - def test_custom_get0 - req = @client.custom_get_with_http_info("/test/minimal") - - assert_equal(:get, req.method) - assert_equal('/1/test/minimal', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # allow get method for a custom path with all parameters - def test_custom_get1 - req = @client.custom_get_with_http_info("/test/all", { query: "parameters" }) - - assert_equal(:get, req.method) - assert_equal('/1/test/all', req.path) - assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # allow post method for a custom path with minimal parameters - def test_custom_post0 - req = @client.custom_post_with_http_info("/test/minimal") - - assert_equal(:post, req.method) - assert_equal('/1/test/minimal', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{}'), JSON.parse(req.body)) - end - - # allow post method for a custom path with all parameters - def test_custom_post1 - req = @client.custom_post_with_http_info("/test/all", { query: "parameters" }, { body: "parameters" }) - - assert_equal(:post, req.method) - assert_equal('/1/test/all', req.path) - assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"body":"parameters"}'), JSON.parse(req.body)) - end - - # requestOptions can override default query parameters - def test_custom_post2 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"query":"myQueryParameter"}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "myQueryParameter" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions merges query parameters with default ones - def test_custom_post3 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"query2":"myQueryParameter"}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters", 'query2': "myQueryParameter" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions can override default headers - def test_custom_post4 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :header_params => JSON.parse('{"x-algolia-api-key":"myApiKey"}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({ 'x-algolia-api-key': "myApiKey" }.transform_keys(&:to_s).to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions merges headers with default ones - def test_custom_post5 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :header_params => JSON.parse('{"x-algolia-api-key":"myApiKey"}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({ 'x-algolia-api-key': "myApiKey" }.transform_keys(&:to_s).to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions queryParameters accepts booleans - def test_custom_post6 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"isItWorking":true}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters", 'isItWorking': "true" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions queryParameters accepts integers - def test_custom_post7 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"myParam":2}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters", 'myParam': "2" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions queryParameters accepts list of string - def test_custom_post8 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"myParam":["c","d"]}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters", 'myParam': "c,d" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions queryParameters accepts list of booleans - def test_custom_post9 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"myParam":[true,true,false]}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters", 'myParam': "true,true,false" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions queryParameters accepts list of integers - def test_custom_post10 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"myParam":[1,2]}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters", 'myParam': "1,2" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # allow put method for a custom path with minimal parameters - def test_custom_put0 - req = @client.custom_put_with_http_info("/test/minimal") - - assert_equal(:put, req.method) - assert_equal('/1/test/minimal', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{}'), JSON.parse(req.body)) - end - - # allow put method for a custom path with all parameters - def test_custom_put1 - req = @client.custom_put_with_http_info("/test/all", { query: "parameters" }, { body: "parameters" }) - - assert_equal(:put, req.method) - assert_equal('/1/test/all', req.path) - assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"body":"parameters"}'), JSON.parse(req.body)) - end - - # deleteRecommendRule0 - def test_delete_recommend_rule0 - req = @client.delete_recommend_rule_with_http_info("indexName", 'related-products', "objectID") - - assert_equal(:delete, req.method) - assert_equal('/1/indexes/indexName/related-products/recommend/rules/objectID', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # getRecommendRule0 - def test_get_recommend_rule0 - req = @client.get_recommend_rule_with_http_info("indexName", 'related-products', "objectID") - - assert_equal(:get, req.method) - assert_equal('/1/indexes/indexName/related-products/recommend/rules/objectID', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # getRecommendStatus0 - def test_get_recommend_status0 - req = @client.get_recommend_status_with_http_info("indexName", 'related-products', 12_345) - - assert_equal(:get, req.method) - assert_equal('/1/indexes/indexName/related-products/task/12345', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # get recommendations for recommend model with minimal parameters - def test_get_recommendations0 - req = @client.get_recommendations_with_http_info(GetRecommendationsParams.new(requests: [RecommendationsQuery.new(index_name: "indexName", object_id: "objectID", - model: 'related-products', threshold: 42)])) - - assert_equal(:post, req.method) - assert_equal('/1/indexes/*/recommendations', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"requests":[{"indexName":"indexName","objectID":"objectID","model":"related-products","threshold":42}]}'), JSON.parse(req.body)) - end - - # get recommendations for recommend model with all parameters - def test_get_recommendations1 - req = @client.get_recommendations_with_http_info(GetRecommendationsParams.new(requests: [RecommendationsQuery.new(index_name: "indexName", object_id: "objectID", - model: 'related-products', threshold: 42, max_recommendations: 10, query_parameters: SearchParamsObject.new(query: "myQuery", facet_filters: ["query"]), fallback_parameters: SearchParamsObject.new(query: "myQuery", facet_filters: ["fallback"]))])) - - assert_equal(:post, req.method) - assert_equal('/1/indexes/*/recommendations', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal( - JSON.parse('{"requests":[{"indexName":"indexName","objectID":"objectID","model":"related-products","threshold":42,"maxRecommendations":10,"queryParameters":{"query":"myQuery","facetFilters":["query"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback"]}}]}'), JSON.parse(req.body) - ) - end - - # get recommendations for trending model with minimal parameters - def test_get_recommendations2 - req = @client.get_recommendations_with_http_info(GetRecommendationsParams.new(requests: [TrendingItemsQuery.new(index_name: "indexName", model: 'trending-items', - threshold: 42)])) - - assert_equal(:post, req.method) - assert_equal('/1/indexes/*/recommendations', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"requests":[{"indexName":"indexName","model":"trending-items","threshold":42}]}'), JSON.parse(req.body)) - end - - # get recommendations for trending model with all parameters - def test_get_recommendations3 - req = @client.get_recommendations_with_http_info(GetRecommendationsParams.new(requests: [TrendingItemsQuery.new(index_name: "indexName", model: 'trending-items', - threshold: 42, max_recommendations: 10, facet_name: "myFacetName", facet_value: "myFacetValue", query_parameters: SearchParamsObject.new(query: "myQuery", facet_filters: ["query"]), fallback_parameters: SearchParamsObject.new(query: "myQuery", facet_filters: ["fallback"]))])) - - assert_equal(:post, req.method) - assert_equal('/1/indexes/*/recommendations', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal( - JSON.parse('{"requests":[{"indexName":"indexName","model":"trending-items","threshold":42,"maxRecommendations":10,"facetName":"myFacetName","facetValue":"myFacetValue","queryParameters":{"query":"myQuery","facetFilters":["query"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback"]}}]}'), JSON.parse(req.body) - ) - end - - # get multiple recommendations with minimal parameters - def test_get_recommendations4 - req = @client.get_recommendations_with_http_info(GetRecommendationsParams.new(requests: [ - RecommendationsQuery.new(index_name: "indexName1", object_id: "objectID1", model: 'related-products', - threshold: 21), RecommendationsQuery.new(index_name: "indexName2", object_id: "objectID2", model: 'related-products', threshold: 21) - ])) - - assert_equal(:post, req.method) - assert_equal('/1/indexes/*/recommendations', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal( - JSON.parse('{"requests":[{"indexName":"indexName1","objectID":"objectID1","model":"related-products","threshold":21},{"indexName":"indexName2","objectID":"objectID2","model":"related-products","threshold":21}]}'), JSON.parse(req.body) - ) - end - - # get multiple recommendations with all parameters - def test_get_recommendations5 - req = @client.get_recommendations_with_http_info(GetRecommendationsParams.new(requests: [ - RecommendationsQuery.new(index_name: "indexName1", object_id: "objectID1", model: 'related-products', threshold: 21, max_recommendations: 10, - query_parameters: SearchParamsObject.new(query: "myQuery", facet_filters: ["query1"]), fallback_parameters: SearchParamsObject.new(query: "myQuery", facet_filters: ["fallback1"])), RecommendationsQuery.new(index_name: "indexName2", object_id: "objectID2", model: 'related-products', threshold: 21, max_recommendations: 10, query_parameters: SearchParamsObject.new(query: "myQuery", facet_filters: ["query2"]), fallback_parameters: SearchParamsObject.new(query: "myQuery", facet_filters: ["fallback2"])) - ])) - - assert_equal(:post, req.method) - assert_equal('/1/indexes/*/recommendations', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal( - JSON.parse('{"requests":[{"indexName":"indexName1","objectID":"objectID1","model":"related-products","threshold":21,"maxRecommendations":10,"queryParameters":{"query":"myQuery","facetFilters":["query1"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback1"]}},{"indexName":"indexName2","objectID":"objectID2","model":"related-products","threshold":21,"maxRecommendations":10,"queryParameters":{"query":"myQuery","facetFilters":["query2"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback2"]}}]}'), JSON.parse(req.body) - ) - end - - # get frequently bought together recommendations - def test_get_recommendations6 - req = @client.get_recommendations_with_http_info(GetRecommendationsParams.new(requests: [RecommendationsQuery.new(index_name: "indexName1", object_id: "objectID1", - model: 'bought-together', threshold: 42)])) - - assert_equal(:post, req.method) - assert_equal('/1/indexes/*/recommendations', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"requests":[{"indexName":"indexName1","objectID":"objectID1","model":"bought-together","threshold":42}]}'), JSON.parse(req.body)) - end - - # searchRecommendRules0 - def test_search_recommend_rules0 - req = @client.search_recommend_rules_with_http_info("indexName", 'related-products') - - assert_equal(:post, req.method) - assert_equal('/1/indexes/indexName/related-products/recommend/rules/search', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{}'), JSON.parse(req.body)) - end -end diff --git a/tests/output/ruby/test/methods/requests/search_test.rb b/tests/output/ruby/test/methods/requests/search_test.rb deleted file mode 100644 index 38c35d079a..0000000000 --- a/tests/output/ruby/test/methods/requests/search_test.rb +++ /dev/null @@ -1,1362 +0,0 @@ -require 'algolia' -require 'test/unit' - -class TestSearchClient < Test::Unit::TestCase - include Algolia::Search - def setup - @client = Algolia::SearchClient.create_with_config( - Algolia::Configuration.new( - 'APP_ID', - 'API_KEY', - [Algolia::Transport::StatefulHost.new('localhost')], - 'search', - { requester: Algolia::Transport::EchoRequester.new } - ) - ) - end - - # addApiKey0 - def test_add_api_key0 - req = @client.add_api_key_with_http_info(ApiKey.new(acl: ['search', 'addObject'], description: "my new api key", validity: 300, max_queries_per_ip_per_hour: 100, - max_hits_per_query: 20)) - - assert_equal(:post, req.method) - assert_equal('/1/keys', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"acl":["search","addObject"],"description":"my new api key","validity":300,"maxQueriesPerIPPerHour":100,"maxHitsPerQuery":20}'), - JSON.parse(req.body)) - end - - # addOrUpdateObject0 - def test_add_or_update_object0 - req = @client.add_or_update_object_with_http_info("indexName", "uniqueID", { key: "value" }) - - assert_equal(:put, req.method) - assert_equal('/1/indexes/indexName/uniqueID', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"key":"value"}'), JSON.parse(req.body)) - end - - # appendSource0 - def test_append_source0 - req = @client.append_source_with_http_info(Source.new(source: "theSource", description: "theDescription")) - - assert_equal(:post, req.method) - assert_equal('/1/security/sources/append', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"source":"theSource","description":"theDescription"}'), JSON.parse(req.body)) - end - - # assignUserId0 - def test_assign_user_id0 - req = @client.assign_user_id_with_http_info("userID", AssignUserIdParams.new(cluster: "theCluster")) - - assert_equal(:post, req.method) - assert_equal('/1/clusters/mapping', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({ 'x-algolia-user-id': "userID" }.transform_keys(&:to_s).to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"cluster":"theCluster"}'), JSON.parse(req.body)) - end - - # allows batch method with `addObject` action - def test_batch0 - req = @client.batch_with_http_info("theIndexName", BatchWriteParams.new(requests: [BatchRequest.new(action: 'addObject', body: { key: "value" })])) - - assert_equal(:post, req.method) - assert_equal('/1/indexes/theIndexName/batch', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"requests":[{"action":"addObject","body":{"key":"value"}}]}'), JSON.parse(req.body)) - end - - # allows batch method with `clear` action - def test_batch1 - req = @client.batch_with_http_info("theIndexName", BatchWriteParams.new(requests: [BatchRequest.new(action: 'clear', body: { key: "value" })])) - - assert_equal(:post, req.method) - assert_equal('/1/indexes/theIndexName/batch', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"requests":[{"action":"clear","body":{"key":"value"}}]}'), JSON.parse(req.body)) - end - - # allows batch method with `delete` action - def test_batch2 - req = @client.batch_with_http_info("theIndexName", BatchWriteParams.new(requests: [BatchRequest.new(action: 'delete', body: { key: "value" })])) - - assert_equal(:post, req.method) - assert_equal('/1/indexes/theIndexName/batch', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"requests":[{"action":"delete","body":{"key":"value"}}]}'), JSON.parse(req.body)) - end - - # allows batch method with `deleteObject` action - def test_batch3 - req = @client.batch_with_http_info("theIndexName", BatchWriteParams.new(requests: [BatchRequest.new(action: 'deleteObject', body: { key: "value" })])) - - assert_equal(:post, req.method) - assert_equal('/1/indexes/theIndexName/batch', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"requests":[{"action":"deleteObject","body":{"key":"value"}}]}'), JSON.parse(req.body)) - end - - # allows batch method with `partialUpdateObject` action - def test_batch4 - req = @client.batch_with_http_info("theIndexName", - BatchWriteParams.new(requests: [BatchRequest.new(action: 'partialUpdateObject', body: { key: "value" })])) - - assert_equal(:post, req.method) - assert_equal('/1/indexes/theIndexName/batch', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"requests":[{"action":"partialUpdateObject","body":{"key":"value"}}]}'), JSON.parse(req.body)) - end - - # allows batch method with `partialUpdateObjectNoCreate` action - def test_batch5 - req = @client.batch_with_http_info("theIndexName", - BatchWriteParams.new(requests: [BatchRequest.new(action: 'partialUpdateObjectNoCreate', body: { key: "value" })])) - - assert_equal(:post, req.method) - assert_equal('/1/indexes/theIndexName/batch', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"requests":[{"action":"partialUpdateObjectNoCreate","body":{"key":"value"}}]}'), JSON.parse(req.body)) - end - - # allows batch method with `updateObject` action - def test_batch6 - req = @client.batch_with_http_info("theIndexName", BatchWriteParams.new(requests: [BatchRequest.new(action: 'updateObject', body: { key: "value" })])) - - assert_equal(:post, req.method) - assert_equal('/1/indexes/theIndexName/batch', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"requests":[{"action":"updateObject","body":{"key":"value"}}]}'), JSON.parse(req.body)) - end - - # batchAssignUserIds0 - def test_batch_assign_user_ids0 - req = @client.batch_assign_user_ids_with_http_info("userID", BatchAssignUserIdsParams.new(cluster: "theCluster", users: ["user1", "user2"])) - - assert_equal(:post, req.method) - assert_equal('/1/clusters/mapping/batch', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({ 'x-algolia-user-id': "userID" }.transform_keys(&:to_s).to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"cluster":"theCluster","users":["user1","user2"]}'), JSON.parse(req.body)) - end - - # get batchDictionaryEntries results with minimal parameters - def test_batch_dictionary_entries0 - req = @client.batch_dictionary_entries_with_http_info('compounds', - BatchDictionaryEntriesParams.new(requests: [BatchDictionaryEntriesRequest.new(action: 'addEntry', body: DictionaryEntry.new(object_id: "1", language: "en")), - BatchDictionaryEntriesRequest.new(action: 'deleteEntry', - body: DictionaryEntry.new( - object_id: "2", language: "fr" - ))])) - - assert_equal(:post, req.method) - assert_equal('/1/dictionaries/compounds/batch', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"requests":[{"action":"addEntry","body":{"objectID":"1","language":"en"}},{"action":"deleteEntry","body":{"objectID":"2","language":"fr"}}]}'), - JSON.parse(req.body)) - end - - # get batchDictionaryEntries results with all parameters - def test_batch_dictionary_entries1 - req = @client.batch_dictionary_entries_with_http_info('compounds', - BatchDictionaryEntriesParams.new(clear_existing_dictionary_entries: false, - requests: [ - BatchDictionaryEntriesRequest.new(action: 'addEntry', - body: DictionaryEntry.new(object_id: "1", language: "en", word: "fancy", words: ["believe", "algolia"], decomposition: ["trust", "algolia"], - state: 'enabled')), BatchDictionaryEntriesRequest.new(action: 'deleteEntry', body: DictionaryEntry.new(object_id: "2", language: "fr", word: "humility", words: ["candor", "algolia"], decomposition: ["grit", "algolia"], state: 'enabled')) - ])) - - assert_equal(:post, req.method) - assert_equal('/1/dictionaries/compounds/batch', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal( - JSON.parse('{"clearExistingDictionaryEntries":false,"requests":[{"action":"addEntry","body":{"objectID":"1","language":"en","word":"fancy","words":["believe","algolia"],"decomposition":["trust","algolia"],"state":"enabled"}},{"action":"deleteEntry","body":{"objectID":"2","language":"fr","word":"humility","words":["candor","algolia"],"decomposition":["grit","algolia"],"state":"enabled"}}]}'), JSON.parse(req.body) - ) - end - - # get batchDictionaryEntries results additional properties - def test_batch_dictionary_entries2 - req = @client.batch_dictionary_entries_with_http_info('compounds', - BatchDictionaryEntriesParams.new(requests: [BatchDictionaryEntriesRequest.new(action: 'addEntry', - body: DictionaryEntry.new( - object_id: "1", language: "en", additional: "try me" - ))])) - - assert_equal(:post, req.method) - assert_equal('/1/dictionaries/compounds/batch', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"requests":[{"action":"addEntry","body":{"objectID":"1","language":"en","additional":"try me"}}]}'), JSON.parse(req.body)) - end - - # browse with minimal parameters - def test_browse0 - req = @client.browse_with_http_info("indexName") - - assert_equal(:post, req.method) - assert_equal('/1/indexes/indexName/browse', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{}'), JSON.parse(req.body)) - end - - # browse with search parameters - def test_browse1 - req = @client.browse_with_http_info("indexName", BrowseParamsObject.new(query: "myQuery", facet_filters: ["tags:algolia"])) - - assert_equal(:post, req.method) - assert_equal('/1/indexes/indexName/browse', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"query":"myQuery","facetFilters":["tags:algolia"]}'), JSON.parse(req.body)) - end - - # browse allow a cursor in parameters - def test_browse2 - req = @client.browse_with_http_info("indexName", BrowseParamsObject.new(cursor: "test")) - - assert_equal(:post, req.method) - assert_equal('/1/indexes/indexName/browse', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"cursor":"test"}'), JSON.parse(req.body)) - end - - # clearAllSynonyms0 - def test_clear_all_synonyms0 - req = @client.clear_all_synonyms_with_http_info("indexName") - - assert_equal(:post, req.method) - assert_equal('/1/indexes/indexName/synonyms/clear', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - end - - # clearObjects0 - def test_clear_objects0 - req = @client.clear_objects_with_http_info("theIndexName") - - assert_equal(:post, req.method) - assert_equal('/1/indexes/theIndexName/clear', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - end - - # clearRules0 - def test_clear_rules0 - req = @client.clear_rules_with_http_info("indexName") - - assert_equal(:post, req.method) - assert_equal('/1/indexes/indexName/rules/clear', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - end - - # allow del method for a custom path with minimal parameters - def test_custom_delete0 - req = @client.custom_delete_with_http_info("/test/minimal") - - assert_equal(:delete, req.method) - assert_equal('/1/test/minimal', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # allow del method for a custom path with all parameters - def test_custom_delete1 - req = @client.custom_delete_with_http_info("/test/all", { query: "parameters" }) - - assert_equal(:delete, req.method) - assert_equal('/1/test/all', req.path) - assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # allow get method for a custom path with minimal parameters - def test_custom_get0 - req = @client.custom_get_with_http_info("/test/minimal") - - assert_equal(:get, req.method) - assert_equal('/1/test/minimal', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # allow get method for a custom path with all parameters - def test_custom_get1 - req = @client.custom_get_with_http_info("/test/all", { query: "parameters" }) - - assert_equal(:get, req.method) - assert_equal('/1/test/all', req.path) - assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # allow post method for a custom path with minimal parameters - def test_custom_post0 - req = @client.custom_post_with_http_info("/test/minimal") - - assert_equal(:post, req.method) - assert_equal('/1/test/minimal', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{}'), JSON.parse(req.body)) - end - - # allow post method for a custom path with all parameters - def test_custom_post1 - req = @client.custom_post_with_http_info("/test/all", { query: "parameters" }, { body: "parameters" }) - - assert_equal(:post, req.method) - assert_equal('/1/test/all', req.path) - assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"body":"parameters"}'), JSON.parse(req.body)) - end - - # requestOptions can override default query parameters - def test_custom_post2 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"query":"myQueryParameter"}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "myQueryParameter" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions merges query parameters with default ones - def test_custom_post3 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"query2":"myQueryParameter"}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters", 'query2': "myQueryParameter" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions can override default headers - def test_custom_post4 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :header_params => JSON.parse('{"x-algolia-api-key":"myApiKey"}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({ 'x-algolia-api-key': "myApiKey" }.transform_keys(&:to_s).to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions merges headers with default ones - def test_custom_post5 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :header_params => JSON.parse('{"x-algolia-api-key":"myApiKey"}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({ 'x-algolia-api-key': "myApiKey" }.transform_keys(&:to_s).to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions queryParameters accepts booleans - def test_custom_post6 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"isItWorking":true}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters", 'isItWorking': "true" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions queryParameters accepts integers - def test_custom_post7 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"myParam":2}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters", 'myParam': "2" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions queryParameters accepts list of string - def test_custom_post8 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"myParam":["c","d"]}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters", 'myParam': "c,d" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions queryParameters accepts list of booleans - def test_custom_post9 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"myParam":[true,true,false]}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters", 'myParam': "true,true,false" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # requestOptions queryParameters accepts list of integers - def test_custom_post10 - req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, - { :query_params => JSON.parse('{"myParam":[1,2]}', :symbolize_names => true) }) - - assert_equal(:post, req.method) - assert_equal('/1/test/requestOptions', req.path) - assert(({ 'query': "parameters", 'myParam': "1,2" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) - end - - # allow put method for a custom path with minimal parameters - def test_custom_put0 - req = @client.custom_put_with_http_info("/test/minimal") - - assert_equal(:put, req.method) - assert_equal('/1/test/minimal', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{}'), JSON.parse(req.body)) - end - - # allow put method for a custom path with all parameters - def test_custom_put1 - req = @client.custom_put_with_http_info("/test/all", { query: "parameters" }, { body: "parameters" }) - - assert_equal(:put, req.method) - assert_equal('/1/test/all', req.path) - assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"body":"parameters"}'), JSON.parse(req.body)) - end - - # deleteApiKey0 - def test_delete_api_key0 - req = @client.delete_api_key_with_http_info("myTestApiKey") - - assert_equal(:delete, req.method) - assert_equal('/1/keys/myTestApiKey', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # deleteBy0 - def test_delete_by0 - req = @client.delete_by_with_http_info("theIndexName", DeleteByParams.new(filters: "brand:brandName")) - - assert_equal(:post, req.method) - assert_equal('/1/indexes/theIndexName/deleteByQuery', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"filters":"brand:brandName"}'), JSON.parse(req.body)) - end - - # deleteIndex0 - def test_delete_index0 - req = @client.delete_index_with_http_info("theIndexName") - - assert_equal(:delete, req.method) - assert_equal('/1/indexes/theIndexName', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # deleteObject0 - def test_delete_object0 - req = @client.delete_object_with_http_info("theIndexName", "uniqueID") - - assert_equal(:delete, req.method) - assert_equal('/1/indexes/theIndexName/uniqueID', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # delete rule simple case - def test_delete_rule0 - req = @client.delete_rule_with_http_info("indexName", "id1") - - assert_equal(:delete, req.method) - assert_equal('/1/indexes/indexName/rules/id1', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # delete rule with simple characters to encode in objectID - def test_delete_rule1 - req = @client.delete_rule_with_http_info("indexName", "test/with/slash") - - assert_equal(:delete, req.method) - assert_equal('/1/indexes/indexName/rules/test%2Fwith%2Fslash', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # deleteSource0 - def test_delete_source0 - req = @client.delete_source_with_http_info("theSource") - - assert_equal(:delete, req.method) - assert_equal('/1/security/sources/theSource', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # deleteSynonym0 - def test_delete_synonym0 - req = @client.delete_synonym_with_http_info("indexName", "id1") - - assert_equal(:delete, req.method) - assert_equal('/1/indexes/indexName/synonyms/id1', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # getApiKey0 - def test_get_api_key0 - req = @client.get_api_key_with_http_info("myTestApiKey") - - assert_equal(:get, req.method) - assert_equal('/1/keys/myTestApiKey', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # get getDictionaryLanguages - def test_get_dictionary_languages0 - req = @client.get_dictionary_languages_with_http_info - - assert_equal(:get, req.method) - assert_equal('/1/dictionaries/*/languages', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # get getDictionarySettings results - def test_get_dictionary_settings0 - req = @client.get_dictionary_settings_with_http_info - - assert_equal(:get, req.method) - assert_equal('/1/dictionaries/*/settings', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # getLogs with minimal parameters - def test_get_logs0 - req = @client.get_logs_with_http_info - - assert_equal(:get, req.method) - assert_equal('/1/logs', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # getLogs with parameters - def test_get_logs1 - req = @client.get_logs_with_http_info(5, 10, "theIndexName", 'all') - - assert_equal(:get, req.method) - assert_equal('/1/logs', req.path) - assert(({ 'offset': "5", 'length': "10", 'indexName': "theIndexName", 'type': "all" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # getObject0 - def test_get_object0 - req = @client.get_object_with_http_info("theIndexName", "uniqueID", ["attr1", "attr2"]) - - assert_equal(:get, req.method) - assert_equal('/1/indexes/theIndexName/uniqueID', req.path) - assert(({ 'attributesToRetrieve': "attr1,attr2" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # getObjects0 - def test_get_objects0 - req = @client.get_objects_with_http_info(GetObjectsParams.new(requests: [GetObjectsRequest.new(attributes_to_retrieve: ["attr1", "attr2"], - object_id: "uniqueID", index_name: "theIndexName")])) - - assert_equal(:post, req.method) - assert_equal('/1/indexes/*/objects', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"requests":[{"attributesToRetrieve":["attr1","attr2"],"objectID":"uniqueID","indexName":"theIndexName"}]}'), JSON.parse(req.body)) - end - - # getRule0 - def test_get_rule0 - req = @client.get_rule_with_http_info("indexName", "id1") - - assert_equal(:get, req.method) - assert_equal('/1/indexes/indexName/rules/id1', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # getSettings0 - def test_get_settings0 - req = @client.get_settings_with_http_info("theIndexName") - - assert_equal(:get, req.method) - assert_equal('/1/indexes/theIndexName/settings', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # getSources0 - def test_get_sources0 - req = @client.get_sources_with_http_info - - assert_equal(:get, req.method) - assert_equal('/1/security/sources', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # getSynonym0 - def test_get_synonym0 - req = @client.get_synonym_with_http_info("indexName", "id1") - - assert_equal(:get, req.method) - assert_equal('/1/indexes/indexName/synonyms/id1', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # getTask0 - def test_get_task0 - req = @client.get_task_with_http_info("theIndexName", 123) - - assert_equal(:get, req.method) - assert_equal('/1/indexes/theIndexName/task/123', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # getTopUserIds0 - def test_get_top_user_ids0 - req = @client.get_top_user_ids_with_http_info - - assert_equal(:get, req.method) - assert_equal('/1/clusters/mapping/top', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # getUserId0 - def test_get_user_id0 - req = @client.get_user_id_with_http_info("uniqueID") - - assert_equal(:get, req.method) - assert_equal('/1/clusters/mapping/uniqueID', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # hasPendingMappings with minimal parameters - def test_has_pending_mappings0 - req = @client.has_pending_mappings_with_http_info - - assert_equal(:get, req.method) - assert_equal('/1/clusters/mapping/pending', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # hasPendingMappings with parameters - def test_has_pending_mappings1 - req = @client.has_pending_mappings_with_http_info(true) - - assert_equal(:get, req.method) - assert_equal('/1/clusters/mapping/pending', req.path) - assert(({ 'getClusters': "true" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # listApiKeys0 - def test_list_api_keys0 - req = @client.list_api_keys_with_http_info - - assert_equal(:get, req.method) - assert_equal('/1/keys', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # listClusters0 - def test_list_clusters0 - req = @client.list_clusters_with_http_info - - assert_equal(:get, req.method) - assert_equal('/1/clusters', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # listIndices with minimal parameters - def test_list_indices0 - req = @client.list_indices_with_http_info - - assert_equal(:get, req.method) - assert_equal('/1/indexes', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # listIndices with parameters - def test_list_indices1 - req = @client.list_indices_with_http_info(8, 3) - - assert_equal(:get, req.method) - assert_equal('/1/indexes', req.path) - assert(({ 'page': "8", 'hitsPerPage': "3" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # listUserIds with minimal parameters - def test_list_user_ids0 - req = @client.list_user_ids_with_http_info - - assert_equal(:get, req.method) - assert_equal('/1/clusters/mapping', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # listUserIds with parameters - def test_list_user_ids1 - req = @client.list_user_ids_with_http_info(8, 100) - - assert_equal(:get, req.method) - assert_equal('/1/clusters/mapping', req.path) - assert(({ 'page': "8", 'hitsPerPage': "100" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # multipleBatch0 - def test_multiple_batch0 - req = @client.multiple_batch_with_http_info(BatchParams.new(requests: [MultipleBatchRequest.new(action: 'addObject', body: { key: "value" }, - index_name: "theIndexName")])) - - assert_equal(:post, req.method) - assert_equal('/1/indexes/*/batch', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"requests":[{"action":"addObject","body":{"key":"value"},"indexName":"theIndexName"}]}'), JSON.parse(req.body)) - end - - # operationIndex0 - def test_operation_index0 - req = @client.operation_index_with_http_info("theIndexName", OperationIndexParams.new(operation: 'copy', destination: "dest", scope: ['rules', 'settings'])) - - assert_equal(:post, req.method) - assert_equal('/1/indexes/theIndexName/operation', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"operation":"copy","destination":"dest","scope":["rules","settings"]}'), JSON.parse(req.body)) - end - - # partialUpdateObject0 - def test_partial_update_object0 - req = @client.partial_update_object_with_http_info("theIndexName", "uniqueID", - { id1: "test", id2: BuiltInOperation.new(_operation: 'AddUnique', value: "test2") }, true) - - assert_equal(:post, req.method) - assert_equal('/1/indexes/theIndexName/uniqueID/partial', req.path) - assert(({ 'createIfNotExists': "true" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"id1":"test","id2":{"_operation":"AddUnique","value":"test2"}}'), JSON.parse(req.body)) - end - - # removeUserId0 - def test_remove_user_id0 - req = @client.remove_user_id_with_http_info("uniqueID") - - assert_equal(:delete, req.method) - assert_equal('/1/clusters/mapping/uniqueID', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - - assert(req.body.nil?, 'body is not nil') - end - - # replaceSources0 - def test_replace_sources0 - req = @client.replace_sources_with_http_info([Source.new(source: "theSource", description: "theDescription")]) - - assert_equal(:put, req.method) - assert_equal('/1/security/sources', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('[{"source":"theSource","description":"theDescription"}]'), JSON.parse(req.body)) - end - - # restoreApiKey0 - def test_restore_api_key0 - req = @client.restore_api_key_with_http_info("myApiKey") - - assert_equal(:post, req.method) - assert_equal('/1/keys/myApiKey/restore', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - end - - # saveObject0 - def test_save_object0 - req = @client.save_object_with_http_info("theIndexName", { objectID: "id", test: "val" }) - - assert_equal(:post, req.method) - assert_equal('/1/indexes/theIndexName', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"objectID":"id","test":"val"}'), JSON.parse(req.body)) - end - - # saveRule with minimal parameters - def test_save_rule0 - req = @client.save_rule_with_http_info("indexName", "id1", - Rule.new(object_id: "id1", conditions: [Condition.new(pattern: "apple", anchoring: 'contains')])) - - assert_equal(:put, req.method) - assert_equal('/1/indexes/indexName/rules/id1', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"objectID":"id1","conditions":[{"pattern":"apple","anchoring":"contains"}]}'), JSON.parse(req.body)) - end - - # saveRule with all parameters - def test_save_rule1 - req = @client.save_rule_with_http_info("indexName", "id1", - Rule.new(object_id: "id1", conditions: [Condition.new(pattern: "apple", anchoring: 'contains', alternatives: false, context: "search")], consequence: Consequence.new(params: ConsequenceParams.new(filters: "brand:apple", query: ConsequenceQueryObject.new(remove: ["algolia"], edits: [Edit.new(type: 'remove', delete: "abc", insert: "cde"), Edit.new(type: 'replace', delete: "abc", insert: "cde")])), hide: [ConsequenceHide.new(object_id: "321")], filter_promotes: false, user_data: { 'algolia': "aloglia" }, promote: [PromoteObjectID.new(object_id: "abc", position: 3), PromoteObjectIDs.new(object_ids: ["abc", "def"], position: 1)]), description: "test", enabled: true, validity: [TimeRange.new(from: 1_656_670_273, _until: 1_656_670_277)]), true) - - assert_equal(:put, req.method) - assert_equal('/1/indexes/indexName/rules/id1', req.path) - assert(({ 'forwardToReplicas': "true" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal( - JSON.parse('{"objectID":"id1","conditions":[{"pattern":"apple","anchoring":"contains","alternatives":false,"context":"search"}],"consequence":{"params":{"filters":"brand:apple","query":{"remove":["algolia"],"edits":[{"type":"remove","delete":"abc","insert":"cde"},{"type":"replace","delete":"abc","insert":"cde"}]}},"hide":[{"objectID":"321"}],"filterPromotes":false,"userData":{"algolia":"aloglia"},"promote":[{"objectID":"abc","position":3},{"objectIDs":["abc","def"],"position":1}]},"description":"test","enabled":true,"validity":[{"from":1656670273,"until":1656670277}]}'), JSON.parse(req.body) - ) - end - - # saveRules with minimal parameters - def test_save_rules0 - req = @client.save_rules_with_http_info("indexName", - [Rule.new(object_id: "a-rule-id", conditions: [Condition.new(pattern: "smartphone", anchoring: 'contains')]), - Rule.new(object_id: "a-second-rule-id", conditions: [Condition.new(pattern: "apple", anchoring: 'contains')])]) - - assert_equal(:post, req.method) - assert_equal('/1/indexes/indexName/rules/batch', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal( - JSON.parse('[{"objectID":"a-rule-id","conditions":[{"pattern":"smartphone","anchoring":"contains"}]},{"objectID":"a-second-rule-id","conditions":[{"pattern":"apple","anchoring":"contains"}]}]'), JSON.parse(req.body) - ) - end - - # saveRules with all parameters - def test_save_rules1 - req = @client.save_rules_with_http_info("indexName", - [Rule.new(object_id: "id1", conditions: [Condition.new(pattern: "apple", anchoring: 'contains', alternatives: false, context: "search")], consequence: Consequence.new(params: ConsequenceParams.new(filters: "brand:apple", query: ConsequenceQueryObject.new(remove: ["algolia"], edits: [Edit.new(type: 'remove', delete: "abc", insert: "cde"), Edit.new(type: 'replace', delete: "abc", insert: "cde")])), hide: [ConsequenceHide.new(object_id: "321")], filter_promotes: false, user_data: { 'algolia': "aloglia" }, promote: [PromoteObjectID.new(object_id: "abc", position: 3), PromoteObjectIDs.new(object_ids: ["abc", "def"], position: 1)]), description: "test", enabled: true, validity: [TimeRange.new(from: 1_656_670_273, _until: 1_656_670_277)])], true, true) - - assert_equal(:post, req.method) - assert_equal('/1/indexes/indexName/rules/batch', req.path) - assert(({ 'forwardToReplicas': "true", 'clearExistingRules': "true" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal( - JSON.parse('[{"objectID":"id1","conditions":[{"pattern":"apple","anchoring":"contains","alternatives":false,"context":"search"}],"consequence":{"params":{"filters":"brand:apple","query":{"remove":["algolia"],"edits":[{"type":"remove","delete":"abc","insert":"cde"},{"type":"replace","delete":"abc","insert":"cde"}]}},"hide":[{"objectID":"321"}],"filterPromotes":false,"userData":{"algolia":"aloglia"},"promote":[{"objectID":"abc","position":3},{"objectIDs":["abc","def"],"position":1}]},"description":"test","enabled":true,"validity":[{"from":1656670273,"until":1656670277}]}]'), JSON.parse(req.body) - ) - end - - # saveSynonym0 - def test_save_synonym0 - req = @client.save_synonym_with_http_info("indexName", "id1", SynonymHit.new(object_id: "id1", type: 'synonym', synonyms: ["car", "vehicule", "auto"]), - true) - - assert_equal(:put, req.method) - assert_equal('/1/indexes/indexName/synonyms/id1', req.path) - assert(({ 'forwardToReplicas': "true" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"objectID":"id1","type":"synonym","synonyms":["car","vehicule","auto"]}'), JSON.parse(req.body)) - end - - # saveSynonyms0 - def test_save_synonyms0 - req = @client.save_synonyms_with_http_info("indexName", - [SynonymHit.new(object_id: "id1", type: 'synonym', synonyms: ["car", "vehicule", "auto"]), SynonymHit.new(object_id: "id2", type: 'onewaysynonym', input: "iphone", synonyms: ["ephone", "aphone", "yphone"])], true, false) - - assert_equal(:post, req.method) - assert_equal('/1/indexes/indexName/synonyms/batch', req.path) - assert(({ 'forwardToReplicas': "true", 'replaceExistingSynonyms': "false" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal( - JSON.parse('[{"objectID":"id1","type":"synonym","synonyms":["car","vehicule","auto"]},{"objectID":"id2","type":"onewaysynonym","input":"iphone","synonyms":["ephone","aphone","yphone"]}]'), JSON.parse(req.body) - ) - end - - # search for a single hits request with minimal parameters - def test_search0 - req = @client.search_with_http_info(SearchMethodParams.new(requests: [SearchForHits.new(index_name: "cts_e2e_search_empty_index")])) - - assert_equal(:post, req.method) - assert_equal('/1/indexes/*/queries', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"requests":[{"indexName":"cts_e2e_search_empty_index"}]}'), JSON.parse(req.body)) - end - - # search for a single facet request with minimal parameters - def test_search1 - req = @client.search_with_http_info(SearchMethodParams.new(requests: [SearchForFacets.new(index_name: "cts_e2e_search_facet", type: 'facet', facet: "editor")], - strategy: 'stopIfEnoughMatches')) - - assert_equal(:post, req.method) - assert_equal('/1/indexes/*/queries', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"requests":[{"indexName":"cts_e2e_search_facet","type":"facet","facet":"editor"}],"strategy":"stopIfEnoughMatches"}'), JSON.parse(req.body)) - end - - # search for a single hits request with all parameters - def test_search2 - req = @client.search_with_http_info(SearchMethodParams.new(requests: [SearchForHits.new(index_name: "theIndexName", query: "myQuery", hits_per_page: 50, - type: 'default')])) - - assert_equal(:post, req.method) - assert_equal('/1/indexes/*/queries', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"requests":[{"indexName":"theIndexName","query":"myQuery","hitsPerPage":50,"type":"default"}]}'), JSON.parse(req.body)) - end - - # search for a single facet request with all parameters - def test_search3 - req = @client.search_with_http_info(SearchMethodParams.new( - requests: [SearchForFacets.new(index_name: "theIndexName", type: 'facet', facet: "theFacet", facet_query: "theFacetQuery", query: "theQuery", - max_facet_hits: 50)], strategy: 'stopIfEnoughMatches' - )) - - assert_equal(:post, req.method) - assert_equal('/1/indexes/*/queries', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal( - JSON.parse('{"requests":[{"indexName":"theIndexName","type":"facet","facet":"theFacet","facetQuery":"theFacetQuery","query":"theQuery","maxFacetHits":50}],"strategy":"stopIfEnoughMatches"}'), JSON.parse(req.body) - ) - end - - # search for multiple mixed requests in multiple indices with minimal parameters - def test_search4 - req = @client.search_with_http_info(SearchMethodParams.new( - requests: [SearchForHits.new(index_name: "theIndexName"), SearchForFacets.new(index_name: "theIndexName2", type: 'facet', facet: "theFacet"), - SearchForHits.new(index_name: "theIndexName", type: 'default')], strategy: 'stopIfEnoughMatches' - )) - - assert_equal(:post, req.method) - assert_equal('/1/indexes/*/queries', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal( - JSON.parse('{"requests":[{"indexName":"theIndexName"},{"indexName":"theIndexName2","type":"facet","facet":"theFacet"},{"indexName":"theIndexName","type":"default"}],"strategy":"stopIfEnoughMatches"}'), JSON.parse(req.body) - ) - end - - # search for multiple mixed requests in multiple indices with all parameters - def test_search5 - req = @client.search_with_http_info(SearchMethodParams.new( - requests: [SearchForFacets.new(index_name: "theIndexName", type: 'facet', facet: "theFacet", facet_query: "theFacetQuery", query: "theQuery", max_facet_hits: 50), - SearchForHits.new(index_name: "theIndexName", query: "myQuery", hits_per_page: 50, - type: 'default')], strategy: 'stopIfEnoughMatches' - )) - - assert_equal(:post, req.method) - assert_equal('/1/indexes/*/queries', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal( - JSON.parse('{"requests":[{"indexName":"theIndexName","type":"facet","facet":"theFacet","facetQuery":"theFacetQuery","query":"theQuery","maxFacetHits":50},{"indexName":"theIndexName","query":"myQuery","hitsPerPage":50,"type":"default"}],"strategy":"stopIfEnoughMatches"}'), JSON.parse(req.body) - ) - end - - # search filters accept all of the possible shapes - def test_search6 - req = @client.search_with_http_info(SearchMethodParams.new(requests: [ - SearchForHits.new(index_name: "theIndexName", facet_filters: "mySearch:filters", re_ranking_apply_filter: "mySearch:filters", tag_filters: "mySearch:filters", - numeric_filters: "mySearch:filters", optional_filters: "mySearch:filters"), SearchForHits.new(index_name: "theIndexName", facet_filters: ["mySearch:filters", ["mySearch:filters"]], re_ranking_apply_filter: ["mySearch:filters", ["mySearch:filters"]], tag_filters: ["mySearch:filters", ["mySearch:filters"]], numeric_filters: ["mySearch:filters", ["mySearch:filters"]], optional_filters: ["mySearch:filters", ["mySearch:filters"]]) - ])) - - assert_equal(:post, req.method) - assert_equal('/1/indexes/*/queries', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal( - JSON.parse('{"requests":[{"indexName":"theIndexName","facetFilters":"mySearch:filters","reRankingApplyFilter":"mySearch:filters","tagFilters":"mySearch:filters","numericFilters":"mySearch:filters","optionalFilters":"mySearch:filters"},{"indexName":"theIndexName","facetFilters":["mySearch:filters",["mySearch:filters"]],"reRankingApplyFilter":["mySearch:filters",["mySearch:filters"]],"tagFilters":["mySearch:filters",["mySearch:filters"]],"numericFilters":["mySearch:filters",["mySearch:filters"]],"optionalFilters":["mySearch:filters",["mySearch:filters"]]}]}'), JSON.parse(req.body) - ) - end - - # search with all search parameters - def test_search7 - req = @client.search_with_http_info(SearchMethodParams.new(requests: [SearchForHits.new(advanced_syntax: true, advanced_syntax_features: ['exactPhrase'], - allow_typos_on_numeric_tokens: true, alternatives_as_exact: ['multiWordsSynonym'], analytics: true, analytics_tags: [""], around_lat_lng: "", around_lat_lng_via_ip: true, around_precision: 0, around_radius: 'all', attribute_criteria_computed_by_min_proximity: true, attributes_for_faceting: [""], attributes_to_highlight: [""], attributes_to_retrieve: [""], attributes_to_snippet: [""], click_analytics: true, custom_ranking: [""], decompound_query: true, disable_exact_on_attributes: [""], disable_typo_tolerance_on_attributes: [""], distinct: 0, enable_ab_test: true, enable_personalization: true, enable_re_ranking: true, enable_rules: true, exact_on_single_word_query: 'attribute', explain: ["foo", "bar"], facet_filters: [""], faceting_after_distinct: true, facets: [""], filters: "", get_ranking_info: true, highlight_post_tag: "", highlight_pre_tag: "", hits_per_page: 1, ignore_plurals: false, index_name: "theIndexName", inside_bounding_box: [[47.3165, 4.9665, 47.3424, 5.0201], [40.9234, 2.1185, 38.643, 1.9916]], inside_polygon: [[47.3165, 4.9665, 47.3424, 5.0201, 47.32, 4.9], [40.9234, 2.1185, 38.643, 1.9916, 39.2587, 2.0104]], keep_diacritics_on_characters: "", length: 1, max_values_per_facet: 0, min_proximity: 1, min_word_sizefor1_typo: 0, min_word_sizefor2_typos: 0, minimum_around_radius: 1, natural_languages: [""], numeric_filters: [""], offset: 0, optional_filters: [""], optional_words: [""], page: 0, percentile_computation: true, personalization_impact: 0, query: "", query_languages: [""], query_type: 'prefixAll', ranking: [""], re_ranking_apply_filter: [""], relevancy_strictness: 0, remove_stop_words: true, remove_words_if_no_results: 'allOptional', rendering_content: RenderingContent.new(facet_ordering: FacetOrdering.new(facets: Facets.new(order: ["a", "b"]), values: { a: Value.new(order: ["b"], sort_remaining_by: 'count') })), replace_synonyms_in_highlight: true, response_fields: [""], restrict_highlight_and_snippet_arrays: true, restrict_searchable_attributes: [""], rule_contexts: [""], similar_query: "", snippet_ellipsis_text: "", sort_facet_values_by: "", sum_or_filters_scores: true, synonyms: true, tag_filters: [""], type: 'default', typo_tolerance: 'min', user_token: "")])) - - assert_equal(:post, req.method) - assert_equal('/1/indexes/*/queries', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal( - JSON.parse('{"requests":[{"advancedSyntax":true,"advancedSyntaxFeatures":["exactPhrase"],"allowTyposOnNumericTokens":true,"alternativesAsExact":["multiWordsSynonym"],"analytics":true,"analyticsTags":[""],"aroundLatLng":"","aroundLatLngViaIP":true,"aroundPrecision":0,"aroundRadius":"all","attributeCriteriaComputedByMinProximity":true,"attributesForFaceting":[""],"attributesToHighlight":[""],"attributesToRetrieve":[""],"attributesToSnippet":[""],"clickAnalytics":true,"customRanking":[""],"decompoundQuery":true,"disableExactOnAttributes":[""],"disableTypoToleranceOnAttributes":[""],"distinct":0,"enableABTest":true,"enablePersonalization":true,"enableReRanking":true,"enableRules":true,"exactOnSingleWordQuery":"attribute","explain":["foo","bar"],"facetFilters":[""],"facetingAfterDistinct":true,"facets":[""],"filters":"","getRankingInfo":true,"highlightPostTag":"","highlightPreTag":"","hitsPerPage":1,"ignorePlurals":false,"indexName":"theIndexName","insideBoundingBox":[[47.3165,4.9665,47.3424,5.0201],[40.9234,2.1185,38.643,1.9916]],"insidePolygon":[[47.3165,4.9665,47.3424,5.0201,47.32,4.9],[40.9234,2.1185,38.643,1.9916,39.2587,2.0104]],"keepDiacriticsOnCharacters":"","length":1,"maxValuesPerFacet":0,"minProximity":1,"minWordSizefor1Typo":0,"minWordSizefor2Typos":0,"minimumAroundRadius":1,"naturalLanguages":[""],"numericFilters":[""],"offset":0,"optionalFilters":[""],"optionalWords":[""],"page":0,"percentileComputation":true,"personalizationImpact":0,"query":"","queryLanguages":[""],"queryType":"prefixAll","ranking":[""],"reRankingApplyFilter":[""],"relevancyStrictness":0,"removeStopWords":true,"removeWordsIfNoResults":"allOptional","renderingContent":{"facetOrdering":{"facets":{"order":["a","b"]},"values":{"a":{"order":["b"],"sortRemainingBy":"count"}}}},"replaceSynonymsInHighlight":true,"responseFields":[""],"restrictHighlightAndSnippetArrays":true,"restrictSearchableAttributes":[""],"ruleContexts":[""],"similarQuery":"","snippetEllipsisText":"","sortFacetValuesBy":"","sumOrFiltersScores":true,"synonyms":true,"tagFilters":[""],"type":"default","typoTolerance":"min","userToken":""}]}'), JSON.parse(req.body) - ) - end - - # get searchDictionaryEntries results with minimal parameters - def test_search_dictionary_entries0 - req = @client.search_dictionary_entries_with_http_info('compounds', SearchDictionaryEntriesParams.new(query: "foo")) - - assert_equal(:post, req.method) - assert_equal('/1/dictionaries/compounds/search', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"query":"foo"}'), JSON.parse(req.body)) - end - - # get searchDictionaryEntries results with all parameters - def test_search_dictionary_entries1 - req = @client.search_dictionary_entries_with_http_info('compounds', SearchDictionaryEntriesParams.new(query: "foo", page: 4, hits_per_page: 2, language: "fr")) - - assert_equal(:post, req.method) - assert_equal('/1/dictionaries/compounds/search', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"query":"foo","page":4,"hitsPerPage":2,"language":"fr"}'), JSON.parse(req.body)) - end - - # get searchForFacetValues results with minimal parameters - def test_search_for_facet_values0 - req = @client.search_for_facet_values_with_http_info("indexName", "facetName") - - assert_equal(:post, req.method) - assert_equal('/1/indexes/indexName/facets/facetName/query', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{}'), JSON.parse(req.body)) - end - - # get searchForFacetValues results with all parameters - def test_search_for_facet_values1 - req = @client.search_for_facet_values_with_http_info("indexName", "facetName", - SearchForFacetValuesRequest.new(params: "query=foo&facetFilters=['bar']", facet_query: "foo", max_facet_hits: 42)) - - assert_equal(:post, req.method) - assert_equal('/1/indexes/indexName/facets/facetName/query', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse(%q({"params":"query=foo&facetFilters=['bar']","facetQuery":"foo","maxFacetHits":42})), JSON.parse(req.body)) - end - - # searchRules0 - def test_search_rules0 - req = @client.search_rules_with_http_info("indexName", SearchRulesParams.new(query: "something")) - - assert_equal(:post, req.method) - assert_equal('/1/indexes/indexName/rules/search', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"query":"something"}'), JSON.parse(req.body)) - end - - # search with minimal parameters - def test_search_single_index0 - req = @client.search_single_index_with_http_info("indexName") - - assert_equal(:post, req.method) - assert_equal('/1/indexes/indexName/query', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{}'), JSON.parse(req.body)) - end - - # search with searchParams - def test_search_single_index1 - req = @client.search_single_index_with_http_info("indexName", SearchParamsObject.new(query: "myQuery", facet_filters: ["tags:algolia"])) - - assert_equal(:post, req.method) - assert_equal('/1/indexes/indexName/query', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"query":"myQuery","facetFilters":["tags:algolia"]}'), JSON.parse(req.body)) - end - - # searchSynonyms with minimal parameters - def test_search_synonyms0 - req = @client.search_synonyms_with_http_info("indexName") - - assert_equal(:post, req.method) - assert_equal('/1/indexes/indexName/synonyms/search', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{}'), JSON.parse(req.body)) - end - - # searchSynonyms with all parameters - def test_search_synonyms1 - req = @client.search_synonyms_with_http_info("indexName", 'altcorrection1', 10, 10, SearchSynonymsParams.new(query: "myQuery")) - - assert_equal(:post, req.method) - assert_equal('/1/indexes/indexName/synonyms/search', req.path) - assert(({ 'type': "altcorrection1", 'page': "10", 'hitsPerPage': "10" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"query":"myQuery"}'), JSON.parse(req.body)) - end - - # searchUserIds0 - def test_search_user_ids0 - req = @client.search_user_ids_with_http_info(SearchUserIdsParams.new(query: "test", cluster_name: "theClusterName", page: 5, hits_per_page: 10)) - - assert_equal(:post, req.method) - assert_equal('/1/clusters/mapping/search', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"query":"test","clusterName":"theClusterName","page":5,"hitsPerPage":10}'), JSON.parse(req.body)) - end - - # get setDictionarySettings results with minimal parameters - def test_set_dictionary_settings0 - req = @client.set_dictionary_settings_with_http_info(DictionarySettingsParams.new(disable_standard_entries: StandardEntries.new(plurals: { fr: false, en: false, - ru: true }))) - - assert_equal(:put, req.method) - assert_equal('/1/dictionaries/*/settings', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"disableStandardEntries":{"plurals":{"fr":false,"en":false,"ru":true}}}'), JSON.parse(req.body)) - end - - # get setDictionarySettings results with all parameters - def test_set_dictionary_settings1 - req = @client.set_dictionary_settings_with_http_info(DictionarySettingsParams.new(disable_standard_entries: StandardEntries.new( - plurals: { fr: false, en: false, ru: true }, stopwords: { fr: false }, compounds: { ru: true } - ))) - - assert_equal(:put, req.method) - assert_equal('/1/dictionaries/*/settings', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"disableStandardEntries":{"plurals":{"fr":false,"en":false,"ru":true},"stopwords":{"fr":false},"compounds":{"ru":true}}}'), JSON.parse(req.body)) - end - - # setSettings with minimal parameters - def test_set_settings0 - req = @client.set_settings_with_http_info("theIndexName", IndexSettings.new(pagination_limited_to: 10), true) - - assert_equal(:put, req.method) - assert_equal('/1/indexes/theIndexName/settings', req.path) - assert(({ 'forwardToReplicas': "true" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"paginationLimitedTo":10}'), JSON.parse(req.body)) - end - - # setSettings allow boolean `typoTolerance` - def test_set_settings1 - req = @client.set_settings_with_http_info("theIndexName", IndexSettings.new(typo_tolerance: true), true) - - assert_equal(:put, req.method) - assert_equal('/1/indexes/theIndexName/settings', req.path) - assert(({ 'forwardToReplicas': "true" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"typoTolerance":true}'), JSON.parse(req.body)) - end - - # setSettings allow enum `typoTolerance` - def test_set_settings2 - req = @client.set_settings_with_http_info("theIndexName", IndexSettings.new(typo_tolerance: 'min'), true) - - assert_equal(:put, req.method) - assert_equal('/1/indexes/theIndexName/settings', req.path) - assert(({ 'forwardToReplicas': "true" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"typoTolerance":"min"}'), JSON.parse(req.body)) - end - - # setSettings allow boolean `ignorePlurals` - def test_set_settings3 - req = @client.set_settings_with_http_info("theIndexName", IndexSettings.new(ignore_plurals: true), true) - - assert_equal(:put, req.method) - assert_equal('/1/indexes/theIndexName/settings', req.path) - assert(({ 'forwardToReplicas': "true" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"ignorePlurals":true}'), JSON.parse(req.body)) - end - - # setSettings allow list of string `ignorePlurals` - def test_set_settings4 - req = @client.set_settings_with_http_info("theIndexName", IndexSettings.new(ignore_plurals: ["algolia"]), true) - - assert_equal(:put, req.method) - assert_equal('/1/indexes/theIndexName/settings', req.path) - assert(({ 'forwardToReplicas': "true" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"ignorePlurals":["algolia"]}'), JSON.parse(req.body)) - end - - # setSettings allow boolean `removeStopWords` - def test_set_settings5 - req = @client.set_settings_with_http_info("theIndexName", IndexSettings.new(remove_stop_words: true), true) - - assert_equal(:put, req.method) - assert_equal('/1/indexes/theIndexName/settings', req.path) - assert(({ 'forwardToReplicas': "true" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"removeStopWords":true}'), JSON.parse(req.body)) - end - - # setSettings allow list of string `removeStopWords` - def test_set_settings6 - req = @client.set_settings_with_http_info("theIndexName", IndexSettings.new(remove_stop_words: ["algolia"]), true) - - assert_equal(:put, req.method) - assert_equal('/1/indexes/theIndexName/settings', req.path) - assert(({ 'forwardToReplicas': "true" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"removeStopWords":["algolia"]}'), JSON.parse(req.body)) - end - - # setSettings allow boolean `distinct` - def test_set_settings7 - req = @client.set_settings_with_http_info("theIndexName", IndexSettings.new(distinct: true), true) - - assert_equal(:put, req.method) - assert_equal('/1/indexes/theIndexName/settings', req.path) - assert(({ 'forwardToReplicas': "true" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"distinct":true}'), JSON.parse(req.body)) - end - - # setSettings allow integers for `distinct` - def test_set_settings8 - req = @client.set_settings_with_http_info("theIndexName", IndexSettings.new(distinct: 1), true) - - assert_equal(:put, req.method) - assert_equal('/1/indexes/theIndexName/settings', req.path) - assert(({ 'forwardToReplicas': "true" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"distinct":1}'), JSON.parse(req.body)) - end - - # setSettings allow all `indexSettings` - def test_set_settings9 - req = @client.set_settings_with_http_info("theIndexName", - IndexSettings.new(advanced_syntax: true, advanced_syntax_features: ['exactPhrase'], allow_compression_of_integer_array: true, allow_typos_on_numeric_tokens: true, - alternatives_as_exact: ['singleWordSynonym'], attribute_criteria_computed_by_min_proximity: true, attribute_for_distinct: "test", attributes_for_faceting: ["algolia"], attributes_to_highlight: ["algolia"], attributes_to_retrieve: ["algolia"], attributes_to_snippet: ["algolia"], attributes_to_transliterate: ["algolia"], camel_case_attributes: ["algolia"], custom_normalization: { algolia: { aloglia: "aglolia" } }, custom_ranking: ["algolia"], decompound_query: false, decompounded_attributes: { algolia: "aloglia" }, disable_exact_on_attributes: ["algolia"], disable_prefix_on_attributes: ["algolia"], disable_typo_tolerance_on_attributes: ["algolia"], disable_typo_tolerance_on_words: ["algolia"], distinct: 3, enable_personalization: true, enable_re_ranking: false, enable_rules: true, exact_on_single_word_query: 'attribute', highlight_pre_tag: "", highlight_post_tag: "", hits_per_page: 10, ignore_plurals: false, index_languages: ["algolia"], keep_diacritics_on_characters: "abc", max_facet_hits: 20, max_values_per_facet: 30, min_proximity: 6, min_word_sizefor1_typo: 5, min_word_sizefor2_typos: 11, mode: 'neuralSearch', numeric_attributes_for_filtering: ["algolia"], optional_words: ["myspace"], pagination_limited_to: 0, query_languages: ["algolia"], query_type: 'prefixLast', ranking: ["geo"], re_ranking_apply_filter: "mySearch:filters", relevancy_strictness: 10, remove_stop_words: false, remove_words_if_no_results: 'lastWords', rendering_content: RenderingContent.new(facet_ordering: FacetOrdering.new(facets: Facets.new(order: ["a", "b"]), values: { a: Value.new(order: ["b"], sort_remaining_by: 'count') })), replace_synonyms_in_highlight: true, replicas: [""], response_fields: ["algolia"], restrict_highlight_and_snippet_arrays: true, searchable_attributes: ["foo"], semantic_search: SemanticSearch.new(event_sources: ["foo"]), separators_to_index: "bar", snippet_ellipsis_text: "---", sort_facet_values_by: "date", typo_tolerance: false, unretrievable_attributes: ["foo"], user_data: { user: "data" })) - - assert_equal(:put, req.method) - assert_equal('/1/indexes/theIndexName/settings', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal( - JSON.parse('{"advancedSyntax":true,"advancedSyntaxFeatures":["exactPhrase"],"allowCompressionOfIntegerArray":true,"allowTyposOnNumericTokens":true,"alternativesAsExact":["singleWordSynonym"],"attributeCriteriaComputedByMinProximity":true,"attributeForDistinct":"test","attributesForFaceting":["algolia"],"attributesToHighlight":["algolia"],"attributesToRetrieve":["algolia"],"attributesToSnippet":["algolia"],"attributesToTransliterate":["algolia"],"camelCaseAttributes":["algolia"],"customNormalization":{"algolia":{"aloglia":"aglolia"}},"customRanking":["algolia"],"decompoundQuery":false,"decompoundedAttributes":{"algolia":"aloglia"},"disableExactOnAttributes":["algolia"],"disablePrefixOnAttributes":["algolia"],"disableTypoToleranceOnAttributes":["algolia"],"disableTypoToleranceOnWords":["algolia"],"distinct":3,"enablePersonalization":true,"enableReRanking":false,"enableRules":true,"exactOnSingleWordQuery":"attribute","highlightPreTag":"","highlightPostTag":"","hitsPerPage":10,"ignorePlurals":false,"indexLanguages":["algolia"],"keepDiacriticsOnCharacters":"abc","maxFacetHits":20,"maxValuesPerFacet":30,"minProximity":6,"minWordSizefor1Typo":5,"minWordSizefor2Typos":11,"mode":"neuralSearch","numericAttributesForFiltering":["algolia"],"optionalWords":["myspace"],"paginationLimitedTo":0,"queryLanguages":["algolia"],"queryType":"prefixLast","ranking":["geo"],"reRankingApplyFilter":"mySearch:filters","relevancyStrictness":10,"removeStopWords":false,"removeWordsIfNoResults":"lastWords","renderingContent":{"facetOrdering":{"facets":{"order":["a","b"]},"values":{"a":{"order":["b"],"sortRemainingBy":"count"}}}},"replaceSynonymsInHighlight":true,"replicas":[""],"responseFields":["algolia"],"restrictHighlightAndSnippetArrays":true,"searchableAttributes":["foo"],"semanticSearch":{"eventSources":["foo"]},"separatorsToIndex":"bar","snippetEllipsisText":"---","sortFacetValuesBy":"date","typoTolerance":false,"unretrievableAttributes":["foo"],"userData":{"user":"data"}}'), JSON.parse(req.body) - ) - end - - # updateApiKey0 - def test_update_api_key0 - req = @client.update_api_key_with_http_info("myApiKey", - ApiKey.new(acl: ['search', 'addObject'], validity: 300, max_queries_per_ip_per_hour: 100, max_hits_per_query: 20)) - - assert_equal(:put, req.method) - assert_equal('/1/keys/myApiKey', req.path) - assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) - assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) - assert_equal(JSON.parse('{"acl":["search","addObject"],"validity":300,"maxQueriesPerIPPerHour":100,"maxHitsPerQuery":20}'), JSON.parse(req.body)) - end -end diff --git a/tests/output/scala/src/test/scala/algoliasearch/methods/requests/AbtestingTest.scala b/tests/output/scala/src/test/scala/algoliasearch/methods/requests/AbtestingTest.scala deleted file mode 100644 index ca45bcf475..0000000000 --- a/tests/output/scala/src/test/scala/algoliasearch/methods/requests/AbtestingTest.scala +++ /dev/null @@ -1,590 +0,0 @@ -package algoliasearch.methods.requests - -import algoliasearch.EchoInterceptor -import algoliasearch.api.AbtestingClient -import algoliasearch.config.* -import algoliasearch.abtesting.* -import org.json4s.* -import org.json4s.native.JsonParser.* -import org.scalatest.funsuite.AnyFunSuite - -import scala.concurrent.duration.Duration -import scala.concurrent.{Await, ExecutionContextExecutor} - -class AbtestingTest extends AnyFunSuite { - implicit val ec: ExecutionContextExecutor = scala.concurrent.ExecutionContext.global - implicit val formats: Formats = org.json4s.DefaultFormats - - def testClient(): (AbtestingClient, EchoInterceptor) = { - val echo = EchoInterceptor() - ( - AbtestingClient( - appId = "appId", - apiKey = "apiKey", - region = Some("us"), - clientOptions = ClientOptions - .builder() - .withRequesterConfig(requester => requester.withInterceptor(echo)) - .build() - ), - echo - ) - } - - test("addABTests with minimal parameters") { - val (client, echo) = testClient() - val future = client.addABTests( - addABTestsRequest = AddABTestsRequest( - endAt = "2022-12-31T00:00:00.000Z", - name = "myABTest", - variants = Seq( - AbTestsVariant( - index = "AB_TEST_1", - trafficPercentage = 30 - ), - AbTestsVariant( - index = "AB_TEST_2", - trafficPercentage = 50 - ) - ) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/2/abtests") - assert(res.method == "POST") - val expectedBody = parse( - """{"endAt":"2022-12-31T00:00:00.000Z","name":"myABTest","variants":[{"index":"AB_TEST_1","trafficPercentage":30},{"index":"AB_TEST_2","trafficPercentage":50}]}""" - ) - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("allow del method for a custom path with minimal parameters") { - val (client, echo) = testClient() - val future = client.customDelete[JObject]( - path = "/test/minimal" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/minimal") - assert(res.method == "DELETE") - assert(res.body.isEmpty) - } - - test("allow del method for a custom path with all parameters") { - val (client, echo) = testClient() - val future = client.customDelete[JObject]( - path = "/test/all", - parameters = Some(Map("query" -> "parameters")) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/all") - assert(res.method == "DELETE") - assert(res.body.isEmpty) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("allow get method for a custom path with minimal parameters") { - val (client, echo) = testClient() - val future = client.customGet[JObject]( - path = "/test/minimal" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/minimal") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("allow get method for a custom path with all parameters") { - val (client, echo) = testClient() - val future = client.customGet[JObject]( - path = "/test/all", - parameters = Some(Map("query" -> "parameters")) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/all") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("allow post method for a custom path with minimal parameters") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/minimal" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/minimal") - assert(res.method == "POST") - val expectedBody = parse("""{}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("allow post method for a custom path with all parameters") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/all", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("body", JString("parameters"))))) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/all") - assert(res.method == "POST") - val expectedBody = parse("""{"body":"parameters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions can override default query parameters") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("query", "myQueryParameter") - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"myQueryParameter"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions merges query parameters with default ones") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("query2", "myQueryParameter") - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","query2":"myQueryParameter"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions can override default headers") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withHeader("x-algolia-api-key", "myApiKey") - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - val expectedHeaders = parse("""{"x-algolia-api-key":"myApiKey"}""").asInstanceOf[JObject].obj.toMap - val actualHeaders = res.headers - for ((k, v) <- expectedHeaders) { - assert(actualHeaders.contains(k)) - assert(actualHeaders(k) == v.asInstanceOf[JString].s) - } - } - - test("requestOptions merges headers with default ones") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withHeader("x-algolia-api-key", "myApiKey") - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - val expectedHeaders = parse("""{"x-algolia-api-key":"myApiKey"}""").asInstanceOf[JObject].obj.toMap - val actualHeaders = res.headers - for ((k, v) <- expectedHeaders) { - assert(actualHeaders.contains(k)) - assert(actualHeaders(k) == v.asInstanceOf[JString].s) - } - } - - test("requestOptions queryParameters accepts booleans") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("isItWorking", true) - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","isItWorking":"true"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions queryParameters accepts integers") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("myParam", 2) - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","myParam":"2"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions queryParameters accepts list of string") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("myParam", Seq("c", "d")) - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","myParam":"c,d"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions queryParameters accepts list of booleans") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("myParam", Seq(true, true, false)) - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","myParam":"true,true,false"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions queryParameters accepts list of integers") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("myParam", Seq(1, 2)) - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","myParam":"1,2"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("allow put method for a custom path with minimal parameters") { - val (client, echo) = testClient() - val future = client.customPut[JObject]( - path = "/test/minimal" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/minimal") - assert(res.method == "PUT") - val expectedBody = parse("""{}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("allow put method for a custom path with all parameters") { - val (client, echo) = testClient() - val future = client.customPut[JObject]( - path = "/test/all", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("body", JString("parameters"))))) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/all") - assert(res.method == "PUT") - val expectedBody = parse("""{"body":"parameters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("deleteABTest") { - val (client, echo) = testClient() - val future = client.deleteABTest( - id = 42 - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/2/abtests/42") - assert(res.method == "DELETE") - assert(res.body.isEmpty) - } - - test("getABTest") { - val (client, echo) = testClient() - val future = client.getABTest( - id = 42 - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/2/abtests/42") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("listABTests with minimal parameters") { - val (client, echo) = testClient() - val future = client.listABTests( - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/2/abtests") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("listABTests with parameters") { - val (client, echo) = testClient() - val future = client.listABTests( - offset = Some(42), - limit = Some(21), - indexPrefix = Some("foo"), - indexSuffix = Some("bar") - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/2/abtests") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = - parse("""{"offset":"42","limit":"21","indexPrefix":"foo","indexSuffix":"bar"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("stopABTest") { - val (client, echo) = testClient() - val future = client.stopABTest( - id = 42 - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/2/abtests/42/stop") - assert(res.method == "POST") - assert(res.body.contains("{}")) - } - -} diff --git a/tests/output/scala/src/test/scala/algoliasearch/methods/requests/AnalyticsTest.scala b/tests/output/scala/src/test/scala/algoliasearch/methods/requests/AnalyticsTest.scala deleted file mode 100644 index 935b30fe15..0000000000 --- a/tests/output/scala/src/test/scala/algoliasearch/methods/requests/AnalyticsTest.scala +++ /dev/null @@ -1,1338 +0,0 @@ -package algoliasearch.methods.requests - -import algoliasearch.EchoInterceptor -import algoliasearch.api.AnalyticsClient -import algoliasearch.config.* -import algoliasearch.analytics.* -import org.json4s.* -import org.json4s.native.JsonParser.* -import org.scalatest.funsuite.AnyFunSuite - -import scala.concurrent.duration.Duration -import scala.concurrent.{Await, ExecutionContextExecutor} - -class AnalyticsTest extends AnyFunSuite { - implicit val ec: ExecutionContextExecutor = scala.concurrent.ExecutionContext.global - implicit val formats: Formats = org.json4s.DefaultFormats - - def testClient(): (AnalyticsClient, EchoInterceptor) = { - val echo = EchoInterceptor() - ( - AnalyticsClient( - appId = "appId", - apiKey = "apiKey", - region = Some("us"), - clientOptions = ClientOptions - .builder() - .withRequesterConfig(requester => requester.withInterceptor(echo)) - .build() - ), - echo - ) - } - - test("allow del method for a custom path with minimal parameters") { - val (client, echo) = testClient() - val future = client.customDelete[JObject]( - path = "/test/minimal" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/minimal") - assert(res.method == "DELETE") - assert(res.body.isEmpty) - } - - test("allow del method for a custom path with all parameters") { - val (client, echo) = testClient() - val future = client.customDelete[JObject]( - path = "/test/all", - parameters = Some(Map("query" -> "parameters")) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/all") - assert(res.method == "DELETE") - assert(res.body.isEmpty) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("allow get method for a custom path with minimal parameters") { - val (client, echo) = testClient() - val future = client.customGet[JObject]( - path = "/test/minimal" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/minimal") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("allow get method for a custom path with all parameters") { - val (client, echo) = testClient() - val future = client.customGet[JObject]( - path = "/test/all", - parameters = Some(Map("query" -> "parameters")) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/all") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("allow post method for a custom path with minimal parameters") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/minimal" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/minimal") - assert(res.method == "POST") - val expectedBody = parse("""{}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("allow post method for a custom path with all parameters") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/all", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("body", JString("parameters"))))) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/all") - assert(res.method == "POST") - val expectedBody = parse("""{"body":"parameters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions can override default query parameters") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("query", "myQueryParameter") - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"myQueryParameter"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions merges query parameters with default ones") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("query2", "myQueryParameter") - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","query2":"myQueryParameter"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions can override default headers") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withHeader("x-algolia-api-key", "myApiKey") - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - val expectedHeaders = parse("""{"x-algolia-api-key":"myApiKey"}""").asInstanceOf[JObject].obj.toMap - val actualHeaders = res.headers - for ((k, v) <- expectedHeaders) { - assert(actualHeaders.contains(k)) - assert(actualHeaders(k) == v.asInstanceOf[JString].s) - } - } - - test("requestOptions merges headers with default ones") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withHeader("x-algolia-api-key", "myApiKey") - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - val expectedHeaders = parse("""{"x-algolia-api-key":"myApiKey"}""").asInstanceOf[JObject].obj.toMap - val actualHeaders = res.headers - for ((k, v) <- expectedHeaders) { - assert(actualHeaders.contains(k)) - assert(actualHeaders(k) == v.asInstanceOf[JString].s) - } - } - - test("requestOptions queryParameters accepts booleans") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("isItWorking", true) - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","isItWorking":"true"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions queryParameters accepts integers") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("myParam", 2) - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","myParam":"2"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions queryParameters accepts list of string") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("myParam", Seq("c", "d")) - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","myParam":"c,d"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions queryParameters accepts list of booleans") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("myParam", Seq(true, true, false)) - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","myParam":"true,true,false"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions queryParameters accepts list of integers") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("myParam", Seq(1, 2)) - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","myParam":"1,2"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("allow put method for a custom path with minimal parameters") { - val (client, echo) = testClient() - val future = client.customPut[JObject]( - path = "/test/minimal" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/minimal") - assert(res.method == "PUT") - val expectedBody = parse("""{}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("allow put method for a custom path with all parameters") { - val (client, echo) = testClient() - val future = client.customPut[JObject]( - path = "/test/all", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("body", JString("parameters"))))) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/all") - assert(res.method == "PUT") - val expectedBody = parse("""{"body":"parameters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("get getAverageClickPosition with minimal parameters") { - val (client, echo) = testClient() - val future = client.getAverageClickPosition( - index = "index" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/2/clicks/averageClickPosition") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = parse("""{"index":"index"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("get getAverageClickPosition with all parameters") { - val (client, echo) = testClient() - val future = client.getAverageClickPosition( - index = "index", - startDate = Some("1999-09-19"), - endDate = Some("2001-01-01"), - tags = Some("tag") - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/2/clicks/averageClickPosition") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = parse("""{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}""") - .asInstanceOf[JObject] - .obj - .toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("get getClickPositions with minimal parameters") { - val (client, echo) = testClient() - val future = client.getClickPositions( - index = "index" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/2/clicks/positions") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = parse("""{"index":"index"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("get getClickPositions with all parameters") { - val (client, echo) = testClient() - val future = client.getClickPositions( - index = "index", - startDate = Some("1999-09-19"), - endDate = Some("2001-01-01"), - tags = Some("tag") - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/2/clicks/positions") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = parse("""{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}""") - .asInstanceOf[JObject] - .obj - .toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("get getClickThroughRate with minimal parameters") { - val (client, echo) = testClient() - val future = client.getClickThroughRate( - index = "index" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/2/clicks/clickThroughRate") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = parse("""{"index":"index"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("get getClickThroughRate with all parameters") { - val (client, echo) = testClient() - val future = client.getClickThroughRate( - index = "index", - startDate = Some("1999-09-19"), - endDate = Some("2001-01-01"), - tags = Some("tag") - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/2/clicks/clickThroughRate") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = parse("""{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}""") - .asInstanceOf[JObject] - .obj - .toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("get getConversationRate with minimal parameters") { - val (client, echo) = testClient() - val future = client.getConversationRate( - index = "index" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/2/conversions/conversionRate") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = parse("""{"index":"index"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("get getConversationRate with all parameters") { - val (client, echo) = testClient() - val future = client.getConversationRate( - index = "index", - startDate = Some("1999-09-19"), - endDate = Some("2001-01-01"), - tags = Some("tag") - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/2/conversions/conversionRate") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = parse("""{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}""") - .asInstanceOf[JObject] - .obj - .toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("get getNoClickRate with minimal parameters") { - val (client, echo) = testClient() - val future = client.getNoClickRate( - index = "index" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/2/searches/noClickRate") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = parse("""{"index":"index"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("get getNoClickRate with all parameters") { - val (client, echo) = testClient() - val future = client.getNoClickRate( - index = "index", - startDate = Some("1999-09-19"), - endDate = Some("2001-01-01"), - tags = Some("tag") - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/2/searches/noClickRate") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = parse("""{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}""") - .asInstanceOf[JObject] - .obj - .toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("get getNoResultsRate with minimal parameters") { - val (client, echo) = testClient() - val future = client.getNoResultsRate( - index = "index" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/2/searches/noResultRate") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = parse("""{"index":"index"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("get getNoResultsRate with all parameters") { - val (client, echo) = testClient() - val future = client.getNoResultsRate( - index = "index", - startDate = Some("1999-09-19"), - endDate = Some("2001-01-01"), - tags = Some("tag") - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/2/searches/noResultRate") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = parse("""{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}""") - .asInstanceOf[JObject] - .obj - .toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("get getSearchesCount with minimal parameters") { - val (client, echo) = testClient() - val future = client.getSearchesCount( - index = "index" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/2/searches/count") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = parse("""{"index":"index"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("get getSearchesCount with all parameters") { - val (client, echo) = testClient() - val future = client.getSearchesCount( - index = "index", - startDate = Some("1999-09-19"), - endDate = Some("2001-01-01"), - tags = Some("tag") - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/2/searches/count") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = parse("""{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}""") - .asInstanceOf[JObject] - .obj - .toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("get getSearchesNoClicks with minimal parameters") { - val (client, echo) = testClient() - val future = client.getSearchesNoClicks( - index = "index" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/2/searches/noClicks") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = parse("""{"index":"index"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("get getSearchesNoClicks with all parameters") { - val (client, echo) = testClient() - val future = client.getSearchesNoClicks( - index = "index", - startDate = Some("1999-09-19"), - endDate = Some("2001-01-01"), - limit = Some(21), - offset = Some(42), - tags = Some("tag") - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/2/searches/noClicks") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = parse( - """{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}""" - ).asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("get getSearchesNoResults with minimal parameters") { - val (client, echo) = testClient() - val future = client.getSearchesNoResults( - index = "index" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/2/searches/noResults") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = parse("""{"index":"index"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("get getSearchesNoResults with all parameters") { - val (client, echo) = testClient() - val future = client.getSearchesNoResults( - index = "index", - startDate = Some("1999-09-19"), - endDate = Some("2001-01-01"), - limit = Some(21), - offset = Some(42), - tags = Some("tag") - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/2/searches/noResults") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = parse( - """{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}""" - ).asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("get getStatus with minimal parameters") { - val (client, echo) = testClient() - val future = client.getStatus( - index = "index" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/2/status") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = parse("""{"index":"index"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("get getTopCountries with minimal parameters") { - val (client, echo) = testClient() - val future = client.getTopCountries( - index = "index" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/2/countries") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = parse("""{"index":"index"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("get getTopCountries with all parameters") { - val (client, echo) = testClient() - val future = client.getTopCountries( - index = "index", - startDate = Some("1999-09-19"), - endDate = Some("2001-01-01"), - limit = Some(21), - offset = Some(42), - tags = Some("tag") - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/2/countries") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = parse( - """{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}""" - ).asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("get getTopFilterAttributes with minimal parameters") { - val (client, echo) = testClient() - val future = client.getTopFilterAttributes( - index = "index" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/2/filters") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = parse("""{"index":"index"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("get getTopFilterAttributes with all parameters") { - val (client, echo) = testClient() - val future = client.getTopFilterAttributes( - index = "index", - search = Some("mySearch"), - startDate = Some("1999-09-19"), - endDate = Some("2001-01-01"), - limit = Some(21), - offset = Some(42), - tags = Some("tag") - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/2/filters") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = parse( - """{"index":"index","search":"mySearch","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}""" - ).asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("get getTopFilterForAttribute with minimal parameters") { - val (client, echo) = testClient() - val future = client.getTopFilterForAttribute( - attribute = "myAttribute", - index = "index" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/2/filters/myAttribute") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = parse("""{"index":"index"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("get getTopFilterForAttribute with minimal parameters and multiple attributes") { - val (client, echo) = testClient() - val future = client.getTopFilterForAttribute( - attribute = "myAttribute1,myAttribute2", - index = "index" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/2/filters/myAttribute1%2CmyAttribute2") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = parse("""{"index":"index"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("get getTopFilterForAttribute with all parameters") { - val (client, echo) = testClient() - val future = client.getTopFilterForAttribute( - attribute = "myAttribute", - index = "index", - search = Some("mySearch"), - startDate = Some("1999-09-19"), - endDate = Some("2001-01-01"), - limit = Some(21), - offset = Some(42), - tags = Some("tag") - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/2/filters/myAttribute") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = parse( - """{"index":"index","search":"mySearch","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}""" - ).asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("get getTopFilterForAttribute with all parameters and multiple attributes") { - val (client, echo) = testClient() - val future = client.getTopFilterForAttribute( - attribute = "myAttribute1,myAttribute2", - index = "index", - search = Some("mySearch"), - startDate = Some("1999-09-19"), - endDate = Some("2001-01-01"), - limit = Some(21), - offset = Some(42), - tags = Some("tag") - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/2/filters/myAttribute1%2CmyAttribute2") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = parse( - """{"index":"index","search":"mySearch","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}""" - ).asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("get getTopFiltersNoResults with minimal parameters") { - val (client, echo) = testClient() - val future = client.getTopFiltersNoResults( - index = "index" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/2/filters/noResults") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = parse("""{"index":"index"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("get getTopFiltersNoResults with all parameters") { - val (client, echo) = testClient() - val future = client.getTopFiltersNoResults( - index = "index", - search = Some("mySearch"), - startDate = Some("1999-09-19"), - endDate = Some("2001-01-01"), - limit = Some(21), - offset = Some(42), - tags = Some("tag") - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/2/filters/noResults") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = parse( - """{"index":"index","search":"mySearch","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}""" - ).asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("get getTopHits with minimal parameters") { - val (client, echo) = testClient() - val future = client.getTopHits( - index = "index" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/2/hits") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = parse("""{"index":"index"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("get getTopHits with all parameters") { - val (client, echo) = testClient() - val future = client.getTopHits( - index = "index", - search = Some("mySearch"), - clickAnalytics = Some(true), - startDate = Some("1999-09-19"), - endDate = Some("2001-01-01"), - limit = Some(21), - offset = Some(42), - tags = Some("tag") - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/2/hits") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = parse( - """{"index":"index","search":"mySearch","clickAnalytics":"true","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}""" - ).asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("get getTopSearches with minimal parameters") { - val (client, echo) = testClient() - val future = client.getTopSearches( - index = "index" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/2/searches") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = parse("""{"index":"index"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("get getTopSearches with all parameters") { - val (client, echo) = testClient() - val future = client.getTopSearches( - index = "index", - clickAnalytics = Some(true), - startDate = Some("1999-09-19"), - endDate = Some("2001-01-01"), - orderBy = Some(OrderBy.withName("searchCount")), - direction = Some(Direction.withName("asc")), - limit = Some(21), - offset = Some(42), - tags = Some("tag") - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/2/searches") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = parse( - """{"index":"index","clickAnalytics":"true","startDate":"1999-09-19","endDate":"2001-01-01","orderBy":"searchCount","direction":"asc","limit":"21","offset":"42","tags":"tag"}""" - ).asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("get getUsersCount with minimal parameters") { - val (client, echo) = testClient() - val future = client.getUsersCount( - index = "index" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/2/users/count") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = parse("""{"index":"index"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("get getUsersCount with all parameters") { - val (client, echo) = testClient() - val future = client.getUsersCount( - index = "index", - startDate = Some("1999-09-19"), - endDate = Some("2001-01-01"), - tags = Some("tag") - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/2/users/count") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = parse("""{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}""") - .asInstanceOf[JObject] - .obj - .toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - -} diff --git a/tests/output/scala/src/test/scala/algoliasearch/methods/requests/IngestionTest.scala b/tests/output/scala/src/test/scala/algoliasearch/methods/requests/IngestionTest.scala deleted file mode 100644 index 569dfa8076..0000000000 --- a/tests/output/scala/src/test/scala/algoliasearch/methods/requests/IngestionTest.scala +++ /dev/null @@ -1,1100 +0,0 @@ -package algoliasearch.methods.requests - -import algoliasearch.EchoInterceptor -import algoliasearch.api.IngestionClient -import algoliasearch.config.* -import algoliasearch.ingestion.* -import org.json4s.* -import org.json4s.native.JsonParser.* -import org.scalatest.funsuite.AnyFunSuite - -import scala.concurrent.duration.Duration -import scala.concurrent.{Await, ExecutionContextExecutor} - -class IngestionTest extends AnyFunSuite { - implicit val ec: ExecutionContextExecutor = scala.concurrent.ExecutionContext.global - implicit val formats: Formats = org.json4s.DefaultFormats - - def testClient(): (IngestionClient, EchoInterceptor) = { - val echo = EchoInterceptor() - ( - IngestionClient( - appId = "appId", - apiKey = "apiKey", - region = "us", - clientOptions = ClientOptions - .builder() - .withRequesterConfig(requester => requester.withInterceptor(echo)) - .build() - ), - echo - ) - } - - test("createAuthenticationOAuth") { - val (client, echo) = testClient() - val future = client.createAuthentication( - authenticationCreate = AuthenticationCreate( - `type` = AuthenticationType.withName("oauth"), - name = "authName", - input = AuthOAuth( - url = "http://test.oauth", - client_id = "myID", - client_secret = "mySecret" - ) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/authentications") - assert(res.method == "POST") - val expectedBody = parse( - """{"type":"oauth","name":"authName","input":{"url":"http://test.oauth","client_id":"myID","client_secret":"mySecret"}}""" - ) - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("createAuthenticationAlgolia") { - val (client, echo) = testClient() - val future = client.createAuthentication( - authenticationCreate = AuthenticationCreate( - `type` = AuthenticationType.withName("algolia"), - name = "authName", - input = AuthAlgolia( - appID = "myappID", - apiKey = "randomApiKey" - ) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/authentications") - assert(res.method == "POST") - val expectedBody = - parse("""{"type":"algolia","name":"authName","input":{"appID":"myappID","apiKey":"randomApiKey"}}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("createDestination") { - val (client, echo) = testClient() - val future = client.createDestination( - destinationCreate = DestinationCreate( - `type` = DestinationType.withName("search"), - name = "destinationName", - input = DestinationIndexPrefix( - indexPrefix = "prefix_" - ), - authenticationID = Some("6c02aeb1-775e-418e-870b-1faccd4b2c0f") - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/destinations") - assert(res.method == "POST") - val expectedBody = parse( - """{"type":"search","name":"destinationName","input":{"indexPrefix":"prefix_"},"authenticationID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}""" - ) - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("createSource") { - val (client, echo) = testClient() - val future = client.createSource( - sourceCreate = SourceCreate( - `type` = SourceType.withName("commercetools"), - name = "sourceName", - input = SourceCommercetools( - storeKeys = Some(Seq("myStore")), - locales = Some(Seq("de")), - url = "http://commercetools.com", - projectKey = "keyID" - ), - authenticationID = Some("6c02aeb1-775e-418e-870b-1faccd4b2c0f") - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/sources") - assert(res.method == "POST") - val expectedBody = parse( - """{"type":"commercetools","name":"sourceName","input":{"storeKeys":["myStore"],"locales":["de"],"url":"http://commercetools.com","projectKey":"keyID"},"authenticationID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}""" - ) - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("createTaskOnDemand") { - val (client, echo) = testClient() - val future = client.createTask( - taskCreate = TaskCreate( - sourceID = "search", - destinationID = "destinationName", - trigger = OnDemandTriggerInput( - `type` = OnDemandTriggerType.withName("onDemand") - ), - action = ActionType.withName("replace") - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/tasks") - assert(res.method == "POST") - val expectedBody = parse( - """{"sourceID":"search","destinationID":"destinationName","trigger":{"type":"onDemand"},"action":"replace"}""" - ) - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("createTaskSchedule") { - val (client, echo) = testClient() - val future = client.createTask( - taskCreate = TaskCreate( - sourceID = "search", - destinationID = "destinationName", - trigger = ScheduleTriggerInput( - `type` = ScheduleTriggerType.withName("schedule"), - cron = "* * * * *" - ), - action = ActionType.withName("replace") - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/tasks") - assert(res.method == "POST") - val expectedBody = parse( - """{"sourceID":"search","destinationID":"destinationName","trigger":{"type":"schedule","cron":"* * * * *"},"action":"replace"}""" - ) - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("createTaskSubscription") { - val (client, echo) = testClient() - val future = client.createTask( - taskCreate = TaskCreate( - sourceID = "search", - destinationID = "destinationName", - trigger = OnDemandTriggerInput( - `type` = OnDemandTriggerType.withName("onDemand") - ), - action = ActionType.withName("replace") - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/tasks") - assert(res.method == "POST") - val expectedBody = parse( - """{"sourceID":"search","destinationID":"destinationName","trigger":{"type":"onDemand"},"action":"replace"}""" - ) - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("allow del method for a custom path with minimal parameters") { - val (client, echo) = testClient() - val future = client.customDelete[JObject]( - path = "/test/minimal" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/minimal") - assert(res.method == "DELETE") - assert(res.body.isEmpty) - } - - test("allow del method for a custom path with all parameters") { - val (client, echo) = testClient() - val future = client.customDelete[JObject]( - path = "/test/all", - parameters = Some(Map("query" -> "parameters")) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/all") - assert(res.method == "DELETE") - assert(res.body.isEmpty) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("allow get method for a custom path with minimal parameters") { - val (client, echo) = testClient() - val future = client.customGet[JObject]( - path = "/test/minimal" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/minimal") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("allow get method for a custom path with all parameters") { - val (client, echo) = testClient() - val future = client.customGet[JObject]( - path = "/test/all", - parameters = Some(Map("query" -> "parameters")) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/all") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("allow post method for a custom path with minimal parameters") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/minimal" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/minimal") - assert(res.method == "POST") - val expectedBody = parse("""{}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("allow post method for a custom path with all parameters") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/all", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("body", JString("parameters"))))) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/all") - assert(res.method == "POST") - val expectedBody = parse("""{"body":"parameters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions can override default query parameters") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("query", "myQueryParameter") - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"myQueryParameter"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions merges query parameters with default ones") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("query2", "myQueryParameter") - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","query2":"myQueryParameter"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions can override default headers") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withHeader("x-algolia-api-key", "myApiKey") - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - val expectedHeaders = parse("""{"x-algolia-api-key":"myApiKey"}""").asInstanceOf[JObject].obj.toMap - val actualHeaders = res.headers - for ((k, v) <- expectedHeaders) { - assert(actualHeaders.contains(k)) - assert(actualHeaders(k) == v.asInstanceOf[JString].s) - } - } - - test("requestOptions merges headers with default ones") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withHeader("x-algolia-api-key", "myApiKey") - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - val expectedHeaders = parse("""{"x-algolia-api-key":"myApiKey"}""").asInstanceOf[JObject].obj.toMap - val actualHeaders = res.headers - for ((k, v) <- expectedHeaders) { - assert(actualHeaders.contains(k)) - assert(actualHeaders(k) == v.asInstanceOf[JString].s) - } - } - - test("requestOptions queryParameters accepts booleans") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("isItWorking", true) - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","isItWorking":"true"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions queryParameters accepts integers") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("myParam", 2) - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","myParam":"2"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions queryParameters accepts list of string") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("myParam", Seq("c", "d")) - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","myParam":"c,d"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions queryParameters accepts list of booleans") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("myParam", Seq(true, true, false)) - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","myParam":"true,true,false"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions queryParameters accepts list of integers") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("myParam", Seq(1, 2)) - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","myParam":"1,2"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("allow put method for a custom path with minimal parameters") { - val (client, echo) = testClient() - val future = client.customPut[JObject]( - path = "/test/minimal" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/minimal") - assert(res.method == "PUT") - val expectedBody = parse("""{}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("allow put method for a custom path with all parameters") { - val (client, echo) = testClient() - val future = client.customPut[JObject]( - path = "/test/all", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("body", JString("parameters"))))) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/all") - assert(res.method == "PUT") - val expectedBody = parse("""{"body":"parameters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("deleteAuthentication") { - val (client, echo) = testClient() - val future = client.deleteAuthentication( - authenticationID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/authentications/6c02aeb1-775e-418e-870b-1faccd4b2c0f") - assert(res.method == "DELETE") - assert(res.body.isEmpty) - } - - test("deleteDestination") { - val (client, echo) = testClient() - val future = client.deleteDestination( - destinationID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/destinations/6c02aeb1-775e-418e-870b-1faccd4b2c0f") - assert(res.method == "DELETE") - assert(res.body.isEmpty) - } - - test("deleteSource") { - val (client, echo) = testClient() - val future = client.deleteSource( - sourceID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f") - assert(res.method == "DELETE") - assert(res.body.isEmpty) - } - - test("deleteTask") { - val (client, echo) = testClient() - val future = client.deleteTask( - taskID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f") - assert(res.method == "DELETE") - assert(res.body.isEmpty) - } - - test("disableTask") { - val (client, echo) = testClient() - val future = client.disableTask( - taskID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f/disable") - assert(res.method == "PUT") - assert(res.body.contains("{}")) - } - - test("enableTask") { - val (client, echo) = testClient() - val future = client.enableTask( - taskID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f/enable") - assert(res.method == "PUT") - assert(res.body.contains("{}")) - } - - test("getAuthentication") { - val (client, echo) = testClient() - val future = client.getAuthentication( - authenticationID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/authentications/6c02aeb1-775e-418e-870b-1faccd4b2c0f") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("getAuthentications") { - val (client, echo) = testClient() - val future = client.getAuthentications( - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/authentications") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("getDestination") { - val (client, echo) = testClient() - val future = client.getDestination( - destinationID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/destinations/6c02aeb1-775e-418e-870b-1faccd4b2c0f") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("getDestinations") { - val (client, echo) = testClient() - val future = client.getDestinations( - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/destinations") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("getDockerSourceStreams") { - val (client, echo) = testClient() - val future = client.getDockerSourceStreams( - sourceID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f/discover") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("getEvent") { - val (client, echo) = testClient() - val future = client.getEvent( - runID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", - eventID = "6c02aeb1-775e-418e-870b-1faccd4b2c0c" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/runs/6c02aeb1-775e-418e-870b-1faccd4b2c0f/events/6c02aeb1-775e-418e-870b-1faccd4b2c0c") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("getEvents") { - val (client, echo) = testClient() - val future = client.getEvents( - runID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/runs/6c02aeb1-775e-418e-870b-1faccd4b2c0f/events") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("getRun") { - val (client, echo) = testClient() - val future = client.getRun( - runID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/runs/6c02aeb1-775e-418e-870b-1faccd4b2c0f") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("getRuns") { - val (client, echo) = testClient() - val future = client.getRuns( - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/runs") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("getSource") { - val (client, echo) = testClient() - val future = client.getSource( - sourceID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("getSources") { - val (client, echo) = testClient() - val future = client.getSources( - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/sources") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("getTask") { - val (client, echo) = testClient() - val future = client.getTask( - taskID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("getTasks") { - val (client, echo) = testClient() - val future = client.getTasks( - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/tasks") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("runTask") { - val (client, echo) = testClient() - val future = client.runTask( - taskID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f/run") - assert(res.method == "POST") - assert(res.body.contains("{}")) - } - - test("searchAuthentications") { - val (client, echo) = testClient() - val future = client.searchAuthentications( - authenticationSearch = AuthenticationSearch( - authenticationIDs = Seq("6c02aeb1-775e-418e-870b-1faccd4b2c0f", "947ac9c4-7e58-4c87-b1e7-14a68e99699a") - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/authentications/search") - assert(res.method == "POST") - val expectedBody = - parse("""{"authenticationIDs":["6c02aeb1-775e-418e-870b-1faccd4b2c0f","947ac9c4-7e58-4c87-b1e7-14a68e99699a"]}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("searchDestinations") { - val (client, echo) = testClient() - val future = client.searchDestinations( - destinationSearch = DestinationSearch( - destinationIDs = Seq("6c02aeb1-775e-418e-870b-1faccd4b2c0f", "947ac9c4-7e58-4c87-b1e7-14a68e99699a") - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/destinations/search") - assert(res.method == "POST") - val expectedBody = - parse("""{"destinationIDs":["6c02aeb1-775e-418e-870b-1faccd4b2c0f","947ac9c4-7e58-4c87-b1e7-14a68e99699a"]}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("searchSources") { - val (client, echo) = testClient() - val future = client.searchSources( - sourceSearch = SourceSearch( - sourceIDs = Seq("6c02aeb1-775e-418e-870b-1faccd4b2c0f", "947ac9c4-7e58-4c87-b1e7-14a68e99699a") - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/sources/search") - assert(res.method == "POST") - val expectedBody = - parse("""{"sourceIDs":["6c02aeb1-775e-418e-870b-1faccd4b2c0f","947ac9c4-7e58-4c87-b1e7-14a68e99699a"]}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("searchTasks") { - val (client, echo) = testClient() - val future = client.searchTasks( - taskSearch = TaskSearch( - taskIDs = Seq("6c02aeb1-775e-418e-870b-1faccd4b2c0f", "947ac9c4-7e58-4c87-b1e7-14a68e99699a") - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/tasks/search") - assert(res.method == "POST") - val expectedBody = - parse("""{"taskIDs":["6c02aeb1-775e-418e-870b-1faccd4b2c0f","947ac9c4-7e58-4c87-b1e7-14a68e99699a"]}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("triggerDockerSourceDiscover") { - val (client, echo) = testClient() - val future = client.triggerDockerSourceDiscover( - sourceID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f/discover") - assert(res.method == "POST") - assert(res.body.contains("{}")) - } - - test("updateAuthentication") { - val (client, echo) = testClient() - val future = client.updateAuthentication( - authenticationID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", - authenticationUpdate = AuthenticationUpdate( - name = Some("newName") - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/authentications/6c02aeb1-775e-418e-870b-1faccd4b2c0f") - assert(res.method == "PATCH") - val expectedBody = parse("""{"name":"newName"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("updateDestination") { - val (client, echo) = testClient() - val future = client.updateDestination( - destinationID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", - destinationUpdate = DestinationUpdate( - name = Some("newName") - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/destinations/6c02aeb1-775e-418e-870b-1faccd4b2c0f") - assert(res.method == "PATCH") - val expectedBody = parse("""{"name":"newName"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("updateSource") { - val (client, echo) = testClient() - val future = client.updateSource( - sourceID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", - sourceUpdate = SourceUpdate( - name = Some("newName") - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f") - assert(res.method == "PATCH") - val expectedBody = parse("""{"name":"newName"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("updateTask") { - val (client, echo) = testClient() - val future = client.updateTask( - taskID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", - taskUpdate = TaskUpdate( - enabled = Some(false) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f") - assert(res.method == "PATCH") - val expectedBody = parse("""{"enabled":false}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - -} diff --git a/tests/output/scala/src/test/scala/algoliasearch/methods/requests/InsightsTest.scala b/tests/output/scala/src/test/scala/algoliasearch/methods/requests/InsightsTest.scala deleted file mode 100644 index 272633b539..0000000000 --- a/tests/output/scala/src/test/scala/algoliasearch/methods/requests/InsightsTest.scala +++ /dev/null @@ -1,659 +0,0 @@ -package algoliasearch.methods.requests - -import algoliasearch.EchoInterceptor -import algoliasearch.api.InsightsClient -import algoliasearch.config.* -import algoliasearch.insights.* -import org.json4s.* -import org.json4s.native.JsonParser.* -import org.scalatest.funsuite.AnyFunSuite - -import scala.concurrent.duration.Duration -import scala.concurrent.{Await, ExecutionContextExecutor} - -class InsightsTest extends AnyFunSuite { - implicit val ec: ExecutionContextExecutor = scala.concurrent.ExecutionContext.global - implicit val formats: Formats = org.json4s.DefaultFormats - - def testClient(): (InsightsClient, EchoInterceptor) = { - val echo = EchoInterceptor() - ( - InsightsClient( - appId = "appId", - apiKey = "apiKey", - region = Some("us"), - clientOptions = ClientOptions - .builder() - .withRequesterConfig(requester => requester.withInterceptor(echo)) - .build() - ), - echo - ) - } - - test("allow del method for a custom path with minimal parameters") { - val (client, echo) = testClient() - val future = client.customDelete[JObject]( - path = "/test/minimal" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/minimal") - assert(res.method == "DELETE") - assert(res.body.isEmpty) - } - - test("allow del method for a custom path with all parameters") { - val (client, echo) = testClient() - val future = client.customDelete[JObject]( - path = "/test/all", - parameters = Some(Map("query" -> "parameters")) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/all") - assert(res.method == "DELETE") - assert(res.body.isEmpty) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("allow get method for a custom path with minimal parameters") { - val (client, echo) = testClient() - val future = client.customGet[JObject]( - path = "/test/minimal" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/minimal") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("allow get method for a custom path with all parameters") { - val (client, echo) = testClient() - val future = client.customGet[JObject]( - path = "/test/all", - parameters = Some(Map("query" -> "parameters")) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/all") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("allow post method for a custom path with minimal parameters") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/minimal" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/minimal") - assert(res.method == "POST") - val expectedBody = parse("""{}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("allow post method for a custom path with all parameters") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/all", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("body", JString("parameters"))))) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/all") - assert(res.method == "POST") - val expectedBody = parse("""{"body":"parameters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions can override default query parameters") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("query", "myQueryParameter") - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"myQueryParameter"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions merges query parameters with default ones") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("query2", "myQueryParameter") - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","query2":"myQueryParameter"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions can override default headers") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withHeader("x-algolia-api-key", "myApiKey") - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - val expectedHeaders = parse("""{"x-algolia-api-key":"myApiKey"}""").asInstanceOf[JObject].obj.toMap - val actualHeaders = res.headers - for ((k, v) <- expectedHeaders) { - assert(actualHeaders.contains(k)) - assert(actualHeaders(k) == v.asInstanceOf[JString].s) - } - } - - test("requestOptions merges headers with default ones") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withHeader("x-algolia-api-key", "myApiKey") - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - val expectedHeaders = parse("""{"x-algolia-api-key":"myApiKey"}""").asInstanceOf[JObject].obj.toMap - val actualHeaders = res.headers - for ((k, v) <- expectedHeaders) { - assert(actualHeaders.contains(k)) - assert(actualHeaders(k) == v.asInstanceOf[JString].s) - } - } - - test("requestOptions queryParameters accepts booleans") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("isItWorking", true) - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","isItWorking":"true"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions queryParameters accepts integers") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("myParam", 2) - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","myParam":"2"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions queryParameters accepts list of string") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("myParam", Seq("c", "d")) - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","myParam":"c,d"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions queryParameters accepts list of booleans") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("myParam", Seq(true, true, false)) - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","myParam":"true,true,false"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions queryParameters accepts list of integers") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("myParam", Seq(1, 2)) - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","myParam":"1,2"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("allow put method for a custom path with minimal parameters") { - val (client, echo) = testClient() - val future = client.customPut[JObject]( - path = "/test/minimal" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/minimal") - assert(res.method == "PUT") - val expectedBody = parse("""{}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("allow put method for a custom path with all parameters") { - val (client, echo) = testClient() - val future = client.customPut[JObject]( - path = "/test/all", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("body", JString("parameters"))))) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/all") - assert(res.method == "PUT") - val expectedBody = parse("""{"body":"parameters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("pushEvents0") { - val (client, echo) = testClient() - val future = client.pushEvents( - insightsEvents = InsightsEvents( - events = Seq( - ClickedObjectIDsAfterSearch( - eventType = ClickEvent.withName("click"), - eventName = "Product Clicked", - index = "products", - userToken = "user-123456", - authenticatedUserToken = Some("user-123456"), - timestamp = Some(1641290601962L), - objectIDs = Seq("9780545139700", "9780439784542"), - queryID = "43b15df305339e827f0ac0bdc5ebcaa7", - positions = Seq(7, 6) - ) - ) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/events") - assert(res.method == "POST") - val expectedBody = parse( - """{"events":[{"eventType":"click","eventName":"Product Clicked","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"queryID":"43b15df305339e827f0ac0bdc5ebcaa7","positions":[7,6]}]}""" - ) - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("Many events type") { - val (client, echo) = testClient() - val future = client.pushEvents( - insightsEvents = InsightsEvents( - events = Seq( - ConvertedObjectIDsAfterSearch( - eventType = ConversionEvent.withName("conversion"), - eventName = "Product Purchased", - index = "products", - userToken = "user-123456", - authenticatedUserToken = Some("user-123456"), - timestamp = Some(1641290601962L), - objectIDs = Seq("9780545139700", "9780439784542"), - queryID = "43b15df305339e827f0ac0bdc5ebcaa7" - ), - ViewedObjectIDs( - eventType = ViewEvent.withName("view"), - eventName = "Product Detail Page Viewed", - index = "products", - userToken = "user-123456", - authenticatedUserToken = Some("user-123456"), - timestamp = Some(1641290601962L), - objectIDs = Seq("9780545139700", "9780439784542") - ) - ) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/events") - assert(res.method == "POST") - val expectedBody = parse( - """{"events":[{"eventType":"conversion","eventName":"Product Purchased","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"queryID":"43b15df305339e827f0ac0bdc5ebcaa7"},{"eventType":"view","eventName":"Product Detail Page Viewed","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"]}]}""" - ) - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("ConvertedObjectIDsAfterSearch") { - val (client, echo) = testClient() - val future = client.pushEvents( - insightsEvents = InsightsEvents( - events = Seq( - ConvertedObjectIDsAfterSearch( - eventType = ConversionEvent.withName("conversion"), - eventName = "Product Purchased", - index = "products", - userToken = "user-123456", - authenticatedUserToken = Some("user-123456"), - timestamp = Some(1641290601962L), - objectIDs = Seq("9780545139700", "9780439784542"), - queryID = "43b15df305339e827f0ac0bdc5ebcaa7" - ) - ) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/events") - assert(res.method == "POST") - val expectedBody = parse( - """{"events":[{"eventType":"conversion","eventName":"Product Purchased","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"queryID":"43b15df305339e827f0ac0bdc5ebcaa7"}]}""" - ) - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("ViewedObjectIDs") { - val (client, echo) = testClient() - val future = client.pushEvents( - insightsEvents = InsightsEvents( - events = Seq( - ViewedObjectIDs( - eventType = ViewEvent.withName("view"), - eventName = "Product Detail Page Viewed", - index = "products", - userToken = "user-123456", - authenticatedUserToken = Some("user-123456"), - timestamp = Some(1641290601962L), - objectIDs = Seq("9780545139700", "9780439784542") - ) - ) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/events") - assert(res.method == "POST") - val expectedBody = parse( - """{"events":[{"eventType":"view","eventName":"Product Detail Page Viewed","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"]}]}""" - ) - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("AddedToCartObjectIDs") { - val (client, echo) = testClient() - val future = client.pushEvents( - insightsEvents = InsightsEvents( - events = Seq( - AddedToCartObjectIDsAfterSearch( - eventType = ConversionEvent.withName("conversion"), - eventSubtype = AddToCartEvent.withName("addToCart"), - eventName = "Product Added To Cart", - index = "products", - queryID = "43b15df305339e827f0ac0bdc5ebcaa7", - userToken = "user-123456", - authenticatedUserToken = Some("user-123456"), - timestamp = Some(1641290601962L), - objectIDs = Seq("9780545139700", "9780439784542"), - objectData = Some( - Seq( - ObjectDataAfterSearch( - price = Some(Price(19.99)), - quantity = Some(10), - discount = Some(Discount(2.5)) - ), - ObjectDataAfterSearch( - price = Some(Price("8$")), - quantity = Some(7), - discount = Some(Discount("30%")) - ) - ) - ), - currency = Some("USD") - ) - ) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/events") - assert(res.method == "POST") - val expectedBody = parse( - """{"events":[{"eventType":"conversion","eventSubtype":"addToCart","eventName":"Product Added To Cart","index":"products","queryID":"43b15df305339e827f0ac0bdc5ebcaa7","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"objectData":[{"price":19.99,"quantity":10,"discount":2.5},{"price":"8$","quantity":7,"discount":"30%"}],"currency":"USD"}]}""" - ) - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - -} diff --git a/tests/output/scala/src/test/scala/algoliasearch/methods/requests/MonitoringTest.scala b/tests/output/scala/src/test/scala/algoliasearch/methods/requests/MonitoringTest.scala deleted file mode 100644 index 74f6e2d2d0..0000000000 --- a/tests/output/scala/src/test/scala/algoliasearch/methods/requests/MonitoringTest.scala +++ /dev/null @@ -1,602 +0,0 @@ -package algoliasearch.methods.requests - -import algoliasearch.EchoInterceptor -import algoliasearch.api.MonitoringClient -import algoliasearch.config.* -import algoliasearch.monitoring.* -import org.json4s.* -import org.json4s.native.JsonParser.* -import org.scalatest.funsuite.AnyFunSuite - -import scala.concurrent.duration.Duration -import scala.concurrent.{Await, ExecutionContextExecutor} - -class MonitoringTest extends AnyFunSuite { - implicit val ec: ExecutionContextExecutor = scala.concurrent.ExecutionContext.global - implicit val formats: Formats = org.json4s.DefaultFormats - - def testClient(): (MonitoringClient, EchoInterceptor) = { - val echo = EchoInterceptor() - ( - MonitoringClient( - appId = "appId", - apiKey = "apiKey", - clientOptions = ClientOptions - .builder() - .withRequesterConfig(requester => requester.withInterceptor(echo)) - .build() - ), - echo - ) - } - - test("allow del method for a custom path with minimal parameters") { - val (client, echo) = testClient() - val future = client.customDelete[JObject]( - path = "/test/minimal" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/minimal") - assert(res.method == "DELETE") - assert(res.body.isEmpty) - } - - test("allow del method for a custom path with all parameters") { - val (client, echo) = testClient() - val future = client.customDelete[JObject]( - path = "/test/all", - parameters = Some(Map("query" -> "parameters")) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/all") - assert(res.method == "DELETE") - assert(res.body.isEmpty) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("allow get method for a custom path with minimal parameters") { - val (client, echo) = testClient() - val future = client.customGet[JObject]( - path = "/test/minimal" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/minimal") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("allow get method for a custom path with all parameters") { - val (client, echo) = testClient() - val future = client.customGet[JObject]( - path = "/test/all", - parameters = Some(Map("query" -> "parameters")) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/all") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("allow post method for a custom path with minimal parameters") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/minimal" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/minimal") - assert(res.method == "POST") - val expectedBody = parse("""{}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("allow post method for a custom path with all parameters") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/all", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("body", JString("parameters"))))) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/all") - assert(res.method == "POST") - val expectedBody = parse("""{"body":"parameters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions can override default query parameters") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("query", "myQueryParameter") - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"myQueryParameter"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions merges query parameters with default ones") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("query2", "myQueryParameter") - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","query2":"myQueryParameter"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions can override default headers") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withHeader("x-algolia-api-key", "myApiKey") - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - val expectedHeaders = parse("""{"x-algolia-api-key":"myApiKey"}""").asInstanceOf[JObject].obj.toMap - val actualHeaders = res.headers - for ((k, v) <- expectedHeaders) { - assert(actualHeaders.contains(k)) - assert(actualHeaders(k) == v.asInstanceOf[JString].s) - } - } - - test("requestOptions merges headers with default ones") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withHeader("x-algolia-api-key", "myApiKey") - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - val expectedHeaders = parse("""{"x-algolia-api-key":"myApiKey"}""").asInstanceOf[JObject].obj.toMap - val actualHeaders = res.headers - for ((k, v) <- expectedHeaders) { - assert(actualHeaders.contains(k)) - assert(actualHeaders(k) == v.asInstanceOf[JString].s) - } - } - - test("requestOptions queryParameters accepts booleans") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("isItWorking", true) - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","isItWorking":"true"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions queryParameters accepts integers") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("myParam", 2) - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","myParam":"2"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions queryParameters accepts list of string") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("myParam", Seq("c", "d")) - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","myParam":"c,d"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions queryParameters accepts list of booleans") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("myParam", Seq(true, true, false)) - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","myParam":"true,true,false"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions queryParameters accepts list of integers") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("myParam", Seq(1, 2)) - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","myParam":"1,2"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("allow put method for a custom path with minimal parameters") { - val (client, echo) = testClient() - val future = client.customPut[JObject]( - path = "/test/minimal" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/minimal") - assert(res.method == "PUT") - val expectedBody = parse("""{}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("allow put method for a custom path with all parameters") { - val (client, echo) = testClient() - val future = client.customPut[JObject]( - path = "/test/all", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("body", JString("parameters"))))) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/all") - assert(res.method == "PUT") - val expectedBody = parse("""{"body":"parameters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("getClusterIncidents") { - val (client, echo) = testClient() - val future = client.getClusterIncidents( - clusters = "c1-de" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/incidents/c1-de") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("getClusterStatus") { - val (client, echo) = testClient() - val future = client.getClusterStatus( - clusters = "c1-de" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/status/c1-de") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("getIncidents") { - val (client, echo) = testClient() - val future = client.getIncidents( - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/incidents") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("getIndexingTime") { - val (client, echo) = testClient() - val future = client.getIndexingTime( - clusters = "c1-de" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexing/c1-de") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("getInventory") { - val (client, echo) = testClient() - val future = client.getInventory( - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/inventory/servers") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("getLatency") { - val (client, echo) = testClient() - val future = client.getLatency( - clusters = "c1-de" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/latency/c1-de") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("getMetrics") { - val (client, echo) = testClient() - val future = client.getMetrics( - metric = Metric.withName("avg_build_time"), - period = Period.withName("minute") - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/infrastructure/avg_build_time/period/minute") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("getReachability") { - val (client, echo) = testClient() - val future = client.getReachability( - clusters = "c1-de" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/reachability/c1-de/probes") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("getStatus") { - val (client, echo) = testClient() - val future = client.getStatus( - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/status") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - -} diff --git a/tests/output/scala/src/test/scala/algoliasearch/methods/requests/PersonalizationTest.scala b/tests/output/scala/src/test/scala/algoliasearch/methods/requests/PersonalizationTest.scala deleted file mode 100644 index ea04065f12..0000000000 --- a/tests/output/scala/src/test/scala/algoliasearch/methods/requests/PersonalizationTest.scala +++ /dev/null @@ -1,553 +0,0 @@ -package algoliasearch.methods.requests - -import algoliasearch.EchoInterceptor -import algoliasearch.api.PersonalizationClient -import algoliasearch.config.* -import algoliasearch.personalization.* -import org.json4s.* -import org.json4s.native.JsonParser.* -import org.scalatest.funsuite.AnyFunSuite - -import scala.concurrent.duration.Duration -import scala.concurrent.{Await, ExecutionContextExecutor} - -class PersonalizationTest extends AnyFunSuite { - implicit val ec: ExecutionContextExecutor = scala.concurrent.ExecutionContext.global - implicit val formats: Formats = org.json4s.DefaultFormats - - def testClient(): (PersonalizationClient, EchoInterceptor) = { - val echo = EchoInterceptor() - ( - PersonalizationClient( - appId = "appId", - apiKey = "apiKey", - region = "us", - clientOptions = ClientOptions - .builder() - .withRequesterConfig(requester => requester.withInterceptor(echo)) - .build() - ), - echo - ) - } - - test("allow del method for a custom path with minimal parameters") { - val (client, echo) = testClient() - val future = client.customDelete[JObject]( - path = "/test/minimal" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/minimal") - assert(res.method == "DELETE") - assert(res.body.isEmpty) - } - - test("allow del method for a custom path with all parameters") { - val (client, echo) = testClient() - val future = client.customDelete[JObject]( - path = "/test/all", - parameters = Some(Map("query" -> "parameters")) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/all") - assert(res.method == "DELETE") - assert(res.body.isEmpty) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("allow get method for a custom path with minimal parameters") { - val (client, echo) = testClient() - val future = client.customGet[JObject]( - path = "/test/minimal" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/minimal") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("allow get method for a custom path with all parameters") { - val (client, echo) = testClient() - val future = client.customGet[JObject]( - path = "/test/all", - parameters = Some(Map("query" -> "parameters")) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/all") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("allow post method for a custom path with minimal parameters") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/minimal" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/minimal") - assert(res.method == "POST") - val expectedBody = parse("""{}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("allow post method for a custom path with all parameters") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/all", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("body", JString("parameters"))))) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/all") - assert(res.method == "POST") - val expectedBody = parse("""{"body":"parameters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions can override default query parameters") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("query", "myQueryParameter") - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"myQueryParameter"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions merges query parameters with default ones") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("query2", "myQueryParameter") - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","query2":"myQueryParameter"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions can override default headers") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withHeader("x-algolia-api-key", "myApiKey") - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - val expectedHeaders = parse("""{"x-algolia-api-key":"myApiKey"}""").asInstanceOf[JObject].obj.toMap - val actualHeaders = res.headers - for ((k, v) <- expectedHeaders) { - assert(actualHeaders.contains(k)) - assert(actualHeaders(k) == v.asInstanceOf[JString].s) - } - } - - test("requestOptions merges headers with default ones") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withHeader("x-algolia-api-key", "myApiKey") - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - val expectedHeaders = parse("""{"x-algolia-api-key":"myApiKey"}""").asInstanceOf[JObject].obj.toMap - val actualHeaders = res.headers - for ((k, v) <- expectedHeaders) { - assert(actualHeaders.contains(k)) - assert(actualHeaders(k) == v.asInstanceOf[JString].s) - } - } - - test("requestOptions queryParameters accepts booleans") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("isItWorking", true) - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","isItWorking":"true"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions queryParameters accepts integers") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("myParam", 2) - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","myParam":"2"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions queryParameters accepts list of string") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("myParam", Seq("c", "d")) - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","myParam":"c,d"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions queryParameters accepts list of booleans") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("myParam", Seq(true, true, false)) - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","myParam":"true,true,false"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions queryParameters accepts list of integers") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("myParam", Seq(1, 2)) - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","myParam":"1,2"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("allow put method for a custom path with minimal parameters") { - val (client, echo) = testClient() - val future = client.customPut[JObject]( - path = "/test/minimal" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/minimal") - assert(res.method == "PUT") - val expectedBody = parse("""{}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("allow put method for a custom path with all parameters") { - val (client, echo) = testClient() - val future = client.customPut[JObject]( - path = "/test/all", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("body", JString("parameters"))))) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/all") - assert(res.method == "PUT") - val expectedBody = parse("""{"body":"parameters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("delete deleteUserProfile") { - val (client, echo) = testClient() - val future = client.deleteUserProfile( - userToken = "UserToken" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/profiles/UserToken") - assert(res.method == "DELETE") - assert(res.body.isEmpty) - } - - test("get getPersonalizationStrategy") { - val (client, echo) = testClient() - val future = client.getPersonalizationStrategy( - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/strategies/personalization") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("get getUserTokenProfile") { - val (client, echo) = testClient() - val future = client.getUserTokenProfile( - userToken = "UserToken" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/profiles/personalization/UserToken") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("set setPersonalizationStrategy") { - val (client, echo) = testClient() - val future = client.setPersonalizationStrategy( - personalizationStrategyParams = PersonalizationStrategyParams( - eventScoring = Seq( - EventScoring( - score = 42, - eventName = "Algolia", - eventType = "Event" - ) - ), - facetScoring = Seq( - FacetScoring( - score = 42, - facetName = "Event" - ) - ), - personalizationImpact = 42 - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/strategies/personalization") - assert(res.method == "POST") - val expectedBody = parse( - """{"eventScoring":[{"score":42,"eventName":"Algolia","eventType":"Event"}],"facetScoring":[{"score":42,"facetName":"Event"}],"personalizationImpact":42}""" - ) - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - -} diff --git a/tests/output/scala/src/test/scala/algoliasearch/methods/requests/QuerySuggestionsTest.scala b/tests/output/scala/src/test/scala/algoliasearch/methods/requests/QuerySuggestionsTest.scala deleted file mode 100644 index a04185f4aa..0000000000 --- a/tests/output/scala/src/test/scala/algoliasearch/methods/requests/QuerySuggestionsTest.scala +++ /dev/null @@ -1,618 +0,0 @@ -package algoliasearch.methods.requests - -import algoliasearch.EchoInterceptor -import algoliasearch.api.QuerySuggestionsClient -import algoliasearch.config.* -import algoliasearch.querysuggestions.* -import org.json4s.* -import org.json4s.native.JsonParser.* -import org.scalatest.funsuite.AnyFunSuite - -import scala.concurrent.duration.Duration -import scala.concurrent.{Await, ExecutionContextExecutor} - -class QuerySuggestionsTest extends AnyFunSuite { - implicit val ec: ExecutionContextExecutor = scala.concurrent.ExecutionContext.global - implicit val formats: Formats = org.json4s.DefaultFormats - - def testClient(): (QuerySuggestionsClient, EchoInterceptor) = { - val echo = EchoInterceptor() - ( - QuerySuggestionsClient( - appId = "appId", - apiKey = "apiKey", - region = "us", - clientOptions = ClientOptions - .builder() - .withRequesterConfig(requester => requester.withInterceptor(echo)) - .build() - ), - echo - ) - } - - test("createConfig0") { - val (client, echo) = testClient() - val future = client.createConfig( - querySuggestionsConfigurationWithIndex = QuerySuggestionsConfigurationWithIndex( - indexName = "theIndexName", - sourceIndices = Seq( - SourceIndex( - indexName = "testIndex", - facets = Some( - Seq( - Facet( - attribute = Some("test") - ) - ) - ), - generate = Some(Seq(Seq("facetA", "facetB"), Seq("facetC"))) - ) - ), - languages = Some(Languages(Seq("french"))), - exclude = Some(Seq("test")) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/configs") - assert(res.method == "POST") - val expectedBody = parse( - """{"indexName":"theIndexName","sourceIndices":[{"indexName":"testIndex","facets":[{"attribute":"test"}],"generate":[["facetA","facetB"],["facetC"]]}],"languages":["french"],"exclude":["test"]}""" - ) - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("allow del method for a custom path with minimal parameters") { - val (client, echo) = testClient() - val future = client.customDelete[JObject]( - path = "/test/minimal" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/minimal") - assert(res.method == "DELETE") - assert(res.body.isEmpty) - } - - test("allow del method for a custom path with all parameters") { - val (client, echo) = testClient() - val future = client.customDelete[JObject]( - path = "/test/all", - parameters = Some(Map("query" -> "parameters")) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/all") - assert(res.method == "DELETE") - assert(res.body.isEmpty) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("allow get method for a custom path with minimal parameters") { - val (client, echo) = testClient() - val future = client.customGet[JObject]( - path = "/test/minimal" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/minimal") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("allow get method for a custom path with all parameters") { - val (client, echo) = testClient() - val future = client.customGet[JObject]( - path = "/test/all", - parameters = Some(Map("query" -> "parameters")) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/all") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("allow post method for a custom path with minimal parameters") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/minimal" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/minimal") - assert(res.method == "POST") - val expectedBody = parse("""{}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("allow post method for a custom path with all parameters") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/all", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("body", JString("parameters"))))) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/all") - assert(res.method == "POST") - val expectedBody = parse("""{"body":"parameters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions can override default query parameters") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("query", "myQueryParameter") - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"myQueryParameter"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions merges query parameters with default ones") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("query2", "myQueryParameter") - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","query2":"myQueryParameter"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions can override default headers") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withHeader("x-algolia-api-key", "myApiKey") - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - val expectedHeaders = parse("""{"x-algolia-api-key":"myApiKey"}""").asInstanceOf[JObject].obj.toMap - val actualHeaders = res.headers - for ((k, v) <- expectedHeaders) { - assert(actualHeaders.contains(k)) - assert(actualHeaders(k) == v.asInstanceOf[JString].s) - } - } - - test("requestOptions merges headers with default ones") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withHeader("x-algolia-api-key", "myApiKey") - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - val expectedHeaders = parse("""{"x-algolia-api-key":"myApiKey"}""").asInstanceOf[JObject].obj.toMap - val actualHeaders = res.headers - for ((k, v) <- expectedHeaders) { - assert(actualHeaders.contains(k)) - assert(actualHeaders(k) == v.asInstanceOf[JString].s) - } - } - - test("requestOptions queryParameters accepts booleans") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("isItWorking", true) - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","isItWorking":"true"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions queryParameters accepts integers") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("myParam", 2) - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","myParam":"2"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions queryParameters accepts list of string") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("myParam", Seq("c", "d")) - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","myParam":"c,d"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions queryParameters accepts list of booleans") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("myParam", Seq(true, true, false)) - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","myParam":"true,true,false"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions queryParameters accepts list of integers") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("myParam", Seq(1, 2)) - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","myParam":"1,2"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("allow put method for a custom path with minimal parameters") { - val (client, echo) = testClient() - val future = client.customPut[JObject]( - path = "/test/minimal" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/minimal") - assert(res.method == "PUT") - val expectedBody = parse("""{}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("allow put method for a custom path with all parameters") { - val (client, echo) = testClient() - val future = client.customPut[JObject]( - path = "/test/all", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("body", JString("parameters"))))) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/all") - assert(res.method == "PUT") - val expectedBody = parse("""{"body":"parameters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("deleteConfig0") { - val (client, echo) = testClient() - val future = client.deleteConfig( - indexName = "theIndexName" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/configs/theIndexName") - assert(res.method == "DELETE") - assert(res.body.isEmpty) - } - - test("getAllConfigs0") { - val (client, echo) = testClient() - val future = client.getAllConfigs( - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/configs") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("getConfig0") { - val (client, echo) = testClient() - val future = client.getConfig( - indexName = "theIndexName" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/configs/theIndexName") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("getConfigStatus0") { - val (client, echo) = testClient() - val future = client.getConfigStatus( - indexName = "theIndexName" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/configs/theIndexName/status") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("getLogFile0") { - val (client, echo) = testClient() - val future = client.getLogFile( - indexName = "theIndexName" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/logs/theIndexName") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("updateConfig0") { - val (client, echo) = testClient() - val future = client.updateConfig( - indexName = "theIndexName", - querySuggestionsConfiguration = QuerySuggestionsConfiguration( - sourceIndices = Seq( - SourceIndex( - indexName = "testIndex", - facets = Some( - Seq( - Facet( - attribute = Some("test") - ) - ) - ), - generate = Some(Seq(Seq("facetA", "facetB"), Seq("facetC"))) - ) - ), - languages = Some(Languages(Seq("french"))), - exclude = Some(Seq("test")) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/configs/theIndexName") - assert(res.method == "PUT") - val expectedBody = parse( - """{"sourceIndices":[{"indexName":"testIndex","facets":[{"attribute":"test"}],"generate":[["facetA","facetB"],["facetC"]]}],"languages":["french"],"exclude":["test"]}""" - ) - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - -} diff --git a/tests/output/scala/src/test/scala/algoliasearch/methods/requests/RecommendTest.scala b/tests/output/scala/src/test/scala/algoliasearch/methods/requests/RecommendTest.scala deleted file mode 100644 index 07fdf6cbe7..0000000000 --- a/tests/output/scala/src/test/scala/algoliasearch/methods/requests/RecommendTest.scala +++ /dev/null @@ -1,794 +0,0 @@ -package algoliasearch.methods.requests - -import algoliasearch.EchoInterceptor -import algoliasearch.api.RecommendClient -import algoliasearch.config.* -import algoliasearch.recommend.* -import org.json4s.* -import org.json4s.native.JsonParser.* -import org.scalatest.funsuite.AnyFunSuite - -import scala.concurrent.duration.Duration -import scala.concurrent.{Await, ExecutionContextExecutor} - -class RecommendTest extends AnyFunSuite { - implicit val ec: ExecutionContextExecutor = scala.concurrent.ExecutionContext.global - implicit val formats: Formats = org.json4s.DefaultFormats - - def testClient(): (RecommendClient, EchoInterceptor) = { - val echo = EchoInterceptor() - ( - RecommendClient( - appId = "appId", - apiKey = "apiKey", - clientOptions = ClientOptions - .builder() - .withRequesterConfig(requester => requester.withInterceptor(echo)) - .build() - ), - echo - ) - } - - test("allow del method for a custom path with minimal parameters") { - val (client, echo) = testClient() - val future = client.customDelete[JObject]( - path = "/test/minimal" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/minimal") - assert(res.method == "DELETE") - assert(res.body.isEmpty) - } - - test("allow del method for a custom path with all parameters") { - val (client, echo) = testClient() - val future = client.customDelete[JObject]( - path = "/test/all", - parameters = Some(Map("query" -> "parameters")) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/all") - assert(res.method == "DELETE") - assert(res.body.isEmpty) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("allow get method for a custom path with minimal parameters") { - val (client, echo) = testClient() - val future = client.customGet[JObject]( - path = "/test/minimal" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/minimal") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("allow get method for a custom path with all parameters") { - val (client, echo) = testClient() - val future = client.customGet[JObject]( - path = "/test/all", - parameters = Some(Map("query" -> "parameters")) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/all") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("allow post method for a custom path with minimal parameters") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/minimal" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/minimal") - assert(res.method == "POST") - val expectedBody = parse("""{}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("allow post method for a custom path with all parameters") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/all", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("body", JString("parameters"))))) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/all") - assert(res.method == "POST") - val expectedBody = parse("""{"body":"parameters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions can override default query parameters") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("query", "myQueryParameter") - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"myQueryParameter"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions merges query parameters with default ones") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("query2", "myQueryParameter") - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","query2":"myQueryParameter"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions can override default headers") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withHeader("x-algolia-api-key", "myApiKey") - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - val expectedHeaders = parse("""{"x-algolia-api-key":"myApiKey"}""").asInstanceOf[JObject].obj.toMap - val actualHeaders = res.headers - for ((k, v) <- expectedHeaders) { - assert(actualHeaders.contains(k)) - assert(actualHeaders(k) == v.asInstanceOf[JString].s) - } - } - - test("requestOptions merges headers with default ones") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withHeader("x-algolia-api-key", "myApiKey") - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - val expectedHeaders = parse("""{"x-algolia-api-key":"myApiKey"}""").asInstanceOf[JObject].obj.toMap - val actualHeaders = res.headers - for ((k, v) <- expectedHeaders) { - assert(actualHeaders.contains(k)) - assert(actualHeaders(k) == v.asInstanceOf[JString].s) - } - } - - test("requestOptions queryParameters accepts booleans") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("isItWorking", true) - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","isItWorking":"true"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions queryParameters accepts integers") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("myParam", 2) - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","myParam":"2"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions queryParameters accepts list of string") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("myParam", Seq("c", "d")) - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","myParam":"c,d"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions queryParameters accepts list of booleans") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("myParam", Seq(true, true, false)) - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","myParam":"true,true,false"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions queryParameters accepts list of integers") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("myParam", Seq(1, 2)) - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","myParam":"1,2"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("allow put method for a custom path with minimal parameters") { - val (client, echo) = testClient() - val future = client.customPut[JObject]( - path = "/test/minimal" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/minimal") - assert(res.method == "PUT") - val expectedBody = parse("""{}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("allow put method for a custom path with all parameters") { - val (client, echo) = testClient() - val future = client.customPut[JObject]( - path = "/test/all", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("body", JString("parameters"))))) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/all") - assert(res.method == "PUT") - val expectedBody = parse("""{"body":"parameters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("deleteRecommendRule0") { - val (client, echo) = testClient() - val future = client.deleteRecommendRule( - indexName = "indexName", - model = RecommendModels.withName("related-products"), - objectID = "objectID" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/indexName/related-products/recommend/rules/objectID") - assert(res.method == "DELETE") - assert(res.body.isEmpty) - } - - test("getRecommendRule0") { - val (client, echo) = testClient() - val future = client.getRecommendRule( - indexName = "indexName", - model = RecommendModels.withName("related-products"), - objectID = "objectID" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/indexName/related-products/recommend/rules/objectID") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("getRecommendStatus0") { - val (client, echo) = testClient() - val future = client.getRecommendStatus( - indexName = "indexName", - model = RecommendModels.withName("related-products"), - taskID = 12345L - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/indexName/related-products/task/12345") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("get recommendations for recommend model with minimal parameters") { - val (client, echo) = testClient() - val future = client.getRecommendations( - getRecommendationsParams = GetRecommendationsParams( - requests = Seq( - RecommendationsQuery( - indexName = "indexName", - objectID = "objectID", - model = RecommendationModels.withName("related-products"), - threshold = Some(42) - ) - ) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/*/recommendations") - assert(res.method == "POST") - val expectedBody = parse( - """{"requests":[{"indexName":"indexName","objectID":"objectID","model":"related-products","threshold":42}]}""" - ) - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("get recommendations for recommend model with all parameters") { - val (client, echo) = testClient() - val future = client.getRecommendations( - getRecommendationsParams = GetRecommendationsParams( - requests = Seq( - RecommendationsQuery( - indexName = "indexName", - objectID = "objectID", - model = RecommendationModels.withName("related-products"), - threshold = Some(42), - maxRecommendations = Some(10), - queryParameters = Some( - SearchParamsObject( - query = Some("myQuery"), - facetFilters = Some(FacetFilters(Seq(MixedSearchFilters("query")))) - ) - ), - fallbackParameters = Some( - SearchParamsObject( - query = Some("myQuery"), - facetFilters = Some(FacetFilters(Seq(MixedSearchFilters("fallback")))) - ) - ) - ) - ) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/*/recommendations") - assert(res.method == "POST") - val expectedBody = parse( - """{"requests":[{"indexName":"indexName","objectID":"objectID","model":"related-products","threshold":42,"maxRecommendations":10,"queryParameters":{"query":"myQuery","facetFilters":["query"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback"]}}]}""" - ) - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("get recommendations for trending model with minimal parameters") { - val (client, echo) = testClient() - val future = client.getRecommendations( - getRecommendationsParams = GetRecommendationsParams( - requests = Seq( - TrendingItemsQuery( - indexName = "indexName", - model = Some(TrendingItemsModel.withName("trending-items")), - threshold = Some(42) - ) - ) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/*/recommendations") - assert(res.method == "POST") - val expectedBody = parse("""{"requests":[{"indexName":"indexName","model":"trending-items","threshold":42}]}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("get recommendations for trending model with all parameters") { - val (client, echo) = testClient() - val future = client.getRecommendations( - getRecommendationsParams = GetRecommendationsParams( - requests = Seq( - TrendingItemsQuery( - indexName = "indexName", - model = Some(TrendingItemsModel.withName("trending-items")), - threshold = Some(42), - maxRecommendations = Some(10), - facetName = Some("myFacetName"), - facetValue = Some("myFacetValue"), - queryParameters = Some( - SearchParamsObject( - query = Some("myQuery"), - facetFilters = Some(FacetFilters(Seq(MixedSearchFilters("query")))) - ) - ), - fallbackParameters = Some( - SearchParamsObject( - query = Some("myQuery"), - facetFilters = Some(FacetFilters(Seq(MixedSearchFilters("fallback")))) - ) - ) - ) - ) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/*/recommendations") - assert(res.method == "POST") - val expectedBody = parse( - """{"requests":[{"indexName":"indexName","model":"trending-items","threshold":42,"maxRecommendations":10,"facetName":"myFacetName","facetValue":"myFacetValue","queryParameters":{"query":"myQuery","facetFilters":["query"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback"]}}]}""" - ) - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("get multiple recommendations with minimal parameters") { - val (client, echo) = testClient() - val future = client.getRecommendations( - getRecommendationsParams = GetRecommendationsParams( - requests = Seq( - RecommendationsQuery( - indexName = "indexName1", - objectID = "objectID1", - model = RecommendationModels.withName("related-products"), - threshold = Some(21) - ), - RecommendationsQuery( - indexName = "indexName2", - objectID = "objectID2", - model = RecommendationModels.withName("related-products"), - threshold = Some(21) - ) - ) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/*/recommendations") - assert(res.method == "POST") - val expectedBody = parse( - """{"requests":[{"indexName":"indexName1","objectID":"objectID1","model":"related-products","threshold":21},{"indexName":"indexName2","objectID":"objectID2","model":"related-products","threshold":21}]}""" - ) - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("get multiple recommendations with all parameters") { - val (client, echo) = testClient() - val future = client.getRecommendations( - getRecommendationsParams = GetRecommendationsParams( - requests = Seq( - RecommendationsQuery( - indexName = "indexName1", - objectID = "objectID1", - model = RecommendationModels.withName("related-products"), - threshold = Some(21), - maxRecommendations = Some(10), - queryParameters = Some( - SearchParamsObject( - query = Some("myQuery"), - facetFilters = Some(FacetFilters(Seq(MixedSearchFilters("query1")))) - ) - ), - fallbackParameters = Some( - SearchParamsObject( - query = Some("myQuery"), - facetFilters = Some(FacetFilters(Seq(MixedSearchFilters("fallback1")))) - ) - ) - ), - RecommendationsQuery( - indexName = "indexName2", - objectID = "objectID2", - model = RecommendationModels.withName("related-products"), - threshold = Some(21), - maxRecommendations = Some(10), - queryParameters = Some( - SearchParamsObject( - query = Some("myQuery"), - facetFilters = Some(FacetFilters(Seq(MixedSearchFilters("query2")))) - ) - ), - fallbackParameters = Some( - SearchParamsObject( - query = Some("myQuery"), - facetFilters = Some(FacetFilters(Seq(MixedSearchFilters("fallback2")))) - ) - ) - ) - ) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/*/recommendations") - assert(res.method == "POST") - val expectedBody = parse( - """{"requests":[{"indexName":"indexName1","objectID":"objectID1","model":"related-products","threshold":21,"maxRecommendations":10,"queryParameters":{"query":"myQuery","facetFilters":["query1"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback1"]}},{"indexName":"indexName2","objectID":"objectID2","model":"related-products","threshold":21,"maxRecommendations":10,"queryParameters":{"query":"myQuery","facetFilters":["query2"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback2"]}}]}""" - ) - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("get frequently bought together recommendations") { - val (client, echo) = testClient() - val future = client.getRecommendations( - getRecommendationsParams = GetRecommendationsParams( - requests = Seq( - RecommendationsQuery( - indexName = "indexName1", - objectID = "objectID1", - model = RecommendationModels.withName("bought-together"), - threshold = Some(42) - ) - ) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/*/recommendations") - assert(res.method == "POST") - val expectedBody = parse( - """{"requests":[{"indexName":"indexName1","objectID":"objectID1","model":"bought-together","threshold":42}]}""" - ) - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("searchRecommendRules0") { - val (client, echo) = testClient() - val future = client.searchRecommendRules( - indexName = "indexName", - model = RecommendModels.withName("related-products") - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/indexName/related-products/recommend/rules/search") - assert(res.method == "POST") - val expectedBody = parse("""{}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - -} diff --git a/tests/output/scala/src/test/scala/algoliasearch/methods/requests/SearchTest.scala b/tests/output/scala/src/test/scala/algoliasearch/methods/requests/SearchTest.scala deleted file mode 100644 index 8d47b88cf4..0000000000 --- a/tests/output/scala/src/test/scala/algoliasearch/methods/requests/SearchTest.scala +++ /dev/null @@ -1,2918 +0,0 @@ -package algoliasearch.methods.requests - -import algoliasearch.EchoInterceptor -import algoliasearch.api.SearchClient -import algoliasearch.config.* -import algoliasearch.search.* -import org.json4s.* -import org.json4s.native.JsonParser.* -import org.scalatest.funsuite.AnyFunSuite - -import scala.concurrent.duration.Duration -import scala.concurrent.{Await, ExecutionContextExecutor} - -class SearchTest extends AnyFunSuite { - implicit val ec: ExecutionContextExecutor = scala.concurrent.ExecutionContext.global - implicit val formats: Formats = org.json4s.DefaultFormats - - def testClient(): (SearchClient, EchoInterceptor) = { - val echo = EchoInterceptor() - ( - SearchClient( - appId = "appId", - apiKey = "apiKey", - clientOptions = ClientOptions - .builder() - .withRequesterConfig(requester => requester.withInterceptor(echo)) - .build() - ), - echo - ) - } - - test("addApiKey0") { - val (client, echo) = testClient() - val future = client.addApiKey( - apiKey = ApiKey( - acl = Seq(Acl.withName("search"), Acl.withName("addObject")), - description = Some("my new api key"), - validity = Some(300), - maxQueriesPerIPPerHour = Some(100), - maxHitsPerQuery = Some(20) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/keys") - assert(res.method == "POST") - val expectedBody = parse( - """{"acl":["search","addObject"],"description":"my new api key","validity":300,"maxQueriesPerIPPerHour":100,"maxHitsPerQuery":20}""" - ) - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("addOrUpdateObject0") { - val (client, echo) = testClient() - val future = client.addOrUpdateObject( - indexName = "indexName", - objectID = "uniqueID", - body = JObject(List(JField("key", JString("value")))) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/indexName/uniqueID") - assert(res.method == "PUT") - val expectedBody = parse("""{"key":"value"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("appendSource0") { - val (client, echo) = testClient() - val future = client.appendSource( - source = Source( - source = "theSource", - description = Some("theDescription") - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/security/sources/append") - assert(res.method == "POST") - val expectedBody = parse("""{"source":"theSource","description":"theDescription"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("assignUserId0") { - val (client, echo) = testClient() - val future = client.assignUserId( - xAlgoliaUserID = "userID", - assignUserIdParams = AssignUserIdParams( - cluster = "theCluster" - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/clusters/mapping") - assert(res.method == "POST") - val expectedBody = parse("""{"cluster":"theCluster"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedHeaders = parse("""{"x-algolia-user-id":"userID"}""").asInstanceOf[JObject].obj.toMap - val actualHeaders = res.headers - for ((k, v) <- expectedHeaders) { - assert(actualHeaders.contains(k)) - assert(actualHeaders(k) == v.asInstanceOf[JString].s) - } - } - - test("allows batch method with `addObject` action") { - val (client, echo) = testClient() - val future = client.batch( - indexName = "theIndexName", - batchWriteParams = BatchWriteParams( - requests = Seq( - BatchRequest( - action = Action.withName("addObject"), - body = JObject(List(JField("key", JString("value")))) - ) - ) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/theIndexName/batch") - assert(res.method == "POST") - val expectedBody = parse("""{"requests":[{"action":"addObject","body":{"key":"value"}}]}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("allows batch method with `clear` action") { - val (client, echo) = testClient() - val future = client.batch( - indexName = "theIndexName", - batchWriteParams = BatchWriteParams( - requests = Seq( - BatchRequest( - action = Action.withName("clear"), - body = JObject(List(JField("key", JString("value")))) - ) - ) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/theIndexName/batch") - assert(res.method == "POST") - val expectedBody = parse("""{"requests":[{"action":"clear","body":{"key":"value"}}]}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("allows batch method with `delete` action") { - val (client, echo) = testClient() - val future = client.batch( - indexName = "theIndexName", - batchWriteParams = BatchWriteParams( - requests = Seq( - BatchRequest( - action = Action.withName("delete"), - body = JObject(List(JField("key", JString("value")))) - ) - ) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/theIndexName/batch") - assert(res.method == "POST") - val expectedBody = parse("""{"requests":[{"action":"delete","body":{"key":"value"}}]}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("allows batch method with `deleteObject` action") { - val (client, echo) = testClient() - val future = client.batch( - indexName = "theIndexName", - batchWriteParams = BatchWriteParams( - requests = Seq( - BatchRequest( - action = Action.withName("deleteObject"), - body = JObject(List(JField("key", JString("value")))) - ) - ) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/theIndexName/batch") - assert(res.method == "POST") - val expectedBody = parse("""{"requests":[{"action":"deleteObject","body":{"key":"value"}}]}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("allows batch method with `partialUpdateObject` action") { - val (client, echo) = testClient() - val future = client.batch( - indexName = "theIndexName", - batchWriteParams = BatchWriteParams( - requests = Seq( - BatchRequest( - action = Action.withName("partialUpdateObject"), - body = JObject(List(JField("key", JString("value")))) - ) - ) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/theIndexName/batch") - assert(res.method == "POST") - val expectedBody = parse("""{"requests":[{"action":"partialUpdateObject","body":{"key":"value"}}]}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("allows batch method with `partialUpdateObjectNoCreate` action") { - val (client, echo) = testClient() - val future = client.batch( - indexName = "theIndexName", - batchWriteParams = BatchWriteParams( - requests = Seq( - BatchRequest( - action = Action.withName("partialUpdateObjectNoCreate"), - body = JObject(List(JField("key", JString("value")))) - ) - ) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/theIndexName/batch") - assert(res.method == "POST") - val expectedBody = parse("""{"requests":[{"action":"partialUpdateObjectNoCreate","body":{"key":"value"}}]}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("allows batch method with `updateObject` action") { - val (client, echo) = testClient() - val future = client.batch( - indexName = "theIndexName", - batchWriteParams = BatchWriteParams( - requests = Seq( - BatchRequest( - action = Action.withName("updateObject"), - body = JObject(List(JField("key", JString("value")))) - ) - ) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/theIndexName/batch") - assert(res.method == "POST") - val expectedBody = parse("""{"requests":[{"action":"updateObject","body":{"key":"value"}}]}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("batchAssignUserIds0") { - val (client, echo) = testClient() - val future = client.batchAssignUserIds( - xAlgoliaUserID = "userID", - batchAssignUserIdsParams = BatchAssignUserIdsParams( - cluster = "theCluster", - users = Seq("user1", "user2") - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/clusters/mapping/batch") - assert(res.method == "POST") - val expectedBody = parse("""{"cluster":"theCluster","users":["user1","user2"]}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedHeaders = parse("""{"x-algolia-user-id":"userID"}""").asInstanceOf[JObject].obj.toMap - val actualHeaders = res.headers - for ((k, v) <- expectedHeaders) { - assert(actualHeaders.contains(k)) - assert(actualHeaders(k) == v.asInstanceOf[JString].s) - } - } - - test("get batchDictionaryEntries results with minimal parameters") { - val (client, echo) = testClient() - val future = client.batchDictionaryEntries( - dictionaryName = DictionaryType.withName("compounds"), - batchDictionaryEntriesParams = BatchDictionaryEntriesParams( - requests = Seq( - BatchDictionaryEntriesRequest( - action = DictionaryAction.withName("addEntry"), - body = DictionaryEntry( - objectID = "1", - language = "en" - ) - ), - BatchDictionaryEntriesRequest( - action = DictionaryAction.withName("deleteEntry"), - body = DictionaryEntry( - objectID = "2", - language = "fr" - ) - ) - ) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/dictionaries/compounds/batch") - assert(res.method == "POST") - val expectedBody = parse( - """{"requests":[{"action":"addEntry","body":{"objectID":"1","language":"en"}},{"action":"deleteEntry","body":{"objectID":"2","language":"fr"}}]}""" - ) - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("get batchDictionaryEntries results with all parameters") { - val (client, echo) = testClient() - val future = client.batchDictionaryEntries( - dictionaryName = DictionaryType.withName("compounds"), - batchDictionaryEntriesParams = BatchDictionaryEntriesParams( - clearExistingDictionaryEntries = Some(false), - requests = Seq( - BatchDictionaryEntriesRequest( - action = DictionaryAction.withName("addEntry"), - body = DictionaryEntry( - objectID = "1", - language = "en", - word = Some("fancy"), - words = Some(Seq("believe", "algolia")), - decomposition = Some(Seq("trust", "algolia")), - state = Some(DictionaryEntryState.withName("enabled")) - ) - ), - BatchDictionaryEntriesRequest( - action = DictionaryAction.withName("deleteEntry"), - body = DictionaryEntry( - objectID = "2", - language = "fr", - word = Some("humility"), - words = Some(Seq("candor", "algolia")), - decomposition = Some(Seq("grit", "algolia")), - state = Some(DictionaryEntryState.withName("enabled")) - ) - ) - ) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/dictionaries/compounds/batch") - assert(res.method == "POST") - val expectedBody = parse( - """{"clearExistingDictionaryEntries":false,"requests":[{"action":"addEntry","body":{"objectID":"1","language":"en","word":"fancy","words":["believe","algolia"],"decomposition":["trust","algolia"],"state":"enabled"}},{"action":"deleteEntry","body":{"objectID":"2","language":"fr","word":"humility","words":["candor","algolia"],"decomposition":["grit","algolia"],"state":"enabled"}}]}""" - ) - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("get batchDictionaryEntries results additional properties") { - val (client, echo) = testClient() - val future = client.batchDictionaryEntries( - dictionaryName = DictionaryType.withName("compounds"), - batchDictionaryEntriesParams = BatchDictionaryEntriesParams( - requests = Seq( - BatchDictionaryEntriesRequest( - action = DictionaryAction.withName("addEntry"), - body = DictionaryEntry( - objectID = "1", - language = "en", - additionalProperties = Some(List(JField("additional", JString("try me")))) - ) - ) - ) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/dictionaries/compounds/batch") - assert(res.method == "POST") - val expectedBody = - parse("""{"requests":[{"action":"addEntry","body":{"objectID":"1","language":"en","additional":"try me"}}]}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("browse with minimal parameters") { - val (client, echo) = testClient() - val future = client.browse( - indexName = "indexName" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/indexName/browse") - assert(res.method == "POST") - val expectedBody = parse("""{}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("browse with search parameters") { - val (client, echo) = testClient() - val future = client.browse( - indexName = "indexName", - browseParams = Some( - BrowseParamsObject( - query = Some("myQuery"), - facetFilters = Some(FacetFilters(Seq(MixedSearchFilters("tags:algolia")))) - ) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/indexName/browse") - assert(res.method == "POST") - val expectedBody = parse("""{"query":"myQuery","facetFilters":["tags:algolia"]}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("browse allow a cursor in parameters") { - val (client, echo) = testClient() - val future = client.browse( - indexName = "indexName", - browseParams = Some( - BrowseParamsObject( - cursor = Some("test") - ) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/indexName/browse") - assert(res.method == "POST") - val expectedBody = parse("""{"cursor":"test"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("clearAllSynonyms0") { - val (client, echo) = testClient() - val future = client.clearAllSynonyms( - indexName = "indexName" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/indexName/synonyms/clear") - assert(res.method == "POST") - assert(res.body.contains("{}")) - } - - test("clearObjects0") { - val (client, echo) = testClient() - val future = client.clearObjects( - indexName = "theIndexName" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/theIndexName/clear") - assert(res.method == "POST") - assert(res.body.contains("{}")) - } - - test("clearRules0") { - val (client, echo) = testClient() - val future = client.clearRules( - indexName = "indexName" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/indexName/rules/clear") - assert(res.method == "POST") - assert(res.body.contains("{}")) - } - - test("allow del method for a custom path with minimal parameters") { - val (client, echo) = testClient() - val future = client.customDelete[JObject]( - path = "/test/minimal" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/minimal") - assert(res.method == "DELETE") - assert(res.body.isEmpty) - } - - test("allow del method for a custom path with all parameters") { - val (client, echo) = testClient() - val future = client.customDelete[JObject]( - path = "/test/all", - parameters = Some(Map("query" -> "parameters")) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/all") - assert(res.method == "DELETE") - assert(res.body.isEmpty) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("allow get method for a custom path with minimal parameters") { - val (client, echo) = testClient() - val future = client.customGet[JObject]( - path = "/test/minimal" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/minimal") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("allow get method for a custom path with all parameters") { - val (client, echo) = testClient() - val future = client.customGet[JObject]( - path = "/test/all", - parameters = Some(Map("query" -> "parameters")) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/all") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("allow post method for a custom path with minimal parameters") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/minimal" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/minimal") - assert(res.method == "POST") - val expectedBody = parse("""{}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("allow post method for a custom path with all parameters") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/all", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("body", JString("parameters"))))) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/all") - assert(res.method == "POST") - val expectedBody = parse("""{"body":"parameters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions can override default query parameters") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("query", "myQueryParameter") - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"myQueryParameter"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions merges query parameters with default ones") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("query2", "myQueryParameter") - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","query2":"myQueryParameter"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions can override default headers") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withHeader("x-algolia-api-key", "myApiKey") - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - val expectedHeaders = parse("""{"x-algolia-api-key":"myApiKey"}""").asInstanceOf[JObject].obj.toMap - val actualHeaders = res.headers - for ((k, v) <- expectedHeaders) { - assert(actualHeaders.contains(k)) - assert(actualHeaders(k) == v.asInstanceOf[JString].s) - } - } - - test("requestOptions merges headers with default ones") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withHeader("x-algolia-api-key", "myApiKey") - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - val expectedHeaders = parse("""{"x-algolia-api-key":"myApiKey"}""").asInstanceOf[JObject].obj.toMap - val actualHeaders = res.headers - for ((k, v) <- expectedHeaders) { - assert(actualHeaders.contains(k)) - assert(actualHeaders(k) == v.asInstanceOf[JString].s) - } - } - - test("requestOptions queryParameters accepts booleans") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("isItWorking", true) - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","isItWorking":"true"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions queryParameters accepts integers") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("myParam", 2) - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","myParam":"2"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions queryParameters accepts list of string") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("myParam", Seq("c", "d")) - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","myParam":"c,d"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions queryParameters accepts list of booleans") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("myParam", Seq(true, true, false)) - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","myParam":"true,true,false"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("requestOptions queryParameters accepts list of integers") { - val (client, echo) = testClient() - val future = client.customPost[JObject]( - path = "/test/requestOptions", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("facet", JString("filters"))))), - requestOptions = Some( - RequestOptions - .builder() - .withQueryParameter("myParam", Seq(1, 2)) - .build() - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/requestOptions") - assert(res.method == "POST") - val expectedBody = parse("""{"facet":"filters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters","myParam":"1,2"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("allow put method for a custom path with minimal parameters") { - val (client, echo) = testClient() - val future = client.customPut[JObject]( - path = "/test/minimal" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/minimal") - assert(res.method == "PUT") - val expectedBody = parse("""{}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("allow put method for a custom path with all parameters") { - val (client, echo) = testClient() - val future = client.customPut[JObject]( - path = "/test/all", - parameters = Some(Map("query" -> "parameters")), - body = Some(JObject(List(JField("body", JString("parameters"))))) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/test/all") - assert(res.method == "PUT") - val expectedBody = parse("""{"body":"parameters"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("deleteApiKey0") { - val (client, echo) = testClient() - val future = client.deleteApiKey( - key = "myTestApiKey" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/keys/myTestApiKey") - assert(res.method == "DELETE") - assert(res.body.isEmpty) - } - - test("deleteBy0") { - val (client, echo) = testClient() - val future = client.deleteBy( - indexName = "theIndexName", - deleteByParams = DeleteByParams( - filters = Some("brand:brandName") - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/theIndexName/deleteByQuery") - assert(res.method == "POST") - val expectedBody = parse("""{"filters":"brand:brandName"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("deleteIndex0") { - val (client, echo) = testClient() - val future = client.deleteIndex( - indexName = "theIndexName" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/theIndexName") - assert(res.method == "DELETE") - assert(res.body.isEmpty) - } - - test("deleteObject0") { - val (client, echo) = testClient() - val future = client.deleteObject( - indexName = "theIndexName", - objectID = "uniqueID" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/theIndexName/uniqueID") - assert(res.method == "DELETE") - assert(res.body.isEmpty) - } - - test("delete rule simple case") { - val (client, echo) = testClient() - val future = client.deleteRule( - indexName = "indexName", - objectID = "id1" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/indexName/rules/id1") - assert(res.method == "DELETE") - assert(res.body.isEmpty) - } - - test("delete rule with simple characters to encode in objectID") { - val (client, echo) = testClient() - val future = client.deleteRule( - indexName = "indexName", - objectID = "test/with/slash" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/indexName/rules/test%2Fwith%2Fslash") - assert(res.method == "DELETE") - assert(res.body.isEmpty) - } - - test("deleteSource0") { - val (client, echo) = testClient() - val future = client.deleteSource( - source = "theSource" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/security/sources/theSource") - assert(res.method == "DELETE") - assert(res.body.isEmpty) - } - - test("deleteSynonym0") { - val (client, echo) = testClient() - val future = client.deleteSynonym( - indexName = "indexName", - objectID = "id1" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/indexName/synonyms/id1") - assert(res.method == "DELETE") - assert(res.body.isEmpty) - } - - test("getApiKey0") { - val (client, echo) = testClient() - val future = client.getApiKey( - key = "myTestApiKey" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/keys/myTestApiKey") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("get getDictionaryLanguages") { - val (client, echo) = testClient() - val future = client.getDictionaryLanguages( - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/dictionaries/*/languages") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("get getDictionarySettings results") { - val (client, echo) = testClient() - val future = client.getDictionarySettings( - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/dictionaries/*/settings") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("getLogs with minimal parameters") { - val (client, echo) = testClient() - val future = client.getLogs( - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/logs") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("getLogs with parameters") { - val (client, echo) = testClient() - val future = client.getLogs( - offset = Some(5), - length = Some(10), - indexName = Some("theIndexName"), - `type` = Some(LogType.withName("all")) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/logs") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = - parse("""{"offset":"5","length":"10","indexName":"theIndexName","type":"all"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("getObject0") { - val (client, echo) = testClient() - val future = client.getObject( - indexName = "theIndexName", - objectID = "uniqueID", - attributesToRetrieve = Some(Seq("attr1", "attr2")) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/theIndexName/uniqueID") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = parse("""{"attributesToRetrieve":"attr1,attr2"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("getObjects0") { - val (client, echo) = testClient() - val future = client.getObjects( - getObjectsParams = GetObjectsParams( - requests = Seq( - GetObjectsRequest( - attributesToRetrieve = Some(Seq("attr1", "attr2")), - objectID = "uniqueID", - indexName = "theIndexName" - ) - ) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/*/objects") - assert(res.method == "POST") - val expectedBody = parse( - """{"requests":[{"attributesToRetrieve":["attr1","attr2"],"objectID":"uniqueID","indexName":"theIndexName"}]}""" - ) - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("getRule0") { - val (client, echo) = testClient() - val future = client.getRule( - indexName = "indexName", - objectID = "id1" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/indexName/rules/id1") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("getSettings0") { - val (client, echo) = testClient() - val future = client.getSettings( - indexName = "theIndexName" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/theIndexName/settings") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("getSources0") { - val (client, echo) = testClient() - val future = client.getSources( - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/security/sources") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("getSynonym0") { - val (client, echo) = testClient() - val future = client.getSynonym( - indexName = "indexName", - objectID = "id1" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/indexName/synonyms/id1") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("getTask0") { - val (client, echo) = testClient() - val future = client.getTask( - indexName = "theIndexName", - taskID = 123L - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/theIndexName/task/123") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("getTopUserIds0") { - val (client, echo) = testClient() - val future = client.getTopUserIds( - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/clusters/mapping/top") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("getUserId0") { - val (client, echo) = testClient() - val future = client.getUserId( - userID = "uniqueID" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/clusters/mapping/uniqueID") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("hasPendingMappings with minimal parameters") { - val (client, echo) = testClient() - val future = client.hasPendingMappings( - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/clusters/mapping/pending") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("hasPendingMappings with parameters") { - val (client, echo) = testClient() - val future = client.hasPendingMappings( - getClusters = Some(true) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/clusters/mapping/pending") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = parse("""{"getClusters":"true"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("listApiKeys0") { - val (client, echo) = testClient() - val future = client.listApiKeys( - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/keys") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("listClusters0") { - val (client, echo) = testClient() - val future = client.listClusters( - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/clusters") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("listIndices with minimal parameters") { - val (client, echo) = testClient() - val future = client.listIndices( - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("listIndices with parameters") { - val (client, echo) = testClient() - val future = client.listIndices( - page = Some(8), - hitsPerPage = Some(3) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = parse("""{"page":"8","hitsPerPage":"3"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("listUserIds with minimal parameters") { - val (client, echo) = testClient() - val future = client.listUserIds( - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/clusters/mapping") - assert(res.method == "GET") - assert(res.body.isEmpty) - } - - test("listUserIds with parameters") { - val (client, echo) = testClient() - val future = client.listUserIds( - page = Some(8), - hitsPerPage = Some(100) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/clusters/mapping") - assert(res.method == "GET") - assert(res.body.isEmpty) - val expectedQuery = parse("""{"page":"8","hitsPerPage":"100"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("multipleBatch0") { - val (client, echo) = testClient() - val future = client.multipleBatch( - batchParams = BatchParams( - requests = Seq( - MultipleBatchRequest( - action = Action.withName("addObject"), - body = JObject(List(JField("key", JString("value")))), - indexName = "theIndexName" - ) - ) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/*/batch") - assert(res.method == "POST") - val expectedBody = - parse("""{"requests":[{"action":"addObject","body":{"key":"value"},"indexName":"theIndexName"}]}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("operationIndex0") { - val (client, echo) = testClient() - val future = client.operationIndex( - indexName = "theIndexName", - operationIndexParams = OperationIndexParams( - operation = OperationType.withName("copy"), - destination = "dest", - scope = Some(Seq(ScopeType.withName("rules"), ScopeType.withName("settings"))) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/theIndexName/operation") - assert(res.method == "POST") - val expectedBody = parse("""{"operation":"copy","destination":"dest","scope":["rules","settings"]}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("partialUpdateObject0") { - val (client, echo) = testClient() - val future = client.partialUpdateObject( - indexName = "theIndexName", - objectID = "uniqueID", - attributesToUpdate = Map( - "id1" -> AttributeToUpdate("test"), - "id2" -> BuiltInOperation( - _operation = BuiltInOperationType.withName("AddUnique"), - value = "test2" - ) - ), - createIfNotExists = Some(true) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/theIndexName/uniqueID/partial") - assert(res.method == "POST") - val expectedBody = parse("""{"id1":"test","id2":{"_operation":"AddUnique","value":"test2"}}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"createIfNotExists":"true"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("removeUserId0") { - val (client, echo) = testClient() - val future = client.removeUserId( - userID = "uniqueID" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/clusters/mapping/uniqueID") - assert(res.method == "DELETE") - assert(res.body.isEmpty) - } - - test("replaceSources0") { - val (client, echo) = testClient() - val future = client.replaceSources( - source = Seq( - Source( - source = "theSource", - description = Some("theDescription") - ) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/security/sources") - assert(res.method == "PUT") - val expectedBody = parse("""[{"source":"theSource","description":"theDescription"}]""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("restoreApiKey0") { - val (client, echo) = testClient() - val future = client.restoreApiKey( - key = "myApiKey" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/keys/myApiKey/restore") - assert(res.method == "POST") - assert(res.body.contains("{}")) - } - - test("saveObject0") { - val (client, echo) = testClient() - val future = client.saveObject( - indexName = "theIndexName", - body = JObject(List(JField("objectID", JString("id")), JField("test", JString("val")))) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/theIndexName") - assert(res.method == "POST") - val expectedBody = parse("""{"objectID":"id","test":"val"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("saveRule with minimal parameters") { - val (client, echo) = testClient() - val future = client.saveRule( - indexName = "indexName", - objectID = "id1", - rule = Rule( - objectID = "id1", - conditions = Some( - Seq( - Condition( - pattern = Some("apple"), - anchoring = Some(Anchoring.withName("contains")) - ) - ) - ) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/indexName/rules/id1") - assert(res.method == "PUT") - val expectedBody = parse("""{"objectID":"id1","conditions":[{"pattern":"apple","anchoring":"contains"}]}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("saveRule with all parameters") { - val (client, echo) = testClient() - val future = client.saveRule( - indexName = "indexName", - objectID = "id1", - rule = Rule( - objectID = "id1", - conditions = Some( - Seq( - Condition( - pattern = Some("apple"), - anchoring = Some(Anchoring.withName("contains")), - alternatives = Some(false), - context = Some("search") - ) - ) - ), - consequence = Some( - Consequence( - params = Some( - ConsequenceParams( - filters = Some("brand:apple"), - query = Some( - ConsequenceQueryObject( - remove = Some(Seq("algolia")), - edits = Some( - Seq( - Edit( - `type` = Some(EditType.withName("remove")), - delete = Some("abc"), - insert = Some("cde") - ), - Edit( - `type` = Some(EditType.withName("replace")), - delete = Some("abc"), - insert = Some("cde") - ) - ) - ) - ) - ) - ) - ), - hide = Some( - Seq( - ConsequenceHide( - objectID = "321" - ) - ) - ), - filterPromotes = Some(false), - userData = Some( - JObject( - List( - JField("algolia", JString("aloglia")) - ) - ) - ), - promote = Some( - Seq( - PromoteObjectID( - objectID = "abc", - position = 3 - ), - PromoteObjectIDs( - objectIDs = Seq("abc", "def"), - position = 1 - ) - ) - ) - ) - ), - description = Some("test"), - enabled = Some(true), - validity = Some( - Seq( - TimeRange( - from = 1656670273, - until = 1656670277 - ) - ) - ) - ), - forwardToReplicas = Some(true) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/indexName/rules/id1") - assert(res.method == "PUT") - val expectedBody = parse( - """{"objectID":"id1","conditions":[{"pattern":"apple","anchoring":"contains","alternatives":false,"context":"search"}],"consequence":{"params":{"filters":"brand:apple","query":{"remove":["algolia"],"edits":[{"type":"remove","delete":"abc","insert":"cde"},{"type":"replace","delete":"abc","insert":"cde"}]}},"hide":[{"objectID":"321"}],"filterPromotes":false,"userData":{"algolia":"aloglia"},"promote":[{"objectID":"abc","position":3},{"objectIDs":["abc","def"],"position":1}]},"description":"test","enabled":true,"validity":[{"from":1656670273,"until":1656670277}]}""" - ) - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"forwardToReplicas":"true"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("saveRules with minimal parameters") { - val (client, echo) = testClient() - val future = client.saveRules( - indexName = "indexName", - rules = Seq( - Rule( - objectID = "a-rule-id", - conditions = Some( - Seq( - Condition( - pattern = Some("smartphone"), - anchoring = Some(Anchoring.withName("contains")) - ) - ) - ) - ), - Rule( - objectID = "a-second-rule-id", - conditions = Some( - Seq( - Condition( - pattern = Some("apple"), - anchoring = Some(Anchoring.withName("contains")) - ) - ) - ) - ) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/indexName/rules/batch") - assert(res.method == "POST") - val expectedBody = parse( - """[{"objectID":"a-rule-id","conditions":[{"pattern":"smartphone","anchoring":"contains"}]},{"objectID":"a-second-rule-id","conditions":[{"pattern":"apple","anchoring":"contains"}]}]""" - ) - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("saveRules with all parameters") { - val (client, echo) = testClient() - val future = client.saveRules( - indexName = "indexName", - rules = Seq( - Rule( - objectID = "id1", - conditions = Some( - Seq( - Condition( - pattern = Some("apple"), - anchoring = Some(Anchoring.withName("contains")), - alternatives = Some(false), - context = Some("search") - ) - ) - ), - consequence = Some( - Consequence( - params = Some( - ConsequenceParams( - filters = Some("brand:apple"), - query = Some( - ConsequenceQueryObject( - remove = Some(Seq("algolia")), - edits = Some( - Seq( - Edit( - `type` = Some(EditType.withName("remove")), - delete = Some("abc"), - insert = Some("cde") - ), - Edit( - `type` = Some(EditType.withName("replace")), - delete = Some("abc"), - insert = Some("cde") - ) - ) - ) - ) - ) - ) - ), - hide = Some( - Seq( - ConsequenceHide( - objectID = "321" - ) - ) - ), - filterPromotes = Some(false), - userData = Some( - JObject( - List( - JField("algolia", JString("aloglia")) - ) - ) - ), - promote = Some( - Seq( - PromoteObjectID( - objectID = "abc", - position = 3 - ), - PromoteObjectIDs( - objectIDs = Seq("abc", "def"), - position = 1 - ) - ) - ) - ) - ), - description = Some("test"), - enabled = Some(true), - validity = Some( - Seq( - TimeRange( - from = 1656670273, - until = 1656670277 - ) - ) - ) - ) - ), - forwardToReplicas = Some(true), - clearExistingRules = Some(true) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/indexName/rules/batch") - assert(res.method == "POST") - val expectedBody = parse( - """[{"objectID":"id1","conditions":[{"pattern":"apple","anchoring":"contains","alternatives":false,"context":"search"}],"consequence":{"params":{"filters":"brand:apple","query":{"remove":["algolia"],"edits":[{"type":"remove","delete":"abc","insert":"cde"},{"type":"replace","delete":"abc","insert":"cde"}]}},"hide":[{"objectID":"321"}],"filterPromotes":false,"userData":{"algolia":"aloglia"},"promote":[{"objectID":"abc","position":3},{"objectIDs":["abc","def"],"position":1}]},"description":"test","enabled":true,"validity":[{"from":1656670273,"until":1656670277}]}]""" - ) - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = - parse("""{"forwardToReplicas":"true","clearExistingRules":"true"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("saveSynonym0") { - val (client, echo) = testClient() - val future = client.saveSynonym( - indexName = "indexName", - objectID = "id1", - synonymHit = SynonymHit( - objectID = "id1", - `type` = SynonymType.withName("synonym"), - synonyms = Some(Seq("car", "vehicule", "auto")) - ), - forwardToReplicas = Some(true) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/indexName/synonyms/id1") - assert(res.method == "PUT") - val expectedBody = parse("""{"objectID":"id1","type":"synonym","synonyms":["car","vehicule","auto"]}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"forwardToReplicas":"true"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("saveSynonyms0") { - val (client, echo) = testClient() - val future = client.saveSynonyms( - indexName = "indexName", - synonymHit = Seq( - SynonymHit( - objectID = "id1", - `type` = SynonymType.withName("synonym"), - synonyms = Some(Seq("car", "vehicule", "auto")) - ), - SynonymHit( - objectID = "id2", - `type` = SynonymType.withName("onewaysynonym"), - input = Some("iphone"), - synonyms = Some(Seq("ephone", "aphone", "yphone")) - ) - ), - forwardToReplicas = Some(true), - replaceExistingSynonyms = Some(false) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/indexName/synonyms/batch") - assert(res.method == "POST") - val expectedBody = parse( - """[{"objectID":"id1","type":"synonym","synonyms":["car","vehicule","auto"]},{"objectID":"id2","type":"onewaysynonym","input":"iphone","synonyms":["ephone","aphone","yphone"]}]""" - ) - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = - parse("""{"forwardToReplicas":"true","replaceExistingSynonyms":"false"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("search for a single hits request with minimal parameters") { - val (client, echo) = testClient() - val future = client.search( - searchMethodParams = SearchMethodParams( - requests = Seq( - SearchForHits( - indexName = "cts_e2e_search_empty_index" - ) - ) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/*/queries") - assert(res.method == "POST") - val expectedBody = parse("""{"requests":[{"indexName":"cts_e2e_search_empty_index"}]}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("search for a single facet request with minimal parameters") { - val (client, echo) = testClient() - val future = client.search( - searchMethodParams = SearchMethodParams( - requests = Seq( - SearchForFacets( - indexName = "cts_e2e_search_facet", - `type` = SearchTypeFacet.withName("facet"), - facet = "editor" - ) - ), - strategy = Some(SearchStrategy.withName("stopIfEnoughMatches")) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/*/queries") - assert(res.method == "POST") - val expectedBody = parse( - """{"requests":[{"indexName":"cts_e2e_search_facet","type":"facet","facet":"editor"}],"strategy":"stopIfEnoughMatches"}""" - ) - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("search for a single hits request with all parameters") { - val (client, echo) = testClient() - val future = client.search( - searchMethodParams = SearchMethodParams( - requests = Seq( - SearchForHits( - indexName = "theIndexName", - query = Some("myQuery"), - hitsPerPage = Some(50), - `type` = Some(SearchTypeDefault.withName("default")) - ) - ) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/*/queries") - assert(res.method == "POST") - val expectedBody = - parse("""{"requests":[{"indexName":"theIndexName","query":"myQuery","hitsPerPage":50,"type":"default"}]}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("search for a single facet request with all parameters") { - val (client, echo) = testClient() - val future = client.search( - searchMethodParams = SearchMethodParams( - requests = Seq( - SearchForFacets( - indexName = "theIndexName", - `type` = SearchTypeFacet.withName("facet"), - facet = "theFacet", - facetQuery = Some("theFacetQuery"), - query = Some("theQuery"), - maxFacetHits = Some(50) - ) - ), - strategy = Some(SearchStrategy.withName("stopIfEnoughMatches")) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/*/queries") - assert(res.method == "POST") - val expectedBody = parse( - """{"requests":[{"indexName":"theIndexName","type":"facet","facet":"theFacet","facetQuery":"theFacetQuery","query":"theQuery","maxFacetHits":50}],"strategy":"stopIfEnoughMatches"}""" - ) - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("search for multiple mixed requests in multiple indices with minimal parameters") { - val (client, echo) = testClient() - val future = client.search( - searchMethodParams = SearchMethodParams( - requests = Seq( - SearchForHits( - indexName = "theIndexName" - ), - SearchForFacets( - indexName = "theIndexName2", - `type` = SearchTypeFacet.withName("facet"), - facet = "theFacet" - ), - SearchForHits( - indexName = "theIndexName", - `type` = Some(SearchTypeDefault.withName("default")) - ) - ), - strategy = Some(SearchStrategy.withName("stopIfEnoughMatches")) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/*/queries") - assert(res.method == "POST") - val expectedBody = parse( - """{"requests":[{"indexName":"theIndexName"},{"indexName":"theIndexName2","type":"facet","facet":"theFacet"},{"indexName":"theIndexName","type":"default"}],"strategy":"stopIfEnoughMatches"}""" - ) - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("search for multiple mixed requests in multiple indices with all parameters") { - val (client, echo) = testClient() - val future = client.search( - searchMethodParams = SearchMethodParams( - requests = Seq( - SearchForFacets( - indexName = "theIndexName", - `type` = SearchTypeFacet.withName("facet"), - facet = "theFacet", - facetQuery = Some("theFacetQuery"), - query = Some("theQuery"), - maxFacetHits = Some(50) - ), - SearchForHits( - indexName = "theIndexName", - query = Some("myQuery"), - hitsPerPage = Some(50), - `type` = Some(SearchTypeDefault.withName("default")) - ) - ), - strategy = Some(SearchStrategy.withName("stopIfEnoughMatches")) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/*/queries") - assert(res.method == "POST") - val expectedBody = parse( - """{"requests":[{"indexName":"theIndexName","type":"facet","facet":"theFacet","facetQuery":"theFacetQuery","query":"theQuery","maxFacetHits":50},{"indexName":"theIndexName","query":"myQuery","hitsPerPage":50,"type":"default"}],"strategy":"stopIfEnoughMatches"}""" - ) - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("search filters accept all of the possible shapes") { - val (client, echo) = testClient() - val future = client.search( - searchMethodParams = SearchMethodParams( - requests = Seq( - SearchForHits( - indexName = "theIndexName", - facetFilters = Some(FacetFilters("mySearch:filters")), - reRankingApplyFilter = Some(ReRankingApplyFilter("mySearch:filters")), - tagFilters = Some(TagFilters("mySearch:filters")), - numericFilters = Some(NumericFilters("mySearch:filters")), - optionalFilters = Some(OptionalFilters("mySearch:filters")) - ), - SearchForHits( - indexName = "theIndexName", - facetFilters = Some( - FacetFilters(Seq(MixedSearchFilters("mySearch:filters"), MixedSearchFilters(Seq("mySearch:filters")))) - ), - reRankingApplyFilter = Some( - ReRankingApplyFilter( - Seq(MixedSearchFilters("mySearch:filters"), MixedSearchFilters(Seq("mySearch:filters"))) - ) - ), - tagFilters = Some( - TagFilters(Seq(MixedSearchFilters("mySearch:filters"), MixedSearchFilters(Seq("mySearch:filters")))) - ), - numericFilters = Some( - NumericFilters(Seq(MixedSearchFilters("mySearch:filters"), MixedSearchFilters(Seq("mySearch:filters")))) - ), - optionalFilters = Some( - OptionalFilters(Seq(MixedSearchFilters("mySearch:filters"), MixedSearchFilters(Seq("mySearch:filters")))) - ) - ) - ) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/*/queries") - assert(res.method == "POST") - val expectedBody = parse( - """{"requests":[{"indexName":"theIndexName","facetFilters":"mySearch:filters","reRankingApplyFilter":"mySearch:filters","tagFilters":"mySearch:filters","numericFilters":"mySearch:filters","optionalFilters":"mySearch:filters"},{"indexName":"theIndexName","facetFilters":["mySearch:filters",["mySearch:filters"]],"reRankingApplyFilter":["mySearch:filters",["mySearch:filters"]],"tagFilters":["mySearch:filters",["mySearch:filters"]],"numericFilters":["mySearch:filters",["mySearch:filters"]],"optionalFilters":["mySearch:filters",["mySearch:filters"]]}]}""" - ) - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("search with all search parameters") { - val (client, echo) = testClient() - val future = client.search( - searchMethodParams = SearchMethodParams( - requests = Seq( - SearchForHits( - advancedSyntax = Some(true), - advancedSyntaxFeatures = Some(Seq(AdvancedSyntaxFeatures.withName("exactPhrase"))), - allowTyposOnNumericTokens = Some(true), - alternativesAsExact = Some(Seq(AlternativesAsExact.withName("multiWordsSynonym"))), - analytics = Some(true), - analyticsTags = Some(Seq("")), - aroundLatLng = Some(""), - aroundLatLngViaIP = Some(true), - aroundPrecision = Some(AroundPrecision(0)), - aroundRadius = Some(AroundRadiusAll.withName("all")), - attributeCriteriaComputedByMinProximity = Some(true), - attributesForFaceting = Some(Seq("")), - attributesToHighlight = Some(Seq("")), - attributesToRetrieve = Some(Seq("")), - attributesToSnippet = Some(Seq("")), - clickAnalytics = Some(true), - customRanking = Some(Seq("")), - decompoundQuery = Some(true), - disableExactOnAttributes = Some(Seq("")), - disableTypoToleranceOnAttributes = Some(Seq("")), - distinct = Some(Distinct(0)), - enableABTest = Some(true), - enablePersonalization = Some(true), - enableReRanking = Some(true), - enableRules = Some(true), - exactOnSingleWordQuery = Some(ExactOnSingleWordQuery.withName("attribute")), - explain = Some(Seq("foo", "bar")), - facetFilters = Some(FacetFilters(Seq(MixedSearchFilters("")))), - facetingAfterDistinct = Some(true), - facets = Some(Seq("")), - filters = Some(""), - getRankingInfo = Some(true), - highlightPostTag = Some(""), - highlightPreTag = Some(""), - hitsPerPage = Some(1), - ignorePlurals = Some(IgnorePlurals(false)), - indexName = "theIndexName", - insideBoundingBox = Some(Seq(Seq(47.3165, 4.9665, 47.3424, 5.0201), Seq(40.9234, 2.1185, 38.643, 1.9916))), - insidePolygon = Some( - Seq( - Seq(47.3165, 4.9665, 47.3424, 5.0201, 47.32, 4.9), - Seq(40.9234, 2.1185, 38.643, 1.9916, 39.2587, 2.0104) - ) - ), - keepDiacriticsOnCharacters = Some(""), - length = Some(1), - maxValuesPerFacet = Some(0), - minProximity = Some(1), - minWordSizefor1Typo = Some(0), - minWordSizefor2Typos = Some(0), - minimumAroundRadius = Some(1), - naturalLanguages = Some(Seq("")), - numericFilters = Some(NumericFilters(Seq(MixedSearchFilters("")))), - offset = Some(0), - optionalFilters = Some(OptionalFilters(Seq(MixedSearchFilters("")))), - optionalWords = Some(Seq("")), - page = Some(0), - percentileComputation = Some(true), - personalizationImpact = Some(0), - query = Some(""), - queryLanguages = Some(Seq("")), - queryType = Some(QueryType.withName("prefixAll")), - ranking = Some(Seq("")), - reRankingApplyFilter = Some(ReRankingApplyFilter(Seq(MixedSearchFilters("")))), - relevancyStrictness = Some(0), - removeStopWords = Some(RemoveStopWords(true)), - removeWordsIfNoResults = Some(RemoveWordsIfNoResults.withName("allOptional")), - renderingContent = Some( - RenderingContent( - facetOrdering = Some( - FacetOrdering( - facets = Some( - Facets( - order = Some(Seq("a", "b")) - ) - ), - values = Some( - Map( - "a" -> Value( - order = Some(Seq("b")), - sortRemainingBy = Some(SortRemainingBy.withName("count")) - ) - ) - ) - ) - ) - ) - ), - replaceSynonymsInHighlight = Some(true), - responseFields = Some(Seq("")), - restrictHighlightAndSnippetArrays = Some(true), - restrictSearchableAttributes = Some(Seq("")), - ruleContexts = Some(Seq("")), - similarQuery = Some(""), - snippetEllipsisText = Some(""), - sortFacetValuesBy = Some(""), - sumOrFiltersScores = Some(true), - synonyms = Some(true), - tagFilters = Some(TagFilters(Seq(MixedSearchFilters("")))), - `type` = Some(SearchTypeDefault.withName("default")), - typoTolerance = Some(TypoToleranceEnum.withName("min")), - userToken = Some("") - ) - ) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/*/queries") - assert(res.method == "POST") - val expectedBody = parse( - """{"requests":[{"advancedSyntax":true,"advancedSyntaxFeatures":["exactPhrase"],"allowTyposOnNumericTokens":true,"alternativesAsExact":["multiWordsSynonym"],"analytics":true,"analyticsTags":[""],"aroundLatLng":"","aroundLatLngViaIP":true,"aroundPrecision":0,"aroundRadius":"all","attributeCriteriaComputedByMinProximity":true,"attributesForFaceting":[""],"attributesToHighlight":[""],"attributesToRetrieve":[""],"attributesToSnippet":[""],"clickAnalytics":true,"customRanking":[""],"decompoundQuery":true,"disableExactOnAttributes":[""],"disableTypoToleranceOnAttributes":[""],"distinct":0,"enableABTest":true,"enablePersonalization":true,"enableReRanking":true,"enableRules":true,"exactOnSingleWordQuery":"attribute","explain":["foo","bar"],"facetFilters":[""],"facetingAfterDistinct":true,"facets":[""],"filters":"","getRankingInfo":true,"highlightPostTag":"","highlightPreTag":"","hitsPerPage":1,"ignorePlurals":false,"indexName":"theIndexName","insideBoundingBox":[[47.3165,4.9665,47.3424,5.0201],[40.9234,2.1185,38.643,1.9916]],"insidePolygon":[[47.3165,4.9665,47.3424,5.0201,47.32,4.9],[40.9234,2.1185,38.643,1.9916,39.2587,2.0104]],"keepDiacriticsOnCharacters":"","length":1,"maxValuesPerFacet":0,"minProximity":1,"minWordSizefor1Typo":0,"minWordSizefor2Typos":0,"minimumAroundRadius":1,"naturalLanguages":[""],"numericFilters":[""],"offset":0,"optionalFilters":[""],"optionalWords":[""],"page":0,"percentileComputation":true,"personalizationImpact":0,"query":"","queryLanguages":[""],"queryType":"prefixAll","ranking":[""],"reRankingApplyFilter":[""],"relevancyStrictness":0,"removeStopWords":true,"removeWordsIfNoResults":"allOptional","renderingContent":{"facetOrdering":{"facets":{"order":["a","b"]},"values":{"a":{"order":["b"],"sortRemainingBy":"count"}}}},"replaceSynonymsInHighlight":true,"responseFields":[""],"restrictHighlightAndSnippetArrays":true,"restrictSearchableAttributes":[""],"ruleContexts":[""],"similarQuery":"","snippetEllipsisText":"","sortFacetValuesBy":"","sumOrFiltersScores":true,"synonyms":true,"tagFilters":[""],"type":"default","typoTolerance":"min","userToken":""}]}""" - ) - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("get searchDictionaryEntries results with minimal parameters") { - val (client, echo) = testClient() - val future = client.searchDictionaryEntries( - dictionaryName = DictionaryType.withName("compounds"), - searchDictionaryEntriesParams = SearchDictionaryEntriesParams( - query = "foo" - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/dictionaries/compounds/search") - assert(res.method == "POST") - val expectedBody = parse("""{"query":"foo"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("get searchDictionaryEntries results with all parameters") { - val (client, echo) = testClient() - val future = client.searchDictionaryEntries( - dictionaryName = DictionaryType.withName("compounds"), - searchDictionaryEntriesParams = SearchDictionaryEntriesParams( - query = "foo", - page = Some(4), - hitsPerPage = Some(2), - language = Some("fr") - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/dictionaries/compounds/search") - assert(res.method == "POST") - val expectedBody = parse("""{"query":"foo","page":4,"hitsPerPage":2,"language":"fr"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("get searchForFacetValues results with minimal parameters") { - val (client, echo) = testClient() - val future = client.searchForFacetValues( - indexName = "indexName", - facetName = "facetName" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/indexName/facets/facetName/query") - assert(res.method == "POST") - val expectedBody = parse("""{}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("get searchForFacetValues results with all parameters") { - val (client, echo) = testClient() - val future = client.searchForFacetValues( - indexName = "indexName", - facetName = "facetName", - searchForFacetValuesRequest = Some( - SearchForFacetValuesRequest( - params = Some("query=foo&facetFilters=['bar']"), - facetQuery = Some("foo"), - maxFacetHits = Some(42) - ) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/indexName/facets/facetName/query") - assert(res.method == "POST") - val expectedBody = parse("""{"params":"query=foo&facetFilters=['bar']","facetQuery":"foo","maxFacetHits":42}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("searchRules0") { - val (client, echo) = testClient() - val future = client.searchRules( - indexName = "indexName", - searchRulesParams = Some( - SearchRulesParams( - query = Some("something") - ) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/indexName/rules/search") - assert(res.method == "POST") - val expectedBody = parse("""{"query":"something"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("search with minimal parameters") { - val (client, echo) = testClient() - val future = client.searchSingleIndex( - indexName = "indexName" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/indexName/query") - assert(res.method == "POST") - val expectedBody = parse("""{}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("search with searchParams") { - val (client, echo) = testClient() - val future = client.searchSingleIndex( - indexName = "indexName", - searchParams = Some( - SearchParamsObject( - query = Some("myQuery"), - facetFilters = Some(FacetFilters(Seq(MixedSearchFilters("tags:algolia")))) - ) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/indexName/query") - assert(res.method == "POST") - val expectedBody = parse("""{"query":"myQuery","facetFilters":["tags:algolia"]}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("searchSynonyms with minimal parameters") { - val (client, echo) = testClient() - val future = client.searchSynonyms( - indexName = "indexName" - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/indexName/synonyms/search") - assert(res.method == "POST") - val expectedBody = parse("""{}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("searchSynonyms with all parameters") { - val (client, echo) = testClient() - val future = client.searchSynonyms( - indexName = "indexName", - `type` = Some(SynonymType.withName("altcorrection1")), - page = Some(10), - hitsPerPage = Some(10), - searchSynonymsParams = Some( - SearchSynonymsParams( - query = Some("myQuery") - ) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/indexName/synonyms/search") - assert(res.method == "POST") - val expectedBody = parse("""{"query":"myQuery"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = - parse("""{"type":"altcorrection1","page":"10","hitsPerPage":"10"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("searchUserIds0") { - val (client, echo) = testClient() - val future = client.searchUserIds( - searchUserIdsParams = SearchUserIdsParams( - query = "test", - clusterName = Some("theClusterName"), - page = Some(5), - hitsPerPage = Some(10) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/clusters/mapping/search") - assert(res.method == "POST") - val expectedBody = parse("""{"query":"test","clusterName":"theClusterName","page":5,"hitsPerPage":10}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("get setDictionarySettings results with minimal parameters") { - val (client, echo) = testClient() - val future = client.setDictionarySettings( - dictionarySettingsParams = DictionarySettingsParams( - disableStandardEntries = StandardEntries( - plurals = Some(Map("fr" -> false, "en" -> false, "ru" -> true)) - ) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/dictionaries/*/settings") - assert(res.method == "PUT") - val expectedBody = parse("""{"disableStandardEntries":{"plurals":{"fr":false,"en":false,"ru":true}}}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("get setDictionarySettings results with all parameters") { - val (client, echo) = testClient() - val future = client.setDictionarySettings( - dictionarySettingsParams = DictionarySettingsParams( - disableStandardEntries = StandardEntries( - plurals = Some(Map("fr" -> false, "en" -> false, "ru" -> true)), - stopwords = Some(Map("fr" -> false)), - compounds = Some(Map("ru" -> true)) - ) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/dictionaries/*/settings") - assert(res.method == "PUT") - val expectedBody = parse( - """{"disableStandardEntries":{"plurals":{"fr":false,"en":false,"ru":true},"stopwords":{"fr":false},"compounds":{"ru":true}}}""" - ) - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("setSettings with minimal parameters") { - val (client, echo) = testClient() - val future = client.setSettings( - indexName = "theIndexName", - indexSettings = IndexSettings( - paginationLimitedTo = Some(10) - ), - forwardToReplicas = Some(true) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/theIndexName/settings") - assert(res.method == "PUT") - val expectedBody = parse("""{"paginationLimitedTo":10}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"forwardToReplicas":"true"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("setSettings allow boolean `typoTolerance`") { - val (client, echo) = testClient() - val future = client.setSettings( - indexName = "theIndexName", - indexSettings = IndexSettings( - typoTolerance = Some(TypoTolerance(true)) - ), - forwardToReplicas = Some(true) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/theIndexName/settings") - assert(res.method == "PUT") - val expectedBody = parse("""{"typoTolerance":true}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"forwardToReplicas":"true"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("setSettings allow enum `typoTolerance`") { - val (client, echo) = testClient() - val future = client.setSettings( - indexName = "theIndexName", - indexSettings = IndexSettings( - typoTolerance = Some(TypoToleranceEnum.withName("min")) - ), - forwardToReplicas = Some(true) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/theIndexName/settings") - assert(res.method == "PUT") - val expectedBody = parse("""{"typoTolerance":"min"}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"forwardToReplicas":"true"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("setSettings allow boolean `ignorePlurals`") { - val (client, echo) = testClient() - val future = client.setSettings( - indexName = "theIndexName", - indexSettings = IndexSettings( - ignorePlurals = Some(IgnorePlurals(true)) - ), - forwardToReplicas = Some(true) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/theIndexName/settings") - assert(res.method == "PUT") - val expectedBody = parse("""{"ignorePlurals":true}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"forwardToReplicas":"true"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("setSettings allow list of string `ignorePlurals`") { - val (client, echo) = testClient() - val future = client.setSettings( - indexName = "theIndexName", - indexSettings = IndexSettings( - ignorePlurals = Some(IgnorePlurals(Seq("algolia"))) - ), - forwardToReplicas = Some(true) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/theIndexName/settings") - assert(res.method == "PUT") - val expectedBody = parse("""{"ignorePlurals":["algolia"]}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"forwardToReplicas":"true"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("setSettings allow boolean `removeStopWords`") { - val (client, echo) = testClient() - val future = client.setSettings( - indexName = "theIndexName", - indexSettings = IndexSettings( - removeStopWords = Some(RemoveStopWords(true)) - ), - forwardToReplicas = Some(true) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/theIndexName/settings") - assert(res.method == "PUT") - val expectedBody = parse("""{"removeStopWords":true}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"forwardToReplicas":"true"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("setSettings allow list of string `removeStopWords`") { - val (client, echo) = testClient() - val future = client.setSettings( - indexName = "theIndexName", - indexSettings = IndexSettings( - removeStopWords = Some(RemoveStopWords(Seq("algolia"))) - ), - forwardToReplicas = Some(true) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/theIndexName/settings") - assert(res.method == "PUT") - val expectedBody = parse("""{"removeStopWords":["algolia"]}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"forwardToReplicas":"true"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("setSettings allow boolean `distinct`") { - val (client, echo) = testClient() - val future = client.setSettings( - indexName = "theIndexName", - indexSettings = IndexSettings( - distinct = Some(Distinct(true)) - ), - forwardToReplicas = Some(true) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/theIndexName/settings") - assert(res.method == "PUT") - val expectedBody = parse("""{"distinct":true}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"forwardToReplicas":"true"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("setSettings allow integers for `distinct`") { - val (client, echo) = testClient() - val future = client.setSettings( - indexName = "theIndexName", - indexSettings = IndexSettings( - distinct = Some(Distinct(1)) - ), - forwardToReplicas = Some(true) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/theIndexName/settings") - assert(res.method == "PUT") - val expectedBody = parse("""{"distinct":1}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - val expectedQuery = parse("""{"forwardToReplicas":"true"}""").asInstanceOf[JObject].obj.toMap - val actualQuery = res.queryParameters - assert(actualQuery.size == expectedQuery.size) - for ((k, v) <- actualQuery) { - assert(expectedQuery.contains(k)) - assert(expectedQuery(k).values == v) - } - } - - test("setSettings allow all `indexSettings`") { - val (client, echo) = testClient() - val future = client.setSettings( - indexName = "theIndexName", - indexSettings = IndexSettings( - advancedSyntax = Some(true), - advancedSyntaxFeatures = Some(Seq(AdvancedSyntaxFeatures.withName("exactPhrase"))), - allowCompressionOfIntegerArray = Some(true), - allowTyposOnNumericTokens = Some(true), - alternativesAsExact = Some(Seq(AlternativesAsExact.withName("singleWordSynonym"))), - attributeCriteriaComputedByMinProximity = Some(true), - attributeForDistinct = Some("test"), - attributesForFaceting = Some(Seq("algolia")), - attributesToHighlight = Some(Seq("algolia")), - attributesToRetrieve = Some(Seq("algolia")), - attributesToSnippet = Some(Seq("algolia")), - attributesToTransliterate = Some(Seq("algolia")), - camelCaseAttributes = Some(Seq("algolia")), - customNormalization = Some(Map("algolia" -> Map("aloglia" -> "aglolia"))), - customRanking = Some(Seq("algolia")), - decompoundQuery = Some(false), - decompoundedAttributes = Some(JObject(List(JField("algolia", JString("aloglia"))))), - disableExactOnAttributes = Some(Seq("algolia")), - disablePrefixOnAttributes = Some(Seq("algolia")), - disableTypoToleranceOnAttributes = Some(Seq("algolia")), - disableTypoToleranceOnWords = Some(Seq("algolia")), - distinct = Some(Distinct(3)), - enablePersonalization = Some(true), - enableReRanking = Some(false), - enableRules = Some(true), - exactOnSingleWordQuery = Some(ExactOnSingleWordQuery.withName("attribute")), - highlightPreTag = Some(""), - highlightPostTag = Some(""), - hitsPerPage = Some(10), - ignorePlurals = Some(IgnorePlurals(false)), - indexLanguages = Some(Seq("algolia")), - keepDiacriticsOnCharacters = Some("abc"), - maxFacetHits = Some(20), - maxValuesPerFacet = Some(30), - minProximity = Some(6), - minWordSizefor1Typo = Some(5), - minWordSizefor2Typos = Some(11), - mode = Some(Mode.withName("neuralSearch")), - numericAttributesForFiltering = Some(Seq("algolia")), - optionalWords = Some(Seq("myspace")), - paginationLimitedTo = Some(0), - queryLanguages = Some(Seq("algolia")), - queryType = Some(QueryType.withName("prefixLast")), - ranking = Some(Seq("geo")), - reRankingApplyFilter = Some(ReRankingApplyFilter("mySearch:filters")), - relevancyStrictness = Some(10), - removeStopWords = Some(RemoveStopWords(false)), - removeWordsIfNoResults = Some(RemoveWordsIfNoResults.withName("lastWords")), - renderingContent = Some( - RenderingContent( - facetOrdering = Some( - FacetOrdering( - facets = Some( - Facets( - order = Some(Seq("a", "b")) - ) - ), - values = Some( - Map( - "a" -> Value( - order = Some(Seq("b")), - sortRemainingBy = Some(SortRemainingBy.withName("count")) - ) - ) - ) - ) - ) - ) - ), - replaceSynonymsInHighlight = Some(true), - replicas = Some(Seq("")), - responseFields = Some(Seq("algolia")), - restrictHighlightAndSnippetArrays = Some(true), - searchableAttributes = Some(Seq("foo")), - semanticSearch = Some( - SemanticSearch( - eventSources = Some(Seq("foo")) - ) - ), - separatorsToIndex = Some("bar"), - snippetEllipsisText = Some("---"), - sortFacetValuesBy = Some("date"), - typoTolerance = Some(TypoTolerance(false)), - unretrievableAttributes = Some(Seq("foo")), - userData = Some(JObject(List(JField("user", JString("data"))))) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/indexes/theIndexName/settings") - assert(res.method == "PUT") - val expectedBody = parse( - """{"advancedSyntax":true,"advancedSyntaxFeatures":["exactPhrase"],"allowCompressionOfIntegerArray":true,"allowTyposOnNumericTokens":true,"alternativesAsExact":["singleWordSynonym"],"attributeCriteriaComputedByMinProximity":true,"attributeForDistinct":"test","attributesForFaceting":["algolia"],"attributesToHighlight":["algolia"],"attributesToRetrieve":["algolia"],"attributesToSnippet":["algolia"],"attributesToTransliterate":["algolia"],"camelCaseAttributes":["algolia"],"customNormalization":{"algolia":{"aloglia":"aglolia"}},"customRanking":["algolia"],"decompoundQuery":false,"decompoundedAttributes":{"algolia":"aloglia"},"disableExactOnAttributes":["algolia"],"disablePrefixOnAttributes":["algolia"],"disableTypoToleranceOnAttributes":["algolia"],"disableTypoToleranceOnWords":["algolia"],"distinct":3,"enablePersonalization":true,"enableReRanking":false,"enableRules":true,"exactOnSingleWordQuery":"attribute","highlightPreTag":"","highlightPostTag":"","hitsPerPage":10,"ignorePlurals":false,"indexLanguages":["algolia"],"keepDiacriticsOnCharacters":"abc","maxFacetHits":20,"maxValuesPerFacet":30,"minProximity":6,"minWordSizefor1Typo":5,"minWordSizefor2Typos":11,"mode":"neuralSearch","numericAttributesForFiltering":["algolia"],"optionalWords":["myspace"],"paginationLimitedTo":0,"queryLanguages":["algolia"],"queryType":"prefixLast","ranking":["geo"],"reRankingApplyFilter":"mySearch:filters","relevancyStrictness":10,"removeStopWords":false,"removeWordsIfNoResults":"lastWords","renderingContent":{"facetOrdering":{"facets":{"order":["a","b"]},"values":{"a":{"order":["b"],"sortRemainingBy":"count"}}}},"replaceSynonymsInHighlight":true,"replicas":[""],"responseFields":["algolia"],"restrictHighlightAndSnippetArrays":true,"searchableAttributes":["foo"],"semanticSearch":{"eventSources":["foo"]},"separatorsToIndex":"bar","snippetEllipsisText":"---","sortFacetValuesBy":"date","typoTolerance":false,"unretrievableAttributes":["foo"],"userData":{"user":"data"}}""" - ) - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - - test("updateApiKey0") { - val (client, echo) = testClient() - val future = client.updateApiKey( - key = "myApiKey", - apiKey = ApiKey( - acl = Seq(Acl.withName("search"), Acl.withName("addObject")), - validity = Some(300), - maxQueriesPerIPPerHour = Some(100), - maxHitsPerQuery = Some(20) - ) - ) - - Await.ready(future, Duration.Inf) - val res = echo.lastResponse.get - - assert(res.path == "/1/keys/myApiKey") - assert(res.method == "PUT") - val expectedBody = - parse("""{"acl":["search","addObject"],"validity":300,"maxQueriesPerIPPerHour":100,"maxHitsPerQuery":20}""") - val actualBody = parse(res.body.get) - assert(actualBody == expectedBody) - } - -} diff --git a/website/docs/contributing/testing/common-test-suite.md b/website/docs/contributing/testing/common-test-suite.md index fab3793993..c7a93e35fc 100644 --- a/website/docs/contributing/testing/common-test-suite.md +++ b/website/docs/contributing/testing/common-test-suite.md @@ -23,9 +23,9 @@ There are differents type of tests in the CTS: Those tests aims at ensuring minimal working operation for the API clients, by comparing the request formed by sample parameters. -The test generation script requires a JSON file name from the `operationId` (e.g. `search.json`), located in the `tests/CTS/methods/requests//` folder (e.g. `tests/CTS/methods/requests/search/`). +The test generation script requires a JSON file name from the `operationId` (e.g. `search.json`), located in the `tests/CTS/requests//` folder (e.g. `tests/CTS/requests/search/`). -> See the [browse test file for the search client](https://github.com/algolia/api-clients-automation/blob/main/tests/CTS/methods/requests/search/browse.json) +> See the [browse test file for the search client](https://github.com/algolia/api-clients-automation/blob/main/tests/CTS/requests/search/browse.json) ```json [ @@ -254,7 +254,7 @@ If specific values are needed for a specific languages, or custom generated file You might want to test how every clients behaves, without having to duplicate the same tests. We provide 4 methods on every clients, common to all languages. -You can find [the common folder](https://github.com/algolia/api-clients-automation/tree/main/tests/CTS/methods/requests/common) in the CTS too. [Adding a test](#how-to-add-test) in this folder will generate tests for all the clients. +You can find [the common folder](https://github.com/algolia/api-clients-automation/tree/main/tests/CTS/requests/common) in the CTS too. [Adding a test](#how-to-add-test) in this folder will generate tests for all the clients. ## Get the list of remaining CTS to implement From a45b9991e4a2f21eb0b09c0567e9ac5a7af22051 Mon Sep 17 00:00:00 2001 From: algolia-bot Date: Tue, 26 Dec 2023 14:38:50 +0000 Subject: [PATCH 2/2] chore: generated code for commit bdcc93ba606beca78fbbe0a6290378cccb57a411. [skip ci] MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Clément Vannicatte --- .../test/requests/algoliasearch_test.dart | 821 ++++ .../dart/test/requests/insights_test.dart | 730 +++ .../dart/test/requests/recommend_test.dart | 859 ++++ .../dart/test/requests/search_test.dart | 3431 +++++++++++++ .../go/tests/requests/analytics_test.go | 1565 ++++++ tests/output/go/tests/requests/common.go | 35 + .../go/tests/requests/ingestion_test.go | 1678 +++++++ .../output/go/tests/requests/insights_test.go | 629 +++ .../go/tests/requests/monitoring_test.go | 810 +++ .../go/tests/requests/personalization_test.go | 653 +++ .../tests/requests/query-suggestions_test.go | 753 +++ .../go/tests/requests/recommend_test.go | 797 +++ tests/output/go/tests/requests/search_test.go | 3203 ++++++++++++ .../com/algolia/requests/Abtesting.test.java | 764 +++ .../com/algolia/requests/Analytics.test.java | 1675 +++++++ .../com/algolia/requests/Insights.test.java | 958 ++++ .../com/algolia/requests/Monitoring.test.java | 753 +++ .../requests/Personalization.test.java | 722 +++ .../requests/QuerySuggestions.test.java | 847 ++++ .../com/algolia/requests/Recommend.test.java | 1089 +++++ .../com/algolia/requests/Search.test.java | 4328 +++++++++++++++++ .../javascript/src/requests/abtesting.test.ts | 408 ++ .../src/requests/algoliasearch.test.ts | 707 +++ .../javascript/src/requests/analytics.test.ts | 929 ++++ .../javascript/src/requests/ingestion.test.ts | 901 ++++ .../javascript/src/requests/insights.test.ts | 523 ++ .../src/requests/monitoring.test.ts | 426 ++ .../src/requests/personalization.test.ts | 373 ++ .../src/requests/querySuggestions.test.ts | 446 ++ .../javascript/src/requests/recommend.test.ts | 612 +++ .../javascript/src/requests/search.test.ts | 2487 ++++++++++ .../com/algolia/requests/AbtestingTest.kt | 560 +++ .../com/algolia/requests/AnalyticsTest.kt | 1150 +++++ .../com/algolia/requests/IngestionTest.kt | 1146 +++++ .../com/algolia/requests/InsightsTest.kt | 609 +++ .../com/algolia/requests/MonitoringTest.kt | 595 +++ .../algolia/requests/PersonalizationTest.kt | 524 ++ .../algolia/requests/QuerySuggestionsTest.kt | 593 +++ .../com/algolia/requests/RecommendTest.kt | 742 +++ .../kotlin/com/algolia/requests/SearchTest.kt | 2851 +++++++++++ .../output/php/src/requests/AbtestingTest.php | 697 +++ .../output/php/src/requests/AnalyticsTest.php | 1381 ++++++ .../output/php/src/requests/InsightsTest.php | 769 +++ .../php/src/requests/MonitoringTest.php | 739 +++ .../php/src/requests/PersonalizationTest.php | 654 +++ .../php/src/requests/QuerySuggestionsTest.php | 754 +++ .../output/php/src/requests/RecommendTest.php | 896 ++++ tests/output/php/src/requests/SearchTest.php | 3385 +++++++++++++ .../python/tests/requests/abtesting_test.py | 472 ++ .../python/tests/requests/analytics_test.py | 1100 +++++ .../python/tests/requests/ingestion_test.py | 971 ++++ .../python/tests/requests/insights_test.py | 554 +++ .../python/tests/requests/monitoring_test.py | 486 ++ .../tests/requests/personalization_test.py | 436 ++ .../tests/requests/query_suggestions_test.py | 519 ++ .../python/tests/requests/recommend_test.py | 675 +++ .../python/tests/requests/search_test.py | 2796 +++++++++++ .../ruby/test/requests/abtesting_test.rb | 289 ++ .../ruby/test/requests/analytics_test.rb | 650 +++ .../ruby/test/requests/ingestion_test.rb | 638 +++ .../ruby/test/requests/insights_test.rb | 289 ++ .../ruby/test/requests/monitoring_test.rb | 325 ++ .../test/requests/personalization_test.rb | 269 + .../ruby/test/requests/recommend_test.rb | 360 ++ .../output/ruby/test/requests/search_test.rb | 1362 ++++++ .../requests/AbtestingTest.scala | 590 +++ .../requests/AnalyticsTest.scala | 1338 +++++ .../requests/IngestionTest.scala | 1100 +++++ .../algoliasearch/requests/InsightsTest.scala | 659 +++ .../requests/MonitoringTest.scala | 602 +++ .../requests/PersonalizationTest.scala | 553 +++ .../requests/QuerySuggestionsTest.scala | 618 +++ .../requests/RecommendTest.scala | 794 +++ .../algoliasearch/requests/SearchTest.scala | 2918 +++++++++++ 74 files changed, 74320 insertions(+) create mode 100644 tests/output/dart/test/requests/algoliasearch_test.dart create mode 100644 tests/output/dart/test/requests/insights_test.dart create mode 100644 tests/output/dart/test/requests/recommend_test.dart create mode 100644 tests/output/dart/test/requests/search_test.dart create mode 100644 tests/output/go/tests/requests/analytics_test.go create mode 100644 tests/output/go/tests/requests/common.go create mode 100644 tests/output/go/tests/requests/ingestion_test.go create mode 100644 tests/output/go/tests/requests/insights_test.go create mode 100644 tests/output/go/tests/requests/monitoring_test.go create mode 100644 tests/output/go/tests/requests/personalization_test.go create mode 100644 tests/output/go/tests/requests/query-suggestions_test.go create mode 100644 tests/output/go/tests/requests/recommend_test.go create mode 100644 tests/output/go/tests/requests/search_test.go create mode 100644 tests/output/java/src/test/java/com/algolia/requests/Abtesting.test.java create mode 100644 tests/output/java/src/test/java/com/algolia/requests/Analytics.test.java create mode 100644 tests/output/java/src/test/java/com/algolia/requests/Insights.test.java create mode 100644 tests/output/java/src/test/java/com/algolia/requests/Monitoring.test.java create mode 100644 tests/output/java/src/test/java/com/algolia/requests/Personalization.test.java create mode 100644 tests/output/java/src/test/java/com/algolia/requests/QuerySuggestions.test.java create mode 100644 tests/output/java/src/test/java/com/algolia/requests/Recommend.test.java create mode 100644 tests/output/java/src/test/java/com/algolia/requests/Search.test.java create mode 100644 tests/output/javascript/src/requests/abtesting.test.ts create mode 100644 tests/output/javascript/src/requests/algoliasearch.test.ts create mode 100644 tests/output/javascript/src/requests/analytics.test.ts create mode 100644 tests/output/javascript/src/requests/ingestion.test.ts create mode 100644 tests/output/javascript/src/requests/insights.test.ts create mode 100644 tests/output/javascript/src/requests/monitoring.test.ts create mode 100644 tests/output/javascript/src/requests/personalization.test.ts create mode 100644 tests/output/javascript/src/requests/querySuggestions.test.ts create mode 100644 tests/output/javascript/src/requests/recommend.test.ts create mode 100644 tests/output/javascript/src/requests/search.test.ts create mode 100644 tests/output/kotlin/src/commonTest/kotlin/com/algolia/requests/AbtestingTest.kt create mode 100644 tests/output/kotlin/src/commonTest/kotlin/com/algolia/requests/AnalyticsTest.kt create mode 100644 tests/output/kotlin/src/commonTest/kotlin/com/algolia/requests/IngestionTest.kt create mode 100644 tests/output/kotlin/src/commonTest/kotlin/com/algolia/requests/InsightsTest.kt create mode 100644 tests/output/kotlin/src/commonTest/kotlin/com/algolia/requests/MonitoringTest.kt create mode 100644 tests/output/kotlin/src/commonTest/kotlin/com/algolia/requests/PersonalizationTest.kt create mode 100644 tests/output/kotlin/src/commonTest/kotlin/com/algolia/requests/QuerySuggestionsTest.kt create mode 100644 tests/output/kotlin/src/commonTest/kotlin/com/algolia/requests/RecommendTest.kt create mode 100644 tests/output/kotlin/src/commonTest/kotlin/com/algolia/requests/SearchTest.kt create mode 100644 tests/output/php/src/requests/AbtestingTest.php create mode 100644 tests/output/php/src/requests/AnalyticsTest.php create mode 100644 tests/output/php/src/requests/InsightsTest.php create mode 100644 tests/output/php/src/requests/MonitoringTest.php create mode 100644 tests/output/php/src/requests/PersonalizationTest.php create mode 100644 tests/output/php/src/requests/QuerySuggestionsTest.php create mode 100644 tests/output/php/src/requests/RecommendTest.php create mode 100644 tests/output/php/src/requests/SearchTest.php create mode 100644 tests/output/python/tests/requests/abtesting_test.py create mode 100644 tests/output/python/tests/requests/analytics_test.py create mode 100644 tests/output/python/tests/requests/ingestion_test.py create mode 100644 tests/output/python/tests/requests/insights_test.py create mode 100644 tests/output/python/tests/requests/monitoring_test.py create mode 100644 tests/output/python/tests/requests/personalization_test.py create mode 100644 tests/output/python/tests/requests/query_suggestions_test.py create mode 100644 tests/output/python/tests/requests/recommend_test.py create mode 100644 tests/output/python/tests/requests/search_test.py create mode 100644 tests/output/ruby/test/requests/abtesting_test.rb create mode 100644 tests/output/ruby/test/requests/analytics_test.rb create mode 100644 tests/output/ruby/test/requests/ingestion_test.rb create mode 100644 tests/output/ruby/test/requests/insights_test.rb create mode 100644 tests/output/ruby/test/requests/monitoring_test.rb create mode 100644 tests/output/ruby/test/requests/personalization_test.rb create mode 100644 tests/output/ruby/test/requests/recommend_test.rb create mode 100644 tests/output/ruby/test/requests/search_test.rb create mode 100644 tests/output/scala/src/test/scala/algoliasearch/requests/AbtestingTest.scala create mode 100644 tests/output/scala/src/test/scala/algoliasearch/requests/AnalyticsTest.scala create mode 100644 tests/output/scala/src/test/scala/algoliasearch/requests/IngestionTest.scala create mode 100644 tests/output/scala/src/test/scala/algoliasearch/requests/InsightsTest.scala create mode 100644 tests/output/scala/src/test/scala/algoliasearch/requests/MonitoringTest.scala create mode 100644 tests/output/scala/src/test/scala/algoliasearch/requests/PersonalizationTest.scala create mode 100644 tests/output/scala/src/test/scala/algoliasearch/requests/QuerySuggestionsTest.scala create mode 100644 tests/output/scala/src/test/scala/algoliasearch/requests/RecommendTest.scala create mode 100644 tests/output/scala/src/test/scala/algoliasearch/requests/SearchTest.scala diff --git a/tests/output/dart/test/requests/algoliasearch_test.dart b/tests/output/dart/test/requests/algoliasearch_test.dart new file mode 100644 index 0000000000..1afaf98f54 --- /dev/null +++ b/tests/output/dart/test/requests/algoliasearch_test.dart @@ -0,0 +1,821 @@ +import 'package:algoliasearch/algoliasearch_lite.dart'; +import 'package:algolia_test/algolia_test.dart'; +import 'package:test/test.dart'; + +void main() { + // customPost + test( + 'allow post method for a custom path with minimal parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPost( + path: "/test/minimal", + ), + intercept: (request) { + expectPath(request.path, '/1/test/minimal'); + expect(request.method, 'post'); + expectBody(request.body, """{}"""); + }, + ), + ); + + // customPost + test( + 'allow post method for a custom path with all parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPost( + path: "/test/all", + parameters: { + 'query': "parameters", + }, + body: { + 'body': "parameters", + }, + ), + intercept: (request) { + expectPath(request.path, '/1/test/all'); + expect(request.method, 'post'); + expectParams(request.queryParameters, """{"query":"parameters"}"""); + expectBody(request.body, """{"body":"parameters"}"""); + }, + ), + ); + + // customPost + test( + 'requestOptions can override default query parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPost( + path: "/test/requestOptions", + parameters: { + 'query': "parameters", + }, + body: { + 'facet': "filters", + }, + requestOptions: RequestOptions( + urlParameters: { + 'query': "myQueryParameter", + }, + ), + ), + intercept: (request) { + expectPath(request.path, '/1/test/requestOptions'); + expect(request.method, 'post'); + expectParams( + request.queryParameters, """{"query":"myQueryParameter"}"""); + expectBody(request.body, """{"facet":"filters"}"""); + }, + ), + ); + + // customPost + test( + 'requestOptions merges query parameters with default ones', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPost( + path: "/test/requestOptions", + parameters: { + 'query': "parameters", + }, + body: { + 'facet': "filters", + }, + requestOptions: RequestOptions( + urlParameters: { + 'query2': "myQueryParameter", + }, + ), + ), + intercept: (request) { + expectPath(request.path, '/1/test/requestOptions'); + expect(request.method, 'post'); + expectParams(request.queryParameters, + """{"query":"parameters","query2":"myQueryParameter"}"""); + expectBody(request.body, """{"facet":"filters"}"""); + }, + ), + ); + + // customPost + test( + 'requestOptions can override default headers', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPost( + path: "/test/requestOptions", + parameters: { + 'query': "parameters", + }, + body: { + 'facet': "filters", + }, + requestOptions: RequestOptions( + headers: { + 'x-algolia-api-key': 'myApiKey', + }, + ), + ), + intercept: (request) { + expectPath(request.path, '/1/test/requestOptions'); + expect(request.method, 'post'); + expectHeaders(request.headers, """{"x-algolia-api-key":"myApiKey"}"""); + expectParams(request.queryParameters, """{"query":"parameters"}"""); + expectBody(request.body, """{"facet":"filters"}"""); + }, + ), + ); + + // customPost + test( + 'requestOptions merges headers with default ones', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPost( + path: "/test/requestOptions", + parameters: { + 'query': "parameters", + }, + body: { + 'facet': "filters", + }, + requestOptions: RequestOptions( + headers: { + 'x-algolia-api-key': 'myApiKey', + }, + ), + ), + intercept: (request) { + expectPath(request.path, '/1/test/requestOptions'); + expect(request.method, 'post'); + expectHeaders(request.headers, """{"x-algolia-api-key":"myApiKey"}"""); + expectParams(request.queryParameters, """{"query":"parameters"}"""); + expectBody(request.body, """{"facet":"filters"}"""); + }, + ), + ); + + // customPost + test( + 'requestOptions queryParameters accepts booleans', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPost( + path: "/test/requestOptions", + parameters: { + 'query': "parameters", + }, + body: { + 'facet': "filters", + }, + requestOptions: RequestOptions( + urlParameters: { + 'isItWorking': true, + }, + ), + ), + intercept: (request) { + expectPath(request.path, '/1/test/requestOptions'); + expect(request.method, 'post'); + expectParams(request.queryParameters, + """{"query":"parameters","isItWorking":"true"}"""); + expectBody(request.body, """{"facet":"filters"}"""); + }, + ), + ); + + // customPost + test( + 'requestOptions queryParameters accepts integers', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPost( + path: "/test/requestOptions", + parameters: { + 'query': "parameters", + }, + body: { + 'facet': "filters", + }, + requestOptions: RequestOptions( + urlParameters: { + 'myParam': 2, + }, + ), + ), + intercept: (request) { + expectPath(request.path, '/1/test/requestOptions'); + expect(request.method, 'post'); + expectParams(request.queryParameters, + """{"query":"parameters","myParam":"2"}"""); + expectBody(request.body, """{"facet":"filters"}"""); + }, + ), + ); + + // customPost + test( + 'requestOptions queryParameters accepts list of string', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPost( + path: "/test/requestOptions", + parameters: { + 'query': "parameters", + }, + body: { + 'facet': "filters", + }, + requestOptions: RequestOptions( + urlParameters: { + 'myParam': [ + "c", + "d", + ], + }, + ), + ), + intercept: (request) { + expectPath(request.path, '/1/test/requestOptions'); + expect(request.method, 'post'); + expectParams(request.queryParameters, + """{"query":"parameters","myParam":"c,d"}"""); + expectBody(request.body, """{"facet":"filters"}"""); + }, + ), + ); + + // customPost + test( + 'requestOptions queryParameters accepts list of booleans', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPost( + path: "/test/requestOptions", + parameters: { + 'query': "parameters", + }, + body: { + 'facet': "filters", + }, + requestOptions: RequestOptions( + urlParameters: { + 'myParam': [ + true, + true, + false, + ], + }, + ), + ), + intercept: (request) { + expectPath(request.path, '/1/test/requestOptions'); + expect(request.method, 'post'); + expectParams(request.queryParameters, + """{"query":"parameters","myParam":"true,true,false"}"""); + expectBody(request.body, """{"facet":"filters"}"""); + }, + ), + ); + + // customPost + test( + 'requestOptions queryParameters accepts list of integers', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPost( + path: "/test/requestOptions", + parameters: { + 'query': "parameters", + }, + body: { + 'facet': "filters", + }, + requestOptions: RequestOptions( + urlParameters: { + 'myParam': [ + 1, + 2, + ], + }, + ), + ), + intercept: (request) { + expectPath(request.path, '/1/test/requestOptions'); + expect(request.method, 'post'); + expectParams(request.queryParameters, + """{"query":"parameters","myParam":"1,2"}"""); + expectBody(request.body, """{"facet":"filters"}"""); + }, + ), + ); + + // search + test( + 'search for a single hits request with minimal parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.search( + searchMethodParams: SearchMethodParams( + requests: [ + SearchForHits( + indexName: "cts_e2e_search_empty_index", + ), + ], + ), + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/*/queries'); + expect(request.method, 'post'); + expectBody(request.body, + """{"requests":[{"indexName":"cts_e2e_search_empty_index"}]}"""); + }, + ), + ); + + // search + test( + 'search for a single facet request with minimal parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.search( + searchMethodParams: SearchMethodParams( + requests: [ + SearchForFacets( + indexName: "cts_e2e_search_facet", + type: SearchTypeFacet.fromJson("facet"), + facet: "editor", + ), + ], + strategy: SearchStrategy.fromJson("stopIfEnoughMatches"), + ), + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/*/queries'); + expect(request.method, 'post'); + expectBody(request.body, + """{"requests":[{"indexName":"cts_e2e_search_facet","type":"facet","facet":"editor"}],"strategy":"stopIfEnoughMatches"}"""); + }, + ), + ); + + // search + test( + 'search for a single hits request with all parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.search( + searchMethodParams: SearchMethodParams( + requests: [ + SearchForHits( + indexName: "theIndexName", + query: "myQuery", + hitsPerPage: 50, + type: SearchTypeDefault.fromJson("default"), + ), + ], + ), + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/*/queries'); + expect(request.method, 'post'); + expectBody(request.body, + """{"requests":[{"indexName":"theIndexName","query":"myQuery","hitsPerPage":50,"type":"default"}]}"""); + }, + ), + ); + + // search + test( + 'search for a single facet request with all parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.search( + searchMethodParams: SearchMethodParams( + requests: [ + SearchForFacets( + indexName: "theIndexName", + type: SearchTypeFacet.fromJson("facet"), + facet: "theFacet", + facetQuery: "theFacetQuery", + query: "theQuery", + maxFacetHits: 50, + ), + ], + strategy: SearchStrategy.fromJson("stopIfEnoughMatches"), + ), + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/*/queries'); + expect(request.method, 'post'); + expectBody(request.body, + """{"requests":[{"indexName":"theIndexName","type":"facet","facet":"theFacet","facetQuery":"theFacetQuery","query":"theQuery","maxFacetHits":50}],"strategy":"stopIfEnoughMatches"}"""); + }, + ), + ); + + // search + test( + 'search for multiple mixed requests in multiple indices with minimal parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.search( + searchMethodParams: SearchMethodParams( + requests: [ + SearchForHits( + indexName: "theIndexName", + ), + SearchForFacets( + indexName: "theIndexName2", + type: SearchTypeFacet.fromJson("facet"), + facet: "theFacet", + ), + SearchForHits( + indexName: "theIndexName", + type: SearchTypeDefault.fromJson("default"), + ), + ], + strategy: SearchStrategy.fromJson("stopIfEnoughMatches"), + ), + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/*/queries'); + expect(request.method, 'post'); + expectBody(request.body, + """{"requests":[{"indexName":"theIndexName"},{"indexName":"theIndexName2","type":"facet","facet":"theFacet"},{"indexName":"theIndexName","type":"default"}],"strategy":"stopIfEnoughMatches"}"""); + }, + ), + ); + + // search + test( + 'search for multiple mixed requests in multiple indices with all parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.search( + searchMethodParams: SearchMethodParams( + requests: [ + SearchForFacets( + indexName: "theIndexName", + type: SearchTypeFacet.fromJson("facet"), + facet: "theFacet", + facetQuery: "theFacetQuery", + query: "theQuery", + maxFacetHits: 50, + ), + SearchForHits( + indexName: "theIndexName", + query: "myQuery", + hitsPerPage: 50, + type: SearchTypeDefault.fromJson("default"), + ), + ], + strategy: SearchStrategy.fromJson("stopIfEnoughMatches"), + ), + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/*/queries'); + expect(request.method, 'post'); + expectBody(request.body, + """{"requests":[{"indexName":"theIndexName","type":"facet","facet":"theFacet","facetQuery":"theFacetQuery","query":"theQuery","maxFacetHits":50},{"indexName":"theIndexName","query":"myQuery","hitsPerPage":50,"type":"default"}],"strategy":"stopIfEnoughMatches"}"""); + }, + ), + ); + + // search + test( + 'search filters accept all of the possible shapes', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.search( + searchMethodParams: SearchMethodParams( + requests: [ + SearchForHits( + indexName: "theIndexName", + facetFilters: "mySearch:filters", + reRankingApplyFilter: "mySearch:filters", + tagFilters: "mySearch:filters", + numericFilters: "mySearch:filters", + optionalFilters: "mySearch:filters", + ), + SearchForHits( + indexName: "theIndexName", + facetFilters: [ + "mySearch:filters", + [ + "mySearch:filters", + ], + ], + reRankingApplyFilter: [ + "mySearch:filters", + [ + "mySearch:filters", + ], + ], + tagFilters: [ + "mySearch:filters", + [ + "mySearch:filters", + ], + ], + numericFilters: [ + "mySearch:filters", + [ + "mySearch:filters", + ], + ], + optionalFilters: [ + "mySearch:filters", + [ + "mySearch:filters", + ], + ], + ), + ], + ), + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/*/queries'); + expect(request.method, 'post'); + expectBody(request.body, + """{"requests":[{"indexName":"theIndexName","facetFilters":"mySearch:filters","reRankingApplyFilter":"mySearch:filters","tagFilters":"mySearch:filters","numericFilters":"mySearch:filters","optionalFilters":"mySearch:filters"},{"indexName":"theIndexName","facetFilters":["mySearch:filters",["mySearch:filters"]],"reRankingApplyFilter":["mySearch:filters",["mySearch:filters"]],"tagFilters":["mySearch:filters",["mySearch:filters"]],"numericFilters":["mySearch:filters",["mySearch:filters"]],"optionalFilters":["mySearch:filters",["mySearch:filters"]]}]}"""); + }, + ), + ); + + // search + test( + 'search with all search parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.search( + searchMethodParams: SearchMethodParams( + requests: [ + SearchForHits( + advancedSyntax: true, + advancedSyntaxFeatures: [ + AdvancedSyntaxFeatures.fromJson("exactPhrase"), + ], + allowTyposOnNumericTokens: true, + alternativesAsExact: [ + AlternativesAsExact.fromJson("multiWordsSynonym"), + ], + analytics: true, + analyticsTags: [ + "", + ], + aroundLatLng: "", + aroundLatLngViaIP: true, + aroundPrecision: 0, + aroundRadius: AroundRadiusAll.fromJson("all"), + attributeCriteriaComputedByMinProximity: true, + attributesForFaceting: [ + "", + ], + attributesToHighlight: [ + "", + ], + attributesToRetrieve: [ + "", + ], + attributesToSnippet: [ + "", + ], + clickAnalytics: true, + customRanking: [ + "", + ], + decompoundQuery: true, + disableExactOnAttributes: [ + "", + ], + disableTypoToleranceOnAttributes: [ + "", + ], + distinct: 0, + enableABTest: true, + enablePersonalization: true, + enableReRanking: true, + enableRules: true, + exactOnSingleWordQuery: + ExactOnSingleWordQuery.fromJson("attribute"), + explain: [ + "foo", + "bar", + ], + facetFilters: [ + "", + ], + facetingAfterDistinct: true, + facets: [ + "", + ], + filters: "", + getRankingInfo: true, + highlightPostTag: "", + highlightPreTag: "", + hitsPerPage: 1, + ignorePlurals: false, + indexName: "theIndexName", + insideBoundingBox: [ + [ + 47.3165, + 4.9665, + 47.3424, + 5.0201, + ], + [ + 40.9234, + 2.1185, + 38.643, + 1.9916, + ], + ], + insidePolygon: [ + [ + 47.3165, + 4.9665, + 47.3424, + 5.0201, + 47.32, + 4.9, + ], + [ + 40.9234, + 2.1185, + 38.643, + 1.9916, + 39.2587, + 2.0104, + ], + ], + keepDiacriticsOnCharacters: "", + length: 1, + maxValuesPerFacet: 0, + minProximity: 1, + minWordSizefor1Typo: 0, + minWordSizefor2Typos: 0, + minimumAroundRadius: 1, + naturalLanguages: [ + "", + ], + numericFilters: [ + "", + ], + offset: 0, + optionalFilters: [ + "", + ], + optionalWords: [ + "", + ], + page: 0, + percentileComputation: true, + personalizationImpact: 0, + query: "", + queryLanguages: [ + "", + ], + queryType: QueryType.fromJson("prefixAll"), + ranking: [ + "", + ], + reRankingApplyFilter: [ + "", + ], + relevancyStrictness: 0, + removeStopWords: true, + removeWordsIfNoResults: + RemoveWordsIfNoResults.fromJson("allOptional"), + renderingContent: RenderingContent( + facetOrdering: FacetOrdering( + facets: Facets( + order: [ + "a", + "b", + ], + ), + values: { + 'a': Value( + order: [ + "b", + ], + sortRemainingBy: SortRemainingBy.fromJson("count"), + ), + }, + ), + ), + replaceSynonymsInHighlight: true, + responseFields: [ + "", + ], + restrictHighlightAndSnippetArrays: true, + restrictSearchableAttributes: [ + "", + ], + ruleContexts: [ + "", + ], + similarQuery: "", + snippetEllipsisText: "", + sortFacetValuesBy: "", + sumOrFiltersScores: true, + synonyms: true, + tagFilters: [ + "", + ], + type: SearchTypeDefault.fromJson("default"), + typoTolerance: TypoToleranceEnum.fromJson("min"), + userToken: "", + ), + ], + ), + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/*/queries'); + expect(request.method, 'post'); + expectBody(request.body, + """{"requests":[{"advancedSyntax":true,"advancedSyntaxFeatures":["exactPhrase"],"allowTyposOnNumericTokens":true,"alternativesAsExact":["multiWordsSynonym"],"analytics":true,"analyticsTags":[""],"aroundLatLng":"","aroundLatLngViaIP":true,"aroundPrecision":0,"aroundRadius":"all","attributeCriteriaComputedByMinProximity":true,"attributesForFaceting":[""],"attributesToHighlight":[""],"attributesToRetrieve":[""],"attributesToSnippet":[""],"clickAnalytics":true,"customRanking":[""],"decompoundQuery":true,"disableExactOnAttributes":[""],"disableTypoToleranceOnAttributes":[""],"distinct":0,"enableABTest":true,"enablePersonalization":true,"enableReRanking":true,"enableRules":true,"exactOnSingleWordQuery":"attribute","explain":["foo","bar"],"facetFilters":[""],"facetingAfterDistinct":true,"facets":[""],"filters":"","getRankingInfo":true,"highlightPostTag":"","highlightPreTag":"","hitsPerPage":1,"ignorePlurals":false,"indexName":"theIndexName","insideBoundingBox":[[47.3165,4.9665,47.3424,5.0201],[40.9234,2.1185,38.643,1.9916]],"insidePolygon":[[47.3165,4.9665,47.3424,5.0201,47.32,4.9],[40.9234,2.1185,38.643,1.9916,39.2587,2.0104]],"keepDiacriticsOnCharacters":"","length":1,"maxValuesPerFacet":0,"minProximity":1,"minWordSizefor1Typo":0,"minWordSizefor2Typos":0,"minimumAroundRadius":1,"naturalLanguages":[""],"numericFilters":[""],"offset":0,"optionalFilters":[""],"optionalWords":[""],"page":0,"percentileComputation":true,"personalizationImpact":0,"query":"","queryLanguages":[""],"queryType":"prefixAll","ranking":[""],"reRankingApplyFilter":[""],"relevancyStrictness":0,"removeStopWords":true,"removeWordsIfNoResults":"allOptional","renderingContent":{"facetOrdering":{"facets":{"order":["a","b"]},"values":{"a":{"order":["b"],"sortRemainingBy":"count"}}}},"replaceSynonymsInHighlight":true,"responseFields":[""],"restrictHighlightAndSnippetArrays":true,"restrictSearchableAttributes":[""],"ruleContexts":[""],"similarQuery":"","snippetEllipsisText":"","sortFacetValuesBy":"","sumOrFiltersScores":true,"synonyms":true,"tagFilters":[""],"type":"default","typoTolerance":"min","userToken":""}]}"""); + }, + ), + ); +} diff --git a/tests/output/dart/test/requests/insights_test.dart b/tests/output/dart/test/requests/insights_test.dart new file mode 100644 index 0000000000..13ce4c5ee4 --- /dev/null +++ b/tests/output/dart/test/requests/insights_test.dart @@ -0,0 +1,730 @@ +import 'package:algolia_client_insights/algolia_client_insights.dart'; +import 'package:algolia_test/algolia_test.dart'; +import 'package:test/test.dart'; + +void main() { + // customDelete + test( + 'allow del method for a custom path with minimal parameters', + () => runTest( + builder: (requester) => InsightsClient( + appId: 'appId', + apiKey: 'apiKey', + region: 'us', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customDelete( + path: "/test/minimal", + ), + intercept: (request) { + expectPath(request.path, '/1/test/minimal'); + expect(request.method, 'delete'); + expect(request.body, null); + }, + ), + ); + + // customDelete + test( + 'allow del method for a custom path with all parameters', + () => runTest( + builder: (requester) => InsightsClient( + appId: 'appId', + apiKey: 'apiKey', + region: 'us', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customDelete( + path: "/test/all", + parameters: { + 'query': "parameters", + }, + ), + intercept: (request) { + expectPath(request.path, '/1/test/all'); + expect(request.method, 'delete'); + expectParams(request.queryParameters, """{"query":"parameters"}"""); + expect(request.body, null); + }, + ), + ); + + // customGet + test( + 'allow get method for a custom path with minimal parameters', + () => runTest( + builder: (requester) => InsightsClient( + appId: 'appId', + apiKey: 'apiKey', + region: 'us', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customGet( + path: "/test/minimal", + ), + intercept: (request) { + expectPath(request.path, '/1/test/minimal'); + expect(request.method, 'get'); + expect(request.body, null); + }, + ), + ); + + // customGet + test( + 'allow get method for a custom path with all parameters', + () => runTest( + builder: (requester) => InsightsClient( + appId: 'appId', + apiKey: 'apiKey', + region: 'us', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customGet( + path: "/test/all", + parameters: { + 'query': "parameters", + }, + ), + intercept: (request) { + expectPath(request.path, '/1/test/all'); + expect(request.method, 'get'); + expectParams(request.queryParameters, """{"query":"parameters"}"""); + expect(request.body, null); + }, + ), + ); + + // customPost + test( + 'allow post method for a custom path with minimal parameters', + () => runTest( + builder: (requester) => InsightsClient( + appId: 'appId', + apiKey: 'apiKey', + region: 'us', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPost( + path: "/test/minimal", + ), + intercept: (request) { + expectPath(request.path, '/1/test/minimal'); + expect(request.method, 'post'); + expectBody(request.body, """{}"""); + }, + ), + ); + + // customPost + test( + 'allow post method for a custom path with all parameters', + () => runTest( + builder: (requester) => InsightsClient( + appId: 'appId', + apiKey: 'apiKey', + region: 'us', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPost( + path: "/test/all", + parameters: { + 'query': "parameters", + }, + body: { + 'body': "parameters", + }, + ), + intercept: (request) { + expectPath(request.path, '/1/test/all'); + expect(request.method, 'post'); + expectParams(request.queryParameters, """{"query":"parameters"}"""); + expectBody(request.body, """{"body":"parameters"}"""); + }, + ), + ); + + // customPost + test( + 'requestOptions can override default query parameters', + () => runTest( + builder: (requester) => InsightsClient( + appId: 'appId', + apiKey: 'apiKey', + region: 'us', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPost( + path: "/test/requestOptions", + parameters: { + 'query': "parameters", + }, + body: { + 'facet': "filters", + }, + requestOptions: RequestOptions( + urlParameters: { + 'query': "myQueryParameter", + }, + ), + ), + intercept: (request) { + expectPath(request.path, '/1/test/requestOptions'); + expect(request.method, 'post'); + expectParams( + request.queryParameters, """{"query":"myQueryParameter"}"""); + expectBody(request.body, """{"facet":"filters"}"""); + }, + ), + ); + + // customPost + test( + 'requestOptions merges query parameters with default ones', + () => runTest( + builder: (requester) => InsightsClient( + appId: 'appId', + apiKey: 'apiKey', + region: 'us', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPost( + path: "/test/requestOptions", + parameters: { + 'query': "parameters", + }, + body: { + 'facet': "filters", + }, + requestOptions: RequestOptions( + urlParameters: { + 'query2': "myQueryParameter", + }, + ), + ), + intercept: (request) { + expectPath(request.path, '/1/test/requestOptions'); + expect(request.method, 'post'); + expectParams(request.queryParameters, + """{"query":"parameters","query2":"myQueryParameter"}"""); + expectBody(request.body, """{"facet":"filters"}"""); + }, + ), + ); + + // customPost + test( + 'requestOptions can override default headers', + () => runTest( + builder: (requester) => InsightsClient( + appId: 'appId', + apiKey: 'apiKey', + region: 'us', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPost( + path: "/test/requestOptions", + parameters: { + 'query': "parameters", + }, + body: { + 'facet': "filters", + }, + requestOptions: RequestOptions( + headers: { + 'x-algolia-api-key': 'myApiKey', + }, + ), + ), + intercept: (request) { + expectPath(request.path, '/1/test/requestOptions'); + expect(request.method, 'post'); + expectHeaders(request.headers, """{"x-algolia-api-key":"myApiKey"}"""); + expectParams(request.queryParameters, """{"query":"parameters"}"""); + expectBody(request.body, """{"facet":"filters"}"""); + }, + ), + ); + + // customPost + test( + 'requestOptions merges headers with default ones', + () => runTest( + builder: (requester) => InsightsClient( + appId: 'appId', + apiKey: 'apiKey', + region: 'us', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPost( + path: "/test/requestOptions", + parameters: { + 'query': "parameters", + }, + body: { + 'facet': "filters", + }, + requestOptions: RequestOptions( + headers: { + 'x-algolia-api-key': 'myApiKey', + }, + ), + ), + intercept: (request) { + expectPath(request.path, '/1/test/requestOptions'); + expect(request.method, 'post'); + expectHeaders(request.headers, """{"x-algolia-api-key":"myApiKey"}"""); + expectParams(request.queryParameters, """{"query":"parameters"}"""); + expectBody(request.body, """{"facet":"filters"}"""); + }, + ), + ); + + // customPost + test( + 'requestOptions queryParameters accepts booleans', + () => runTest( + builder: (requester) => InsightsClient( + appId: 'appId', + apiKey: 'apiKey', + region: 'us', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPost( + path: "/test/requestOptions", + parameters: { + 'query': "parameters", + }, + body: { + 'facet': "filters", + }, + requestOptions: RequestOptions( + urlParameters: { + 'isItWorking': true, + }, + ), + ), + intercept: (request) { + expectPath(request.path, '/1/test/requestOptions'); + expect(request.method, 'post'); + expectParams(request.queryParameters, + """{"query":"parameters","isItWorking":"true"}"""); + expectBody(request.body, """{"facet":"filters"}"""); + }, + ), + ); + + // customPost + test( + 'requestOptions queryParameters accepts integers', + () => runTest( + builder: (requester) => InsightsClient( + appId: 'appId', + apiKey: 'apiKey', + region: 'us', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPost( + path: "/test/requestOptions", + parameters: { + 'query': "parameters", + }, + body: { + 'facet': "filters", + }, + requestOptions: RequestOptions( + urlParameters: { + 'myParam': 2, + }, + ), + ), + intercept: (request) { + expectPath(request.path, '/1/test/requestOptions'); + expect(request.method, 'post'); + expectParams(request.queryParameters, + """{"query":"parameters","myParam":"2"}"""); + expectBody(request.body, """{"facet":"filters"}"""); + }, + ), + ); + + // customPost + test( + 'requestOptions queryParameters accepts list of string', + () => runTest( + builder: (requester) => InsightsClient( + appId: 'appId', + apiKey: 'apiKey', + region: 'us', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPost( + path: "/test/requestOptions", + parameters: { + 'query': "parameters", + }, + body: { + 'facet': "filters", + }, + requestOptions: RequestOptions( + urlParameters: { + 'myParam': [ + "c", + "d", + ], + }, + ), + ), + intercept: (request) { + expectPath(request.path, '/1/test/requestOptions'); + expect(request.method, 'post'); + expectParams(request.queryParameters, + """{"query":"parameters","myParam":"c,d"}"""); + expectBody(request.body, """{"facet":"filters"}"""); + }, + ), + ); + + // customPost + test( + 'requestOptions queryParameters accepts list of booleans', + () => runTest( + builder: (requester) => InsightsClient( + appId: 'appId', + apiKey: 'apiKey', + region: 'us', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPost( + path: "/test/requestOptions", + parameters: { + 'query': "parameters", + }, + body: { + 'facet': "filters", + }, + requestOptions: RequestOptions( + urlParameters: { + 'myParam': [ + true, + true, + false, + ], + }, + ), + ), + intercept: (request) { + expectPath(request.path, '/1/test/requestOptions'); + expect(request.method, 'post'); + expectParams(request.queryParameters, + """{"query":"parameters","myParam":"true,true,false"}"""); + expectBody(request.body, """{"facet":"filters"}"""); + }, + ), + ); + + // customPost + test( + 'requestOptions queryParameters accepts list of integers', + () => runTest( + builder: (requester) => InsightsClient( + appId: 'appId', + apiKey: 'apiKey', + region: 'us', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPost( + path: "/test/requestOptions", + parameters: { + 'query': "parameters", + }, + body: { + 'facet': "filters", + }, + requestOptions: RequestOptions( + urlParameters: { + 'myParam': [ + 1, + 2, + ], + }, + ), + ), + intercept: (request) { + expectPath(request.path, '/1/test/requestOptions'); + expect(request.method, 'post'); + expectParams(request.queryParameters, + """{"query":"parameters","myParam":"1,2"}"""); + expectBody(request.body, """{"facet":"filters"}"""); + }, + ), + ); + + // customPut + test( + 'allow put method for a custom path with minimal parameters', + () => runTest( + builder: (requester) => InsightsClient( + appId: 'appId', + apiKey: 'apiKey', + region: 'us', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPut( + path: "/test/minimal", + ), + intercept: (request) { + expectPath(request.path, '/1/test/minimal'); + expect(request.method, 'put'); + expectBody(request.body, """{}"""); + }, + ), + ); + + // customPut + test( + 'allow put method for a custom path with all parameters', + () => runTest( + builder: (requester) => InsightsClient( + appId: 'appId', + apiKey: 'apiKey', + region: 'us', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPut( + path: "/test/all", + parameters: { + 'query': "parameters", + }, + body: { + 'body': "parameters", + }, + ), + intercept: (request) { + expectPath(request.path, '/1/test/all'); + expect(request.method, 'put'); + expectParams(request.queryParameters, """{"query":"parameters"}"""); + expectBody(request.body, """{"body":"parameters"}"""); + }, + ), + ); + + // pushEvents + test( + 'pushEvents0', + () => runTest( + builder: (requester) => InsightsClient( + appId: 'appId', + apiKey: 'apiKey', + region: 'us', + options: ClientOptions(requester: requester), + ), + call: (client) => client.pushEvents( + insightsEvents: InsightsEvents( + events: [ + ClickedObjectIDsAfterSearch( + eventType: ClickEvent.fromJson("click"), + eventName: "Product Clicked", + index: "products", + userToken: "user-123456", + authenticatedUserToken: "user-123456", + timestamp: 1641290601962, + objectIDs: [ + "9780545139700", + "9780439784542", + ], + queryID: "43b15df305339e827f0ac0bdc5ebcaa7", + positions: [ + 7, + 6, + ], + ), + ], + ), + ), + intercept: (request) { + expectPath(request.path, '/1/events'); + expect(request.method, 'post'); + expectBody(request.body, + """{"events":[{"eventType":"click","eventName":"Product Clicked","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"queryID":"43b15df305339e827f0ac0bdc5ebcaa7","positions":[7,6]}]}"""); + }, + ), + ); + + // pushEvents + test( + 'Many events type', + () => runTest( + builder: (requester) => InsightsClient( + appId: 'appId', + apiKey: 'apiKey', + region: 'us', + options: ClientOptions(requester: requester), + ), + call: (client) => client.pushEvents( + insightsEvents: InsightsEvents( + events: [ + ConvertedObjectIDsAfterSearch( + eventType: ConversionEvent.fromJson("conversion"), + eventName: "Product Purchased", + index: "products", + userToken: "user-123456", + authenticatedUserToken: "user-123456", + timestamp: 1641290601962, + objectIDs: [ + "9780545139700", + "9780439784542", + ], + queryID: "43b15df305339e827f0ac0bdc5ebcaa7", + ), + ViewedObjectIDs( + eventType: ViewEvent.fromJson("view"), + eventName: "Product Detail Page Viewed", + index: "products", + userToken: "user-123456", + authenticatedUserToken: "user-123456", + timestamp: 1641290601962, + objectIDs: [ + "9780545139700", + "9780439784542", + ], + ), + ], + ), + ), + intercept: (request) { + expectPath(request.path, '/1/events'); + expect(request.method, 'post'); + expectBody(request.body, + """{"events":[{"eventType":"conversion","eventName":"Product Purchased","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"queryID":"43b15df305339e827f0ac0bdc5ebcaa7"},{"eventType":"view","eventName":"Product Detail Page Viewed","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"]}]}"""); + }, + ), + ); + + // pushEvents + test( + 'ConvertedObjectIDsAfterSearch', + () => runTest( + builder: (requester) => InsightsClient( + appId: 'appId', + apiKey: 'apiKey', + region: 'us', + options: ClientOptions(requester: requester), + ), + call: (client) => client.pushEvents( + insightsEvents: InsightsEvents( + events: [ + ConvertedObjectIDsAfterSearch( + eventType: ConversionEvent.fromJson("conversion"), + eventName: "Product Purchased", + index: "products", + userToken: "user-123456", + authenticatedUserToken: "user-123456", + timestamp: 1641290601962, + objectIDs: [ + "9780545139700", + "9780439784542", + ], + queryID: "43b15df305339e827f0ac0bdc5ebcaa7", + ), + ], + ), + ), + intercept: (request) { + expectPath(request.path, '/1/events'); + expect(request.method, 'post'); + expectBody(request.body, + """{"events":[{"eventType":"conversion","eventName":"Product Purchased","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"queryID":"43b15df305339e827f0ac0bdc5ebcaa7"}]}"""); + }, + ), + ); + + // pushEvents + test( + 'ViewedObjectIDs', + () => runTest( + builder: (requester) => InsightsClient( + appId: 'appId', + apiKey: 'apiKey', + region: 'us', + options: ClientOptions(requester: requester), + ), + call: (client) => client.pushEvents( + insightsEvents: InsightsEvents( + events: [ + ViewedObjectIDs( + eventType: ViewEvent.fromJson("view"), + eventName: "Product Detail Page Viewed", + index: "products", + userToken: "user-123456", + authenticatedUserToken: "user-123456", + timestamp: 1641290601962, + objectIDs: [ + "9780545139700", + "9780439784542", + ], + ), + ], + ), + ), + intercept: (request) { + expectPath(request.path, '/1/events'); + expect(request.method, 'post'); + expectBody(request.body, + """{"events":[{"eventType":"view","eventName":"Product Detail Page Viewed","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"]}]}"""); + }, + ), + ); + + // pushEvents + test( + 'AddedToCartObjectIDs', + () => runTest( + builder: (requester) => InsightsClient( + appId: 'appId', + apiKey: 'apiKey', + region: 'us', + options: ClientOptions(requester: requester), + ), + call: (client) => client.pushEvents( + insightsEvents: InsightsEvents( + events: [ + AddedToCartObjectIDsAfterSearch( + eventType: ConversionEvent.fromJson("conversion"), + eventSubtype: AddToCartEvent.fromJson("addToCart"), + eventName: "Product Added To Cart", + index: "products", + queryID: "43b15df305339e827f0ac0bdc5ebcaa7", + userToken: "user-123456", + authenticatedUserToken: "user-123456", + timestamp: 1641290601962, + objectIDs: [ + "9780545139700", + "9780439784542", + ], + objectData: [ + ObjectDataAfterSearch( + price: 19.99, + quantity: 10, + discount: 2.5, + ), + ObjectDataAfterSearch( + price: "8\$", + quantity: 7, + discount: "30%", + ), + ], + currency: "USD", + ), + ], + ), + ), + intercept: (request) { + expectPath(request.path, '/1/events'); + expect(request.method, 'post'); + expectBody(request.body, + """{"events":[{"eventType":"conversion","eventSubtype":"addToCart","eventName":"Product Added To Cart","index":"products","queryID":"43b15df305339e827f0ac0bdc5ebcaa7","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"objectData":[{"price":19.99,"quantity":10,"discount":2.5},{"price":"8\$","quantity":7,"discount":"30%"}],"currency":"USD"}]}"""); + }, + ), + ); +} diff --git a/tests/output/dart/test/requests/recommend_test.dart b/tests/output/dart/test/requests/recommend_test.dart new file mode 100644 index 0000000000..c7323198b7 --- /dev/null +++ b/tests/output/dart/test/requests/recommend_test.dart @@ -0,0 +1,859 @@ +import 'package:algolia_client_recommend/algolia_client_recommend.dart'; +import 'package:algolia_test/algolia_test.dart'; +import 'package:test/test.dart'; + +void main() { + // customDelete + test( + 'allow del method for a custom path with minimal parameters', + () => runTest( + builder: (requester) => RecommendClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customDelete( + path: "/test/minimal", + ), + intercept: (request) { + expectPath(request.path, '/1/test/minimal'); + expect(request.method, 'delete'); + expect(request.body, null); + }, + ), + ); + + // customDelete + test( + 'allow del method for a custom path with all parameters', + () => runTest( + builder: (requester) => RecommendClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customDelete( + path: "/test/all", + parameters: { + 'query': "parameters", + }, + ), + intercept: (request) { + expectPath(request.path, '/1/test/all'); + expect(request.method, 'delete'); + expectParams(request.queryParameters, """{"query":"parameters"}"""); + expect(request.body, null); + }, + ), + ); + + // customGet + test( + 'allow get method for a custom path with minimal parameters', + () => runTest( + builder: (requester) => RecommendClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customGet( + path: "/test/minimal", + ), + intercept: (request) { + expectPath(request.path, '/1/test/minimal'); + expect(request.method, 'get'); + expect(request.body, null); + }, + ), + ); + + // customGet + test( + 'allow get method for a custom path with all parameters', + () => runTest( + builder: (requester) => RecommendClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customGet( + path: "/test/all", + parameters: { + 'query': "parameters", + }, + ), + intercept: (request) { + expectPath(request.path, '/1/test/all'); + expect(request.method, 'get'); + expectParams(request.queryParameters, """{"query":"parameters"}"""); + expect(request.body, null); + }, + ), + ); + + // customPost + test( + 'allow post method for a custom path with minimal parameters', + () => runTest( + builder: (requester) => RecommendClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPost( + path: "/test/minimal", + ), + intercept: (request) { + expectPath(request.path, '/1/test/minimal'); + expect(request.method, 'post'); + expectBody(request.body, """{}"""); + }, + ), + ); + + // customPost + test( + 'allow post method for a custom path with all parameters', + () => runTest( + builder: (requester) => RecommendClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPost( + path: "/test/all", + parameters: { + 'query': "parameters", + }, + body: { + 'body': "parameters", + }, + ), + intercept: (request) { + expectPath(request.path, '/1/test/all'); + expect(request.method, 'post'); + expectParams(request.queryParameters, """{"query":"parameters"}"""); + expectBody(request.body, """{"body":"parameters"}"""); + }, + ), + ); + + // customPost + test( + 'requestOptions can override default query parameters', + () => runTest( + builder: (requester) => RecommendClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPost( + path: "/test/requestOptions", + parameters: { + 'query': "parameters", + }, + body: { + 'facet': "filters", + }, + requestOptions: RequestOptions( + urlParameters: { + 'query': "myQueryParameter", + }, + ), + ), + intercept: (request) { + expectPath(request.path, '/1/test/requestOptions'); + expect(request.method, 'post'); + expectParams( + request.queryParameters, """{"query":"myQueryParameter"}"""); + expectBody(request.body, """{"facet":"filters"}"""); + }, + ), + ); + + // customPost + test( + 'requestOptions merges query parameters with default ones', + () => runTest( + builder: (requester) => RecommendClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPost( + path: "/test/requestOptions", + parameters: { + 'query': "parameters", + }, + body: { + 'facet': "filters", + }, + requestOptions: RequestOptions( + urlParameters: { + 'query2': "myQueryParameter", + }, + ), + ), + intercept: (request) { + expectPath(request.path, '/1/test/requestOptions'); + expect(request.method, 'post'); + expectParams(request.queryParameters, + """{"query":"parameters","query2":"myQueryParameter"}"""); + expectBody(request.body, """{"facet":"filters"}"""); + }, + ), + ); + + // customPost + test( + 'requestOptions can override default headers', + () => runTest( + builder: (requester) => RecommendClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPost( + path: "/test/requestOptions", + parameters: { + 'query': "parameters", + }, + body: { + 'facet': "filters", + }, + requestOptions: RequestOptions( + headers: { + 'x-algolia-api-key': 'myApiKey', + }, + ), + ), + intercept: (request) { + expectPath(request.path, '/1/test/requestOptions'); + expect(request.method, 'post'); + expectHeaders(request.headers, """{"x-algolia-api-key":"myApiKey"}"""); + expectParams(request.queryParameters, """{"query":"parameters"}"""); + expectBody(request.body, """{"facet":"filters"}"""); + }, + ), + ); + + // customPost + test( + 'requestOptions merges headers with default ones', + () => runTest( + builder: (requester) => RecommendClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPost( + path: "/test/requestOptions", + parameters: { + 'query': "parameters", + }, + body: { + 'facet': "filters", + }, + requestOptions: RequestOptions( + headers: { + 'x-algolia-api-key': 'myApiKey', + }, + ), + ), + intercept: (request) { + expectPath(request.path, '/1/test/requestOptions'); + expect(request.method, 'post'); + expectHeaders(request.headers, """{"x-algolia-api-key":"myApiKey"}"""); + expectParams(request.queryParameters, """{"query":"parameters"}"""); + expectBody(request.body, """{"facet":"filters"}"""); + }, + ), + ); + + // customPost + test( + 'requestOptions queryParameters accepts booleans', + () => runTest( + builder: (requester) => RecommendClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPost( + path: "/test/requestOptions", + parameters: { + 'query': "parameters", + }, + body: { + 'facet': "filters", + }, + requestOptions: RequestOptions( + urlParameters: { + 'isItWorking': true, + }, + ), + ), + intercept: (request) { + expectPath(request.path, '/1/test/requestOptions'); + expect(request.method, 'post'); + expectParams(request.queryParameters, + """{"query":"parameters","isItWorking":"true"}"""); + expectBody(request.body, """{"facet":"filters"}"""); + }, + ), + ); + + // customPost + test( + 'requestOptions queryParameters accepts integers', + () => runTest( + builder: (requester) => RecommendClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPost( + path: "/test/requestOptions", + parameters: { + 'query': "parameters", + }, + body: { + 'facet': "filters", + }, + requestOptions: RequestOptions( + urlParameters: { + 'myParam': 2, + }, + ), + ), + intercept: (request) { + expectPath(request.path, '/1/test/requestOptions'); + expect(request.method, 'post'); + expectParams(request.queryParameters, + """{"query":"parameters","myParam":"2"}"""); + expectBody(request.body, """{"facet":"filters"}"""); + }, + ), + ); + + // customPost + test( + 'requestOptions queryParameters accepts list of string', + () => runTest( + builder: (requester) => RecommendClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPost( + path: "/test/requestOptions", + parameters: { + 'query': "parameters", + }, + body: { + 'facet': "filters", + }, + requestOptions: RequestOptions( + urlParameters: { + 'myParam': [ + "c", + "d", + ], + }, + ), + ), + intercept: (request) { + expectPath(request.path, '/1/test/requestOptions'); + expect(request.method, 'post'); + expectParams(request.queryParameters, + """{"query":"parameters","myParam":"c,d"}"""); + expectBody(request.body, """{"facet":"filters"}"""); + }, + ), + ); + + // customPost + test( + 'requestOptions queryParameters accepts list of booleans', + () => runTest( + builder: (requester) => RecommendClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPost( + path: "/test/requestOptions", + parameters: { + 'query': "parameters", + }, + body: { + 'facet': "filters", + }, + requestOptions: RequestOptions( + urlParameters: { + 'myParam': [ + true, + true, + false, + ], + }, + ), + ), + intercept: (request) { + expectPath(request.path, '/1/test/requestOptions'); + expect(request.method, 'post'); + expectParams(request.queryParameters, + """{"query":"parameters","myParam":"true,true,false"}"""); + expectBody(request.body, """{"facet":"filters"}"""); + }, + ), + ); + + // customPost + test( + 'requestOptions queryParameters accepts list of integers', + () => runTest( + builder: (requester) => RecommendClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPost( + path: "/test/requestOptions", + parameters: { + 'query': "parameters", + }, + body: { + 'facet': "filters", + }, + requestOptions: RequestOptions( + urlParameters: { + 'myParam': [ + 1, + 2, + ], + }, + ), + ), + intercept: (request) { + expectPath(request.path, '/1/test/requestOptions'); + expect(request.method, 'post'); + expectParams(request.queryParameters, + """{"query":"parameters","myParam":"1,2"}"""); + expectBody(request.body, """{"facet":"filters"}"""); + }, + ), + ); + + // customPut + test( + 'allow put method for a custom path with minimal parameters', + () => runTest( + builder: (requester) => RecommendClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPut( + path: "/test/minimal", + ), + intercept: (request) { + expectPath(request.path, '/1/test/minimal'); + expect(request.method, 'put'); + expectBody(request.body, """{}"""); + }, + ), + ); + + // customPut + test( + 'allow put method for a custom path with all parameters', + () => runTest( + builder: (requester) => RecommendClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPut( + path: "/test/all", + parameters: { + 'query': "parameters", + }, + body: { + 'body': "parameters", + }, + ), + intercept: (request) { + expectPath(request.path, '/1/test/all'); + expect(request.method, 'put'); + expectParams(request.queryParameters, """{"query":"parameters"}"""); + expectBody(request.body, """{"body":"parameters"}"""); + }, + ), + ); + + // deleteRecommendRule + test( + 'deleteRecommendRule0', + () => runTest( + builder: (requester) => RecommendClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.deleteRecommendRule( + indexName: "indexName", + model: RecommendModels.fromJson("related-products"), + objectID: "objectID", + ), + intercept: (request) { + expectPath(request.path, + '/1/indexes/indexName/related-products/recommend/rules/objectID'); + expect(request.method, 'delete'); + expect(request.body, null); + }, + ), + ); + + // getRecommendRule + test( + 'getRecommendRule0', + () => runTest( + builder: (requester) => RecommendClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.getRecommendRule( + indexName: "indexName", + model: RecommendModels.fromJson("related-products"), + objectID: "objectID", + ), + intercept: (request) { + expectPath(request.path, + '/1/indexes/indexName/related-products/recommend/rules/objectID'); + expect(request.method, 'get'); + expect(request.body, null); + }, + ), + ); + + // getRecommendStatus + test( + 'getRecommendStatus0', + () => runTest( + builder: (requester) => RecommendClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.getRecommendStatus( + indexName: "indexName", + model: RecommendModels.fromJson("related-products"), + taskID: 12345, + ), + intercept: (request) { + expectPath( + request.path, '/1/indexes/indexName/related-products/task/12345'); + expect(request.method, 'get'); + expect(request.body, null); + }, + ), + ); + + // getRecommendations + test( + 'get recommendations for recommend model with minimal parameters', + () => runTest( + builder: (requester) => RecommendClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.getRecommendations( + getRecommendationsParams: GetRecommendationsParams( + requests: [ + RecommendationsQuery( + indexName: "indexName", + objectID: "objectID", + model: RecommendationModels.fromJson("related-products"), + threshold: 42, + ), + ], + ), + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/*/recommendations'); + expect(request.method, 'post'); + expectBody(request.body, + """{"requests":[{"indexName":"indexName","objectID":"objectID","model":"related-products","threshold":42}]}"""); + }, + ), + ); + + // getRecommendations + test( + 'get recommendations for recommend model with all parameters', + () => runTest( + builder: (requester) => RecommendClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.getRecommendations( + getRecommendationsParams: GetRecommendationsParams( + requests: [ + RecommendationsQuery( + indexName: "indexName", + objectID: "objectID", + model: RecommendationModels.fromJson("related-products"), + threshold: 42, + maxRecommendations: 10, + queryParameters: SearchParamsObject( + query: "myQuery", + facetFilters: [ + "query", + ], + ), + fallbackParameters: SearchParamsObject( + query: "myQuery", + facetFilters: [ + "fallback", + ], + ), + ), + ], + ), + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/*/recommendations'); + expect(request.method, 'post'); + expectBody(request.body, + """{"requests":[{"indexName":"indexName","objectID":"objectID","model":"related-products","threshold":42,"maxRecommendations":10,"queryParameters":{"query":"myQuery","facetFilters":["query"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback"]}}]}"""); + }, + ), + ); + + // getRecommendations + test( + 'get recommendations for trending model with minimal parameters', + () => runTest( + builder: (requester) => RecommendClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.getRecommendations( + getRecommendationsParams: GetRecommendationsParams( + requests: [ + TrendingItemsQuery( + indexName: "indexName", + model: TrendingItemsModel.fromJson("trending-items"), + threshold: 42, + ), + ], + ), + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/*/recommendations'); + expect(request.method, 'post'); + expectBody(request.body, + """{"requests":[{"indexName":"indexName","model":"trending-items","threshold":42}]}"""); + }, + ), + ); + + // getRecommendations + test( + 'get recommendations for trending model with all parameters', + () => runTest( + builder: (requester) => RecommendClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.getRecommendations( + getRecommendationsParams: GetRecommendationsParams( + requests: [ + TrendingItemsQuery( + indexName: "indexName", + model: TrendingItemsModel.fromJson("trending-items"), + threshold: 42, + maxRecommendations: 10, + facetName: "myFacetName", + facetValue: "myFacetValue", + queryParameters: SearchParamsObject( + query: "myQuery", + facetFilters: [ + "query", + ], + ), + fallbackParameters: SearchParamsObject( + query: "myQuery", + facetFilters: [ + "fallback", + ], + ), + ), + ], + ), + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/*/recommendations'); + expect(request.method, 'post'); + expectBody(request.body, + """{"requests":[{"indexName":"indexName","model":"trending-items","threshold":42,"maxRecommendations":10,"facetName":"myFacetName","facetValue":"myFacetValue","queryParameters":{"query":"myQuery","facetFilters":["query"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback"]}}]}"""); + }, + ), + ); + + // getRecommendations + test( + 'get multiple recommendations with minimal parameters', + () => runTest( + builder: (requester) => RecommendClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.getRecommendations( + getRecommendationsParams: GetRecommendationsParams( + requests: [ + RecommendationsQuery( + indexName: "indexName1", + objectID: "objectID1", + model: RecommendationModels.fromJson("related-products"), + threshold: 21, + ), + RecommendationsQuery( + indexName: "indexName2", + objectID: "objectID2", + model: RecommendationModels.fromJson("related-products"), + threshold: 21, + ), + ], + ), + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/*/recommendations'); + expect(request.method, 'post'); + expectBody(request.body, + """{"requests":[{"indexName":"indexName1","objectID":"objectID1","model":"related-products","threshold":21},{"indexName":"indexName2","objectID":"objectID2","model":"related-products","threshold":21}]}"""); + }, + ), + ); + + // getRecommendations + test( + 'get multiple recommendations with all parameters', + () => runTest( + builder: (requester) => RecommendClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.getRecommendations( + getRecommendationsParams: GetRecommendationsParams( + requests: [ + RecommendationsQuery( + indexName: "indexName1", + objectID: "objectID1", + model: RecommendationModels.fromJson("related-products"), + threshold: 21, + maxRecommendations: 10, + queryParameters: SearchParamsObject( + query: "myQuery", + facetFilters: [ + "query1", + ], + ), + fallbackParameters: SearchParamsObject( + query: "myQuery", + facetFilters: [ + "fallback1", + ], + ), + ), + RecommendationsQuery( + indexName: "indexName2", + objectID: "objectID2", + model: RecommendationModels.fromJson("related-products"), + threshold: 21, + maxRecommendations: 10, + queryParameters: SearchParamsObject( + query: "myQuery", + facetFilters: [ + "query2", + ], + ), + fallbackParameters: SearchParamsObject( + query: "myQuery", + facetFilters: [ + "fallback2", + ], + ), + ), + ], + ), + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/*/recommendations'); + expect(request.method, 'post'); + expectBody(request.body, + """{"requests":[{"indexName":"indexName1","objectID":"objectID1","model":"related-products","threshold":21,"maxRecommendations":10,"queryParameters":{"query":"myQuery","facetFilters":["query1"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback1"]}},{"indexName":"indexName2","objectID":"objectID2","model":"related-products","threshold":21,"maxRecommendations":10,"queryParameters":{"query":"myQuery","facetFilters":["query2"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback2"]}}]}"""); + }, + ), + ); + + // getRecommendations + test( + 'get frequently bought together recommendations', + () => runTest( + builder: (requester) => RecommendClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.getRecommendations( + getRecommendationsParams: GetRecommendationsParams( + requests: [ + RecommendationsQuery( + indexName: "indexName1", + objectID: "objectID1", + model: RecommendationModels.fromJson("bought-together"), + threshold: 42, + ), + ], + ), + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/*/recommendations'); + expect(request.method, 'post'); + expectBody(request.body, + """{"requests":[{"indexName":"indexName1","objectID":"objectID1","model":"bought-together","threshold":42}]}"""); + }, + ), + ); + + // searchRecommendRules + test( + 'searchRecommendRules0', + () => runTest( + builder: (requester) => RecommendClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.searchRecommendRules( + indexName: "indexName", + model: RecommendModels.fromJson("related-products"), + ), + intercept: (request) { + expectPath(request.path, + '/1/indexes/indexName/related-products/recommend/rules/search'); + expect(request.method, 'post'); + expectBody(request.body, """{}"""); + }, + ), + ); +} diff --git a/tests/output/dart/test/requests/search_test.dart b/tests/output/dart/test/requests/search_test.dart new file mode 100644 index 0000000000..5a2a22988d --- /dev/null +++ b/tests/output/dart/test/requests/search_test.dart @@ -0,0 +1,3431 @@ +import 'package:algolia_client_search/algolia_client_search.dart'; +import 'package:algolia_test/algolia_test.dart'; +import 'package:test/test.dart'; + +void main() { + // addApiKey + test( + 'addApiKey0', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.addApiKey( + apiKey: ApiKey( + acl: [ + Acl.fromJson("search"), + Acl.fromJson("addObject"), + ], + description: "my new api key", + validity: 300, + maxQueriesPerIPPerHour: 100, + maxHitsPerQuery: 20, + ), + ), + intercept: (request) { + expectPath(request.path, '/1/keys'); + expect(request.method, 'post'); + expectBody(request.body, + """{"acl":["search","addObject"],"description":"my new api key","validity":300,"maxQueriesPerIPPerHour":100,"maxHitsPerQuery":20}"""); + }, + ), + ); + + // addOrUpdateObject + test( + 'addOrUpdateObject0', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.addOrUpdateObject( + indexName: "indexName", + objectID: "uniqueID", + body: { + 'key': "value", + }, + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/indexName/uniqueID'); + expect(request.method, 'put'); + expectBody(request.body, """{"key":"value"}"""); + }, + ), + ); + + // appendSource + test( + 'appendSource0', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.appendSource( + source: Source( + source: "theSource", + description: "theDescription", + ), + ), + intercept: (request) { + expectPath(request.path, '/1/security/sources/append'); + expect(request.method, 'post'); + expectBody(request.body, + """{"source":"theSource","description":"theDescription"}"""); + }, + ), + ); + + // assignUserId + test( + 'assignUserId0', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.assignUserId( + xAlgoliaUserID: "userID", + assignUserIdParams: AssignUserIdParams( + cluster: "theCluster", + ), + ), + intercept: (request) { + expectPath(request.path, '/1/clusters/mapping'); + expect(request.method, 'post'); + expectHeaders(request.headers, """{"x-algolia-user-id":"userID"}"""); + expectBody(request.body, """{"cluster":"theCluster"}"""); + }, + ), + ); + + // batch + test( + 'allows batch method with `addObject` action', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.batch( + indexName: "theIndexName", + batchWriteParams: BatchWriteParams( + requests: [ + BatchRequest( + action: Action.fromJson("addObject"), + body: { + 'key': "value", + }, + ), + ], + ), + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/theIndexName/batch'); + expect(request.method, 'post'); + expectBody(request.body, + """{"requests":[{"action":"addObject","body":{"key":"value"}}]}"""); + }, + ), + ); + + // batch + test( + 'allows batch method with `clear` action', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.batch( + indexName: "theIndexName", + batchWriteParams: BatchWriteParams( + requests: [ + BatchRequest( + action: Action.fromJson("clear"), + body: { + 'key': "value", + }, + ), + ], + ), + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/theIndexName/batch'); + expect(request.method, 'post'); + expectBody(request.body, + """{"requests":[{"action":"clear","body":{"key":"value"}}]}"""); + }, + ), + ); + + // batch + test( + 'allows batch method with `delete` action', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.batch( + indexName: "theIndexName", + batchWriteParams: BatchWriteParams( + requests: [ + BatchRequest( + action: Action.fromJson("delete"), + body: { + 'key': "value", + }, + ), + ], + ), + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/theIndexName/batch'); + expect(request.method, 'post'); + expectBody(request.body, + """{"requests":[{"action":"delete","body":{"key":"value"}}]}"""); + }, + ), + ); + + // batch + test( + 'allows batch method with `deleteObject` action', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.batch( + indexName: "theIndexName", + batchWriteParams: BatchWriteParams( + requests: [ + BatchRequest( + action: Action.fromJson("deleteObject"), + body: { + 'key': "value", + }, + ), + ], + ), + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/theIndexName/batch'); + expect(request.method, 'post'); + expectBody(request.body, + """{"requests":[{"action":"deleteObject","body":{"key":"value"}}]}"""); + }, + ), + ); + + // batch + test( + 'allows batch method with `partialUpdateObject` action', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.batch( + indexName: "theIndexName", + batchWriteParams: BatchWriteParams( + requests: [ + BatchRequest( + action: Action.fromJson("partialUpdateObject"), + body: { + 'key': "value", + }, + ), + ], + ), + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/theIndexName/batch'); + expect(request.method, 'post'); + expectBody(request.body, + """{"requests":[{"action":"partialUpdateObject","body":{"key":"value"}}]}"""); + }, + ), + ); + + // batch + test( + 'allows batch method with `partialUpdateObjectNoCreate` action', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.batch( + indexName: "theIndexName", + batchWriteParams: BatchWriteParams( + requests: [ + BatchRequest( + action: Action.fromJson("partialUpdateObjectNoCreate"), + body: { + 'key': "value", + }, + ), + ], + ), + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/theIndexName/batch'); + expect(request.method, 'post'); + expectBody(request.body, + """{"requests":[{"action":"partialUpdateObjectNoCreate","body":{"key":"value"}}]}"""); + }, + ), + ); + + // batch + test( + 'allows batch method with `updateObject` action', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.batch( + indexName: "theIndexName", + batchWriteParams: BatchWriteParams( + requests: [ + BatchRequest( + action: Action.fromJson("updateObject"), + body: { + 'key': "value", + }, + ), + ], + ), + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/theIndexName/batch'); + expect(request.method, 'post'); + expectBody(request.body, + """{"requests":[{"action":"updateObject","body":{"key":"value"}}]}"""); + }, + ), + ); + + // batchAssignUserIds + test( + 'batchAssignUserIds0', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.batchAssignUserIds( + xAlgoliaUserID: "userID", + batchAssignUserIdsParams: BatchAssignUserIdsParams( + cluster: "theCluster", + users: [ + "user1", + "user2", + ], + ), + ), + intercept: (request) { + expectPath(request.path, '/1/clusters/mapping/batch'); + expect(request.method, 'post'); + expectHeaders(request.headers, """{"x-algolia-user-id":"userID"}"""); + expectBody(request.body, + """{"cluster":"theCluster","users":["user1","user2"]}"""); + }, + ), + ); + + // batchDictionaryEntries + test( + 'get batchDictionaryEntries results with minimal parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.batchDictionaryEntries( + dictionaryName: DictionaryType.fromJson("compounds"), + batchDictionaryEntriesParams: BatchDictionaryEntriesParams( + requests: [ + BatchDictionaryEntriesRequest( + action: DictionaryAction.fromJson("addEntry"), + body: DictionaryEntry( + objectID: "1", + language: "en", + ), + ), + BatchDictionaryEntriesRequest( + action: DictionaryAction.fromJson("deleteEntry"), + body: DictionaryEntry( + objectID: "2", + language: "fr", + ), + ), + ], + ), + ), + intercept: (request) { + expectPath(request.path, '/1/dictionaries/compounds/batch'); + expect(request.method, 'post'); + expectBody(request.body, + """{"requests":[{"action":"addEntry","body":{"objectID":"1","language":"en"}},{"action":"deleteEntry","body":{"objectID":"2","language":"fr"}}]}"""); + }, + ), + ); + + // batchDictionaryEntries + test( + 'get batchDictionaryEntries results with all parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.batchDictionaryEntries( + dictionaryName: DictionaryType.fromJson("compounds"), + batchDictionaryEntriesParams: BatchDictionaryEntriesParams( + clearExistingDictionaryEntries: false, + requests: [ + BatchDictionaryEntriesRequest( + action: DictionaryAction.fromJson("addEntry"), + body: DictionaryEntry( + objectID: "1", + language: "en", + word: "fancy", + words: [ + "believe", + "algolia", + ], + decomposition: [ + "trust", + "algolia", + ], + state: DictionaryEntryState.fromJson("enabled"), + ), + ), + BatchDictionaryEntriesRequest( + action: DictionaryAction.fromJson("deleteEntry"), + body: DictionaryEntry( + objectID: "2", + language: "fr", + word: "humility", + words: [ + "candor", + "algolia", + ], + decomposition: [ + "grit", + "algolia", + ], + state: DictionaryEntryState.fromJson("enabled"), + ), + ), + ], + ), + ), + intercept: (request) { + expectPath(request.path, '/1/dictionaries/compounds/batch'); + expect(request.method, 'post'); + expectBody(request.body, + """{"clearExistingDictionaryEntries":false,"requests":[{"action":"addEntry","body":{"objectID":"1","language":"en","word":"fancy","words":["believe","algolia"],"decomposition":["trust","algolia"],"state":"enabled"}},{"action":"deleteEntry","body":{"objectID":"2","language":"fr","word":"humility","words":["candor","algolia"],"decomposition":["grit","algolia"],"state":"enabled"}}]}"""); + }, + ), + ); + + // batchDictionaryEntries + test( + 'get batchDictionaryEntries results additional properties', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.batchDictionaryEntries( + dictionaryName: DictionaryType.fromJson("compounds"), + batchDictionaryEntriesParams: BatchDictionaryEntriesParams( + requests: [ + BatchDictionaryEntriesRequest( + action: DictionaryAction.fromJson("addEntry"), + body: DictionaryEntry( + objectID: "1", + language: "en", + additionalProperties: {'additional': 'try me'}, + ), + ), + ], + ), + ), + intercept: (request) { + expectPath(request.path, '/1/dictionaries/compounds/batch'); + expect(request.method, 'post'); + expectBody(request.body, + """{"requests":[{"action":"addEntry","body":{"objectID":"1","language":"en","additional":"try me"}}]}"""); + }, + ), + ); + + // browse + test( + 'browse with minimal parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.browse( + indexName: "indexName", + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/indexName/browse'); + expect(request.method, 'post'); + expectBody(request.body, """{}"""); + }, + ), + ); + + // browse + test( + 'browse with search parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.browse( + indexName: "indexName", + browseParams: BrowseParamsObject( + query: "myQuery", + facetFilters: [ + "tags:algolia", + ], + ), + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/indexName/browse'); + expect(request.method, 'post'); + expectBody(request.body, + """{"query":"myQuery","facetFilters":["tags:algolia"]}"""); + }, + ), + ); + + // browse + test( + 'browse allow a cursor in parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.browse( + indexName: "indexName", + browseParams: BrowseParamsObject( + cursor: "test", + ), + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/indexName/browse'); + expect(request.method, 'post'); + expectBody(request.body, """{"cursor":"test"}"""); + }, + ), + ); + + // clearAllSynonyms + test( + 'clearAllSynonyms0', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.clearAllSynonyms( + indexName: "indexName", + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/indexName/synonyms/clear'); + expect(request.method, 'post'); + expect(request.body, {}); + }, + ), + ); + + // clearObjects + test( + 'clearObjects0', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.clearObjects( + indexName: "theIndexName", + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/theIndexName/clear'); + expect(request.method, 'post'); + expect(request.body, {}); + }, + ), + ); + + // clearRules + test( + 'clearRules0', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.clearRules( + indexName: "indexName", + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/indexName/rules/clear'); + expect(request.method, 'post'); + expect(request.body, {}); + }, + ), + ); + + // customDelete + test( + 'allow del method for a custom path with minimal parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customDelete( + path: "/test/minimal", + ), + intercept: (request) { + expectPath(request.path, '/1/test/minimal'); + expect(request.method, 'delete'); + expect(request.body, null); + }, + ), + ); + + // customDelete + test( + 'allow del method for a custom path with all parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customDelete( + path: "/test/all", + parameters: { + 'query': "parameters", + }, + ), + intercept: (request) { + expectPath(request.path, '/1/test/all'); + expect(request.method, 'delete'); + expectParams(request.queryParameters, """{"query":"parameters"}"""); + expect(request.body, null); + }, + ), + ); + + // customGet + test( + 'allow get method for a custom path with minimal parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customGet( + path: "/test/minimal", + ), + intercept: (request) { + expectPath(request.path, '/1/test/minimal'); + expect(request.method, 'get'); + expect(request.body, null); + }, + ), + ); + + // customGet + test( + 'allow get method for a custom path with all parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customGet( + path: "/test/all", + parameters: { + 'query': "parameters", + }, + ), + intercept: (request) { + expectPath(request.path, '/1/test/all'); + expect(request.method, 'get'); + expectParams(request.queryParameters, """{"query":"parameters"}"""); + expect(request.body, null); + }, + ), + ); + + // customPost + test( + 'allow post method for a custom path with minimal parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPost( + path: "/test/minimal", + ), + intercept: (request) { + expectPath(request.path, '/1/test/minimal'); + expect(request.method, 'post'); + expectBody(request.body, """{}"""); + }, + ), + ); + + // customPost + test( + 'allow post method for a custom path with all parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPost( + path: "/test/all", + parameters: { + 'query': "parameters", + }, + body: { + 'body': "parameters", + }, + ), + intercept: (request) { + expectPath(request.path, '/1/test/all'); + expect(request.method, 'post'); + expectParams(request.queryParameters, """{"query":"parameters"}"""); + expectBody(request.body, """{"body":"parameters"}"""); + }, + ), + ); + + // customPost + test( + 'requestOptions can override default query parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPost( + path: "/test/requestOptions", + parameters: { + 'query': "parameters", + }, + body: { + 'facet': "filters", + }, + requestOptions: RequestOptions( + urlParameters: { + 'query': "myQueryParameter", + }, + ), + ), + intercept: (request) { + expectPath(request.path, '/1/test/requestOptions'); + expect(request.method, 'post'); + expectParams( + request.queryParameters, """{"query":"myQueryParameter"}"""); + expectBody(request.body, """{"facet":"filters"}"""); + }, + ), + ); + + // customPost + test( + 'requestOptions merges query parameters with default ones', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPost( + path: "/test/requestOptions", + parameters: { + 'query': "parameters", + }, + body: { + 'facet': "filters", + }, + requestOptions: RequestOptions( + urlParameters: { + 'query2': "myQueryParameter", + }, + ), + ), + intercept: (request) { + expectPath(request.path, '/1/test/requestOptions'); + expect(request.method, 'post'); + expectParams(request.queryParameters, + """{"query":"parameters","query2":"myQueryParameter"}"""); + expectBody(request.body, """{"facet":"filters"}"""); + }, + ), + ); + + // customPost + test( + 'requestOptions can override default headers', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPost( + path: "/test/requestOptions", + parameters: { + 'query': "parameters", + }, + body: { + 'facet': "filters", + }, + requestOptions: RequestOptions( + headers: { + 'x-algolia-api-key': 'myApiKey', + }, + ), + ), + intercept: (request) { + expectPath(request.path, '/1/test/requestOptions'); + expect(request.method, 'post'); + expectHeaders(request.headers, """{"x-algolia-api-key":"myApiKey"}"""); + expectParams(request.queryParameters, """{"query":"parameters"}"""); + expectBody(request.body, """{"facet":"filters"}"""); + }, + ), + ); + + // customPost + test( + 'requestOptions merges headers with default ones', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPost( + path: "/test/requestOptions", + parameters: { + 'query': "parameters", + }, + body: { + 'facet': "filters", + }, + requestOptions: RequestOptions( + headers: { + 'x-algolia-api-key': 'myApiKey', + }, + ), + ), + intercept: (request) { + expectPath(request.path, '/1/test/requestOptions'); + expect(request.method, 'post'); + expectHeaders(request.headers, """{"x-algolia-api-key":"myApiKey"}"""); + expectParams(request.queryParameters, """{"query":"parameters"}"""); + expectBody(request.body, """{"facet":"filters"}"""); + }, + ), + ); + + // customPost + test( + 'requestOptions queryParameters accepts booleans', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPost( + path: "/test/requestOptions", + parameters: { + 'query': "parameters", + }, + body: { + 'facet': "filters", + }, + requestOptions: RequestOptions( + urlParameters: { + 'isItWorking': true, + }, + ), + ), + intercept: (request) { + expectPath(request.path, '/1/test/requestOptions'); + expect(request.method, 'post'); + expectParams(request.queryParameters, + """{"query":"parameters","isItWorking":"true"}"""); + expectBody(request.body, """{"facet":"filters"}"""); + }, + ), + ); + + // customPost + test( + 'requestOptions queryParameters accepts integers', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPost( + path: "/test/requestOptions", + parameters: { + 'query': "parameters", + }, + body: { + 'facet': "filters", + }, + requestOptions: RequestOptions( + urlParameters: { + 'myParam': 2, + }, + ), + ), + intercept: (request) { + expectPath(request.path, '/1/test/requestOptions'); + expect(request.method, 'post'); + expectParams(request.queryParameters, + """{"query":"parameters","myParam":"2"}"""); + expectBody(request.body, """{"facet":"filters"}"""); + }, + ), + ); + + // customPost + test( + 'requestOptions queryParameters accepts list of string', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPost( + path: "/test/requestOptions", + parameters: { + 'query': "parameters", + }, + body: { + 'facet': "filters", + }, + requestOptions: RequestOptions( + urlParameters: { + 'myParam': [ + "c", + "d", + ], + }, + ), + ), + intercept: (request) { + expectPath(request.path, '/1/test/requestOptions'); + expect(request.method, 'post'); + expectParams(request.queryParameters, + """{"query":"parameters","myParam":"c,d"}"""); + expectBody(request.body, """{"facet":"filters"}"""); + }, + ), + ); + + // customPost + test( + 'requestOptions queryParameters accepts list of booleans', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPost( + path: "/test/requestOptions", + parameters: { + 'query': "parameters", + }, + body: { + 'facet': "filters", + }, + requestOptions: RequestOptions( + urlParameters: { + 'myParam': [ + true, + true, + false, + ], + }, + ), + ), + intercept: (request) { + expectPath(request.path, '/1/test/requestOptions'); + expect(request.method, 'post'); + expectParams(request.queryParameters, + """{"query":"parameters","myParam":"true,true,false"}"""); + expectBody(request.body, """{"facet":"filters"}"""); + }, + ), + ); + + // customPost + test( + 'requestOptions queryParameters accepts list of integers', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPost( + path: "/test/requestOptions", + parameters: { + 'query': "parameters", + }, + body: { + 'facet': "filters", + }, + requestOptions: RequestOptions( + urlParameters: { + 'myParam': [ + 1, + 2, + ], + }, + ), + ), + intercept: (request) { + expectPath(request.path, '/1/test/requestOptions'); + expect(request.method, 'post'); + expectParams(request.queryParameters, + """{"query":"parameters","myParam":"1,2"}"""); + expectBody(request.body, """{"facet":"filters"}"""); + }, + ), + ); + + // customPut + test( + 'allow put method for a custom path with minimal parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPut( + path: "/test/minimal", + ), + intercept: (request) { + expectPath(request.path, '/1/test/minimal'); + expect(request.method, 'put'); + expectBody(request.body, """{}"""); + }, + ), + ); + + // customPut + test( + 'allow put method for a custom path with all parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.customPut( + path: "/test/all", + parameters: { + 'query': "parameters", + }, + body: { + 'body': "parameters", + }, + ), + intercept: (request) { + expectPath(request.path, '/1/test/all'); + expect(request.method, 'put'); + expectParams(request.queryParameters, """{"query":"parameters"}"""); + expectBody(request.body, """{"body":"parameters"}"""); + }, + ), + ); + + // deleteApiKey + test( + 'deleteApiKey0', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.deleteApiKey( + key: "myTestApiKey", + ), + intercept: (request) { + expectPath(request.path, '/1/keys/myTestApiKey'); + expect(request.method, 'delete'); + expect(request.body, null); + }, + ), + ); + + // deleteBy + test( + 'deleteBy0', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.deleteBy( + indexName: "theIndexName", + deleteByParams: DeleteByParams( + filters: "brand:brandName", + ), + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/theIndexName/deleteByQuery'); + expect(request.method, 'post'); + expectBody(request.body, """{"filters":"brand:brandName"}"""); + }, + ), + ); + + // deleteIndex + test( + 'deleteIndex0', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.deleteIndex( + indexName: "theIndexName", + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/theIndexName'); + expect(request.method, 'delete'); + expect(request.body, null); + }, + ), + ); + + // deleteObject + test( + 'deleteObject0', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.deleteObject( + indexName: "theIndexName", + objectID: "uniqueID", + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/theIndexName/uniqueID'); + expect(request.method, 'delete'); + expect(request.body, null); + }, + ), + ); + + // deleteRule + test( + 'delete rule simple case', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.deleteRule( + indexName: "indexName", + objectID: "id1", + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/indexName/rules/id1'); + expect(request.method, 'delete'); + expect(request.body, null); + }, + ), + ); + + // deleteRule + test( + 'delete rule with simple characters to encode in objectID', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.deleteRule( + indexName: "indexName", + objectID: "test/with/slash", + ), + intercept: (request) { + expectPath( + request.path, '/1/indexes/indexName/rules/test%2Fwith%2Fslash'); + expect(request.method, 'delete'); + expect(request.body, null); + }, + ), + ); + + // deleteSource + test( + 'deleteSource0', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.deleteSource( + source: "theSource", + ), + intercept: (request) { + expectPath(request.path, '/1/security/sources/theSource'); + expect(request.method, 'delete'); + expect(request.body, null); + }, + ), + ); + + // deleteSynonym + test( + 'deleteSynonym0', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.deleteSynonym( + indexName: "indexName", + objectID: "id1", + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/indexName/synonyms/id1'); + expect(request.method, 'delete'); + expect(request.body, null); + }, + ), + ); + + // getApiKey + test( + 'getApiKey0', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.getApiKey( + key: "myTestApiKey", + ), + intercept: (request) { + expectPath(request.path, '/1/keys/myTestApiKey'); + expect(request.method, 'get'); + expect(request.body, null); + }, + ), + ); + + // getDictionaryLanguages + test( + 'get getDictionaryLanguages', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.getDictionaryLanguages(), + intercept: (request) { + expectPath(request.path, '/1/dictionaries/*/languages'); + expect(request.method, 'get'); + expect(request.body, null); + }, + ), + ); + + // getDictionarySettings + test( + 'get getDictionarySettings results', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.getDictionarySettings(), + intercept: (request) { + expectPath(request.path, '/1/dictionaries/*/settings'); + expect(request.method, 'get'); + expect(request.body, null); + }, + ), + ); + + // getLogs + test( + 'getLogs with minimal parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.getLogs(), + intercept: (request) { + expectPath(request.path, '/1/logs'); + expect(request.method, 'get'); + expect(request.body, null); + }, + ), + ); + + // getLogs + test( + 'getLogs with parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.getLogs( + offset: 5, + length: 10, + indexName: "theIndexName", + type: LogType.fromJson("all"), + ), + intercept: (request) { + expectPath(request.path, '/1/logs'); + expect(request.method, 'get'); + expectParams(request.queryParameters, + """{"offset":"5","length":"10","indexName":"theIndexName","type":"all"}"""); + expect(request.body, null); + }, + ), + ); + + // getObject + test( + 'getObject0', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.getObject( + indexName: "theIndexName", + objectID: "uniqueID", + attributesToRetrieve: [ + "attr1", + "attr2", + ], + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/theIndexName/uniqueID'); + expect(request.method, 'get'); + expectParams(request.queryParameters, + """{"attributesToRetrieve":"attr1,attr2"}"""); + expect(request.body, null); + }, + ), + ); + + // getObjects + test( + 'getObjects0', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.getObjects( + getObjectsParams: GetObjectsParams( + requests: [ + GetObjectsRequest( + attributesToRetrieve: [ + "attr1", + "attr2", + ], + objectID: "uniqueID", + indexName: "theIndexName", + ), + ], + ), + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/*/objects'); + expect(request.method, 'post'); + expectBody(request.body, + """{"requests":[{"attributesToRetrieve":["attr1","attr2"],"objectID":"uniqueID","indexName":"theIndexName"}]}"""); + }, + ), + ); + + // getRule + test( + 'getRule0', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.getRule( + indexName: "indexName", + objectID: "id1", + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/indexName/rules/id1'); + expect(request.method, 'get'); + expect(request.body, null); + }, + ), + ); + + // getSettings + test( + 'getSettings0', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.getSettings( + indexName: "theIndexName", + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/theIndexName/settings'); + expect(request.method, 'get'); + expect(request.body, null); + }, + ), + ); + + // getSources + test( + 'getSources0', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.getSources(), + intercept: (request) { + expectPath(request.path, '/1/security/sources'); + expect(request.method, 'get'); + expect(request.body, null); + }, + ), + ); + + // getSynonym + test( + 'getSynonym0', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.getSynonym( + indexName: "indexName", + objectID: "id1", + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/indexName/synonyms/id1'); + expect(request.method, 'get'); + expect(request.body, null); + }, + ), + ); + + // getTask + test( + 'getTask0', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.getTask( + indexName: "theIndexName", + taskID: 123, + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/theIndexName/task/123'); + expect(request.method, 'get'); + expect(request.body, null); + }, + ), + ); + + // getTopUserIds + test( + 'getTopUserIds0', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.getTopUserIds(), + intercept: (request) { + expectPath(request.path, '/1/clusters/mapping/top'); + expect(request.method, 'get'); + expect(request.body, null); + }, + ), + ); + + // getUserId + test( + 'getUserId0', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.getUserId( + userID: "uniqueID", + ), + intercept: (request) { + expectPath(request.path, '/1/clusters/mapping/uniqueID'); + expect(request.method, 'get'); + expect(request.body, null); + }, + ), + ); + + // hasPendingMappings + test( + 'hasPendingMappings with minimal parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.hasPendingMappings(), + intercept: (request) { + expectPath(request.path, '/1/clusters/mapping/pending'); + expect(request.method, 'get'); + expect(request.body, null); + }, + ), + ); + + // hasPendingMappings + test( + 'hasPendingMappings with parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.hasPendingMappings( + getClusters: true, + ), + intercept: (request) { + expectPath(request.path, '/1/clusters/mapping/pending'); + expect(request.method, 'get'); + expectParams(request.queryParameters, """{"getClusters":"true"}"""); + expect(request.body, null); + }, + ), + ); + + // listApiKeys + test( + 'listApiKeys0', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.listApiKeys(), + intercept: (request) { + expectPath(request.path, '/1/keys'); + expect(request.method, 'get'); + expect(request.body, null); + }, + ), + ); + + // listClusters + test( + 'listClusters0', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.listClusters(), + intercept: (request) { + expectPath(request.path, '/1/clusters'); + expect(request.method, 'get'); + expect(request.body, null); + }, + ), + ); + + // listIndices + test( + 'listIndices with minimal parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.listIndices(), + intercept: (request) { + expectPath(request.path, '/1/indexes'); + expect(request.method, 'get'); + expect(request.body, null); + }, + ), + ); + + // listIndices + test( + 'listIndices with parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.listIndices( + page: 8, + hitsPerPage: 3, + ), + intercept: (request) { + expectPath(request.path, '/1/indexes'); + expect(request.method, 'get'); + expectParams( + request.queryParameters, """{"page":"8","hitsPerPage":"3"}"""); + expect(request.body, null); + }, + ), + ); + + // listUserIds + test( + 'listUserIds with minimal parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.listUserIds(), + intercept: (request) { + expectPath(request.path, '/1/clusters/mapping'); + expect(request.method, 'get'); + expect(request.body, null); + }, + ), + ); + + // listUserIds + test( + 'listUserIds with parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.listUserIds( + page: 8, + hitsPerPage: 100, + ), + intercept: (request) { + expectPath(request.path, '/1/clusters/mapping'); + expect(request.method, 'get'); + expectParams( + request.queryParameters, """{"page":"8","hitsPerPage":"100"}"""); + expect(request.body, null); + }, + ), + ); + + // multipleBatch + test( + 'multipleBatch0', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.multipleBatch( + batchParams: BatchParams( + requests: [ + MultipleBatchRequest( + action: Action.fromJson("addObject"), + body: { + 'key': "value", + }, + indexName: "theIndexName", + ), + ], + ), + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/*/batch'); + expect(request.method, 'post'); + expectBody(request.body, + """{"requests":[{"action":"addObject","body":{"key":"value"},"indexName":"theIndexName"}]}"""); + }, + ), + ); + + // operationIndex + test( + 'operationIndex0', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.operationIndex( + indexName: "theIndexName", + operationIndexParams: OperationIndexParams( + operation: OperationType.fromJson("copy"), + destination: "dest", + scope: [ + ScopeType.fromJson("rules"), + ScopeType.fromJson("settings"), + ], + ), + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/theIndexName/operation'); + expect(request.method, 'post'); + expectBody(request.body, + """{"operation":"copy","destination":"dest","scope":["rules","settings"]}"""); + }, + ), + ); + + // partialUpdateObject + test( + 'partialUpdateObject0', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.partialUpdateObject( + indexName: "theIndexName", + objectID: "uniqueID", + attributesToUpdate: { + 'id1': "test", + 'id2': BuiltInOperation( + operation: BuiltInOperationType.fromJson("AddUnique"), + value: "test2", + ), + }, + createIfNotExists: true, + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/theIndexName/uniqueID/partial'); + expect(request.method, 'post'); + expectParams( + request.queryParameters, """{"createIfNotExists":"true"}"""); + expectBody(request.body, + """{"id1":"test","id2":{"_operation":"AddUnique","value":"test2"}}"""); + }, + ), + ); + + // removeUserId + test( + 'removeUserId0', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.removeUserId( + userID: "uniqueID", + ), + intercept: (request) { + expectPath(request.path, '/1/clusters/mapping/uniqueID'); + expect(request.method, 'delete'); + expect(request.body, null); + }, + ), + ); + + // replaceSources + test( + 'replaceSources0', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.replaceSources( + source: [ + Source( + source: "theSource", + description: "theDescription", + ), + ], + ), + intercept: (request) { + expectPath(request.path, '/1/security/sources'); + expect(request.method, 'put'); + expectBody(request.body, + """[{"source":"theSource","description":"theDescription"}]"""); + }, + ), + ); + + // restoreApiKey + test( + 'restoreApiKey0', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.restoreApiKey( + key: "myApiKey", + ), + intercept: (request) { + expectPath(request.path, '/1/keys/myApiKey/restore'); + expect(request.method, 'post'); + expect(request.body, {}); + }, + ), + ); + + // saveObject + test( + 'saveObject0', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.saveObject( + indexName: "theIndexName", + body: { + 'objectID': "id", + 'test': "val", + }, + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/theIndexName'); + expect(request.method, 'post'); + expectBody(request.body, """{"objectID":"id","test":"val"}"""); + }, + ), + ); + + // saveRule + test( + 'saveRule with minimal parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.saveRule( + indexName: "indexName", + objectID: "id1", + rule: Rule( + objectID: "id1", + conditions: [ + Condition( + pattern: "apple", + anchoring: Anchoring.fromJson("contains"), + ), + ], + ), + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/indexName/rules/id1'); + expect(request.method, 'put'); + expectBody(request.body, + """{"objectID":"id1","conditions":[{"pattern":"apple","anchoring":"contains"}]}"""); + }, + ), + ); + + // saveRule + test( + 'saveRule with all parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.saveRule( + indexName: "indexName", + objectID: "id1", + rule: Rule( + objectID: "id1", + conditions: [ + Condition( + pattern: "apple", + anchoring: Anchoring.fromJson("contains"), + alternatives: false, + context: "search", + ), + ], + consequence: Consequence( + params: ConsequenceParams( + filters: "brand:apple", + query: ConsequenceQueryObject( + remove: [ + "algolia", + ], + edits: [ + Edit( + type: EditType.fromJson("remove"), + delete: "abc", + insert: "cde", + ), + Edit( + type: EditType.fromJson("replace"), + delete: "abc", + insert: "cde", + ), + ], + ), + ), + hide: [ + ConsequenceHide( + objectID: "321", + ), + ], + filterPromotes: false, + userData: { + 'algolia': 'aloglia', + }, + promote: [ + PromoteObjectID( + objectID: "abc", + position: 3, + ), + PromoteObjectIDs( + objectIDs: [ + "abc", + "def", + ], + position: 1, + ), + ], + ), + description: "test", + enabled: true, + validity: [ + TimeRange( + from: 1656670273, + until: 1656670277, + ), + ], + ), + forwardToReplicas: true, + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/indexName/rules/id1'); + expect(request.method, 'put'); + expectParams( + request.queryParameters, """{"forwardToReplicas":"true"}"""); + expectBody(request.body, + """{"objectID":"id1","conditions":[{"pattern":"apple","anchoring":"contains","alternatives":false,"context":"search"}],"consequence":{"params":{"filters":"brand:apple","query":{"remove":["algolia"],"edits":[{"type":"remove","delete":"abc","insert":"cde"},{"type":"replace","delete":"abc","insert":"cde"}]}},"hide":[{"objectID":"321"}],"filterPromotes":false,"userData":{"algolia":"aloglia"},"promote":[{"objectID":"abc","position":3},{"objectIDs":["abc","def"],"position":1}]},"description":"test","enabled":true,"validity":[{"from":1656670273,"until":1656670277}]}"""); + }, + ), + ); + + // saveRules + test( + 'saveRules with minimal parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.saveRules( + indexName: "indexName", + rules: [ + Rule( + objectID: "a-rule-id", + conditions: [ + Condition( + pattern: "smartphone", + anchoring: Anchoring.fromJson("contains"), + ), + ], + ), + Rule( + objectID: "a-second-rule-id", + conditions: [ + Condition( + pattern: "apple", + anchoring: Anchoring.fromJson("contains"), + ), + ], + ), + ], + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/indexName/rules/batch'); + expect(request.method, 'post'); + expectBody(request.body, + """[{"objectID":"a-rule-id","conditions":[{"pattern":"smartphone","anchoring":"contains"}]},{"objectID":"a-second-rule-id","conditions":[{"pattern":"apple","anchoring":"contains"}]}]"""); + }, + ), + ); + + // saveRules + test( + 'saveRules with all parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.saveRules( + indexName: "indexName", + rules: [ + Rule( + objectID: "id1", + conditions: [ + Condition( + pattern: "apple", + anchoring: Anchoring.fromJson("contains"), + alternatives: false, + context: "search", + ), + ], + consequence: Consequence( + params: ConsequenceParams( + filters: "brand:apple", + query: ConsequenceQueryObject( + remove: [ + "algolia", + ], + edits: [ + Edit( + type: EditType.fromJson("remove"), + delete: "abc", + insert: "cde", + ), + Edit( + type: EditType.fromJson("replace"), + delete: "abc", + insert: "cde", + ), + ], + ), + ), + hide: [ + ConsequenceHide( + objectID: "321", + ), + ], + filterPromotes: false, + userData: { + 'algolia': 'aloglia', + }, + promote: [ + PromoteObjectID( + objectID: "abc", + position: 3, + ), + PromoteObjectIDs( + objectIDs: [ + "abc", + "def", + ], + position: 1, + ), + ], + ), + description: "test", + enabled: true, + validity: [ + TimeRange( + from: 1656670273, + until: 1656670277, + ), + ], + ), + ], + forwardToReplicas: true, + clearExistingRules: true, + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/indexName/rules/batch'); + expect(request.method, 'post'); + expectParams(request.queryParameters, + """{"forwardToReplicas":"true","clearExistingRules":"true"}"""); + expectBody(request.body, + """[{"objectID":"id1","conditions":[{"pattern":"apple","anchoring":"contains","alternatives":false,"context":"search"}],"consequence":{"params":{"filters":"brand:apple","query":{"remove":["algolia"],"edits":[{"type":"remove","delete":"abc","insert":"cde"},{"type":"replace","delete":"abc","insert":"cde"}]}},"hide":[{"objectID":"321"}],"filterPromotes":false,"userData":{"algolia":"aloglia"},"promote":[{"objectID":"abc","position":3},{"objectIDs":["abc","def"],"position":1}]},"description":"test","enabled":true,"validity":[{"from":1656670273,"until":1656670277}]}]"""); + }, + ), + ); + + // saveSynonym + test( + 'saveSynonym0', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.saveSynonym( + indexName: "indexName", + objectID: "id1", + synonymHit: SynonymHit( + objectID: "id1", + type: SynonymType.fromJson("synonym"), + synonyms: [ + "car", + "vehicule", + "auto", + ], + ), + forwardToReplicas: true, + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/indexName/synonyms/id1'); + expect(request.method, 'put'); + expectParams( + request.queryParameters, """{"forwardToReplicas":"true"}"""); + expectBody(request.body, + """{"objectID":"id1","type":"synonym","synonyms":["car","vehicule","auto"]}"""); + }, + ), + ); + + // saveSynonyms + test( + 'saveSynonyms0', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.saveSynonyms( + indexName: "indexName", + synonymHit: [ + SynonymHit( + objectID: "id1", + type: SynonymType.fromJson("synonym"), + synonyms: [ + "car", + "vehicule", + "auto", + ], + ), + SynonymHit( + objectID: "id2", + type: SynonymType.fromJson("onewaysynonym"), + input: "iphone", + synonyms: [ + "ephone", + "aphone", + "yphone", + ], + ), + ], + forwardToReplicas: true, + replaceExistingSynonyms: false, + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/indexName/synonyms/batch'); + expect(request.method, 'post'); + expectParams(request.queryParameters, + """{"forwardToReplicas":"true","replaceExistingSynonyms":"false"}"""); + expectBody(request.body, + """[{"objectID":"id1","type":"synonym","synonyms":["car","vehicule","auto"]},{"objectID":"id2","type":"onewaysynonym","input":"iphone","synonyms":["ephone","aphone","yphone"]}]"""); + }, + ), + ); + + // search + test( + 'search for a single hits request with minimal parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.search( + searchMethodParams: SearchMethodParams( + requests: [ + SearchForHits( + indexName: "cts_e2e_search_empty_index", + ), + ], + ), + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/*/queries'); + expect(request.method, 'post'); + expectBody(request.body, + """{"requests":[{"indexName":"cts_e2e_search_empty_index"}]}"""); + }, + ), + ); + + // search + test( + 'search for a single facet request with minimal parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.search( + searchMethodParams: SearchMethodParams( + requests: [ + SearchForFacets( + indexName: "cts_e2e_search_facet", + type: SearchTypeFacet.fromJson("facet"), + facet: "editor", + ), + ], + strategy: SearchStrategy.fromJson("stopIfEnoughMatches"), + ), + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/*/queries'); + expect(request.method, 'post'); + expectBody(request.body, + """{"requests":[{"indexName":"cts_e2e_search_facet","type":"facet","facet":"editor"}],"strategy":"stopIfEnoughMatches"}"""); + }, + ), + ); + + // search + test( + 'search for a single hits request with all parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.search( + searchMethodParams: SearchMethodParams( + requests: [ + SearchForHits( + indexName: "theIndexName", + query: "myQuery", + hitsPerPage: 50, + type: SearchTypeDefault.fromJson("default"), + ), + ], + ), + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/*/queries'); + expect(request.method, 'post'); + expectBody(request.body, + """{"requests":[{"indexName":"theIndexName","query":"myQuery","hitsPerPage":50,"type":"default"}]}"""); + }, + ), + ); + + // search + test( + 'search for a single facet request with all parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.search( + searchMethodParams: SearchMethodParams( + requests: [ + SearchForFacets( + indexName: "theIndexName", + type: SearchTypeFacet.fromJson("facet"), + facet: "theFacet", + facetQuery: "theFacetQuery", + query: "theQuery", + maxFacetHits: 50, + ), + ], + strategy: SearchStrategy.fromJson("stopIfEnoughMatches"), + ), + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/*/queries'); + expect(request.method, 'post'); + expectBody(request.body, + """{"requests":[{"indexName":"theIndexName","type":"facet","facet":"theFacet","facetQuery":"theFacetQuery","query":"theQuery","maxFacetHits":50}],"strategy":"stopIfEnoughMatches"}"""); + }, + ), + ); + + // search + test( + 'search for multiple mixed requests in multiple indices with minimal parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.search( + searchMethodParams: SearchMethodParams( + requests: [ + SearchForHits( + indexName: "theIndexName", + ), + SearchForFacets( + indexName: "theIndexName2", + type: SearchTypeFacet.fromJson("facet"), + facet: "theFacet", + ), + SearchForHits( + indexName: "theIndexName", + type: SearchTypeDefault.fromJson("default"), + ), + ], + strategy: SearchStrategy.fromJson("stopIfEnoughMatches"), + ), + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/*/queries'); + expect(request.method, 'post'); + expectBody(request.body, + """{"requests":[{"indexName":"theIndexName"},{"indexName":"theIndexName2","type":"facet","facet":"theFacet"},{"indexName":"theIndexName","type":"default"}],"strategy":"stopIfEnoughMatches"}"""); + }, + ), + ); + + // search + test( + 'search for multiple mixed requests in multiple indices with all parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.search( + searchMethodParams: SearchMethodParams( + requests: [ + SearchForFacets( + indexName: "theIndexName", + type: SearchTypeFacet.fromJson("facet"), + facet: "theFacet", + facetQuery: "theFacetQuery", + query: "theQuery", + maxFacetHits: 50, + ), + SearchForHits( + indexName: "theIndexName", + query: "myQuery", + hitsPerPage: 50, + type: SearchTypeDefault.fromJson("default"), + ), + ], + strategy: SearchStrategy.fromJson("stopIfEnoughMatches"), + ), + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/*/queries'); + expect(request.method, 'post'); + expectBody(request.body, + """{"requests":[{"indexName":"theIndexName","type":"facet","facet":"theFacet","facetQuery":"theFacetQuery","query":"theQuery","maxFacetHits":50},{"indexName":"theIndexName","query":"myQuery","hitsPerPage":50,"type":"default"}],"strategy":"stopIfEnoughMatches"}"""); + }, + ), + ); + + // search + test( + 'search filters accept all of the possible shapes', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.search( + searchMethodParams: SearchMethodParams( + requests: [ + SearchForHits( + indexName: "theIndexName", + facetFilters: "mySearch:filters", + reRankingApplyFilter: "mySearch:filters", + tagFilters: "mySearch:filters", + numericFilters: "mySearch:filters", + optionalFilters: "mySearch:filters", + ), + SearchForHits( + indexName: "theIndexName", + facetFilters: [ + "mySearch:filters", + [ + "mySearch:filters", + ], + ], + reRankingApplyFilter: [ + "mySearch:filters", + [ + "mySearch:filters", + ], + ], + tagFilters: [ + "mySearch:filters", + [ + "mySearch:filters", + ], + ], + numericFilters: [ + "mySearch:filters", + [ + "mySearch:filters", + ], + ], + optionalFilters: [ + "mySearch:filters", + [ + "mySearch:filters", + ], + ], + ), + ], + ), + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/*/queries'); + expect(request.method, 'post'); + expectBody(request.body, + """{"requests":[{"indexName":"theIndexName","facetFilters":"mySearch:filters","reRankingApplyFilter":"mySearch:filters","tagFilters":"mySearch:filters","numericFilters":"mySearch:filters","optionalFilters":"mySearch:filters"},{"indexName":"theIndexName","facetFilters":["mySearch:filters",["mySearch:filters"]],"reRankingApplyFilter":["mySearch:filters",["mySearch:filters"]],"tagFilters":["mySearch:filters",["mySearch:filters"]],"numericFilters":["mySearch:filters",["mySearch:filters"]],"optionalFilters":["mySearch:filters",["mySearch:filters"]]}]}"""); + }, + ), + ); + + // search + test( + 'search with all search parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.search( + searchMethodParams: SearchMethodParams( + requests: [ + SearchForHits( + advancedSyntax: true, + advancedSyntaxFeatures: [ + AdvancedSyntaxFeatures.fromJson("exactPhrase"), + ], + allowTyposOnNumericTokens: true, + alternativesAsExact: [ + AlternativesAsExact.fromJson("multiWordsSynonym"), + ], + analytics: true, + analyticsTags: [ + "", + ], + aroundLatLng: "", + aroundLatLngViaIP: true, + aroundPrecision: 0, + aroundRadius: AroundRadiusAll.fromJson("all"), + attributeCriteriaComputedByMinProximity: true, + attributesForFaceting: [ + "", + ], + attributesToHighlight: [ + "", + ], + attributesToRetrieve: [ + "", + ], + attributesToSnippet: [ + "", + ], + clickAnalytics: true, + customRanking: [ + "", + ], + decompoundQuery: true, + disableExactOnAttributes: [ + "", + ], + disableTypoToleranceOnAttributes: [ + "", + ], + distinct: 0, + enableABTest: true, + enablePersonalization: true, + enableReRanking: true, + enableRules: true, + exactOnSingleWordQuery: + ExactOnSingleWordQuery.fromJson("attribute"), + explain: [ + "foo", + "bar", + ], + facetFilters: [ + "", + ], + facetingAfterDistinct: true, + facets: [ + "", + ], + filters: "", + getRankingInfo: true, + highlightPostTag: "", + highlightPreTag: "", + hitsPerPage: 1, + ignorePlurals: false, + indexName: "theIndexName", + insideBoundingBox: [ + [ + 47.3165, + 4.9665, + 47.3424, + 5.0201, + ], + [ + 40.9234, + 2.1185, + 38.643, + 1.9916, + ], + ], + insidePolygon: [ + [ + 47.3165, + 4.9665, + 47.3424, + 5.0201, + 47.32, + 4.9, + ], + [ + 40.9234, + 2.1185, + 38.643, + 1.9916, + 39.2587, + 2.0104, + ], + ], + keepDiacriticsOnCharacters: "", + length: 1, + maxValuesPerFacet: 0, + minProximity: 1, + minWordSizefor1Typo: 0, + minWordSizefor2Typos: 0, + minimumAroundRadius: 1, + naturalLanguages: [ + "", + ], + numericFilters: [ + "", + ], + offset: 0, + optionalFilters: [ + "", + ], + optionalWords: [ + "", + ], + page: 0, + percentileComputation: true, + personalizationImpact: 0, + query: "", + queryLanguages: [ + "", + ], + queryType: QueryType.fromJson("prefixAll"), + ranking: [ + "", + ], + reRankingApplyFilter: [ + "", + ], + relevancyStrictness: 0, + removeStopWords: true, + removeWordsIfNoResults: + RemoveWordsIfNoResults.fromJson("allOptional"), + renderingContent: RenderingContent( + facetOrdering: FacetOrdering( + facets: Facets( + order: [ + "a", + "b", + ], + ), + values: { + 'a': Value( + order: [ + "b", + ], + sortRemainingBy: SortRemainingBy.fromJson("count"), + ), + }, + ), + ), + replaceSynonymsInHighlight: true, + responseFields: [ + "", + ], + restrictHighlightAndSnippetArrays: true, + restrictSearchableAttributes: [ + "", + ], + ruleContexts: [ + "", + ], + similarQuery: "", + snippetEllipsisText: "", + sortFacetValuesBy: "", + sumOrFiltersScores: true, + synonyms: true, + tagFilters: [ + "", + ], + type: SearchTypeDefault.fromJson("default"), + typoTolerance: TypoToleranceEnum.fromJson("min"), + userToken: "", + ), + ], + ), + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/*/queries'); + expect(request.method, 'post'); + expectBody(request.body, + """{"requests":[{"advancedSyntax":true,"advancedSyntaxFeatures":["exactPhrase"],"allowTyposOnNumericTokens":true,"alternativesAsExact":["multiWordsSynonym"],"analytics":true,"analyticsTags":[""],"aroundLatLng":"","aroundLatLngViaIP":true,"aroundPrecision":0,"aroundRadius":"all","attributeCriteriaComputedByMinProximity":true,"attributesForFaceting":[""],"attributesToHighlight":[""],"attributesToRetrieve":[""],"attributesToSnippet":[""],"clickAnalytics":true,"customRanking":[""],"decompoundQuery":true,"disableExactOnAttributes":[""],"disableTypoToleranceOnAttributes":[""],"distinct":0,"enableABTest":true,"enablePersonalization":true,"enableReRanking":true,"enableRules":true,"exactOnSingleWordQuery":"attribute","explain":["foo","bar"],"facetFilters":[""],"facetingAfterDistinct":true,"facets":[""],"filters":"","getRankingInfo":true,"highlightPostTag":"","highlightPreTag":"","hitsPerPage":1,"ignorePlurals":false,"indexName":"theIndexName","insideBoundingBox":[[47.3165,4.9665,47.3424,5.0201],[40.9234,2.1185,38.643,1.9916]],"insidePolygon":[[47.3165,4.9665,47.3424,5.0201,47.32,4.9],[40.9234,2.1185,38.643,1.9916,39.2587,2.0104]],"keepDiacriticsOnCharacters":"","length":1,"maxValuesPerFacet":0,"minProximity":1,"minWordSizefor1Typo":0,"minWordSizefor2Typos":0,"minimumAroundRadius":1,"naturalLanguages":[""],"numericFilters":[""],"offset":0,"optionalFilters":[""],"optionalWords":[""],"page":0,"percentileComputation":true,"personalizationImpact":0,"query":"","queryLanguages":[""],"queryType":"prefixAll","ranking":[""],"reRankingApplyFilter":[""],"relevancyStrictness":0,"removeStopWords":true,"removeWordsIfNoResults":"allOptional","renderingContent":{"facetOrdering":{"facets":{"order":["a","b"]},"values":{"a":{"order":["b"],"sortRemainingBy":"count"}}}},"replaceSynonymsInHighlight":true,"responseFields":[""],"restrictHighlightAndSnippetArrays":true,"restrictSearchableAttributes":[""],"ruleContexts":[""],"similarQuery":"","snippetEllipsisText":"","sortFacetValuesBy":"","sumOrFiltersScores":true,"synonyms":true,"tagFilters":[""],"type":"default","typoTolerance":"min","userToken":""}]}"""); + }, + ), + ); + + // searchDictionaryEntries + test( + 'get searchDictionaryEntries results with minimal parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.searchDictionaryEntries( + dictionaryName: DictionaryType.fromJson("compounds"), + searchDictionaryEntriesParams: SearchDictionaryEntriesParams( + query: "foo", + ), + ), + intercept: (request) { + expectPath(request.path, '/1/dictionaries/compounds/search'); + expect(request.method, 'post'); + expectBody(request.body, """{"query":"foo"}"""); + }, + ), + ); + + // searchDictionaryEntries + test( + 'get searchDictionaryEntries results with all parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.searchDictionaryEntries( + dictionaryName: DictionaryType.fromJson("compounds"), + searchDictionaryEntriesParams: SearchDictionaryEntriesParams( + query: "foo", + page: 4, + hitsPerPage: 2, + language: "fr", + ), + ), + intercept: (request) { + expectPath(request.path, '/1/dictionaries/compounds/search'); + expect(request.method, 'post'); + expectBody(request.body, + """{"query":"foo","page":4,"hitsPerPage":2,"language":"fr"}"""); + }, + ), + ); + + // searchForFacetValues + test( + 'get searchForFacetValues results with minimal parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.searchForFacetValues( + indexName: "indexName", + facetName: "facetName", + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/indexName/facets/facetName/query'); + expect(request.method, 'post'); + expectBody(request.body, """{}"""); + }, + ), + ); + + // searchForFacetValues + test( + 'get searchForFacetValues results with all parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.searchForFacetValues( + indexName: "indexName", + facetName: "facetName", + searchForFacetValuesRequest: SearchForFacetValuesRequest( + params: "query=foo&facetFilters=['bar']", + facetQuery: "foo", + maxFacetHits: 42, + ), + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/indexName/facets/facetName/query'); + expect(request.method, 'post'); + expectBody(request.body, + """{"params":"query=foo&facetFilters=['bar']","facetQuery":"foo","maxFacetHits":42}"""); + }, + ), + ); + + // searchRules + test( + 'searchRules0', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.searchRules( + indexName: "indexName", + searchRulesParams: SearchRulesParams( + query: "something", + ), + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/indexName/rules/search'); + expect(request.method, 'post'); + expectBody(request.body, """{"query":"something"}"""); + }, + ), + ); + + // searchSingleIndex + test( + 'search with minimal parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.searchSingleIndex( + indexName: "indexName", + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/indexName/query'); + expect(request.method, 'post'); + expectBody(request.body, """{}"""); + }, + ), + ); + + // searchSingleIndex + test( + 'search with searchParams', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.searchSingleIndex( + indexName: "indexName", + searchParams: SearchParamsObject( + query: "myQuery", + facetFilters: [ + "tags:algolia", + ], + ), + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/indexName/query'); + expect(request.method, 'post'); + expectBody(request.body, + """{"query":"myQuery","facetFilters":["tags:algolia"]}"""); + }, + ), + ); + + // searchSynonyms + test( + 'searchSynonyms with minimal parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.searchSynonyms( + indexName: "indexName", + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/indexName/synonyms/search'); + expect(request.method, 'post'); + expectBody(request.body, """{}"""); + }, + ), + ); + + // searchSynonyms + test( + 'searchSynonyms with all parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.searchSynonyms( + indexName: "indexName", + type: SynonymType.fromJson("altcorrection1"), + page: 10, + hitsPerPage: 10, + searchSynonymsParams: SearchSynonymsParams( + query: "myQuery", + ), + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/indexName/synonyms/search'); + expect(request.method, 'post'); + expectParams(request.queryParameters, + """{"type":"altcorrection1","page":"10","hitsPerPage":"10"}"""); + expectBody(request.body, """{"query":"myQuery"}"""); + }, + ), + ); + + // searchUserIds + test( + 'searchUserIds0', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.searchUserIds( + searchUserIdsParams: SearchUserIdsParams( + query: "test", + clusterName: "theClusterName", + page: 5, + hitsPerPage: 10, + ), + ), + intercept: (request) { + expectPath(request.path, '/1/clusters/mapping/search'); + expect(request.method, 'post'); + expectBody(request.body, + """{"query":"test","clusterName":"theClusterName","page":5,"hitsPerPage":10}"""); + }, + ), + ); + + // setDictionarySettings + test( + 'get setDictionarySettings results with minimal parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.setDictionarySettings( + dictionarySettingsParams: DictionarySettingsParams( + disableStandardEntries: StandardEntries( + plurals: { + 'fr': false, + 'en': false, + 'ru': true, + }, + ), + ), + ), + intercept: (request) { + expectPath(request.path, '/1/dictionaries/*/settings'); + expect(request.method, 'put'); + expectBody(request.body, + """{"disableStandardEntries":{"plurals":{"fr":false,"en":false,"ru":true}}}"""); + }, + ), + ); + + // setDictionarySettings + test( + 'get setDictionarySettings results with all parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.setDictionarySettings( + dictionarySettingsParams: DictionarySettingsParams( + disableStandardEntries: StandardEntries( + plurals: { + 'fr': false, + 'en': false, + 'ru': true, + }, + stopwords: { + 'fr': false, + }, + compounds: { + 'ru': true, + }, + ), + ), + ), + intercept: (request) { + expectPath(request.path, '/1/dictionaries/*/settings'); + expect(request.method, 'put'); + expectBody(request.body, + """{"disableStandardEntries":{"plurals":{"fr":false,"en":false,"ru":true},"stopwords":{"fr":false},"compounds":{"ru":true}}}"""); + }, + ), + ); + + // setSettings + test( + 'setSettings with minimal parameters', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.setSettings( + indexName: "theIndexName", + indexSettings: IndexSettings( + paginationLimitedTo: 10, + ), + forwardToReplicas: true, + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/theIndexName/settings'); + expect(request.method, 'put'); + expectParams( + request.queryParameters, """{"forwardToReplicas":"true"}"""); + expectBody(request.body, """{"paginationLimitedTo":10}"""); + }, + ), + ); + + // setSettings + test( + 'setSettings allow boolean `typoTolerance`', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.setSettings( + indexName: "theIndexName", + indexSettings: IndexSettings( + typoTolerance: true, + ), + forwardToReplicas: true, + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/theIndexName/settings'); + expect(request.method, 'put'); + expectParams( + request.queryParameters, """{"forwardToReplicas":"true"}"""); + expectBody(request.body, """{"typoTolerance":true}"""); + }, + ), + ); + + // setSettings + test( + 'setSettings allow enum `typoTolerance`', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.setSettings( + indexName: "theIndexName", + indexSettings: IndexSettings( + typoTolerance: TypoToleranceEnum.fromJson("min"), + ), + forwardToReplicas: true, + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/theIndexName/settings'); + expect(request.method, 'put'); + expectParams( + request.queryParameters, """{"forwardToReplicas":"true"}"""); + expectBody(request.body, """{"typoTolerance":"min"}"""); + }, + ), + ); + + // setSettings + test( + 'setSettings allow boolean `ignorePlurals`', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.setSettings( + indexName: "theIndexName", + indexSettings: IndexSettings( + ignorePlurals: true, + ), + forwardToReplicas: true, + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/theIndexName/settings'); + expect(request.method, 'put'); + expectParams( + request.queryParameters, """{"forwardToReplicas":"true"}"""); + expectBody(request.body, """{"ignorePlurals":true}"""); + }, + ), + ); + + // setSettings + test( + 'setSettings allow list of string `ignorePlurals`', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.setSettings( + indexName: "theIndexName", + indexSettings: IndexSettings( + ignorePlurals: [ + "algolia", + ], + ), + forwardToReplicas: true, + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/theIndexName/settings'); + expect(request.method, 'put'); + expectParams( + request.queryParameters, """{"forwardToReplicas":"true"}"""); + expectBody(request.body, """{"ignorePlurals":["algolia"]}"""); + }, + ), + ); + + // setSettings + test( + 'setSettings allow boolean `removeStopWords`', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.setSettings( + indexName: "theIndexName", + indexSettings: IndexSettings( + removeStopWords: true, + ), + forwardToReplicas: true, + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/theIndexName/settings'); + expect(request.method, 'put'); + expectParams( + request.queryParameters, """{"forwardToReplicas":"true"}"""); + expectBody(request.body, """{"removeStopWords":true}"""); + }, + ), + ); + + // setSettings + test( + 'setSettings allow list of string `removeStopWords`', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.setSettings( + indexName: "theIndexName", + indexSettings: IndexSettings( + removeStopWords: [ + "algolia", + ], + ), + forwardToReplicas: true, + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/theIndexName/settings'); + expect(request.method, 'put'); + expectParams( + request.queryParameters, """{"forwardToReplicas":"true"}"""); + expectBody(request.body, """{"removeStopWords":["algolia"]}"""); + }, + ), + ); + + // setSettings + test( + 'setSettings allow boolean `distinct`', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.setSettings( + indexName: "theIndexName", + indexSettings: IndexSettings( + distinct: true, + ), + forwardToReplicas: true, + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/theIndexName/settings'); + expect(request.method, 'put'); + expectParams( + request.queryParameters, """{"forwardToReplicas":"true"}"""); + expectBody(request.body, """{"distinct":true}"""); + }, + ), + ); + + // setSettings + test( + 'setSettings allow integers for `distinct`', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.setSettings( + indexName: "theIndexName", + indexSettings: IndexSettings( + distinct: 1, + ), + forwardToReplicas: true, + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/theIndexName/settings'); + expect(request.method, 'put'); + expectParams( + request.queryParameters, """{"forwardToReplicas":"true"}"""); + expectBody(request.body, """{"distinct":1}"""); + }, + ), + ); + + // setSettings + test( + 'setSettings allow all `indexSettings`', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.setSettings( + indexName: "theIndexName", + indexSettings: IndexSettings( + advancedSyntax: true, + advancedSyntaxFeatures: [ + AdvancedSyntaxFeatures.fromJson("exactPhrase"), + ], + allowCompressionOfIntegerArray: true, + allowTyposOnNumericTokens: true, + alternativesAsExact: [ + AlternativesAsExact.fromJson("singleWordSynonym"), + ], + attributeCriteriaComputedByMinProximity: true, + attributeForDistinct: "test", + attributesForFaceting: [ + "algolia", + ], + attributesToHighlight: [ + "algolia", + ], + attributesToRetrieve: [ + "algolia", + ], + attributesToSnippet: [ + "algolia", + ], + attributesToTransliterate: [ + "algolia", + ], + camelCaseAttributes: [ + "algolia", + ], + customNormalization: { + 'algolia': { + 'aloglia': "aglolia", + }, + }, + customRanking: [ + "algolia", + ], + decompoundQuery: false, + decompoundedAttributes: { + 'algolia': "aloglia", + }, + disableExactOnAttributes: [ + "algolia", + ], + disablePrefixOnAttributes: [ + "algolia", + ], + disableTypoToleranceOnAttributes: [ + "algolia", + ], + disableTypoToleranceOnWords: [ + "algolia", + ], + distinct: 3, + enablePersonalization: true, + enableReRanking: false, + enableRules: true, + exactOnSingleWordQuery: ExactOnSingleWordQuery.fromJson("attribute"), + highlightPreTag: "", + highlightPostTag: "", + hitsPerPage: 10, + ignorePlurals: false, + indexLanguages: [ + "algolia", + ], + keepDiacriticsOnCharacters: "abc", + maxFacetHits: 20, + maxValuesPerFacet: 30, + minProximity: 6, + minWordSizefor1Typo: 5, + minWordSizefor2Typos: 11, + mode: Mode.fromJson("neuralSearch"), + numericAttributesForFiltering: [ + "algolia", + ], + optionalWords: [ + "myspace", + ], + paginationLimitedTo: 0, + queryLanguages: [ + "algolia", + ], + queryType: QueryType.fromJson("prefixLast"), + ranking: [ + "geo", + ], + reRankingApplyFilter: "mySearch:filters", + relevancyStrictness: 10, + removeStopWords: false, + removeWordsIfNoResults: RemoveWordsIfNoResults.fromJson("lastWords"), + renderingContent: RenderingContent( + facetOrdering: FacetOrdering( + facets: Facets( + order: [ + "a", + "b", + ], + ), + values: { + 'a': Value( + order: [ + "b", + ], + sortRemainingBy: SortRemainingBy.fromJson("count"), + ), + }, + ), + ), + replaceSynonymsInHighlight: true, + replicas: [ + "", + ], + responseFields: [ + "algolia", + ], + restrictHighlightAndSnippetArrays: true, + searchableAttributes: [ + "foo", + ], + semanticSearch: SemanticSearch( + eventSources: [ + "foo", + ], + ), + separatorsToIndex: "bar", + snippetEllipsisText: "---", + sortFacetValuesBy: "date", + typoTolerance: false, + unretrievableAttributes: [ + "foo", + ], + userData: { + 'user': "data", + }, + ), + ), + intercept: (request) { + expectPath(request.path, '/1/indexes/theIndexName/settings'); + expect(request.method, 'put'); + expectBody(request.body, + """{"advancedSyntax":true,"advancedSyntaxFeatures":["exactPhrase"],"allowCompressionOfIntegerArray":true,"allowTyposOnNumericTokens":true,"alternativesAsExact":["singleWordSynonym"],"attributeCriteriaComputedByMinProximity":true,"attributeForDistinct":"test","attributesForFaceting":["algolia"],"attributesToHighlight":["algolia"],"attributesToRetrieve":["algolia"],"attributesToSnippet":["algolia"],"attributesToTransliterate":["algolia"],"camelCaseAttributes":["algolia"],"customNormalization":{"algolia":{"aloglia":"aglolia"}},"customRanking":["algolia"],"decompoundQuery":false,"decompoundedAttributes":{"algolia":"aloglia"},"disableExactOnAttributes":["algolia"],"disablePrefixOnAttributes":["algolia"],"disableTypoToleranceOnAttributes":["algolia"],"disableTypoToleranceOnWords":["algolia"],"distinct":3,"enablePersonalization":true,"enableReRanking":false,"enableRules":true,"exactOnSingleWordQuery":"attribute","highlightPreTag":"","highlightPostTag":"","hitsPerPage":10,"ignorePlurals":false,"indexLanguages":["algolia"],"keepDiacriticsOnCharacters":"abc","maxFacetHits":20,"maxValuesPerFacet":30,"minProximity":6,"minWordSizefor1Typo":5,"minWordSizefor2Typos":11,"mode":"neuralSearch","numericAttributesForFiltering":["algolia"],"optionalWords":["myspace"],"paginationLimitedTo":0,"queryLanguages":["algolia"],"queryType":"prefixLast","ranking":["geo"],"reRankingApplyFilter":"mySearch:filters","relevancyStrictness":10,"removeStopWords":false,"removeWordsIfNoResults":"lastWords","renderingContent":{"facetOrdering":{"facets":{"order":["a","b"]},"values":{"a":{"order":["b"],"sortRemainingBy":"count"}}}},"replaceSynonymsInHighlight":true,"replicas":[""],"responseFields":["algolia"],"restrictHighlightAndSnippetArrays":true,"searchableAttributes":["foo"],"semanticSearch":{"eventSources":["foo"]},"separatorsToIndex":"bar","snippetEllipsisText":"---","sortFacetValuesBy":"date","typoTolerance":false,"unretrievableAttributes":["foo"],"userData":{"user":"data"}}"""); + }, + ), + ); + + // updateApiKey + test( + 'updateApiKey0', + () => runTest( + builder: (requester) => SearchClient( + appId: 'appId', + apiKey: 'apiKey', + options: ClientOptions(requester: requester), + ), + call: (client) => client.updateApiKey( + key: "myApiKey", + apiKey: ApiKey( + acl: [ + Acl.fromJson("search"), + Acl.fromJson("addObject"), + ], + validity: 300, + maxQueriesPerIPPerHour: 100, + maxHitsPerQuery: 20, + ), + ), + intercept: (request) { + expectPath(request.path, '/1/keys/myApiKey'); + expect(request.method, 'put'); + expectBody(request.body, + """{"acl":["search","addObject"],"validity":300,"maxQueriesPerIPPerHour":100,"maxHitsPerQuery":20}"""); + }, + ), + ); +} diff --git a/tests/output/go/tests/requests/analytics_test.go b/tests/output/go/tests/requests/analytics_test.go new file mode 100644 index 0000000000..192430db0d --- /dev/null +++ b/tests/output/go/tests/requests/analytics_test.go @@ -0,0 +1,1565 @@ +package tests + +import ( + "encoding/json" + "net/url" + "testing" + + "github.com/kinbiko/jsonassert" + "github.com/stretchr/testify/require" + + "github.com/algolia/algoliasearch-client-go/v4/algolia/analytics" +) + +func createAnalyticsClient() (*analytics.APIClient, *echoRequester) { + echo := &echoRequester{} + cfg := analytics.Configuration{ + AppID: "appID", + ApiKey: "apiKey", + Region: analytics.US, + Requester: echo, + } + client := analytics.NewClientWithConfig(cfg) + + // so that the linter doesn't complain + _ = jsonassert.New(nil) + + return client, echo +} + +func TestAnalytics_CustomDelete(t *testing.T) { + client, echo := createAnalyticsClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "allow del method for a custom path with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/minimal"}` + req := analytics.ApiCustomDeleteRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomDelete(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/minimal") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "DELETE", echo.method) + + require.Nil(t, echo.body) + }, + }, + { + name: "allow del method for a custom path with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"}}` + req := analytics.ApiCustomDeleteRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomDelete(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/all") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "DELETE", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestAnalytics_CustomGet(t *testing.T) { + client, echo := createAnalyticsClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "allow get method for a custom path with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/minimal"}` + req := analytics.ApiCustomGetRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomGet(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/minimal") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + { + name: "allow get method for a custom path with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"}}` + req := analytics.ApiCustomGetRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomGet(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/all") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestAnalytics_CustomPost(t *testing.T) { + client, echo := createAnalyticsClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "allow post method for a custom path with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/minimal"}` + req := analytics.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomPost(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/minimal") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{}`) + }, + }, + { + name: "allow post method for a custom path with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"},"body":{"body":"parameters"}}` + req := analytics.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomPost(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/all") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"body":"parameters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions can override default query parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := analytics.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []analytics.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"myQueryParameter"}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, analytics.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"myQueryParameter"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions merges query parameters with default ones", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := analytics.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []analytics.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"query2":"myQueryParameter"}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, analytics.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","query2":"myQueryParameter"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions can override default headers", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := analytics.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []analytics.Option + requestOptionHeaders := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &requestOptionHeaders)) + for k, v := range requestOptionHeaders { + opts = append(opts, analytics.HeaderParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + headers := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &headers)) + for k, v := range headers { + require.Equal(t, v, echo.header.Get(k)) + } + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions merges headers with default ones", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := analytics.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []analytics.Option + requestOptionHeaders := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &requestOptionHeaders)) + for k, v := range requestOptionHeaders { + opts = append(opts, analytics.HeaderParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + headers := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &headers)) + for k, v := range headers { + require.Equal(t, v, echo.header.Get(k)) + } + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions queryParameters accepts booleans", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := analytics.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []analytics.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"isItWorking":true}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, analytics.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","isItWorking":"true"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions queryParameters accepts integers", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := analytics.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []analytics.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"myParam":2}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, analytics.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"2"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions queryParameters accepts list of string", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := analytics.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []analytics.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"myParam":["c","d"]}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, analytics.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"c,d"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions queryParameters accepts list of booleans", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := analytics.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []analytics.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"myParam":[true,true,false]}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, analytics.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"true,true,false"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions queryParameters accepts list of integers", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := analytics.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []analytics.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"myParam":[1,2]}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, analytics.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"1,2"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestAnalytics_CustomPut(t *testing.T) { + client, echo := createAnalyticsClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "allow put method for a custom path with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/minimal"}` + req := analytics.ApiCustomPutRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomPut(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/minimal") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "PUT", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{}`) + }, + }, + { + name: "allow put method for a custom path with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"},"body":{"body":"parameters"}}` + req := analytics.ApiCustomPutRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomPut(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/all") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "PUT", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"body":"parameters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestAnalytics_GetAverageClickPosition(t *testing.T) { + client, echo := createAnalyticsClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "get getAverageClickPosition with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"index":"index"}` + req := analytics.ApiGetAverageClickPositionRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetAverageClickPosition(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/2/clicks/averageClickPosition") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"index":"index"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "get getAverageClickPosition with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}` + req := analytics.ApiGetAverageClickPositionRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetAverageClickPosition(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/2/clicks/averageClickPosition") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestAnalytics_GetClickPositions(t *testing.T) { + client, echo := createAnalyticsClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "get getClickPositions with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"index":"index"}` + req := analytics.ApiGetClickPositionsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetClickPositions(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/2/clicks/positions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"index":"index"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "get getClickPositions with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}` + req := analytics.ApiGetClickPositionsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetClickPositions(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/2/clicks/positions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestAnalytics_GetClickThroughRate(t *testing.T) { + client, echo := createAnalyticsClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "get getClickThroughRate with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"index":"index"}` + req := analytics.ApiGetClickThroughRateRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetClickThroughRate(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/2/clicks/clickThroughRate") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"index":"index"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "get getClickThroughRate with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}` + req := analytics.ApiGetClickThroughRateRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetClickThroughRate(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/2/clicks/clickThroughRate") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestAnalytics_GetConversationRate(t *testing.T) { + client, echo := createAnalyticsClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "get getConversationRate with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"index":"index"}` + req := analytics.ApiGetConversationRateRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetConversationRate(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/2/conversions/conversionRate") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"index":"index"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "get getConversationRate with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}` + req := analytics.ApiGetConversationRateRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetConversationRate(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/2/conversions/conversionRate") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestAnalytics_GetNoClickRate(t *testing.T) { + client, echo := createAnalyticsClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "get getNoClickRate with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"index":"index"}` + req := analytics.ApiGetNoClickRateRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetNoClickRate(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/2/searches/noClickRate") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"index":"index"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "get getNoClickRate with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}` + req := analytics.ApiGetNoClickRateRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetNoClickRate(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/2/searches/noClickRate") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestAnalytics_GetNoResultsRate(t *testing.T) { + client, echo := createAnalyticsClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "get getNoResultsRate with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"index":"index"}` + req := analytics.ApiGetNoResultsRateRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetNoResultsRate(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/2/searches/noResultRate") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"index":"index"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "get getNoResultsRate with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}` + req := analytics.ApiGetNoResultsRateRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetNoResultsRate(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/2/searches/noResultRate") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestAnalytics_GetSearchesCount(t *testing.T) { + client, echo := createAnalyticsClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "get getSearchesCount with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"index":"index"}` + req := analytics.ApiGetSearchesCountRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetSearchesCount(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/2/searches/count") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"index":"index"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "get getSearchesCount with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}` + req := analytics.ApiGetSearchesCountRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetSearchesCount(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/2/searches/count") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestAnalytics_GetSearchesNoClicks(t *testing.T) { + client, echo := createAnalyticsClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "get getSearchesNoClicks with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"index":"index"}` + req := analytics.ApiGetSearchesNoClicksRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetSearchesNoClicks(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/2/searches/noClicks") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"index":"index"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "get getSearchesNoClicks with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","limit":21,"offset":42,"tags":"tag"}` + req := analytics.ApiGetSearchesNoClicksRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetSearchesNoClicks(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/2/searches/noClicks") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestAnalytics_GetSearchesNoResults(t *testing.T) { + client, echo := createAnalyticsClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "get getSearchesNoResults with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"index":"index"}` + req := analytics.ApiGetSearchesNoResultsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetSearchesNoResults(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/2/searches/noResults") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"index":"index"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "get getSearchesNoResults with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","limit":21,"offset":42,"tags":"tag"}` + req := analytics.ApiGetSearchesNoResultsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetSearchesNoResults(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/2/searches/noResults") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestAnalytics_GetStatus(t *testing.T) { + client, echo := createAnalyticsClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "get getStatus with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"index":"index"}` + req := analytics.ApiGetStatusRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetStatus(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/2/status") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"index":"index"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestAnalytics_GetTopCountries(t *testing.T) { + client, echo := createAnalyticsClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "get getTopCountries with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"index":"index"}` + req := analytics.ApiGetTopCountriesRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetTopCountries(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/2/countries") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"index":"index"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "get getTopCountries with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","limit":21,"offset":42,"tags":"tag"}` + req := analytics.ApiGetTopCountriesRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetTopCountries(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/2/countries") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestAnalytics_GetTopFilterAttributes(t *testing.T) { + client, echo := createAnalyticsClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "get getTopFilterAttributes with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"index":"index"}` + req := analytics.ApiGetTopFilterAttributesRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetTopFilterAttributes(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/2/filters") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"index":"index"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "get getTopFilterAttributes with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"index":"index","search":"mySearch","startDate":"1999-09-19","endDate":"2001-01-01","limit":21,"offset":42,"tags":"tag"}` + req := analytics.ApiGetTopFilterAttributesRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetTopFilterAttributes(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/2/filters") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"index":"index","search":"mySearch","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestAnalytics_GetTopFilterForAttribute(t *testing.T) { + client, echo := createAnalyticsClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "get getTopFilterForAttribute with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"attribute":"myAttribute","index":"index"}` + req := analytics.ApiGetTopFilterForAttributeRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetTopFilterForAttribute(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/2/filters/myAttribute") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"index":"index"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "get getTopFilterForAttribute with minimal parameters and multiple attributes", + testFunc: func(t *testing.T) { + parametersStr := `{"attribute":"myAttribute1,myAttribute2","index":"index"}` + req := analytics.ApiGetTopFilterForAttributeRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetTopFilterForAttribute(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/2/filters/myAttribute1%2CmyAttribute2") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"index":"index"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "get getTopFilterForAttribute with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"attribute":"myAttribute","index":"index","search":"mySearch","startDate":"1999-09-19","endDate":"2001-01-01","limit":21,"offset":42,"tags":"tag"}` + req := analytics.ApiGetTopFilterForAttributeRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetTopFilterForAttribute(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/2/filters/myAttribute") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"index":"index","search":"mySearch","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "get getTopFilterForAttribute with all parameters and multiple attributes", + testFunc: func(t *testing.T) { + parametersStr := `{"attribute":"myAttribute1,myAttribute2","index":"index","search":"mySearch","startDate":"1999-09-19","endDate":"2001-01-01","limit":21,"offset":42,"tags":"tag"}` + req := analytics.ApiGetTopFilterForAttributeRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetTopFilterForAttribute(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/2/filters/myAttribute1%2CmyAttribute2") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"index":"index","search":"mySearch","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestAnalytics_GetTopFiltersNoResults(t *testing.T) { + client, echo := createAnalyticsClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "get getTopFiltersNoResults with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"index":"index"}` + req := analytics.ApiGetTopFiltersNoResultsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetTopFiltersNoResults(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/2/filters/noResults") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"index":"index"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "get getTopFiltersNoResults with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"index":"index","search":"mySearch","startDate":"1999-09-19","endDate":"2001-01-01","limit":21,"offset":42,"tags":"tag"}` + req := analytics.ApiGetTopFiltersNoResultsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetTopFiltersNoResults(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/2/filters/noResults") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"index":"index","search":"mySearch","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestAnalytics_GetTopHits(t *testing.T) { + client, echo := createAnalyticsClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "get getTopHits with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"index":"index"}` + req := analytics.ApiGetTopHitsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetTopHits(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/2/hits") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"index":"index"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "get getTopHits with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"index":"index","search":"mySearch","clickAnalytics":true,"startDate":"1999-09-19","endDate":"2001-01-01","limit":21,"offset":42,"tags":"tag"}` + req := analytics.ApiGetTopHitsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetTopHits(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/2/hits") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"index":"index","search":"mySearch","clickAnalytics":"true","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestAnalytics_GetTopSearches(t *testing.T) { + client, echo := createAnalyticsClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "get getTopSearches with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"index":"index"}` + req := analytics.ApiGetTopSearchesRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetTopSearches(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/2/searches") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"index":"index"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "get getTopSearches with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"index":"index","clickAnalytics":true,"startDate":"1999-09-19","endDate":"2001-01-01","orderBy":"searchCount","direction":"asc","limit":21,"offset":42,"tags":"tag"}` + req := analytics.ApiGetTopSearchesRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetTopSearches(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/2/searches") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"index":"index","clickAnalytics":"true","startDate":"1999-09-19","endDate":"2001-01-01","orderBy":"searchCount","direction":"asc","limit":"21","offset":"42","tags":"tag"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestAnalytics_GetUsersCount(t *testing.T) { + client, echo := createAnalyticsClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "get getUsersCount with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"index":"index"}` + req := analytics.ApiGetUsersCountRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetUsersCount(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/2/users/count") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"index":"index"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "get getUsersCount with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}` + req := analytics.ApiGetUsersCountRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetUsersCount(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/2/users/count") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} diff --git a/tests/output/go/tests/requests/common.go b/tests/output/go/tests/requests/common.go new file mode 100644 index 0000000000..48c4da57d8 --- /dev/null +++ b/tests/output/go/tests/requests/common.go @@ -0,0 +1,35 @@ +package tests + +import ( + "bytes" + "io" + "net/http" + "net/url" +) + +type echoRequester struct { + path string + method string + body *string + header http.Header + query url.Values +} + +func (e *echoRequester) Request(req *http.Request) (*http.Response, error) { + e.path = req.URL.Path + e.method = req.Method + e.header = req.Header + e.query = req.URL.Query() + if req.Body != nil { + body, _ := io.ReadAll(req.Body) + strBody := string(body) + e.body = &strBody + } else { + e.body = nil + } + + return &http.Response{ + StatusCode: 200, + Body: io.NopCloser(bytes.NewBufferString("")), + }, nil +} diff --git a/tests/output/go/tests/requests/ingestion_test.go b/tests/output/go/tests/requests/ingestion_test.go new file mode 100644 index 0000000000..ee9c98e1f9 --- /dev/null +++ b/tests/output/go/tests/requests/ingestion_test.go @@ -0,0 +1,1678 @@ +package tests + +import ( + "encoding/json" + "net/url" + "testing" + + "github.com/kinbiko/jsonassert" + "github.com/stretchr/testify/require" + + "github.com/algolia/algoliasearch-client-go/v4/algolia/ingestion" +) + +func createIngestionClient() (*ingestion.APIClient, *echoRequester) { + echo := &echoRequester{} + cfg := ingestion.Configuration{ + AppID: "appID", + ApiKey: "apiKey", + Region: ingestion.US, + Requester: echo, + } + client := ingestion.NewClientWithConfig(cfg) + + // so that the linter doesn't complain + _ = jsonassert.New(nil) + + return client, echo +} + +func TestIngestion_CreateAuthentication(t *testing.T) { + client, echo := createIngestionClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "createAuthenticationOAuth", + testFunc: func(t *testing.T) { + parametersStr := `{"type":"oauth","name":"authName","input":{"url":"http://test.oauth","client_id":"myID","client_secret":"mySecret"}}` + req := ingestion.ApiCreateAuthenticationRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CreateAuthentication(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/authentications") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"type":"oauth","name":"authName","input":{"url":"http://test.oauth","client_id":"myID","client_secret":"mySecret"}}`) + }, + }, + { + name: "createAuthenticationAlgolia", + testFunc: func(t *testing.T) { + parametersStr := `{"type":"algolia","name":"authName","input":{"appID":"myappID","apiKey":"randomApiKey"}}` + req := ingestion.ApiCreateAuthenticationRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CreateAuthentication(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/authentications") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"type":"algolia","name":"authName","input":{"appID":"myappID","apiKey":"randomApiKey"}}`) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestIngestion_CreateDestination(t *testing.T) { + client, echo := createIngestionClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "createDestination", + testFunc: func(t *testing.T) { + parametersStr := `{"type":"search","name":"destinationName","input":{"indexPrefix":"prefix_"},"authenticationID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}` + req := ingestion.ApiCreateDestinationRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CreateDestination(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/destinations") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"type":"search","name":"destinationName","input":{"indexPrefix":"prefix_"},"authenticationID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}`) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestIngestion_CreateSource(t *testing.T) { + client, echo := createIngestionClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "createSource", + testFunc: func(t *testing.T) { + parametersStr := `{"type":"commercetools","name":"sourceName","input":{"storeKeys":["myStore"],"locales":["de"],"url":"http://commercetools.com","projectKey":"keyID"},"authenticationID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}` + req := ingestion.ApiCreateSourceRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CreateSource(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/sources") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"type":"commercetools","name":"sourceName","input":{"storeKeys":["myStore"],"locales":["de"],"url":"http://commercetools.com","projectKey":"keyID"},"authenticationID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}`) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestIngestion_CreateTask(t *testing.T) { + client, echo := createIngestionClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "createTaskOnDemand", + testFunc: func(t *testing.T) { + parametersStr := `{"sourceID":"search","destinationID":"destinationName","trigger":{"type":"onDemand"},"action":"replace"}` + req := ingestion.ApiCreateTaskRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CreateTask(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/tasks") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"sourceID":"search","destinationID":"destinationName","trigger":{"type":"onDemand"},"action":"replace"}`) + }, + }, + { + name: "createTaskSchedule", + testFunc: func(t *testing.T) { + parametersStr := `{"sourceID":"search","destinationID":"destinationName","trigger":{"type":"schedule","cron":"* * * * *"},"action":"replace"}` + req := ingestion.ApiCreateTaskRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CreateTask(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/tasks") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"sourceID":"search","destinationID":"destinationName","trigger":{"type":"schedule","cron":"* * * * *"},"action":"replace"}`) + }, + }, + { + name: "createTaskSubscription", + testFunc: func(t *testing.T) { + parametersStr := `{"sourceID":"search","destinationID":"destinationName","trigger":{"type":"onDemand"},"action":"replace"}` + req := ingestion.ApiCreateTaskRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CreateTask(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/tasks") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"sourceID":"search","destinationID":"destinationName","trigger":{"type":"onDemand"},"action":"replace"}`) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestIngestion_CustomDelete(t *testing.T) { + client, echo := createIngestionClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "allow del method for a custom path with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/minimal"}` + req := ingestion.ApiCustomDeleteRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomDelete(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/minimal") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "DELETE", echo.method) + + require.Nil(t, echo.body) + }, + }, + { + name: "allow del method for a custom path with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"}}` + req := ingestion.ApiCustomDeleteRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomDelete(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/all") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "DELETE", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestIngestion_CustomGet(t *testing.T) { + client, echo := createIngestionClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "allow get method for a custom path with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/minimal"}` + req := ingestion.ApiCustomGetRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomGet(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/minimal") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + { + name: "allow get method for a custom path with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"}}` + req := ingestion.ApiCustomGetRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomGet(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/all") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestIngestion_CustomPost(t *testing.T) { + client, echo := createIngestionClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "allow post method for a custom path with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/minimal"}` + req := ingestion.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomPost(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/minimal") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{}`) + }, + }, + { + name: "allow post method for a custom path with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"},"body":{"body":"parameters"}}` + req := ingestion.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomPost(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/all") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"body":"parameters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions can override default query parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := ingestion.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []ingestion.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"myQueryParameter"}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, ingestion.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"myQueryParameter"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions merges query parameters with default ones", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := ingestion.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []ingestion.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"query2":"myQueryParameter"}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, ingestion.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","query2":"myQueryParameter"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions can override default headers", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := ingestion.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []ingestion.Option + requestOptionHeaders := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &requestOptionHeaders)) + for k, v := range requestOptionHeaders { + opts = append(opts, ingestion.HeaderParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + headers := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &headers)) + for k, v := range headers { + require.Equal(t, v, echo.header.Get(k)) + } + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions merges headers with default ones", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := ingestion.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []ingestion.Option + requestOptionHeaders := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &requestOptionHeaders)) + for k, v := range requestOptionHeaders { + opts = append(opts, ingestion.HeaderParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + headers := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &headers)) + for k, v := range headers { + require.Equal(t, v, echo.header.Get(k)) + } + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions queryParameters accepts booleans", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := ingestion.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []ingestion.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"isItWorking":true}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, ingestion.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","isItWorking":"true"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions queryParameters accepts integers", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := ingestion.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []ingestion.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"myParam":2}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, ingestion.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"2"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions queryParameters accepts list of string", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := ingestion.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []ingestion.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"myParam":["c","d"]}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, ingestion.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"c,d"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions queryParameters accepts list of booleans", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := ingestion.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []ingestion.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"myParam":[true,true,false]}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, ingestion.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"true,true,false"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions queryParameters accepts list of integers", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := ingestion.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []ingestion.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"myParam":[1,2]}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, ingestion.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"1,2"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestIngestion_CustomPut(t *testing.T) { + client, echo := createIngestionClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "allow put method for a custom path with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/minimal"}` + req := ingestion.ApiCustomPutRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomPut(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/minimal") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "PUT", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{}`) + }, + }, + { + name: "allow put method for a custom path with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"},"body":{"body":"parameters"}}` + req := ingestion.ApiCustomPutRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomPut(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/all") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "PUT", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"body":"parameters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestIngestion_DeleteAuthentication(t *testing.T) { + client, echo := createIngestionClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "deleteAuthentication", + testFunc: func(t *testing.T) { + parametersStr := `{"authenticationID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}` + req := ingestion.ApiDeleteAuthenticationRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.DeleteAuthentication(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/authentications/6c02aeb1-775e-418e-870b-1faccd4b2c0f") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "DELETE", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestIngestion_DeleteDestination(t *testing.T) { + client, echo := createIngestionClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "deleteDestination", + testFunc: func(t *testing.T) { + parametersStr := `{"destinationID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}` + req := ingestion.ApiDeleteDestinationRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.DeleteDestination(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/destinations/6c02aeb1-775e-418e-870b-1faccd4b2c0f") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "DELETE", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestIngestion_DeleteSource(t *testing.T) { + client, echo := createIngestionClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "deleteSource", + testFunc: func(t *testing.T) { + parametersStr := `{"sourceID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}` + req := ingestion.ApiDeleteSourceRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.DeleteSource(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "DELETE", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestIngestion_DeleteTask(t *testing.T) { + client, echo := createIngestionClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "deleteTask", + testFunc: func(t *testing.T) { + parametersStr := `{"taskID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}` + req := ingestion.ApiDeleteTaskRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.DeleteTask(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "DELETE", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestIngestion_DisableTask(t *testing.T) { + client, echo := createIngestionClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "disableTask", + testFunc: func(t *testing.T) { + parametersStr := `{"taskID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}` + req := ingestion.ApiDisableTaskRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.DisableTask(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f/disable") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "PUT", echo.method) + + require.Empty(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestIngestion_EnableTask(t *testing.T) { + client, echo := createIngestionClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "enableTask", + testFunc: func(t *testing.T) { + parametersStr := `{"taskID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}` + req := ingestion.ApiEnableTaskRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.EnableTask(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f/enable") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "PUT", echo.method) + + require.Empty(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestIngestion_GetAuthentication(t *testing.T) { + client, echo := createIngestionClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "getAuthentication", + testFunc: func(t *testing.T) { + parametersStr := `{"authenticationID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}` + req := ingestion.ApiGetAuthenticationRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetAuthentication(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/authentications/6c02aeb1-775e-418e-870b-1faccd4b2c0f") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestIngestion_GetAuthentications(t *testing.T) { + client, echo := createIngestionClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "getAuthentications", + testFunc: func(t *testing.T) { + parametersStr := `{}` + req := ingestion.ApiGetAuthenticationsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetAuthentications(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/authentications") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestIngestion_GetDestination(t *testing.T) { + client, echo := createIngestionClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "getDestination", + testFunc: func(t *testing.T) { + parametersStr := `{"destinationID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}` + req := ingestion.ApiGetDestinationRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetDestination(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/destinations/6c02aeb1-775e-418e-870b-1faccd4b2c0f") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestIngestion_GetDestinations(t *testing.T) { + client, echo := createIngestionClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "getDestinations", + testFunc: func(t *testing.T) { + parametersStr := `{}` + req := ingestion.ApiGetDestinationsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetDestinations(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/destinations") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestIngestion_GetDockerSourceStreams(t *testing.T) { + client, echo := createIngestionClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "getDockerSourceStreams", + testFunc: func(t *testing.T) { + parametersStr := `{"sourceID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}` + req := ingestion.ApiGetDockerSourceStreamsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetDockerSourceStreams(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f/discover") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestIngestion_GetEvent(t *testing.T) { + client, echo := createIngestionClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "getEvent", + testFunc: func(t *testing.T) { + parametersStr := `{"runID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f","eventID":"6c02aeb1-775e-418e-870b-1faccd4b2c0c"}` + req := ingestion.ApiGetEventRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetEvent(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/runs/6c02aeb1-775e-418e-870b-1faccd4b2c0f/events/6c02aeb1-775e-418e-870b-1faccd4b2c0c") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestIngestion_GetEvents(t *testing.T) { + client, echo := createIngestionClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "getEvents", + testFunc: func(t *testing.T) { + parametersStr := `{"runID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}` + req := ingestion.ApiGetEventsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetEvents(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/runs/6c02aeb1-775e-418e-870b-1faccd4b2c0f/events") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestIngestion_GetRun(t *testing.T) { + client, echo := createIngestionClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "getRun", + testFunc: func(t *testing.T) { + parametersStr := `{"runID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}` + req := ingestion.ApiGetRunRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetRun(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/runs/6c02aeb1-775e-418e-870b-1faccd4b2c0f") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestIngestion_GetRuns(t *testing.T) { + client, echo := createIngestionClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "getRuns", + testFunc: func(t *testing.T) { + parametersStr := `{}` + req := ingestion.ApiGetRunsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetRuns(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/runs") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestIngestion_GetSource(t *testing.T) { + client, echo := createIngestionClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "getSource", + testFunc: func(t *testing.T) { + parametersStr := `{"sourceID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}` + req := ingestion.ApiGetSourceRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetSource(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestIngestion_GetSources(t *testing.T) { + client, echo := createIngestionClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "getSources", + testFunc: func(t *testing.T) { + parametersStr := `{}` + req := ingestion.ApiGetSourcesRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetSources(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/sources") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestIngestion_GetTask(t *testing.T) { + client, echo := createIngestionClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "getTask", + testFunc: func(t *testing.T) { + parametersStr := `{"taskID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}` + req := ingestion.ApiGetTaskRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetTask(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestIngestion_GetTasks(t *testing.T) { + client, echo := createIngestionClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "getTasks", + testFunc: func(t *testing.T) { + parametersStr := `{}` + req := ingestion.ApiGetTasksRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetTasks(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/tasks") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestIngestion_RunTask(t *testing.T) { + client, echo := createIngestionClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "runTask", + testFunc: func(t *testing.T) { + parametersStr := `{"taskID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}` + req := ingestion.ApiRunTaskRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.RunTask(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f/run") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + require.Empty(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestIngestion_SearchAuthentications(t *testing.T) { + client, echo := createIngestionClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "searchAuthentications", + testFunc: func(t *testing.T) { + parametersStr := `{"authenticationIDs":["6c02aeb1-775e-418e-870b-1faccd4b2c0f","947ac9c4-7e58-4c87-b1e7-14a68e99699a"]}` + req := ingestion.ApiSearchAuthenticationsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.SearchAuthentications(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/authentications/search") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"authenticationIDs":["6c02aeb1-775e-418e-870b-1faccd4b2c0f","947ac9c4-7e58-4c87-b1e7-14a68e99699a"]}`) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestIngestion_SearchDestinations(t *testing.T) { + client, echo := createIngestionClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "searchDestinations", + testFunc: func(t *testing.T) { + parametersStr := `{"destinationIDs":["6c02aeb1-775e-418e-870b-1faccd4b2c0f","947ac9c4-7e58-4c87-b1e7-14a68e99699a"]}` + req := ingestion.ApiSearchDestinationsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.SearchDestinations(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/destinations/search") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"destinationIDs":["6c02aeb1-775e-418e-870b-1faccd4b2c0f","947ac9c4-7e58-4c87-b1e7-14a68e99699a"]}`) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestIngestion_SearchSources(t *testing.T) { + client, echo := createIngestionClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "searchSources", + testFunc: func(t *testing.T) { + parametersStr := `{"sourceIDs":["6c02aeb1-775e-418e-870b-1faccd4b2c0f","947ac9c4-7e58-4c87-b1e7-14a68e99699a"]}` + req := ingestion.ApiSearchSourcesRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.SearchSources(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/sources/search") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"sourceIDs":["6c02aeb1-775e-418e-870b-1faccd4b2c0f","947ac9c4-7e58-4c87-b1e7-14a68e99699a"]}`) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestIngestion_SearchTasks(t *testing.T) { + client, echo := createIngestionClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "searchTasks", + testFunc: func(t *testing.T) { + parametersStr := `{"taskIDs":["6c02aeb1-775e-418e-870b-1faccd4b2c0f","947ac9c4-7e58-4c87-b1e7-14a68e99699a"]}` + req := ingestion.ApiSearchTasksRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.SearchTasks(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/tasks/search") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"taskIDs":["6c02aeb1-775e-418e-870b-1faccd4b2c0f","947ac9c4-7e58-4c87-b1e7-14a68e99699a"]}`) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestIngestion_TriggerDockerSourceDiscover(t *testing.T) { + client, echo := createIngestionClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "triggerDockerSourceDiscover", + testFunc: func(t *testing.T) { + parametersStr := `{"sourceID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}` + req := ingestion.ApiTriggerDockerSourceDiscoverRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.TriggerDockerSourceDiscover(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f/discover") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + require.Empty(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestIngestion_UpdateAuthentication(t *testing.T) { + client, echo := createIngestionClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "updateAuthentication", + testFunc: func(t *testing.T) { + parametersStr := `{"authenticationID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f","authenticationUpdate":{"name":"newName"}}` + req := ingestion.ApiUpdateAuthenticationRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.UpdateAuthentication(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/authentications/6c02aeb1-775e-418e-870b-1faccd4b2c0f") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "PATCH", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"name":"newName"}`) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestIngestion_UpdateDestination(t *testing.T) { + client, echo := createIngestionClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "updateDestination", + testFunc: func(t *testing.T) { + parametersStr := `{"destinationID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f","destinationUpdate":{"name":"newName"}}` + req := ingestion.ApiUpdateDestinationRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.UpdateDestination(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/destinations/6c02aeb1-775e-418e-870b-1faccd4b2c0f") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "PATCH", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"name":"newName"}`) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestIngestion_UpdateSource(t *testing.T) { + client, echo := createIngestionClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "updateSource", + testFunc: func(t *testing.T) { + parametersStr := `{"sourceID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f","sourceUpdate":{"name":"newName"}}` + req := ingestion.ApiUpdateSourceRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.UpdateSource(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "PATCH", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"name":"newName"}`) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestIngestion_UpdateTask(t *testing.T) { + client, echo := createIngestionClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "updateTask", + testFunc: func(t *testing.T) { + parametersStr := `{"taskID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f","taskUpdate":{"enabled":false}}` + req := ingestion.ApiUpdateTaskRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.UpdateTask(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "PATCH", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"enabled":false}`) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} diff --git a/tests/output/go/tests/requests/insights_test.go b/tests/output/go/tests/requests/insights_test.go new file mode 100644 index 0000000000..0fec28a03c --- /dev/null +++ b/tests/output/go/tests/requests/insights_test.go @@ -0,0 +1,629 @@ +package tests + +import ( + "encoding/json" + "net/url" + "testing" + + "github.com/kinbiko/jsonassert" + "github.com/stretchr/testify/require" + + "github.com/algolia/algoliasearch-client-go/v4/algolia/insights" +) + +func createInsightsClient() (*insights.APIClient, *echoRequester) { + echo := &echoRequester{} + cfg := insights.Configuration{ + AppID: "appID", + ApiKey: "apiKey", + Region: insights.US, + Requester: echo, + } + client := insights.NewClientWithConfig(cfg) + + // so that the linter doesn't complain + _ = jsonassert.New(nil) + + return client, echo +} + +func TestInsights_CustomDelete(t *testing.T) { + client, echo := createInsightsClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "allow del method for a custom path with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/minimal"}` + req := insights.ApiCustomDeleteRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomDelete(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/minimal") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "DELETE", echo.method) + + require.Nil(t, echo.body) + }, + }, + { + name: "allow del method for a custom path with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"}}` + req := insights.ApiCustomDeleteRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomDelete(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/all") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "DELETE", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestInsights_CustomGet(t *testing.T) { + client, echo := createInsightsClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "allow get method for a custom path with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/minimal"}` + req := insights.ApiCustomGetRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomGet(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/minimal") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + { + name: "allow get method for a custom path with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"}}` + req := insights.ApiCustomGetRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomGet(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/all") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestInsights_CustomPost(t *testing.T) { + client, echo := createInsightsClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "allow post method for a custom path with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/minimal"}` + req := insights.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomPost(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/minimal") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{}`) + }, + }, + { + name: "allow post method for a custom path with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"},"body":{"body":"parameters"}}` + req := insights.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomPost(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/all") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"body":"parameters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions can override default query parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := insights.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []insights.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"myQueryParameter"}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, insights.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"myQueryParameter"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions merges query parameters with default ones", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := insights.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []insights.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"query2":"myQueryParameter"}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, insights.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","query2":"myQueryParameter"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions can override default headers", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := insights.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []insights.Option + requestOptionHeaders := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &requestOptionHeaders)) + for k, v := range requestOptionHeaders { + opts = append(opts, insights.HeaderParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + headers := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &headers)) + for k, v := range headers { + require.Equal(t, v, echo.header.Get(k)) + } + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions merges headers with default ones", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := insights.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []insights.Option + requestOptionHeaders := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &requestOptionHeaders)) + for k, v := range requestOptionHeaders { + opts = append(opts, insights.HeaderParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + headers := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &headers)) + for k, v := range headers { + require.Equal(t, v, echo.header.Get(k)) + } + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions queryParameters accepts booleans", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := insights.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []insights.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"isItWorking":true}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, insights.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","isItWorking":"true"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions queryParameters accepts integers", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := insights.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []insights.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"myParam":2}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, insights.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"2"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions queryParameters accepts list of string", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := insights.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []insights.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"myParam":["c","d"]}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, insights.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"c,d"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions queryParameters accepts list of booleans", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := insights.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []insights.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"myParam":[true,true,false]}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, insights.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"true,true,false"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions queryParameters accepts list of integers", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := insights.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []insights.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"myParam":[1,2]}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, insights.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"1,2"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestInsights_CustomPut(t *testing.T) { + client, echo := createInsightsClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "allow put method for a custom path with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/minimal"}` + req := insights.ApiCustomPutRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomPut(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/minimal") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "PUT", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{}`) + }, + }, + { + name: "allow put method for a custom path with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"},"body":{"body":"parameters"}}` + req := insights.ApiCustomPutRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomPut(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/all") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "PUT", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"body":"parameters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestInsights_PushEvents(t *testing.T) { + client, echo := createInsightsClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "pushEvents0", + testFunc: func(t *testing.T) { + parametersStr := `{"events":[{"eventType":"click","eventName":"Product Clicked","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"queryID":"43b15df305339e827f0ac0bdc5ebcaa7","positions":[7,6]}]}` + req := insights.ApiPushEventsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.PushEvents(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/events") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"events":[{"eventType":"click","eventName":"Product Clicked","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"queryID":"43b15df305339e827f0ac0bdc5ebcaa7","positions":[7,6]}]}`) + }, + }, + { + name: "Many events type", + testFunc: func(t *testing.T) { + parametersStr := `{"events":[{"eventType":"conversion","eventName":"Product Purchased","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"queryID":"43b15df305339e827f0ac0bdc5ebcaa7"},{"eventType":"view","eventName":"Product Detail Page Viewed","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"]}]}` + req := insights.ApiPushEventsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.PushEvents(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/events") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"events":[{"eventType":"conversion","eventName":"Product Purchased","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"queryID":"43b15df305339e827f0ac0bdc5ebcaa7"},{"eventType":"view","eventName":"Product Detail Page Viewed","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"]}]}`) + }, + }, + { + name: "ConvertedObjectIDsAfterSearch", + testFunc: func(t *testing.T) { + parametersStr := `{"events":[{"eventType":"conversion","eventName":"Product Purchased","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"queryID":"43b15df305339e827f0ac0bdc5ebcaa7"}]}` + req := insights.ApiPushEventsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.PushEvents(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/events") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"events":[{"eventType":"conversion","eventName":"Product Purchased","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"queryID":"43b15df305339e827f0ac0bdc5ebcaa7"}]}`) + }, + }, + { + name: "ViewedObjectIDs", + testFunc: func(t *testing.T) { + parametersStr := `{"events":[{"eventType":"view","eventName":"Product Detail Page Viewed","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"]}]}` + req := insights.ApiPushEventsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.PushEvents(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/events") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"events":[{"eventType":"view","eventName":"Product Detail Page Viewed","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"]}]}`) + }, + }, + { + name: "AddedToCartObjectIDs", + testFunc: func(t *testing.T) { + parametersStr := `{"events":[{"eventType":"conversion","eventSubtype":"addToCart","eventName":"Product Added To Cart","index":"products","queryID":"43b15df305339e827f0ac0bdc5ebcaa7","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"objectData":[{"price":19.99,"quantity":10,"discount":2.5},{"price":"8$","quantity":7,"discount":"30%"}],"currency":"USD"}]}` + req := insights.ApiPushEventsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.PushEvents(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/events") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"events":[{"eventType":"conversion","eventSubtype":"addToCart","eventName":"Product Added To Cart","index":"products","queryID":"43b15df305339e827f0ac0bdc5ebcaa7","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"objectData":[{"price":19.99,"quantity":10,"discount":2.5},{"price":"8$","quantity":7,"discount":"30%%"}],"currency":"USD"}]}`) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} diff --git a/tests/output/go/tests/requests/monitoring_test.go b/tests/output/go/tests/requests/monitoring_test.go new file mode 100644 index 0000000000..4c32510c2d --- /dev/null +++ b/tests/output/go/tests/requests/monitoring_test.go @@ -0,0 +1,810 @@ +package tests + +import ( + "encoding/json" + "net/url" + "testing" + + "github.com/kinbiko/jsonassert" + "github.com/stretchr/testify/require" + + "github.com/algolia/algoliasearch-client-go/v4/algolia/monitoring" +) + +func createMonitoringClient() (*monitoring.APIClient, *echoRequester) { + echo := &echoRequester{} + cfg := monitoring.Configuration{ + AppID: "appID", + ApiKey: "apiKey", + Requester: echo, + } + client := monitoring.NewClientWithConfig(cfg) + + // so that the linter doesn't complain + _ = jsonassert.New(nil) + + return client, echo +} + +func TestMonitoring_CustomDelete(t *testing.T) { + client, echo := createMonitoringClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "allow del method for a custom path with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/minimal"}` + req := monitoring.ApiCustomDeleteRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomDelete(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/minimal") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "DELETE", echo.method) + + require.Nil(t, echo.body) + }, + }, + { + name: "allow del method for a custom path with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"}}` + req := monitoring.ApiCustomDeleteRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomDelete(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/all") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "DELETE", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestMonitoring_CustomGet(t *testing.T) { + client, echo := createMonitoringClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "allow get method for a custom path with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/minimal"}` + req := monitoring.ApiCustomGetRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomGet(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/minimal") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + { + name: "allow get method for a custom path with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"}}` + req := monitoring.ApiCustomGetRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomGet(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/all") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestMonitoring_CustomPost(t *testing.T) { + client, echo := createMonitoringClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "allow post method for a custom path with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/minimal"}` + req := monitoring.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomPost(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/minimal") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{}`) + }, + }, + { + name: "allow post method for a custom path with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"},"body":{"body":"parameters"}}` + req := monitoring.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomPost(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/all") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"body":"parameters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions can override default query parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := monitoring.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []monitoring.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"myQueryParameter"}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, monitoring.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"myQueryParameter"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions merges query parameters with default ones", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := monitoring.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []monitoring.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"query2":"myQueryParameter"}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, monitoring.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","query2":"myQueryParameter"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions can override default headers", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := monitoring.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []monitoring.Option + requestOptionHeaders := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &requestOptionHeaders)) + for k, v := range requestOptionHeaders { + opts = append(opts, monitoring.HeaderParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + headers := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &headers)) + for k, v := range headers { + require.Equal(t, v, echo.header.Get(k)) + } + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions merges headers with default ones", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := monitoring.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []monitoring.Option + requestOptionHeaders := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &requestOptionHeaders)) + for k, v := range requestOptionHeaders { + opts = append(opts, monitoring.HeaderParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + headers := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &headers)) + for k, v := range headers { + require.Equal(t, v, echo.header.Get(k)) + } + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions queryParameters accepts booleans", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := monitoring.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []monitoring.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"isItWorking":true}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, monitoring.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","isItWorking":"true"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions queryParameters accepts integers", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := monitoring.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []monitoring.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"myParam":2}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, monitoring.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"2"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions queryParameters accepts list of string", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := monitoring.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []monitoring.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"myParam":["c","d"]}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, monitoring.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"c,d"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions queryParameters accepts list of booleans", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := monitoring.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []monitoring.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"myParam":[true,true,false]}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, monitoring.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"true,true,false"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions queryParameters accepts list of integers", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := monitoring.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []monitoring.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"myParam":[1,2]}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, monitoring.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"1,2"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestMonitoring_CustomPut(t *testing.T) { + client, echo := createMonitoringClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "allow put method for a custom path with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/minimal"}` + req := monitoring.ApiCustomPutRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomPut(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/minimal") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "PUT", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{}`) + }, + }, + { + name: "allow put method for a custom path with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"},"body":{"body":"parameters"}}` + req := monitoring.ApiCustomPutRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomPut(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/all") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "PUT", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"body":"parameters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestMonitoring_GetClusterIncidents(t *testing.T) { + client, echo := createMonitoringClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "getClusterIncidents", + testFunc: func(t *testing.T) { + parametersStr := `{"clusters":"c1-de"}` + req := monitoring.ApiGetClusterIncidentsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetClusterIncidents(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/incidents/c1-de") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestMonitoring_GetClusterStatus(t *testing.T) { + client, echo := createMonitoringClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "getClusterStatus", + testFunc: func(t *testing.T) { + parametersStr := `{"clusters":"c1-de"}` + req := monitoring.ApiGetClusterStatusRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetClusterStatus(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/status/c1-de") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestMonitoring_GetIncidents(t *testing.T) { + client, echo := createMonitoringClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "getIncidents", + testFunc: func(t *testing.T) { + _, err := client.GetIncidents() + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/incidents") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestMonitoring_GetIndexingTime(t *testing.T) { + client, echo := createMonitoringClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "getIndexingTime", + testFunc: func(t *testing.T) { + parametersStr := `{"clusters":"c1-de"}` + req := monitoring.ApiGetIndexingTimeRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetIndexingTime(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexing/c1-de") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestMonitoring_GetInventory(t *testing.T) { + client, echo := createMonitoringClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "getInventory", + testFunc: func(t *testing.T) { + _, err := client.GetInventory() + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/inventory/servers") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestMonitoring_GetLatency(t *testing.T) { + client, echo := createMonitoringClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "getLatency", + testFunc: func(t *testing.T) { + parametersStr := `{"clusters":"c1-de"}` + req := monitoring.ApiGetLatencyRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetLatency(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/latency/c1-de") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestMonitoring_GetMetrics(t *testing.T) { + client, echo := createMonitoringClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "getMetrics", + testFunc: func(t *testing.T) { + parametersStr := `{"metric":"avg_build_time","period":"minute"}` + req := monitoring.ApiGetMetricsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetMetrics(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/infrastructure/avg_build_time/period/minute") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestMonitoring_GetReachability(t *testing.T) { + client, echo := createMonitoringClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "getReachability", + testFunc: func(t *testing.T) { + parametersStr := `{"clusters":"c1-de"}` + req := monitoring.ApiGetReachabilityRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetReachability(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/reachability/c1-de/probes") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestMonitoring_GetStatus(t *testing.T) { + client, echo := createMonitoringClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "getStatus", + testFunc: func(t *testing.T) { + _, err := client.GetStatus() + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/status") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} diff --git a/tests/output/go/tests/requests/personalization_test.go b/tests/output/go/tests/requests/personalization_test.go new file mode 100644 index 0000000000..e916dee264 --- /dev/null +++ b/tests/output/go/tests/requests/personalization_test.go @@ -0,0 +1,653 @@ +package tests + +import ( + "encoding/json" + "net/url" + "testing" + + "github.com/kinbiko/jsonassert" + "github.com/stretchr/testify/require" + + "github.com/algolia/algoliasearch-client-go/v4/algolia/personalization" +) + +func createPersonalizationClient() (*personalization.APIClient, *echoRequester) { + echo := &echoRequester{} + cfg := personalization.Configuration{ + AppID: "appID", + ApiKey: "apiKey", + Region: personalization.US, + Requester: echo, + } + client := personalization.NewClientWithConfig(cfg) + + // so that the linter doesn't complain + _ = jsonassert.New(nil) + + return client, echo +} + +func TestPersonalization_CustomDelete(t *testing.T) { + client, echo := createPersonalizationClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "allow del method for a custom path with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/minimal"}` + req := personalization.ApiCustomDeleteRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomDelete(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/minimal") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "DELETE", echo.method) + + require.Nil(t, echo.body) + }, + }, + { + name: "allow del method for a custom path with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"}}` + req := personalization.ApiCustomDeleteRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomDelete(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/all") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "DELETE", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestPersonalization_CustomGet(t *testing.T) { + client, echo := createPersonalizationClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "allow get method for a custom path with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/minimal"}` + req := personalization.ApiCustomGetRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomGet(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/minimal") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + { + name: "allow get method for a custom path with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"}}` + req := personalization.ApiCustomGetRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomGet(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/all") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestPersonalization_CustomPost(t *testing.T) { + client, echo := createPersonalizationClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "allow post method for a custom path with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/minimal"}` + req := personalization.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomPost(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/minimal") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{}`) + }, + }, + { + name: "allow post method for a custom path with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"},"body":{"body":"parameters"}}` + req := personalization.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomPost(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/all") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"body":"parameters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions can override default query parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := personalization.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []personalization.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"myQueryParameter"}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, personalization.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"myQueryParameter"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions merges query parameters with default ones", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := personalization.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []personalization.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"query2":"myQueryParameter"}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, personalization.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","query2":"myQueryParameter"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions can override default headers", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := personalization.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []personalization.Option + requestOptionHeaders := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &requestOptionHeaders)) + for k, v := range requestOptionHeaders { + opts = append(opts, personalization.HeaderParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + headers := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &headers)) + for k, v := range headers { + require.Equal(t, v, echo.header.Get(k)) + } + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions merges headers with default ones", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := personalization.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []personalization.Option + requestOptionHeaders := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &requestOptionHeaders)) + for k, v := range requestOptionHeaders { + opts = append(opts, personalization.HeaderParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + headers := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &headers)) + for k, v := range headers { + require.Equal(t, v, echo.header.Get(k)) + } + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions queryParameters accepts booleans", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := personalization.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []personalization.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"isItWorking":true}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, personalization.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","isItWorking":"true"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions queryParameters accepts integers", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := personalization.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []personalization.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"myParam":2}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, personalization.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"2"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions queryParameters accepts list of string", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := personalization.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []personalization.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"myParam":["c","d"]}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, personalization.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"c,d"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions queryParameters accepts list of booleans", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := personalization.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []personalization.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"myParam":[true,true,false]}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, personalization.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"true,true,false"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions queryParameters accepts list of integers", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := personalization.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []personalization.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"myParam":[1,2]}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, personalization.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"1,2"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestPersonalization_CustomPut(t *testing.T) { + client, echo := createPersonalizationClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "allow put method for a custom path with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/minimal"}` + req := personalization.ApiCustomPutRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomPut(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/minimal") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "PUT", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{}`) + }, + }, + { + name: "allow put method for a custom path with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"},"body":{"body":"parameters"}}` + req := personalization.ApiCustomPutRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomPut(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/all") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "PUT", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"body":"parameters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestPersonalization_DeleteUserProfile(t *testing.T) { + client, echo := createPersonalizationClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "delete deleteUserProfile", + testFunc: func(t *testing.T) { + parametersStr := `{"userToken":"UserToken"}` + req := personalization.ApiDeleteUserProfileRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.DeleteUserProfile(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/profiles/UserToken") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "DELETE", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestPersonalization_GetPersonalizationStrategy(t *testing.T) { + client, echo := createPersonalizationClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "get getPersonalizationStrategy", + testFunc: func(t *testing.T) { + _, err := client.GetPersonalizationStrategy() + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/strategies/personalization") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestPersonalization_GetUserTokenProfile(t *testing.T) { + client, echo := createPersonalizationClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "get getUserTokenProfile", + testFunc: func(t *testing.T) { + parametersStr := `{"userToken":"UserToken"}` + req := personalization.ApiGetUserTokenProfileRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetUserTokenProfile(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/profiles/personalization/UserToken") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestPersonalization_SetPersonalizationStrategy(t *testing.T) { + client, echo := createPersonalizationClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "set setPersonalizationStrategy", + testFunc: func(t *testing.T) { + parametersStr := `{"eventScoring":[{"score":42,"eventName":"Algolia","eventType":"Event"}],"facetScoring":[{"score":42,"facetName":"Event"}],"personalizationImpact":42}` + req := personalization.ApiSetPersonalizationStrategyRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.SetPersonalizationStrategy(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/strategies/personalization") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"eventScoring":[{"score":42,"eventName":"Algolia","eventType":"Event"}],"facetScoring":[{"score":42,"facetName":"Event"}],"personalizationImpact":42}`) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} diff --git a/tests/output/go/tests/requests/query-suggestions_test.go b/tests/output/go/tests/requests/query-suggestions_test.go new file mode 100644 index 0000000000..0083d9f9cc --- /dev/null +++ b/tests/output/go/tests/requests/query-suggestions_test.go @@ -0,0 +1,753 @@ +package tests + +import ( + "encoding/json" + "net/url" + "testing" + + "github.com/kinbiko/jsonassert" + "github.com/stretchr/testify/require" + + "github.com/algolia/algoliasearch-client-go/v4/algolia/query-suggestions" +) + +func createSuggestionsClient() (*suggestions.APIClient, *echoRequester) { + echo := &echoRequester{} + cfg := suggestions.Configuration{ + AppID: "appID", + ApiKey: "apiKey", + Region: suggestions.US, + Requester: echo, + } + client := suggestions.NewClientWithConfig(cfg) + + // so that the linter doesn't complain + _ = jsonassert.New(nil) + + return client, echo +} + +func TestSuggestions_CreateConfig(t *testing.T) { + client, echo := createSuggestionsClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "createConfig0", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"theIndexName","sourceIndices":[{"indexName":"testIndex","facets":[{"attribute":"test"}],"generate":[["facetA","facetB"],["facetC"]]}],"languages":["french"],"exclude":["test"]}` + req := suggestions.ApiCreateConfigRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CreateConfig(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/configs") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"indexName":"theIndexName","sourceIndices":[{"indexName":"testIndex","facets":[{"attribute":"test"}],"generate":[["facetA","facetB"],["facetC"]]}],"languages":["french"],"exclude":["test"]}`) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSuggestions_CustomDelete(t *testing.T) { + client, echo := createSuggestionsClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "allow del method for a custom path with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/minimal"}` + req := suggestions.ApiCustomDeleteRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomDelete(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/minimal") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "DELETE", echo.method) + + require.Nil(t, echo.body) + }, + }, + { + name: "allow del method for a custom path with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"}}` + req := suggestions.ApiCustomDeleteRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomDelete(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/all") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "DELETE", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSuggestions_CustomGet(t *testing.T) { + client, echo := createSuggestionsClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "allow get method for a custom path with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/minimal"}` + req := suggestions.ApiCustomGetRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomGet(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/minimal") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + { + name: "allow get method for a custom path with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"}}` + req := suggestions.ApiCustomGetRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomGet(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/all") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSuggestions_CustomPost(t *testing.T) { + client, echo := createSuggestionsClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "allow post method for a custom path with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/minimal"}` + req := suggestions.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomPost(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/minimal") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{}`) + }, + }, + { + name: "allow post method for a custom path with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"},"body":{"body":"parameters"}}` + req := suggestions.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomPost(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/all") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"body":"parameters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions can override default query parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := suggestions.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []suggestions.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"myQueryParameter"}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, suggestions.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"myQueryParameter"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions merges query parameters with default ones", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := suggestions.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []suggestions.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"query2":"myQueryParameter"}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, suggestions.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","query2":"myQueryParameter"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions can override default headers", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := suggestions.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []suggestions.Option + requestOptionHeaders := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &requestOptionHeaders)) + for k, v := range requestOptionHeaders { + opts = append(opts, suggestions.HeaderParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + headers := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &headers)) + for k, v := range headers { + require.Equal(t, v, echo.header.Get(k)) + } + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions merges headers with default ones", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := suggestions.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []suggestions.Option + requestOptionHeaders := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &requestOptionHeaders)) + for k, v := range requestOptionHeaders { + opts = append(opts, suggestions.HeaderParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + headers := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &headers)) + for k, v := range headers { + require.Equal(t, v, echo.header.Get(k)) + } + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions queryParameters accepts booleans", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := suggestions.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []suggestions.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"isItWorking":true}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, suggestions.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","isItWorking":"true"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions queryParameters accepts integers", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := suggestions.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []suggestions.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"myParam":2}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, suggestions.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"2"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions queryParameters accepts list of string", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := suggestions.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []suggestions.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"myParam":["c","d"]}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, suggestions.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"c,d"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions queryParameters accepts list of booleans", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := suggestions.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []suggestions.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"myParam":[true,true,false]}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, suggestions.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"true,true,false"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions queryParameters accepts list of integers", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := suggestions.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []suggestions.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"myParam":[1,2]}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, suggestions.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"1,2"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSuggestions_CustomPut(t *testing.T) { + client, echo := createSuggestionsClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "allow put method for a custom path with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/minimal"}` + req := suggestions.ApiCustomPutRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomPut(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/minimal") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "PUT", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{}`) + }, + }, + { + name: "allow put method for a custom path with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"},"body":{"body":"parameters"}}` + req := suggestions.ApiCustomPutRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomPut(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/all") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "PUT", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"body":"parameters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSuggestions_DeleteConfig(t *testing.T) { + client, echo := createSuggestionsClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "deleteConfig0", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"theIndexName"}` + req := suggestions.ApiDeleteConfigRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.DeleteConfig(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/configs/theIndexName") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "DELETE", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSuggestions_GetAllConfigs(t *testing.T) { + client, echo := createSuggestionsClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "getAllConfigs0", + testFunc: func(t *testing.T) { + _, err := client.GetAllConfigs() + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/configs") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSuggestions_GetConfig(t *testing.T) { + client, echo := createSuggestionsClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "getConfig0", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"theIndexName"}` + req := suggestions.ApiGetConfigRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetConfig(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/configs/theIndexName") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSuggestions_GetConfigStatus(t *testing.T) { + client, echo := createSuggestionsClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "getConfigStatus0", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"theIndexName"}` + req := suggestions.ApiGetConfigStatusRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetConfigStatus(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/configs/theIndexName/status") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSuggestions_GetLogFile(t *testing.T) { + client, echo := createSuggestionsClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "getLogFile0", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"theIndexName"}` + req := suggestions.ApiGetLogFileRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetLogFile(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/logs/theIndexName") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSuggestions_UpdateConfig(t *testing.T) { + client, echo := createSuggestionsClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "updateConfig0", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"theIndexName","querySuggestionsConfiguration":{"sourceIndices":[{"indexName":"testIndex","facets":[{"attribute":"test"}],"generate":[["facetA","facetB"],["facetC"]]}],"languages":["french"],"exclude":["test"]}}` + req := suggestions.ApiUpdateConfigRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.UpdateConfig(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/configs/theIndexName") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "PUT", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"sourceIndices":[{"indexName":"testIndex","facets":[{"attribute":"test"}],"generate":[["facetA","facetB"],["facetC"]]}],"languages":["french"],"exclude":["test"]}`) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} diff --git a/tests/output/go/tests/requests/recommend_test.go b/tests/output/go/tests/requests/recommend_test.go new file mode 100644 index 0000000000..69a15d8108 --- /dev/null +++ b/tests/output/go/tests/requests/recommend_test.go @@ -0,0 +1,797 @@ +package tests + +import ( + "encoding/json" + "net/url" + "testing" + + "github.com/kinbiko/jsonassert" + "github.com/stretchr/testify/require" + + "github.com/algolia/algoliasearch-client-go/v4/algolia/recommend" +) + +func createRecommendClient() (*recommend.APIClient, *echoRequester) { + echo := &echoRequester{} + cfg := recommend.Configuration{ + AppID: "appID", + ApiKey: "apiKey", + Requester: echo, + } + client := recommend.NewClientWithConfig(cfg) + + // so that the linter doesn't complain + _ = jsonassert.New(nil) + + return client, echo +} + +func TestRecommend_CustomDelete(t *testing.T) { + client, echo := createRecommendClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "allow del method for a custom path with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/minimal"}` + req := recommend.ApiCustomDeleteRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomDelete(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/minimal") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "DELETE", echo.method) + + require.Nil(t, echo.body) + }, + }, + { + name: "allow del method for a custom path with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"}}` + req := recommend.ApiCustomDeleteRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomDelete(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/all") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "DELETE", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestRecommend_CustomGet(t *testing.T) { + client, echo := createRecommendClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "allow get method for a custom path with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/minimal"}` + req := recommend.ApiCustomGetRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomGet(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/minimal") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + { + name: "allow get method for a custom path with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"}}` + req := recommend.ApiCustomGetRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomGet(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/all") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestRecommend_CustomPost(t *testing.T) { + client, echo := createRecommendClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "allow post method for a custom path with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/minimal"}` + req := recommend.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomPost(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/minimal") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{}`) + }, + }, + { + name: "allow post method for a custom path with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"},"body":{"body":"parameters"}}` + req := recommend.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomPost(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/all") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"body":"parameters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions can override default query parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := recommend.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []recommend.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"myQueryParameter"}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, recommend.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"myQueryParameter"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions merges query parameters with default ones", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := recommend.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []recommend.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"query2":"myQueryParameter"}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, recommend.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","query2":"myQueryParameter"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions can override default headers", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := recommend.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []recommend.Option + requestOptionHeaders := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &requestOptionHeaders)) + for k, v := range requestOptionHeaders { + opts = append(opts, recommend.HeaderParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + headers := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &headers)) + for k, v := range headers { + require.Equal(t, v, echo.header.Get(k)) + } + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions merges headers with default ones", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := recommend.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []recommend.Option + requestOptionHeaders := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &requestOptionHeaders)) + for k, v := range requestOptionHeaders { + opts = append(opts, recommend.HeaderParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + headers := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &headers)) + for k, v := range headers { + require.Equal(t, v, echo.header.Get(k)) + } + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions queryParameters accepts booleans", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := recommend.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []recommend.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"isItWorking":true}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, recommend.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","isItWorking":"true"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions queryParameters accepts integers", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := recommend.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []recommend.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"myParam":2}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, recommend.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"2"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions queryParameters accepts list of string", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := recommend.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []recommend.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"myParam":["c","d"]}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, recommend.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"c,d"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions queryParameters accepts list of booleans", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := recommend.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []recommend.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"myParam":[true,true,false]}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, recommend.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"true,true,false"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions queryParameters accepts list of integers", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := recommend.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []recommend.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"myParam":[1,2]}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, recommend.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"1,2"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestRecommend_CustomPut(t *testing.T) { + client, echo := createRecommendClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "allow put method for a custom path with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/minimal"}` + req := recommend.ApiCustomPutRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomPut(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/minimal") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "PUT", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{}`) + }, + }, + { + name: "allow put method for a custom path with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"},"body":{"body":"parameters"}}` + req := recommend.ApiCustomPutRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomPut(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/all") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "PUT", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"body":"parameters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestRecommend_DeleteRecommendRule(t *testing.T) { + client, echo := createRecommendClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "deleteRecommendRule0", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"indexName","model":"related-products","objectID":"objectID"}` + req := recommend.ApiDeleteRecommendRuleRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.DeleteRecommendRule(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/indexName/related-products/recommend/rules/objectID") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "DELETE", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestRecommend_GetRecommendRule(t *testing.T) { + client, echo := createRecommendClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "getRecommendRule0", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"indexName","model":"related-products","objectID":"objectID"}` + req := recommend.ApiGetRecommendRuleRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetRecommendRule(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/indexName/related-products/recommend/rules/objectID") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestRecommend_GetRecommendStatus(t *testing.T) { + client, echo := createRecommendClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "getRecommendStatus0", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"indexName","model":"related-products","taskID":12345}` + req := recommend.ApiGetRecommendStatusRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetRecommendStatus(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/indexName/related-products/task/12345") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestRecommend_GetRecommendations(t *testing.T) { + client, echo := createRecommendClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "get recommendations for recommend model with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"requests":[{"indexName":"indexName","objectID":"objectID","model":"related-products","threshold":42}]}` + req := recommend.ApiGetRecommendationsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetRecommendations(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/*/recommendations") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"requests":[{"indexName":"indexName","objectID":"objectID","model":"related-products","threshold":42}]}`) + }, + }, + { + name: "get recommendations for recommend model with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"requests":[{"indexName":"indexName","objectID":"objectID","model":"related-products","threshold":42,"maxRecommendations":10,"queryParameters":{"query":"myQuery","facetFilters":["query"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback"]}}]}` + req := recommend.ApiGetRecommendationsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetRecommendations(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/*/recommendations") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"requests":[{"indexName":"indexName","objectID":"objectID","model":"related-products","threshold":42,"maxRecommendations":10,"queryParameters":{"query":"myQuery","facetFilters":["query"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback"]}}]}`) + }, + }, + { + name: "get recommendations for trending model with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"requests":[{"indexName":"indexName","model":"trending-items","threshold":42}]}` + req := recommend.ApiGetRecommendationsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetRecommendations(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/*/recommendations") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"requests":[{"indexName":"indexName","model":"trending-items","threshold":42}]}`) + }, + }, + { + name: "get recommendations for trending model with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"requests":[{"indexName":"indexName","model":"trending-items","threshold":42,"maxRecommendations":10,"facetName":"myFacetName","facetValue":"myFacetValue","queryParameters":{"query":"myQuery","facetFilters":["query"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback"]}}]}` + req := recommend.ApiGetRecommendationsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetRecommendations(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/*/recommendations") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"requests":[{"indexName":"indexName","model":"trending-items","threshold":42,"maxRecommendations":10,"facetName":"myFacetName","facetValue":"myFacetValue","queryParameters":{"query":"myQuery","facetFilters":["query"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback"]}}]}`) + }, + }, + { + name: "get multiple recommendations with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"requests":[{"indexName":"indexName1","objectID":"objectID1","model":"related-products","threshold":21},{"indexName":"indexName2","objectID":"objectID2","model":"related-products","threshold":21}]}` + req := recommend.ApiGetRecommendationsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetRecommendations(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/*/recommendations") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"requests":[{"indexName":"indexName1","objectID":"objectID1","model":"related-products","threshold":21},{"indexName":"indexName2","objectID":"objectID2","model":"related-products","threshold":21}]}`) + }, + }, + { + name: "get multiple recommendations with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"requests":[{"indexName":"indexName1","objectID":"objectID1","model":"related-products","threshold":21,"maxRecommendations":10,"queryParameters":{"query":"myQuery","facetFilters":["query1"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback1"]}},{"indexName":"indexName2","objectID":"objectID2","model":"related-products","threshold":21,"maxRecommendations":10,"queryParameters":{"query":"myQuery","facetFilters":["query2"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback2"]}}]}` + req := recommend.ApiGetRecommendationsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetRecommendations(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/*/recommendations") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"requests":[{"indexName":"indexName1","objectID":"objectID1","model":"related-products","threshold":21,"maxRecommendations":10,"queryParameters":{"query":"myQuery","facetFilters":["query1"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback1"]}},{"indexName":"indexName2","objectID":"objectID2","model":"related-products","threshold":21,"maxRecommendations":10,"queryParameters":{"query":"myQuery","facetFilters":["query2"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback2"]}}]}`) + }, + }, + { + name: "get frequently bought together recommendations", + testFunc: func(t *testing.T) { + parametersStr := `{"requests":[{"indexName":"indexName1","objectID":"objectID1","model":"bought-together","threshold":42}]}` + req := recommend.ApiGetRecommendationsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetRecommendations(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/*/recommendations") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"requests":[{"indexName":"indexName1","objectID":"objectID1","model":"bought-together","threshold":42}]}`) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestRecommend_SearchRecommendRules(t *testing.T) { + client, echo := createRecommendClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "searchRecommendRules0", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"indexName","model":"related-products"}` + req := recommend.ApiSearchRecommendRulesRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.SearchRecommendRules(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/indexName/related-products/recommend/rules/search") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{}`) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} diff --git a/tests/output/go/tests/requests/search_test.go b/tests/output/go/tests/requests/search_test.go new file mode 100644 index 0000000000..a1ee08341c --- /dev/null +++ b/tests/output/go/tests/requests/search_test.go @@ -0,0 +1,3203 @@ +package tests + +import ( + "encoding/json" + "net/url" + "testing" + + "github.com/kinbiko/jsonassert" + "github.com/stretchr/testify/require" + + "github.com/algolia/algoliasearch-client-go/v4/algolia/search" +) + +func createSearchClient() (*search.APIClient, *echoRequester) { + echo := &echoRequester{} + cfg := search.Configuration{ + AppID: "appID", + ApiKey: "apiKey", + Requester: echo, + } + client := search.NewClientWithConfig(cfg) + + // so that the linter doesn't complain + _ = jsonassert.New(nil) + + return client, echo +} + +func TestSearch_AddApiKey(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "addApiKey0", + testFunc: func(t *testing.T) { + parametersStr := `{"acl":["search","addObject"],"description":"my new api key","validity":300,"maxQueriesPerIPPerHour":100,"maxHitsPerQuery":20}` + req := search.ApiAddApiKeyRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.AddApiKey(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/keys") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"acl":["search","addObject"],"description":"my new api key","validity":300,"maxQueriesPerIPPerHour":100,"maxHitsPerQuery":20}`) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_AddOrUpdateObject(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "addOrUpdateObject0", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"indexName","objectID":"uniqueID","body":{"key":"value"}}` + req := search.ApiAddOrUpdateObjectRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.AddOrUpdateObject(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/indexName/uniqueID") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "PUT", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"key":"value"}`) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_AppendSource(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "appendSource0", + testFunc: func(t *testing.T) { + parametersStr := `{"source":"theSource","description":"theDescription"}` + req := search.ApiAppendSourceRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.AppendSource(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/security/sources/append") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"source":"theSource","description":"theDescription"}`) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_AssignUserId(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "assignUserId0", + testFunc: func(t *testing.T) { + parametersStr := `{"xAlgoliaUserID":"userID","assignUserIdParams":{"cluster":"theCluster"}}` + req := search.ApiAssignUserIdRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.AssignUserId(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/clusters/mapping") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"cluster":"theCluster"}`) + headers := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-user-id":"userID"}`), &headers)) + for k, v := range headers { + require.Equal(t, v, echo.header.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_Batch(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "allows batch method with `addObject` action", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"theIndexName","batchWriteParams":{"requests":[{"action":"addObject","body":{"key":"value"}}]}}` + req := search.ApiBatchRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.Batch(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/batch") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"requests":[{"action":"addObject","body":{"key":"value"}}]}`) + }, + }, + { + name: "allows batch method with `clear` action", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"theIndexName","batchWriteParams":{"requests":[{"action":"clear","body":{"key":"value"}}]}}` + req := search.ApiBatchRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.Batch(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/batch") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"requests":[{"action":"clear","body":{"key":"value"}}]}`) + }, + }, + { + name: "allows batch method with `delete` action", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"theIndexName","batchWriteParams":{"requests":[{"action":"delete","body":{"key":"value"}}]}}` + req := search.ApiBatchRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.Batch(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/batch") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"requests":[{"action":"delete","body":{"key":"value"}}]}`) + }, + }, + { + name: "allows batch method with `deleteObject` action", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"theIndexName","batchWriteParams":{"requests":[{"action":"deleteObject","body":{"key":"value"}}]}}` + req := search.ApiBatchRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.Batch(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/batch") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"requests":[{"action":"deleteObject","body":{"key":"value"}}]}`) + }, + }, + { + name: "allows batch method with `partialUpdateObject` action", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"theIndexName","batchWriteParams":{"requests":[{"action":"partialUpdateObject","body":{"key":"value"}}]}}` + req := search.ApiBatchRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.Batch(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/batch") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"requests":[{"action":"partialUpdateObject","body":{"key":"value"}}]}`) + }, + }, + { + name: "allows batch method with `partialUpdateObjectNoCreate` action", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"theIndexName","batchWriteParams":{"requests":[{"action":"partialUpdateObjectNoCreate","body":{"key":"value"}}]}}` + req := search.ApiBatchRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.Batch(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/batch") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"requests":[{"action":"partialUpdateObjectNoCreate","body":{"key":"value"}}]}`) + }, + }, + { + name: "allows batch method with `updateObject` action", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"theIndexName","batchWriteParams":{"requests":[{"action":"updateObject","body":{"key":"value"}}]}}` + req := search.ApiBatchRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.Batch(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/batch") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"requests":[{"action":"updateObject","body":{"key":"value"}}]}`) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_BatchAssignUserIds(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "batchAssignUserIds0", + testFunc: func(t *testing.T) { + parametersStr := `{"xAlgoliaUserID":"userID","batchAssignUserIdsParams":{"cluster":"theCluster","users":["user1","user2"]}}` + req := search.ApiBatchAssignUserIdsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.BatchAssignUserIds(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/clusters/mapping/batch") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"cluster":"theCluster","users":["user1","user2"]}`) + headers := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-user-id":"userID"}`), &headers)) + for k, v := range headers { + require.Equal(t, v, echo.header.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_BatchDictionaryEntries(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "get batchDictionaryEntries results with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"dictionaryName":"compounds","batchDictionaryEntriesParams":{"requests":[{"action":"addEntry","body":{"objectID":"1","language":"en"}},{"action":"deleteEntry","body":{"objectID":"2","language":"fr"}}]}}` + req := search.ApiBatchDictionaryEntriesRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.BatchDictionaryEntries(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/dictionaries/compounds/batch") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"requests":[{"action":"addEntry","body":{"objectID":"1","language":"en"}},{"action":"deleteEntry","body":{"objectID":"2","language":"fr"}}]}`) + }, + }, + { + name: "get batchDictionaryEntries results with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"dictionaryName":"compounds","batchDictionaryEntriesParams":{"clearExistingDictionaryEntries":false,"requests":[{"action":"addEntry","body":{"objectID":"1","language":"en","word":"fancy","words":["believe","algolia"],"decomposition":["trust","algolia"],"state":"enabled"}},{"action":"deleteEntry","body":{"objectID":"2","language":"fr","word":"humility","words":["candor","algolia"],"decomposition":["grit","algolia"],"state":"enabled"}}]}}` + req := search.ApiBatchDictionaryEntriesRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.BatchDictionaryEntries(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/dictionaries/compounds/batch") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"clearExistingDictionaryEntries":false,"requests":[{"action":"addEntry","body":{"objectID":"1","language":"en","word":"fancy","words":["believe","algolia"],"decomposition":["trust","algolia"],"state":"enabled"}},{"action":"deleteEntry","body":{"objectID":"2","language":"fr","word":"humility","words":["candor","algolia"],"decomposition":["grit","algolia"],"state":"enabled"}}]}`) + }, + }, + { + name: "get batchDictionaryEntries results additional properties", + testFunc: func(t *testing.T) { + parametersStr := `{"dictionaryName":"compounds","batchDictionaryEntriesParams":{"requests":[{"action":"addEntry","body":{"objectID":"1","language":"en","additional":"try me"}}]}}` + req := search.ApiBatchDictionaryEntriesRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.BatchDictionaryEntries(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/dictionaries/compounds/batch") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"requests":[{"action":"addEntry","body":{"objectID":"1","language":"en","additional":"try me"}}]}`) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_Browse(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "browse with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"indexName"}` + req := search.ApiBrowseRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.Browse(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/indexName/browse") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{}`) + }, + }, + { + name: "browse with search parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"indexName","browseParams":{"query":"myQuery","facetFilters":["tags:algolia"]}}` + req := search.ApiBrowseRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.Browse(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/indexName/browse") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"query":"myQuery","facetFilters":["tags:algolia"]}`) + }, + }, + { + name: "browse allow a cursor in parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"indexName","browseParams":{"cursor":"test"}}` + req := search.ApiBrowseRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.Browse(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/indexName/browse") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"cursor":"test"}`) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_ClearAllSynonyms(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "clearAllSynonyms0", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"indexName"}` + req := search.ApiClearAllSynonymsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.ClearAllSynonyms(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/indexName/synonyms/clear") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + require.Empty(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_ClearObjects(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "clearObjects0", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"theIndexName"}` + req := search.ApiClearObjectsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.ClearObjects(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/clear") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + require.Empty(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_ClearRules(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "clearRules0", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"indexName"}` + req := search.ApiClearRulesRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.ClearRules(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/indexName/rules/clear") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + require.Empty(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_CustomDelete(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "allow del method for a custom path with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/minimal"}` + req := search.ApiCustomDeleteRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomDelete(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/minimal") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "DELETE", echo.method) + + require.Nil(t, echo.body) + }, + }, + { + name: "allow del method for a custom path with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"}}` + req := search.ApiCustomDeleteRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomDelete(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/all") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "DELETE", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_CustomGet(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "allow get method for a custom path with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/minimal"}` + req := search.ApiCustomGetRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomGet(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/minimal") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + { + name: "allow get method for a custom path with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"}}` + req := search.ApiCustomGetRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomGet(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/all") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_CustomPost(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "allow post method for a custom path with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/minimal"}` + req := search.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomPost(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/minimal") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{}`) + }, + }, + { + name: "allow post method for a custom path with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"},"body":{"body":"parameters"}}` + req := search.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomPost(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/all") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"body":"parameters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions can override default query parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := search.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []search.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"myQueryParameter"}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, search.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"myQueryParameter"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions merges query parameters with default ones", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := search.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []search.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"query2":"myQueryParameter"}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, search.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","query2":"myQueryParameter"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions can override default headers", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := search.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []search.Option + requestOptionHeaders := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &requestOptionHeaders)) + for k, v := range requestOptionHeaders { + opts = append(opts, search.HeaderParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + headers := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &headers)) + for k, v := range headers { + require.Equal(t, v, echo.header.Get(k)) + } + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions merges headers with default ones", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := search.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []search.Option + requestOptionHeaders := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &requestOptionHeaders)) + for k, v := range requestOptionHeaders { + opts = append(opts, search.HeaderParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + headers := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"x-algolia-api-key":"myApiKey"}`), &headers)) + for k, v := range headers { + require.Equal(t, v, echo.header.Get(k)) + } + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions queryParameters accepts booleans", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := search.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []search.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"isItWorking":true}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, search.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","isItWorking":"true"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions queryParameters accepts integers", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := search.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []search.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"myParam":2}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, search.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"2"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions queryParameters accepts list of string", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := search.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []search.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"myParam":["c","d"]}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, search.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"c,d"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions queryParameters accepts list of booleans", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := search.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []search.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"myParam":[true,true,false]}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, search.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"true,true,false"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "requestOptions queryParameters accepts list of integers", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/requestOptions","parameters":{"query":"parameters"},"body":{"facet":"filters"}}` + req := search.ApiCustomPostRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + var opts []search.Option + requestOptionParameters := map[string]any{} + require.NoError(t, json.Unmarshal([]byte(`{"myParam":[1,2]}`), &requestOptionParameters)) + for k, v := range requestOptionParameters { + opts = append(opts, search.QueryParamOption(k, v)) + } + _, err := client.CustomPost(req, opts...) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/requestOptions") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"facet":"filters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters","myParam":"1,2"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_CustomPut(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "allow put method for a custom path with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/minimal"}` + req := search.ApiCustomPutRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomPut(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/minimal") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "PUT", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{}`) + }, + }, + { + name: "allow put method for a custom path with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"path":"/test/all","parameters":{"query":"parameters"},"body":{"body":"parameters"}}` + req := search.ApiCustomPutRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.CustomPut(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/test/all") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "PUT", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"body":"parameters"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"query":"parameters"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_DeleteApiKey(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "deleteApiKey0", + testFunc: func(t *testing.T) { + parametersStr := `{"key":"myTestApiKey"}` + req := search.ApiDeleteApiKeyRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.DeleteApiKey(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/keys/myTestApiKey") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "DELETE", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_DeleteBy(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "deleteBy0", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"theIndexName","deleteByParams":{"filters":"brand:brandName"}}` + req := search.ApiDeleteByRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.DeleteBy(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/deleteByQuery") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"filters":"brand:brandName"}`) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_DeleteIndex(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "deleteIndex0", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"theIndexName"}` + req := search.ApiDeleteIndexRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.DeleteIndex(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "DELETE", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_DeleteObject(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "deleteObject0", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"theIndexName","objectID":"uniqueID"}` + req := search.ApiDeleteObjectRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.DeleteObject(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/uniqueID") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "DELETE", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_DeleteRule(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "delete rule simple case", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"indexName","objectID":"id1"}` + req := search.ApiDeleteRuleRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.DeleteRule(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/indexName/rules/id1") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "DELETE", echo.method) + + require.Nil(t, echo.body) + }, + }, + { + name: "delete rule with simple characters to encode in objectID", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"indexName","objectID":"test/with/slash"}` + req := search.ApiDeleteRuleRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.DeleteRule(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/indexName/rules/test%2Fwith%2Fslash") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "DELETE", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_DeleteSource(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "deleteSource0", + testFunc: func(t *testing.T) { + parametersStr := `{"source":"theSource"}` + req := search.ApiDeleteSourceRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.DeleteSource(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/security/sources/theSource") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "DELETE", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_DeleteSynonym(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "deleteSynonym0", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"indexName","objectID":"id1"}` + req := search.ApiDeleteSynonymRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.DeleteSynonym(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/indexName/synonyms/id1") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "DELETE", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_GetApiKey(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "getApiKey0", + testFunc: func(t *testing.T) { + parametersStr := `{"key":"myTestApiKey"}` + req := search.ApiGetApiKeyRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetApiKey(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/keys/myTestApiKey") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_GetDictionaryLanguages(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "get getDictionaryLanguages", + testFunc: func(t *testing.T) { + _, err := client.GetDictionaryLanguages() + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/dictionaries/*/languages") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_GetDictionarySettings(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "get getDictionarySettings results", + testFunc: func(t *testing.T) { + _, err := client.GetDictionarySettings() + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/dictionaries/*/settings") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_GetLogs(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "getLogs with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{}` + req := search.ApiGetLogsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetLogs(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/logs") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + { + name: "getLogs with parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"offset":5,"length":10,"indexName":"theIndexName","type":"all"}` + req := search.ApiGetLogsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetLogs(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/logs") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"offset":"5","length":"10","indexName":"theIndexName","type":"all"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_GetObject(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "getObject0", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"theIndexName","objectID":"uniqueID","attributesToRetrieve":["attr1","attr2"]}` + req := search.ApiGetObjectRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetObject(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/uniqueID") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"attributesToRetrieve":"attr1,attr2"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_GetObjects(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "getObjects0", + testFunc: func(t *testing.T) { + parametersStr := `{"requests":[{"attributesToRetrieve":["attr1","attr2"],"objectID":"uniqueID","indexName":"theIndexName"}]}` + req := search.ApiGetObjectsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetObjects(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/*/objects") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"requests":[{"attributesToRetrieve":["attr1","attr2"],"objectID":"uniqueID","indexName":"theIndexName"}]}`) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_GetRule(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "getRule0", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"indexName","objectID":"id1"}` + req := search.ApiGetRuleRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetRule(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/indexName/rules/id1") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_GetSettings(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "getSettings0", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"theIndexName"}` + req := search.ApiGetSettingsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetSettings(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/settings") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_GetSources(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "getSources0", + testFunc: func(t *testing.T) { + _, err := client.GetSources() + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/security/sources") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_GetSynonym(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "getSynonym0", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"indexName","objectID":"id1"}` + req := search.ApiGetSynonymRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetSynonym(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/indexName/synonyms/id1") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_GetTask(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "getTask0", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"theIndexName","taskID":123}` + req := search.ApiGetTaskRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetTask(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/task/123") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_GetTopUserIds(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "getTopUserIds0", + testFunc: func(t *testing.T) { + _, err := client.GetTopUserIds() + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/clusters/mapping/top") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_GetUserId(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "getUserId0", + testFunc: func(t *testing.T) { + parametersStr := `{"userID":"uniqueID"}` + req := search.ApiGetUserIdRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.GetUserId(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/clusters/mapping/uniqueID") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_HasPendingMappings(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "hasPendingMappings with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{}` + req := search.ApiHasPendingMappingsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.HasPendingMappings(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/clusters/mapping/pending") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + { + name: "hasPendingMappings with parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"getClusters":true}` + req := search.ApiHasPendingMappingsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.HasPendingMappings(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/clusters/mapping/pending") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"getClusters":"true"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_ListApiKeys(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "listApiKeys0", + testFunc: func(t *testing.T) { + _, err := client.ListApiKeys() + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/keys") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_ListClusters(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "listClusters0", + testFunc: func(t *testing.T) { + _, err := client.ListClusters() + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/clusters") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_ListIndices(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "listIndices with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{}` + req := search.ApiListIndicesRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.ListIndices(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + { + name: "listIndices with parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"page":8,"hitsPerPage":3}` + req := search.ApiListIndicesRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.ListIndices(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"page":"8","hitsPerPage":"3"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_ListUserIds(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "listUserIds with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{}` + req := search.ApiListUserIdsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.ListUserIds(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/clusters/mapping") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + }, + }, + { + name: "listUserIds with parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"page":8,"hitsPerPage":100}` + req := search.ApiListUserIdsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.ListUserIds(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/clusters/mapping") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "GET", echo.method) + + require.Nil(t, echo.body) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"page":"8","hitsPerPage":"100"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_MultipleBatch(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "multipleBatch0", + testFunc: func(t *testing.T) { + parametersStr := `{"requests":[{"action":"addObject","body":{"key":"value"},"indexName":"theIndexName"}]}` + req := search.ApiMultipleBatchRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.MultipleBatch(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/*/batch") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"requests":[{"action":"addObject","body":{"key":"value"},"indexName":"theIndexName"}]}`) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_OperationIndex(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "operationIndex0", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"theIndexName","operationIndexParams":{"operation":"copy","destination":"dest","scope":["rules","settings"]}}` + req := search.ApiOperationIndexRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.OperationIndex(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/operation") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"operation":"copy","destination":"dest","scope":["rules","settings"]}`) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_PartialUpdateObject(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "partialUpdateObject0", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"theIndexName","objectID":"uniqueID","attributesToUpdate":{"id1":"test","id2":{"_operation":"AddUnique","value":"test2"}},"createIfNotExists":true}` + req := search.ApiPartialUpdateObjectRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.PartialUpdateObject(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/uniqueID/partial") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"id1":"test","id2":{"_operation":"AddUnique","value":"test2"}}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"createIfNotExists":"true"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_RemoveUserId(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "removeUserId0", + testFunc: func(t *testing.T) { + parametersStr := `{"userID":"uniqueID"}` + req := search.ApiRemoveUserIdRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.RemoveUserId(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/clusters/mapping/uniqueID") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "DELETE", echo.method) + + require.Nil(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_ReplaceSources(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "replaceSources0", + testFunc: func(t *testing.T) { + parametersStr := `{"source":[{"source":"theSource","description":"theDescription"}]}` + req := search.ApiReplaceSourcesRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.ReplaceSources(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/security/sources") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "PUT", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `[{"source":"theSource","description":"theDescription"}]`) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_RestoreApiKey(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "restoreApiKey0", + testFunc: func(t *testing.T) { + parametersStr := `{"key":"myApiKey"}` + req := search.ApiRestoreApiKeyRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.RestoreApiKey(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/keys/myApiKey/restore") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + require.Empty(t, echo.body) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_SaveObject(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "saveObject0", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"theIndexName","body":{"objectID":"id","test":"val"}}` + req := search.ApiSaveObjectRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.SaveObject(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"objectID":"id","test":"val"}`) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_SaveRule(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "saveRule with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"indexName","objectID":"id1","rule":{"objectID":"id1","conditions":[{"pattern":"apple","anchoring":"contains"}]}}` + req := search.ApiSaveRuleRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.SaveRule(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/indexName/rules/id1") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "PUT", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"objectID":"id1","conditions":[{"pattern":"apple","anchoring":"contains"}]}`) + }, + }, + { + name: "saveRule with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"indexName","objectID":"id1","rule":{"objectID":"id1","conditions":[{"pattern":"apple","anchoring":"contains","alternatives":false,"context":"search"}],"consequence":{"params":{"filters":"brand:apple","query":{"remove":["algolia"],"edits":[{"type":"remove","delete":"abc","insert":"cde"},{"type":"replace","delete":"abc","insert":"cde"}]}},"hide":[{"objectID":"321"}],"filterPromotes":false,"userData":{"algolia":"aloglia"},"promote":[{"objectID":"abc","position":3},{"objectIDs":["abc","def"],"position":1}]},"description":"test","enabled":true,"validity":[{"from":1656670273,"until":1656670277}]},"forwardToReplicas":true}` + req := search.ApiSaveRuleRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.SaveRule(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/indexName/rules/id1") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "PUT", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"objectID":"id1","conditions":[{"pattern":"apple","anchoring":"contains","alternatives":false,"context":"search"}],"consequence":{"params":{"filters":"brand:apple","query":{"remove":["algolia"],"edits":[{"type":"remove","delete":"abc","insert":"cde"},{"type":"replace","delete":"abc","insert":"cde"}]}},"hide":[{"objectID":"321"}],"filterPromotes":false,"userData":{"algolia":"aloglia"},"promote":[{"objectID":"abc","position":3},{"objectIDs":["abc","def"],"position":1}]},"description":"test","enabled":true,"validity":[{"from":1656670273,"until":1656670277}]}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"forwardToReplicas":"true"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_SaveRules(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "saveRules with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"indexName","rules":[{"objectID":"a-rule-id","conditions":[{"pattern":"smartphone","anchoring":"contains"}]},{"objectID":"a-second-rule-id","conditions":[{"pattern":"apple","anchoring":"contains"}]}]}` + req := search.ApiSaveRulesRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.SaveRules(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/indexName/rules/batch") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `[{"objectID":"a-rule-id","conditions":[{"pattern":"smartphone","anchoring":"contains"}]},{"objectID":"a-second-rule-id","conditions":[{"pattern":"apple","anchoring":"contains"}]}]`) + }, + }, + { + name: "saveRules with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"indexName","rules":[{"objectID":"id1","conditions":[{"pattern":"apple","anchoring":"contains","alternatives":false,"context":"search"}],"consequence":{"params":{"filters":"brand:apple","query":{"remove":["algolia"],"edits":[{"type":"remove","delete":"abc","insert":"cde"},{"type":"replace","delete":"abc","insert":"cde"}]}},"hide":[{"objectID":"321"}],"filterPromotes":false,"userData":{"algolia":"aloglia"},"promote":[{"objectID":"abc","position":3},{"objectIDs":["abc","def"],"position":1}]},"description":"test","enabled":true,"validity":[{"from":1656670273,"until":1656670277}]}],"forwardToReplicas":true,"clearExistingRules":true}` + req := search.ApiSaveRulesRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.SaveRules(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/indexName/rules/batch") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `[{"objectID":"id1","conditions":[{"pattern":"apple","anchoring":"contains","alternatives":false,"context":"search"}],"consequence":{"params":{"filters":"brand:apple","query":{"remove":["algolia"],"edits":[{"type":"remove","delete":"abc","insert":"cde"},{"type":"replace","delete":"abc","insert":"cde"}]}},"hide":[{"objectID":"321"}],"filterPromotes":false,"userData":{"algolia":"aloglia"},"promote":[{"objectID":"abc","position":3},{"objectIDs":["abc","def"],"position":1}]},"description":"test","enabled":true,"validity":[{"from":1656670273,"until":1656670277}]}]`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"forwardToReplicas":"true","clearExistingRules":"true"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_SaveSynonym(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "saveSynonym0", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"indexName","objectID":"id1","synonymHit":{"objectID":"id1","type":"synonym","synonyms":["car","vehicule","auto"]},"forwardToReplicas":true}` + req := search.ApiSaveSynonymRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.SaveSynonym(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/indexName/synonyms/id1") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "PUT", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"objectID":"id1","type":"synonym","synonyms":["car","vehicule","auto"]}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"forwardToReplicas":"true"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_SaveSynonyms(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "saveSynonyms0", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"indexName","synonymHit":[{"objectID":"id1","type":"synonym","synonyms":["car","vehicule","auto"]},{"objectID":"id2","type":"onewaysynonym","input":"iphone","synonyms":["ephone","aphone","yphone"]}],"forwardToReplicas":true,"replaceExistingSynonyms":false}` + req := search.ApiSaveSynonymsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.SaveSynonyms(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/indexName/synonyms/batch") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `[{"objectID":"id1","type":"synonym","synonyms":["car","vehicule","auto"]},{"objectID":"id2","type":"onewaysynonym","input":"iphone","synonyms":["ephone","aphone","yphone"]}]`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"forwardToReplicas":"true","replaceExistingSynonyms":"false"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_Search(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "search for a single hits request with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"requests":[{"indexName":"cts_e2e_search_empty_index"}]}` + req := search.ApiSearchRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.Search(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/*/queries") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"requests":[{"indexName":"cts_e2e_search_empty_index"}]}`) + }, + }, + { + name: "search for a single facet request with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"requests":[{"indexName":"cts_e2e_search_facet","type":"facet","facet":"editor"}],"strategy":"stopIfEnoughMatches"}` + req := search.ApiSearchRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.Search(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/*/queries") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"requests":[{"indexName":"cts_e2e_search_facet","type":"facet","facet":"editor"}],"strategy":"stopIfEnoughMatches"}`) + }, + }, + { + name: "search for a single hits request with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"requests":[{"indexName":"theIndexName","query":"myQuery","hitsPerPage":50,"type":"default"}]}` + req := search.ApiSearchRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.Search(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/*/queries") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"requests":[{"indexName":"theIndexName","query":"myQuery","hitsPerPage":50,"type":"default"}]}`) + }, + }, + { + name: "search for a single facet request with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"requests":[{"indexName":"theIndexName","type":"facet","facet":"theFacet","facetQuery":"theFacetQuery","query":"theQuery","maxFacetHits":50}],"strategy":"stopIfEnoughMatches"}` + req := search.ApiSearchRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.Search(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/*/queries") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"requests":[{"indexName":"theIndexName","type":"facet","facet":"theFacet","facetQuery":"theFacetQuery","query":"theQuery","maxFacetHits":50}],"strategy":"stopIfEnoughMatches"}`) + }, + }, + { + name: "search for multiple mixed requests in multiple indices with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"requests":[{"indexName":"theIndexName"},{"indexName":"theIndexName2","type":"facet","facet":"theFacet"},{"indexName":"theIndexName","type":"default"}],"strategy":"stopIfEnoughMatches"}` + req := search.ApiSearchRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.Search(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/*/queries") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"requests":[{"indexName":"theIndexName"},{"indexName":"theIndexName2","type":"facet","facet":"theFacet"},{"indexName":"theIndexName","type":"default"}],"strategy":"stopIfEnoughMatches"}`) + }, + }, + { + name: "search for multiple mixed requests in multiple indices with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"requests":[{"indexName":"theIndexName","type":"facet","facet":"theFacet","facetQuery":"theFacetQuery","query":"theQuery","maxFacetHits":50},{"indexName":"theIndexName","query":"myQuery","hitsPerPage":50,"type":"default"}],"strategy":"stopIfEnoughMatches"}` + req := search.ApiSearchRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.Search(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/*/queries") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"requests":[{"indexName":"theIndexName","type":"facet","facet":"theFacet","facetQuery":"theFacetQuery","query":"theQuery","maxFacetHits":50},{"indexName":"theIndexName","query":"myQuery","hitsPerPage":50,"type":"default"}],"strategy":"stopIfEnoughMatches"}`) + }, + }, + { + name: "search filters accept all of the possible shapes", + testFunc: func(t *testing.T) { + parametersStr := `{"requests":[{"indexName":"theIndexName","facetFilters":"mySearch:filters","reRankingApplyFilter":"mySearch:filters","tagFilters":"mySearch:filters","numericFilters":"mySearch:filters","optionalFilters":"mySearch:filters"},{"indexName":"theIndexName","facetFilters":["mySearch:filters",["mySearch:filters"]],"reRankingApplyFilter":["mySearch:filters",["mySearch:filters"]],"tagFilters":["mySearch:filters",["mySearch:filters"]],"numericFilters":["mySearch:filters",["mySearch:filters"]],"optionalFilters":["mySearch:filters",["mySearch:filters"]]}]}` + req := search.ApiSearchRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.Search(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/*/queries") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"requests":[{"indexName":"theIndexName","facetFilters":"mySearch:filters","reRankingApplyFilter":"mySearch:filters","tagFilters":"mySearch:filters","numericFilters":"mySearch:filters","optionalFilters":"mySearch:filters"},{"indexName":"theIndexName","facetFilters":["mySearch:filters",["mySearch:filters"]],"reRankingApplyFilter":["mySearch:filters",["mySearch:filters"]],"tagFilters":["mySearch:filters",["mySearch:filters"]],"numericFilters":["mySearch:filters",["mySearch:filters"]],"optionalFilters":["mySearch:filters",["mySearch:filters"]]}]}`) + }, + }, + { + name: "search with all search parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"requests":[{"advancedSyntax":true,"advancedSyntaxFeatures":["exactPhrase"],"allowTyposOnNumericTokens":true,"alternativesAsExact":["multiWordsSynonym"],"analytics":true,"analyticsTags":[""],"aroundLatLng":"","aroundLatLngViaIP":true,"aroundPrecision":0,"aroundRadius":"all","attributeCriteriaComputedByMinProximity":true,"attributesForFaceting":[""],"attributesToHighlight":[""],"attributesToRetrieve":[""],"attributesToSnippet":[""],"clickAnalytics":true,"customRanking":[""],"decompoundQuery":true,"disableExactOnAttributes":[""],"disableTypoToleranceOnAttributes":[""],"distinct":0,"enableABTest":true,"enablePersonalization":true,"enableReRanking":true,"enableRules":true,"exactOnSingleWordQuery":"attribute","explain":["foo","bar"],"facetFilters":[""],"facetingAfterDistinct":true,"facets":[""],"filters":"","getRankingInfo":true,"highlightPostTag":"","highlightPreTag":"","hitsPerPage":1,"ignorePlurals":false,"indexName":"theIndexName","insideBoundingBox":[[47.3165,4.9665,47.3424,5.0201],[40.9234,2.1185,38.643,1.9916]],"insidePolygon":[[47.3165,4.9665,47.3424,5.0201,47.32,4.9],[40.9234,2.1185,38.643,1.9916,39.2587,2.0104]],"keepDiacriticsOnCharacters":"","length":1,"maxValuesPerFacet":0,"minProximity":1,"minWordSizefor1Typo":0,"minWordSizefor2Typos":0,"minimumAroundRadius":1,"naturalLanguages":[""],"numericFilters":[""],"offset":0,"optionalFilters":[""],"optionalWords":[""],"page":0,"percentileComputation":true,"personalizationImpact":0,"query":"","queryLanguages":[""],"queryType":"prefixAll","ranking":[""],"reRankingApplyFilter":[""],"relevancyStrictness":0,"removeStopWords":true,"removeWordsIfNoResults":"allOptional","renderingContent":{"facetOrdering":{"facets":{"order":["a","b"]},"values":{"a":{"order":["b"],"sortRemainingBy":"count"}}}},"replaceSynonymsInHighlight":true,"responseFields":[""],"restrictHighlightAndSnippetArrays":true,"restrictSearchableAttributes":[""],"ruleContexts":[""],"similarQuery":"","snippetEllipsisText":"","sortFacetValuesBy":"","sumOrFiltersScores":true,"synonyms":true,"tagFilters":[""],"type":"default","typoTolerance":"min","userToken":""}]}` + req := search.ApiSearchRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.Search(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/*/queries") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"requests":[{"advancedSyntax":true,"advancedSyntaxFeatures":["exactPhrase"],"allowTyposOnNumericTokens":true,"alternativesAsExact":["multiWordsSynonym"],"analytics":true,"analyticsTags":[""],"aroundLatLng":"","aroundLatLngViaIP":true,"aroundPrecision":0,"aroundRadius":"all","attributeCriteriaComputedByMinProximity":true,"attributesForFaceting":[""],"attributesToHighlight":[""],"attributesToRetrieve":[""],"attributesToSnippet":[""],"clickAnalytics":true,"customRanking":[""],"decompoundQuery":true,"disableExactOnAttributes":[""],"disableTypoToleranceOnAttributes":[""],"distinct":0,"enableABTest":true,"enablePersonalization":true,"enableReRanking":true,"enableRules":true,"exactOnSingleWordQuery":"attribute","explain":["foo","bar"],"facetFilters":[""],"facetingAfterDistinct":true,"facets":[""],"filters":"","getRankingInfo":true,"highlightPostTag":"","highlightPreTag":"","hitsPerPage":1,"ignorePlurals":false,"indexName":"theIndexName","insideBoundingBox":[[47.3165,4.9665,47.3424,5.0201],[40.9234,2.1185,38.643,1.9916]],"insidePolygon":[[47.3165,4.9665,47.3424,5.0201,47.32,4.9],[40.9234,2.1185,38.643,1.9916,39.2587,2.0104]],"keepDiacriticsOnCharacters":"","length":1,"maxValuesPerFacet":0,"minProximity":1,"minWordSizefor1Typo":0,"minWordSizefor2Typos":0,"minimumAroundRadius":1,"naturalLanguages":[""],"numericFilters":[""],"offset":0,"optionalFilters":[""],"optionalWords":[""],"page":0,"percentileComputation":true,"personalizationImpact":0,"query":"","queryLanguages":[""],"queryType":"prefixAll","ranking":[""],"reRankingApplyFilter":[""],"relevancyStrictness":0,"removeStopWords":true,"removeWordsIfNoResults":"allOptional","renderingContent":{"facetOrdering":{"facets":{"order":["a","b"]},"values":{"a":{"order":["b"],"sortRemainingBy":"count"}}}},"replaceSynonymsInHighlight":true,"responseFields":[""],"restrictHighlightAndSnippetArrays":true,"restrictSearchableAttributes":[""],"ruleContexts":[""],"similarQuery":"","snippetEllipsisText":"","sortFacetValuesBy":"","sumOrFiltersScores":true,"synonyms":true,"tagFilters":[""],"type":"default","typoTolerance":"min","userToken":""}]}`) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_SearchDictionaryEntries(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "get searchDictionaryEntries results with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"dictionaryName":"compounds","searchDictionaryEntriesParams":{"query":"foo"}}` + req := search.ApiSearchDictionaryEntriesRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.SearchDictionaryEntries(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/dictionaries/compounds/search") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"query":"foo"}`) + }, + }, + { + name: "get searchDictionaryEntries results with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"dictionaryName":"compounds","searchDictionaryEntriesParams":{"query":"foo","page":4,"hitsPerPage":2,"language":"fr"}}` + req := search.ApiSearchDictionaryEntriesRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.SearchDictionaryEntries(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/dictionaries/compounds/search") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"query":"foo","page":4,"hitsPerPage":2,"language":"fr"}`) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_SearchForFacetValues(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "get searchForFacetValues results with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"indexName","facetName":"facetName"}` + req := search.ApiSearchForFacetValuesRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.SearchForFacetValues(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/indexName/facets/facetName/query") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{}`) + }, + }, + { + name: "get searchForFacetValues results with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"indexName","facetName":"facetName","searchForFacetValuesRequest":{"params":"query=foo&facetFilters=['bar']","facetQuery":"foo","maxFacetHits":42}}` + req := search.ApiSearchForFacetValuesRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.SearchForFacetValues(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/indexName/facets/facetName/query") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"params":"query=foo&facetFilters=['bar']","facetQuery":"foo","maxFacetHits":42}`) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_SearchRules(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "searchRules0", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"indexName","searchRulesParams":{"query":"something"}}` + req := search.ApiSearchRulesRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.SearchRules(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/indexName/rules/search") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"query":"something"}`) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_SearchSingleIndex(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "search with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"indexName"}` + req := search.ApiSearchSingleIndexRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.SearchSingleIndex(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/indexName/query") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{}`) + }, + }, + { + name: "search with searchParams", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"indexName","searchParams":{"query":"myQuery","facetFilters":["tags:algolia"]}}` + req := search.ApiSearchSingleIndexRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.SearchSingleIndex(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/indexName/query") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"query":"myQuery","facetFilters":["tags:algolia"]}`) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_SearchSynonyms(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "searchSynonyms with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"indexName"}` + req := search.ApiSearchSynonymsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.SearchSynonyms(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/indexName/synonyms/search") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{}`) + }, + }, + { + name: "searchSynonyms with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"indexName","type":"altcorrection1","page":10,"hitsPerPage":10,"searchSynonymsParams":{"query":"myQuery"}}` + req := search.ApiSearchSynonymsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.SearchSynonyms(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/indexName/synonyms/search") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"query":"myQuery"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"type":"altcorrection1","page":"10","hitsPerPage":"10"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_SearchUserIds(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "searchUserIds0", + testFunc: func(t *testing.T) { + parametersStr := `{"query":"test","clusterName":"theClusterName","page":5,"hitsPerPage":10}` + req := search.ApiSearchUserIdsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.SearchUserIds(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/clusters/mapping/search") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "POST", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"query":"test","clusterName":"theClusterName","page":5,"hitsPerPage":10}`) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_SetDictionarySettings(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "get setDictionarySettings results with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"disableStandardEntries":{"plurals":{"fr":false,"en":false,"ru":true}}}` + req := search.ApiSetDictionarySettingsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.SetDictionarySettings(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/dictionaries/*/settings") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "PUT", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"disableStandardEntries":{"plurals":{"fr":false,"en":false,"ru":true}}}`) + }, + }, + { + name: "get setDictionarySettings results with all parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"disableStandardEntries":{"plurals":{"fr":false,"en":false,"ru":true},"stopwords":{"fr":false},"compounds":{"ru":true}}}` + req := search.ApiSetDictionarySettingsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.SetDictionarySettings(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/dictionaries/*/settings") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "PUT", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"disableStandardEntries":{"plurals":{"fr":false,"en":false,"ru":true},"stopwords":{"fr":false},"compounds":{"ru":true}}}`) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_SetSettings(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "setSettings with minimal parameters", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"theIndexName","indexSettings":{"paginationLimitedTo":10},"forwardToReplicas":true}` + req := search.ApiSetSettingsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.SetSettings(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/settings") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "PUT", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"paginationLimitedTo":10}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"forwardToReplicas":"true"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "setSettings allow boolean `typoTolerance`", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"theIndexName","indexSettings":{"typoTolerance":true},"forwardToReplicas":true}` + req := search.ApiSetSettingsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.SetSettings(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/settings") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "PUT", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"typoTolerance":true}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"forwardToReplicas":"true"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "setSettings allow enum `typoTolerance`", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"theIndexName","indexSettings":{"typoTolerance":"min"},"forwardToReplicas":true}` + req := search.ApiSetSettingsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.SetSettings(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/settings") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "PUT", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"typoTolerance":"min"}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"forwardToReplicas":"true"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "setSettings allow boolean `ignorePlurals`", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"theIndexName","indexSettings":{"ignorePlurals":true},"forwardToReplicas":true}` + req := search.ApiSetSettingsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.SetSettings(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/settings") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "PUT", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"ignorePlurals":true}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"forwardToReplicas":"true"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "setSettings allow list of string `ignorePlurals`", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"theIndexName","indexSettings":{"ignorePlurals":["algolia"]},"forwardToReplicas":true}` + req := search.ApiSetSettingsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.SetSettings(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/settings") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "PUT", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"ignorePlurals":["algolia"]}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"forwardToReplicas":"true"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "setSettings allow boolean `removeStopWords`", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"theIndexName","indexSettings":{"removeStopWords":true},"forwardToReplicas":true}` + req := search.ApiSetSettingsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.SetSettings(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/settings") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "PUT", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"removeStopWords":true}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"forwardToReplicas":"true"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "setSettings allow list of string `removeStopWords`", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"theIndexName","indexSettings":{"removeStopWords":["algolia"]},"forwardToReplicas":true}` + req := search.ApiSetSettingsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.SetSettings(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/settings") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "PUT", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"removeStopWords":["algolia"]}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"forwardToReplicas":"true"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "setSettings allow boolean `distinct`", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"theIndexName","indexSettings":{"distinct":true},"forwardToReplicas":true}` + req := search.ApiSetSettingsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.SetSettings(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/settings") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "PUT", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"distinct":true}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"forwardToReplicas":"true"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "setSettings allow integers for `distinct`", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"theIndexName","indexSettings":{"distinct":1},"forwardToReplicas":true}` + req := search.ApiSetSettingsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.SetSettings(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/settings") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "PUT", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"distinct":1}`) + queryParams := map[string]string{} + require.NoError(t, json.Unmarshal([]byte(`{"forwardToReplicas":"true"}`), &queryParams)) + for k, v := range queryParams { + require.Equal(t, v, echo.query.Get(k)) + } + }, + }, + { + name: "setSettings allow all `indexSettings`", + testFunc: func(t *testing.T) { + parametersStr := `{"indexName":"theIndexName","indexSettings":{"advancedSyntax":true,"advancedSyntaxFeatures":["exactPhrase"],"allowCompressionOfIntegerArray":true,"allowTyposOnNumericTokens":true,"alternativesAsExact":["singleWordSynonym"],"attributeCriteriaComputedByMinProximity":true,"attributeForDistinct":"test","attributesForFaceting":["algolia"],"attributesToHighlight":["algolia"],"attributesToRetrieve":["algolia"],"attributesToSnippet":["algolia"],"attributesToTransliterate":["algolia"],"camelCaseAttributes":["algolia"],"customNormalization":{"algolia":{"aloglia":"aglolia"}},"customRanking":["algolia"],"decompoundQuery":false,"decompoundedAttributes":{"algolia":"aloglia"},"disableExactOnAttributes":["algolia"],"disablePrefixOnAttributes":["algolia"],"disableTypoToleranceOnAttributes":["algolia"],"disableTypoToleranceOnWords":["algolia"],"distinct":3,"enablePersonalization":true,"enableReRanking":false,"enableRules":true,"exactOnSingleWordQuery":"attribute","highlightPreTag":"","highlightPostTag":"","hitsPerPage":10,"ignorePlurals":false,"indexLanguages":["algolia"],"keepDiacriticsOnCharacters":"abc","maxFacetHits":20,"maxValuesPerFacet":30,"minProximity":6,"minWordSizefor1Typo":5,"minWordSizefor2Typos":11,"mode":"neuralSearch","numericAttributesForFiltering":["algolia"],"optionalWords":["myspace"],"paginationLimitedTo":0,"queryLanguages":["algolia"],"queryType":"prefixLast","ranking":["geo"],"reRankingApplyFilter":"mySearch:filters","relevancyStrictness":10,"removeStopWords":false,"removeWordsIfNoResults":"lastWords","renderingContent":{"facetOrdering":{"facets":{"order":["a","b"]},"values":{"a":{"order":["b"],"sortRemainingBy":"count"}}}},"replaceSynonymsInHighlight":true,"replicas":[""],"responseFields":["algolia"],"restrictHighlightAndSnippetArrays":true,"searchableAttributes":["foo"],"semanticSearch":{"eventSources":["foo"]},"separatorsToIndex":"bar","snippetEllipsisText":"---","sortFacetValuesBy":"date","typoTolerance":false,"unretrievableAttributes":["foo"],"userData":{"user":"data"}}}` + req := search.ApiSetSettingsRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.SetSettings(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/indexes/theIndexName/settings") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "PUT", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"advancedSyntax":true,"advancedSyntaxFeatures":["exactPhrase"],"allowCompressionOfIntegerArray":true,"allowTyposOnNumericTokens":true,"alternativesAsExact":["singleWordSynonym"],"attributeCriteriaComputedByMinProximity":true,"attributeForDistinct":"test","attributesForFaceting":["algolia"],"attributesToHighlight":["algolia"],"attributesToRetrieve":["algolia"],"attributesToSnippet":["algolia"],"attributesToTransliterate":["algolia"],"camelCaseAttributes":["algolia"],"customNormalization":{"algolia":{"aloglia":"aglolia"}},"customRanking":["algolia"],"decompoundQuery":false,"decompoundedAttributes":{"algolia":"aloglia"},"disableExactOnAttributes":["algolia"],"disablePrefixOnAttributes":["algolia"],"disableTypoToleranceOnAttributes":["algolia"],"disableTypoToleranceOnWords":["algolia"],"distinct":3,"enablePersonalization":true,"enableReRanking":false,"enableRules":true,"exactOnSingleWordQuery":"attribute","highlightPreTag":"","highlightPostTag":"","hitsPerPage":10,"ignorePlurals":false,"indexLanguages":["algolia"],"keepDiacriticsOnCharacters":"abc","maxFacetHits":20,"maxValuesPerFacet":30,"minProximity":6,"minWordSizefor1Typo":5,"minWordSizefor2Typos":11,"mode":"neuralSearch","numericAttributesForFiltering":["algolia"],"optionalWords":["myspace"],"paginationLimitedTo":0,"queryLanguages":["algolia"],"queryType":"prefixLast","ranking":["geo"],"reRankingApplyFilter":"mySearch:filters","relevancyStrictness":10,"removeStopWords":false,"removeWordsIfNoResults":"lastWords","renderingContent":{"facetOrdering":{"facets":{"order":["a","b"]},"values":{"a":{"order":["b"],"sortRemainingBy":"count"}}}},"replaceSynonymsInHighlight":true,"replicas":[""],"responseFields":["algolia"],"restrictHighlightAndSnippetArrays":true,"searchableAttributes":["foo"],"semanticSearch":{"eventSources":["foo"]},"separatorsToIndex":"bar","snippetEllipsisText":"---","sortFacetValuesBy":"date","typoTolerance":false,"unretrievableAttributes":["foo"],"userData":{"user":"data"}}`) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} + +func TestSearch_UpdateApiKey(t *testing.T) { + client, echo := createSearchClient() + + tests := []struct { + name string + testFunc func(t *testing.T) + }{ + { + name: "updateApiKey0", + testFunc: func(t *testing.T) { + parametersStr := `{"key":"myApiKey","apiKey":{"acl":["search","addObject"],"validity":300,"maxQueriesPerIPPerHour":100,"maxHitsPerQuery":20}}` + req := search.ApiUpdateApiKeyRequest{} + require.NoError(t, json.Unmarshal([]byte(parametersStr), &req)) + _, err := client.UpdateApiKey(req) + require.NoError(t, err) + + expectedPath, err := url.QueryUnescape("/1/keys/myApiKey") + require.NoError(t, err) + require.Equal(t, expectedPath, echo.path) + require.Equal(t, "PUT", echo.method) + + ja := jsonassert.New(t) + ja.Assertf(*echo.body, `{"acl":["search","addObject"],"validity":300,"maxQueriesPerIPPerHour":100,"maxHitsPerQuery":20}`) + }, + }, + } + for _, test := range tests { + test := test + t.Run(test.name, func(t *testing.T) { + test.testFunc(t) + }) + } +} diff --git a/tests/output/java/src/test/java/com/algolia/requests/Abtesting.test.java b/tests/output/java/src/test/java/com/algolia/requests/Abtesting.test.java new file mode 100644 index 0000000000..727a6472e7 --- /dev/null +++ b/tests/output/java/src/test/java/com/algolia/requests/Abtesting.test.java @@ -0,0 +1,764 @@ +package com.algolia.methods.requests; + +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.fail; + +import com.algolia.EchoInterceptor; +import com.algolia.EchoResponse; +import com.algolia.api.AbtestingClient; +import com.algolia.config.*; +import com.algolia.model.abtesting.*; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.json.JsonMapper; +import java.util.*; +import org.junit.jupiter.api.*; +import org.skyscreamer.jsonassert.JSONAssert; +import org.skyscreamer.jsonassert.JSONCompareMode; + +@TestInstance(TestInstance.Lifecycle.PER_CLASS) +class AbtestingClientRequestsTests { + + private AbtestingClient client; + private EchoInterceptor echo; + private ObjectMapper json; + + @BeforeAll + void init() { + this.json = JsonMapper.builder().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false).build(); + this.echo = new EchoInterceptor(); + var options = ClientOptions.builder().setRequesterConfig(requester -> requester.addInterceptor(echo)).build(); + this.client = new AbtestingClient("appId", "apiKey", "us", options); + } + + @AfterAll + void tearUp() throws Exception { + client.close(); + } + + @Test + @DisplayName("addABTests with minimal parameters") + void addABTestsTest0() { + AddABTestsRequest addABTestsRequest0 = new AddABTestsRequest(); + { + String endAt1 = "2022-12-31T00:00:00.000Z"; + addABTestsRequest0.setEndAt(endAt1); + String name1 = "myABTest"; + addABTestsRequest0.setName(name1); + List variants1 = new ArrayList<>(); + { + AbTestsVariant variants_02 = new AbTestsVariant(); + { + String index3 = "AB_TEST_1"; + variants_02.setIndex(index3); + int trafficPercentage3 = 30; + variants_02.setTrafficPercentage(trafficPercentage3); + } + variants1.add(variants_02); + AbTestsVariant variants_12 = new AbTestsVariant(); + { + String index3 = "AB_TEST_2"; + variants_12.setIndex(index3); + int trafficPercentage3 = 50; + variants_12.setTrafficPercentage(trafficPercentage3); + } + variants1.add(variants_12); + } + addABTestsRequest0.setVariants(variants1); + } + + assertDoesNotThrow(() -> { + client.addABTests(addABTestsRequest0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/2/abtests", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals( + "{\"endAt\":\"2022-12-31T00:00:00.000Z\",\"name\":\"myABTest\",\"variants\":[{\"index\":\"AB_TEST_1\",\"trafficPercentage\":30},{\"index\":\"AB_TEST_2\",\"trafficPercentage\":50}]}", + req.body, + JSONCompareMode.STRICT + ) + ); + } + + @Test + @DisplayName("allow del method for a custom path with minimal parameters") + void customDeleteTest0() { + String path0 = "/test/minimal"; + + assertDoesNotThrow(() -> { + client.customDelete(path0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/minimal", req.path); + assertEquals("DELETE", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("allow del method for a custom path with all parameters") + void customDeleteTest1() { + String path0 = "/test/all"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + + assertDoesNotThrow(() -> { + client.customDelete(path0, parameters0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/all", req.path); + assertEquals("DELETE", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("allow get method for a custom path with minimal parameters") + void customGetTest0() { + String path0 = "/test/minimal"; + + assertDoesNotThrow(() -> { + client.customGet(path0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/minimal", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("allow get method for a custom path with all parameters") + void customGetTest1() { + String path0 = "/test/all"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + + assertDoesNotThrow(() -> { + client.customGet(path0, parameters0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/all", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("allow post method for a custom path with minimal parameters") + void customPostTest0() { + String path0 = "/test/minimal"; + + assertDoesNotThrow(() -> { + client.customPost(path0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/minimal", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{}", req.body, JSONCompareMode.STRICT)); + } + + @Test + @DisplayName("allow post method for a custom path with all parameters") + void customPostTest1() { + String path0 = "/test/all"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String body1 = "parameters"; + body0.put("body", body1); + } + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/all", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"body\":\"parameters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions can override default query parameters") + void customPostTest2() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("query", "myQueryParameter"); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"myQueryParameter\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions merges query parameters with default ones") + void customPostTest3() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("query2", "myQueryParameter"); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"parameters\",\"query2\":\"myQueryParameter\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions can override default headers") + void customPostTest4() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraHeader("x-algolia-api-key", "myApiKey"); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + + try { + Map expectedHeaders = json.readValue( + "{\"x-algolia-api-key\":\"myApiKey\"}", + new TypeReference>() {} + ); + Map actualHeaders = req.headers; + + for (Map.Entry p : expectedHeaders.entrySet()) { + assertEquals(p.getValue(), actualHeaders.get(p.getKey())); + } + } catch (JsonProcessingException e) { + fail("failed to parse headers json"); + } + } + + @Test + @DisplayName("requestOptions merges headers with default ones") + void customPostTest5() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraHeader("x-algolia-api-key", "myApiKey"); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + + try { + Map expectedHeaders = json.readValue( + "{\"x-algolia-api-key\":\"myApiKey\"}", + new TypeReference>() {} + ); + Map actualHeaders = req.headers; + + for (Map.Entry p : expectedHeaders.entrySet()) { + assertEquals(p.getValue(), actualHeaders.get(p.getKey())); + } + } catch (JsonProcessingException e) { + fail("failed to parse headers json"); + } + } + + @Test + @DisplayName("requestOptions queryParameters accepts booleans") + void customPostTest6() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("isItWorking", true); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"parameters\",\"isItWorking\":\"true\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions queryParameters accepts integers") + void customPostTest7() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("myParam", 2); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"parameters\",\"myParam\":\"2\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions queryParameters accepts list of string") + void customPostTest8() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("myParam", Arrays.asList("c", "d")); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"parameters\",\"myParam\":\"c,d\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions queryParameters accepts list of booleans") + void customPostTest9() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("myParam", Arrays.asList(true, true, false)); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"parameters\",\"myParam\":\"true,true,false\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions queryParameters accepts list of integers") + void customPostTest10() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("myParam", Arrays.asList(1, 2)); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"parameters\",\"myParam\":\"1,2\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("allow put method for a custom path with minimal parameters") + void customPutTest0() { + String path0 = "/test/minimal"; + + assertDoesNotThrow(() -> { + client.customPut(path0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/minimal", req.path); + assertEquals("PUT", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{}", req.body, JSONCompareMode.STRICT)); + } + + @Test + @DisplayName("allow put method for a custom path with all parameters") + void customPutTest1() { + String path0 = "/test/all"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String body1 = "parameters"; + body0.put("body", body1); + } + + assertDoesNotThrow(() -> { + client.customPut(path0, parameters0, body0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/all", req.path); + assertEquals("PUT", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"body\":\"parameters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("deleteABTest") + void deleteABTestTest0() { + int id0 = 42; + + assertDoesNotThrow(() -> { + client.deleteABTest(id0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/2/abtests/42", req.path); + assertEquals("DELETE", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("getABTest") + void getABTestTest0() { + int id0 = 42; + + assertDoesNotThrow(() -> { + client.getABTest(id0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/2/abtests/42", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("listABTests with minimal parameters") + void listABTestsTest0() { + assertDoesNotThrow(() -> { + client.listABTests(); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/2/abtests", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("listABTests with parameters") + void listABTestsTest1() { + int offset0 = 42; + int limit0 = 21; + String indexPrefix0 = "foo"; + String indexSuffix0 = "bar"; + + assertDoesNotThrow(() -> { + client.listABTests(offset0, limit0, indexPrefix0, indexSuffix0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/2/abtests", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue( + "{\"offset\":\"42\",\"limit\":\"21\",\"indexPrefix\":\"foo\",\"indexSuffix\":\"bar\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("stopABTest") + void stopABTestTest0() { + int id0 = 42; + + assertDoesNotThrow(() -> { + client.stopABTest(id0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/2/abtests/42/stop", req.path); + assertEquals("POST", req.method); + assertEquals("{}", req.body); + } +} diff --git a/tests/output/java/src/test/java/com/algolia/requests/Analytics.test.java b/tests/output/java/src/test/java/com/algolia/requests/Analytics.test.java new file mode 100644 index 0000000000..b40f1f4091 --- /dev/null +++ b/tests/output/java/src/test/java/com/algolia/requests/Analytics.test.java @@ -0,0 +1,1675 @@ +package com.algolia.methods.requests; + +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.fail; + +import com.algolia.EchoInterceptor; +import com.algolia.EchoResponse; +import com.algolia.api.AnalyticsClient; +import com.algolia.config.*; +import com.algolia.model.analytics.*; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.json.JsonMapper; +import java.util.*; +import org.junit.jupiter.api.*; +import org.skyscreamer.jsonassert.JSONAssert; +import org.skyscreamer.jsonassert.JSONCompareMode; + +@TestInstance(TestInstance.Lifecycle.PER_CLASS) +class AnalyticsClientRequestsTests { + + private AnalyticsClient client; + private EchoInterceptor echo; + private ObjectMapper json; + + @BeforeAll + void init() { + this.json = JsonMapper.builder().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false).build(); + this.echo = new EchoInterceptor(); + var options = ClientOptions.builder().setRequesterConfig(requester -> requester.addInterceptor(echo)).build(); + this.client = new AnalyticsClient("appId", "apiKey", "us", options); + } + + @AfterAll + void tearUp() throws Exception { + client.close(); + } + + @Test + @DisplayName("allow del method for a custom path with minimal parameters") + void customDeleteTest0() { + String path0 = "/test/minimal"; + + assertDoesNotThrow(() -> { + client.customDelete(path0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/minimal", req.path); + assertEquals("DELETE", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("allow del method for a custom path with all parameters") + void customDeleteTest1() { + String path0 = "/test/all"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + + assertDoesNotThrow(() -> { + client.customDelete(path0, parameters0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/all", req.path); + assertEquals("DELETE", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("allow get method for a custom path with minimal parameters") + void customGetTest0() { + String path0 = "/test/minimal"; + + assertDoesNotThrow(() -> { + client.customGet(path0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/minimal", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("allow get method for a custom path with all parameters") + void customGetTest1() { + String path0 = "/test/all"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + + assertDoesNotThrow(() -> { + client.customGet(path0, parameters0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/all", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("allow post method for a custom path with minimal parameters") + void customPostTest0() { + String path0 = "/test/minimal"; + + assertDoesNotThrow(() -> { + client.customPost(path0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/minimal", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{}", req.body, JSONCompareMode.STRICT)); + } + + @Test + @DisplayName("allow post method for a custom path with all parameters") + void customPostTest1() { + String path0 = "/test/all"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String body1 = "parameters"; + body0.put("body", body1); + } + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/all", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"body\":\"parameters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions can override default query parameters") + void customPostTest2() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("query", "myQueryParameter"); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"myQueryParameter\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions merges query parameters with default ones") + void customPostTest3() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("query2", "myQueryParameter"); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"parameters\",\"query2\":\"myQueryParameter\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions can override default headers") + void customPostTest4() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraHeader("x-algolia-api-key", "myApiKey"); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + + try { + Map expectedHeaders = json.readValue( + "{\"x-algolia-api-key\":\"myApiKey\"}", + new TypeReference>() {} + ); + Map actualHeaders = req.headers; + + for (Map.Entry p : expectedHeaders.entrySet()) { + assertEquals(p.getValue(), actualHeaders.get(p.getKey())); + } + } catch (JsonProcessingException e) { + fail("failed to parse headers json"); + } + } + + @Test + @DisplayName("requestOptions merges headers with default ones") + void customPostTest5() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraHeader("x-algolia-api-key", "myApiKey"); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + + try { + Map expectedHeaders = json.readValue( + "{\"x-algolia-api-key\":\"myApiKey\"}", + new TypeReference>() {} + ); + Map actualHeaders = req.headers; + + for (Map.Entry p : expectedHeaders.entrySet()) { + assertEquals(p.getValue(), actualHeaders.get(p.getKey())); + } + } catch (JsonProcessingException e) { + fail("failed to parse headers json"); + } + } + + @Test + @DisplayName("requestOptions queryParameters accepts booleans") + void customPostTest6() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("isItWorking", true); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"parameters\",\"isItWorking\":\"true\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions queryParameters accepts integers") + void customPostTest7() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("myParam", 2); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"parameters\",\"myParam\":\"2\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions queryParameters accepts list of string") + void customPostTest8() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("myParam", Arrays.asList("c", "d")); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"parameters\",\"myParam\":\"c,d\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions queryParameters accepts list of booleans") + void customPostTest9() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("myParam", Arrays.asList(true, true, false)); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"parameters\",\"myParam\":\"true,true,false\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions queryParameters accepts list of integers") + void customPostTest10() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("myParam", Arrays.asList(1, 2)); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"parameters\",\"myParam\":\"1,2\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("allow put method for a custom path with minimal parameters") + void customPutTest0() { + String path0 = "/test/minimal"; + + assertDoesNotThrow(() -> { + client.customPut(path0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/minimal", req.path); + assertEquals("PUT", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{}", req.body, JSONCompareMode.STRICT)); + } + + @Test + @DisplayName("allow put method for a custom path with all parameters") + void customPutTest1() { + String path0 = "/test/all"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String body1 = "parameters"; + body0.put("body", body1); + } + + assertDoesNotThrow(() -> { + client.customPut(path0, parameters0, body0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/all", req.path); + assertEquals("PUT", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"body\":\"parameters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("get getAverageClickPosition with minimal parameters") + void getAverageClickPositionTest0() { + String index0 = "index"; + + assertDoesNotThrow(() -> { + client.getAverageClickPosition(index0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/2/clicks/averageClickPosition", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue("{\"index\":\"index\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("get getAverageClickPosition with all parameters") + void getAverageClickPositionTest1() { + String index0 = "index"; + String startDate0 = "1999-09-19"; + String endDate0 = "2001-01-01"; + String tags0 = "tag"; + + assertDoesNotThrow(() -> { + client.getAverageClickPosition(index0, startDate0, endDate0, tags0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/2/clicks/averageClickPosition", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue( + "{\"index\":\"index\",\"startDate\":\"1999-09-19\",\"endDate\":\"2001-01-01\",\"tags\":\"tag\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("get getClickPositions with minimal parameters") + void getClickPositionsTest0() { + String index0 = "index"; + + assertDoesNotThrow(() -> { + client.getClickPositions(index0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/2/clicks/positions", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue("{\"index\":\"index\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("get getClickPositions with all parameters") + void getClickPositionsTest1() { + String index0 = "index"; + String startDate0 = "1999-09-19"; + String endDate0 = "2001-01-01"; + String tags0 = "tag"; + + assertDoesNotThrow(() -> { + client.getClickPositions(index0, startDate0, endDate0, tags0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/2/clicks/positions", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue( + "{\"index\":\"index\",\"startDate\":\"1999-09-19\",\"endDate\":\"2001-01-01\",\"tags\":\"tag\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("get getClickThroughRate with minimal parameters") + void getClickThroughRateTest0() { + String index0 = "index"; + + assertDoesNotThrow(() -> { + client.getClickThroughRate(index0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/2/clicks/clickThroughRate", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue("{\"index\":\"index\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("get getClickThroughRate with all parameters") + void getClickThroughRateTest1() { + String index0 = "index"; + String startDate0 = "1999-09-19"; + String endDate0 = "2001-01-01"; + String tags0 = "tag"; + + assertDoesNotThrow(() -> { + client.getClickThroughRate(index0, startDate0, endDate0, tags0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/2/clicks/clickThroughRate", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue( + "{\"index\":\"index\",\"startDate\":\"1999-09-19\",\"endDate\":\"2001-01-01\",\"tags\":\"tag\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("get getConversationRate with minimal parameters") + void getConversationRateTest0() { + String index0 = "index"; + + assertDoesNotThrow(() -> { + client.getConversationRate(index0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/2/conversions/conversionRate", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue("{\"index\":\"index\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("get getConversationRate with all parameters") + void getConversationRateTest1() { + String index0 = "index"; + String startDate0 = "1999-09-19"; + String endDate0 = "2001-01-01"; + String tags0 = "tag"; + + assertDoesNotThrow(() -> { + client.getConversationRate(index0, startDate0, endDate0, tags0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/2/conversions/conversionRate", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue( + "{\"index\":\"index\",\"startDate\":\"1999-09-19\",\"endDate\":\"2001-01-01\",\"tags\":\"tag\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("get getNoClickRate with minimal parameters") + void getNoClickRateTest0() { + String index0 = "index"; + + assertDoesNotThrow(() -> { + client.getNoClickRate(index0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/2/searches/noClickRate", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue("{\"index\":\"index\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("get getNoClickRate with all parameters") + void getNoClickRateTest1() { + String index0 = "index"; + String startDate0 = "1999-09-19"; + String endDate0 = "2001-01-01"; + String tags0 = "tag"; + + assertDoesNotThrow(() -> { + client.getNoClickRate(index0, startDate0, endDate0, tags0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/2/searches/noClickRate", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue( + "{\"index\":\"index\",\"startDate\":\"1999-09-19\",\"endDate\":\"2001-01-01\",\"tags\":\"tag\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("get getNoResultsRate with minimal parameters") + void getNoResultsRateTest0() { + String index0 = "index"; + + assertDoesNotThrow(() -> { + client.getNoResultsRate(index0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/2/searches/noResultRate", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue("{\"index\":\"index\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("get getNoResultsRate with all parameters") + void getNoResultsRateTest1() { + String index0 = "index"; + String startDate0 = "1999-09-19"; + String endDate0 = "2001-01-01"; + String tags0 = "tag"; + + assertDoesNotThrow(() -> { + client.getNoResultsRate(index0, startDate0, endDate0, tags0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/2/searches/noResultRate", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue( + "{\"index\":\"index\",\"startDate\":\"1999-09-19\",\"endDate\":\"2001-01-01\",\"tags\":\"tag\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("get getSearchesCount with minimal parameters") + void getSearchesCountTest0() { + String index0 = "index"; + + assertDoesNotThrow(() -> { + client.getSearchesCount(index0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/2/searches/count", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue("{\"index\":\"index\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("get getSearchesCount with all parameters") + void getSearchesCountTest1() { + String index0 = "index"; + String startDate0 = "1999-09-19"; + String endDate0 = "2001-01-01"; + String tags0 = "tag"; + + assertDoesNotThrow(() -> { + client.getSearchesCount(index0, startDate0, endDate0, tags0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/2/searches/count", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue( + "{\"index\":\"index\",\"startDate\":\"1999-09-19\",\"endDate\":\"2001-01-01\",\"tags\":\"tag\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("get getSearchesNoClicks with minimal parameters") + void getSearchesNoClicksTest0() { + String index0 = "index"; + + assertDoesNotThrow(() -> { + client.getSearchesNoClicks(index0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/2/searches/noClicks", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue("{\"index\":\"index\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("get getSearchesNoClicks with all parameters") + void getSearchesNoClicksTest1() { + String index0 = "index"; + String startDate0 = "1999-09-19"; + String endDate0 = "2001-01-01"; + int limit0 = 21; + int offset0 = 42; + String tags0 = "tag"; + + assertDoesNotThrow(() -> { + client.getSearchesNoClicks(index0, startDate0, endDate0, limit0, offset0, tags0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/2/searches/noClicks", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue( + "{\"index\":\"index\",\"startDate\":\"1999-09-19\",\"endDate\":\"2001-01-01\",\"limit\":\"21\",\"offset\":\"42\",\"tags\":\"tag\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("get getSearchesNoResults with minimal parameters") + void getSearchesNoResultsTest0() { + String index0 = "index"; + + assertDoesNotThrow(() -> { + client.getSearchesNoResults(index0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/2/searches/noResults", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue("{\"index\":\"index\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("get getSearchesNoResults with all parameters") + void getSearchesNoResultsTest1() { + String index0 = "index"; + String startDate0 = "1999-09-19"; + String endDate0 = "2001-01-01"; + int limit0 = 21; + int offset0 = 42; + String tags0 = "tag"; + + assertDoesNotThrow(() -> { + client.getSearchesNoResults(index0, startDate0, endDate0, limit0, offset0, tags0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/2/searches/noResults", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue( + "{\"index\":\"index\",\"startDate\":\"1999-09-19\",\"endDate\":\"2001-01-01\",\"limit\":\"21\",\"offset\":\"42\",\"tags\":\"tag\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("get getStatus with minimal parameters") + void getStatusTest0() { + String index0 = "index"; + + assertDoesNotThrow(() -> { + client.getStatus(index0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/2/status", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue("{\"index\":\"index\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("get getTopCountries with minimal parameters") + void getTopCountriesTest0() { + String index0 = "index"; + + assertDoesNotThrow(() -> { + client.getTopCountries(index0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/2/countries", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue("{\"index\":\"index\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("get getTopCountries with all parameters") + void getTopCountriesTest1() { + String index0 = "index"; + String startDate0 = "1999-09-19"; + String endDate0 = "2001-01-01"; + int limit0 = 21; + int offset0 = 42; + String tags0 = "tag"; + + assertDoesNotThrow(() -> { + client.getTopCountries(index0, startDate0, endDate0, limit0, offset0, tags0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/2/countries", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue( + "{\"index\":\"index\",\"startDate\":\"1999-09-19\",\"endDate\":\"2001-01-01\",\"limit\":\"21\",\"offset\":\"42\",\"tags\":\"tag\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("get getTopFilterAttributes with minimal parameters") + void getTopFilterAttributesTest0() { + String index0 = "index"; + + assertDoesNotThrow(() -> { + client.getTopFilterAttributes(index0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/2/filters", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue("{\"index\":\"index\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("get getTopFilterAttributes with all parameters") + void getTopFilterAttributesTest1() { + String index0 = "index"; + String search0 = "mySearch"; + String startDate0 = "1999-09-19"; + String endDate0 = "2001-01-01"; + int limit0 = 21; + int offset0 = 42; + String tags0 = "tag"; + + assertDoesNotThrow(() -> { + client.getTopFilterAttributes(index0, search0, startDate0, endDate0, limit0, offset0, tags0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/2/filters", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue( + "{\"index\":\"index\",\"search\":\"mySearch\",\"startDate\":\"1999-09-19\",\"endDate\":\"2001-01-01\",\"limit\":\"21\",\"offset\":\"42\",\"tags\":\"tag\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("get getTopFilterForAttribute with minimal parameters") + void getTopFilterForAttributeTest0() { + String attribute0 = "myAttribute"; + String index0 = "index"; + + assertDoesNotThrow(() -> { + client.getTopFilterForAttribute(attribute0, index0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/2/filters/myAttribute", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue("{\"index\":\"index\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("get getTopFilterForAttribute with minimal parameters and multiple attributes") + void getTopFilterForAttributeTest1() { + String attribute0 = "myAttribute1,myAttribute2"; + String index0 = "index"; + + assertDoesNotThrow(() -> { + client.getTopFilterForAttribute(attribute0, index0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/2/filters/myAttribute1%2CmyAttribute2", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue("{\"index\":\"index\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("get getTopFilterForAttribute with all parameters") + void getTopFilterForAttributeTest2() { + String attribute0 = "myAttribute"; + String index0 = "index"; + String search0 = "mySearch"; + String startDate0 = "1999-09-19"; + String endDate0 = "2001-01-01"; + int limit0 = 21; + int offset0 = 42; + String tags0 = "tag"; + + assertDoesNotThrow(() -> { + client.getTopFilterForAttribute(attribute0, index0, search0, startDate0, endDate0, limit0, offset0, tags0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/2/filters/myAttribute", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue( + "{\"index\":\"index\",\"search\":\"mySearch\",\"startDate\":\"1999-09-19\",\"endDate\":\"2001-01-01\",\"limit\":\"21\",\"offset\":\"42\",\"tags\":\"tag\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("get getTopFilterForAttribute with all parameters and multiple attributes") + void getTopFilterForAttributeTest3() { + String attribute0 = "myAttribute1,myAttribute2"; + String index0 = "index"; + String search0 = "mySearch"; + String startDate0 = "1999-09-19"; + String endDate0 = "2001-01-01"; + int limit0 = 21; + int offset0 = 42; + String tags0 = "tag"; + + assertDoesNotThrow(() -> { + client.getTopFilterForAttribute(attribute0, index0, search0, startDate0, endDate0, limit0, offset0, tags0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/2/filters/myAttribute1%2CmyAttribute2", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue( + "{\"index\":\"index\",\"search\":\"mySearch\",\"startDate\":\"1999-09-19\",\"endDate\":\"2001-01-01\",\"limit\":\"21\",\"offset\":\"42\",\"tags\":\"tag\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("get getTopFiltersNoResults with minimal parameters") + void getTopFiltersNoResultsTest0() { + String index0 = "index"; + + assertDoesNotThrow(() -> { + client.getTopFiltersNoResults(index0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/2/filters/noResults", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue("{\"index\":\"index\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("get getTopFiltersNoResults with all parameters") + void getTopFiltersNoResultsTest1() { + String index0 = "index"; + String search0 = "mySearch"; + String startDate0 = "1999-09-19"; + String endDate0 = "2001-01-01"; + int limit0 = 21; + int offset0 = 42; + String tags0 = "tag"; + + assertDoesNotThrow(() -> { + client.getTopFiltersNoResults(index0, search0, startDate0, endDate0, limit0, offset0, tags0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/2/filters/noResults", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue( + "{\"index\":\"index\",\"search\":\"mySearch\",\"startDate\":\"1999-09-19\",\"endDate\":\"2001-01-01\",\"limit\":\"21\",\"offset\":\"42\",\"tags\":\"tag\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("get getTopHits with minimal parameters") + void getTopHitsTest0() { + String index0 = "index"; + + assertDoesNotThrow(() -> { + client.getTopHits(index0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/2/hits", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue("{\"index\":\"index\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("get getTopHits with all parameters") + void getTopHitsTest1() { + String index0 = "index"; + String search0 = "mySearch"; + boolean clickAnalytics0 = true; + String startDate0 = "1999-09-19"; + String endDate0 = "2001-01-01"; + int limit0 = 21; + int offset0 = 42; + String tags0 = "tag"; + + assertDoesNotThrow(() -> { + client.getTopHits(index0, search0, clickAnalytics0, startDate0, endDate0, limit0, offset0, tags0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/2/hits", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue( + "{\"index\":\"index\",\"search\":\"mySearch\",\"clickAnalytics\":\"true\",\"startDate\":\"1999-09-19\",\"endDate\":\"2001-01-01\",\"limit\":\"21\",\"offset\":\"42\",\"tags\":\"tag\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("get getTopSearches with minimal parameters") + void getTopSearchesTest0() { + String index0 = "index"; + + assertDoesNotThrow(() -> { + client.getTopSearches(index0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/2/searches", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue("{\"index\":\"index\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("get getTopSearches with all parameters") + void getTopSearchesTest1() { + String index0 = "index"; + boolean clickAnalytics0 = true; + String startDate0 = "1999-09-19"; + String endDate0 = "2001-01-01"; + OrderBy orderBy0 = OrderBy.fromValue("searchCount"); + Direction direction0 = Direction.fromValue("asc"); + int limit0 = 21; + int offset0 = 42; + String tags0 = "tag"; + + assertDoesNotThrow(() -> { + client.getTopSearches(index0, clickAnalytics0, startDate0, endDate0, orderBy0, direction0, limit0, offset0, tags0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/2/searches", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue( + "{\"index\":\"index\",\"clickAnalytics\":\"true\",\"startDate\":\"1999-09-19\",\"endDate\":\"2001-01-01\",\"orderBy\":\"searchCount\",\"direction\":\"asc\",\"limit\":\"21\",\"offset\":\"42\",\"tags\":\"tag\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("get getUsersCount with minimal parameters") + void getUsersCountTest0() { + String index0 = "index"; + + assertDoesNotThrow(() -> { + client.getUsersCount(index0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/2/users/count", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue("{\"index\":\"index\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("get getUsersCount with all parameters") + void getUsersCountTest1() { + String index0 = "index"; + String startDate0 = "1999-09-19"; + String endDate0 = "2001-01-01"; + String tags0 = "tag"; + + assertDoesNotThrow(() -> { + client.getUsersCount(index0, startDate0, endDate0, tags0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/2/users/count", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue( + "{\"index\":\"index\",\"startDate\":\"1999-09-19\",\"endDate\":\"2001-01-01\",\"tags\":\"tag\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } +} diff --git a/tests/output/java/src/test/java/com/algolia/requests/Insights.test.java b/tests/output/java/src/test/java/com/algolia/requests/Insights.test.java new file mode 100644 index 0000000000..be6be044da --- /dev/null +++ b/tests/output/java/src/test/java/com/algolia/requests/Insights.test.java @@ -0,0 +1,958 @@ +package com.algolia.methods.requests; + +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.fail; + +import com.algolia.EchoInterceptor; +import com.algolia.EchoResponse; +import com.algolia.api.InsightsClient; +import com.algolia.config.*; +import com.algolia.model.insights.*; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.json.JsonMapper; +import java.util.*; +import org.junit.jupiter.api.*; +import org.skyscreamer.jsonassert.JSONAssert; +import org.skyscreamer.jsonassert.JSONCompareMode; + +@TestInstance(TestInstance.Lifecycle.PER_CLASS) +class InsightsClientRequestsTests { + + private InsightsClient client; + private EchoInterceptor echo; + private ObjectMapper json; + + @BeforeAll + void init() { + this.json = JsonMapper.builder().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false).build(); + this.echo = new EchoInterceptor(); + var options = ClientOptions.builder().setRequesterConfig(requester -> requester.addInterceptor(echo)).build(); + this.client = new InsightsClient("appId", "apiKey", "us", options); + } + + @AfterAll + void tearUp() throws Exception { + client.close(); + } + + @Test + @DisplayName("allow del method for a custom path with minimal parameters") + void customDeleteTest0() { + String path0 = "/test/minimal"; + + assertDoesNotThrow(() -> { + client.customDelete(path0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/minimal", req.path); + assertEquals("DELETE", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("allow del method for a custom path with all parameters") + void customDeleteTest1() { + String path0 = "/test/all"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + + assertDoesNotThrow(() -> { + client.customDelete(path0, parameters0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/all", req.path); + assertEquals("DELETE", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("allow get method for a custom path with minimal parameters") + void customGetTest0() { + String path0 = "/test/minimal"; + + assertDoesNotThrow(() -> { + client.customGet(path0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/minimal", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("allow get method for a custom path with all parameters") + void customGetTest1() { + String path0 = "/test/all"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + + assertDoesNotThrow(() -> { + client.customGet(path0, parameters0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/all", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("allow post method for a custom path with minimal parameters") + void customPostTest0() { + String path0 = "/test/minimal"; + + assertDoesNotThrow(() -> { + client.customPost(path0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/minimal", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{}", req.body, JSONCompareMode.STRICT)); + } + + @Test + @DisplayName("allow post method for a custom path with all parameters") + void customPostTest1() { + String path0 = "/test/all"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String body1 = "parameters"; + body0.put("body", body1); + } + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/all", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"body\":\"parameters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions can override default query parameters") + void customPostTest2() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("query", "myQueryParameter"); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"myQueryParameter\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions merges query parameters with default ones") + void customPostTest3() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("query2", "myQueryParameter"); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"parameters\",\"query2\":\"myQueryParameter\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions can override default headers") + void customPostTest4() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraHeader("x-algolia-api-key", "myApiKey"); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + + try { + Map expectedHeaders = json.readValue( + "{\"x-algolia-api-key\":\"myApiKey\"}", + new TypeReference>() {} + ); + Map actualHeaders = req.headers; + + for (Map.Entry p : expectedHeaders.entrySet()) { + assertEquals(p.getValue(), actualHeaders.get(p.getKey())); + } + } catch (JsonProcessingException e) { + fail("failed to parse headers json"); + } + } + + @Test + @DisplayName("requestOptions merges headers with default ones") + void customPostTest5() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraHeader("x-algolia-api-key", "myApiKey"); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + + try { + Map expectedHeaders = json.readValue( + "{\"x-algolia-api-key\":\"myApiKey\"}", + new TypeReference>() {} + ); + Map actualHeaders = req.headers; + + for (Map.Entry p : expectedHeaders.entrySet()) { + assertEquals(p.getValue(), actualHeaders.get(p.getKey())); + } + } catch (JsonProcessingException e) { + fail("failed to parse headers json"); + } + } + + @Test + @DisplayName("requestOptions queryParameters accepts booleans") + void customPostTest6() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("isItWorking", true); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"parameters\",\"isItWorking\":\"true\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions queryParameters accepts integers") + void customPostTest7() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("myParam", 2); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"parameters\",\"myParam\":\"2\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions queryParameters accepts list of string") + void customPostTest8() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("myParam", Arrays.asList("c", "d")); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"parameters\",\"myParam\":\"c,d\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions queryParameters accepts list of booleans") + void customPostTest9() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("myParam", Arrays.asList(true, true, false)); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"parameters\",\"myParam\":\"true,true,false\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions queryParameters accepts list of integers") + void customPostTest10() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("myParam", Arrays.asList(1, 2)); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"parameters\",\"myParam\":\"1,2\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("allow put method for a custom path with minimal parameters") + void customPutTest0() { + String path0 = "/test/minimal"; + + assertDoesNotThrow(() -> { + client.customPut(path0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/minimal", req.path); + assertEquals("PUT", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{}", req.body, JSONCompareMode.STRICT)); + } + + @Test + @DisplayName("allow put method for a custom path with all parameters") + void customPutTest1() { + String path0 = "/test/all"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String body1 = "parameters"; + body0.put("body", body1); + } + + assertDoesNotThrow(() -> { + client.customPut(path0, parameters0, body0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/all", req.path); + assertEquals("PUT", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"body\":\"parameters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("pushEvents0") + void pushEventsTest0() { + InsightsEvents insightsEvents0 = new InsightsEvents(); + { + List events1 = new ArrayList<>(); + { + ClickedObjectIDsAfterSearch events_02 = new ClickedObjectIDsAfterSearch(); + { + ClickEvent eventType3 = ClickEvent.fromValue("click"); + events_02.setEventType(eventType3); + String eventName3 = "Product Clicked"; + events_02.setEventName(eventName3); + String index3 = "products"; + events_02.setIndex(index3); + String userToken3 = "user-123456"; + events_02.setUserToken(userToken3); + String authenticatedUserToken3 = "user-123456"; + events_02.setAuthenticatedUserToken(authenticatedUserToken3); + long timestamp3 = 1641290601962L; + events_02.setTimestamp(timestamp3); + List objectIDs3 = new ArrayList<>(); + { + String objectIDs_04 = "9780545139700"; + objectIDs3.add(objectIDs_04); + String objectIDs_14 = "9780439784542"; + objectIDs3.add(objectIDs_14); + } + events_02.setObjectIDs(objectIDs3); + String queryID3 = "43b15df305339e827f0ac0bdc5ebcaa7"; + events_02.setQueryID(queryID3); + List positions3 = new ArrayList<>(); + { + int positions_04 = 7; + positions3.add(positions_04); + int positions_14 = 6; + positions3.add(positions_14); + } + events_02.setPositions(positions3); + } + events1.add(events_02); + } + insightsEvents0.setEvents(events1); + } + + assertDoesNotThrow(() -> { + client.pushEvents(insightsEvents0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/events", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals( + "{\"events\":[{\"eventType\":\"click\",\"eventName\":\"Product" + + " Clicked\",\"index\":\"products\",\"userToken\":\"user-123456\",\"authenticatedUserToken\":\"user-123456\",\"timestamp\":1641290601962,\"objectIDs\":[\"9780545139700\",\"9780439784542\"],\"queryID\":\"43b15df305339e827f0ac0bdc5ebcaa7\",\"positions\":[7,6]}]}", + req.body, + JSONCompareMode.STRICT + ) + ); + } + + @Test + @DisplayName("Many events type") + void pushEventsTest1() { + InsightsEvents insightsEvents0 = new InsightsEvents(); + { + List events1 = new ArrayList<>(); + { + ConvertedObjectIDsAfterSearch events_02 = new ConvertedObjectIDsAfterSearch(); + { + ConversionEvent eventType3 = ConversionEvent.fromValue("conversion"); + events_02.setEventType(eventType3); + String eventName3 = "Product Purchased"; + events_02.setEventName(eventName3); + String index3 = "products"; + events_02.setIndex(index3); + String userToken3 = "user-123456"; + events_02.setUserToken(userToken3); + String authenticatedUserToken3 = "user-123456"; + events_02.setAuthenticatedUserToken(authenticatedUserToken3); + long timestamp3 = 1641290601962L; + events_02.setTimestamp(timestamp3); + List objectIDs3 = new ArrayList<>(); + { + String objectIDs_04 = "9780545139700"; + objectIDs3.add(objectIDs_04); + String objectIDs_14 = "9780439784542"; + objectIDs3.add(objectIDs_14); + } + events_02.setObjectIDs(objectIDs3); + String queryID3 = "43b15df305339e827f0ac0bdc5ebcaa7"; + events_02.setQueryID(queryID3); + } + events1.add(events_02); + ViewedObjectIDs events_12 = new ViewedObjectIDs(); + { + ViewEvent eventType3 = ViewEvent.fromValue("view"); + events_12.setEventType(eventType3); + String eventName3 = "Product Detail Page Viewed"; + events_12.setEventName(eventName3); + String index3 = "products"; + events_12.setIndex(index3); + String userToken3 = "user-123456"; + events_12.setUserToken(userToken3); + String authenticatedUserToken3 = "user-123456"; + events_12.setAuthenticatedUserToken(authenticatedUserToken3); + long timestamp3 = 1641290601962L; + events_12.setTimestamp(timestamp3); + List objectIDs3 = new ArrayList<>(); + { + String objectIDs_04 = "9780545139700"; + objectIDs3.add(objectIDs_04); + String objectIDs_14 = "9780439784542"; + objectIDs3.add(objectIDs_14); + } + events_12.setObjectIDs(objectIDs3); + } + events1.add(events_12); + } + insightsEvents0.setEvents(events1); + } + + assertDoesNotThrow(() -> { + client.pushEvents(insightsEvents0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/events", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals( + "{\"events\":[{\"eventType\":\"conversion\",\"eventName\":\"Product" + + " Purchased\",\"index\":\"products\",\"userToken\":\"user-123456\",\"authenticatedUserToken\":\"user-123456\",\"timestamp\":1641290601962,\"objectIDs\":[\"9780545139700\",\"9780439784542\"],\"queryID\":\"43b15df305339e827f0ac0bdc5ebcaa7\"},{\"eventType\":\"view\",\"eventName\":\"Product" + + " Detail Page" + + " Viewed\",\"index\":\"products\",\"userToken\":\"user-123456\",\"authenticatedUserToken\":\"user-123456\",\"timestamp\":1641290601962,\"objectIDs\":[\"9780545139700\",\"9780439784542\"]}]}", + req.body, + JSONCompareMode.STRICT + ) + ); + } + + @Test + @DisplayName("ConvertedObjectIDsAfterSearch") + void pushEventsTest2() { + InsightsEvents insightsEvents0 = new InsightsEvents(); + { + List events1 = new ArrayList<>(); + { + ConvertedObjectIDsAfterSearch events_02 = new ConvertedObjectIDsAfterSearch(); + { + ConversionEvent eventType3 = ConversionEvent.fromValue("conversion"); + events_02.setEventType(eventType3); + String eventName3 = "Product Purchased"; + events_02.setEventName(eventName3); + String index3 = "products"; + events_02.setIndex(index3); + String userToken3 = "user-123456"; + events_02.setUserToken(userToken3); + String authenticatedUserToken3 = "user-123456"; + events_02.setAuthenticatedUserToken(authenticatedUserToken3); + long timestamp3 = 1641290601962L; + events_02.setTimestamp(timestamp3); + List objectIDs3 = new ArrayList<>(); + { + String objectIDs_04 = "9780545139700"; + objectIDs3.add(objectIDs_04); + String objectIDs_14 = "9780439784542"; + objectIDs3.add(objectIDs_14); + } + events_02.setObjectIDs(objectIDs3); + String queryID3 = "43b15df305339e827f0ac0bdc5ebcaa7"; + events_02.setQueryID(queryID3); + } + events1.add(events_02); + } + insightsEvents0.setEvents(events1); + } + + assertDoesNotThrow(() -> { + client.pushEvents(insightsEvents0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/events", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals( + "{\"events\":[{\"eventType\":\"conversion\",\"eventName\":\"Product" + + " Purchased\",\"index\":\"products\",\"userToken\":\"user-123456\",\"authenticatedUserToken\":\"user-123456\",\"timestamp\":1641290601962,\"objectIDs\":[\"9780545139700\",\"9780439784542\"],\"queryID\":\"43b15df305339e827f0ac0bdc5ebcaa7\"}]}", + req.body, + JSONCompareMode.STRICT + ) + ); + } + + @Test + @DisplayName("ViewedObjectIDs") + void pushEventsTest3() { + InsightsEvents insightsEvents0 = new InsightsEvents(); + { + List events1 = new ArrayList<>(); + { + ViewedObjectIDs events_02 = new ViewedObjectIDs(); + { + ViewEvent eventType3 = ViewEvent.fromValue("view"); + events_02.setEventType(eventType3); + String eventName3 = "Product Detail Page Viewed"; + events_02.setEventName(eventName3); + String index3 = "products"; + events_02.setIndex(index3); + String userToken3 = "user-123456"; + events_02.setUserToken(userToken3); + String authenticatedUserToken3 = "user-123456"; + events_02.setAuthenticatedUserToken(authenticatedUserToken3); + long timestamp3 = 1641290601962L; + events_02.setTimestamp(timestamp3); + List objectIDs3 = new ArrayList<>(); + { + String objectIDs_04 = "9780545139700"; + objectIDs3.add(objectIDs_04); + String objectIDs_14 = "9780439784542"; + objectIDs3.add(objectIDs_14); + } + events_02.setObjectIDs(objectIDs3); + } + events1.add(events_02); + } + insightsEvents0.setEvents(events1); + } + + assertDoesNotThrow(() -> { + client.pushEvents(insightsEvents0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/events", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals( + "{\"events\":[{\"eventType\":\"view\",\"eventName\":\"Product Detail Page" + + " Viewed\",\"index\":\"products\",\"userToken\":\"user-123456\",\"authenticatedUserToken\":\"user-123456\",\"timestamp\":1641290601962,\"objectIDs\":[\"9780545139700\",\"9780439784542\"]}]}", + req.body, + JSONCompareMode.STRICT + ) + ); + } + + @Test + @DisplayName("AddedToCartObjectIDs") + void pushEventsTest4() { + InsightsEvents insightsEvents0 = new InsightsEvents(); + { + List events1 = new ArrayList<>(); + { + AddedToCartObjectIDsAfterSearch events_02 = new AddedToCartObjectIDsAfterSearch(); + { + ConversionEvent eventType3 = ConversionEvent.fromValue("conversion"); + events_02.setEventType(eventType3); + AddToCartEvent eventSubtype3 = AddToCartEvent.fromValue("addToCart"); + events_02.setEventSubtype(eventSubtype3); + String eventName3 = "Product Added To Cart"; + events_02.setEventName(eventName3); + String index3 = "products"; + events_02.setIndex(index3); + String queryID3 = "43b15df305339e827f0ac0bdc5ebcaa7"; + events_02.setQueryID(queryID3); + String userToken3 = "user-123456"; + events_02.setUserToken(userToken3); + String authenticatedUserToken3 = "user-123456"; + events_02.setAuthenticatedUserToken(authenticatedUserToken3); + long timestamp3 = 1641290601962L; + events_02.setTimestamp(timestamp3); + List objectIDs3 = new ArrayList<>(); + { + String objectIDs_04 = "9780545139700"; + objectIDs3.add(objectIDs_04); + String objectIDs_14 = "9780439784542"; + objectIDs3.add(objectIDs_14); + } + events_02.setObjectIDs(objectIDs3); + List objectData3 = new ArrayList<>(); + { + ObjectDataAfterSearch objectData_04 = new ObjectDataAfterSearch(); + { + double price5 = 19.99; + objectData_04.setPrice(Price.of(price5)); + int quantity5 = 10; + objectData_04.setQuantity(quantity5); + double discount5 = 2.5; + objectData_04.setDiscount(Discount.of(discount5)); + } + objectData3.add(objectData_04); + ObjectDataAfterSearch objectData_14 = new ObjectDataAfterSearch(); + { + String price5 = "8$"; + objectData_14.setPrice(Price.of(price5)); + int quantity5 = 7; + objectData_14.setQuantity(quantity5); + String discount5 = "30%"; + objectData_14.setDiscount(Discount.of(discount5)); + } + objectData3.add(objectData_14); + } + events_02.setObjectData(objectData3); + String currency3 = "USD"; + events_02.setCurrency(currency3); + } + events1.add(events_02); + } + insightsEvents0.setEvents(events1); + } + + assertDoesNotThrow(() -> { + client.pushEvents(insightsEvents0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/events", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals( + "{\"events\":[{\"eventType\":\"conversion\",\"eventSubtype\":\"addToCart\",\"eventName\":\"Product" + + " Added To" + + " Cart\",\"index\":\"products\",\"queryID\":\"43b15df305339e827f0ac0bdc5ebcaa7\",\"userToken\":\"user-123456\",\"authenticatedUserToken\":\"user-123456\",\"timestamp\":1641290601962,\"objectIDs\":[\"9780545139700\",\"9780439784542\"],\"objectData\":[{\"price\":19.99,\"quantity\":10,\"discount\":2.5},{\"price\":\"8$\",\"quantity\":7,\"discount\":\"30%\"}],\"currency\":\"USD\"}]}", + req.body, + JSONCompareMode.STRICT + ) + ); + } +} diff --git a/tests/output/java/src/test/java/com/algolia/requests/Monitoring.test.java b/tests/output/java/src/test/java/com/algolia/requests/Monitoring.test.java new file mode 100644 index 0000000000..bfc3b65f26 --- /dev/null +++ b/tests/output/java/src/test/java/com/algolia/requests/Monitoring.test.java @@ -0,0 +1,753 @@ +package com.algolia.methods.requests; + +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.fail; + +import com.algolia.EchoInterceptor; +import com.algolia.EchoResponse; +import com.algolia.api.MonitoringClient; +import com.algolia.config.*; +import com.algolia.model.monitoring.*; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.json.JsonMapper; +import java.util.*; +import org.junit.jupiter.api.*; +import org.skyscreamer.jsonassert.JSONAssert; +import org.skyscreamer.jsonassert.JSONCompareMode; + +@TestInstance(TestInstance.Lifecycle.PER_CLASS) +class MonitoringClientRequestsTests { + + private MonitoringClient client; + private EchoInterceptor echo; + private ObjectMapper json; + + @BeforeAll + void init() { + this.json = JsonMapper.builder().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false).build(); + this.echo = new EchoInterceptor(); + var options = ClientOptions.builder().setRequesterConfig(requester -> requester.addInterceptor(echo)).build(); + this.client = new MonitoringClient("appId", "apiKey", options); + } + + @AfterAll + void tearUp() throws Exception { + client.close(); + } + + @Test + @DisplayName("allow del method for a custom path with minimal parameters") + void customDeleteTest0() { + String path0 = "/test/minimal"; + + assertDoesNotThrow(() -> { + client.customDelete(path0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/minimal", req.path); + assertEquals("DELETE", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("allow del method for a custom path with all parameters") + void customDeleteTest1() { + String path0 = "/test/all"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + + assertDoesNotThrow(() -> { + client.customDelete(path0, parameters0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/all", req.path); + assertEquals("DELETE", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("allow get method for a custom path with minimal parameters") + void customGetTest0() { + String path0 = "/test/minimal"; + + assertDoesNotThrow(() -> { + client.customGet(path0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/minimal", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("allow get method for a custom path with all parameters") + void customGetTest1() { + String path0 = "/test/all"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + + assertDoesNotThrow(() -> { + client.customGet(path0, parameters0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/all", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("allow post method for a custom path with minimal parameters") + void customPostTest0() { + String path0 = "/test/minimal"; + + assertDoesNotThrow(() -> { + client.customPost(path0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/minimal", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{}", req.body, JSONCompareMode.STRICT)); + } + + @Test + @DisplayName("allow post method for a custom path with all parameters") + void customPostTest1() { + String path0 = "/test/all"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String body1 = "parameters"; + body0.put("body", body1); + } + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/all", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"body\":\"parameters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions can override default query parameters") + void customPostTest2() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("query", "myQueryParameter"); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"myQueryParameter\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions merges query parameters with default ones") + void customPostTest3() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("query2", "myQueryParameter"); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"parameters\",\"query2\":\"myQueryParameter\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions can override default headers") + void customPostTest4() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraHeader("x-algolia-api-key", "myApiKey"); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + + try { + Map expectedHeaders = json.readValue( + "{\"x-algolia-api-key\":\"myApiKey\"}", + new TypeReference>() {} + ); + Map actualHeaders = req.headers; + + for (Map.Entry p : expectedHeaders.entrySet()) { + assertEquals(p.getValue(), actualHeaders.get(p.getKey())); + } + } catch (JsonProcessingException e) { + fail("failed to parse headers json"); + } + } + + @Test + @DisplayName("requestOptions merges headers with default ones") + void customPostTest5() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraHeader("x-algolia-api-key", "myApiKey"); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + + try { + Map expectedHeaders = json.readValue( + "{\"x-algolia-api-key\":\"myApiKey\"}", + new TypeReference>() {} + ); + Map actualHeaders = req.headers; + + for (Map.Entry p : expectedHeaders.entrySet()) { + assertEquals(p.getValue(), actualHeaders.get(p.getKey())); + } + } catch (JsonProcessingException e) { + fail("failed to parse headers json"); + } + } + + @Test + @DisplayName("requestOptions queryParameters accepts booleans") + void customPostTest6() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("isItWorking", true); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"parameters\",\"isItWorking\":\"true\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions queryParameters accepts integers") + void customPostTest7() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("myParam", 2); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"parameters\",\"myParam\":\"2\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions queryParameters accepts list of string") + void customPostTest8() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("myParam", Arrays.asList("c", "d")); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"parameters\",\"myParam\":\"c,d\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions queryParameters accepts list of booleans") + void customPostTest9() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("myParam", Arrays.asList(true, true, false)); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"parameters\",\"myParam\":\"true,true,false\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions queryParameters accepts list of integers") + void customPostTest10() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("myParam", Arrays.asList(1, 2)); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"parameters\",\"myParam\":\"1,2\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("allow put method for a custom path with minimal parameters") + void customPutTest0() { + String path0 = "/test/minimal"; + + assertDoesNotThrow(() -> { + client.customPut(path0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/minimal", req.path); + assertEquals("PUT", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{}", req.body, JSONCompareMode.STRICT)); + } + + @Test + @DisplayName("allow put method for a custom path with all parameters") + void customPutTest1() { + String path0 = "/test/all"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String body1 = "parameters"; + body0.put("body", body1); + } + + assertDoesNotThrow(() -> { + client.customPut(path0, parameters0, body0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/all", req.path); + assertEquals("PUT", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"body\":\"parameters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("getClusterIncidents") + void getClusterIncidentsTest0() { + String clusters0 = "c1-de"; + + assertDoesNotThrow(() -> { + client.getClusterIncidents(clusters0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/incidents/c1-de", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("getClusterStatus") + void getClusterStatusTest0() { + String clusters0 = "c1-de"; + + assertDoesNotThrow(() -> { + client.getClusterStatus(clusters0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/status/c1-de", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("getIncidents") + void getIncidentsTest0() { + assertDoesNotThrow(() -> { + client.getIncidents(); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/incidents", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("getIndexingTime") + void getIndexingTimeTest0() { + String clusters0 = "c1-de"; + + assertDoesNotThrow(() -> { + client.getIndexingTime(clusters0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexing/c1-de", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("getInventory") + void getInventoryTest0() { + assertDoesNotThrow(() -> { + client.getInventory(); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/inventory/servers", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("getLatency") + void getLatencyTest0() { + String clusters0 = "c1-de"; + + assertDoesNotThrow(() -> { + client.getLatency(clusters0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/latency/c1-de", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("getMetrics") + void getMetricsTest0() { + Metric metric0 = Metric.fromValue("avg_build_time"); + Period period0 = Period.fromValue("minute"); + + assertDoesNotThrow(() -> { + client.getMetrics(metric0, period0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/infrastructure/avg_build_time/period/minute", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("getReachability") + void getReachabilityTest0() { + String clusters0 = "c1-de"; + + assertDoesNotThrow(() -> { + client.getReachability(clusters0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/reachability/c1-de/probes", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("getStatus") + void getStatusTest0() { + assertDoesNotThrow(() -> { + client.getStatus(); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/status", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + } +} diff --git a/tests/output/java/src/test/java/com/algolia/requests/Personalization.test.java b/tests/output/java/src/test/java/com/algolia/requests/Personalization.test.java new file mode 100644 index 0000000000..435b8e83bb --- /dev/null +++ b/tests/output/java/src/test/java/com/algolia/requests/Personalization.test.java @@ -0,0 +1,722 @@ +package com.algolia.methods.requests; + +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.fail; + +import com.algolia.EchoInterceptor; +import com.algolia.EchoResponse; +import com.algolia.api.PersonalizationClient; +import com.algolia.config.*; +import com.algolia.model.personalization.*; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.json.JsonMapper; +import java.util.*; +import org.junit.jupiter.api.*; +import org.skyscreamer.jsonassert.JSONAssert; +import org.skyscreamer.jsonassert.JSONCompareMode; + +@TestInstance(TestInstance.Lifecycle.PER_CLASS) +class PersonalizationClientRequestsTests { + + private PersonalizationClient client; + private EchoInterceptor echo; + private ObjectMapper json; + + @BeforeAll + void init() { + this.json = JsonMapper.builder().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false).build(); + this.echo = new EchoInterceptor(); + var options = ClientOptions.builder().setRequesterConfig(requester -> requester.addInterceptor(echo)).build(); + this.client = new PersonalizationClient("appId", "apiKey", "us", options); + } + + @AfterAll + void tearUp() throws Exception { + client.close(); + } + + @Test + @DisplayName("allow del method for a custom path with minimal parameters") + void customDeleteTest0() { + String path0 = "/test/minimal"; + + assertDoesNotThrow(() -> { + client.customDelete(path0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/minimal", req.path); + assertEquals("DELETE", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("allow del method for a custom path with all parameters") + void customDeleteTest1() { + String path0 = "/test/all"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + + assertDoesNotThrow(() -> { + client.customDelete(path0, parameters0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/all", req.path); + assertEquals("DELETE", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("allow get method for a custom path with minimal parameters") + void customGetTest0() { + String path0 = "/test/minimal"; + + assertDoesNotThrow(() -> { + client.customGet(path0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/minimal", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("allow get method for a custom path with all parameters") + void customGetTest1() { + String path0 = "/test/all"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + + assertDoesNotThrow(() -> { + client.customGet(path0, parameters0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/all", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("allow post method for a custom path with minimal parameters") + void customPostTest0() { + String path0 = "/test/minimal"; + + assertDoesNotThrow(() -> { + client.customPost(path0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/minimal", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{}", req.body, JSONCompareMode.STRICT)); + } + + @Test + @DisplayName("allow post method for a custom path with all parameters") + void customPostTest1() { + String path0 = "/test/all"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String body1 = "parameters"; + body0.put("body", body1); + } + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/all", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"body\":\"parameters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions can override default query parameters") + void customPostTest2() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("query", "myQueryParameter"); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"myQueryParameter\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions merges query parameters with default ones") + void customPostTest3() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("query2", "myQueryParameter"); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"parameters\",\"query2\":\"myQueryParameter\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions can override default headers") + void customPostTest4() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraHeader("x-algolia-api-key", "myApiKey"); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + + try { + Map expectedHeaders = json.readValue( + "{\"x-algolia-api-key\":\"myApiKey\"}", + new TypeReference>() {} + ); + Map actualHeaders = req.headers; + + for (Map.Entry p : expectedHeaders.entrySet()) { + assertEquals(p.getValue(), actualHeaders.get(p.getKey())); + } + } catch (JsonProcessingException e) { + fail("failed to parse headers json"); + } + } + + @Test + @DisplayName("requestOptions merges headers with default ones") + void customPostTest5() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraHeader("x-algolia-api-key", "myApiKey"); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + + try { + Map expectedHeaders = json.readValue( + "{\"x-algolia-api-key\":\"myApiKey\"}", + new TypeReference>() {} + ); + Map actualHeaders = req.headers; + + for (Map.Entry p : expectedHeaders.entrySet()) { + assertEquals(p.getValue(), actualHeaders.get(p.getKey())); + } + } catch (JsonProcessingException e) { + fail("failed to parse headers json"); + } + } + + @Test + @DisplayName("requestOptions queryParameters accepts booleans") + void customPostTest6() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("isItWorking", true); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"parameters\",\"isItWorking\":\"true\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions queryParameters accepts integers") + void customPostTest7() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("myParam", 2); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"parameters\",\"myParam\":\"2\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions queryParameters accepts list of string") + void customPostTest8() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("myParam", Arrays.asList("c", "d")); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"parameters\",\"myParam\":\"c,d\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions queryParameters accepts list of booleans") + void customPostTest9() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("myParam", Arrays.asList(true, true, false)); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"parameters\",\"myParam\":\"true,true,false\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions queryParameters accepts list of integers") + void customPostTest10() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("myParam", Arrays.asList(1, 2)); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"parameters\",\"myParam\":\"1,2\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("allow put method for a custom path with minimal parameters") + void customPutTest0() { + String path0 = "/test/minimal"; + + assertDoesNotThrow(() -> { + client.customPut(path0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/minimal", req.path); + assertEquals("PUT", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{}", req.body, JSONCompareMode.STRICT)); + } + + @Test + @DisplayName("allow put method for a custom path with all parameters") + void customPutTest1() { + String path0 = "/test/all"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String body1 = "parameters"; + body0.put("body", body1); + } + + assertDoesNotThrow(() -> { + client.customPut(path0, parameters0, body0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/all", req.path); + assertEquals("PUT", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"body\":\"parameters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("delete deleteUserProfile") + void deleteUserProfileTest0() { + String userToken0 = "UserToken"; + + assertDoesNotThrow(() -> { + client.deleteUserProfile(userToken0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/profiles/UserToken", req.path); + assertEquals("DELETE", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("get getPersonalizationStrategy") + void getPersonalizationStrategyTest0() { + assertDoesNotThrow(() -> { + client.getPersonalizationStrategy(); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/strategies/personalization", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("get getUserTokenProfile") + void getUserTokenProfileTest0() { + String userToken0 = "UserToken"; + + assertDoesNotThrow(() -> { + client.getUserTokenProfile(userToken0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/profiles/personalization/UserToken", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("set setPersonalizationStrategy") + void setPersonalizationStrategyTest0() { + PersonalizationStrategyParams personalizationStrategyParams0 = new PersonalizationStrategyParams(); + { + List eventScoring1 = new ArrayList<>(); + { + EventScoring eventScoring_02 = new EventScoring(); + { + int score3 = 42; + eventScoring_02.setScore(score3); + String eventName3 = "Algolia"; + eventScoring_02.setEventName(eventName3); + String eventType3 = "Event"; + eventScoring_02.setEventType(eventType3); + } + eventScoring1.add(eventScoring_02); + } + personalizationStrategyParams0.setEventScoring(eventScoring1); + List facetScoring1 = new ArrayList<>(); + { + FacetScoring facetScoring_02 = new FacetScoring(); + { + int score3 = 42; + facetScoring_02.setScore(score3); + String facetName3 = "Event"; + facetScoring_02.setFacetName(facetName3); + } + facetScoring1.add(facetScoring_02); + } + personalizationStrategyParams0.setFacetScoring(facetScoring1); + int personalizationImpact1 = 42; + personalizationStrategyParams0.setPersonalizationImpact(personalizationImpact1); + } + + assertDoesNotThrow(() -> { + client.setPersonalizationStrategy(personalizationStrategyParams0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/strategies/personalization", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals( + "{\"eventScoring\":[{\"score\":42,\"eventName\":\"Algolia\",\"eventType\":\"Event\"}],\"facetScoring\":[{\"score\":42,\"facetName\":\"Event\"}],\"personalizationImpact\":42}", + req.body, + JSONCompareMode.STRICT + ) + ); + } +} diff --git a/tests/output/java/src/test/java/com/algolia/requests/QuerySuggestions.test.java b/tests/output/java/src/test/java/com/algolia/requests/QuerySuggestions.test.java new file mode 100644 index 0000000000..992c51511d --- /dev/null +++ b/tests/output/java/src/test/java/com/algolia/requests/QuerySuggestions.test.java @@ -0,0 +1,847 @@ +package com.algolia.methods.requests; + +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.fail; + +import com.algolia.EchoInterceptor; +import com.algolia.EchoResponse; +import com.algolia.api.QuerySuggestionsClient; +import com.algolia.config.*; +import com.algolia.model.querysuggestions.*; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.json.JsonMapper; +import java.util.*; +import org.junit.jupiter.api.*; +import org.skyscreamer.jsonassert.JSONAssert; +import org.skyscreamer.jsonassert.JSONCompareMode; + +@TestInstance(TestInstance.Lifecycle.PER_CLASS) +class QuerySuggestionsClientRequestsTests { + + private QuerySuggestionsClient client; + private EchoInterceptor echo; + private ObjectMapper json; + + @BeforeAll + void init() { + this.json = JsonMapper.builder().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false).build(); + this.echo = new EchoInterceptor(); + var options = ClientOptions.builder().setRequesterConfig(requester -> requester.addInterceptor(echo)).build(); + this.client = new QuerySuggestionsClient("appId", "apiKey", "us", options); + } + + @AfterAll + void tearUp() throws Exception { + client.close(); + } + + @Test + @DisplayName("createConfig0") + void createConfigTest0() { + QuerySuggestionsConfigurationWithIndex querySuggestionsConfigurationWithIndex0 = new QuerySuggestionsConfigurationWithIndex(); + { + String indexName1 = "theIndexName"; + querySuggestionsConfigurationWithIndex0.setIndexName(indexName1); + List sourceIndices1 = new ArrayList<>(); + { + SourceIndex sourceIndices_02 = new SourceIndex(); + { + String indexName3 = "testIndex"; + sourceIndices_02.setIndexName(indexName3); + List facets3 = new ArrayList<>(); + { + Facet facets_04 = new Facet(); + { + String attribute5 = "test"; + facets_04.setAttribute(attribute5); + } + facets3.add(facets_04); + } + sourceIndices_02.setFacets(facets3); + List> generate3 = new ArrayList<>(); + { + List generate_04 = new ArrayList<>(); + { + String generate_0_05 = "facetA"; + generate_04.add(generate_0_05); + String generate_0_15 = "facetB"; + generate_04.add(generate_0_15); + } + generate3.add(generate_04); + List generate_14 = new ArrayList<>(); + { + String generate_1_05 = "facetC"; + generate_14.add(generate_1_05); + } + generate3.add(generate_14); + } + sourceIndices_02.setGenerate(generate3); + } + sourceIndices1.add(sourceIndices_02); + } + querySuggestionsConfigurationWithIndex0.setSourceIndices(sourceIndices1); + List languages1 = new ArrayList<>(); + { + String languages_02 = "french"; + languages1.add(languages_02); + } + querySuggestionsConfigurationWithIndex0.setLanguages(Languages.of(languages1)); + List exclude1 = new ArrayList<>(); + { + String exclude_02 = "test"; + exclude1.add(exclude_02); + } + querySuggestionsConfigurationWithIndex0.setExclude(exclude1); + } + + assertDoesNotThrow(() -> { + client.createConfig(querySuggestionsConfigurationWithIndex0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/configs", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals( + "{\"indexName\":\"theIndexName\",\"sourceIndices\":[{\"indexName\":\"testIndex\",\"facets\":[{\"attribute\":\"test\"}],\"generate\":[[\"facetA\",\"facetB\"],[\"facetC\"]]}],\"languages\":[\"french\"],\"exclude\":[\"test\"]}", + req.body, + JSONCompareMode.STRICT + ) + ); + } + + @Test + @DisplayName("allow del method for a custom path with minimal parameters") + void customDeleteTest0() { + String path0 = "/test/minimal"; + + assertDoesNotThrow(() -> { + client.customDelete(path0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/minimal", req.path); + assertEquals("DELETE", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("allow del method for a custom path with all parameters") + void customDeleteTest1() { + String path0 = "/test/all"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + + assertDoesNotThrow(() -> { + client.customDelete(path0, parameters0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/all", req.path); + assertEquals("DELETE", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("allow get method for a custom path with minimal parameters") + void customGetTest0() { + String path0 = "/test/minimal"; + + assertDoesNotThrow(() -> { + client.customGet(path0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/minimal", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("allow get method for a custom path with all parameters") + void customGetTest1() { + String path0 = "/test/all"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + + assertDoesNotThrow(() -> { + client.customGet(path0, parameters0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/all", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("allow post method for a custom path with minimal parameters") + void customPostTest0() { + String path0 = "/test/minimal"; + + assertDoesNotThrow(() -> { + client.customPost(path0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/minimal", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{}", req.body, JSONCompareMode.STRICT)); + } + + @Test + @DisplayName("allow post method for a custom path with all parameters") + void customPostTest1() { + String path0 = "/test/all"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String body1 = "parameters"; + body0.put("body", body1); + } + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/all", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"body\":\"parameters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions can override default query parameters") + void customPostTest2() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("query", "myQueryParameter"); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"myQueryParameter\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions merges query parameters with default ones") + void customPostTest3() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("query2", "myQueryParameter"); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"parameters\",\"query2\":\"myQueryParameter\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions can override default headers") + void customPostTest4() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraHeader("x-algolia-api-key", "myApiKey"); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + + try { + Map expectedHeaders = json.readValue( + "{\"x-algolia-api-key\":\"myApiKey\"}", + new TypeReference>() {} + ); + Map actualHeaders = req.headers; + + for (Map.Entry p : expectedHeaders.entrySet()) { + assertEquals(p.getValue(), actualHeaders.get(p.getKey())); + } + } catch (JsonProcessingException e) { + fail("failed to parse headers json"); + } + } + + @Test + @DisplayName("requestOptions merges headers with default ones") + void customPostTest5() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraHeader("x-algolia-api-key", "myApiKey"); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + + try { + Map expectedHeaders = json.readValue( + "{\"x-algolia-api-key\":\"myApiKey\"}", + new TypeReference>() {} + ); + Map actualHeaders = req.headers; + + for (Map.Entry p : expectedHeaders.entrySet()) { + assertEquals(p.getValue(), actualHeaders.get(p.getKey())); + } + } catch (JsonProcessingException e) { + fail("failed to parse headers json"); + } + } + + @Test + @DisplayName("requestOptions queryParameters accepts booleans") + void customPostTest6() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("isItWorking", true); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"parameters\",\"isItWorking\":\"true\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions queryParameters accepts integers") + void customPostTest7() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("myParam", 2); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"parameters\",\"myParam\":\"2\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions queryParameters accepts list of string") + void customPostTest8() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("myParam", Arrays.asList("c", "d")); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"parameters\",\"myParam\":\"c,d\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions queryParameters accepts list of booleans") + void customPostTest9() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("myParam", Arrays.asList(true, true, false)); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"parameters\",\"myParam\":\"true,true,false\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions queryParameters accepts list of integers") + void customPostTest10() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("myParam", Arrays.asList(1, 2)); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"parameters\",\"myParam\":\"1,2\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("allow put method for a custom path with minimal parameters") + void customPutTest0() { + String path0 = "/test/minimal"; + + assertDoesNotThrow(() -> { + client.customPut(path0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/minimal", req.path); + assertEquals("PUT", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{}", req.body, JSONCompareMode.STRICT)); + } + + @Test + @DisplayName("allow put method for a custom path with all parameters") + void customPutTest1() { + String path0 = "/test/all"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String body1 = "parameters"; + body0.put("body", body1); + } + + assertDoesNotThrow(() -> { + client.customPut(path0, parameters0, body0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/all", req.path); + assertEquals("PUT", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"body\":\"parameters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("deleteConfig0") + void deleteConfigTest0() { + String indexName0 = "theIndexName"; + + assertDoesNotThrow(() -> { + client.deleteConfig(indexName0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/configs/theIndexName", req.path); + assertEquals("DELETE", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("getAllConfigs0") + void getAllConfigsTest0() { + assertDoesNotThrow(() -> { + client.getAllConfigs(); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/configs", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("getConfig0") + void getConfigTest0() { + String indexName0 = "theIndexName"; + + assertDoesNotThrow(() -> { + client.getConfig(indexName0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/configs/theIndexName", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("getConfigStatus0") + void getConfigStatusTest0() { + String indexName0 = "theIndexName"; + + assertDoesNotThrow(() -> { + client.getConfigStatus(indexName0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/configs/theIndexName/status", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("getLogFile0") + void getLogFileTest0() { + String indexName0 = "theIndexName"; + + assertDoesNotThrow(() -> { + client.getLogFile(indexName0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/logs/theIndexName", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("updateConfig0") + void updateConfigTest0() { + String indexName0 = "theIndexName"; + QuerySuggestionsConfiguration querySuggestionsConfiguration0 = new QuerySuggestionsConfiguration(); + { + List sourceIndices1 = new ArrayList<>(); + { + SourceIndex sourceIndices_02 = new SourceIndex(); + { + String indexName3 = "testIndex"; + sourceIndices_02.setIndexName(indexName3); + List facets3 = new ArrayList<>(); + { + Facet facets_04 = new Facet(); + { + String attribute5 = "test"; + facets_04.setAttribute(attribute5); + } + facets3.add(facets_04); + } + sourceIndices_02.setFacets(facets3); + List> generate3 = new ArrayList<>(); + { + List generate_04 = new ArrayList<>(); + { + String generate_0_05 = "facetA"; + generate_04.add(generate_0_05); + String generate_0_15 = "facetB"; + generate_04.add(generate_0_15); + } + generate3.add(generate_04); + List generate_14 = new ArrayList<>(); + { + String generate_1_05 = "facetC"; + generate_14.add(generate_1_05); + } + generate3.add(generate_14); + } + sourceIndices_02.setGenerate(generate3); + } + sourceIndices1.add(sourceIndices_02); + } + querySuggestionsConfiguration0.setSourceIndices(sourceIndices1); + List languages1 = new ArrayList<>(); + { + String languages_02 = "french"; + languages1.add(languages_02); + } + querySuggestionsConfiguration0.setLanguages(Languages.of(languages1)); + List exclude1 = new ArrayList<>(); + { + String exclude_02 = "test"; + exclude1.add(exclude_02); + } + querySuggestionsConfiguration0.setExclude(exclude1); + } + + assertDoesNotThrow(() -> { + client.updateConfig(indexName0, querySuggestionsConfiguration0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/configs/theIndexName", req.path); + assertEquals("PUT", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals( + "{\"sourceIndices\":[{\"indexName\":\"testIndex\",\"facets\":[{\"attribute\":\"test\"}],\"generate\":[[\"facetA\",\"facetB\"],[\"facetC\"]]}],\"languages\":[\"french\"],\"exclude\":[\"test\"]}", + req.body, + JSONCompareMode.STRICT + ) + ); + } +} diff --git a/tests/output/java/src/test/java/com/algolia/requests/Recommend.test.java b/tests/output/java/src/test/java/com/algolia/requests/Recommend.test.java new file mode 100644 index 0000000000..57ccdae114 --- /dev/null +++ b/tests/output/java/src/test/java/com/algolia/requests/Recommend.test.java @@ -0,0 +1,1089 @@ +package com.algolia.methods.requests; + +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.fail; + +import com.algolia.EchoInterceptor; +import com.algolia.EchoResponse; +import com.algolia.api.RecommendClient; +import com.algolia.config.*; +import com.algolia.model.recommend.*; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.json.JsonMapper; +import java.util.*; +import org.junit.jupiter.api.*; +import org.skyscreamer.jsonassert.JSONAssert; +import org.skyscreamer.jsonassert.JSONCompareMode; + +@TestInstance(TestInstance.Lifecycle.PER_CLASS) +class RecommendClientRequestsTests { + + private RecommendClient client; + private EchoInterceptor echo; + private ObjectMapper json; + + @BeforeAll + void init() { + this.json = JsonMapper.builder().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false).build(); + this.echo = new EchoInterceptor(); + var options = ClientOptions.builder().setRequesterConfig(requester -> requester.addInterceptor(echo)).build(); + this.client = new RecommendClient("appId", "apiKey", options); + } + + @AfterAll + void tearUp() throws Exception { + client.close(); + } + + @Test + @DisplayName("allow del method for a custom path with minimal parameters") + void customDeleteTest0() { + String path0 = "/test/minimal"; + + assertDoesNotThrow(() -> { + client.customDelete(path0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/minimal", req.path); + assertEquals("DELETE", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("allow del method for a custom path with all parameters") + void customDeleteTest1() { + String path0 = "/test/all"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + + assertDoesNotThrow(() -> { + client.customDelete(path0, parameters0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/all", req.path); + assertEquals("DELETE", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("allow get method for a custom path with minimal parameters") + void customGetTest0() { + String path0 = "/test/minimal"; + + assertDoesNotThrow(() -> { + client.customGet(path0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/minimal", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("allow get method for a custom path with all parameters") + void customGetTest1() { + String path0 = "/test/all"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + + assertDoesNotThrow(() -> { + client.customGet(path0, parameters0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/all", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("allow post method for a custom path with minimal parameters") + void customPostTest0() { + String path0 = "/test/minimal"; + + assertDoesNotThrow(() -> { + client.customPost(path0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/minimal", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{}", req.body, JSONCompareMode.STRICT)); + } + + @Test + @DisplayName("allow post method for a custom path with all parameters") + void customPostTest1() { + String path0 = "/test/all"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String body1 = "parameters"; + body0.put("body", body1); + } + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/all", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"body\":\"parameters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions can override default query parameters") + void customPostTest2() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("query", "myQueryParameter"); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"myQueryParameter\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions merges query parameters with default ones") + void customPostTest3() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("query2", "myQueryParameter"); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"parameters\",\"query2\":\"myQueryParameter\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions can override default headers") + void customPostTest4() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraHeader("x-algolia-api-key", "myApiKey"); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + + try { + Map expectedHeaders = json.readValue( + "{\"x-algolia-api-key\":\"myApiKey\"}", + new TypeReference>() {} + ); + Map actualHeaders = req.headers; + + for (Map.Entry p : expectedHeaders.entrySet()) { + assertEquals(p.getValue(), actualHeaders.get(p.getKey())); + } + } catch (JsonProcessingException e) { + fail("failed to parse headers json"); + } + } + + @Test + @DisplayName("requestOptions merges headers with default ones") + void customPostTest5() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraHeader("x-algolia-api-key", "myApiKey"); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + + try { + Map expectedHeaders = json.readValue( + "{\"x-algolia-api-key\":\"myApiKey\"}", + new TypeReference>() {} + ); + Map actualHeaders = req.headers; + + for (Map.Entry p : expectedHeaders.entrySet()) { + assertEquals(p.getValue(), actualHeaders.get(p.getKey())); + } + } catch (JsonProcessingException e) { + fail("failed to parse headers json"); + } + } + + @Test + @DisplayName("requestOptions queryParameters accepts booleans") + void customPostTest6() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("isItWorking", true); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"parameters\",\"isItWorking\":\"true\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions queryParameters accepts integers") + void customPostTest7() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("myParam", 2); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"parameters\",\"myParam\":\"2\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions queryParameters accepts list of string") + void customPostTest8() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("myParam", Arrays.asList("c", "d")); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"parameters\",\"myParam\":\"c,d\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions queryParameters accepts list of booleans") + void customPostTest9() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("myParam", Arrays.asList(true, true, false)); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"parameters\",\"myParam\":\"true,true,false\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions queryParameters accepts list of integers") + void customPostTest10() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("myParam", Arrays.asList(1, 2)); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"parameters\",\"myParam\":\"1,2\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("allow put method for a custom path with minimal parameters") + void customPutTest0() { + String path0 = "/test/minimal"; + + assertDoesNotThrow(() -> { + client.customPut(path0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/minimal", req.path); + assertEquals("PUT", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{}", req.body, JSONCompareMode.STRICT)); + } + + @Test + @DisplayName("allow put method for a custom path with all parameters") + void customPutTest1() { + String path0 = "/test/all"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String body1 = "parameters"; + body0.put("body", body1); + } + + assertDoesNotThrow(() -> { + client.customPut(path0, parameters0, body0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/all", req.path); + assertEquals("PUT", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"body\":\"parameters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("deleteRecommendRule0") + void deleteRecommendRuleTest0() { + String indexName0 = "indexName"; + RecommendModels model0 = RecommendModels.fromValue("related-products"); + String objectID0 = "objectID"; + + assertDoesNotThrow(() -> { + client.deleteRecommendRule(indexName0, model0, objectID0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/indexName/related-products/recommend/rules/objectID", req.path); + assertEquals("DELETE", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("getRecommendRule0") + void getRecommendRuleTest0() { + String indexName0 = "indexName"; + RecommendModels model0 = RecommendModels.fromValue("related-products"); + String objectID0 = "objectID"; + + assertDoesNotThrow(() -> { + client.getRecommendRule(indexName0, model0, objectID0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/indexName/related-products/recommend/rules/objectID", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("getRecommendStatus0") + void getRecommendStatusTest0() { + String indexName0 = "indexName"; + RecommendModels model0 = RecommendModels.fromValue("related-products"); + long taskID0 = 12345L; + + assertDoesNotThrow(() -> { + client.getRecommendStatus(indexName0, model0, taskID0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/indexName/related-products/task/12345", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("get recommendations for recommend model with minimal parameters") + void getRecommendationsTest0() { + GetRecommendationsParams getRecommendationsParams0 = new GetRecommendationsParams(); + { + List requests1 = new ArrayList<>(); + { + RecommendationsQuery requests_02 = new RecommendationsQuery(); + { + String indexName3 = "indexName"; + requests_02.setIndexName(indexName3); + String objectID3 = "objectID"; + requests_02.setObjectID(objectID3); + RecommendationModels model3 = RecommendationModels.fromValue("related-products"); + requests_02.setModel(model3); + int threshold3 = 42; + requests_02.setThreshold(threshold3); + } + requests1.add(requests_02); + } + getRecommendationsParams0.setRequests(requests1); + } + + assertDoesNotThrow(() -> { + client.getRecommendations(getRecommendationsParams0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/*/recommendations", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals( + "{\"requests\":[{\"indexName\":\"indexName\",\"objectID\":\"objectID\",\"model\":\"related-products\",\"threshold\":42}]}", + req.body, + JSONCompareMode.STRICT + ) + ); + } + + @Test + @DisplayName("get recommendations for recommend model with all parameters") + void getRecommendationsTest1() { + GetRecommendationsParams getRecommendationsParams0 = new GetRecommendationsParams(); + { + List requests1 = new ArrayList<>(); + { + RecommendationsQuery requests_02 = new RecommendationsQuery(); + { + String indexName3 = "indexName"; + requests_02.setIndexName(indexName3); + String objectID3 = "objectID"; + requests_02.setObjectID(objectID3); + RecommendationModels model3 = RecommendationModels.fromValue("related-products"); + requests_02.setModel(model3); + int threshold3 = 42; + requests_02.setThreshold(threshold3); + int maxRecommendations3 = 10; + requests_02.setMaxRecommendations(maxRecommendations3); + SearchParamsObject queryParameters3 = new SearchParamsObject(); + { + String query4 = "myQuery"; + queryParameters3.setQuery(query4); + List facetFilters4 = new ArrayList<>(); + { + String facetFilters_05 = "query"; + facetFilters4.add(MixedSearchFilters.of(facetFilters_05)); + } + queryParameters3.setFacetFilters(FacetFilters.of(facetFilters4)); + } + requests_02.setQueryParameters(queryParameters3); + SearchParamsObject fallbackParameters3 = new SearchParamsObject(); + { + String query4 = "myQuery"; + fallbackParameters3.setQuery(query4); + List facetFilters4 = new ArrayList<>(); + { + String facetFilters_05 = "fallback"; + facetFilters4.add(MixedSearchFilters.of(facetFilters_05)); + } + fallbackParameters3.setFacetFilters(FacetFilters.of(facetFilters4)); + } + requests_02.setFallbackParameters(fallbackParameters3); + } + requests1.add(requests_02); + } + getRecommendationsParams0.setRequests(requests1); + } + + assertDoesNotThrow(() -> { + client.getRecommendations(getRecommendationsParams0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/*/recommendations", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals( + "{\"requests\":[{\"indexName\":\"indexName\",\"objectID\":\"objectID\",\"model\":\"related-products\",\"threshold\":42,\"maxRecommendations\":10,\"queryParameters\":{\"query\":\"myQuery\",\"facetFilters\":[\"query\"]},\"fallbackParameters\":{\"query\":\"myQuery\",\"facetFilters\":[\"fallback\"]}}]}", + req.body, + JSONCompareMode.STRICT + ) + ); + } + + @Test + @DisplayName("get recommendations for trending model with minimal parameters") + void getRecommendationsTest2() { + GetRecommendationsParams getRecommendationsParams0 = new GetRecommendationsParams(); + { + List requests1 = new ArrayList<>(); + { + TrendingItemsQuery requests_02 = new TrendingItemsQuery(); + { + String indexName3 = "indexName"; + requests_02.setIndexName(indexName3); + TrendingItemsModel model3 = TrendingItemsModel.fromValue("trending-items"); + requests_02.setModel(model3); + int threshold3 = 42; + requests_02.setThreshold(threshold3); + } + requests1.add(requests_02); + } + getRecommendationsParams0.setRequests(requests1); + } + + assertDoesNotThrow(() -> { + client.getRecommendations(getRecommendationsParams0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/*/recommendations", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals( + "{\"requests\":[{\"indexName\":\"indexName\",\"model\":\"trending-items\",\"threshold\":42}]}", + req.body, + JSONCompareMode.STRICT + ) + ); + } + + @Test + @DisplayName("get recommendations for trending model with all parameters") + void getRecommendationsTest3() { + GetRecommendationsParams getRecommendationsParams0 = new GetRecommendationsParams(); + { + List requests1 = new ArrayList<>(); + { + TrendingItemsQuery requests_02 = new TrendingItemsQuery(); + { + String indexName3 = "indexName"; + requests_02.setIndexName(indexName3); + TrendingItemsModel model3 = TrendingItemsModel.fromValue("trending-items"); + requests_02.setModel(model3); + int threshold3 = 42; + requests_02.setThreshold(threshold3); + int maxRecommendations3 = 10; + requests_02.setMaxRecommendations(maxRecommendations3); + String facetName3 = "myFacetName"; + requests_02.setFacetName(facetName3); + String facetValue3 = "myFacetValue"; + requests_02.setFacetValue(facetValue3); + SearchParamsObject queryParameters3 = new SearchParamsObject(); + { + String query4 = "myQuery"; + queryParameters3.setQuery(query4); + List facetFilters4 = new ArrayList<>(); + { + String facetFilters_05 = "query"; + facetFilters4.add(MixedSearchFilters.of(facetFilters_05)); + } + queryParameters3.setFacetFilters(FacetFilters.of(facetFilters4)); + } + requests_02.setQueryParameters(queryParameters3); + SearchParamsObject fallbackParameters3 = new SearchParamsObject(); + { + String query4 = "myQuery"; + fallbackParameters3.setQuery(query4); + List facetFilters4 = new ArrayList<>(); + { + String facetFilters_05 = "fallback"; + facetFilters4.add(MixedSearchFilters.of(facetFilters_05)); + } + fallbackParameters3.setFacetFilters(FacetFilters.of(facetFilters4)); + } + requests_02.setFallbackParameters(fallbackParameters3); + } + requests1.add(requests_02); + } + getRecommendationsParams0.setRequests(requests1); + } + + assertDoesNotThrow(() -> { + client.getRecommendations(getRecommendationsParams0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/*/recommendations", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals( + "{\"requests\":[{\"indexName\":\"indexName\",\"model\":\"trending-items\",\"threshold\":42,\"maxRecommendations\":10,\"facetName\":\"myFacetName\",\"facetValue\":\"myFacetValue\",\"queryParameters\":{\"query\":\"myQuery\",\"facetFilters\":[\"query\"]},\"fallbackParameters\":{\"query\":\"myQuery\",\"facetFilters\":[\"fallback\"]}}]}", + req.body, + JSONCompareMode.STRICT + ) + ); + } + + @Test + @DisplayName("get multiple recommendations with minimal parameters") + void getRecommendationsTest4() { + GetRecommendationsParams getRecommendationsParams0 = new GetRecommendationsParams(); + { + List requests1 = new ArrayList<>(); + { + RecommendationsQuery requests_02 = new RecommendationsQuery(); + { + String indexName3 = "indexName1"; + requests_02.setIndexName(indexName3); + String objectID3 = "objectID1"; + requests_02.setObjectID(objectID3); + RecommendationModels model3 = RecommendationModels.fromValue("related-products"); + requests_02.setModel(model3); + int threshold3 = 21; + requests_02.setThreshold(threshold3); + } + requests1.add(requests_02); + RecommendationsQuery requests_12 = new RecommendationsQuery(); + { + String indexName3 = "indexName2"; + requests_12.setIndexName(indexName3); + String objectID3 = "objectID2"; + requests_12.setObjectID(objectID3); + RecommendationModels model3 = RecommendationModels.fromValue("related-products"); + requests_12.setModel(model3); + int threshold3 = 21; + requests_12.setThreshold(threshold3); + } + requests1.add(requests_12); + } + getRecommendationsParams0.setRequests(requests1); + } + + assertDoesNotThrow(() -> { + client.getRecommendations(getRecommendationsParams0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/*/recommendations", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals( + "{\"requests\":[{\"indexName\":\"indexName1\",\"objectID\":\"objectID1\",\"model\":\"related-products\",\"threshold\":21},{\"indexName\":\"indexName2\",\"objectID\":\"objectID2\",\"model\":\"related-products\",\"threshold\":21}]}", + req.body, + JSONCompareMode.STRICT + ) + ); + } + + @Test + @DisplayName("get multiple recommendations with all parameters") + void getRecommendationsTest5() { + GetRecommendationsParams getRecommendationsParams0 = new GetRecommendationsParams(); + { + List requests1 = new ArrayList<>(); + { + RecommendationsQuery requests_02 = new RecommendationsQuery(); + { + String indexName3 = "indexName1"; + requests_02.setIndexName(indexName3); + String objectID3 = "objectID1"; + requests_02.setObjectID(objectID3); + RecommendationModels model3 = RecommendationModels.fromValue("related-products"); + requests_02.setModel(model3); + int threshold3 = 21; + requests_02.setThreshold(threshold3); + int maxRecommendations3 = 10; + requests_02.setMaxRecommendations(maxRecommendations3); + SearchParamsObject queryParameters3 = new SearchParamsObject(); + { + String query4 = "myQuery"; + queryParameters3.setQuery(query4); + List facetFilters4 = new ArrayList<>(); + { + String facetFilters_05 = "query1"; + facetFilters4.add(MixedSearchFilters.of(facetFilters_05)); + } + queryParameters3.setFacetFilters(FacetFilters.of(facetFilters4)); + } + requests_02.setQueryParameters(queryParameters3); + SearchParamsObject fallbackParameters3 = new SearchParamsObject(); + { + String query4 = "myQuery"; + fallbackParameters3.setQuery(query4); + List facetFilters4 = new ArrayList<>(); + { + String facetFilters_05 = "fallback1"; + facetFilters4.add(MixedSearchFilters.of(facetFilters_05)); + } + fallbackParameters3.setFacetFilters(FacetFilters.of(facetFilters4)); + } + requests_02.setFallbackParameters(fallbackParameters3); + } + requests1.add(requests_02); + RecommendationsQuery requests_12 = new RecommendationsQuery(); + { + String indexName3 = "indexName2"; + requests_12.setIndexName(indexName3); + String objectID3 = "objectID2"; + requests_12.setObjectID(objectID3); + RecommendationModels model3 = RecommendationModels.fromValue("related-products"); + requests_12.setModel(model3); + int threshold3 = 21; + requests_12.setThreshold(threshold3); + int maxRecommendations3 = 10; + requests_12.setMaxRecommendations(maxRecommendations3); + SearchParamsObject queryParameters3 = new SearchParamsObject(); + { + String query4 = "myQuery"; + queryParameters3.setQuery(query4); + List facetFilters4 = new ArrayList<>(); + { + String facetFilters_05 = "query2"; + facetFilters4.add(MixedSearchFilters.of(facetFilters_05)); + } + queryParameters3.setFacetFilters(FacetFilters.of(facetFilters4)); + } + requests_12.setQueryParameters(queryParameters3); + SearchParamsObject fallbackParameters3 = new SearchParamsObject(); + { + String query4 = "myQuery"; + fallbackParameters3.setQuery(query4); + List facetFilters4 = new ArrayList<>(); + { + String facetFilters_05 = "fallback2"; + facetFilters4.add(MixedSearchFilters.of(facetFilters_05)); + } + fallbackParameters3.setFacetFilters(FacetFilters.of(facetFilters4)); + } + requests_12.setFallbackParameters(fallbackParameters3); + } + requests1.add(requests_12); + } + getRecommendationsParams0.setRequests(requests1); + } + + assertDoesNotThrow(() -> { + client.getRecommendations(getRecommendationsParams0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/*/recommendations", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals( + "{\"requests\":[{\"indexName\":\"indexName1\",\"objectID\":\"objectID1\",\"model\":\"related-products\",\"threshold\":21,\"maxRecommendations\":10,\"queryParameters\":{\"query\":\"myQuery\",\"facetFilters\":[\"query1\"]},\"fallbackParameters\":{\"query\":\"myQuery\",\"facetFilters\":[\"fallback1\"]}},{\"indexName\":\"indexName2\",\"objectID\":\"objectID2\",\"model\":\"related-products\",\"threshold\":21,\"maxRecommendations\":10,\"queryParameters\":{\"query\":\"myQuery\",\"facetFilters\":[\"query2\"]},\"fallbackParameters\":{\"query\":\"myQuery\",\"facetFilters\":[\"fallback2\"]}}]}", + req.body, + JSONCompareMode.STRICT + ) + ); + } + + @Test + @DisplayName("get frequently bought together recommendations") + void getRecommendationsTest6() { + GetRecommendationsParams getRecommendationsParams0 = new GetRecommendationsParams(); + { + List requests1 = new ArrayList<>(); + { + RecommendationsQuery requests_02 = new RecommendationsQuery(); + { + String indexName3 = "indexName1"; + requests_02.setIndexName(indexName3); + String objectID3 = "objectID1"; + requests_02.setObjectID(objectID3); + RecommendationModels model3 = RecommendationModels.fromValue("bought-together"); + requests_02.setModel(model3); + int threshold3 = 42; + requests_02.setThreshold(threshold3); + } + requests1.add(requests_02); + } + getRecommendationsParams0.setRequests(requests1); + } + + assertDoesNotThrow(() -> { + client.getRecommendations(getRecommendationsParams0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/*/recommendations", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals( + "{\"requests\":[{\"indexName\":\"indexName1\",\"objectID\":\"objectID1\",\"model\":\"bought-together\",\"threshold\":42}]}", + req.body, + JSONCompareMode.STRICT + ) + ); + } + + @Test + @DisplayName("searchRecommendRules0") + void searchRecommendRulesTest0() { + String indexName0 = "indexName"; + RecommendModels model0 = RecommendModels.fromValue("related-products"); + + assertDoesNotThrow(() -> { + client.searchRecommendRules(indexName0, model0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/indexName/related-products/recommend/rules/search", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{}", req.body, JSONCompareMode.STRICT)); + } +} diff --git a/tests/output/java/src/test/java/com/algolia/requests/Search.test.java b/tests/output/java/src/test/java/com/algolia/requests/Search.test.java new file mode 100644 index 0000000000..3688a98f36 --- /dev/null +++ b/tests/output/java/src/test/java/com/algolia/requests/Search.test.java @@ -0,0 +1,4328 @@ +package com.algolia.methods.requests; + +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.fail; + +import com.algolia.EchoInterceptor; +import com.algolia.EchoResponse; +import com.algolia.api.SearchClient; +import com.algolia.config.*; +import com.algolia.model.search.*; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.json.JsonMapper; +import java.util.*; +import org.junit.jupiter.api.*; +import org.skyscreamer.jsonassert.JSONAssert; +import org.skyscreamer.jsonassert.JSONCompareMode; + +@TestInstance(TestInstance.Lifecycle.PER_CLASS) +class SearchClientRequestsTests { + + private SearchClient client; + private EchoInterceptor echo; + private ObjectMapper json; + + @BeforeAll + void init() { + this.json = JsonMapper.builder().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false).build(); + this.echo = new EchoInterceptor(); + var options = ClientOptions.builder().setRequesterConfig(requester -> requester.addInterceptor(echo)).build(); + this.client = new SearchClient("appId", "apiKey", options); + } + + @AfterAll + void tearUp() throws Exception { + client.close(); + } + + @Test + @DisplayName("addApiKey0") + void addApiKeyTest0() { + ApiKey apiKey0 = new ApiKey(); + { + List acl1 = new ArrayList<>(); + { + Acl acl_02 = Acl.fromValue("search"); + acl1.add(acl_02); + Acl acl_12 = Acl.fromValue("addObject"); + acl1.add(acl_12); + } + apiKey0.setAcl(acl1); + String description1 = "my new api key"; + apiKey0.setDescription(description1); + int validity1 = 300; + apiKey0.setValidity(validity1); + int maxQueriesPerIPPerHour1 = 100; + apiKey0.setMaxQueriesPerIPPerHour(maxQueriesPerIPPerHour1); + int maxHitsPerQuery1 = 20; + apiKey0.setMaxHitsPerQuery(maxHitsPerQuery1); + } + + assertDoesNotThrow(() -> { + client.addApiKey(apiKey0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/keys", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals( + "{\"acl\":[\"search\",\"addObject\"],\"description\":\"my new api" + + " key\",\"validity\":300,\"maxQueriesPerIPPerHour\":100,\"maxHitsPerQuery\":20}", + req.body, + JSONCompareMode.STRICT + ) + ); + } + + @Test + @DisplayName("addOrUpdateObject0") + void addOrUpdateObjectTest0() { + String indexName0 = "indexName"; + String objectID0 = "uniqueID"; + Map body0 = new HashMap<>(); + { + String key1 = "value"; + body0.put("key", key1); + } + + assertDoesNotThrow(() -> { + client.addOrUpdateObject(indexName0, objectID0, body0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/indexName/uniqueID", req.path); + assertEquals("PUT", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"key\":\"value\"}", req.body, JSONCompareMode.STRICT)); + } + + @Test + @DisplayName("appendSource0") + void appendSourceTest0() { + Source source0 = new Source(); + { + String source1 = "theSource"; + source0.setSource(source1); + String description1 = "theDescription"; + source0.setDescription(description1); + } + + assertDoesNotThrow(() -> { + client.appendSource(source0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/security/sources/append", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals("{\"source\":\"theSource\",\"description\":\"theDescription\"}", req.body, JSONCompareMode.STRICT) + ); + } + + @Test + @DisplayName("assignUserId0") + void assignUserIdTest0() { + String xAlgoliaUserID0 = "userID"; + AssignUserIdParams assignUserIdParams0 = new AssignUserIdParams(); + { + String cluster1 = "theCluster"; + assignUserIdParams0.setCluster(cluster1); + } + + assertDoesNotThrow(() -> { + client.assignUserId(xAlgoliaUserID0, assignUserIdParams0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/clusters/mapping", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"cluster\":\"theCluster\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedHeaders = json.readValue( + "{\"x-algolia-user-id\":\"userID\"}", + new TypeReference>() {} + ); + Map actualHeaders = req.headers; + + for (Map.Entry p : expectedHeaders.entrySet()) { + assertEquals(p.getValue(), actualHeaders.get(p.getKey())); + } + } catch (JsonProcessingException e) { + fail("failed to parse headers json"); + } + } + + @Test + @DisplayName("allows batch method with `addObject` action") + void batchTest0() { + String indexName0 = "theIndexName"; + BatchWriteParams batchWriteParams0 = new BatchWriteParams(); + { + List requests1 = new ArrayList<>(); + { + BatchRequest requests_02 = new BatchRequest(); + { + Action action3 = Action.fromValue("addObject"); + requests_02.setAction(action3); + Map body3 = new HashMap<>(); + { + String key4 = "value"; + body3.put("key", key4); + } + requests_02.setBody(body3); + } + requests1.add(requests_02); + } + batchWriteParams0.setRequests(requests1); + } + + assertDoesNotThrow(() -> { + client.batch(indexName0, batchWriteParams0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/theIndexName/batch", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals("{\"requests\":[{\"action\":\"addObject\",\"body\":{\"key\":\"value\"}}]}", req.body, JSONCompareMode.STRICT) + ); + } + + @Test + @DisplayName("allows batch method with `clear` action") + void batchTest1() { + String indexName0 = "theIndexName"; + BatchWriteParams batchWriteParams0 = new BatchWriteParams(); + { + List requests1 = new ArrayList<>(); + { + BatchRequest requests_02 = new BatchRequest(); + { + Action action3 = Action.fromValue("clear"); + requests_02.setAction(action3); + Map body3 = new HashMap<>(); + { + String key4 = "value"; + body3.put("key", key4); + } + requests_02.setBody(body3); + } + requests1.add(requests_02); + } + batchWriteParams0.setRequests(requests1); + } + + assertDoesNotThrow(() -> { + client.batch(indexName0, batchWriteParams0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/theIndexName/batch", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals("{\"requests\":[{\"action\":\"clear\",\"body\":{\"key\":\"value\"}}]}", req.body, JSONCompareMode.STRICT) + ); + } + + @Test + @DisplayName("allows batch method with `delete` action") + void batchTest2() { + String indexName0 = "theIndexName"; + BatchWriteParams batchWriteParams0 = new BatchWriteParams(); + { + List requests1 = new ArrayList<>(); + { + BatchRequest requests_02 = new BatchRequest(); + { + Action action3 = Action.fromValue("delete"); + requests_02.setAction(action3); + Map body3 = new HashMap<>(); + { + String key4 = "value"; + body3.put("key", key4); + } + requests_02.setBody(body3); + } + requests1.add(requests_02); + } + batchWriteParams0.setRequests(requests1); + } + + assertDoesNotThrow(() -> { + client.batch(indexName0, batchWriteParams0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/theIndexName/batch", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals("{\"requests\":[{\"action\":\"delete\",\"body\":{\"key\":\"value\"}}]}", req.body, JSONCompareMode.STRICT) + ); + } + + @Test + @DisplayName("allows batch method with `deleteObject` action") + void batchTest3() { + String indexName0 = "theIndexName"; + BatchWriteParams batchWriteParams0 = new BatchWriteParams(); + { + List requests1 = new ArrayList<>(); + { + BatchRequest requests_02 = new BatchRequest(); + { + Action action3 = Action.fromValue("deleteObject"); + requests_02.setAction(action3); + Map body3 = new HashMap<>(); + { + String key4 = "value"; + body3.put("key", key4); + } + requests_02.setBody(body3); + } + requests1.add(requests_02); + } + batchWriteParams0.setRequests(requests1); + } + + assertDoesNotThrow(() -> { + client.batch(indexName0, batchWriteParams0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/theIndexName/batch", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals( + "{\"requests\":[{\"action\":\"deleteObject\",\"body\":{\"key\":\"value\"}}]}", + req.body, + JSONCompareMode.STRICT + ) + ); + } + + @Test + @DisplayName("allows batch method with `partialUpdateObject` action") + void batchTest4() { + String indexName0 = "theIndexName"; + BatchWriteParams batchWriteParams0 = new BatchWriteParams(); + { + List requests1 = new ArrayList<>(); + { + BatchRequest requests_02 = new BatchRequest(); + { + Action action3 = Action.fromValue("partialUpdateObject"); + requests_02.setAction(action3); + Map body3 = new HashMap<>(); + { + String key4 = "value"; + body3.put("key", key4); + } + requests_02.setBody(body3); + } + requests1.add(requests_02); + } + batchWriteParams0.setRequests(requests1); + } + + assertDoesNotThrow(() -> { + client.batch(indexName0, batchWriteParams0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/theIndexName/batch", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals( + "{\"requests\":[{\"action\":\"partialUpdateObject\",\"body\":{\"key\":\"value\"}}]}", + req.body, + JSONCompareMode.STRICT + ) + ); + } + + @Test + @DisplayName("allows batch method with `partialUpdateObjectNoCreate` action") + void batchTest5() { + String indexName0 = "theIndexName"; + BatchWriteParams batchWriteParams0 = new BatchWriteParams(); + { + List requests1 = new ArrayList<>(); + { + BatchRequest requests_02 = new BatchRequest(); + { + Action action3 = Action.fromValue("partialUpdateObjectNoCreate"); + requests_02.setAction(action3); + Map body3 = new HashMap<>(); + { + String key4 = "value"; + body3.put("key", key4); + } + requests_02.setBody(body3); + } + requests1.add(requests_02); + } + batchWriteParams0.setRequests(requests1); + } + + assertDoesNotThrow(() -> { + client.batch(indexName0, batchWriteParams0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/theIndexName/batch", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals( + "{\"requests\":[{\"action\":\"partialUpdateObjectNoCreate\",\"body\":{\"key\":\"value\"}}]}", + req.body, + JSONCompareMode.STRICT + ) + ); + } + + @Test + @DisplayName("allows batch method with `updateObject` action") + void batchTest6() { + String indexName0 = "theIndexName"; + BatchWriteParams batchWriteParams0 = new BatchWriteParams(); + { + List requests1 = new ArrayList<>(); + { + BatchRequest requests_02 = new BatchRequest(); + { + Action action3 = Action.fromValue("updateObject"); + requests_02.setAction(action3); + Map body3 = new HashMap<>(); + { + String key4 = "value"; + body3.put("key", key4); + } + requests_02.setBody(body3); + } + requests1.add(requests_02); + } + batchWriteParams0.setRequests(requests1); + } + + assertDoesNotThrow(() -> { + client.batch(indexName0, batchWriteParams0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/theIndexName/batch", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals( + "{\"requests\":[{\"action\":\"updateObject\",\"body\":{\"key\":\"value\"}}]}", + req.body, + JSONCompareMode.STRICT + ) + ); + } + + @Test + @DisplayName("batchAssignUserIds0") + void batchAssignUserIdsTest0() { + String xAlgoliaUserID0 = "userID"; + BatchAssignUserIdsParams batchAssignUserIdsParams0 = new BatchAssignUserIdsParams(); + { + String cluster1 = "theCluster"; + batchAssignUserIdsParams0.setCluster(cluster1); + List users1 = new ArrayList<>(); + { + String users_02 = "user1"; + users1.add(users_02); + String users_12 = "user2"; + users1.add(users_12); + } + batchAssignUserIdsParams0.setUsers(users1); + } + + assertDoesNotThrow(() -> { + client.batchAssignUserIds(xAlgoliaUserID0, batchAssignUserIdsParams0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/clusters/mapping/batch", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals("{\"cluster\":\"theCluster\",\"users\":[\"user1\",\"user2\"]}", req.body, JSONCompareMode.STRICT) + ); + + try { + Map expectedHeaders = json.readValue( + "{\"x-algolia-user-id\":\"userID\"}", + new TypeReference>() {} + ); + Map actualHeaders = req.headers; + + for (Map.Entry p : expectedHeaders.entrySet()) { + assertEquals(p.getValue(), actualHeaders.get(p.getKey())); + } + } catch (JsonProcessingException e) { + fail("failed to parse headers json"); + } + } + + @Test + @DisplayName("get batchDictionaryEntries results with minimal parameters") + void batchDictionaryEntriesTest0() { + DictionaryType dictionaryName0 = DictionaryType.fromValue("compounds"); + BatchDictionaryEntriesParams batchDictionaryEntriesParams0 = new BatchDictionaryEntriesParams(); + { + List requests1 = new ArrayList<>(); + { + BatchDictionaryEntriesRequest requests_02 = new BatchDictionaryEntriesRequest(); + { + DictionaryAction action3 = DictionaryAction.fromValue("addEntry"); + requests_02.setAction(action3); + DictionaryEntry body3 = new DictionaryEntry(); + { + String objectID4 = "1"; + body3.setObjectID(objectID4); + String language4 = "en"; + body3.setLanguage(language4); + } + requests_02.setBody(body3); + } + requests1.add(requests_02); + BatchDictionaryEntriesRequest requests_12 = new BatchDictionaryEntriesRequest(); + { + DictionaryAction action3 = DictionaryAction.fromValue("deleteEntry"); + requests_12.setAction(action3); + DictionaryEntry body3 = new DictionaryEntry(); + { + String objectID4 = "2"; + body3.setObjectID(objectID4); + String language4 = "fr"; + body3.setLanguage(language4); + } + requests_12.setBody(body3); + } + requests1.add(requests_12); + } + batchDictionaryEntriesParams0.setRequests(requests1); + } + + assertDoesNotThrow(() -> { + client.batchDictionaryEntries(dictionaryName0, batchDictionaryEntriesParams0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/dictionaries/compounds/batch", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals( + "{\"requests\":[{\"action\":\"addEntry\",\"body\":{\"objectID\":\"1\",\"language\":\"en\"}},{\"action\":\"deleteEntry\",\"body\":{\"objectID\":\"2\",\"language\":\"fr\"}}]}", + req.body, + JSONCompareMode.STRICT + ) + ); + } + + @Test + @DisplayName("get batchDictionaryEntries results with all parameters") + void batchDictionaryEntriesTest1() { + DictionaryType dictionaryName0 = DictionaryType.fromValue("compounds"); + BatchDictionaryEntriesParams batchDictionaryEntriesParams0 = new BatchDictionaryEntriesParams(); + { + boolean clearExistingDictionaryEntries1 = false; + batchDictionaryEntriesParams0.setClearExistingDictionaryEntries(clearExistingDictionaryEntries1); + List requests1 = new ArrayList<>(); + { + BatchDictionaryEntriesRequest requests_02 = new BatchDictionaryEntriesRequest(); + { + DictionaryAction action3 = DictionaryAction.fromValue("addEntry"); + requests_02.setAction(action3); + DictionaryEntry body3 = new DictionaryEntry(); + { + String objectID4 = "1"; + body3.setObjectID(objectID4); + String language4 = "en"; + body3.setLanguage(language4); + String word4 = "fancy"; + body3.setWord(word4); + List words4 = new ArrayList<>(); + { + String words_05 = "believe"; + words4.add(words_05); + String words_15 = "algolia"; + words4.add(words_15); + } + body3.setWords(words4); + List decomposition4 = new ArrayList<>(); + { + String decomposition_05 = "trust"; + decomposition4.add(decomposition_05); + String decomposition_15 = "algolia"; + decomposition4.add(decomposition_15); + } + body3.setDecomposition(decomposition4); + DictionaryEntryState state4 = DictionaryEntryState.fromValue("enabled"); + body3.setState(state4); + } + requests_02.setBody(body3); + } + requests1.add(requests_02); + BatchDictionaryEntriesRequest requests_12 = new BatchDictionaryEntriesRequest(); + { + DictionaryAction action3 = DictionaryAction.fromValue("deleteEntry"); + requests_12.setAction(action3); + DictionaryEntry body3 = new DictionaryEntry(); + { + String objectID4 = "2"; + body3.setObjectID(objectID4); + String language4 = "fr"; + body3.setLanguage(language4); + String word4 = "humility"; + body3.setWord(word4); + List words4 = new ArrayList<>(); + { + String words_05 = "candor"; + words4.add(words_05); + String words_15 = "algolia"; + words4.add(words_15); + } + body3.setWords(words4); + List decomposition4 = new ArrayList<>(); + { + String decomposition_05 = "grit"; + decomposition4.add(decomposition_05); + String decomposition_15 = "algolia"; + decomposition4.add(decomposition_15); + } + body3.setDecomposition(decomposition4); + DictionaryEntryState state4 = DictionaryEntryState.fromValue("enabled"); + body3.setState(state4); + } + requests_12.setBody(body3); + } + requests1.add(requests_12); + } + batchDictionaryEntriesParams0.setRequests(requests1); + } + + assertDoesNotThrow(() -> { + client.batchDictionaryEntries(dictionaryName0, batchDictionaryEntriesParams0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/dictionaries/compounds/batch", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals( + "{\"clearExistingDictionaryEntries\":false,\"requests\":[{\"action\":\"addEntry\",\"body\":{\"objectID\":\"1\",\"language\":\"en\",\"word\":\"fancy\",\"words\":[\"believe\",\"algolia\"],\"decomposition\":[\"trust\",\"algolia\"],\"state\":\"enabled\"}},{\"action\":\"deleteEntry\",\"body\":{\"objectID\":\"2\",\"language\":\"fr\",\"word\":\"humility\",\"words\":[\"candor\",\"algolia\"],\"decomposition\":[\"grit\",\"algolia\"],\"state\":\"enabled\"}}]}", + req.body, + JSONCompareMode.STRICT + ) + ); + } + + @Test + @DisplayName("get batchDictionaryEntries results additional properties") + void batchDictionaryEntriesTest2() { + DictionaryType dictionaryName0 = DictionaryType.fromValue("compounds"); + BatchDictionaryEntriesParams batchDictionaryEntriesParams0 = new BatchDictionaryEntriesParams(); + { + List requests1 = new ArrayList<>(); + { + BatchDictionaryEntriesRequest requests_02 = new BatchDictionaryEntriesRequest(); + { + DictionaryAction action3 = DictionaryAction.fromValue("addEntry"); + requests_02.setAction(action3); + DictionaryEntry body3 = new DictionaryEntry(); + { + String objectID4 = "1"; + body3.setObjectID(objectID4); + String language4 = "en"; + body3.setLanguage(language4); + String additional4 = "try me"; + body3.setAdditionalProperty("additional", additional4); + } + requests_02.setBody(body3); + } + requests1.add(requests_02); + } + batchDictionaryEntriesParams0.setRequests(requests1); + } + + assertDoesNotThrow(() -> { + client.batchDictionaryEntries(dictionaryName0, batchDictionaryEntriesParams0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/dictionaries/compounds/batch", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals( + "{\"requests\":[{\"action\":\"addEntry\",\"body\":{\"objectID\":\"1\",\"language\":\"en\",\"additional\":\"try" + " me\"}}]}", + req.body, + JSONCompareMode.STRICT + ) + ); + } + + @Test + @DisplayName("browse with minimal parameters") + void browseTest0() { + String indexName0 = "indexName"; + + assertDoesNotThrow(() -> { + client.browse(indexName0, Object.class); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/indexName/browse", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{}", req.body, JSONCompareMode.STRICT)); + } + + @Test + @DisplayName("browse with search parameters") + void browseTest1() { + String indexName0 = "indexName"; + BrowseParamsObject browseParams0 = new BrowseParamsObject(); + { + String query1 = "myQuery"; + browseParams0.setQuery(query1); + List facetFilters1 = new ArrayList<>(); + { + String facetFilters_02 = "tags:algolia"; + facetFilters1.add(MixedSearchFilters.of(facetFilters_02)); + } + browseParams0.setFacetFilters(FacetFilters.of(facetFilters1)); + } + + assertDoesNotThrow(() -> { + client.browse(indexName0, browseParams0, Object.class); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/indexName/browse", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals("{\"query\":\"myQuery\",\"facetFilters\":[\"tags:algolia\"]}", req.body, JSONCompareMode.STRICT) + ); + } + + @Test + @DisplayName("browse allow a cursor in parameters") + void browseTest2() { + String indexName0 = "indexName"; + BrowseParamsObject browseParams0 = new BrowseParamsObject(); + { + String cursor1 = "test"; + browseParams0.setCursor(cursor1); + } + + assertDoesNotThrow(() -> { + client.browse(indexName0, browseParams0, Object.class); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/indexName/browse", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"cursor\":\"test\"}", req.body, JSONCompareMode.STRICT)); + } + + @Test + @DisplayName("clearAllSynonyms0") + void clearAllSynonymsTest0() { + String indexName0 = "indexName"; + + assertDoesNotThrow(() -> { + client.clearAllSynonyms(indexName0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/indexName/synonyms/clear", req.path); + assertEquals("POST", req.method); + assertEquals("{}", req.body); + } + + @Test + @DisplayName("clearObjects0") + void clearObjectsTest0() { + String indexName0 = "theIndexName"; + + assertDoesNotThrow(() -> { + client.clearObjects(indexName0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/theIndexName/clear", req.path); + assertEquals("POST", req.method); + assertEquals("{}", req.body); + } + + @Test + @DisplayName("clearRules0") + void clearRulesTest0() { + String indexName0 = "indexName"; + + assertDoesNotThrow(() -> { + client.clearRules(indexName0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/indexName/rules/clear", req.path); + assertEquals("POST", req.method); + assertEquals("{}", req.body); + } + + @Test + @DisplayName("allow del method for a custom path with minimal parameters") + void customDeleteTest0() { + String path0 = "/test/minimal"; + + assertDoesNotThrow(() -> { + client.customDelete(path0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/minimal", req.path); + assertEquals("DELETE", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("allow del method for a custom path with all parameters") + void customDeleteTest1() { + String path0 = "/test/all"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + + assertDoesNotThrow(() -> { + client.customDelete(path0, parameters0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/all", req.path); + assertEquals("DELETE", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("allow get method for a custom path with minimal parameters") + void customGetTest0() { + String path0 = "/test/minimal"; + + assertDoesNotThrow(() -> { + client.customGet(path0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/minimal", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("allow get method for a custom path with all parameters") + void customGetTest1() { + String path0 = "/test/all"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + + assertDoesNotThrow(() -> { + client.customGet(path0, parameters0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/all", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("allow post method for a custom path with minimal parameters") + void customPostTest0() { + String path0 = "/test/minimal"; + + assertDoesNotThrow(() -> { + client.customPost(path0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/minimal", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{}", req.body, JSONCompareMode.STRICT)); + } + + @Test + @DisplayName("allow post method for a custom path with all parameters") + void customPostTest1() { + String path0 = "/test/all"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String body1 = "parameters"; + body0.put("body", body1); + } + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/all", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"body\":\"parameters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions can override default query parameters") + void customPostTest2() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("query", "myQueryParameter"); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"myQueryParameter\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions merges query parameters with default ones") + void customPostTest3() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("query2", "myQueryParameter"); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"parameters\",\"query2\":\"myQueryParameter\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions can override default headers") + void customPostTest4() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraHeader("x-algolia-api-key", "myApiKey"); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + + try { + Map expectedHeaders = json.readValue( + "{\"x-algolia-api-key\":\"myApiKey\"}", + new TypeReference>() {} + ); + Map actualHeaders = req.headers; + + for (Map.Entry p : expectedHeaders.entrySet()) { + assertEquals(p.getValue(), actualHeaders.get(p.getKey())); + } + } catch (JsonProcessingException e) { + fail("failed to parse headers json"); + } + } + + @Test + @DisplayName("requestOptions merges headers with default ones") + void customPostTest5() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraHeader("x-algolia-api-key", "myApiKey"); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + + try { + Map expectedHeaders = json.readValue( + "{\"x-algolia-api-key\":\"myApiKey\"}", + new TypeReference>() {} + ); + Map actualHeaders = req.headers; + + for (Map.Entry p : expectedHeaders.entrySet()) { + assertEquals(p.getValue(), actualHeaders.get(p.getKey())); + } + } catch (JsonProcessingException e) { + fail("failed to parse headers json"); + } + } + + @Test + @DisplayName("requestOptions queryParameters accepts booleans") + void customPostTest6() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("isItWorking", true); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"parameters\",\"isItWorking\":\"true\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions queryParameters accepts integers") + void customPostTest7() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("myParam", 2); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"parameters\",\"myParam\":\"2\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions queryParameters accepts list of string") + void customPostTest8() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("myParam", Arrays.asList("c", "d")); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"parameters\",\"myParam\":\"c,d\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions queryParameters accepts list of booleans") + void customPostTest9() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("myParam", Arrays.asList(true, true, false)); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"parameters\",\"myParam\":\"true,true,false\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("requestOptions queryParameters accepts list of integers") + void customPostTest10() { + String path0 = "/test/requestOptions"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String facet1 = "filters"; + body0.put("facet", facet1); + } + + RequestOptions requestOptions = new RequestOptions(); + requestOptions.addExtraQueryParameters("myParam", Arrays.asList(1, 2)); + + assertDoesNotThrow(() -> { + client.customPost(path0, parameters0, body0, requestOptions); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/requestOptions", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"facet\":\"filters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"query\":\"parameters\",\"myParam\":\"1,2\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("allow put method for a custom path with minimal parameters") + void customPutTest0() { + String path0 = "/test/minimal"; + + assertDoesNotThrow(() -> { + client.customPut(path0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/minimal", req.path); + assertEquals("PUT", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{}", req.body, JSONCompareMode.STRICT)); + } + + @Test + @DisplayName("allow put method for a custom path with all parameters") + void customPutTest1() { + String path0 = "/test/all"; + Map parameters0 = new HashMap<>(); + { + String query1 = "parameters"; + parameters0.put("query", query1); + } + Map body0 = new HashMap<>(); + { + String body1 = "parameters"; + body0.put("body", body1); + } + + assertDoesNotThrow(() -> { + client.customPut(path0, parameters0, body0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/test/all", req.path); + assertEquals("PUT", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"body\":\"parameters\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue("{\"query\":\"parameters\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("deleteApiKey0") + void deleteApiKeyTest0() { + String key0 = "myTestApiKey"; + + assertDoesNotThrow(() -> { + client.deleteApiKey(key0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/keys/myTestApiKey", req.path); + assertEquals("DELETE", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("deleteBy0") + void deleteByTest0() { + String indexName0 = "theIndexName"; + DeleteByParams deleteByParams0 = new DeleteByParams(); + { + String filters1 = "brand:brandName"; + deleteByParams0.setFilters(filters1); + } + + assertDoesNotThrow(() -> { + client.deleteBy(indexName0, deleteByParams0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/theIndexName/deleteByQuery", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"filters\":\"brand:brandName\"}", req.body, JSONCompareMode.STRICT)); + } + + @Test + @DisplayName("deleteIndex0") + void deleteIndexTest0() { + String indexName0 = "theIndexName"; + + assertDoesNotThrow(() -> { + client.deleteIndex(indexName0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/theIndexName", req.path); + assertEquals("DELETE", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("deleteObject0") + void deleteObjectTest0() { + String indexName0 = "theIndexName"; + String objectID0 = "uniqueID"; + + assertDoesNotThrow(() -> { + client.deleteObject(indexName0, objectID0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/theIndexName/uniqueID", req.path); + assertEquals("DELETE", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("delete rule simple case") + void deleteRuleTest0() { + String indexName0 = "indexName"; + String objectID0 = "id1"; + + assertDoesNotThrow(() -> { + client.deleteRule(indexName0, objectID0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/indexName/rules/id1", req.path); + assertEquals("DELETE", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("delete rule with simple characters to encode in objectID") + void deleteRuleTest1() { + String indexName0 = "indexName"; + String objectID0 = "test/with/slash"; + + assertDoesNotThrow(() -> { + client.deleteRule(indexName0, objectID0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/indexName/rules/test%2Fwith%2Fslash", req.path); + assertEquals("DELETE", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("deleteSource0") + void deleteSourceTest0() { + String source0 = "theSource"; + + assertDoesNotThrow(() -> { + client.deleteSource(source0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/security/sources/theSource", req.path); + assertEquals("DELETE", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("deleteSynonym0") + void deleteSynonymTest0() { + String indexName0 = "indexName"; + String objectID0 = "id1"; + + assertDoesNotThrow(() -> { + client.deleteSynonym(indexName0, objectID0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/indexName/synonyms/id1", req.path); + assertEquals("DELETE", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("getApiKey0") + void getApiKeyTest0() { + String key0 = "myTestApiKey"; + + assertDoesNotThrow(() -> { + client.getApiKey(key0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/keys/myTestApiKey", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("get getDictionaryLanguages") + void getDictionaryLanguagesTest0() { + assertDoesNotThrow(() -> { + client.getDictionaryLanguages(); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/dictionaries/*/languages", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("get getDictionarySettings results") + void getDictionarySettingsTest0() { + assertDoesNotThrow(() -> { + client.getDictionarySettings(); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/dictionaries/*/settings", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("getLogs with minimal parameters") + void getLogsTest0() { + assertDoesNotThrow(() -> { + client.getLogs(); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/logs", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("getLogs with parameters") + void getLogsTest1() { + int offset0 = 5; + int length0 = 10; + String indexName0 = "theIndexName"; + LogType type0 = LogType.fromValue("all"); + + assertDoesNotThrow(() -> { + client.getLogs(offset0, length0, indexName0, type0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/logs", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue( + "{\"offset\":\"5\",\"length\":\"10\",\"indexName\":\"theIndexName\",\"type\":\"all\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("getObject0") + void getObjectTest0() { + String indexName0 = "theIndexName"; + String objectID0 = "uniqueID"; + List attributesToRetrieve0 = new ArrayList<>(); + { + String attributesToRetrieve_01 = "attr1"; + attributesToRetrieve0.add(attributesToRetrieve_01); + String attributesToRetrieve_11 = "attr2"; + attributesToRetrieve0.add(attributesToRetrieve_11); + } + + assertDoesNotThrow(() -> { + client.getObject(indexName0, objectID0, attributesToRetrieve0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/theIndexName/uniqueID", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue( + "{\"attributesToRetrieve\":\"attr1,attr2\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("getObjects0") + void getObjectsTest0() { + GetObjectsParams getObjectsParams0 = new GetObjectsParams(); + { + List requests1 = new ArrayList<>(); + { + GetObjectsRequest requests_02 = new GetObjectsRequest(); + { + List attributesToRetrieve3 = new ArrayList<>(); + { + String attributesToRetrieve_04 = "attr1"; + attributesToRetrieve3.add(attributesToRetrieve_04); + String attributesToRetrieve_14 = "attr2"; + attributesToRetrieve3.add(attributesToRetrieve_14); + } + requests_02.setAttributesToRetrieve(attributesToRetrieve3); + String objectID3 = "uniqueID"; + requests_02.setObjectID(objectID3); + String indexName3 = "theIndexName"; + requests_02.setIndexName(indexName3); + } + requests1.add(requests_02); + } + getObjectsParams0.setRequests(requests1); + } + + assertDoesNotThrow(() -> { + client.getObjects(getObjectsParams0, Object.class); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/*/objects", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals( + "{\"requests\":[{\"attributesToRetrieve\":[\"attr1\",\"attr2\"],\"objectID\":\"uniqueID\",\"indexName\":\"theIndexName\"}]}", + req.body, + JSONCompareMode.STRICT + ) + ); + } + + @Test + @DisplayName("getRule0") + void getRuleTest0() { + String indexName0 = "indexName"; + String objectID0 = "id1"; + + assertDoesNotThrow(() -> { + client.getRule(indexName0, objectID0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/indexName/rules/id1", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("getSettings0") + void getSettingsTest0() { + String indexName0 = "theIndexName"; + + assertDoesNotThrow(() -> { + client.getSettings(indexName0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/theIndexName/settings", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("getSources0") + void getSourcesTest0() { + assertDoesNotThrow(() -> { + client.getSources(); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/security/sources", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("getSynonym0") + void getSynonymTest0() { + String indexName0 = "indexName"; + String objectID0 = "id1"; + + assertDoesNotThrow(() -> { + client.getSynonym(indexName0, objectID0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/indexName/synonyms/id1", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("getTask0") + void getTaskTest0() { + String indexName0 = "theIndexName"; + long taskID0 = 123L; + + assertDoesNotThrow(() -> { + client.getTask(indexName0, taskID0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/theIndexName/task/123", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("getTopUserIds0") + void getTopUserIdsTest0() { + assertDoesNotThrow(() -> { + client.getTopUserIds(); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/clusters/mapping/top", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("getUserId0") + void getUserIdTest0() { + String userID0 = "uniqueID"; + + assertDoesNotThrow(() -> { + client.getUserId(userID0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/clusters/mapping/uniqueID", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("hasPendingMappings with minimal parameters") + void hasPendingMappingsTest0() { + assertDoesNotThrow(() -> { + client.hasPendingMappings(); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/clusters/mapping/pending", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("hasPendingMappings with parameters") + void hasPendingMappingsTest1() { + boolean getClusters0 = true; + + assertDoesNotThrow(() -> { + client.hasPendingMappings(getClusters0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/clusters/mapping/pending", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue("{\"getClusters\":\"true\"}", new TypeReference>() {}); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("listApiKeys0") + void listApiKeysTest0() { + assertDoesNotThrow(() -> { + client.listApiKeys(); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/keys", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("listClusters0") + void listClustersTest0() { + assertDoesNotThrow(() -> { + client.listClusters(); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/clusters", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("listIndices with minimal parameters") + void listIndicesTest0() { + assertDoesNotThrow(() -> { + client.listIndices(); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("listIndices with parameters") + void listIndicesTest1() { + int page0 = 8; + int hitsPerPage0 = 3; + + assertDoesNotThrow(() -> { + client.listIndices(page0, hitsPerPage0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue( + "{\"page\":\"8\",\"hitsPerPage\":\"3\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("listUserIds with minimal parameters") + void listUserIdsTest0() { + assertDoesNotThrow(() -> { + client.listUserIds(); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/clusters/mapping", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("listUserIds with parameters") + void listUserIdsTest1() { + int page0 = 8; + int hitsPerPage0 = 100; + + assertDoesNotThrow(() -> { + client.listUserIds(page0, hitsPerPage0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/clusters/mapping", req.path); + assertEquals("GET", req.method); + assertNull(req.body); + + try { + Map expectedQuery = json.readValue( + "{\"page\":\"8\",\"hitsPerPage\":\"100\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("multipleBatch0") + void multipleBatchTest0() { + BatchParams batchParams0 = new BatchParams(); + { + List requests1 = new ArrayList<>(); + { + MultipleBatchRequest requests_02 = new MultipleBatchRequest(); + { + Action action3 = Action.fromValue("addObject"); + requests_02.setAction(action3); + Map body3 = new HashMap<>(); + { + String key4 = "value"; + body3.put("key", key4); + } + requests_02.setBody(body3); + String indexName3 = "theIndexName"; + requests_02.setIndexName(indexName3); + } + requests1.add(requests_02); + } + batchParams0.setRequests(requests1); + } + + assertDoesNotThrow(() -> { + client.multipleBatch(batchParams0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/*/batch", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals( + "{\"requests\":[{\"action\":\"addObject\",\"body\":{\"key\":\"value\"},\"indexName\":\"theIndexName\"}]}", + req.body, + JSONCompareMode.STRICT + ) + ); + } + + @Test + @DisplayName("operationIndex0") + void operationIndexTest0() { + String indexName0 = "theIndexName"; + OperationIndexParams operationIndexParams0 = new OperationIndexParams(); + { + OperationType operation1 = OperationType.fromValue("copy"); + operationIndexParams0.setOperation(operation1); + String destination1 = "dest"; + operationIndexParams0.setDestination(destination1); + List scope1 = new ArrayList<>(); + { + ScopeType scope_02 = ScopeType.fromValue("rules"); + scope1.add(scope_02); + ScopeType scope_12 = ScopeType.fromValue("settings"); + scope1.add(scope_12); + } + operationIndexParams0.setScope(scope1); + } + + assertDoesNotThrow(() -> { + client.operationIndex(indexName0, operationIndexParams0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/theIndexName/operation", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals( + "{\"operation\":\"copy\",\"destination\":\"dest\",\"scope\":[\"rules\",\"settings\"]}", + req.body, + JSONCompareMode.STRICT + ) + ); + } + + @Test + @DisplayName("partialUpdateObject0") + void partialUpdateObjectTest0() { + String indexName0 = "theIndexName"; + String objectID0 = "uniqueID"; + Map attributesToUpdate0 = new HashMap<>(); + { + String id11 = "test"; + attributesToUpdate0.put("id1", AttributeToUpdate.of(id11)); + BuiltInOperation id21 = new BuiltInOperation(); + { + BuiltInOperationType operation2 = BuiltInOperationType.fromValue("AddUnique"); + id21.setOperation(operation2); + String value2 = "test2"; + id21.setValue(value2); + } + attributesToUpdate0.put("id2", id21); + } + boolean createIfNotExists0 = true; + + assertDoesNotThrow(() -> { + client.partialUpdateObject(indexName0, objectID0, attributesToUpdate0, createIfNotExists0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/theIndexName/uniqueID/partial", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals( + "{\"id1\":\"test\",\"id2\":{\"_operation\":\"AddUnique\",\"value\":\"test2\"}}", + req.body, + JSONCompareMode.STRICT + ) + ); + + try { + Map expectedQuery = json.readValue( + "{\"createIfNotExists\":\"true\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("removeUserId0") + void removeUserIdTest0() { + String userID0 = "uniqueID"; + + assertDoesNotThrow(() -> { + client.removeUserId(userID0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/clusters/mapping/uniqueID", req.path); + assertEquals("DELETE", req.method); + assertNull(req.body); + } + + @Test + @DisplayName("replaceSources0") + void replaceSourcesTest0() { + List source0 = new ArrayList<>(); + { + Source source_01 = new Source(); + { + String source2 = "theSource"; + source_01.setSource(source2); + String description2 = "theDescription"; + source_01.setDescription(description2); + } + source0.add(source_01); + } + + assertDoesNotThrow(() -> { + client.replaceSources(source0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/security/sources", req.path); + assertEquals("PUT", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals("[{\"source\":\"theSource\",\"description\":\"theDescription\"}]", req.body, JSONCompareMode.STRICT) + ); + } + + @Test + @DisplayName("restoreApiKey0") + void restoreApiKeyTest0() { + String key0 = "myApiKey"; + + assertDoesNotThrow(() -> { + client.restoreApiKey(key0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/keys/myApiKey/restore", req.path); + assertEquals("POST", req.method); + assertEquals("{}", req.body); + } + + @Test + @DisplayName("saveObject0") + void saveObjectTest0() { + String indexName0 = "theIndexName"; + Map body0 = new HashMap<>(); + { + String objectID1 = "id"; + body0.put("objectID", objectID1); + String test1 = "val"; + body0.put("test", test1); + } + + assertDoesNotThrow(() -> { + client.saveObject(indexName0, body0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/theIndexName", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"objectID\":\"id\",\"test\":\"val\"}", req.body, JSONCompareMode.STRICT)); + } + + @Test + @DisplayName("saveRule with minimal parameters") + void saveRuleTest0() { + String indexName0 = "indexName"; + String objectID0 = "id1"; + Rule rule0 = new Rule(); + { + String objectID1 = "id1"; + rule0.setObjectID(objectID1); + List conditions1 = new ArrayList<>(); + { + Condition conditions_02 = new Condition(); + { + String pattern3 = "apple"; + conditions_02.setPattern(pattern3); + Anchoring anchoring3 = Anchoring.fromValue("contains"); + conditions_02.setAnchoring(anchoring3); + } + conditions1.add(conditions_02); + } + rule0.setConditions(conditions1); + } + + assertDoesNotThrow(() -> { + client.saveRule(indexName0, objectID0, rule0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/indexName/rules/id1", req.path); + assertEquals("PUT", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals( + "{\"objectID\":\"id1\",\"conditions\":[{\"pattern\":\"apple\",\"anchoring\":\"contains\"}]}", + req.body, + JSONCompareMode.STRICT + ) + ); + } + + @Test + @DisplayName("saveRule with all parameters") + void saveRuleTest1() { + String indexName0 = "indexName"; + String objectID0 = "id1"; + Rule rule0 = new Rule(); + { + String objectID1 = "id1"; + rule0.setObjectID(objectID1); + List conditions1 = new ArrayList<>(); + { + Condition conditions_02 = new Condition(); + { + String pattern3 = "apple"; + conditions_02.setPattern(pattern3); + Anchoring anchoring3 = Anchoring.fromValue("contains"); + conditions_02.setAnchoring(anchoring3); + boolean alternatives3 = false; + conditions_02.setAlternatives(alternatives3); + String context3 = "search"; + conditions_02.setContext(context3); + } + conditions1.add(conditions_02); + } + rule0.setConditions(conditions1); + Consequence consequence1 = new Consequence(); + { + ConsequenceParams params2 = new ConsequenceParams(); + { + String filters3 = "brand:apple"; + params2.setFilters(filters3); + ConsequenceQueryObject query3 = new ConsequenceQueryObject(); + { + List remove4 = new ArrayList<>(); + { + String remove_05 = "algolia"; + remove4.add(remove_05); + } + query3.setRemove(remove4); + List edits4 = new ArrayList<>(); + { + Edit edits_05 = new Edit(); + { + EditType type6 = EditType.fromValue("remove"); + edits_05.setType(type6); + String delete6 = "abc"; + edits_05.setDelete(delete6); + String insert6 = "cde"; + edits_05.setInsert(insert6); + } + edits4.add(edits_05); + Edit edits_15 = new Edit(); + { + EditType type6 = EditType.fromValue("replace"); + edits_15.setType(type6); + String delete6 = "abc"; + edits_15.setDelete(delete6); + String insert6 = "cde"; + edits_15.setInsert(insert6); + } + edits4.add(edits_15); + } + query3.setEdits(edits4); + } + params2.setQuery(query3); + } + consequence1.setParams(params2); + List hide2 = new ArrayList<>(); + { + ConsequenceHide hide_03 = new ConsequenceHide(); + { + String objectID4 = "321"; + hide_03.setObjectID(objectID4); + } + hide2.add(hide_03); + } + consequence1.setHide(hide2); + boolean filterPromotes2 = false; + consequence1.setFilterPromotes(filterPromotes2); + Map userData2 = Map.of("algolia", "aloglia"); + consequence1.setUserData(userData2); + List promote2 = new ArrayList<>(); + { + PromoteObjectID promote_03 = new PromoteObjectID(); + { + String objectID4 = "abc"; + promote_03.setObjectID(objectID4); + int position4 = 3; + promote_03.setPosition(position4); + } + promote2.add(promote_03); + PromoteObjectIDs promote_13 = new PromoteObjectIDs(); + { + List objectIDs4 = new ArrayList<>(); + { + String objectIDs_05 = "abc"; + objectIDs4.add(objectIDs_05); + String objectIDs_15 = "def"; + objectIDs4.add(objectIDs_15); + } + promote_13.setObjectIDs(objectIDs4); + int position4 = 1; + promote_13.setPosition(position4); + } + promote2.add(promote_13); + } + consequence1.setPromote(promote2); + } + rule0.setConsequence(consequence1); + String description1 = "test"; + rule0.setDescription(description1); + boolean enabled1 = true; + rule0.setEnabled(enabled1); + List validity1 = new ArrayList<>(); + { + TimeRange validity_02 = new TimeRange(); + { + int from3 = 1656670273; + validity_02.setFrom(from3); + int until3 = 1656670277; + validity_02.setUntil(until3); + } + validity1.add(validity_02); + } + rule0.setValidity(validity1); + } + boolean forwardToReplicas0 = true; + + assertDoesNotThrow(() -> { + client.saveRule(indexName0, objectID0, rule0, forwardToReplicas0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/indexName/rules/id1", req.path); + assertEquals("PUT", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals( + "{\"objectID\":\"id1\",\"conditions\":[{\"pattern\":\"apple\",\"anchoring\":\"contains\",\"alternatives\":false,\"context\":\"search\"}],\"consequence\":{\"params\":{\"filters\":\"brand:apple\",\"query\":{\"remove\":[\"algolia\"],\"edits\":[{\"type\":\"remove\",\"delete\":\"abc\",\"insert\":\"cde\"},{\"type\":\"replace\",\"delete\":\"abc\",\"insert\":\"cde\"}]}},\"hide\":[{\"objectID\":\"321\"}],\"filterPromotes\":false,\"userData\":{\"algolia\":\"aloglia\"},\"promote\":[{\"objectID\":\"abc\",\"position\":3},{\"objectIDs\":[\"abc\",\"def\"],\"position\":1}]},\"description\":\"test\",\"enabled\":true,\"validity\":[{\"from\":1656670273,\"until\":1656670277}]}", + req.body, + JSONCompareMode.STRICT + ) + ); + + try { + Map expectedQuery = json.readValue( + "{\"forwardToReplicas\":\"true\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("saveRules with minimal parameters") + void saveRulesTest0() { + String indexName0 = "indexName"; + List rules0 = new ArrayList<>(); + { + Rule rules_01 = new Rule(); + { + String objectID2 = "a-rule-id"; + rules_01.setObjectID(objectID2); + List conditions2 = new ArrayList<>(); + { + Condition conditions_03 = new Condition(); + { + String pattern4 = "smartphone"; + conditions_03.setPattern(pattern4); + Anchoring anchoring4 = Anchoring.fromValue("contains"); + conditions_03.setAnchoring(anchoring4); + } + conditions2.add(conditions_03); + } + rules_01.setConditions(conditions2); + } + rules0.add(rules_01); + Rule rules_11 = new Rule(); + { + String objectID2 = "a-second-rule-id"; + rules_11.setObjectID(objectID2); + List conditions2 = new ArrayList<>(); + { + Condition conditions_03 = new Condition(); + { + String pattern4 = "apple"; + conditions_03.setPattern(pattern4); + Anchoring anchoring4 = Anchoring.fromValue("contains"); + conditions_03.setAnchoring(anchoring4); + } + conditions2.add(conditions_03); + } + rules_11.setConditions(conditions2); + } + rules0.add(rules_11); + } + + assertDoesNotThrow(() -> { + client.saveRules(indexName0, rules0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/indexName/rules/batch", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals( + "[{\"objectID\":\"a-rule-id\",\"conditions\":[{\"pattern\":\"smartphone\",\"anchoring\":\"contains\"}]},{\"objectID\":\"a-second-rule-id\",\"conditions\":[{\"pattern\":\"apple\",\"anchoring\":\"contains\"}]}]", + req.body, + JSONCompareMode.STRICT + ) + ); + } + + @Test + @DisplayName("saveRules with all parameters") + void saveRulesTest1() { + String indexName0 = "indexName"; + List rules0 = new ArrayList<>(); + { + Rule rules_01 = new Rule(); + { + String objectID2 = "id1"; + rules_01.setObjectID(objectID2); + List conditions2 = new ArrayList<>(); + { + Condition conditions_03 = new Condition(); + { + String pattern4 = "apple"; + conditions_03.setPattern(pattern4); + Anchoring anchoring4 = Anchoring.fromValue("contains"); + conditions_03.setAnchoring(anchoring4); + boolean alternatives4 = false; + conditions_03.setAlternatives(alternatives4); + String context4 = "search"; + conditions_03.setContext(context4); + } + conditions2.add(conditions_03); + } + rules_01.setConditions(conditions2); + Consequence consequence2 = new Consequence(); + { + ConsequenceParams params3 = new ConsequenceParams(); + { + String filters4 = "brand:apple"; + params3.setFilters(filters4); + ConsequenceQueryObject query4 = new ConsequenceQueryObject(); + { + List remove5 = new ArrayList<>(); + { + String remove_06 = "algolia"; + remove5.add(remove_06); + } + query4.setRemove(remove5); + List edits5 = new ArrayList<>(); + { + Edit edits_06 = new Edit(); + { + EditType type7 = EditType.fromValue("remove"); + edits_06.setType(type7); + String delete7 = "abc"; + edits_06.setDelete(delete7); + String insert7 = "cde"; + edits_06.setInsert(insert7); + } + edits5.add(edits_06); + Edit edits_16 = new Edit(); + { + EditType type7 = EditType.fromValue("replace"); + edits_16.setType(type7); + String delete7 = "abc"; + edits_16.setDelete(delete7); + String insert7 = "cde"; + edits_16.setInsert(insert7); + } + edits5.add(edits_16); + } + query4.setEdits(edits5); + } + params3.setQuery(query4); + } + consequence2.setParams(params3); + List hide3 = new ArrayList<>(); + { + ConsequenceHide hide_04 = new ConsequenceHide(); + { + String objectID5 = "321"; + hide_04.setObjectID(objectID5); + } + hide3.add(hide_04); + } + consequence2.setHide(hide3); + boolean filterPromotes3 = false; + consequence2.setFilterPromotes(filterPromotes3); + Map userData3 = Map.of("algolia", "aloglia"); + consequence2.setUserData(userData3); + List promote3 = new ArrayList<>(); + { + PromoteObjectID promote_04 = new PromoteObjectID(); + { + String objectID5 = "abc"; + promote_04.setObjectID(objectID5); + int position5 = 3; + promote_04.setPosition(position5); + } + promote3.add(promote_04); + PromoteObjectIDs promote_14 = new PromoteObjectIDs(); + { + List objectIDs5 = new ArrayList<>(); + { + String objectIDs_06 = "abc"; + objectIDs5.add(objectIDs_06); + String objectIDs_16 = "def"; + objectIDs5.add(objectIDs_16); + } + promote_14.setObjectIDs(objectIDs5); + int position5 = 1; + promote_14.setPosition(position5); + } + promote3.add(promote_14); + } + consequence2.setPromote(promote3); + } + rules_01.setConsequence(consequence2); + String description2 = "test"; + rules_01.setDescription(description2); + boolean enabled2 = true; + rules_01.setEnabled(enabled2); + List validity2 = new ArrayList<>(); + { + TimeRange validity_03 = new TimeRange(); + { + int from4 = 1656670273; + validity_03.setFrom(from4); + int until4 = 1656670277; + validity_03.setUntil(until4); + } + validity2.add(validity_03); + } + rules_01.setValidity(validity2); + } + rules0.add(rules_01); + } + boolean forwardToReplicas0 = true; + boolean clearExistingRules0 = true; + + assertDoesNotThrow(() -> { + client.saveRules(indexName0, rules0, forwardToReplicas0, clearExistingRules0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/indexName/rules/batch", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals( + "[{\"objectID\":\"id1\",\"conditions\":[{\"pattern\":\"apple\",\"anchoring\":\"contains\",\"alternatives\":false,\"context\":\"search\"}],\"consequence\":{\"params\":{\"filters\":\"brand:apple\",\"query\":{\"remove\":[\"algolia\"],\"edits\":[{\"type\":\"remove\",\"delete\":\"abc\",\"insert\":\"cde\"},{\"type\":\"replace\",\"delete\":\"abc\",\"insert\":\"cde\"}]}},\"hide\":[{\"objectID\":\"321\"}],\"filterPromotes\":false,\"userData\":{\"algolia\":\"aloglia\"},\"promote\":[{\"objectID\":\"abc\",\"position\":3},{\"objectIDs\":[\"abc\",\"def\"],\"position\":1}]},\"description\":\"test\",\"enabled\":true,\"validity\":[{\"from\":1656670273,\"until\":1656670277}]}]", + req.body, + JSONCompareMode.STRICT + ) + ); + + try { + Map expectedQuery = json.readValue( + "{\"forwardToReplicas\":\"true\",\"clearExistingRules\":\"true\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("saveSynonym0") + void saveSynonymTest0() { + String indexName0 = "indexName"; + String objectID0 = "id1"; + SynonymHit synonymHit0 = new SynonymHit(); + { + String objectID1 = "id1"; + synonymHit0.setObjectID(objectID1); + SynonymType type1 = SynonymType.fromValue("synonym"); + synonymHit0.setType(type1); + List synonyms1 = new ArrayList<>(); + { + String synonyms_02 = "car"; + synonyms1.add(synonyms_02); + String synonyms_12 = "vehicule"; + synonyms1.add(synonyms_12); + String synonyms_22 = "auto"; + synonyms1.add(synonyms_22); + } + synonymHit0.setSynonyms(synonyms1); + } + boolean forwardToReplicas0 = true; + + assertDoesNotThrow(() -> { + client.saveSynonym(indexName0, objectID0, synonymHit0, forwardToReplicas0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/indexName/synonyms/id1", req.path); + assertEquals("PUT", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals( + "{\"objectID\":\"id1\",\"type\":\"synonym\",\"synonyms\":[\"car\",\"vehicule\",\"auto\"]}", + req.body, + JSONCompareMode.STRICT + ) + ); + + try { + Map expectedQuery = json.readValue( + "{\"forwardToReplicas\":\"true\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("saveSynonyms0") + void saveSynonymsTest0() { + String indexName0 = "indexName"; + List synonymHit0 = new ArrayList<>(); + { + SynonymHit synonymHit_01 = new SynonymHit(); + { + String objectID2 = "id1"; + synonymHit_01.setObjectID(objectID2); + SynonymType type2 = SynonymType.fromValue("synonym"); + synonymHit_01.setType(type2); + List synonyms2 = new ArrayList<>(); + { + String synonyms_03 = "car"; + synonyms2.add(synonyms_03); + String synonyms_13 = "vehicule"; + synonyms2.add(synonyms_13); + String synonyms_23 = "auto"; + synonyms2.add(synonyms_23); + } + synonymHit_01.setSynonyms(synonyms2); + } + synonymHit0.add(synonymHit_01); + SynonymHit synonymHit_11 = new SynonymHit(); + { + String objectID2 = "id2"; + synonymHit_11.setObjectID(objectID2); + SynonymType type2 = SynonymType.fromValue("onewaysynonym"); + synonymHit_11.setType(type2); + String input2 = "iphone"; + synonymHit_11.setInput(input2); + List synonyms2 = new ArrayList<>(); + { + String synonyms_03 = "ephone"; + synonyms2.add(synonyms_03); + String synonyms_13 = "aphone"; + synonyms2.add(synonyms_13); + String synonyms_23 = "yphone"; + synonyms2.add(synonyms_23); + } + synonymHit_11.setSynonyms(synonyms2); + } + synonymHit0.add(synonymHit_11); + } + boolean forwardToReplicas0 = true; + boolean replaceExistingSynonyms0 = false; + + assertDoesNotThrow(() -> { + client.saveSynonyms(indexName0, synonymHit0, forwardToReplicas0, replaceExistingSynonyms0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/indexName/synonyms/batch", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals( + "[{\"objectID\":\"id1\",\"type\":\"synonym\",\"synonyms\":[\"car\",\"vehicule\",\"auto\"]},{\"objectID\":\"id2\",\"type\":\"onewaysynonym\",\"input\":\"iphone\",\"synonyms\":[\"ephone\",\"aphone\",\"yphone\"]}]", + req.body, + JSONCompareMode.STRICT + ) + ); + + try { + Map expectedQuery = json.readValue( + "{\"forwardToReplicas\":\"true\",\"replaceExistingSynonyms\":\"false\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("search for a single hits request with minimal parameters") + void searchTest0() { + SearchMethodParams searchMethodParams0 = new SearchMethodParams(); + { + List requests1 = new ArrayList<>(); + { + SearchForHits requests_02 = new SearchForHits(); + { + String indexName3 = "cts_e2e_search_empty_index"; + requests_02.setIndexName(indexName3); + } + requests1.add(requests_02); + } + searchMethodParams0.setRequests(requests1); + } + + assertDoesNotThrow(() -> { + client.search(searchMethodParams0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/*/queries", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals("{\"requests\":[{\"indexName\":\"cts_e2e_search_empty_index\"}]}", req.body, JSONCompareMode.STRICT) + ); + } + + @Test + @DisplayName("search for a single facet request with minimal parameters") + void searchTest1() { + SearchMethodParams searchMethodParams0 = new SearchMethodParams(); + { + List requests1 = new ArrayList<>(); + { + SearchForFacets requests_02 = new SearchForFacets(); + { + String indexName3 = "cts_e2e_search_facet"; + requests_02.setIndexName(indexName3); + SearchTypeFacet type3 = SearchTypeFacet.fromValue("facet"); + requests_02.setType(type3); + String facet3 = "editor"; + requests_02.setFacet(facet3); + } + requests1.add(requests_02); + } + searchMethodParams0.setRequests(requests1); + SearchStrategy strategy1 = SearchStrategy.fromValue("stopIfEnoughMatches"); + searchMethodParams0.setStrategy(strategy1); + } + + assertDoesNotThrow(() -> { + client.search(searchMethodParams0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/*/queries", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals( + "{\"requests\":[{\"indexName\":\"cts_e2e_search_facet\",\"type\":\"facet\",\"facet\":\"editor\"}],\"strategy\":\"stopIfEnoughMatches\"}", + req.body, + JSONCompareMode.STRICT + ) + ); + } + + @Test + @DisplayName("search for a single hits request with all parameters") + void searchTest2() { + SearchMethodParams searchMethodParams0 = new SearchMethodParams(); + { + List requests1 = new ArrayList<>(); + { + SearchForHits requests_02 = new SearchForHits(); + { + String indexName3 = "theIndexName"; + requests_02.setIndexName(indexName3); + String query3 = "myQuery"; + requests_02.setQuery(query3); + int hitsPerPage3 = 50; + requests_02.setHitsPerPage(hitsPerPage3); + SearchTypeDefault type3 = SearchTypeDefault.fromValue("default"); + requests_02.setType(type3); + } + requests1.add(requests_02); + } + searchMethodParams0.setRequests(requests1); + } + + assertDoesNotThrow(() -> { + client.search(searchMethodParams0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/*/queries", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals( + "{\"requests\":[{\"indexName\":\"theIndexName\",\"query\":\"myQuery\",\"hitsPerPage\":50,\"type\":\"default\"}]}", + req.body, + JSONCompareMode.STRICT + ) + ); + } + + @Test + @DisplayName("search for a single facet request with all parameters") + void searchTest3() { + SearchMethodParams searchMethodParams0 = new SearchMethodParams(); + { + List requests1 = new ArrayList<>(); + { + SearchForFacets requests_02 = new SearchForFacets(); + { + String indexName3 = "theIndexName"; + requests_02.setIndexName(indexName3); + SearchTypeFacet type3 = SearchTypeFacet.fromValue("facet"); + requests_02.setType(type3); + String facet3 = "theFacet"; + requests_02.setFacet(facet3); + String facetQuery3 = "theFacetQuery"; + requests_02.setFacetQuery(facetQuery3); + String query3 = "theQuery"; + requests_02.setQuery(query3); + int maxFacetHits3 = 50; + requests_02.setMaxFacetHits(maxFacetHits3); + } + requests1.add(requests_02); + } + searchMethodParams0.setRequests(requests1); + SearchStrategy strategy1 = SearchStrategy.fromValue("stopIfEnoughMatches"); + searchMethodParams0.setStrategy(strategy1); + } + + assertDoesNotThrow(() -> { + client.search(searchMethodParams0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/*/queries", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals( + "{\"requests\":[{\"indexName\":\"theIndexName\",\"type\":\"facet\",\"facet\":\"theFacet\",\"facetQuery\":\"theFacetQuery\",\"query\":\"theQuery\",\"maxFacetHits\":50}],\"strategy\":\"stopIfEnoughMatches\"}", + req.body, + JSONCompareMode.STRICT + ) + ); + } + + @Test + @DisplayName("search for multiple mixed requests in multiple indices with minimal parameters") + void searchTest4() { + SearchMethodParams searchMethodParams0 = new SearchMethodParams(); + { + List requests1 = new ArrayList<>(); + { + SearchForHits requests_02 = new SearchForHits(); + { + String indexName3 = "theIndexName"; + requests_02.setIndexName(indexName3); + } + requests1.add(requests_02); + SearchForFacets requests_12 = new SearchForFacets(); + { + String indexName3 = "theIndexName2"; + requests_12.setIndexName(indexName3); + SearchTypeFacet type3 = SearchTypeFacet.fromValue("facet"); + requests_12.setType(type3); + String facet3 = "theFacet"; + requests_12.setFacet(facet3); + } + requests1.add(requests_12); + SearchForHits requests_22 = new SearchForHits(); + { + String indexName3 = "theIndexName"; + requests_22.setIndexName(indexName3); + SearchTypeDefault type3 = SearchTypeDefault.fromValue("default"); + requests_22.setType(type3); + } + requests1.add(requests_22); + } + searchMethodParams0.setRequests(requests1); + SearchStrategy strategy1 = SearchStrategy.fromValue("stopIfEnoughMatches"); + searchMethodParams0.setStrategy(strategy1); + } + + assertDoesNotThrow(() -> { + client.search(searchMethodParams0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/*/queries", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals( + "{\"requests\":[{\"indexName\":\"theIndexName\"},{\"indexName\":\"theIndexName2\",\"type\":\"facet\",\"facet\":\"theFacet\"},{\"indexName\":\"theIndexName\",\"type\":\"default\"}],\"strategy\":\"stopIfEnoughMatches\"}", + req.body, + JSONCompareMode.STRICT + ) + ); + } + + @Test + @DisplayName("search for multiple mixed requests in multiple indices with all parameters") + void searchTest5() { + SearchMethodParams searchMethodParams0 = new SearchMethodParams(); + { + List requests1 = new ArrayList<>(); + { + SearchForFacets requests_02 = new SearchForFacets(); + { + String indexName3 = "theIndexName"; + requests_02.setIndexName(indexName3); + SearchTypeFacet type3 = SearchTypeFacet.fromValue("facet"); + requests_02.setType(type3); + String facet3 = "theFacet"; + requests_02.setFacet(facet3); + String facetQuery3 = "theFacetQuery"; + requests_02.setFacetQuery(facetQuery3); + String query3 = "theQuery"; + requests_02.setQuery(query3); + int maxFacetHits3 = 50; + requests_02.setMaxFacetHits(maxFacetHits3); + } + requests1.add(requests_02); + SearchForHits requests_12 = new SearchForHits(); + { + String indexName3 = "theIndexName"; + requests_12.setIndexName(indexName3); + String query3 = "myQuery"; + requests_12.setQuery(query3); + int hitsPerPage3 = 50; + requests_12.setHitsPerPage(hitsPerPage3); + SearchTypeDefault type3 = SearchTypeDefault.fromValue("default"); + requests_12.setType(type3); + } + requests1.add(requests_12); + } + searchMethodParams0.setRequests(requests1); + SearchStrategy strategy1 = SearchStrategy.fromValue("stopIfEnoughMatches"); + searchMethodParams0.setStrategy(strategy1); + } + + assertDoesNotThrow(() -> { + client.search(searchMethodParams0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/*/queries", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals( + "{\"requests\":[{\"indexName\":\"theIndexName\",\"type\":\"facet\",\"facet\":\"theFacet\",\"facetQuery\":\"theFacetQuery\",\"query\":\"theQuery\",\"maxFacetHits\":50},{\"indexName\":\"theIndexName\",\"query\":\"myQuery\",\"hitsPerPage\":50,\"type\":\"default\"}],\"strategy\":\"stopIfEnoughMatches\"}", + req.body, + JSONCompareMode.STRICT + ) + ); + } + + @Test + @DisplayName("search filters accept all of the possible shapes") + void searchTest6() { + SearchMethodParams searchMethodParams0 = new SearchMethodParams(); + { + List requests1 = new ArrayList<>(); + { + SearchForHits requests_02 = new SearchForHits(); + { + String indexName3 = "theIndexName"; + requests_02.setIndexName(indexName3); + String facetFilters3 = "mySearch:filters"; + requests_02.setFacetFilters(FacetFilters.of(facetFilters3)); + String reRankingApplyFilter3 = "mySearch:filters"; + requests_02.setReRankingApplyFilter(ReRankingApplyFilter.of(reRankingApplyFilter3)); + String tagFilters3 = "mySearch:filters"; + requests_02.setTagFilters(TagFilters.of(tagFilters3)); + String numericFilters3 = "mySearch:filters"; + requests_02.setNumericFilters(NumericFilters.of(numericFilters3)); + String optionalFilters3 = "mySearch:filters"; + requests_02.setOptionalFilters(OptionalFilters.of(optionalFilters3)); + } + requests1.add(requests_02); + SearchForHits requests_12 = new SearchForHits(); + { + String indexName3 = "theIndexName"; + requests_12.setIndexName(indexName3); + List facetFilters3 = new ArrayList<>(); + { + String facetFilters_04 = "mySearch:filters"; + facetFilters3.add(MixedSearchFilters.of(facetFilters_04)); + List facetFilters_14 = new ArrayList<>(); + { + String facetFilters_1_05 = "mySearch:filters"; + facetFilters_14.add(facetFilters_1_05); + } + facetFilters3.add(MixedSearchFilters.of(facetFilters_14)); + } + requests_12.setFacetFilters(FacetFilters.of(facetFilters3)); + List reRankingApplyFilter3 = new ArrayList<>(); + { + String reRankingApplyFilter_04 = "mySearch:filters"; + reRankingApplyFilter3.add(MixedSearchFilters.of(reRankingApplyFilter_04)); + List reRankingApplyFilter_14 = new ArrayList<>(); + { + String reRankingApplyFilter_1_05 = "mySearch:filters"; + reRankingApplyFilter_14.add(reRankingApplyFilter_1_05); + } + reRankingApplyFilter3.add(MixedSearchFilters.of(reRankingApplyFilter_14)); + } + requests_12.setReRankingApplyFilter(ReRankingApplyFilter.of(reRankingApplyFilter3)); + List tagFilters3 = new ArrayList<>(); + { + String tagFilters_04 = "mySearch:filters"; + tagFilters3.add(MixedSearchFilters.of(tagFilters_04)); + List tagFilters_14 = new ArrayList<>(); + { + String tagFilters_1_05 = "mySearch:filters"; + tagFilters_14.add(tagFilters_1_05); + } + tagFilters3.add(MixedSearchFilters.of(tagFilters_14)); + } + requests_12.setTagFilters(TagFilters.of(tagFilters3)); + List numericFilters3 = new ArrayList<>(); + { + String numericFilters_04 = "mySearch:filters"; + numericFilters3.add(MixedSearchFilters.of(numericFilters_04)); + List numericFilters_14 = new ArrayList<>(); + { + String numericFilters_1_05 = "mySearch:filters"; + numericFilters_14.add(numericFilters_1_05); + } + numericFilters3.add(MixedSearchFilters.of(numericFilters_14)); + } + requests_12.setNumericFilters(NumericFilters.of(numericFilters3)); + List optionalFilters3 = new ArrayList<>(); + { + String optionalFilters_04 = "mySearch:filters"; + optionalFilters3.add(MixedSearchFilters.of(optionalFilters_04)); + List optionalFilters_14 = new ArrayList<>(); + { + String optionalFilters_1_05 = "mySearch:filters"; + optionalFilters_14.add(optionalFilters_1_05); + } + optionalFilters3.add(MixedSearchFilters.of(optionalFilters_14)); + } + requests_12.setOptionalFilters(OptionalFilters.of(optionalFilters3)); + } + requests1.add(requests_12); + } + searchMethodParams0.setRequests(requests1); + } + + assertDoesNotThrow(() -> { + client.search(searchMethodParams0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/*/queries", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals( + "{\"requests\":[{\"indexName\":\"theIndexName\",\"facetFilters\":\"mySearch:filters\",\"reRankingApplyFilter\":\"mySearch:filters\",\"tagFilters\":\"mySearch:filters\",\"numericFilters\":\"mySearch:filters\",\"optionalFilters\":\"mySearch:filters\"},{\"indexName\":\"theIndexName\",\"facetFilters\":[\"mySearch:filters\",[\"mySearch:filters\"]],\"reRankingApplyFilter\":[\"mySearch:filters\",[\"mySearch:filters\"]],\"tagFilters\":[\"mySearch:filters\",[\"mySearch:filters\"]],\"numericFilters\":[\"mySearch:filters\",[\"mySearch:filters\"]],\"optionalFilters\":[\"mySearch:filters\",[\"mySearch:filters\"]]}]}", + req.body, + JSONCompareMode.STRICT + ) + ); + } + + @Test + @DisplayName("search with all search parameters") + void searchTest7() { + SearchMethodParams searchMethodParams0 = new SearchMethodParams(); + { + List requests1 = new ArrayList<>(); + { + SearchForHits requests_02 = new SearchForHits(); + { + boolean advancedSyntax3 = true; + requests_02.setAdvancedSyntax(advancedSyntax3); + List advancedSyntaxFeatures3 = new ArrayList<>(); + { + AdvancedSyntaxFeatures advancedSyntaxFeatures_04 = AdvancedSyntaxFeatures.fromValue("exactPhrase"); + advancedSyntaxFeatures3.add(advancedSyntaxFeatures_04); + } + requests_02.setAdvancedSyntaxFeatures(advancedSyntaxFeatures3); + boolean allowTyposOnNumericTokens3 = true; + requests_02.setAllowTyposOnNumericTokens(allowTyposOnNumericTokens3); + List alternativesAsExact3 = new ArrayList<>(); + { + AlternativesAsExact alternativesAsExact_04 = AlternativesAsExact.fromValue("multiWordsSynonym"); + alternativesAsExact3.add(alternativesAsExact_04); + } + requests_02.setAlternativesAsExact(alternativesAsExact3); + boolean analytics3 = true; + requests_02.setAnalytics(analytics3); + List analyticsTags3 = new ArrayList<>(); + { + String analyticsTags_04 = ""; + analyticsTags3.add(analyticsTags_04); + } + requests_02.setAnalyticsTags(analyticsTags3); + String aroundLatLng3 = ""; + requests_02.setAroundLatLng(aroundLatLng3); + boolean aroundLatLngViaIP3 = true; + requests_02.setAroundLatLngViaIP(aroundLatLngViaIP3); + int aroundPrecision3 = 0; + requests_02.setAroundPrecision(AroundPrecision.of(aroundPrecision3)); + AroundRadiusAll aroundRadius3 = AroundRadiusAll.fromValue("all"); + requests_02.setAroundRadius(aroundRadius3); + boolean attributeCriteriaComputedByMinProximity3 = true; + requests_02.setAttributeCriteriaComputedByMinProximity(attributeCriteriaComputedByMinProximity3); + List attributesForFaceting3 = new ArrayList<>(); + { + String attributesForFaceting_04 = ""; + attributesForFaceting3.add(attributesForFaceting_04); + } + requests_02.setAttributesForFaceting(attributesForFaceting3); + List attributesToHighlight3 = new ArrayList<>(); + { + String attributesToHighlight_04 = ""; + attributesToHighlight3.add(attributesToHighlight_04); + } + requests_02.setAttributesToHighlight(attributesToHighlight3); + List attributesToRetrieve3 = new ArrayList<>(); + { + String attributesToRetrieve_04 = ""; + attributesToRetrieve3.add(attributesToRetrieve_04); + } + requests_02.setAttributesToRetrieve(attributesToRetrieve3); + List attributesToSnippet3 = new ArrayList<>(); + { + String attributesToSnippet_04 = ""; + attributesToSnippet3.add(attributesToSnippet_04); + } + requests_02.setAttributesToSnippet(attributesToSnippet3); + boolean clickAnalytics3 = true; + requests_02.setClickAnalytics(clickAnalytics3); + List customRanking3 = new ArrayList<>(); + { + String customRanking_04 = ""; + customRanking3.add(customRanking_04); + } + requests_02.setCustomRanking(customRanking3); + boolean decompoundQuery3 = true; + requests_02.setDecompoundQuery(decompoundQuery3); + List disableExactOnAttributes3 = new ArrayList<>(); + { + String disableExactOnAttributes_04 = ""; + disableExactOnAttributes3.add(disableExactOnAttributes_04); + } + requests_02.setDisableExactOnAttributes(disableExactOnAttributes3); + List disableTypoToleranceOnAttributes3 = new ArrayList<>(); + { + String disableTypoToleranceOnAttributes_04 = ""; + disableTypoToleranceOnAttributes3.add(disableTypoToleranceOnAttributes_04); + } + requests_02.setDisableTypoToleranceOnAttributes(disableTypoToleranceOnAttributes3); + int distinct3 = 0; + requests_02.setDistinct(Distinct.of(distinct3)); + boolean enableABTest3 = true; + requests_02.setEnableABTest(enableABTest3); + boolean enablePersonalization3 = true; + requests_02.setEnablePersonalization(enablePersonalization3); + boolean enableReRanking3 = true; + requests_02.setEnableReRanking(enableReRanking3); + boolean enableRules3 = true; + requests_02.setEnableRules(enableRules3); + ExactOnSingleWordQuery exactOnSingleWordQuery3 = ExactOnSingleWordQuery.fromValue("attribute"); + requests_02.setExactOnSingleWordQuery(exactOnSingleWordQuery3); + List explain3 = new ArrayList<>(); + { + String explain_04 = "foo"; + explain3.add(explain_04); + String explain_14 = "bar"; + explain3.add(explain_14); + } + requests_02.setExplain(explain3); + List facetFilters3 = new ArrayList<>(); + { + String facetFilters_04 = ""; + facetFilters3.add(MixedSearchFilters.of(facetFilters_04)); + } + requests_02.setFacetFilters(FacetFilters.of(facetFilters3)); + boolean facetingAfterDistinct3 = true; + requests_02.setFacetingAfterDistinct(facetingAfterDistinct3); + List facets3 = new ArrayList<>(); + { + String facets_04 = ""; + facets3.add(facets_04); + } + requests_02.setFacets(facets3); + String filters3 = ""; + requests_02.setFilters(filters3); + boolean getRankingInfo3 = true; + requests_02.setGetRankingInfo(getRankingInfo3); + String highlightPostTag3 = ""; + requests_02.setHighlightPostTag(highlightPostTag3); + String highlightPreTag3 = ""; + requests_02.setHighlightPreTag(highlightPreTag3); + int hitsPerPage3 = 1; + requests_02.setHitsPerPage(hitsPerPage3); + boolean ignorePlurals3 = false; + requests_02.setIgnorePlurals(IgnorePlurals.of(ignorePlurals3)); + String indexName3 = "theIndexName"; + requests_02.setIndexName(indexName3); + List> insideBoundingBox3 = new ArrayList<>(); + { + List insideBoundingBox_04 = new ArrayList<>(); + { + double insideBoundingBox_0_05 = 47.3165; + insideBoundingBox_04.add(insideBoundingBox_0_05); + double insideBoundingBox_0_15 = 4.9665; + insideBoundingBox_04.add(insideBoundingBox_0_15); + double insideBoundingBox_0_25 = 47.3424; + insideBoundingBox_04.add(insideBoundingBox_0_25); + double insideBoundingBox_0_35 = 5.0201; + insideBoundingBox_04.add(insideBoundingBox_0_35); + } + insideBoundingBox3.add(insideBoundingBox_04); + List insideBoundingBox_14 = new ArrayList<>(); + { + double insideBoundingBox_1_05 = 40.9234; + insideBoundingBox_14.add(insideBoundingBox_1_05); + double insideBoundingBox_1_15 = 2.1185; + insideBoundingBox_14.add(insideBoundingBox_1_15); + double insideBoundingBox_1_25 = 38.643; + insideBoundingBox_14.add(insideBoundingBox_1_25); + double insideBoundingBox_1_35 = 1.9916; + insideBoundingBox_14.add(insideBoundingBox_1_35); + } + insideBoundingBox3.add(insideBoundingBox_14); + } + requests_02.setInsideBoundingBox(insideBoundingBox3); + List> insidePolygon3 = new ArrayList<>(); + { + List insidePolygon_04 = new ArrayList<>(); + { + double insidePolygon_0_05 = 47.3165; + insidePolygon_04.add(insidePolygon_0_05); + double insidePolygon_0_15 = 4.9665; + insidePolygon_04.add(insidePolygon_0_15); + double insidePolygon_0_25 = 47.3424; + insidePolygon_04.add(insidePolygon_0_25); + double insidePolygon_0_35 = 5.0201; + insidePolygon_04.add(insidePolygon_0_35); + double insidePolygon_0_45 = 47.32; + insidePolygon_04.add(insidePolygon_0_45); + double insidePolygon_0_55 = 4.9; + insidePolygon_04.add(insidePolygon_0_55); + } + insidePolygon3.add(insidePolygon_04); + List insidePolygon_14 = new ArrayList<>(); + { + double insidePolygon_1_05 = 40.9234; + insidePolygon_14.add(insidePolygon_1_05); + double insidePolygon_1_15 = 2.1185; + insidePolygon_14.add(insidePolygon_1_15); + double insidePolygon_1_25 = 38.643; + insidePolygon_14.add(insidePolygon_1_25); + double insidePolygon_1_35 = 1.9916; + insidePolygon_14.add(insidePolygon_1_35); + double insidePolygon_1_45 = 39.2587; + insidePolygon_14.add(insidePolygon_1_45); + double insidePolygon_1_55 = 2.0104; + insidePolygon_14.add(insidePolygon_1_55); + } + insidePolygon3.add(insidePolygon_14); + } + requests_02.setInsidePolygon(insidePolygon3); + String keepDiacriticsOnCharacters3 = ""; + requests_02.setKeepDiacriticsOnCharacters(keepDiacriticsOnCharacters3); + int length3 = 1; + requests_02.setLength(length3); + int maxValuesPerFacet3 = 0; + requests_02.setMaxValuesPerFacet(maxValuesPerFacet3); + int minProximity3 = 1; + requests_02.setMinProximity(minProximity3); + int minWordSizefor1Typo3 = 0; + requests_02.setMinWordSizefor1Typo(minWordSizefor1Typo3); + int minWordSizefor2Typos3 = 0; + requests_02.setMinWordSizefor2Typos(minWordSizefor2Typos3); + int minimumAroundRadius3 = 1; + requests_02.setMinimumAroundRadius(minimumAroundRadius3); + List naturalLanguages3 = new ArrayList<>(); + { + String naturalLanguages_04 = ""; + naturalLanguages3.add(naturalLanguages_04); + } + requests_02.setNaturalLanguages(naturalLanguages3); + List numericFilters3 = new ArrayList<>(); + { + String numericFilters_04 = ""; + numericFilters3.add(MixedSearchFilters.of(numericFilters_04)); + } + requests_02.setNumericFilters(NumericFilters.of(numericFilters3)); + int offset3 = 0; + requests_02.setOffset(offset3); + List optionalFilters3 = new ArrayList<>(); + { + String optionalFilters_04 = ""; + optionalFilters3.add(MixedSearchFilters.of(optionalFilters_04)); + } + requests_02.setOptionalFilters(OptionalFilters.of(optionalFilters3)); + List optionalWords3 = new ArrayList<>(); + { + String optionalWords_04 = ""; + optionalWords3.add(optionalWords_04); + } + requests_02.setOptionalWords(optionalWords3); + int page3 = 0; + requests_02.setPage(page3); + boolean percentileComputation3 = true; + requests_02.setPercentileComputation(percentileComputation3); + int personalizationImpact3 = 0; + requests_02.setPersonalizationImpact(personalizationImpact3); + String query3 = ""; + requests_02.setQuery(query3); + List queryLanguages3 = new ArrayList<>(); + { + String queryLanguages_04 = ""; + queryLanguages3.add(queryLanguages_04); + } + requests_02.setQueryLanguages(queryLanguages3); + QueryType queryType3 = QueryType.fromValue("prefixAll"); + requests_02.setQueryType(queryType3); + List ranking3 = new ArrayList<>(); + { + String ranking_04 = ""; + ranking3.add(ranking_04); + } + requests_02.setRanking(ranking3); + List reRankingApplyFilter3 = new ArrayList<>(); + { + String reRankingApplyFilter_04 = ""; + reRankingApplyFilter3.add(MixedSearchFilters.of(reRankingApplyFilter_04)); + } + requests_02.setReRankingApplyFilter(ReRankingApplyFilter.of(reRankingApplyFilter3)); + int relevancyStrictness3 = 0; + requests_02.setRelevancyStrictness(relevancyStrictness3); + boolean removeStopWords3 = true; + requests_02.setRemoveStopWords(RemoveStopWords.of(removeStopWords3)); + RemoveWordsIfNoResults removeWordsIfNoResults3 = RemoveWordsIfNoResults.fromValue("allOptional"); + requests_02.setRemoveWordsIfNoResults(removeWordsIfNoResults3); + RenderingContent renderingContent3 = new RenderingContent(); + { + FacetOrdering facetOrdering4 = new FacetOrdering(); + { + Facets facets5 = new Facets(); + { + List order6 = new ArrayList<>(); + { + String order_07 = "a"; + order6.add(order_07); + String order_17 = "b"; + order6.add(order_17); + } + facets5.setOrder(order6); + } + facetOrdering4.setFacets(facets5); + Map values5 = new HashMap<>(); + { + Value a6 = new Value(); + { + List order7 = new ArrayList<>(); + { + String order_08 = "b"; + order7.add(order_08); + } + a6.setOrder(order7); + SortRemainingBy sortRemainingBy7 = SortRemainingBy.fromValue("count"); + a6.setSortRemainingBy(sortRemainingBy7); + } + values5.put("a", a6); + } + facetOrdering4.setValues(values5); + } + renderingContent3.setFacetOrdering(facetOrdering4); + } + requests_02.setRenderingContent(renderingContent3); + boolean replaceSynonymsInHighlight3 = true; + requests_02.setReplaceSynonymsInHighlight(replaceSynonymsInHighlight3); + List responseFields3 = new ArrayList<>(); + { + String responseFields_04 = ""; + responseFields3.add(responseFields_04); + } + requests_02.setResponseFields(responseFields3); + boolean restrictHighlightAndSnippetArrays3 = true; + requests_02.setRestrictHighlightAndSnippetArrays(restrictHighlightAndSnippetArrays3); + List restrictSearchableAttributes3 = new ArrayList<>(); + { + String restrictSearchableAttributes_04 = ""; + restrictSearchableAttributes3.add(restrictSearchableAttributes_04); + } + requests_02.setRestrictSearchableAttributes(restrictSearchableAttributes3); + List ruleContexts3 = new ArrayList<>(); + { + String ruleContexts_04 = ""; + ruleContexts3.add(ruleContexts_04); + } + requests_02.setRuleContexts(ruleContexts3); + String similarQuery3 = ""; + requests_02.setSimilarQuery(similarQuery3); + String snippetEllipsisText3 = ""; + requests_02.setSnippetEllipsisText(snippetEllipsisText3); + String sortFacetValuesBy3 = ""; + requests_02.setSortFacetValuesBy(sortFacetValuesBy3); + boolean sumOrFiltersScores3 = true; + requests_02.setSumOrFiltersScores(sumOrFiltersScores3); + boolean synonyms3 = true; + requests_02.setSynonyms(synonyms3); + List tagFilters3 = new ArrayList<>(); + { + String tagFilters_04 = ""; + tagFilters3.add(MixedSearchFilters.of(tagFilters_04)); + } + requests_02.setTagFilters(TagFilters.of(tagFilters3)); + SearchTypeDefault type3 = SearchTypeDefault.fromValue("default"); + requests_02.setType(type3); + TypoToleranceEnum typoTolerance3 = TypoToleranceEnum.fromValue("min"); + requests_02.setTypoTolerance(typoTolerance3); + String userToken3 = ""; + requests_02.setUserToken(userToken3); + } + requests1.add(requests_02); + } + searchMethodParams0.setRequests(requests1); + } + + assertDoesNotThrow(() -> { + client.search(searchMethodParams0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/*/queries", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals( + "{\"requests\":[{\"advancedSyntax\":true,\"advancedSyntaxFeatures\":[\"exactPhrase\"],\"allowTyposOnNumericTokens\":true,\"alternativesAsExact\":[\"multiWordsSynonym\"],\"analytics\":true,\"analyticsTags\":[\"\"],\"aroundLatLng\":\"\",\"aroundLatLngViaIP\":true,\"aroundPrecision\":0,\"aroundRadius\":\"all\",\"attributeCriteriaComputedByMinProximity\":true,\"attributesForFaceting\":[\"\"],\"attributesToHighlight\":[\"\"],\"attributesToRetrieve\":[\"\"],\"attributesToSnippet\":[\"\"],\"clickAnalytics\":true,\"customRanking\":[\"\"],\"decompoundQuery\":true,\"disableExactOnAttributes\":[\"\"],\"disableTypoToleranceOnAttributes\":[\"\"],\"distinct\":0,\"enableABTest\":true,\"enablePersonalization\":true,\"enableReRanking\":true,\"enableRules\":true,\"exactOnSingleWordQuery\":\"attribute\",\"explain\":[\"foo\",\"bar\"],\"facetFilters\":[\"\"],\"facetingAfterDistinct\":true,\"facets\":[\"\"],\"filters\":\"\",\"getRankingInfo\":true,\"highlightPostTag\":\"\",\"highlightPreTag\":\"\",\"hitsPerPage\":1,\"ignorePlurals\":false,\"indexName\":\"theIndexName\",\"insideBoundingBox\":[[47.3165,4.9665,47.3424,5.0201],[40.9234,2.1185,38.643,1.9916]],\"insidePolygon\":[[47.3165,4.9665,47.3424,5.0201,47.32,4.9],[40.9234,2.1185,38.643,1.9916,39.2587,2.0104]],\"keepDiacriticsOnCharacters\":\"\",\"length\":1,\"maxValuesPerFacet\":0,\"minProximity\":1,\"minWordSizefor1Typo\":0,\"minWordSizefor2Typos\":0,\"minimumAroundRadius\":1,\"naturalLanguages\":[\"\"],\"numericFilters\":[\"\"],\"offset\":0,\"optionalFilters\":[\"\"],\"optionalWords\":[\"\"],\"page\":0,\"percentileComputation\":true,\"personalizationImpact\":0,\"query\":\"\",\"queryLanguages\":[\"\"],\"queryType\":\"prefixAll\",\"ranking\":[\"\"],\"reRankingApplyFilter\":[\"\"],\"relevancyStrictness\":0,\"removeStopWords\":true,\"removeWordsIfNoResults\":\"allOptional\",\"renderingContent\":{\"facetOrdering\":{\"facets\":{\"order\":[\"a\",\"b\"]},\"values\":{\"a\":{\"order\":[\"b\"],\"sortRemainingBy\":\"count\"}}}},\"replaceSynonymsInHighlight\":true,\"responseFields\":[\"\"],\"restrictHighlightAndSnippetArrays\":true,\"restrictSearchableAttributes\":[\"\"],\"ruleContexts\":[\"\"],\"similarQuery\":\"\",\"snippetEllipsisText\":\"\",\"sortFacetValuesBy\":\"\",\"sumOrFiltersScores\":true,\"synonyms\":true,\"tagFilters\":[\"\"],\"type\":\"default\",\"typoTolerance\":\"min\",\"userToken\":\"\"}]}", + req.body, + JSONCompareMode.STRICT + ) + ); + } + + @Test + @DisplayName("get searchDictionaryEntries results with minimal parameters") + void searchDictionaryEntriesTest0() { + DictionaryType dictionaryName0 = DictionaryType.fromValue("compounds"); + SearchDictionaryEntriesParams searchDictionaryEntriesParams0 = new SearchDictionaryEntriesParams(); + { + String query1 = "foo"; + searchDictionaryEntriesParams0.setQuery(query1); + } + + assertDoesNotThrow(() -> { + client.searchDictionaryEntries(dictionaryName0, searchDictionaryEntriesParams0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/dictionaries/compounds/search", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"query\":\"foo\"}", req.body, JSONCompareMode.STRICT)); + } + + @Test + @DisplayName("get searchDictionaryEntries results with all parameters") + void searchDictionaryEntriesTest1() { + DictionaryType dictionaryName0 = DictionaryType.fromValue("compounds"); + SearchDictionaryEntriesParams searchDictionaryEntriesParams0 = new SearchDictionaryEntriesParams(); + { + String query1 = "foo"; + searchDictionaryEntriesParams0.setQuery(query1); + int page1 = 4; + searchDictionaryEntriesParams0.setPage(page1); + int hitsPerPage1 = 2; + searchDictionaryEntriesParams0.setHitsPerPage(hitsPerPage1); + String language1 = "fr"; + searchDictionaryEntriesParams0.setLanguage(language1); + } + + assertDoesNotThrow(() -> { + client.searchDictionaryEntries(dictionaryName0, searchDictionaryEntriesParams0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/dictionaries/compounds/search", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals("{\"query\":\"foo\",\"page\":4,\"hitsPerPage\":2,\"language\":\"fr\"}", req.body, JSONCompareMode.STRICT) + ); + } + + @Test + @DisplayName("get searchForFacetValues results with minimal parameters") + void searchForFacetValuesTest0() { + String indexName0 = "indexName"; + String facetName0 = "facetName"; + + assertDoesNotThrow(() -> { + client.searchForFacetValues(indexName0, facetName0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/indexName/facets/facetName/query", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{}", req.body, JSONCompareMode.STRICT)); + } + + @Test + @DisplayName("get searchForFacetValues results with all parameters") + void searchForFacetValuesTest1() { + String indexName0 = "indexName"; + String facetName0 = "facetName"; + SearchForFacetValuesRequest searchForFacetValuesRequest0 = new SearchForFacetValuesRequest(); + { + String params1 = "query=foo&facetFilters=['bar']"; + searchForFacetValuesRequest0.setParams(params1); + String facetQuery1 = "foo"; + searchForFacetValuesRequest0.setFacetQuery(facetQuery1); + int maxFacetHits1 = 42; + searchForFacetValuesRequest0.setMaxFacetHits(maxFacetHits1); + } + + assertDoesNotThrow(() -> { + client.searchForFacetValues(indexName0, facetName0, searchForFacetValuesRequest0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/indexName/facets/facetName/query", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals( + "{\"params\":\"query=foo&facetFilters=['bar']\",\"facetQuery\":\"foo\",\"maxFacetHits\":42}", + req.body, + JSONCompareMode.STRICT + ) + ); + } + + @Test + @DisplayName("searchRules0") + void searchRulesTest0() { + String indexName0 = "indexName"; + SearchRulesParams searchRulesParams0 = new SearchRulesParams(); + { + String query1 = "something"; + searchRulesParams0.setQuery(query1); + } + + assertDoesNotThrow(() -> { + client.searchRules(indexName0, searchRulesParams0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/indexName/rules/search", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"query\":\"something\"}", req.body, JSONCompareMode.STRICT)); + } + + @Test + @DisplayName("search with minimal parameters") + void searchSingleIndexTest0() { + String indexName0 = "indexName"; + + assertDoesNotThrow(() -> { + client.searchSingleIndex(indexName0, Object.class); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/indexName/query", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{}", req.body, JSONCompareMode.STRICT)); + } + + @Test + @DisplayName("search with searchParams") + void searchSingleIndexTest1() { + String indexName0 = "indexName"; + SearchParamsObject searchParams0 = new SearchParamsObject(); + { + String query1 = "myQuery"; + searchParams0.setQuery(query1); + List facetFilters1 = new ArrayList<>(); + { + String facetFilters_02 = "tags:algolia"; + facetFilters1.add(MixedSearchFilters.of(facetFilters_02)); + } + searchParams0.setFacetFilters(FacetFilters.of(facetFilters1)); + } + + assertDoesNotThrow(() -> { + client.searchSingleIndex(indexName0, searchParams0, Object.class); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/indexName/query", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals("{\"query\":\"myQuery\",\"facetFilters\":[\"tags:algolia\"]}", req.body, JSONCompareMode.STRICT) + ); + } + + @Test + @DisplayName("searchSynonyms with minimal parameters") + void searchSynonymsTest0() { + String indexName0 = "indexName"; + + assertDoesNotThrow(() -> { + client.searchSynonyms(indexName0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/indexName/synonyms/search", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{}", req.body, JSONCompareMode.STRICT)); + } + + @Test + @DisplayName("searchSynonyms with all parameters") + void searchSynonymsTest1() { + String indexName0 = "indexName"; + SynonymType type0 = SynonymType.fromValue("altcorrection1"); + int page0 = 10; + int hitsPerPage0 = 10; + SearchSynonymsParams searchSynonymsParams0 = new SearchSynonymsParams(); + { + String query1 = "myQuery"; + searchSynonymsParams0.setQuery(query1); + } + + assertDoesNotThrow(() -> { + client.searchSynonyms(indexName0, type0, page0, hitsPerPage0, searchSynonymsParams0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/indexName/synonyms/search", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"query\":\"myQuery\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"type\":\"altcorrection1\",\"page\":\"10\",\"hitsPerPage\":\"10\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("searchUserIds0") + void searchUserIdsTest0() { + SearchUserIdsParams searchUserIdsParams0 = new SearchUserIdsParams(); + { + String query1 = "test"; + searchUserIdsParams0.setQuery(query1); + String clusterName1 = "theClusterName"; + searchUserIdsParams0.setClusterName(clusterName1); + int page1 = 5; + searchUserIdsParams0.setPage(page1); + int hitsPerPage1 = 10; + searchUserIdsParams0.setHitsPerPage(hitsPerPage1); + } + + assertDoesNotThrow(() -> { + client.searchUserIds(searchUserIdsParams0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/clusters/mapping/search", req.path); + assertEquals("POST", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals( + "{\"query\":\"test\",\"clusterName\":\"theClusterName\",\"page\":5,\"hitsPerPage\":10}", + req.body, + JSONCompareMode.STRICT + ) + ); + } + + @Test + @DisplayName("get setDictionarySettings results with minimal parameters") + void setDictionarySettingsTest0() { + DictionarySettingsParams dictionarySettingsParams0 = new DictionarySettingsParams(); + { + StandardEntries disableStandardEntries1 = new StandardEntries(); + { + Map plurals2 = new HashMap<>(); + { + boolean fr3 = false; + plurals2.put("fr", fr3); + boolean en3 = false; + plurals2.put("en", en3); + boolean ru3 = true; + plurals2.put("ru", ru3); + } + disableStandardEntries1.setPlurals(plurals2); + } + dictionarySettingsParams0.setDisableStandardEntries(disableStandardEntries1); + } + + assertDoesNotThrow(() -> { + client.setDictionarySettings(dictionarySettingsParams0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/dictionaries/*/settings", req.path); + assertEquals("PUT", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals( + "{\"disableStandardEntries\":{\"plurals\":{\"fr\":false,\"en\":false,\"ru\":true}}}", + req.body, + JSONCompareMode.STRICT + ) + ); + } + + @Test + @DisplayName("get setDictionarySettings results with all parameters") + void setDictionarySettingsTest1() { + DictionarySettingsParams dictionarySettingsParams0 = new DictionarySettingsParams(); + { + StandardEntries disableStandardEntries1 = new StandardEntries(); + { + Map plurals2 = new HashMap<>(); + { + boolean fr3 = false; + plurals2.put("fr", fr3); + boolean en3 = false; + plurals2.put("en", en3); + boolean ru3 = true; + plurals2.put("ru", ru3); + } + disableStandardEntries1.setPlurals(plurals2); + Map stopwords2 = new HashMap<>(); + { + boolean fr3 = false; + stopwords2.put("fr", fr3); + } + disableStandardEntries1.setStopwords(stopwords2); + Map compounds2 = new HashMap<>(); + { + boolean ru3 = true; + compounds2.put("ru", ru3); + } + disableStandardEntries1.setCompounds(compounds2); + } + dictionarySettingsParams0.setDisableStandardEntries(disableStandardEntries1); + } + + assertDoesNotThrow(() -> { + client.setDictionarySettings(dictionarySettingsParams0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/dictionaries/*/settings", req.path); + assertEquals("PUT", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals( + "{\"disableStandardEntries\":{\"plurals\":{\"fr\":false,\"en\":false,\"ru\":true},\"stopwords\":{\"fr\":false},\"compounds\":{\"ru\":true}}}", + req.body, + JSONCompareMode.STRICT + ) + ); + } + + @Test + @DisplayName("setSettings with minimal parameters") + void setSettingsTest0() { + String indexName0 = "theIndexName"; + IndexSettings indexSettings0 = new IndexSettings(); + { + int paginationLimitedTo1 = 10; + indexSettings0.setPaginationLimitedTo(paginationLimitedTo1); + } + boolean forwardToReplicas0 = true; + + assertDoesNotThrow(() -> { + client.setSettings(indexName0, indexSettings0, forwardToReplicas0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/theIndexName/settings", req.path); + assertEquals("PUT", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"paginationLimitedTo\":10}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"forwardToReplicas\":\"true\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("setSettings allow boolean `typoTolerance`") + void setSettingsTest1() { + String indexName0 = "theIndexName"; + IndexSettings indexSettings0 = new IndexSettings(); + { + boolean typoTolerance1 = true; + indexSettings0.setTypoTolerance(TypoTolerance.of(typoTolerance1)); + } + boolean forwardToReplicas0 = true; + + assertDoesNotThrow(() -> { + client.setSettings(indexName0, indexSettings0, forwardToReplicas0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/theIndexName/settings", req.path); + assertEquals("PUT", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"typoTolerance\":true}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"forwardToReplicas\":\"true\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("setSettings allow enum `typoTolerance`") + void setSettingsTest2() { + String indexName0 = "theIndexName"; + IndexSettings indexSettings0 = new IndexSettings(); + { + TypoToleranceEnum typoTolerance1 = TypoToleranceEnum.fromValue("min"); + indexSettings0.setTypoTolerance(typoTolerance1); + } + boolean forwardToReplicas0 = true; + + assertDoesNotThrow(() -> { + client.setSettings(indexName0, indexSettings0, forwardToReplicas0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/theIndexName/settings", req.path); + assertEquals("PUT", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"typoTolerance\":\"min\"}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"forwardToReplicas\":\"true\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("setSettings allow boolean `ignorePlurals`") + void setSettingsTest3() { + String indexName0 = "theIndexName"; + IndexSettings indexSettings0 = new IndexSettings(); + { + boolean ignorePlurals1 = true; + indexSettings0.setIgnorePlurals(IgnorePlurals.of(ignorePlurals1)); + } + boolean forwardToReplicas0 = true; + + assertDoesNotThrow(() -> { + client.setSettings(indexName0, indexSettings0, forwardToReplicas0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/theIndexName/settings", req.path); + assertEquals("PUT", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"ignorePlurals\":true}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"forwardToReplicas\":\"true\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("setSettings allow list of string `ignorePlurals`") + void setSettingsTest4() { + String indexName0 = "theIndexName"; + IndexSettings indexSettings0 = new IndexSettings(); + { + List ignorePlurals1 = new ArrayList<>(); + { + String ignorePlurals_02 = "algolia"; + ignorePlurals1.add(ignorePlurals_02); + } + indexSettings0.setIgnorePlurals(IgnorePlurals.of(ignorePlurals1)); + } + boolean forwardToReplicas0 = true; + + assertDoesNotThrow(() -> { + client.setSettings(indexName0, indexSettings0, forwardToReplicas0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/theIndexName/settings", req.path); + assertEquals("PUT", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"ignorePlurals\":[\"algolia\"]}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"forwardToReplicas\":\"true\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("setSettings allow boolean `removeStopWords`") + void setSettingsTest5() { + String indexName0 = "theIndexName"; + IndexSettings indexSettings0 = new IndexSettings(); + { + boolean removeStopWords1 = true; + indexSettings0.setRemoveStopWords(RemoveStopWords.of(removeStopWords1)); + } + boolean forwardToReplicas0 = true; + + assertDoesNotThrow(() -> { + client.setSettings(indexName0, indexSettings0, forwardToReplicas0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/theIndexName/settings", req.path); + assertEquals("PUT", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"removeStopWords\":true}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"forwardToReplicas\":\"true\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("setSettings allow list of string `removeStopWords`") + void setSettingsTest6() { + String indexName0 = "theIndexName"; + IndexSettings indexSettings0 = new IndexSettings(); + { + List removeStopWords1 = new ArrayList<>(); + { + String removeStopWords_02 = "algolia"; + removeStopWords1.add(removeStopWords_02); + } + indexSettings0.setRemoveStopWords(RemoveStopWords.of(removeStopWords1)); + } + boolean forwardToReplicas0 = true; + + assertDoesNotThrow(() -> { + client.setSettings(indexName0, indexSettings0, forwardToReplicas0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/theIndexName/settings", req.path); + assertEquals("PUT", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"removeStopWords\":[\"algolia\"]}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"forwardToReplicas\":\"true\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("setSettings allow boolean `distinct`") + void setSettingsTest7() { + String indexName0 = "theIndexName"; + IndexSettings indexSettings0 = new IndexSettings(); + { + boolean distinct1 = true; + indexSettings0.setDistinct(Distinct.of(distinct1)); + } + boolean forwardToReplicas0 = true; + + assertDoesNotThrow(() -> { + client.setSettings(indexName0, indexSettings0, forwardToReplicas0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/theIndexName/settings", req.path); + assertEquals("PUT", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"distinct\":true}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"forwardToReplicas\":\"true\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("setSettings allow integers for `distinct`") + void setSettingsTest8() { + String indexName0 = "theIndexName"; + IndexSettings indexSettings0 = new IndexSettings(); + { + int distinct1 = 1; + indexSettings0.setDistinct(Distinct.of(distinct1)); + } + boolean forwardToReplicas0 = true; + + assertDoesNotThrow(() -> { + client.setSettings(indexName0, indexSettings0, forwardToReplicas0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/theIndexName/settings", req.path); + assertEquals("PUT", req.method); + assertDoesNotThrow(() -> JSONAssert.assertEquals("{\"distinct\":1}", req.body, JSONCompareMode.STRICT)); + + try { + Map expectedQuery = json.readValue( + "{\"forwardToReplicas\":\"true\"}", + new TypeReference>() {} + ); + Map actualQuery = req.queryParameters; + + assertEquals(expectedQuery.size(), actualQuery.size()); + for (Map.Entry p : actualQuery.entrySet()) { + assertEquals(expectedQuery.get(p.getKey()), p.getValue()); + } + } catch (JsonProcessingException e) { + fail("failed to parse queryParameters json"); + } + } + + @Test + @DisplayName("setSettings allow all `indexSettings`") + void setSettingsTest9() { + String indexName0 = "theIndexName"; + IndexSettings indexSettings0 = new IndexSettings(); + { + boolean advancedSyntax1 = true; + indexSettings0.setAdvancedSyntax(advancedSyntax1); + List advancedSyntaxFeatures1 = new ArrayList<>(); + { + AdvancedSyntaxFeatures advancedSyntaxFeatures_02 = AdvancedSyntaxFeatures.fromValue("exactPhrase"); + advancedSyntaxFeatures1.add(advancedSyntaxFeatures_02); + } + indexSettings0.setAdvancedSyntaxFeatures(advancedSyntaxFeatures1); + boolean allowCompressionOfIntegerArray1 = true; + indexSettings0.setAllowCompressionOfIntegerArray(allowCompressionOfIntegerArray1); + boolean allowTyposOnNumericTokens1 = true; + indexSettings0.setAllowTyposOnNumericTokens(allowTyposOnNumericTokens1); + List alternativesAsExact1 = new ArrayList<>(); + { + AlternativesAsExact alternativesAsExact_02 = AlternativesAsExact.fromValue("singleWordSynonym"); + alternativesAsExact1.add(alternativesAsExact_02); + } + indexSettings0.setAlternativesAsExact(alternativesAsExact1); + boolean attributeCriteriaComputedByMinProximity1 = true; + indexSettings0.setAttributeCriteriaComputedByMinProximity(attributeCriteriaComputedByMinProximity1); + String attributeForDistinct1 = "test"; + indexSettings0.setAttributeForDistinct(attributeForDistinct1); + List attributesForFaceting1 = new ArrayList<>(); + { + String attributesForFaceting_02 = "algolia"; + attributesForFaceting1.add(attributesForFaceting_02); + } + indexSettings0.setAttributesForFaceting(attributesForFaceting1); + List attributesToHighlight1 = new ArrayList<>(); + { + String attributesToHighlight_02 = "algolia"; + attributesToHighlight1.add(attributesToHighlight_02); + } + indexSettings0.setAttributesToHighlight(attributesToHighlight1); + List attributesToRetrieve1 = new ArrayList<>(); + { + String attributesToRetrieve_02 = "algolia"; + attributesToRetrieve1.add(attributesToRetrieve_02); + } + indexSettings0.setAttributesToRetrieve(attributesToRetrieve1); + List attributesToSnippet1 = new ArrayList<>(); + { + String attributesToSnippet_02 = "algolia"; + attributesToSnippet1.add(attributesToSnippet_02); + } + indexSettings0.setAttributesToSnippet(attributesToSnippet1); + List attributesToTransliterate1 = new ArrayList<>(); + { + String attributesToTransliterate_02 = "algolia"; + attributesToTransliterate1.add(attributesToTransliterate_02); + } + indexSettings0.setAttributesToTransliterate(attributesToTransliterate1); + List camelCaseAttributes1 = new ArrayList<>(); + { + String camelCaseAttributes_02 = "algolia"; + camelCaseAttributes1.add(camelCaseAttributes_02); + } + indexSettings0.setCamelCaseAttributes(camelCaseAttributes1); + Map> customNormalization1 = new HashMap<>(); + { + Map algolia2 = new HashMap<>(); + { + String aloglia3 = "aglolia"; + algolia2.put("aloglia", aloglia3); + } + customNormalization1.put("algolia", algolia2); + } + indexSettings0.setCustomNormalization(customNormalization1); + List customRanking1 = new ArrayList<>(); + { + String customRanking_02 = "algolia"; + customRanking1.add(customRanking_02); + } + indexSettings0.setCustomRanking(customRanking1); + boolean decompoundQuery1 = false; + indexSettings0.setDecompoundQuery(decompoundQuery1); + Map decompoundedAttributes1 = new HashMap<>(); + { + String algolia2 = "aloglia"; + decompoundedAttributes1.put("algolia", algolia2); + } + indexSettings0.setDecompoundedAttributes(decompoundedAttributes1); + List disableExactOnAttributes1 = new ArrayList<>(); + { + String disableExactOnAttributes_02 = "algolia"; + disableExactOnAttributes1.add(disableExactOnAttributes_02); + } + indexSettings0.setDisableExactOnAttributes(disableExactOnAttributes1); + List disablePrefixOnAttributes1 = new ArrayList<>(); + { + String disablePrefixOnAttributes_02 = "algolia"; + disablePrefixOnAttributes1.add(disablePrefixOnAttributes_02); + } + indexSettings0.setDisablePrefixOnAttributes(disablePrefixOnAttributes1); + List disableTypoToleranceOnAttributes1 = new ArrayList<>(); + { + String disableTypoToleranceOnAttributes_02 = "algolia"; + disableTypoToleranceOnAttributes1.add(disableTypoToleranceOnAttributes_02); + } + indexSettings0.setDisableTypoToleranceOnAttributes(disableTypoToleranceOnAttributes1); + List disableTypoToleranceOnWords1 = new ArrayList<>(); + { + String disableTypoToleranceOnWords_02 = "algolia"; + disableTypoToleranceOnWords1.add(disableTypoToleranceOnWords_02); + } + indexSettings0.setDisableTypoToleranceOnWords(disableTypoToleranceOnWords1); + int distinct1 = 3; + indexSettings0.setDistinct(Distinct.of(distinct1)); + boolean enablePersonalization1 = true; + indexSettings0.setEnablePersonalization(enablePersonalization1); + boolean enableReRanking1 = false; + indexSettings0.setEnableReRanking(enableReRanking1); + boolean enableRules1 = true; + indexSettings0.setEnableRules(enableRules1); + ExactOnSingleWordQuery exactOnSingleWordQuery1 = ExactOnSingleWordQuery.fromValue("attribute"); + indexSettings0.setExactOnSingleWordQuery(exactOnSingleWordQuery1); + String highlightPreTag1 = ""; + indexSettings0.setHighlightPreTag(highlightPreTag1); + String highlightPostTag1 = ""; + indexSettings0.setHighlightPostTag(highlightPostTag1); + int hitsPerPage1 = 10; + indexSettings0.setHitsPerPage(hitsPerPage1); + boolean ignorePlurals1 = false; + indexSettings0.setIgnorePlurals(IgnorePlurals.of(ignorePlurals1)); + List indexLanguages1 = new ArrayList<>(); + { + String indexLanguages_02 = "algolia"; + indexLanguages1.add(indexLanguages_02); + } + indexSettings0.setIndexLanguages(indexLanguages1); + String keepDiacriticsOnCharacters1 = "abc"; + indexSettings0.setKeepDiacriticsOnCharacters(keepDiacriticsOnCharacters1); + int maxFacetHits1 = 20; + indexSettings0.setMaxFacetHits(maxFacetHits1); + int maxValuesPerFacet1 = 30; + indexSettings0.setMaxValuesPerFacet(maxValuesPerFacet1); + int minProximity1 = 6; + indexSettings0.setMinProximity(minProximity1); + int minWordSizefor1Typo1 = 5; + indexSettings0.setMinWordSizefor1Typo(minWordSizefor1Typo1); + int minWordSizefor2Typos1 = 11; + indexSettings0.setMinWordSizefor2Typos(minWordSizefor2Typos1); + Mode mode1 = Mode.fromValue("neuralSearch"); + indexSettings0.setMode(mode1); + List numericAttributesForFiltering1 = new ArrayList<>(); + { + String numericAttributesForFiltering_02 = "algolia"; + numericAttributesForFiltering1.add(numericAttributesForFiltering_02); + } + indexSettings0.setNumericAttributesForFiltering(numericAttributesForFiltering1); + List optionalWords1 = new ArrayList<>(); + { + String optionalWords_02 = "myspace"; + optionalWords1.add(optionalWords_02); + } + indexSettings0.setOptionalWords(optionalWords1); + int paginationLimitedTo1 = 0; + indexSettings0.setPaginationLimitedTo(paginationLimitedTo1); + List queryLanguages1 = new ArrayList<>(); + { + String queryLanguages_02 = "algolia"; + queryLanguages1.add(queryLanguages_02); + } + indexSettings0.setQueryLanguages(queryLanguages1); + QueryType queryType1 = QueryType.fromValue("prefixLast"); + indexSettings0.setQueryType(queryType1); + List ranking1 = new ArrayList<>(); + { + String ranking_02 = "geo"; + ranking1.add(ranking_02); + } + indexSettings0.setRanking(ranking1); + String reRankingApplyFilter1 = "mySearch:filters"; + indexSettings0.setReRankingApplyFilter(ReRankingApplyFilter.of(reRankingApplyFilter1)); + int relevancyStrictness1 = 10; + indexSettings0.setRelevancyStrictness(relevancyStrictness1); + boolean removeStopWords1 = false; + indexSettings0.setRemoveStopWords(RemoveStopWords.of(removeStopWords1)); + RemoveWordsIfNoResults removeWordsIfNoResults1 = RemoveWordsIfNoResults.fromValue("lastWords"); + indexSettings0.setRemoveWordsIfNoResults(removeWordsIfNoResults1); + RenderingContent renderingContent1 = new RenderingContent(); + { + FacetOrdering facetOrdering2 = new FacetOrdering(); + { + Facets facets3 = new Facets(); + { + List order4 = new ArrayList<>(); + { + String order_05 = "a"; + order4.add(order_05); + String order_15 = "b"; + order4.add(order_15); + } + facets3.setOrder(order4); + } + facetOrdering2.setFacets(facets3); + Map values3 = new HashMap<>(); + { + Value a4 = new Value(); + { + List order5 = new ArrayList<>(); + { + String order_06 = "b"; + order5.add(order_06); + } + a4.setOrder(order5); + SortRemainingBy sortRemainingBy5 = SortRemainingBy.fromValue("count"); + a4.setSortRemainingBy(sortRemainingBy5); + } + values3.put("a", a4); + } + facetOrdering2.setValues(values3); + } + renderingContent1.setFacetOrdering(facetOrdering2); + } + indexSettings0.setRenderingContent(renderingContent1); + boolean replaceSynonymsInHighlight1 = true; + indexSettings0.setReplaceSynonymsInHighlight(replaceSynonymsInHighlight1); + List replicas1 = new ArrayList<>(); + { + String replicas_02 = ""; + replicas1.add(replicas_02); + } + indexSettings0.setReplicas(replicas1); + List responseFields1 = new ArrayList<>(); + { + String responseFields_02 = "algolia"; + responseFields1.add(responseFields_02); + } + indexSettings0.setResponseFields(responseFields1); + boolean restrictHighlightAndSnippetArrays1 = true; + indexSettings0.setRestrictHighlightAndSnippetArrays(restrictHighlightAndSnippetArrays1); + List searchableAttributes1 = new ArrayList<>(); + { + String searchableAttributes_02 = "foo"; + searchableAttributes1.add(searchableAttributes_02); + } + indexSettings0.setSearchableAttributes(searchableAttributes1); + SemanticSearch semanticSearch1 = new SemanticSearch(); + { + List eventSources2 = new ArrayList<>(); + { + String eventSources_03 = "foo"; + eventSources2.add(eventSources_03); + } + semanticSearch1.setEventSources(eventSources2); + } + indexSettings0.setSemanticSearch(semanticSearch1); + String separatorsToIndex1 = "bar"; + indexSettings0.setSeparatorsToIndex(separatorsToIndex1); + String snippetEllipsisText1 = "---"; + indexSettings0.setSnippetEllipsisText(snippetEllipsisText1); + String sortFacetValuesBy1 = "date"; + indexSettings0.setSortFacetValuesBy(sortFacetValuesBy1); + boolean typoTolerance1 = false; + indexSettings0.setTypoTolerance(TypoTolerance.of(typoTolerance1)); + List unretrievableAttributes1 = new ArrayList<>(); + { + String unretrievableAttributes_02 = "foo"; + unretrievableAttributes1.add(unretrievableAttributes_02); + } + indexSettings0.setUnretrievableAttributes(unretrievableAttributes1); + Map userData1 = new HashMap<>(); + { + String user2 = "data"; + userData1.put("user", user2); + } + indexSettings0.setUserData(userData1); + } + + assertDoesNotThrow(() -> { + client.setSettings(indexName0, indexSettings0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/indexes/theIndexName/settings", req.path); + assertEquals("PUT", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals( + "{\"advancedSyntax\":true,\"advancedSyntaxFeatures\":[\"exactPhrase\"],\"allowCompressionOfIntegerArray\":true,\"allowTyposOnNumericTokens\":true,\"alternativesAsExact\":[\"singleWordSynonym\"],\"attributeCriteriaComputedByMinProximity\":true,\"attributeForDistinct\":\"test\",\"attributesForFaceting\":[\"algolia\"],\"attributesToHighlight\":[\"algolia\"],\"attributesToRetrieve\":[\"algolia\"],\"attributesToSnippet\":[\"algolia\"],\"attributesToTransliterate\":[\"algolia\"],\"camelCaseAttributes\":[\"algolia\"],\"customNormalization\":{\"algolia\":{\"aloglia\":\"aglolia\"}},\"customRanking\":[\"algolia\"],\"decompoundQuery\":false,\"decompoundedAttributes\":{\"algolia\":\"aloglia\"},\"disableExactOnAttributes\":[\"algolia\"],\"disablePrefixOnAttributes\":[\"algolia\"],\"disableTypoToleranceOnAttributes\":[\"algolia\"],\"disableTypoToleranceOnWords\":[\"algolia\"],\"distinct\":3,\"enablePersonalization\":true,\"enableReRanking\":false,\"enableRules\":true,\"exactOnSingleWordQuery\":\"attribute\",\"highlightPreTag\":\"\",\"highlightPostTag\":\"\",\"hitsPerPage\":10,\"ignorePlurals\":false,\"indexLanguages\":[\"algolia\"],\"keepDiacriticsOnCharacters\":\"abc\",\"maxFacetHits\":20,\"maxValuesPerFacet\":30,\"minProximity\":6,\"minWordSizefor1Typo\":5,\"minWordSizefor2Typos\":11,\"mode\":\"neuralSearch\",\"numericAttributesForFiltering\":[\"algolia\"],\"optionalWords\":[\"myspace\"],\"paginationLimitedTo\":0,\"queryLanguages\":[\"algolia\"],\"queryType\":\"prefixLast\",\"ranking\":[\"geo\"],\"reRankingApplyFilter\":\"mySearch:filters\",\"relevancyStrictness\":10,\"removeStopWords\":false,\"removeWordsIfNoResults\":\"lastWords\",\"renderingContent\":{\"facetOrdering\":{\"facets\":{\"order\":[\"a\",\"b\"]},\"values\":{\"a\":{\"order\":[\"b\"],\"sortRemainingBy\":\"count\"}}}},\"replaceSynonymsInHighlight\":true,\"replicas\":[\"\"],\"responseFields\":[\"algolia\"],\"restrictHighlightAndSnippetArrays\":true,\"searchableAttributes\":[\"foo\"],\"semanticSearch\":{\"eventSources\":[\"foo\"]},\"separatorsToIndex\":\"bar\",\"snippetEllipsisText\":\"---\",\"sortFacetValuesBy\":\"date\",\"typoTolerance\":false,\"unretrievableAttributes\":[\"foo\"],\"userData\":{\"user\":\"data\"}}", + req.body, + JSONCompareMode.STRICT + ) + ); + } + + @Test + @DisplayName("updateApiKey0") + void updateApiKeyTest0() { + String key0 = "myApiKey"; + ApiKey apiKey0 = new ApiKey(); + { + List acl1 = new ArrayList<>(); + { + Acl acl_02 = Acl.fromValue("search"); + acl1.add(acl_02); + Acl acl_12 = Acl.fromValue("addObject"); + acl1.add(acl_12); + } + apiKey0.setAcl(acl1); + int validity1 = 300; + apiKey0.setValidity(validity1); + int maxQueriesPerIPPerHour1 = 100; + apiKey0.setMaxQueriesPerIPPerHour(maxQueriesPerIPPerHour1); + int maxHitsPerQuery1 = 20; + apiKey0.setMaxHitsPerQuery(maxHitsPerQuery1); + } + + assertDoesNotThrow(() -> { + client.updateApiKey(key0, apiKey0); + }); + EchoResponse req = echo.getLastResponse(); + assertEquals("/1/keys/myApiKey", req.path); + assertEquals("PUT", req.method); + assertDoesNotThrow(() -> + JSONAssert.assertEquals( + "{\"acl\":[\"search\",\"addObject\"],\"validity\":300,\"maxQueriesPerIPPerHour\":100,\"maxHitsPerQuery\":20}", + req.body, + JSONCompareMode.STRICT + ) + ); + } +} diff --git a/tests/output/javascript/src/requests/abtesting.test.ts b/tests/output/javascript/src/requests/abtesting.test.ts new file mode 100644 index 0000000000..1d6f7b9923 --- /dev/null +++ b/tests/output/javascript/src/requests/abtesting.test.ts @@ -0,0 +1,408 @@ +import { abtestingClient } from '@algolia/client-abtesting'; +import type { EchoResponse, RequestOptions } from '@algolia/client-common'; +import { echoRequester } from '@algolia/requester-node-http'; + +const appId = process.env.ALGOLIA_APPLICATION_ID || 'test_app_id'; +const apiKey = process.env.ALGOLIA_SEARCH_KEY || 'test_api_key'; + +const client = abtestingClient(appId, apiKey, 'us', { + requester: echoRequester(), +}); + +describe('addABTests', () => { + test('addABTests with minimal parameters', async () => { + const req = (await client.addABTests({ + endAt: '2022-12-31T00:00:00.000Z', + name: 'myABTest', + variants: [ + { index: 'AB_TEST_1', trafficPercentage: 30 }, + { index: 'AB_TEST_2', trafficPercentage: 50 }, + ], + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/2/abtests'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + endAt: '2022-12-31T00:00:00.000Z', + name: 'myABTest', + variants: [ + { index: 'AB_TEST_1', trafficPercentage: 30 }, + { index: 'AB_TEST_2', trafficPercentage: 50 }, + ], + }); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('customDelete', () => { + test('allow del method for a custom path with minimal parameters', async () => { + const req = (await client.customDelete({ + path: '/test/minimal', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/minimal'); + expect(req.method).toEqual('DELETE'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('allow del method for a custom path with all parameters', async () => { + const req = (await client.customDelete({ + path: '/test/all', + parameters: { query: 'parameters' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/all'); + expect(req.method).toEqual('DELETE'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + }); +}); + +describe('customGet', () => { + test('allow get method for a custom path with minimal parameters', async () => { + const req = (await client.customGet({ + path: '/test/minimal', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/minimal'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('allow get method for a custom path with all parameters', async () => { + const req = (await client.customGet({ + path: '/test/all', + parameters: { query: 'parameters' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/all'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + }); +}); + +describe('customPost', () => { + test('allow post method for a custom path with minimal parameters', async () => { + const req = (await client.customPost({ + path: '/test/minimal', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/minimal'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({}); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('allow post method for a custom path with all parameters', async () => { + const req = (await client.customPost({ + path: '/test/all', + parameters: { query: 'parameters' }, + body: { body: 'parameters' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/all'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ body: 'parameters' }); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + }); + + test('requestOptions can override default query parameters', async () => { + const requestOptions: RequestOptions = { + queryParameters: { query: 'myQueryParameter' }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ query: 'myQueryParameter' }); + }); + + test('requestOptions merges query parameters with default ones', async () => { + const requestOptions: RequestOptions = { + queryParameters: { query2: 'myQueryParameter' }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + query2: 'myQueryParameter', + }); + }); + + test('requestOptions can override default headers', async () => { + const requestOptions: RequestOptions = { + headers: { 'x-algolia-api-key': 'myApiKey' }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + expect(req.headers).toEqual( + expect.objectContaining({ 'x-algolia-api-key': 'myApiKey' }) + ); + }); + + test('requestOptions merges headers with default ones', async () => { + const requestOptions: RequestOptions = { + headers: { 'x-algolia-api-key': 'myApiKey' }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + expect(req.headers).toEqual( + expect.objectContaining({ 'x-algolia-api-key': 'myApiKey' }) + ); + }); + + test('requestOptions queryParameters accepts booleans', async () => { + const requestOptions: RequestOptions = { + queryParameters: { isItWorking: true }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + isItWorking: 'true', + }); + }); + + test('requestOptions queryParameters accepts integers', async () => { + const requestOptions: RequestOptions = { + queryParameters: { myParam: 2 }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + myParam: '2', + }); + }); + + test('requestOptions queryParameters accepts list of string', async () => { + const requestOptions: RequestOptions = { + queryParameters: { myParam: ['c', 'd'] }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + myParam: 'c,d', + }); + }); + + test('requestOptions queryParameters accepts list of booleans', async () => { + const requestOptions: RequestOptions = { + queryParameters: { myParam: [true, true, false] }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + myParam: 'true,true,false', + }); + }); + + test('requestOptions queryParameters accepts list of integers', async () => { + const requestOptions: RequestOptions = { + queryParameters: { myParam: [1, 2] }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + myParam: '1,2', + }); + }); +}); + +describe('customPut', () => { + test('allow put method for a custom path with minimal parameters', async () => { + const req = (await client.customPut({ + path: '/test/minimal', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/minimal'); + expect(req.method).toEqual('PUT'); + expect(req.data).toEqual({}); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('allow put method for a custom path with all parameters', async () => { + const req = (await client.customPut({ + path: '/test/all', + parameters: { query: 'parameters' }, + body: { body: 'parameters' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/all'); + expect(req.method).toEqual('PUT'); + expect(req.data).toEqual({ body: 'parameters' }); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + }); +}); + +describe('deleteABTest', () => { + test('deleteABTest', async () => { + const req = (await client.deleteABTest({ + id: 42, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/2/abtests/42'); + expect(req.method).toEqual('DELETE'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('getABTest', () => { + test('getABTest', async () => { + const req = (await client.getABTest({ id: 42 })) as unknown as EchoResponse; + + expect(req.path).toEqual('/2/abtests/42'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('listABTests', () => { + test('listABTests with minimal parameters', async () => { + const req = (await client.listABTests()) as unknown as EchoResponse; + + expect(req.path).toEqual('/2/abtests'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('listABTests with parameters', async () => { + const req = (await client.listABTests({ + offset: 42, + limit: 21, + indexPrefix: 'foo', + indexSuffix: 'bar', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/2/abtests'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ + offset: '42', + limit: '21', + indexPrefix: 'foo', + indexSuffix: 'bar', + }); + }); +}); + +describe('stopABTest', () => { + test('stopABTest', async () => { + const req = (await client.stopABTest({ + id: 42, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/2/abtests/42/stop'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); diff --git a/tests/output/javascript/src/requests/algoliasearch.test.ts b/tests/output/javascript/src/requests/algoliasearch.test.ts new file mode 100644 index 0000000000..c89702c405 --- /dev/null +++ b/tests/output/javascript/src/requests/algoliasearch.test.ts @@ -0,0 +1,707 @@ +import type { EchoResponse, RequestOptions } from '@algolia/client-common'; +import { echoRequester } from '@algolia/requester-node-http'; +import { liteClient } from 'algoliasearch/lite'; +import * as dotenv from 'dotenv'; + +dotenv.config({ path: '../../.env' }); + +const appId = process.env.ALGOLIA_APPLICATION_ID || 'test_app_id'; +const apiKey = process.env.ALGOLIA_SEARCH_KEY || 'test_api_key'; + +const client = liteClient(appId, apiKey, { requester: echoRequester() }); + +if (!process.env.ALGOLIA_APPLICATION_ID) { + throw new Error( + 'please provide an `ALGOLIA_APPLICATION_ID` env var for e2e tests' + ); +} + +if (!process.env.ALGOLIA_ADMIN_KEY) { + throw new Error( + 'please provide an `ALGOLIA_ADMIN_KEY` env var for e2e tests' + ); +} + +const e2eClient = liteClient( + process.env.ALGOLIA_APPLICATION_ID, + process.env.ALGOLIA_ADMIN_KEY +); + +describe('customPost', () => { + test('allow post method for a custom path with minimal parameters', async () => { + const req = (await client.customPost({ + path: '/test/minimal', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/minimal'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({}); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('allow post method for a custom path with all parameters', async () => { + const req = (await client.customPost({ + path: '/test/all', + parameters: { query: 'parameters' }, + body: { body: 'parameters' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/all'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ body: 'parameters' }); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + }); + + test('requestOptions can override default query parameters', async () => { + const requestOptions: RequestOptions = { + queryParameters: { query: 'myQueryParameter' }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ query: 'myQueryParameter' }); + }); + + test('requestOptions merges query parameters with default ones', async () => { + const requestOptions: RequestOptions = { + queryParameters: { query2: 'myQueryParameter' }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + query2: 'myQueryParameter', + }); + }); + + test('requestOptions can override default headers', async () => { + const requestOptions: RequestOptions = { + headers: { 'x-algolia-api-key': 'myApiKey' }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + expect(req.headers).toEqual( + expect.objectContaining({ 'x-algolia-api-key': 'myApiKey' }) + ); + }); + + test('requestOptions merges headers with default ones', async () => { + const requestOptions: RequestOptions = { + headers: { 'x-algolia-api-key': 'myApiKey' }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + expect(req.headers).toEqual( + expect.objectContaining({ 'x-algolia-api-key': 'myApiKey' }) + ); + }); + + test('requestOptions queryParameters accepts booleans', async () => { + const requestOptions: RequestOptions = { + queryParameters: { isItWorking: true }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + isItWorking: 'true', + }); + }); + + test('requestOptions queryParameters accepts integers', async () => { + const requestOptions: RequestOptions = { + queryParameters: { myParam: 2 }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + myParam: '2', + }); + }); + + test('requestOptions queryParameters accepts list of string', async () => { + const requestOptions: RequestOptions = { + queryParameters: { myParam: ['c', 'd'] }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + myParam: 'c,d', + }); + }); + + test('requestOptions queryParameters accepts list of booleans', async () => { + const requestOptions: RequestOptions = { + queryParameters: { myParam: [true, true, false] }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + myParam: 'true,true,false', + }); + }); + + test('requestOptions queryParameters accepts list of integers', async () => { + const requestOptions: RequestOptions = { + queryParameters: { myParam: [1, 2] }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + myParam: '1,2', + }); + }); +}); + +describe('search', () => { + test('search for a single hits request with minimal parameters', async () => { + const req = (await client.search({ + requests: [{ indexName: 'cts_e2e_search_empty_index' }], + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/*/queries'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + requests: [{ indexName: 'cts_e2e_search_empty_index' }], + }); + expect(req.searchParams).toStrictEqual(undefined); + + const resp = await e2eClient.search({ + requests: [{ indexName: 'cts_e2e_search_empty_index' }], + }); + + expect(resp).toMatchObject({ + results: [ + { + hits: [], + page: 0, + nbHits: 0, + nbPages: 0, + hitsPerPage: 20, + exhaustiveNbHits: true, + exhaustiveTypo: true, + exhaustive: { nbHits: true, typo: true }, + processingTimeMS: 1, + query: '', + params: '', + index: 'cts_e2e_search_empty_index', + renderingContent: {}, + }, + ], + }); + }); + + test('search for a single facet request with minimal parameters', async () => { + const req = (await client.search({ + requests: [ + { indexName: 'cts_e2e_search_facet', type: 'facet', facet: 'editor' }, + ], + strategy: 'stopIfEnoughMatches', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/*/queries'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + requests: [ + { indexName: 'cts_e2e_search_facet', type: 'facet', facet: 'editor' }, + ], + strategy: 'stopIfEnoughMatches', + }); + expect(req.searchParams).toStrictEqual(undefined); + + const resp = await e2eClient.search({ + requests: [ + { indexName: 'cts_e2e_search_facet', type: 'facet', facet: 'editor' }, + ], + strategy: 'stopIfEnoughMatches', + }); + + expect(resp).toMatchObject({ + results: [ + { + exhaustiveFacetsCount: true, + processingTimeMS: 1, + facetHits: [ + { count: 1, highlighted: 'goland', value: 'goland' }, + { count: 1, highlighted: 'neovim', value: 'neovim' }, + { count: 1, highlighted: 'vscode', value: 'vscode' }, + ], + }, + ], + }); + }); + + test('search for a single hits request with all parameters', async () => { + const req = (await client.search({ + requests: [ + { + indexName: 'theIndexName', + query: 'myQuery', + hitsPerPage: 50, + type: 'default', + }, + ], + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/*/queries'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + requests: [ + { + indexName: 'theIndexName', + query: 'myQuery', + hitsPerPage: 50, + type: 'default', + }, + ], + }); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('search for a single facet request with all parameters', async () => { + const req = (await client.search({ + requests: [ + { + indexName: 'theIndexName', + type: 'facet', + facet: 'theFacet', + facetQuery: 'theFacetQuery', + query: 'theQuery', + maxFacetHits: 50, + }, + ], + strategy: 'stopIfEnoughMatches', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/*/queries'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + requests: [ + { + indexName: 'theIndexName', + type: 'facet', + facet: 'theFacet', + facetQuery: 'theFacetQuery', + query: 'theQuery', + maxFacetHits: 50, + }, + ], + strategy: 'stopIfEnoughMatches', + }); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('search for multiple mixed requests in multiple indices with minimal parameters', async () => { + const req = (await client.search({ + requests: [ + { indexName: 'theIndexName' }, + { indexName: 'theIndexName2', type: 'facet', facet: 'theFacet' }, + { indexName: 'theIndexName', type: 'default' }, + ], + strategy: 'stopIfEnoughMatches', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/*/queries'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + requests: [ + { indexName: 'theIndexName' }, + { indexName: 'theIndexName2', type: 'facet', facet: 'theFacet' }, + { indexName: 'theIndexName', type: 'default' }, + ], + strategy: 'stopIfEnoughMatches', + }); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('search for multiple mixed requests in multiple indices with all parameters', async () => { + const req = (await client.search({ + requests: [ + { + indexName: 'theIndexName', + type: 'facet', + facet: 'theFacet', + facetQuery: 'theFacetQuery', + query: 'theQuery', + maxFacetHits: 50, + }, + { + indexName: 'theIndexName', + query: 'myQuery', + hitsPerPage: 50, + type: 'default', + }, + ], + strategy: 'stopIfEnoughMatches', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/*/queries'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + requests: [ + { + indexName: 'theIndexName', + type: 'facet', + facet: 'theFacet', + facetQuery: 'theFacetQuery', + query: 'theQuery', + maxFacetHits: 50, + }, + { + indexName: 'theIndexName', + query: 'myQuery', + hitsPerPage: 50, + type: 'default', + }, + ], + strategy: 'stopIfEnoughMatches', + }); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('search filters accept all of the possible shapes', async () => { + const req = (await client.search({ + requests: [ + { + indexName: 'theIndexName', + facetFilters: 'mySearch:filters', + reRankingApplyFilter: 'mySearch:filters', + tagFilters: 'mySearch:filters', + numericFilters: 'mySearch:filters', + optionalFilters: 'mySearch:filters', + }, + { + indexName: 'theIndexName', + facetFilters: ['mySearch:filters', ['mySearch:filters']], + reRankingApplyFilter: ['mySearch:filters', ['mySearch:filters']], + tagFilters: ['mySearch:filters', ['mySearch:filters']], + numericFilters: ['mySearch:filters', ['mySearch:filters']], + optionalFilters: ['mySearch:filters', ['mySearch:filters']], + }, + ], + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/*/queries'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + requests: [ + { + indexName: 'theIndexName', + facetFilters: 'mySearch:filters', + reRankingApplyFilter: 'mySearch:filters', + tagFilters: 'mySearch:filters', + numericFilters: 'mySearch:filters', + optionalFilters: 'mySearch:filters', + }, + { + indexName: 'theIndexName', + facetFilters: ['mySearch:filters', ['mySearch:filters']], + reRankingApplyFilter: ['mySearch:filters', ['mySearch:filters']], + tagFilters: ['mySearch:filters', ['mySearch:filters']], + numericFilters: ['mySearch:filters', ['mySearch:filters']], + optionalFilters: ['mySearch:filters', ['mySearch:filters']], + }, + ], + }); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('search with all search parameters', async () => { + const req = (await client.search({ + requests: [ + { + advancedSyntax: true, + advancedSyntaxFeatures: ['exactPhrase'], + allowTyposOnNumericTokens: true, + alternativesAsExact: ['multiWordsSynonym'], + analytics: true, + analyticsTags: [''], + aroundLatLng: '', + aroundLatLngViaIP: true, + aroundPrecision: 0, + aroundRadius: 'all', + attributeCriteriaComputedByMinProximity: true, + attributesForFaceting: [''], + attributesToHighlight: [''], + attributesToRetrieve: [''], + attributesToSnippet: [''], + clickAnalytics: true, + customRanking: [''], + decompoundQuery: true, + disableExactOnAttributes: [''], + disableTypoToleranceOnAttributes: [''], + distinct: 0, + enableABTest: true, + enablePersonalization: true, + enableReRanking: true, + enableRules: true, + exactOnSingleWordQuery: 'attribute', + explain: ['foo', 'bar'], + facetFilters: [''], + facetingAfterDistinct: true, + facets: [''], + filters: '', + getRankingInfo: true, + highlightPostTag: '', + highlightPreTag: '', + hitsPerPage: 1, + ignorePlurals: false, + indexName: 'theIndexName', + insideBoundingBox: [ + [47.3165, 4.9665, 47.3424, 5.0201], + [40.9234, 2.1185, 38.643, 1.9916], + ], + insidePolygon: [ + [47.3165, 4.9665, 47.3424, 5.0201, 47.32, 4.9], + [40.9234, 2.1185, 38.643, 1.9916, 39.2587, 2.0104], + ], + keepDiacriticsOnCharacters: '', + length: 1, + maxValuesPerFacet: 0, + minProximity: 1, + minWordSizefor1Typo: 0, + minWordSizefor2Typos: 0, + minimumAroundRadius: 1, + naturalLanguages: [''], + numericFilters: [''], + offset: 0, + optionalFilters: [''], + optionalWords: [''], + page: 0, + percentileComputation: true, + personalizationImpact: 0, + query: '', + queryLanguages: [''], + queryType: 'prefixAll', + ranking: [''], + reRankingApplyFilter: [''], + relevancyStrictness: 0, + removeStopWords: true, + removeWordsIfNoResults: 'allOptional', + renderingContent: { + facetOrdering: { + facets: { order: ['a', 'b'] }, + values: { a: { order: ['b'], sortRemainingBy: 'count' } }, + }, + }, + replaceSynonymsInHighlight: true, + responseFields: [''], + restrictHighlightAndSnippetArrays: true, + restrictSearchableAttributes: [''], + ruleContexts: [''], + similarQuery: '', + snippetEllipsisText: '', + sortFacetValuesBy: '', + sumOrFiltersScores: true, + synonyms: true, + tagFilters: [''], + type: 'default', + typoTolerance: 'min', + userToken: '', + }, + ], + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/*/queries'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + requests: [ + { + advancedSyntax: true, + advancedSyntaxFeatures: ['exactPhrase'], + allowTyposOnNumericTokens: true, + alternativesAsExact: ['multiWordsSynonym'], + analytics: true, + analyticsTags: [''], + aroundLatLng: '', + aroundLatLngViaIP: true, + aroundPrecision: 0, + aroundRadius: 'all', + attributeCriteriaComputedByMinProximity: true, + attributesForFaceting: [''], + attributesToHighlight: [''], + attributesToRetrieve: [''], + attributesToSnippet: [''], + clickAnalytics: true, + customRanking: [''], + decompoundQuery: true, + disableExactOnAttributes: [''], + disableTypoToleranceOnAttributes: [''], + distinct: 0, + enableABTest: true, + enablePersonalization: true, + enableReRanking: true, + enableRules: true, + exactOnSingleWordQuery: 'attribute', + explain: ['foo', 'bar'], + facetFilters: [''], + facetingAfterDistinct: true, + facets: [''], + filters: '', + getRankingInfo: true, + highlightPostTag: '', + highlightPreTag: '', + hitsPerPage: 1, + ignorePlurals: false, + indexName: 'theIndexName', + insideBoundingBox: [ + [47.3165, 4.9665, 47.3424, 5.0201], + [40.9234, 2.1185, 38.643, 1.9916], + ], + insidePolygon: [ + [47.3165, 4.9665, 47.3424, 5.0201, 47.32, 4.9], + [40.9234, 2.1185, 38.643, 1.9916, 39.2587, 2.0104], + ], + keepDiacriticsOnCharacters: '', + length: 1, + maxValuesPerFacet: 0, + minProximity: 1, + minWordSizefor1Typo: 0, + minWordSizefor2Typos: 0, + minimumAroundRadius: 1, + naturalLanguages: [''], + numericFilters: [''], + offset: 0, + optionalFilters: [''], + optionalWords: [''], + page: 0, + percentileComputation: true, + personalizationImpact: 0, + query: '', + queryLanguages: [''], + queryType: 'prefixAll', + ranking: [''], + reRankingApplyFilter: [''], + relevancyStrictness: 0, + removeStopWords: true, + removeWordsIfNoResults: 'allOptional', + renderingContent: { + facetOrdering: { + facets: { order: ['a', 'b'] }, + values: { a: { order: ['b'], sortRemainingBy: 'count' } }, + }, + }, + replaceSynonymsInHighlight: true, + responseFields: [''], + restrictHighlightAndSnippetArrays: true, + restrictSearchableAttributes: [''], + ruleContexts: [''], + similarQuery: '', + snippetEllipsisText: '', + sortFacetValuesBy: '', + sumOrFiltersScores: true, + synonyms: true, + tagFilters: [''], + type: 'default', + typoTolerance: 'min', + userToken: '', + }, + ], + }); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); diff --git a/tests/output/javascript/src/requests/analytics.test.ts b/tests/output/javascript/src/requests/analytics.test.ts new file mode 100644 index 0000000000..16eab3660f --- /dev/null +++ b/tests/output/javascript/src/requests/analytics.test.ts @@ -0,0 +1,929 @@ +import { analyticsClient } from '@algolia/client-analytics'; +import type { EchoResponse, RequestOptions } from '@algolia/client-common'; +import { echoRequester } from '@algolia/requester-node-http'; + +const appId = process.env.ALGOLIA_APPLICATION_ID || 'test_app_id'; +const apiKey = process.env.ALGOLIA_SEARCH_KEY || 'test_api_key'; + +const client = analyticsClient(appId, apiKey, 'us', { + requester: echoRequester(), +}); + +describe('customDelete', () => { + test('allow del method for a custom path with minimal parameters', async () => { + const req = (await client.customDelete({ + path: '/test/minimal', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/minimal'); + expect(req.method).toEqual('DELETE'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('allow del method for a custom path with all parameters', async () => { + const req = (await client.customDelete({ + path: '/test/all', + parameters: { query: 'parameters' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/all'); + expect(req.method).toEqual('DELETE'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + }); +}); + +describe('customGet', () => { + test('allow get method for a custom path with minimal parameters', async () => { + const req = (await client.customGet({ + path: '/test/minimal', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/minimal'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('allow get method for a custom path with all parameters', async () => { + const req = (await client.customGet({ + path: '/test/all', + parameters: { query: 'parameters' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/all'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + }); +}); + +describe('customPost', () => { + test('allow post method for a custom path with minimal parameters', async () => { + const req = (await client.customPost({ + path: '/test/minimal', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/minimal'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({}); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('allow post method for a custom path with all parameters', async () => { + const req = (await client.customPost({ + path: '/test/all', + parameters: { query: 'parameters' }, + body: { body: 'parameters' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/all'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ body: 'parameters' }); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + }); + + test('requestOptions can override default query parameters', async () => { + const requestOptions: RequestOptions = { + queryParameters: { query: 'myQueryParameter' }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ query: 'myQueryParameter' }); + }); + + test('requestOptions merges query parameters with default ones', async () => { + const requestOptions: RequestOptions = { + queryParameters: { query2: 'myQueryParameter' }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + query2: 'myQueryParameter', + }); + }); + + test('requestOptions can override default headers', async () => { + const requestOptions: RequestOptions = { + headers: { 'x-algolia-api-key': 'myApiKey' }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + expect(req.headers).toEqual( + expect.objectContaining({ 'x-algolia-api-key': 'myApiKey' }) + ); + }); + + test('requestOptions merges headers with default ones', async () => { + const requestOptions: RequestOptions = { + headers: { 'x-algolia-api-key': 'myApiKey' }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + expect(req.headers).toEqual( + expect.objectContaining({ 'x-algolia-api-key': 'myApiKey' }) + ); + }); + + test('requestOptions queryParameters accepts booleans', async () => { + const requestOptions: RequestOptions = { + queryParameters: { isItWorking: true }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + isItWorking: 'true', + }); + }); + + test('requestOptions queryParameters accepts integers', async () => { + const requestOptions: RequestOptions = { + queryParameters: { myParam: 2 }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + myParam: '2', + }); + }); + + test('requestOptions queryParameters accepts list of string', async () => { + const requestOptions: RequestOptions = { + queryParameters: { myParam: ['c', 'd'] }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + myParam: 'c,d', + }); + }); + + test('requestOptions queryParameters accepts list of booleans', async () => { + const requestOptions: RequestOptions = { + queryParameters: { myParam: [true, true, false] }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + myParam: 'true,true,false', + }); + }); + + test('requestOptions queryParameters accepts list of integers', async () => { + const requestOptions: RequestOptions = { + queryParameters: { myParam: [1, 2] }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + myParam: '1,2', + }); + }); +}); + +describe('customPut', () => { + test('allow put method for a custom path with minimal parameters', async () => { + const req = (await client.customPut({ + path: '/test/minimal', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/minimal'); + expect(req.method).toEqual('PUT'); + expect(req.data).toEqual({}); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('allow put method for a custom path with all parameters', async () => { + const req = (await client.customPut({ + path: '/test/all', + parameters: { query: 'parameters' }, + body: { body: 'parameters' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/all'); + expect(req.method).toEqual('PUT'); + expect(req.data).toEqual({ body: 'parameters' }); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + }); +}); + +describe('getAverageClickPosition', () => { + test('get getAverageClickPosition with minimal parameters', async () => { + const req = (await client.getAverageClickPosition({ + index: 'index', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/2/clicks/averageClickPosition'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ index: 'index' }); + }); + + test('get getAverageClickPosition with all parameters', async () => { + const req = (await client.getAverageClickPosition({ + index: 'index', + startDate: '1999-09-19', + endDate: '2001-01-01', + tags: 'tag', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/2/clicks/averageClickPosition'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ + index: 'index', + startDate: '1999-09-19', + endDate: '2001-01-01', + tags: 'tag', + }); + }); +}); + +describe('getClickPositions', () => { + test('get getClickPositions with minimal parameters', async () => { + const req = (await client.getClickPositions({ + index: 'index', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/2/clicks/positions'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ index: 'index' }); + }); + + test('get getClickPositions with all parameters', async () => { + const req = (await client.getClickPositions({ + index: 'index', + startDate: '1999-09-19', + endDate: '2001-01-01', + tags: 'tag', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/2/clicks/positions'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ + index: 'index', + startDate: '1999-09-19', + endDate: '2001-01-01', + tags: 'tag', + }); + }); +}); + +describe('getClickThroughRate', () => { + test('get getClickThroughRate with minimal parameters', async () => { + const req = (await client.getClickThroughRate({ + index: 'index', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/2/clicks/clickThroughRate'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ index: 'index' }); + }); + + test('get getClickThroughRate with all parameters', async () => { + const req = (await client.getClickThroughRate({ + index: 'index', + startDate: '1999-09-19', + endDate: '2001-01-01', + tags: 'tag', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/2/clicks/clickThroughRate'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ + index: 'index', + startDate: '1999-09-19', + endDate: '2001-01-01', + tags: 'tag', + }); + }); +}); + +describe('getConversationRate', () => { + test('get getConversationRate with minimal parameters', async () => { + const req = (await client.getConversationRate({ + index: 'index', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/2/conversions/conversionRate'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ index: 'index' }); + }); + + test('get getConversationRate with all parameters', async () => { + const req = (await client.getConversationRate({ + index: 'index', + startDate: '1999-09-19', + endDate: '2001-01-01', + tags: 'tag', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/2/conversions/conversionRate'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ + index: 'index', + startDate: '1999-09-19', + endDate: '2001-01-01', + tags: 'tag', + }); + }); +}); + +describe('getNoClickRate', () => { + test('get getNoClickRate with minimal parameters', async () => { + const req = (await client.getNoClickRate({ + index: 'index', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/2/searches/noClickRate'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ index: 'index' }); + }); + + test('get getNoClickRate with all parameters', async () => { + const req = (await client.getNoClickRate({ + index: 'index', + startDate: '1999-09-19', + endDate: '2001-01-01', + tags: 'tag', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/2/searches/noClickRate'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ + index: 'index', + startDate: '1999-09-19', + endDate: '2001-01-01', + tags: 'tag', + }); + }); +}); + +describe('getNoResultsRate', () => { + test('get getNoResultsRate with minimal parameters', async () => { + const req = (await client.getNoResultsRate({ + index: 'index', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/2/searches/noResultRate'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ index: 'index' }); + }); + + test('get getNoResultsRate with all parameters', async () => { + const req = (await client.getNoResultsRate({ + index: 'index', + startDate: '1999-09-19', + endDate: '2001-01-01', + tags: 'tag', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/2/searches/noResultRate'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ + index: 'index', + startDate: '1999-09-19', + endDate: '2001-01-01', + tags: 'tag', + }); + }); +}); + +describe('getSearchesCount', () => { + test('get getSearchesCount with minimal parameters', async () => { + const req = (await client.getSearchesCount({ + index: 'index', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/2/searches/count'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ index: 'index' }); + }); + + test('get getSearchesCount with all parameters', async () => { + const req = (await client.getSearchesCount({ + index: 'index', + startDate: '1999-09-19', + endDate: '2001-01-01', + tags: 'tag', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/2/searches/count'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ + index: 'index', + startDate: '1999-09-19', + endDate: '2001-01-01', + tags: 'tag', + }); + }); +}); + +describe('getSearchesNoClicks', () => { + test('get getSearchesNoClicks with minimal parameters', async () => { + const req = (await client.getSearchesNoClicks({ + index: 'index', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/2/searches/noClicks'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ index: 'index' }); + }); + + test('get getSearchesNoClicks with all parameters', async () => { + const req = (await client.getSearchesNoClicks({ + index: 'index', + startDate: '1999-09-19', + endDate: '2001-01-01', + limit: 21, + offset: 42, + tags: 'tag', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/2/searches/noClicks'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ + index: 'index', + startDate: '1999-09-19', + endDate: '2001-01-01', + limit: '21', + offset: '42', + tags: 'tag', + }); + }); +}); + +describe('getSearchesNoResults', () => { + test('get getSearchesNoResults with minimal parameters', async () => { + const req = (await client.getSearchesNoResults({ + index: 'index', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/2/searches/noResults'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ index: 'index' }); + }); + + test('get getSearchesNoResults with all parameters', async () => { + const req = (await client.getSearchesNoResults({ + index: 'index', + startDate: '1999-09-19', + endDate: '2001-01-01', + limit: 21, + offset: 42, + tags: 'tag', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/2/searches/noResults'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ + index: 'index', + startDate: '1999-09-19', + endDate: '2001-01-01', + limit: '21', + offset: '42', + tags: 'tag', + }); + }); +}); + +describe('getStatus', () => { + test('get getStatus with minimal parameters', async () => { + const req = (await client.getStatus({ + index: 'index', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/2/status'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ index: 'index' }); + }); +}); + +describe('getTopCountries', () => { + test('get getTopCountries with minimal parameters', async () => { + const req = (await client.getTopCountries({ + index: 'index', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/2/countries'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ index: 'index' }); + }); + + test('get getTopCountries with all parameters', async () => { + const req = (await client.getTopCountries({ + index: 'index', + startDate: '1999-09-19', + endDate: '2001-01-01', + limit: 21, + offset: 42, + tags: 'tag', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/2/countries'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ + index: 'index', + startDate: '1999-09-19', + endDate: '2001-01-01', + limit: '21', + offset: '42', + tags: 'tag', + }); + }); +}); + +describe('getTopFilterAttributes', () => { + test('get getTopFilterAttributes with minimal parameters', async () => { + const req = (await client.getTopFilterAttributes({ + index: 'index', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/2/filters'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ index: 'index' }); + }); + + test('get getTopFilterAttributes with all parameters', async () => { + const req = (await client.getTopFilterAttributes({ + index: 'index', + search: 'mySearch', + startDate: '1999-09-19', + endDate: '2001-01-01', + limit: 21, + offset: 42, + tags: 'tag', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/2/filters'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ + index: 'index', + search: 'mySearch', + startDate: '1999-09-19', + endDate: '2001-01-01', + limit: '21', + offset: '42', + tags: 'tag', + }); + }); +}); + +describe('getTopFilterForAttribute', () => { + test('get getTopFilterForAttribute with minimal parameters', async () => { + const req = (await client.getTopFilterForAttribute({ + attribute: 'myAttribute', + index: 'index', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/2/filters/myAttribute'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ index: 'index' }); + }); + + test('get getTopFilterForAttribute with minimal parameters and multiple attributes', async () => { + const req = (await client.getTopFilterForAttribute({ + attribute: 'myAttribute1,myAttribute2', + index: 'index', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/2/filters/myAttribute1%2CmyAttribute2'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ index: 'index' }); + }); + + test('get getTopFilterForAttribute with all parameters', async () => { + const req = (await client.getTopFilterForAttribute({ + attribute: 'myAttribute', + index: 'index', + search: 'mySearch', + startDate: '1999-09-19', + endDate: '2001-01-01', + limit: 21, + offset: 42, + tags: 'tag', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/2/filters/myAttribute'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ + index: 'index', + search: 'mySearch', + startDate: '1999-09-19', + endDate: '2001-01-01', + limit: '21', + offset: '42', + tags: 'tag', + }); + }); + + test('get getTopFilterForAttribute with all parameters and multiple attributes', async () => { + const req = (await client.getTopFilterForAttribute({ + attribute: 'myAttribute1,myAttribute2', + index: 'index', + search: 'mySearch', + startDate: '1999-09-19', + endDate: '2001-01-01', + limit: 21, + offset: 42, + tags: 'tag', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/2/filters/myAttribute1%2CmyAttribute2'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ + index: 'index', + search: 'mySearch', + startDate: '1999-09-19', + endDate: '2001-01-01', + limit: '21', + offset: '42', + tags: 'tag', + }); + }); +}); + +describe('getTopFiltersNoResults', () => { + test('get getTopFiltersNoResults with minimal parameters', async () => { + const req = (await client.getTopFiltersNoResults({ + index: 'index', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/2/filters/noResults'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ index: 'index' }); + }); + + test('get getTopFiltersNoResults with all parameters', async () => { + const req = (await client.getTopFiltersNoResults({ + index: 'index', + search: 'mySearch', + startDate: '1999-09-19', + endDate: '2001-01-01', + limit: 21, + offset: 42, + tags: 'tag', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/2/filters/noResults'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ + index: 'index', + search: 'mySearch', + startDate: '1999-09-19', + endDate: '2001-01-01', + limit: '21', + offset: '42', + tags: 'tag', + }); + }); +}); + +describe('getTopHits', () => { + test('get getTopHits with minimal parameters', async () => { + const req = (await client.getTopHits({ + index: 'index', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/2/hits'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ index: 'index' }); + }); + + test('get getTopHits with all parameters', async () => { + const req = (await client.getTopHits({ + index: 'index', + search: 'mySearch', + clickAnalytics: true, + startDate: '1999-09-19', + endDate: '2001-01-01', + limit: 21, + offset: 42, + tags: 'tag', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/2/hits'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ + index: 'index', + search: 'mySearch', + clickAnalytics: 'true', + startDate: '1999-09-19', + endDate: '2001-01-01', + limit: '21', + offset: '42', + tags: 'tag', + }); + }); +}); + +describe('getTopSearches', () => { + test('get getTopSearches with minimal parameters', async () => { + const req = (await client.getTopSearches({ + index: 'index', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/2/searches'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ index: 'index' }); + }); + + test('get getTopSearches with all parameters', async () => { + const req = (await client.getTopSearches({ + index: 'index', + clickAnalytics: true, + startDate: '1999-09-19', + endDate: '2001-01-01', + orderBy: 'searchCount', + direction: 'asc', + limit: 21, + offset: 42, + tags: 'tag', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/2/searches'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ + index: 'index', + clickAnalytics: 'true', + startDate: '1999-09-19', + endDate: '2001-01-01', + orderBy: 'searchCount', + direction: 'asc', + limit: '21', + offset: '42', + tags: 'tag', + }); + }); +}); + +describe('getUsersCount', () => { + test('get getUsersCount with minimal parameters', async () => { + const req = (await client.getUsersCount({ + index: 'index', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/2/users/count'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ index: 'index' }); + }); + + test('get getUsersCount with all parameters', async () => { + const req = (await client.getUsersCount({ + index: 'index', + startDate: '1999-09-19', + endDate: '2001-01-01', + tags: 'tag', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/2/users/count'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ + index: 'index', + startDate: '1999-09-19', + endDate: '2001-01-01', + tags: 'tag', + }); + }); +}); diff --git a/tests/output/javascript/src/requests/ingestion.test.ts b/tests/output/javascript/src/requests/ingestion.test.ts new file mode 100644 index 0000000000..5dddcade4b --- /dev/null +++ b/tests/output/javascript/src/requests/ingestion.test.ts @@ -0,0 +1,901 @@ +import type { EchoResponse, RequestOptions } from '@algolia/client-common'; +import { ingestionClient } from '@algolia/ingestion'; +import { echoRequester } from '@algolia/requester-node-http'; + +const appId = process.env.ALGOLIA_APPLICATION_ID || 'test_app_id'; +const apiKey = process.env.ALGOLIA_SEARCH_KEY || 'test_api_key'; + +const client = ingestionClient(appId, apiKey, 'us', { + requester: echoRequester(), +}); + +describe('createAuthentication', () => { + test('createAuthenticationOAuth', async () => { + const req = (await client.createAuthentication({ + type: 'oauth', + name: 'authName', + input: { + url: 'http://test.oauth', + client_id: 'myID', + client_secret: 'mySecret', + }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/authentications'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + type: 'oauth', + name: 'authName', + input: { + url: 'http://test.oauth', + client_id: 'myID', + client_secret: 'mySecret', + }, + }); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('createAuthenticationAlgolia', async () => { + const req = (await client.createAuthentication({ + type: 'algolia', + name: 'authName', + input: { appID: 'myappID', apiKey: 'randomApiKey' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/authentications'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + type: 'algolia', + name: 'authName', + input: { appID: 'myappID', apiKey: 'randomApiKey' }, + }); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('createDestination', () => { + test('createDestination', async () => { + const req = (await client.createDestination({ + type: 'search', + name: 'destinationName', + input: { indexPrefix: 'prefix_' }, + authenticationID: '6c02aeb1-775e-418e-870b-1faccd4b2c0f', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/destinations'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + type: 'search', + name: 'destinationName', + input: { indexPrefix: 'prefix_' }, + authenticationID: '6c02aeb1-775e-418e-870b-1faccd4b2c0f', + }); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('createSource', () => { + test('createSource', async () => { + const req = (await client.createSource({ + type: 'commercetools', + name: 'sourceName', + input: { + storeKeys: ['myStore'], + locales: ['de'], + url: 'http://commercetools.com', + projectKey: 'keyID', + }, + authenticationID: '6c02aeb1-775e-418e-870b-1faccd4b2c0f', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/sources'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + type: 'commercetools', + name: 'sourceName', + input: { + storeKeys: ['myStore'], + locales: ['de'], + url: 'http://commercetools.com', + projectKey: 'keyID', + }, + authenticationID: '6c02aeb1-775e-418e-870b-1faccd4b2c0f', + }); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('createTask', () => { + test('createTaskOnDemand', async () => { + const req = (await client.createTask({ + sourceID: 'search', + destinationID: 'destinationName', + trigger: { type: 'onDemand' }, + action: 'replace', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/tasks'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + sourceID: 'search', + destinationID: 'destinationName', + trigger: { type: 'onDemand' }, + action: 'replace', + }); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('createTaskSchedule', async () => { + const req = (await client.createTask({ + sourceID: 'search', + destinationID: 'destinationName', + trigger: { type: 'schedule', cron: '* * * * *' }, + action: 'replace', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/tasks'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + sourceID: 'search', + destinationID: 'destinationName', + trigger: { type: 'schedule', cron: '* * * * *' }, + action: 'replace', + }); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('createTaskSubscription', async () => { + const req = (await client.createTask({ + sourceID: 'search', + destinationID: 'destinationName', + trigger: { type: 'onDemand' }, + action: 'replace', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/tasks'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + sourceID: 'search', + destinationID: 'destinationName', + trigger: { type: 'onDemand' }, + action: 'replace', + }); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('customDelete', () => { + test('allow del method for a custom path with minimal parameters', async () => { + const req = (await client.customDelete({ + path: '/test/minimal', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/minimal'); + expect(req.method).toEqual('DELETE'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('allow del method for a custom path with all parameters', async () => { + const req = (await client.customDelete({ + path: '/test/all', + parameters: { query: 'parameters' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/all'); + expect(req.method).toEqual('DELETE'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + }); +}); + +describe('customGet', () => { + test('allow get method for a custom path with minimal parameters', async () => { + const req = (await client.customGet({ + path: '/test/minimal', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/minimal'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('allow get method for a custom path with all parameters', async () => { + const req = (await client.customGet({ + path: '/test/all', + parameters: { query: 'parameters' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/all'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + }); +}); + +describe('customPost', () => { + test('allow post method for a custom path with minimal parameters', async () => { + const req = (await client.customPost({ + path: '/test/minimal', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/minimal'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({}); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('allow post method for a custom path with all parameters', async () => { + const req = (await client.customPost({ + path: '/test/all', + parameters: { query: 'parameters' }, + body: { body: 'parameters' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/all'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ body: 'parameters' }); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + }); + + test('requestOptions can override default query parameters', async () => { + const requestOptions: RequestOptions = { + queryParameters: { query: 'myQueryParameter' }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ query: 'myQueryParameter' }); + }); + + test('requestOptions merges query parameters with default ones', async () => { + const requestOptions: RequestOptions = { + queryParameters: { query2: 'myQueryParameter' }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + query2: 'myQueryParameter', + }); + }); + + test('requestOptions can override default headers', async () => { + const requestOptions: RequestOptions = { + headers: { 'x-algolia-api-key': 'myApiKey' }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + expect(req.headers).toEqual( + expect.objectContaining({ 'x-algolia-api-key': 'myApiKey' }) + ); + }); + + test('requestOptions merges headers with default ones', async () => { + const requestOptions: RequestOptions = { + headers: { 'x-algolia-api-key': 'myApiKey' }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + expect(req.headers).toEqual( + expect.objectContaining({ 'x-algolia-api-key': 'myApiKey' }) + ); + }); + + test('requestOptions queryParameters accepts booleans', async () => { + const requestOptions: RequestOptions = { + queryParameters: { isItWorking: true }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + isItWorking: 'true', + }); + }); + + test('requestOptions queryParameters accepts integers', async () => { + const requestOptions: RequestOptions = { + queryParameters: { myParam: 2 }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + myParam: '2', + }); + }); + + test('requestOptions queryParameters accepts list of string', async () => { + const requestOptions: RequestOptions = { + queryParameters: { myParam: ['c', 'd'] }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + myParam: 'c,d', + }); + }); + + test('requestOptions queryParameters accepts list of booleans', async () => { + const requestOptions: RequestOptions = { + queryParameters: { myParam: [true, true, false] }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + myParam: 'true,true,false', + }); + }); + + test('requestOptions queryParameters accepts list of integers', async () => { + const requestOptions: RequestOptions = { + queryParameters: { myParam: [1, 2] }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + myParam: '1,2', + }); + }); +}); + +describe('customPut', () => { + test('allow put method for a custom path with minimal parameters', async () => { + const req = (await client.customPut({ + path: '/test/minimal', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/minimal'); + expect(req.method).toEqual('PUT'); + expect(req.data).toEqual({}); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('allow put method for a custom path with all parameters', async () => { + const req = (await client.customPut({ + path: '/test/all', + parameters: { query: 'parameters' }, + body: { body: 'parameters' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/all'); + expect(req.method).toEqual('PUT'); + expect(req.data).toEqual({ body: 'parameters' }); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + }); +}); + +describe('deleteAuthentication', () => { + test('deleteAuthentication', async () => { + const req = (await client.deleteAuthentication({ + authenticationID: '6c02aeb1-775e-418e-870b-1faccd4b2c0f', + })) as unknown as EchoResponse; + + expect(req.path).toEqual( + '/1/authentications/6c02aeb1-775e-418e-870b-1faccd4b2c0f' + ); + expect(req.method).toEqual('DELETE'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('deleteDestination', () => { + test('deleteDestination', async () => { + const req = (await client.deleteDestination({ + destinationID: '6c02aeb1-775e-418e-870b-1faccd4b2c0f', + })) as unknown as EchoResponse; + + expect(req.path).toEqual( + '/1/destinations/6c02aeb1-775e-418e-870b-1faccd4b2c0f' + ); + expect(req.method).toEqual('DELETE'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('deleteSource', () => { + test('deleteSource', async () => { + const req = (await client.deleteSource({ + sourceID: '6c02aeb1-775e-418e-870b-1faccd4b2c0f', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f'); + expect(req.method).toEqual('DELETE'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('deleteTask', () => { + test('deleteTask', async () => { + const req = (await client.deleteTask({ + taskID: '6c02aeb1-775e-418e-870b-1faccd4b2c0f', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f'); + expect(req.method).toEqual('DELETE'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('disableTask', () => { + test('disableTask', async () => { + const req = (await client.disableTask({ + taskID: '6c02aeb1-775e-418e-870b-1faccd4b2c0f', + })) as unknown as EchoResponse; + + expect(req.path).toEqual( + '/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f/disable' + ); + expect(req.method).toEqual('PUT'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('enableTask', () => { + test('enableTask', async () => { + const req = (await client.enableTask({ + taskID: '6c02aeb1-775e-418e-870b-1faccd4b2c0f', + })) as unknown as EchoResponse; + + expect(req.path).toEqual( + '/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f/enable' + ); + expect(req.method).toEqual('PUT'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('getAuthentication', () => { + test('getAuthentication', async () => { + const req = (await client.getAuthentication({ + authenticationID: '6c02aeb1-775e-418e-870b-1faccd4b2c0f', + })) as unknown as EchoResponse; + + expect(req.path).toEqual( + '/1/authentications/6c02aeb1-775e-418e-870b-1faccd4b2c0f' + ); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('getAuthentications', () => { + test('getAuthentications', async () => { + const req = (await client.getAuthentications()) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/authentications'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('getDestination', () => { + test('getDestination', async () => { + const req = (await client.getDestination({ + destinationID: '6c02aeb1-775e-418e-870b-1faccd4b2c0f', + })) as unknown as EchoResponse; + + expect(req.path).toEqual( + '/1/destinations/6c02aeb1-775e-418e-870b-1faccd4b2c0f' + ); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('getDestinations', () => { + test('getDestinations', async () => { + const req = (await client.getDestinations()) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/destinations'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('getDockerSourceStreams', () => { + test('getDockerSourceStreams', async () => { + const req = (await client.getDockerSourceStreams({ + sourceID: '6c02aeb1-775e-418e-870b-1faccd4b2c0f', + })) as unknown as EchoResponse; + + expect(req.path).toEqual( + '/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f/discover' + ); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('getEvent', () => { + test('getEvent', async () => { + const req = (await client.getEvent({ + runID: '6c02aeb1-775e-418e-870b-1faccd4b2c0f', + eventID: '6c02aeb1-775e-418e-870b-1faccd4b2c0c', + })) as unknown as EchoResponse; + + expect(req.path).toEqual( + '/1/runs/6c02aeb1-775e-418e-870b-1faccd4b2c0f/events/6c02aeb1-775e-418e-870b-1faccd4b2c0c' + ); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('getEvents', () => { + test('getEvents', async () => { + const req = (await client.getEvents({ + runID: '6c02aeb1-775e-418e-870b-1faccd4b2c0f', + })) as unknown as EchoResponse; + + expect(req.path).toEqual( + '/1/runs/6c02aeb1-775e-418e-870b-1faccd4b2c0f/events' + ); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('getRun', () => { + test('getRun', async () => { + const req = (await client.getRun({ + runID: '6c02aeb1-775e-418e-870b-1faccd4b2c0f', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/runs/6c02aeb1-775e-418e-870b-1faccd4b2c0f'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('getRuns', () => { + test('getRuns', async () => { + const req = (await client.getRuns()) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/runs'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('getSource', () => { + test('getSource', async () => { + const req = (await client.getSource({ + sourceID: '6c02aeb1-775e-418e-870b-1faccd4b2c0f', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('getSources', () => { + test('getSources', async () => { + const req = (await client.getSources()) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/sources'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('getTask', () => { + test('getTask', async () => { + const req = (await client.getTask({ + taskID: '6c02aeb1-775e-418e-870b-1faccd4b2c0f', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('getTasks', () => { + test('getTasks', async () => { + const req = (await client.getTasks()) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/tasks'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('runTask', () => { + test('runTask', async () => { + const req = (await client.runTask({ + taskID: '6c02aeb1-775e-418e-870b-1faccd4b2c0f', + })) as unknown as EchoResponse; + + expect(req.path).toEqual( + '/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f/run' + ); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('searchAuthentications', () => { + test('searchAuthentications', async () => { + const req = (await client.searchAuthentications({ + authenticationIDs: [ + '6c02aeb1-775e-418e-870b-1faccd4b2c0f', + '947ac9c4-7e58-4c87-b1e7-14a68e99699a', + ], + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/authentications/search'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + authenticationIDs: [ + '6c02aeb1-775e-418e-870b-1faccd4b2c0f', + '947ac9c4-7e58-4c87-b1e7-14a68e99699a', + ], + }); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('searchDestinations', () => { + test('searchDestinations', async () => { + const req = (await client.searchDestinations({ + destinationIDs: [ + '6c02aeb1-775e-418e-870b-1faccd4b2c0f', + '947ac9c4-7e58-4c87-b1e7-14a68e99699a', + ], + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/destinations/search'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + destinationIDs: [ + '6c02aeb1-775e-418e-870b-1faccd4b2c0f', + '947ac9c4-7e58-4c87-b1e7-14a68e99699a', + ], + }); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('searchSources', () => { + test('searchSources', async () => { + const req = (await client.searchSources({ + sourceIDs: [ + '6c02aeb1-775e-418e-870b-1faccd4b2c0f', + '947ac9c4-7e58-4c87-b1e7-14a68e99699a', + ], + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/sources/search'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + sourceIDs: [ + '6c02aeb1-775e-418e-870b-1faccd4b2c0f', + '947ac9c4-7e58-4c87-b1e7-14a68e99699a', + ], + }); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('searchTasks', () => { + test('searchTasks', async () => { + const req = (await client.searchTasks({ + taskIDs: [ + '6c02aeb1-775e-418e-870b-1faccd4b2c0f', + '947ac9c4-7e58-4c87-b1e7-14a68e99699a', + ], + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/tasks/search'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + taskIDs: [ + '6c02aeb1-775e-418e-870b-1faccd4b2c0f', + '947ac9c4-7e58-4c87-b1e7-14a68e99699a', + ], + }); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('triggerDockerSourceDiscover', () => { + test('triggerDockerSourceDiscover', async () => { + const req = (await client.triggerDockerSourceDiscover({ + sourceID: '6c02aeb1-775e-418e-870b-1faccd4b2c0f', + })) as unknown as EchoResponse; + + expect(req.path).toEqual( + '/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f/discover' + ); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('updateAuthentication', () => { + test('updateAuthentication', async () => { + const req = (await client.updateAuthentication({ + authenticationID: '6c02aeb1-775e-418e-870b-1faccd4b2c0f', + authenticationUpdate: { name: 'newName' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual( + '/1/authentications/6c02aeb1-775e-418e-870b-1faccd4b2c0f' + ); + expect(req.method).toEqual('PATCH'); + expect(req.data).toEqual({ name: 'newName' }); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('updateDestination', () => { + test('updateDestination', async () => { + const req = (await client.updateDestination({ + destinationID: '6c02aeb1-775e-418e-870b-1faccd4b2c0f', + destinationUpdate: { name: 'newName' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual( + '/1/destinations/6c02aeb1-775e-418e-870b-1faccd4b2c0f' + ); + expect(req.method).toEqual('PATCH'); + expect(req.data).toEqual({ name: 'newName' }); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('updateSource', () => { + test('updateSource', async () => { + const req = (await client.updateSource({ + sourceID: '6c02aeb1-775e-418e-870b-1faccd4b2c0f', + sourceUpdate: { name: 'newName' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f'); + expect(req.method).toEqual('PATCH'); + expect(req.data).toEqual({ name: 'newName' }); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('updateTask', () => { + test('updateTask', async () => { + const req = (await client.updateTask({ + taskID: '6c02aeb1-775e-418e-870b-1faccd4b2c0f', + taskUpdate: { enabled: false }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f'); + expect(req.method).toEqual('PATCH'); + expect(req.data).toEqual({ enabled: false }); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); diff --git a/tests/output/javascript/src/requests/insights.test.ts b/tests/output/javascript/src/requests/insights.test.ts new file mode 100644 index 0000000000..3800632952 --- /dev/null +++ b/tests/output/javascript/src/requests/insights.test.ts @@ -0,0 +1,523 @@ +import type { EchoResponse, RequestOptions } from '@algolia/client-common'; +import { insightsClient } from '@algolia/client-insights'; +import { echoRequester } from '@algolia/requester-node-http'; + +const appId = process.env.ALGOLIA_APPLICATION_ID || 'test_app_id'; +const apiKey = process.env.ALGOLIA_SEARCH_KEY || 'test_api_key'; + +const client = insightsClient(appId, apiKey, 'us', { + requester: echoRequester(), +}); + +describe('customDelete', () => { + test('allow del method for a custom path with minimal parameters', async () => { + const req = (await client.customDelete({ + path: '/test/minimal', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/minimal'); + expect(req.method).toEqual('DELETE'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('allow del method for a custom path with all parameters', async () => { + const req = (await client.customDelete({ + path: '/test/all', + parameters: { query: 'parameters' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/all'); + expect(req.method).toEqual('DELETE'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + }); +}); + +describe('customGet', () => { + test('allow get method for a custom path with minimal parameters', async () => { + const req = (await client.customGet({ + path: '/test/minimal', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/minimal'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('allow get method for a custom path with all parameters', async () => { + const req = (await client.customGet({ + path: '/test/all', + parameters: { query: 'parameters' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/all'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + }); +}); + +describe('customPost', () => { + test('allow post method for a custom path with minimal parameters', async () => { + const req = (await client.customPost({ + path: '/test/minimal', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/minimal'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({}); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('allow post method for a custom path with all parameters', async () => { + const req = (await client.customPost({ + path: '/test/all', + parameters: { query: 'parameters' }, + body: { body: 'parameters' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/all'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ body: 'parameters' }); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + }); + + test('requestOptions can override default query parameters', async () => { + const requestOptions: RequestOptions = { + queryParameters: { query: 'myQueryParameter' }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ query: 'myQueryParameter' }); + }); + + test('requestOptions merges query parameters with default ones', async () => { + const requestOptions: RequestOptions = { + queryParameters: { query2: 'myQueryParameter' }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + query2: 'myQueryParameter', + }); + }); + + test('requestOptions can override default headers', async () => { + const requestOptions: RequestOptions = { + headers: { 'x-algolia-api-key': 'myApiKey' }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + expect(req.headers).toEqual( + expect.objectContaining({ 'x-algolia-api-key': 'myApiKey' }) + ); + }); + + test('requestOptions merges headers with default ones', async () => { + const requestOptions: RequestOptions = { + headers: { 'x-algolia-api-key': 'myApiKey' }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + expect(req.headers).toEqual( + expect.objectContaining({ 'x-algolia-api-key': 'myApiKey' }) + ); + }); + + test('requestOptions queryParameters accepts booleans', async () => { + const requestOptions: RequestOptions = { + queryParameters: { isItWorking: true }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + isItWorking: 'true', + }); + }); + + test('requestOptions queryParameters accepts integers', async () => { + const requestOptions: RequestOptions = { + queryParameters: { myParam: 2 }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + myParam: '2', + }); + }); + + test('requestOptions queryParameters accepts list of string', async () => { + const requestOptions: RequestOptions = { + queryParameters: { myParam: ['c', 'd'] }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + myParam: 'c,d', + }); + }); + + test('requestOptions queryParameters accepts list of booleans', async () => { + const requestOptions: RequestOptions = { + queryParameters: { myParam: [true, true, false] }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + myParam: 'true,true,false', + }); + }); + + test('requestOptions queryParameters accepts list of integers', async () => { + const requestOptions: RequestOptions = { + queryParameters: { myParam: [1, 2] }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + myParam: '1,2', + }); + }); +}); + +describe('customPut', () => { + test('allow put method for a custom path with minimal parameters', async () => { + const req = (await client.customPut({ + path: '/test/minimal', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/minimal'); + expect(req.method).toEqual('PUT'); + expect(req.data).toEqual({}); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('allow put method for a custom path with all parameters', async () => { + const req = (await client.customPut({ + path: '/test/all', + parameters: { query: 'parameters' }, + body: { body: 'parameters' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/all'); + expect(req.method).toEqual('PUT'); + expect(req.data).toEqual({ body: 'parameters' }); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + }); +}); + +describe('pushEvents', () => { + test('pushEvents0', async () => { + const req = (await client.pushEvents({ + events: [ + { + eventType: 'click', + eventName: 'Product Clicked', + index: 'products', + userToken: 'user-123456', + authenticatedUserToken: 'user-123456', + timestamp: 1641290601962, + objectIDs: ['9780545139700', '9780439784542'], + queryID: '43b15df305339e827f0ac0bdc5ebcaa7', + positions: [7, 6], + }, + ], + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/events'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + events: [ + { + eventType: 'click', + eventName: 'Product Clicked', + index: 'products', + userToken: 'user-123456', + authenticatedUserToken: 'user-123456', + timestamp: 1641290601962, + objectIDs: ['9780545139700', '9780439784542'], + queryID: '43b15df305339e827f0ac0bdc5ebcaa7', + positions: [7, 6], + }, + ], + }); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('Many events type', async () => { + const req = (await client.pushEvents({ + events: [ + { + eventType: 'conversion', + eventName: 'Product Purchased', + index: 'products', + userToken: 'user-123456', + authenticatedUserToken: 'user-123456', + timestamp: 1641290601962, + objectIDs: ['9780545139700', '9780439784542'], + queryID: '43b15df305339e827f0ac0bdc5ebcaa7', + }, + { + eventType: 'view', + eventName: 'Product Detail Page Viewed', + index: 'products', + userToken: 'user-123456', + authenticatedUserToken: 'user-123456', + timestamp: 1641290601962, + objectIDs: ['9780545139700', '9780439784542'], + }, + ], + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/events'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + events: [ + { + eventType: 'conversion', + eventName: 'Product Purchased', + index: 'products', + userToken: 'user-123456', + authenticatedUserToken: 'user-123456', + timestamp: 1641290601962, + objectIDs: ['9780545139700', '9780439784542'], + queryID: '43b15df305339e827f0ac0bdc5ebcaa7', + }, + { + eventType: 'view', + eventName: 'Product Detail Page Viewed', + index: 'products', + userToken: 'user-123456', + authenticatedUserToken: 'user-123456', + timestamp: 1641290601962, + objectIDs: ['9780545139700', '9780439784542'], + }, + ], + }); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('ConvertedObjectIDsAfterSearch', async () => { + const req = (await client.pushEvents({ + events: [ + { + eventType: 'conversion', + eventName: 'Product Purchased', + index: 'products', + userToken: 'user-123456', + authenticatedUserToken: 'user-123456', + timestamp: 1641290601962, + objectIDs: ['9780545139700', '9780439784542'], + queryID: '43b15df305339e827f0ac0bdc5ebcaa7', + }, + ], + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/events'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + events: [ + { + eventType: 'conversion', + eventName: 'Product Purchased', + index: 'products', + userToken: 'user-123456', + authenticatedUserToken: 'user-123456', + timestamp: 1641290601962, + objectIDs: ['9780545139700', '9780439784542'], + queryID: '43b15df305339e827f0ac0bdc5ebcaa7', + }, + ], + }); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('ViewedObjectIDs', async () => { + const req = (await client.pushEvents({ + events: [ + { + eventType: 'view', + eventName: 'Product Detail Page Viewed', + index: 'products', + userToken: 'user-123456', + authenticatedUserToken: 'user-123456', + timestamp: 1641290601962, + objectIDs: ['9780545139700', '9780439784542'], + }, + ], + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/events'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + events: [ + { + eventType: 'view', + eventName: 'Product Detail Page Viewed', + index: 'products', + userToken: 'user-123456', + authenticatedUserToken: 'user-123456', + timestamp: 1641290601962, + objectIDs: ['9780545139700', '9780439784542'], + }, + ], + }); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('AddedToCartObjectIDs', async () => { + const req = (await client.pushEvents({ + events: [ + { + eventType: 'conversion', + eventSubtype: 'addToCart', + eventName: 'Product Added To Cart', + index: 'products', + queryID: '43b15df305339e827f0ac0bdc5ebcaa7', + userToken: 'user-123456', + authenticatedUserToken: 'user-123456', + timestamp: 1641290601962, + objectIDs: ['9780545139700', '9780439784542'], + objectData: [ + { price: 19.99, quantity: 10, discount: 2.5 }, + { price: '8$', quantity: 7, discount: '30%' }, + ], + currency: 'USD', + }, + ], + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/events'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + events: [ + { + eventType: 'conversion', + eventSubtype: 'addToCart', + eventName: 'Product Added To Cart', + index: 'products', + queryID: '43b15df305339e827f0ac0bdc5ebcaa7', + userToken: 'user-123456', + authenticatedUserToken: 'user-123456', + timestamp: 1641290601962, + objectIDs: ['9780545139700', '9780439784542'], + objectData: [ + { price: 19.99, quantity: 10, discount: 2.5 }, + { price: '8$', quantity: 7, discount: '30%' }, + ], + currency: 'USD', + }, + ], + }); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); diff --git a/tests/output/javascript/src/requests/monitoring.test.ts b/tests/output/javascript/src/requests/monitoring.test.ts new file mode 100644 index 0000000000..a76f540d10 --- /dev/null +++ b/tests/output/javascript/src/requests/monitoring.test.ts @@ -0,0 +1,426 @@ +import type { EchoResponse, RequestOptions } from '@algolia/client-common'; +import { monitoringClient } from '@algolia/monitoring'; +import { echoRequester } from '@algolia/requester-node-http'; + +const appId = process.env.ALGOLIA_APPLICATION_ID || 'test_app_id'; +const apiKey = process.env.ALGOLIA_SEARCH_KEY || 'test_api_key'; + +const client = monitoringClient(appId, apiKey, { requester: echoRequester() }); + +describe('customDelete', () => { + test('allow del method for a custom path with minimal parameters', async () => { + const req = (await client.customDelete({ + path: '/test/minimal', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/minimal'); + expect(req.method).toEqual('DELETE'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('allow del method for a custom path with all parameters', async () => { + const req = (await client.customDelete({ + path: '/test/all', + parameters: { query: 'parameters' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/all'); + expect(req.method).toEqual('DELETE'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + }); +}); + +describe('customGet', () => { + test('allow get method for a custom path with minimal parameters', async () => { + const req = (await client.customGet({ + path: '/test/minimal', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/minimal'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('allow get method for a custom path with all parameters', async () => { + const req = (await client.customGet({ + path: '/test/all', + parameters: { query: 'parameters' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/all'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + }); +}); + +describe('customPost', () => { + test('allow post method for a custom path with minimal parameters', async () => { + const req = (await client.customPost({ + path: '/test/minimal', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/minimal'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({}); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('allow post method for a custom path with all parameters', async () => { + const req = (await client.customPost({ + path: '/test/all', + parameters: { query: 'parameters' }, + body: { body: 'parameters' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/all'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ body: 'parameters' }); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + }); + + test('requestOptions can override default query parameters', async () => { + const requestOptions: RequestOptions = { + queryParameters: { query: 'myQueryParameter' }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ query: 'myQueryParameter' }); + }); + + test('requestOptions merges query parameters with default ones', async () => { + const requestOptions: RequestOptions = { + queryParameters: { query2: 'myQueryParameter' }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + query2: 'myQueryParameter', + }); + }); + + test('requestOptions can override default headers', async () => { + const requestOptions: RequestOptions = { + headers: { 'x-algolia-api-key': 'myApiKey' }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + expect(req.headers).toEqual( + expect.objectContaining({ 'x-algolia-api-key': 'myApiKey' }) + ); + }); + + test('requestOptions merges headers with default ones', async () => { + const requestOptions: RequestOptions = { + headers: { 'x-algolia-api-key': 'myApiKey' }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + expect(req.headers).toEqual( + expect.objectContaining({ 'x-algolia-api-key': 'myApiKey' }) + ); + }); + + test('requestOptions queryParameters accepts booleans', async () => { + const requestOptions: RequestOptions = { + queryParameters: { isItWorking: true }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + isItWorking: 'true', + }); + }); + + test('requestOptions queryParameters accepts integers', async () => { + const requestOptions: RequestOptions = { + queryParameters: { myParam: 2 }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + myParam: '2', + }); + }); + + test('requestOptions queryParameters accepts list of string', async () => { + const requestOptions: RequestOptions = { + queryParameters: { myParam: ['c', 'd'] }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + myParam: 'c,d', + }); + }); + + test('requestOptions queryParameters accepts list of booleans', async () => { + const requestOptions: RequestOptions = { + queryParameters: { myParam: [true, true, false] }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + myParam: 'true,true,false', + }); + }); + + test('requestOptions queryParameters accepts list of integers', async () => { + const requestOptions: RequestOptions = { + queryParameters: { myParam: [1, 2] }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + myParam: '1,2', + }); + }); +}); + +describe('customPut', () => { + test('allow put method for a custom path with minimal parameters', async () => { + const req = (await client.customPut({ + path: '/test/minimal', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/minimal'); + expect(req.method).toEqual('PUT'); + expect(req.data).toEqual({}); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('allow put method for a custom path with all parameters', async () => { + const req = (await client.customPut({ + path: '/test/all', + parameters: { query: 'parameters' }, + body: { body: 'parameters' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/all'); + expect(req.method).toEqual('PUT'); + expect(req.data).toEqual({ body: 'parameters' }); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + }); +}); + +describe('getClusterIncidents', () => { + test('getClusterIncidents', async () => { + const req = (await client.getClusterIncidents({ + clusters: 'c1-de', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/incidents/c1-de'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('getClusterStatus', () => { + test('getClusterStatus', async () => { + const req = (await client.getClusterStatus({ + clusters: 'c1-de', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/status/c1-de'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('getIncidents', () => { + test('getIncidents', async () => { + const req = (await client.getIncidents()) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/incidents'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('getIndexingTime', () => { + test('getIndexingTime', async () => { + const req = (await client.getIndexingTime({ + clusters: 'c1-de', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexing/c1-de'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('getInventory', () => { + test('getInventory', async () => { + const req = (await client.getInventory()) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/inventory/servers'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('getLatency', () => { + test('getLatency', async () => { + const req = (await client.getLatency({ + clusters: 'c1-de', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/latency/c1-de'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('getMetrics', () => { + test('getMetrics', async () => { + const req = (await client.getMetrics({ + metric: 'avg_build_time', + period: 'minute', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/infrastructure/avg_build_time/period/minute'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('getReachability', () => { + test('getReachability', async () => { + const req = (await client.getReachability({ + clusters: 'c1-de', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/reachability/c1-de/probes'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('getStatus', () => { + test('getStatus', async () => { + const req = (await client.getStatus()) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/status'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); diff --git a/tests/output/javascript/src/requests/personalization.test.ts b/tests/output/javascript/src/requests/personalization.test.ts new file mode 100644 index 0000000000..423c121417 --- /dev/null +++ b/tests/output/javascript/src/requests/personalization.test.ts @@ -0,0 +1,373 @@ +import type { EchoResponse, RequestOptions } from '@algolia/client-common'; +import { personalizationClient } from '@algolia/client-personalization'; +import { echoRequester } from '@algolia/requester-node-http'; + +const appId = process.env.ALGOLIA_APPLICATION_ID || 'test_app_id'; +const apiKey = process.env.ALGOLIA_SEARCH_KEY || 'test_api_key'; + +const client = personalizationClient(appId, apiKey, 'us', { + requester: echoRequester(), +}); + +describe('customDelete', () => { + test('allow del method for a custom path with minimal parameters', async () => { + const req = (await client.customDelete({ + path: '/test/minimal', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/minimal'); + expect(req.method).toEqual('DELETE'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('allow del method for a custom path with all parameters', async () => { + const req = (await client.customDelete({ + path: '/test/all', + parameters: { query: 'parameters' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/all'); + expect(req.method).toEqual('DELETE'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + }); +}); + +describe('customGet', () => { + test('allow get method for a custom path with minimal parameters', async () => { + const req = (await client.customGet({ + path: '/test/minimal', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/minimal'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('allow get method for a custom path with all parameters', async () => { + const req = (await client.customGet({ + path: '/test/all', + parameters: { query: 'parameters' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/all'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + }); +}); + +describe('customPost', () => { + test('allow post method for a custom path with minimal parameters', async () => { + const req = (await client.customPost({ + path: '/test/minimal', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/minimal'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({}); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('allow post method for a custom path with all parameters', async () => { + const req = (await client.customPost({ + path: '/test/all', + parameters: { query: 'parameters' }, + body: { body: 'parameters' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/all'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ body: 'parameters' }); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + }); + + test('requestOptions can override default query parameters', async () => { + const requestOptions: RequestOptions = { + queryParameters: { query: 'myQueryParameter' }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ query: 'myQueryParameter' }); + }); + + test('requestOptions merges query parameters with default ones', async () => { + const requestOptions: RequestOptions = { + queryParameters: { query2: 'myQueryParameter' }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + query2: 'myQueryParameter', + }); + }); + + test('requestOptions can override default headers', async () => { + const requestOptions: RequestOptions = { + headers: { 'x-algolia-api-key': 'myApiKey' }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + expect(req.headers).toEqual( + expect.objectContaining({ 'x-algolia-api-key': 'myApiKey' }) + ); + }); + + test('requestOptions merges headers with default ones', async () => { + const requestOptions: RequestOptions = { + headers: { 'x-algolia-api-key': 'myApiKey' }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + expect(req.headers).toEqual( + expect.objectContaining({ 'x-algolia-api-key': 'myApiKey' }) + ); + }); + + test('requestOptions queryParameters accepts booleans', async () => { + const requestOptions: RequestOptions = { + queryParameters: { isItWorking: true }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + isItWorking: 'true', + }); + }); + + test('requestOptions queryParameters accepts integers', async () => { + const requestOptions: RequestOptions = { + queryParameters: { myParam: 2 }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + myParam: '2', + }); + }); + + test('requestOptions queryParameters accepts list of string', async () => { + const requestOptions: RequestOptions = { + queryParameters: { myParam: ['c', 'd'] }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + myParam: 'c,d', + }); + }); + + test('requestOptions queryParameters accepts list of booleans', async () => { + const requestOptions: RequestOptions = { + queryParameters: { myParam: [true, true, false] }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + myParam: 'true,true,false', + }); + }); + + test('requestOptions queryParameters accepts list of integers', async () => { + const requestOptions: RequestOptions = { + queryParameters: { myParam: [1, 2] }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + myParam: '1,2', + }); + }); +}); + +describe('customPut', () => { + test('allow put method for a custom path with minimal parameters', async () => { + const req = (await client.customPut({ + path: '/test/minimal', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/minimal'); + expect(req.method).toEqual('PUT'); + expect(req.data).toEqual({}); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('allow put method for a custom path with all parameters', async () => { + const req = (await client.customPut({ + path: '/test/all', + parameters: { query: 'parameters' }, + body: { body: 'parameters' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/all'); + expect(req.method).toEqual('PUT'); + expect(req.data).toEqual({ body: 'parameters' }); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + }); +}); + +describe('deleteUserProfile', () => { + test('delete deleteUserProfile', async () => { + const req = (await client.deleteUserProfile({ + userToken: 'UserToken', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/profiles/UserToken'); + expect(req.method).toEqual('DELETE'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('getPersonalizationStrategy', () => { + test('get getPersonalizationStrategy', async () => { + const req = + (await client.getPersonalizationStrategy()) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/strategies/personalization'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('getUserTokenProfile', () => { + test('get getUserTokenProfile', async () => { + const req = (await client.getUserTokenProfile({ + userToken: 'UserToken', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/profiles/personalization/UserToken'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('setPersonalizationStrategy', () => { + test('set setPersonalizationStrategy', async () => { + const req = (await client.setPersonalizationStrategy({ + eventScoring: [{ score: 42, eventName: 'Algolia', eventType: 'Event' }], + facetScoring: [{ score: 42, facetName: 'Event' }], + personalizationImpact: 42, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/strategies/personalization'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + eventScoring: [{ score: 42, eventName: 'Algolia', eventType: 'Event' }], + facetScoring: [{ score: 42, facetName: 'Event' }], + personalizationImpact: 42, + }); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); diff --git a/tests/output/javascript/src/requests/querySuggestions.test.ts b/tests/output/javascript/src/requests/querySuggestions.test.ts new file mode 100644 index 0000000000..f9642a1c37 --- /dev/null +++ b/tests/output/javascript/src/requests/querySuggestions.test.ts @@ -0,0 +1,446 @@ +import type { EchoResponse, RequestOptions } from '@algolia/client-common'; +import { querySuggestionsClient } from '@algolia/client-query-suggestions'; +import { echoRequester } from '@algolia/requester-node-http'; + +const appId = process.env.ALGOLIA_APPLICATION_ID || 'test_app_id'; +const apiKey = process.env.ALGOLIA_SEARCH_KEY || 'test_api_key'; + +const client = querySuggestionsClient(appId, apiKey, 'us', { + requester: echoRequester(), +}); + +describe('createConfig', () => { + test('createConfig0', async () => { + const req = (await client.createConfig({ + indexName: 'theIndexName', + sourceIndices: [ + { + indexName: 'testIndex', + facets: [{ attribute: 'test' }], + generate: [['facetA', 'facetB'], ['facetC']], + }, + ], + languages: ['french'], + exclude: ['test'], + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/configs'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + indexName: 'theIndexName', + sourceIndices: [ + { + indexName: 'testIndex', + facets: [{ attribute: 'test' }], + generate: [['facetA', 'facetB'], ['facetC']], + }, + ], + languages: ['french'], + exclude: ['test'], + }); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('customDelete', () => { + test('allow del method for a custom path with minimal parameters', async () => { + const req = (await client.customDelete({ + path: '/test/minimal', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/minimal'); + expect(req.method).toEqual('DELETE'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('allow del method for a custom path with all parameters', async () => { + const req = (await client.customDelete({ + path: '/test/all', + parameters: { query: 'parameters' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/all'); + expect(req.method).toEqual('DELETE'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + }); +}); + +describe('customGet', () => { + test('allow get method for a custom path with minimal parameters', async () => { + const req = (await client.customGet({ + path: '/test/minimal', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/minimal'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('allow get method for a custom path with all parameters', async () => { + const req = (await client.customGet({ + path: '/test/all', + parameters: { query: 'parameters' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/all'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + }); +}); + +describe('customPost', () => { + test('allow post method for a custom path with minimal parameters', async () => { + const req = (await client.customPost({ + path: '/test/minimal', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/minimal'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({}); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('allow post method for a custom path with all parameters', async () => { + const req = (await client.customPost({ + path: '/test/all', + parameters: { query: 'parameters' }, + body: { body: 'parameters' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/all'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ body: 'parameters' }); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + }); + + test('requestOptions can override default query parameters', async () => { + const requestOptions: RequestOptions = { + queryParameters: { query: 'myQueryParameter' }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ query: 'myQueryParameter' }); + }); + + test('requestOptions merges query parameters with default ones', async () => { + const requestOptions: RequestOptions = { + queryParameters: { query2: 'myQueryParameter' }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + query2: 'myQueryParameter', + }); + }); + + test('requestOptions can override default headers', async () => { + const requestOptions: RequestOptions = { + headers: { 'x-algolia-api-key': 'myApiKey' }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + expect(req.headers).toEqual( + expect.objectContaining({ 'x-algolia-api-key': 'myApiKey' }) + ); + }); + + test('requestOptions merges headers with default ones', async () => { + const requestOptions: RequestOptions = { + headers: { 'x-algolia-api-key': 'myApiKey' }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + expect(req.headers).toEqual( + expect.objectContaining({ 'x-algolia-api-key': 'myApiKey' }) + ); + }); + + test('requestOptions queryParameters accepts booleans', async () => { + const requestOptions: RequestOptions = { + queryParameters: { isItWorking: true }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + isItWorking: 'true', + }); + }); + + test('requestOptions queryParameters accepts integers', async () => { + const requestOptions: RequestOptions = { + queryParameters: { myParam: 2 }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + myParam: '2', + }); + }); + + test('requestOptions queryParameters accepts list of string', async () => { + const requestOptions: RequestOptions = { + queryParameters: { myParam: ['c', 'd'] }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + myParam: 'c,d', + }); + }); + + test('requestOptions queryParameters accepts list of booleans', async () => { + const requestOptions: RequestOptions = { + queryParameters: { myParam: [true, true, false] }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + myParam: 'true,true,false', + }); + }); + + test('requestOptions queryParameters accepts list of integers', async () => { + const requestOptions: RequestOptions = { + queryParameters: { myParam: [1, 2] }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + myParam: '1,2', + }); + }); +}); + +describe('customPut', () => { + test('allow put method for a custom path with minimal parameters', async () => { + const req = (await client.customPut({ + path: '/test/minimal', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/minimal'); + expect(req.method).toEqual('PUT'); + expect(req.data).toEqual({}); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('allow put method for a custom path with all parameters', async () => { + const req = (await client.customPut({ + path: '/test/all', + parameters: { query: 'parameters' }, + body: { body: 'parameters' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/all'); + expect(req.method).toEqual('PUT'); + expect(req.data).toEqual({ body: 'parameters' }); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + }); +}); + +describe('deleteConfig', () => { + test('deleteConfig0', async () => { + const req = (await client.deleteConfig({ + indexName: 'theIndexName', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/configs/theIndexName'); + expect(req.method).toEqual('DELETE'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('getAllConfigs', () => { + test('getAllConfigs0', async () => { + const req = (await client.getAllConfigs()) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/configs'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('getConfig', () => { + test('getConfig0', async () => { + const req = (await client.getConfig({ + indexName: 'theIndexName', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/configs/theIndexName'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('getConfigStatus', () => { + test('getConfigStatus0', async () => { + const req = (await client.getConfigStatus({ + indexName: 'theIndexName', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/configs/theIndexName/status'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('getLogFile', () => { + test('getLogFile0', async () => { + const req = (await client.getLogFile({ + indexName: 'theIndexName', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/logs/theIndexName'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('updateConfig', () => { + test('updateConfig0', async () => { + const req = (await client.updateConfig({ + indexName: 'theIndexName', + querySuggestionsConfiguration: { + sourceIndices: [ + { + indexName: 'testIndex', + facets: [{ attribute: 'test' }], + generate: [['facetA', 'facetB'], ['facetC']], + }, + ], + languages: ['french'], + exclude: ['test'], + }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/configs/theIndexName'); + expect(req.method).toEqual('PUT'); + expect(req.data).toEqual({ + sourceIndices: [ + { + indexName: 'testIndex', + facets: [{ attribute: 'test' }], + generate: [['facetA', 'facetB'], ['facetC']], + }, + ], + languages: ['french'], + exclude: ['test'], + }); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); diff --git a/tests/output/javascript/src/requests/recommend.test.ts b/tests/output/javascript/src/requests/recommend.test.ts new file mode 100644 index 0000000000..870bbff507 --- /dev/null +++ b/tests/output/javascript/src/requests/recommend.test.ts @@ -0,0 +1,612 @@ +import type { EchoResponse, RequestOptions } from '@algolia/client-common'; +import { recommendClient } from '@algolia/recommend'; +import { echoRequester } from '@algolia/requester-node-http'; + +const appId = process.env.ALGOLIA_APPLICATION_ID || 'test_app_id'; +const apiKey = process.env.ALGOLIA_SEARCH_KEY || 'test_api_key'; + +const client = recommendClient(appId, apiKey, { requester: echoRequester() }); + +describe('customDelete', () => { + test('allow del method for a custom path with minimal parameters', async () => { + const req = (await client.customDelete({ + path: '/test/minimal', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/minimal'); + expect(req.method).toEqual('DELETE'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('allow del method for a custom path with all parameters', async () => { + const req = (await client.customDelete({ + path: '/test/all', + parameters: { query: 'parameters' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/all'); + expect(req.method).toEqual('DELETE'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + }); +}); + +describe('customGet', () => { + test('allow get method for a custom path with minimal parameters', async () => { + const req = (await client.customGet({ + path: '/test/minimal', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/minimal'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('allow get method for a custom path with all parameters', async () => { + const req = (await client.customGet({ + path: '/test/all', + parameters: { query: 'parameters' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/all'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + }); +}); + +describe('customPost', () => { + test('allow post method for a custom path with minimal parameters', async () => { + const req = (await client.customPost({ + path: '/test/minimal', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/minimal'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({}); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('allow post method for a custom path with all parameters', async () => { + const req = (await client.customPost({ + path: '/test/all', + parameters: { query: 'parameters' }, + body: { body: 'parameters' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/all'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ body: 'parameters' }); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + }); + + test('requestOptions can override default query parameters', async () => { + const requestOptions: RequestOptions = { + queryParameters: { query: 'myQueryParameter' }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ query: 'myQueryParameter' }); + }); + + test('requestOptions merges query parameters with default ones', async () => { + const requestOptions: RequestOptions = { + queryParameters: { query2: 'myQueryParameter' }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + query2: 'myQueryParameter', + }); + }); + + test('requestOptions can override default headers', async () => { + const requestOptions: RequestOptions = { + headers: { 'x-algolia-api-key': 'myApiKey' }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + expect(req.headers).toEqual( + expect.objectContaining({ 'x-algolia-api-key': 'myApiKey' }) + ); + }); + + test('requestOptions merges headers with default ones', async () => { + const requestOptions: RequestOptions = { + headers: { 'x-algolia-api-key': 'myApiKey' }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + expect(req.headers).toEqual( + expect.objectContaining({ 'x-algolia-api-key': 'myApiKey' }) + ); + }); + + test('requestOptions queryParameters accepts booleans', async () => { + const requestOptions: RequestOptions = { + queryParameters: { isItWorking: true }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + isItWorking: 'true', + }); + }); + + test('requestOptions queryParameters accepts integers', async () => { + const requestOptions: RequestOptions = { + queryParameters: { myParam: 2 }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + myParam: '2', + }); + }); + + test('requestOptions queryParameters accepts list of string', async () => { + const requestOptions: RequestOptions = { + queryParameters: { myParam: ['c', 'd'] }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + myParam: 'c,d', + }); + }); + + test('requestOptions queryParameters accepts list of booleans', async () => { + const requestOptions: RequestOptions = { + queryParameters: { myParam: [true, true, false] }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + myParam: 'true,true,false', + }); + }); + + test('requestOptions queryParameters accepts list of integers', async () => { + const requestOptions: RequestOptions = { + queryParameters: { myParam: [1, 2] }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + myParam: '1,2', + }); + }); +}); + +describe('customPut', () => { + test('allow put method for a custom path with minimal parameters', async () => { + const req = (await client.customPut({ + path: '/test/minimal', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/minimal'); + expect(req.method).toEqual('PUT'); + expect(req.data).toEqual({}); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('allow put method for a custom path with all parameters', async () => { + const req = (await client.customPut({ + path: '/test/all', + parameters: { query: 'parameters' }, + body: { body: 'parameters' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/all'); + expect(req.method).toEqual('PUT'); + expect(req.data).toEqual({ body: 'parameters' }); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + }); +}); + +describe('deleteRecommendRule', () => { + test('deleteRecommendRule0', async () => { + const req = (await client.deleteRecommendRule({ + indexName: 'indexName', + model: 'related-products', + objectID: 'objectID', + })) as unknown as EchoResponse; + + expect(req.path).toEqual( + '/1/indexes/indexName/related-products/recommend/rules/objectID' + ); + expect(req.method).toEqual('DELETE'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('getRecommendRule', () => { + test('getRecommendRule0', async () => { + const req = (await client.getRecommendRule({ + indexName: 'indexName', + model: 'related-products', + objectID: 'objectID', + })) as unknown as EchoResponse; + + expect(req.path).toEqual( + '/1/indexes/indexName/related-products/recommend/rules/objectID' + ); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('getRecommendStatus', () => { + test('getRecommendStatus0', async () => { + const req = (await client.getRecommendStatus({ + indexName: 'indexName', + model: 'related-products', + taskID: 12345, + })) as unknown as EchoResponse; + + expect(req.path).toEqual( + '/1/indexes/indexName/related-products/task/12345' + ); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('getRecommendations', () => { + test('get recommendations for recommend model with minimal parameters', async () => { + const req = (await client.getRecommendations({ + requests: [ + { + indexName: 'indexName', + objectID: 'objectID', + model: 'related-products', + threshold: 42, + }, + ], + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/*/recommendations'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + requests: [ + { + indexName: 'indexName', + objectID: 'objectID', + model: 'related-products', + threshold: 42, + }, + ], + }); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('get recommendations for recommend model with all parameters', async () => { + const req = (await client.getRecommendations({ + requests: [ + { + indexName: 'indexName', + objectID: 'objectID', + model: 'related-products', + threshold: 42, + maxRecommendations: 10, + queryParameters: { query: 'myQuery', facetFilters: ['query'] }, + fallbackParameters: { query: 'myQuery', facetFilters: ['fallback'] }, + }, + ], + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/*/recommendations'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + requests: [ + { + indexName: 'indexName', + objectID: 'objectID', + model: 'related-products', + threshold: 42, + maxRecommendations: 10, + queryParameters: { query: 'myQuery', facetFilters: ['query'] }, + fallbackParameters: { query: 'myQuery', facetFilters: ['fallback'] }, + }, + ], + }); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('get recommendations for trending model with minimal parameters', async () => { + const req = (await client.getRecommendations({ + requests: [ + { indexName: 'indexName', model: 'trending-items', threshold: 42 }, + ], + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/*/recommendations'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + requests: [ + { indexName: 'indexName', model: 'trending-items', threshold: 42 }, + ], + }); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('get recommendations for trending model with all parameters', async () => { + const req = (await client.getRecommendations({ + requests: [ + { + indexName: 'indexName', + model: 'trending-items', + threshold: 42, + maxRecommendations: 10, + facetName: 'myFacetName', + facetValue: 'myFacetValue', + queryParameters: { query: 'myQuery', facetFilters: ['query'] }, + fallbackParameters: { query: 'myQuery', facetFilters: ['fallback'] }, + }, + ], + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/*/recommendations'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + requests: [ + { + indexName: 'indexName', + model: 'trending-items', + threshold: 42, + maxRecommendations: 10, + facetName: 'myFacetName', + facetValue: 'myFacetValue', + queryParameters: { query: 'myQuery', facetFilters: ['query'] }, + fallbackParameters: { query: 'myQuery', facetFilters: ['fallback'] }, + }, + ], + }); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('get multiple recommendations with minimal parameters', async () => { + const req = (await client.getRecommendations({ + requests: [ + { + indexName: 'indexName1', + objectID: 'objectID1', + model: 'related-products', + threshold: 21, + }, + { + indexName: 'indexName2', + objectID: 'objectID2', + model: 'related-products', + threshold: 21, + }, + ], + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/*/recommendations'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + requests: [ + { + indexName: 'indexName1', + objectID: 'objectID1', + model: 'related-products', + threshold: 21, + }, + { + indexName: 'indexName2', + objectID: 'objectID2', + model: 'related-products', + threshold: 21, + }, + ], + }); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('get multiple recommendations with all parameters', async () => { + const req = (await client.getRecommendations({ + requests: [ + { + indexName: 'indexName1', + objectID: 'objectID1', + model: 'related-products', + threshold: 21, + maxRecommendations: 10, + queryParameters: { query: 'myQuery', facetFilters: ['query1'] }, + fallbackParameters: { query: 'myQuery', facetFilters: ['fallback1'] }, + }, + { + indexName: 'indexName2', + objectID: 'objectID2', + model: 'related-products', + threshold: 21, + maxRecommendations: 10, + queryParameters: { query: 'myQuery', facetFilters: ['query2'] }, + fallbackParameters: { query: 'myQuery', facetFilters: ['fallback2'] }, + }, + ], + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/*/recommendations'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + requests: [ + { + indexName: 'indexName1', + objectID: 'objectID1', + model: 'related-products', + threshold: 21, + maxRecommendations: 10, + queryParameters: { query: 'myQuery', facetFilters: ['query1'] }, + fallbackParameters: { query: 'myQuery', facetFilters: ['fallback1'] }, + }, + { + indexName: 'indexName2', + objectID: 'objectID2', + model: 'related-products', + threshold: 21, + maxRecommendations: 10, + queryParameters: { query: 'myQuery', facetFilters: ['query2'] }, + fallbackParameters: { query: 'myQuery', facetFilters: ['fallback2'] }, + }, + ], + }); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('get frequently bought together recommendations', async () => { + const req = (await client.getRecommendations({ + requests: [ + { + indexName: 'indexName1', + objectID: 'objectID1', + model: 'bought-together', + threshold: 42, + }, + ], + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/*/recommendations'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + requests: [ + { + indexName: 'indexName1', + objectID: 'objectID1', + model: 'bought-together', + threshold: 42, + }, + ], + }); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('searchRecommendRules', () => { + test('searchRecommendRules0', async () => { + const req = (await client.searchRecommendRules({ + indexName: 'indexName', + model: 'related-products', + })) as unknown as EchoResponse; + + expect(req.path).toEqual( + '/1/indexes/indexName/related-products/recommend/rules/search' + ); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({}); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); diff --git a/tests/output/javascript/src/requests/search.test.ts b/tests/output/javascript/src/requests/search.test.ts new file mode 100644 index 0000000000..b63580b747 --- /dev/null +++ b/tests/output/javascript/src/requests/search.test.ts @@ -0,0 +1,2487 @@ +import type { EchoResponse, RequestOptions } from '@algolia/client-common'; +import { searchClient } from '@algolia/client-search'; +import { echoRequester } from '@algolia/requester-node-http'; +import * as dotenv from 'dotenv'; + +dotenv.config({ path: '../../.env' }); + +const appId = process.env.ALGOLIA_APPLICATION_ID || 'test_app_id'; +const apiKey = process.env.ALGOLIA_SEARCH_KEY || 'test_api_key'; + +const client = searchClient(appId, apiKey, { requester: echoRequester() }); + +if (!process.env.ALGOLIA_APPLICATION_ID) { + throw new Error( + 'please provide an `ALGOLIA_APPLICATION_ID` env var for e2e tests' + ); +} + +if (!process.env.ALGOLIA_ADMIN_KEY) { + throw new Error( + 'please provide an `ALGOLIA_ADMIN_KEY` env var for e2e tests' + ); +} + +const e2eClient = searchClient( + process.env.ALGOLIA_APPLICATION_ID, + process.env.ALGOLIA_ADMIN_KEY +); + +describe('addApiKey', () => { + test('addApiKey0', async () => { + const req = (await client.addApiKey({ + acl: ['search', 'addObject'], + description: 'my new api key', + validity: 300, + maxQueriesPerIPPerHour: 100, + maxHitsPerQuery: 20, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/keys'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + acl: ['search', 'addObject'], + description: 'my new api key', + validity: 300, + maxQueriesPerIPPerHour: 100, + maxHitsPerQuery: 20, + }); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('addOrUpdateObject', () => { + test('addOrUpdateObject0', async () => { + const req = (await client.addOrUpdateObject({ + indexName: 'indexName', + objectID: 'uniqueID', + body: { key: 'value' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/indexName/uniqueID'); + expect(req.method).toEqual('PUT'); + expect(req.data).toEqual({ key: 'value' }); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('appendSource', () => { + test('appendSource0', async () => { + const req = (await client.appendSource({ + source: 'theSource', + description: 'theDescription', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/security/sources/append'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + source: 'theSource', + description: 'theDescription', + }); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('assignUserId', () => { + test('assignUserId0', async () => { + const req = (await client.assignUserId({ + xAlgoliaUserID: 'userID', + assignUserIdParams: { cluster: 'theCluster' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/clusters/mapping'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ cluster: 'theCluster' }); + expect(req.searchParams).toStrictEqual(undefined); + expect(req.headers).toEqual( + expect.objectContaining({ 'x-algolia-user-id': 'userID' }) + ); + }); +}); + +describe('batch', () => { + test('allows batch method with `addObject` action', async () => { + const req = (await client.batch({ + indexName: 'theIndexName', + batchWriteParams: { + requests: [{ action: 'addObject', body: { key: 'value' } }], + }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/theIndexName/batch'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + requests: [{ action: 'addObject', body: { key: 'value' } }], + }); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('allows batch method with `clear` action', async () => { + const req = (await client.batch({ + indexName: 'theIndexName', + batchWriteParams: { + requests: [{ action: 'clear', body: { key: 'value' } }], + }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/theIndexName/batch'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + requests: [{ action: 'clear', body: { key: 'value' } }], + }); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('allows batch method with `delete` action', async () => { + const req = (await client.batch({ + indexName: 'theIndexName', + batchWriteParams: { + requests: [{ action: 'delete', body: { key: 'value' } }], + }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/theIndexName/batch'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + requests: [{ action: 'delete', body: { key: 'value' } }], + }); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('allows batch method with `deleteObject` action', async () => { + const req = (await client.batch({ + indexName: 'theIndexName', + batchWriteParams: { + requests: [{ action: 'deleteObject', body: { key: 'value' } }], + }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/theIndexName/batch'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + requests: [{ action: 'deleteObject', body: { key: 'value' } }], + }); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('allows batch method with `partialUpdateObject` action', async () => { + const req = (await client.batch({ + indexName: 'theIndexName', + batchWriteParams: { + requests: [{ action: 'partialUpdateObject', body: { key: 'value' } }], + }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/theIndexName/batch'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + requests: [{ action: 'partialUpdateObject', body: { key: 'value' } }], + }); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('allows batch method with `partialUpdateObjectNoCreate` action', async () => { + const req = (await client.batch({ + indexName: 'theIndexName', + batchWriteParams: { + requests: [ + { action: 'partialUpdateObjectNoCreate', body: { key: 'value' } }, + ], + }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/theIndexName/batch'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + requests: [ + { action: 'partialUpdateObjectNoCreate', body: { key: 'value' } }, + ], + }); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('allows batch method with `updateObject` action', async () => { + const req = (await client.batch({ + indexName: 'theIndexName', + batchWriteParams: { + requests: [{ action: 'updateObject', body: { key: 'value' } }], + }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/theIndexName/batch'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + requests: [{ action: 'updateObject', body: { key: 'value' } }], + }); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('batchAssignUserIds', () => { + test('batchAssignUserIds0', async () => { + const req = (await client.batchAssignUserIds({ + xAlgoliaUserID: 'userID', + batchAssignUserIdsParams: { + cluster: 'theCluster', + users: ['user1', 'user2'], + }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/clusters/mapping/batch'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + cluster: 'theCluster', + users: ['user1', 'user2'], + }); + expect(req.searchParams).toStrictEqual(undefined); + expect(req.headers).toEqual( + expect.objectContaining({ 'x-algolia-user-id': 'userID' }) + ); + }); +}); + +describe('batchDictionaryEntries', () => { + test('get batchDictionaryEntries results with minimal parameters', async () => { + const req = (await client.batchDictionaryEntries({ + dictionaryName: 'compounds', + batchDictionaryEntriesParams: { + requests: [ + { action: 'addEntry', body: { objectID: '1', language: 'en' } }, + { action: 'deleteEntry', body: { objectID: '2', language: 'fr' } }, + ], + }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/dictionaries/compounds/batch'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + requests: [ + { action: 'addEntry', body: { objectID: '1', language: 'en' } }, + { action: 'deleteEntry', body: { objectID: '2', language: 'fr' } }, + ], + }); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('get batchDictionaryEntries results with all parameters', async () => { + const req = (await client.batchDictionaryEntries({ + dictionaryName: 'compounds', + batchDictionaryEntriesParams: { + clearExistingDictionaryEntries: false, + requests: [ + { + action: 'addEntry', + body: { + objectID: '1', + language: 'en', + word: 'fancy', + words: ['believe', 'algolia'], + decomposition: ['trust', 'algolia'], + state: 'enabled', + }, + }, + { + action: 'deleteEntry', + body: { + objectID: '2', + language: 'fr', + word: 'humility', + words: ['candor', 'algolia'], + decomposition: ['grit', 'algolia'], + state: 'enabled', + }, + }, + ], + }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/dictionaries/compounds/batch'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + clearExistingDictionaryEntries: false, + requests: [ + { + action: 'addEntry', + body: { + objectID: '1', + language: 'en', + word: 'fancy', + words: ['believe', 'algolia'], + decomposition: ['trust', 'algolia'], + state: 'enabled', + }, + }, + { + action: 'deleteEntry', + body: { + objectID: '2', + language: 'fr', + word: 'humility', + words: ['candor', 'algolia'], + decomposition: ['grit', 'algolia'], + state: 'enabled', + }, + }, + ], + }); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('get batchDictionaryEntries results additional properties', async () => { + const req = (await client.batchDictionaryEntries({ + dictionaryName: 'compounds', + batchDictionaryEntriesParams: { + requests: [ + { + action: 'addEntry', + body: { objectID: '1', language: 'en', additional: 'try me' }, + }, + ], + }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/dictionaries/compounds/batch'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + requests: [ + { + action: 'addEntry', + body: { objectID: '1', language: 'en', additional: 'try me' }, + }, + ], + }); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('browse', () => { + test('browse with minimal parameters', async () => { + const req = (await client.browse({ + indexName: 'indexName', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/indexName/browse'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({}); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('browse with search parameters', async () => { + const req = (await client.browse({ + indexName: 'indexName', + browseParams: { query: 'myQuery', facetFilters: ['tags:algolia'] }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/indexName/browse'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + query: 'myQuery', + facetFilters: ['tags:algolia'], + }); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('browse allow a cursor in parameters', async () => { + const req = (await client.browse({ + indexName: 'indexName', + browseParams: { cursor: 'test' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/indexName/browse'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ cursor: 'test' }); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('clearAllSynonyms', () => { + test('clearAllSynonyms0', async () => { + const req = (await client.clearAllSynonyms({ + indexName: 'indexName', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/indexName/synonyms/clear'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('clearObjects', () => { + test('clearObjects0', async () => { + const req = (await client.clearObjects({ + indexName: 'theIndexName', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/theIndexName/clear'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('clearRules', () => { + test('clearRules0', async () => { + const req = (await client.clearRules({ + indexName: 'indexName', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/indexName/rules/clear'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('customDelete', () => { + test('allow del method for a custom path with minimal parameters', async () => { + const req = (await client.customDelete({ + path: '/test/minimal', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/minimal'); + expect(req.method).toEqual('DELETE'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('allow del method for a custom path with all parameters', async () => { + const req = (await client.customDelete({ + path: '/test/all', + parameters: { query: 'parameters' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/all'); + expect(req.method).toEqual('DELETE'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + }); +}); + +describe('customGet', () => { + test('allow get method for a custom path with minimal parameters', async () => { + const req = (await client.customGet({ + path: '/test/minimal', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/minimal'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('allow get method for a custom path with all parameters', async () => { + const req = (await client.customGet({ + path: '/test/all', + parameters: { query: 'parameters' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/all'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + }); +}); + +describe('customPost', () => { + test('allow post method for a custom path with minimal parameters', async () => { + const req = (await client.customPost({ + path: '/test/minimal', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/minimal'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({}); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('allow post method for a custom path with all parameters', async () => { + const req = (await client.customPost({ + path: '/test/all', + parameters: { query: 'parameters' }, + body: { body: 'parameters' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/all'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ body: 'parameters' }); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + }); + + test('requestOptions can override default query parameters', async () => { + const requestOptions: RequestOptions = { + queryParameters: { query: 'myQueryParameter' }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ query: 'myQueryParameter' }); + }); + + test('requestOptions merges query parameters with default ones', async () => { + const requestOptions: RequestOptions = { + queryParameters: { query2: 'myQueryParameter' }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + query2: 'myQueryParameter', + }); + }); + + test('requestOptions can override default headers', async () => { + const requestOptions: RequestOptions = { + headers: { 'x-algolia-api-key': 'myApiKey' }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + expect(req.headers).toEqual( + expect.objectContaining({ 'x-algolia-api-key': 'myApiKey' }) + ); + }); + + test('requestOptions merges headers with default ones', async () => { + const requestOptions: RequestOptions = { + headers: { 'x-algolia-api-key': 'myApiKey' }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + expect(req.headers).toEqual( + expect.objectContaining({ 'x-algolia-api-key': 'myApiKey' }) + ); + }); + + test('requestOptions queryParameters accepts booleans', async () => { + const requestOptions: RequestOptions = { + queryParameters: { isItWorking: true }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + isItWorking: 'true', + }); + }); + + test('requestOptions queryParameters accepts integers', async () => { + const requestOptions: RequestOptions = { + queryParameters: { myParam: 2 }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + myParam: '2', + }); + }); + + test('requestOptions queryParameters accepts list of string', async () => { + const requestOptions: RequestOptions = { + queryParameters: { myParam: ['c', 'd'] }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + myParam: 'c,d', + }); + }); + + test('requestOptions queryParameters accepts list of booleans', async () => { + const requestOptions: RequestOptions = { + queryParameters: { myParam: [true, true, false] }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + myParam: 'true,true,false', + }); + }); + + test('requestOptions queryParameters accepts list of integers', async () => { + const requestOptions: RequestOptions = { + queryParameters: { myParam: [1, 2] }, + }; + + const req = (await client.customPost( + { + path: '/test/requestOptions', + parameters: { query: 'parameters' }, + body: { facet: 'filters' }, + }, + requestOptions + )) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/requestOptions'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ facet: 'filters' }); + expect(req.searchParams).toStrictEqual({ + query: 'parameters', + myParam: '1,2', + }); + }); +}); + +describe('customPut', () => { + test('allow put method for a custom path with minimal parameters', async () => { + const req = (await client.customPut({ + path: '/test/minimal', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/minimal'); + expect(req.method).toEqual('PUT'); + expect(req.data).toEqual({}); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('allow put method for a custom path with all parameters', async () => { + const req = (await client.customPut({ + path: '/test/all', + parameters: { query: 'parameters' }, + body: { body: 'parameters' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/test/all'); + expect(req.method).toEqual('PUT'); + expect(req.data).toEqual({ body: 'parameters' }); + expect(req.searchParams).toStrictEqual({ query: 'parameters' }); + }); +}); + +describe('deleteApiKey', () => { + test('deleteApiKey0', async () => { + const req = (await client.deleteApiKey({ + key: 'myTestApiKey', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/keys/myTestApiKey'); + expect(req.method).toEqual('DELETE'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('deleteBy', () => { + test('deleteBy0', async () => { + const req = (await client.deleteBy({ + indexName: 'theIndexName', + deleteByParams: { filters: 'brand:brandName' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/theIndexName/deleteByQuery'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ filters: 'brand:brandName' }); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('deleteIndex', () => { + test('deleteIndex0', async () => { + const req = (await client.deleteIndex({ + indexName: 'theIndexName', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/theIndexName'); + expect(req.method).toEqual('DELETE'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('deleteObject', () => { + test('deleteObject0', async () => { + const req = (await client.deleteObject({ + indexName: 'theIndexName', + objectID: 'uniqueID', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/theIndexName/uniqueID'); + expect(req.method).toEqual('DELETE'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('deleteRule', () => { + test('delete rule simple case', async () => { + const req = (await client.deleteRule({ + indexName: 'indexName', + objectID: 'id1', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/indexName/rules/id1'); + expect(req.method).toEqual('DELETE'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('delete rule with simple characters to encode in objectID', async () => { + const req = (await client.deleteRule({ + indexName: 'indexName', + objectID: 'test/with/slash', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/indexName/rules/test%2Fwith%2Fslash'); + expect(req.method).toEqual('DELETE'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('deleteSource', () => { + test('deleteSource0', async () => { + const req = (await client.deleteSource({ + source: 'theSource', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/security/sources/theSource'); + expect(req.method).toEqual('DELETE'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('deleteSynonym', () => { + test('deleteSynonym0', async () => { + const req = (await client.deleteSynonym({ + indexName: 'indexName', + objectID: 'id1', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/indexName/synonyms/id1'); + expect(req.method).toEqual('DELETE'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('getApiKey', () => { + test('getApiKey0', async () => { + const req = (await client.getApiKey({ + key: 'myTestApiKey', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/keys/myTestApiKey'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('getDictionaryLanguages', () => { + test('get getDictionaryLanguages', async () => { + const req = + (await client.getDictionaryLanguages()) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/dictionaries/*/languages'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('getDictionarySettings', () => { + test('get getDictionarySettings results', async () => { + const req = + (await client.getDictionarySettings()) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/dictionaries/*/settings'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('getLogs', () => { + test('getLogs with minimal parameters', async () => { + const req = (await client.getLogs()) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/logs'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('getLogs with parameters', async () => { + const req = (await client.getLogs({ + offset: 5, + length: 10, + indexName: 'theIndexName', + type: 'all', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/logs'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ + offset: '5', + length: '10', + indexName: 'theIndexName', + type: 'all', + }); + }); +}); + +describe('getObject', () => { + test('getObject0', async () => { + const req = (await client.getObject({ + indexName: 'theIndexName', + objectID: 'uniqueID', + attributesToRetrieve: ['attr1', 'attr2'], + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/theIndexName/uniqueID'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ + attributesToRetrieve: 'attr1,attr2', + }); + }); +}); + +describe('getObjects', () => { + test('getObjects0', async () => { + const req = (await client.getObjects({ + requests: [ + { + attributesToRetrieve: ['attr1', 'attr2'], + objectID: 'uniqueID', + indexName: 'theIndexName', + }, + ], + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/*/objects'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + requests: [ + { + attributesToRetrieve: ['attr1', 'attr2'], + objectID: 'uniqueID', + indexName: 'theIndexName', + }, + ], + }); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('getRule', () => { + test('getRule0', async () => { + const req = (await client.getRule({ + indexName: 'indexName', + objectID: 'id1', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/indexName/rules/id1'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('getSettings', () => { + test('getSettings0', async () => { + const req = (await client.getSettings({ + indexName: 'theIndexName', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/theIndexName/settings'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('getSources', () => { + test('getSources0', async () => { + const req = (await client.getSources()) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/security/sources'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('getSynonym', () => { + test('getSynonym0', async () => { + const req = (await client.getSynonym({ + indexName: 'indexName', + objectID: 'id1', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/indexName/synonyms/id1'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('getTask', () => { + test('getTask0', async () => { + const req = (await client.getTask({ + indexName: 'theIndexName', + taskID: 123, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/theIndexName/task/123'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('getTopUserIds', () => { + test('getTopUserIds0', async () => { + const req = (await client.getTopUserIds()) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/clusters/mapping/top'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('getUserId', () => { + test('getUserId0', async () => { + const req = (await client.getUserId({ + userID: 'uniqueID', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/clusters/mapping/uniqueID'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('hasPendingMappings', () => { + test('hasPendingMappings with minimal parameters', async () => { + const req = (await client.hasPendingMappings()) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/clusters/mapping/pending'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('hasPendingMappings with parameters', async () => { + const req = (await client.hasPendingMappings({ + getClusters: true, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/clusters/mapping/pending'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ getClusters: 'true' }); + }); +}); + +describe('listApiKeys', () => { + test('listApiKeys0', async () => { + const req = (await client.listApiKeys()) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/keys'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('listClusters', () => { + test('listClusters0', async () => { + const req = (await client.listClusters()) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/clusters'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('listIndices', () => { + test('listIndices with minimal parameters', async () => { + const req = (await client.listIndices()) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('listIndices with parameters', async () => { + const req = (await client.listIndices({ + page: 8, + hitsPerPage: 3, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ page: '8', hitsPerPage: '3' }); + }); +}); + +describe('listUserIds', () => { + test('listUserIds with minimal parameters', async () => { + const req = (await client.listUserIds()) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/clusters/mapping'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('listUserIds with parameters', async () => { + const req = (await client.listUserIds({ + page: 8, + hitsPerPage: 100, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/clusters/mapping'); + expect(req.method).toEqual('GET'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual({ page: '8', hitsPerPage: '100' }); + }); +}); + +describe('multipleBatch', () => { + test('multipleBatch0', async () => { + const req = (await client.multipleBatch({ + requests: [ + { + action: 'addObject', + body: { key: 'value' }, + indexName: 'theIndexName', + }, + ], + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/*/batch'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + requests: [ + { + action: 'addObject', + body: { key: 'value' }, + indexName: 'theIndexName', + }, + ], + }); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('operationIndex', () => { + test('operationIndex0', async () => { + const req = (await client.operationIndex({ + indexName: 'theIndexName', + operationIndexParams: { + operation: 'copy', + destination: 'dest', + scope: ['rules', 'settings'], + }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/theIndexName/operation'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + operation: 'copy', + destination: 'dest', + scope: ['rules', 'settings'], + }); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('partialUpdateObject', () => { + test('partialUpdateObject0', async () => { + const req = (await client.partialUpdateObject({ + indexName: 'theIndexName', + objectID: 'uniqueID', + attributesToUpdate: { + id1: 'test', + id2: { _operation: 'AddUnique', value: 'test2' }, + }, + createIfNotExists: true, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/theIndexName/uniqueID/partial'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + id1: 'test', + id2: { _operation: 'AddUnique', value: 'test2' }, + }); + expect(req.searchParams).toStrictEqual({ createIfNotExists: 'true' }); + }); +}); + +describe('removeUserId', () => { + test('removeUserId0', async () => { + const req = (await client.removeUserId({ + userID: 'uniqueID', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/clusters/mapping/uniqueID'); + expect(req.method).toEqual('DELETE'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('replaceSources', () => { + test('replaceSources0', async () => { + const req = (await client.replaceSources({ + source: [{ source: 'theSource', description: 'theDescription' }], + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/security/sources'); + expect(req.method).toEqual('PUT'); + expect(req.data).toEqual([ + { source: 'theSource', description: 'theDescription' }, + ]); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('restoreApiKey', () => { + test('restoreApiKey0', async () => { + const req = (await client.restoreApiKey({ + key: 'myApiKey', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/keys/myApiKey/restore'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual(undefined); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('saveObject', () => { + test('saveObject0', async () => { + const req = (await client.saveObject({ + indexName: 'theIndexName', + body: { objectID: 'id', test: 'val' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/theIndexName'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ objectID: 'id', test: 'val' }); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('saveRule', () => { + test('saveRule with minimal parameters', async () => { + const req = (await client.saveRule({ + indexName: 'indexName', + objectID: 'id1', + rule: { + objectID: 'id1', + conditions: [{ pattern: 'apple', anchoring: 'contains' }], + }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/indexName/rules/id1'); + expect(req.method).toEqual('PUT'); + expect(req.data).toEqual({ + objectID: 'id1', + conditions: [{ pattern: 'apple', anchoring: 'contains' }], + }); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('saveRule with all parameters', async () => { + const req = (await client.saveRule({ + indexName: 'indexName', + objectID: 'id1', + rule: { + objectID: 'id1', + conditions: [ + { + pattern: 'apple', + anchoring: 'contains', + alternatives: false, + context: 'search', + }, + ], + consequence: { + params: { + filters: 'brand:apple', + query: { + remove: ['algolia'], + edits: [ + { type: 'remove', delete: 'abc', insert: 'cde' }, + { type: 'replace', delete: 'abc', insert: 'cde' }, + ], + }, + }, + hide: [{ objectID: '321' }], + filterPromotes: false, + userData: { algolia: 'aloglia' }, + promote: [ + { objectID: 'abc', position: 3 }, + { objectIDs: ['abc', 'def'], position: 1 }, + ], + }, + description: 'test', + enabled: true, + validity: [{ from: 1656670273, until: 1656670277 }], + }, + forwardToReplicas: true, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/indexName/rules/id1'); + expect(req.method).toEqual('PUT'); + expect(req.data).toEqual({ + objectID: 'id1', + conditions: [ + { + pattern: 'apple', + anchoring: 'contains', + alternatives: false, + context: 'search', + }, + ], + consequence: { + params: { + filters: 'brand:apple', + query: { + remove: ['algolia'], + edits: [ + { type: 'remove', delete: 'abc', insert: 'cde' }, + { type: 'replace', delete: 'abc', insert: 'cde' }, + ], + }, + }, + hide: [{ objectID: '321' }], + filterPromotes: false, + userData: { algolia: 'aloglia' }, + promote: [ + { objectID: 'abc', position: 3 }, + { objectIDs: ['abc', 'def'], position: 1 }, + ], + }, + description: 'test', + enabled: true, + validity: [{ from: 1656670273, until: 1656670277 }], + }); + expect(req.searchParams).toStrictEqual({ forwardToReplicas: 'true' }); + }); +}); + +describe('saveRules', () => { + test('saveRules with minimal parameters', async () => { + const req = (await client.saveRules({ + indexName: 'indexName', + rules: [ + { + objectID: 'a-rule-id', + conditions: [{ pattern: 'smartphone', anchoring: 'contains' }], + }, + { + objectID: 'a-second-rule-id', + conditions: [{ pattern: 'apple', anchoring: 'contains' }], + }, + ], + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/indexName/rules/batch'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual([ + { + objectID: 'a-rule-id', + conditions: [{ pattern: 'smartphone', anchoring: 'contains' }], + }, + { + objectID: 'a-second-rule-id', + conditions: [{ pattern: 'apple', anchoring: 'contains' }], + }, + ]); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('saveRules with all parameters', async () => { + const req = (await client.saveRules({ + indexName: 'indexName', + rules: [ + { + objectID: 'id1', + conditions: [ + { + pattern: 'apple', + anchoring: 'contains', + alternatives: false, + context: 'search', + }, + ], + consequence: { + params: { + filters: 'brand:apple', + query: { + remove: ['algolia'], + edits: [ + { type: 'remove', delete: 'abc', insert: 'cde' }, + { type: 'replace', delete: 'abc', insert: 'cde' }, + ], + }, + }, + hide: [{ objectID: '321' }], + filterPromotes: false, + userData: { algolia: 'aloglia' }, + promote: [ + { objectID: 'abc', position: 3 }, + { objectIDs: ['abc', 'def'], position: 1 }, + ], + }, + description: 'test', + enabled: true, + validity: [{ from: 1656670273, until: 1656670277 }], + }, + ], + forwardToReplicas: true, + clearExistingRules: true, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/indexName/rules/batch'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual([ + { + objectID: 'id1', + conditions: [ + { + pattern: 'apple', + anchoring: 'contains', + alternatives: false, + context: 'search', + }, + ], + consequence: { + params: { + filters: 'brand:apple', + query: { + remove: ['algolia'], + edits: [ + { type: 'remove', delete: 'abc', insert: 'cde' }, + { type: 'replace', delete: 'abc', insert: 'cde' }, + ], + }, + }, + hide: [{ objectID: '321' }], + filterPromotes: false, + userData: { algolia: 'aloglia' }, + promote: [ + { objectID: 'abc', position: 3 }, + { objectIDs: ['abc', 'def'], position: 1 }, + ], + }, + description: 'test', + enabled: true, + validity: [{ from: 1656670273, until: 1656670277 }], + }, + ]); + expect(req.searchParams).toStrictEqual({ + forwardToReplicas: 'true', + clearExistingRules: 'true', + }); + }); +}); + +describe('saveSynonym', () => { + test('saveSynonym0', async () => { + const req = (await client.saveSynonym({ + indexName: 'indexName', + objectID: 'id1', + synonymHit: { + objectID: 'id1', + type: 'synonym', + synonyms: ['car', 'vehicule', 'auto'], + }, + forwardToReplicas: true, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/indexName/synonyms/id1'); + expect(req.method).toEqual('PUT'); + expect(req.data).toEqual({ + objectID: 'id1', + type: 'synonym', + synonyms: ['car', 'vehicule', 'auto'], + }); + expect(req.searchParams).toStrictEqual({ forwardToReplicas: 'true' }); + }); +}); + +describe('saveSynonyms', () => { + test('saveSynonyms0', async () => { + const req = (await client.saveSynonyms({ + indexName: 'indexName', + synonymHit: [ + { + objectID: 'id1', + type: 'synonym', + synonyms: ['car', 'vehicule', 'auto'], + }, + { + objectID: 'id2', + type: 'onewaysynonym', + input: 'iphone', + synonyms: ['ephone', 'aphone', 'yphone'], + }, + ], + forwardToReplicas: true, + replaceExistingSynonyms: false, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/indexName/synonyms/batch'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual([ + { + objectID: 'id1', + type: 'synonym', + synonyms: ['car', 'vehicule', 'auto'], + }, + { + objectID: 'id2', + type: 'onewaysynonym', + input: 'iphone', + synonyms: ['ephone', 'aphone', 'yphone'], + }, + ]); + expect(req.searchParams).toStrictEqual({ + forwardToReplicas: 'true', + replaceExistingSynonyms: 'false', + }); + }); +}); + +describe('search', () => { + test('search for a single hits request with minimal parameters', async () => { + const req = (await client.search({ + requests: [{ indexName: 'cts_e2e_search_empty_index' }], + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/*/queries'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + requests: [{ indexName: 'cts_e2e_search_empty_index' }], + }); + expect(req.searchParams).toStrictEqual(undefined); + + const resp = await e2eClient.search({ + requests: [{ indexName: 'cts_e2e_search_empty_index' }], + }); + + expect(resp).toMatchObject({ + results: [ + { + hits: [], + page: 0, + nbHits: 0, + nbPages: 0, + hitsPerPage: 20, + exhaustiveNbHits: true, + exhaustiveTypo: true, + exhaustive: { nbHits: true, typo: true }, + processingTimeMS: 1, + query: '', + params: '', + index: 'cts_e2e_search_empty_index', + renderingContent: {}, + }, + ], + }); + }); + + test('search for a single facet request with minimal parameters', async () => { + const req = (await client.search({ + requests: [ + { indexName: 'cts_e2e_search_facet', type: 'facet', facet: 'editor' }, + ], + strategy: 'stopIfEnoughMatches', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/*/queries'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + requests: [ + { indexName: 'cts_e2e_search_facet', type: 'facet', facet: 'editor' }, + ], + strategy: 'stopIfEnoughMatches', + }); + expect(req.searchParams).toStrictEqual(undefined); + + const resp = await e2eClient.search({ + requests: [ + { indexName: 'cts_e2e_search_facet', type: 'facet', facet: 'editor' }, + ], + strategy: 'stopIfEnoughMatches', + }); + + expect(resp).toMatchObject({ + results: [ + { + exhaustiveFacetsCount: true, + processingTimeMS: 1, + facetHits: [ + { count: 1, highlighted: 'goland', value: 'goland' }, + { count: 1, highlighted: 'neovim', value: 'neovim' }, + { count: 1, highlighted: 'vscode', value: 'vscode' }, + ], + }, + ], + }); + }); + + test('search for a single hits request with all parameters', async () => { + const req = (await client.search({ + requests: [ + { + indexName: 'theIndexName', + query: 'myQuery', + hitsPerPage: 50, + type: 'default', + }, + ], + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/*/queries'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + requests: [ + { + indexName: 'theIndexName', + query: 'myQuery', + hitsPerPage: 50, + type: 'default', + }, + ], + }); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('search for a single facet request with all parameters', async () => { + const req = (await client.search({ + requests: [ + { + indexName: 'theIndexName', + type: 'facet', + facet: 'theFacet', + facetQuery: 'theFacetQuery', + query: 'theQuery', + maxFacetHits: 50, + }, + ], + strategy: 'stopIfEnoughMatches', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/*/queries'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + requests: [ + { + indexName: 'theIndexName', + type: 'facet', + facet: 'theFacet', + facetQuery: 'theFacetQuery', + query: 'theQuery', + maxFacetHits: 50, + }, + ], + strategy: 'stopIfEnoughMatches', + }); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('search for multiple mixed requests in multiple indices with minimal parameters', async () => { + const req = (await client.search({ + requests: [ + { indexName: 'theIndexName' }, + { indexName: 'theIndexName2', type: 'facet', facet: 'theFacet' }, + { indexName: 'theIndexName', type: 'default' }, + ], + strategy: 'stopIfEnoughMatches', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/*/queries'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + requests: [ + { indexName: 'theIndexName' }, + { indexName: 'theIndexName2', type: 'facet', facet: 'theFacet' }, + { indexName: 'theIndexName', type: 'default' }, + ], + strategy: 'stopIfEnoughMatches', + }); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('search for multiple mixed requests in multiple indices with all parameters', async () => { + const req = (await client.search({ + requests: [ + { + indexName: 'theIndexName', + type: 'facet', + facet: 'theFacet', + facetQuery: 'theFacetQuery', + query: 'theQuery', + maxFacetHits: 50, + }, + { + indexName: 'theIndexName', + query: 'myQuery', + hitsPerPage: 50, + type: 'default', + }, + ], + strategy: 'stopIfEnoughMatches', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/*/queries'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + requests: [ + { + indexName: 'theIndexName', + type: 'facet', + facet: 'theFacet', + facetQuery: 'theFacetQuery', + query: 'theQuery', + maxFacetHits: 50, + }, + { + indexName: 'theIndexName', + query: 'myQuery', + hitsPerPage: 50, + type: 'default', + }, + ], + strategy: 'stopIfEnoughMatches', + }); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('search filters accept all of the possible shapes', async () => { + const req = (await client.search({ + requests: [ + { + indexName: 'theIndexName', + facetFilters: 'mySearch:filters', + reRankingApplyFilter: 'mySearch:filters', + tagFilters: 'mySearch:filters', + numericFilters: 'mySearch:filters', + optionalFilters: 'mySearch:filters', + }, + { + indexName: 'theIndexName', + facetFilters: ['mySearch:filters', ['mySearch:filters']], + reRankingApplyFilter: ['mySearch:filters', ['mySearch:filters']], + tagFilters: ['mySearch:filters', ['mySearch:filters']], + numericFilters: ['mySearch:filters', ['mySearch:filters']], + optionalFilters: ['mySearch:filters', ['mySearch:filters']], + }, + ], + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/*/queries'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + requests: [ + { + indexName: 'theIndexName', + facetFilters: 'mySearch:filters', + reRankingApplyFilter: 'mySearch:filters', + tagFilters: 'mySearch:filters', + numericFilters: 'mySearch:filters', + optionalFilters: 'mySearch:filters', + }, + { + indexName: 'theIndexName', + facetFilters: ['mySearch:filters', ['mySearch:filters']], + reRankingApplyFilter: ['mySearch:filters', ['mySearch:filters']], + tagFilters: ['mySearch:filters', ['mySearch:filters']], + numericFilters: ['mySearch:filters', ['mySearch:filters']], + optionalFilters: ['mySearch:filters', ['mySearch:filters']], + }, + ], + }); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('search with all search parameters', async () => { + const req = (await client.search({ + requests: [ + { + advancedSyntax: true, + advancedSyntaxFeatures: ['exactPhrase'], + allowTyposOnNumericTokens: true, + alternativesAsExact: ['multiWordsSynonym'], + analytics: true, + analyticsTags: [''], + aroundLatLng: '', + aroundLatLngViaIP: true, + aroundPrecision: 0, + aroundRadius: 'all', + attributeCriteriaComputedByMinProximity: true, + attributesForFaceting: [''], + attributesToHighlight: [''], + attributesToRetrieve: [''], + attributesToSnippet: [''], + clickAnalytics: true, + customRanking: [''], + decompoundQuery: true, + disableExactOnAttributes: [''], + disableTypoToleranceOnAttributes: [''], + distinct: 0, + enableABTest: true, + enablePersonalization: true, + enableReRanking: true, + enableRules: true, + exactOnSingleWordQuery: 'attribute', + explain: ['foo', 'bar'], + facetFilters: [''], + facetingAfterDistinct: true, + facets: [''], + filters: '', + getRankingInfo: true, + highlightPostTag: '', + highlightPreTag: '', + hitsPerPage: 1, + ignorePlurals: false, + indexName: 'theIndexName', + insideBoundingBox: [ + [47.3165, 4.9665, 47.3424, 5.0201], + [40.9234, 2.1185, 38.643, 1.9916], + ], + insidePolygon: [ + [47.3165, 4.9665, 47.3424, 5.0201, 47.32, 4.9], + [40.9234, 2.1185, 38.643, 1.9916, 39.2587, 2.0104], + ], + keepDiacriticsOnCharacters: '', + length: 1, + maxValuesPerFacet: 0, + minProximity: 1, + minWordSizefor1Typo: 0, + minWordSizefor2Typos: 0, + minimumAroundRadius: 1, + naturalLanguages: [''], + numericFilters: [''], + offset: 0, + optionalFilters: [''], + optionalWords: [''], + page: 0, + percentileComputation: true, + personalizationImpact: 0, + query: '', + queryLanguages: [''], + queryType: 'prefixAll', + ranking: [''], + reRankingApplyFilter: [''], + relevancyStrictness: 0, + removeStopWords: true, + removeWordsIfNoResults: 'allOptional', + renderingContent: { + facetOrdering: { + facets: { order: ['a', 'b'] }, + values: { a: { order: ['b'], sortRemainingBy: 'count' } }, + }, + }, + replaceSynonymsInHighlight: true, + responseFields: [''], + restrictHighlightAndSnippetArrays: true, + restrictSearchableAttributes: [''], + ruleContexts: [''], + similarQuery: '', + snippetEllipsisText: '', + sortFacetValuesBy: '', + sumOrFiltersScores: true, + synonyms: true, + tagFilters: [''], + type: 'default', + typoTolerance: 'min', + userToken: '', + }, + ], + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/*/queries'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + requests: [ + { + advancedSyntax: true, + advancedSyntaxFeatures: ['exactPhrase'], + allowTyposOnNumericTokens: true, + alternativesAsExact: ['multiWordsSynonym'], + analytics: true, + analyticsTags: [''], + aroundLatLng: '', + aroundLatLngViaIP: true, + aroundPrecision: 0, + aroundRadius: 'all', + attributeCriteriaComputedByMinProximity: true, + attributesForFaceting: [''], + attributesToHighlight: [''], + attributesToRetrieve: [''], + attributesToSnippet: [''], + clickAnalytics: true, + customRanking: [''], + decompoundQuery: true, + disableExactOnAttributes: [''], + disableTypoToleranceOnAttributes: [''], + distinct: 0, + enableABTest: true, + enablePersonalization: true, + enableReRanking: true, + enableRules: true, + exactOnSingleWordQuery: 'attribute', + explain: ['foo', 'bar'], + facetFilters: [''], + facetingAfterDistinct: true, + facets: [''], + filters: '', + getRankingInfo: true, + highlightPostTag: '', + highlightPreTag: '', + hitsPerPage: 1, + ignorePlurals: false, + indexName: 'theIndexName', + insideBoundingBox: [ + [47.3165, 4.9665, 47.3424, 5.0201], + [40.9234, 2.1185, 38.643, 1.9916], + ], + insidePolygon: [ + [47.3165, 4.9665, 47.3424, 5.0201, 47.32, 4.9], + [40.9234, 2.1185, 38.643, 1.9916, 39.2587, 2.0104], + ], + keepDiacriticsOnCharacters: '', + length: 1, + maxValuesPerFacet: 0, + minProximity: 1, + minWordSizefor1Typo: 0, + minWordSizefor2Typos: 0, + minimumAroundRadius: 1, + naturalLanguages: [''], + numericFilters: [''], + offset: 0, + optionalFilters: [''], + optionalWords: [''], + page: 0, + percentileComputation: true, + personalizationImpact: 0, + query: '', + queryLanguages: [''], + queryType: 'prefixAll', + ranking: [''], + reRankingApplyFilter: [''], + relevancyStrictness: 0, + removeStopWords: true, + removeWordsIfNoResults: 'allOptional', + renderingContent: { + facetOrdering: { + facets: { order: ['a', 'b'] }, + values: { a: { order: ['b'], sortRemainingBy: 'count' } }, + }, + }, + replaceSynonymsInHighlight: true, + responseFields: [''], + restrictHighlightAndSnippetArrays: true, + restrictSearchableAttributes: [''], + ruleContexts: [''], + similarQuery: '', + snippetEllipsisText: '', + sortFacetValuesBy: '', + sumOrFiltersScores: true, + synonyms: true, + tagFilters: [''], + type: 'default', + typoTolerance: 'min', + userToken: '', + }, + ], + }); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('searchDictionaryEntries', () => { + test('get searchDictionaryEntries results with minimal parameters', async () => { + const req = (await client.searchDictionaryEntries({ + dictionaryName: 'compounds', + searchDictionaryEntriesParams: { query: 'foo' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/dictionaries/compounds/search'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ query: 'foo' }); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('get searchDictionaryEntries results with all parameters', async () => { + const req = (await client.searchDictionaryEntries({ + dictionaryName: 'compounds', + searchDictionaryEntriesParams: { + query: 'foo', + page: 4, + hitsPerPage: 2, + language: 'fr', + }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/dictionaries/compounds/search'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + query: 'foo', + page: 4, + hitsPerPage: 2, + language: 'fr', + }); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('searchForFacetValues', () => { + test('get searchForFacetValues results with minimal parameters', async () => { + const req = (await client.searchForFacetValues({ + indexName: 'indexName', + facetName: 'facetName', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/indexName/facets/facetName/query'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({}); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('get searchForFacetValues results with all parameters', async () => { + const req = (await client.searchForFacetValues({ + indexName: 'indexName', + facetName: 'facetName', + searchForFacetValuesRequest: { + params: "query=foo&facetFilters=['bar']", + facetQuery: 'foo', + maxFacetHits: 42, + }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/indexName/facets/facetName/query'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + params: "query=foo&facetFilters=['bar']", + facetQuery: 'foo', + maxFacetHits: 42, + }); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('searchRules', () => { + test('searchRules0', async () => { + const req = (await client.searchRules({ + indexName: 'indexName', + searchRulesParams: { query: 'something' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/indexName/rules/search'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ query: 'something' }); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('searchSingleIndex', () => { + test('search with minimal parameters', async () => { + const req = (await client.searchSingleIndex({ + indexName: 'indexName', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/indexName/query'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({}); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('search with searchParams', async () => { + const req = (await client.searchSingleIndex({ + indexName: 'indexName', + searchParams: { query: 'myQuery', facetFilters: ['tags:algolia'] }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/indexName/query'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + query: 'myQuery', + facetFilters: ['tags:algolia'], + }); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('searchSynonyms', () => { + test('searchSynonyms with minimal parameters', async () => { + const req = (await client.searchSynonyms({ + indexName: 'indexName', + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/indexName/synonyms/search'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({}); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('searchSynonyms with all parameters', async () => { + const req = (await client.searchSynonyms({ + indexName: 'indexName', + type: 'altcorrection1', + page: 10, + hitsPerPage: 10, + searchSynonymsParams: { query: 'myQuery' }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/indexName/synonyms/search'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ query: 'myQuery' }); + expect(req.searchParams).toStrictEqual({ + type: 'altcorrection1', + page: '10', + hitsPerPage: '10', + }); + }); +}); + +describe('searchUserIds', () => { + test('searchUserIds0', async () => { + const req = (await client.searchUserIds({ + query: 'test', + clusterName: 'theClusterName', + page: 5, + hitsPerPage: 10, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/clusters/mapping/search'); + expect(req.method).toEqual('POST'); + expect(req.data).toEqual({ + query: 'test', + clusterName: 'theClusterName', + page: 5, + hitsPerPage: 10, + }); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('setDictionarySettings', () => { + test('get setDictionarySettings results with minimal parameters', async () => { + const req = (await client.setDictionarySettings({ + disableStandardEntries: { plurals: { fr: false, en: false, ru: true } }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/dictionaries/*/settings'); + expect(req.method).toEqual('PUT'); + expect(req.data).toEqual({ + disableStandardEntries: { plurals: { fr: false, en: false, ru: true } }, + }); + expect(req.searchParams).toStrictEqual(undefined); + }); + + test('get setDictionarySettings results with all parameters', async () => { + const req = (await client.setDictionarySettings({ + disableStandardEntries: { + plurals: { fr: false, en: false, ru: true }, + stopwords: { fr: false }, + compounds: { ru: true }, + }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/dictionaries/*/settings'); + expect(req.method).toEqual('PUT'); + expect(req.data).toEqual({ + disableStandardEntries: { + plurals: { fr: false, en: false, ru: true }, + stopwords: { fr: false }, + compounds: { ru: true }, + }, + }); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('setSettings', () => { + test('setSettings with minimal parameters', async () => { + const req = (await client.setSettings({ + indexName: 'theIndexName', + indexSettings: { paginationLimitedTo: 10 }, + forwardToReplicas: true, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/theIndexName/settings'); + expect(req.method).toEqual('PUT'); + expect(req.data).toEqual({ paginationLimitedTo: 10 }); + expect(req.searchParams).toStrictEqual({ forwardToReplicas: 'true' }); + }); + + test('setSettings allow boolean `typoTolerance`', async () => { + const req = (await client.setSettings({ + indexName: 'theIndexName', + indexSettings: { typoTolerance: true }, + forwardToReplicas: true, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/theIndexName/settings'); + expect(req.method).toEqual('PUT'); + expect(req.data).toEqual({ typoTolerance: true }); + expect(req.searchParams).toStrictEqual({ forwardToReplicas: 'true' }); + }); + + test('setSettings allow enum `typoTolerance`', async () => { + const req = (await client.setSettings({ + indexName: 'theIndexName', + indexSettings: { typoTolerance: 'min' }, + forwardToReplicas: true, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/theIndexName/settings'); + expect(req.method).toEqual('PUT'); + expect(req.data).toEqual({ typoTolerance: 'min' }); + expect(req.searchParams).toStrictEqual({ forwardToReplicas: 'true' }); + }); + + test('setSettings allow boolean `ignorePlurals`', async () => { + const req = (await client.setSettings({ + indexName: 'theIndexName', + indexSettings: { ignorePlurals: true }, + forwardToReplicas: true, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/theIndexName/settings'); + expect(req.method).toEqual('PUT'); + expect(req.data).toEqual({ ignorePlurals: true }); + expect(req.searchParams).toStrictEqual({ forwardToReplicas: 'true' }); + }); + + test('setSettings allow list of string `ignorePlurals`', async () => { + const req = (await client.setSettings({ + indexName: 'theIndexName', + indexSettings: { ignorePlurals: ['algolia'] }, + forwardToReplicas: true, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/theIndexName/settings'); + expect(req.method).toEqual('PUT'); + expect(req.data).toEqual({ ignorePlurals: ['algolia'] }); + expect(req.searchParams).toStrictEqual({ forwardToReplicas: 'true' }); + }); + + test('setSettings allow boolean `removeStopWords`', async () => { + const req = (await client.setSettings({ + indexName: 'theIndexName', + indexSettings: { removeStopWords: true }, + forwardToReplicas: true, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/theIndexName/settings'); + expect(req.method).toEqual('PUT'); + expect(req.data).toEqual({ removeStopWords: true }); + expect(req.searchParams).toStrictEqual({ forwardToReplicas: 'true' }); + }); + + test('setSettings allow list of string `removeStopWords`', async () => { + const req = (await client.setSettings({ + indexName: 'theIndexName', + indexSettings: { removeStopWords: ['algolia'] }, + forwardToReplicas: true, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/theIndexName/settings'); + expect(req.method).toEqual('PUT'); + expect(req.data).toEqual({ removeStopWords: ['algolia'] }); + expect(req.searchParams).toStrictEqual({ forwardToReplicas: 'true' }); + }); + + test('setSettings allow boolean `distinct`', async () => { + const req = (await client.setSettings({ + indexName: 'theIndexName', + indexSettings: { distinct: true }, + forwardToReplicas: true, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/theIndexName/settings'); + expect(req.method).toEqual('PUT'); + expect(req.data).toEqual({ distinct: true }); + expect(req.searchParams).toStrictEqual({ forwardToReplicas: 'true' }); + }); + + test('setSettings allow integers for `distinct`', async () => { + const req = (await client.setSettings({ + indexName: 'theIndexName', + indexSettings: { distinct: 1 }, + forwardToReplicas: true, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/theIndexName/settings'); + expect(req.method).toEqual('PUT'); + expect(req.data).toEqual({ distinct: 1 }); + expect(req.searchParams).toStrictEqual({ forwardToReplicas: 'true' }); + }); + + test('setSettings allow all `indexSettings`', async () => { + const req = (await client.setSettings({ + indexName: 'theIndexName', + indexSettings: { + advancedSyntax: true, + advancedSyntaxFeatures: ['exactPhrase'], + allowCompressionOfIntegerArray: true, + allowTyposOnNumericTokens: true, + alternativesAsExact: ['singleWordSynonym'], + attributeCriteriaComputedByMinProximity: true, + attributeForDistinct: 'test', + attributesForFaceting: ['algolia'], + attributesToHighlight: ['algolia'], + attributesToRetrieve: ['algolia'], + attributesToSnippet: ['algolia'], + attributesToTransliterate: ['algolia'], + camelCaseAttributes: ['algolia'], + customNormalization: { algolia: { aloglia: 'aglolia' } }, + customRanking: ['algolia'], + decompoundQuery: false, + decompoundedAttributes: { algolia: 'aloglia' }, + disableExactOnAttributes: ['algolia'], + disablePrefixOnAttributes: ['algolia'], + disableTypoToleranceOnAttributes: ['algolia'], + disableTypoToleranceOnWords: ['algolia'], + distinct: 3, + enablePersonalization: true, + enableReRanking: false, + enableRules: true, + exactOnSingleWordQuery: 'attribute', + highlightPreTag: '', + highlightPostTag: '', + hitsPerPage: 10, + ignorePlurals: false, + indexLanguages: ['algolia'], + keepDiacriticsOnCharacters: 'abc', + maxFacetHits: 20, + maxValuesPerFacet: 30, + minProximity: 6, + minWordSizefor1Typo: 5, + minWordSizefor2Typos: 11, + mode: 'neuralSearch', + numericAttributesForFiltering: ['algolia'], + optionalWords: ['myspace'], + paginationLimitedTo: 0, + queryLanguages: ['algolia'], + queryType: 'prefixLast', + ranking: ['geo'], + reRankingApplyFilter: 'mySearch:filters', + relevancyStrictness: 10, + removeStopWords: false, + removeWordsIfNoResults: 'lastWords', + renderingContent: { + facetOrdering: { + facets: { order: ['a', 'b'] }, + values: { a: { order: ['b'], sortRemainingBy: 'count' } }, + }, + }, + replaceSynonymsInHighlight: true, + replicas: [''], + responseFields: ['algolia'], + restrictHighlightAndSnippetArrays: true, + searchableAttributes: ['foo'], + semanticSearch: { eventSources: ['foo'] }, + separatorsToIndex: 'bar', + snippetEllipsisText: '---', + sortFacetValuesBy: 'date', + typoTolerance: false, + unretrievableAttributes: ['foo'], + userData: { user: 'data' }, + }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/indexes/theIndexName/settings'); + expect(req.method).toEqual('PUT'); + expect(req.data).toEqual({ + advancedSyntax: true, + advancedSyntaxFeatures: ['exactPhrase'], + allowCompressionOfIntegerArray: true, + allowTyposOnNumericTokens: true, + alternativesAsExact: ['singleWordSynonym'], + attributeCriteriaComputedByMinProximity: true, + attributeForDistinct: 'test', + attributesForFaceting: ['algolia'], + attributesToHighlight: ['algolia'], + attributesToRetrieve: ['algolia'], + attributesToSnippet: ['algolia'], + attributesToTransliterate: ['algolia'], + camelCaseAttributes: ['algolia'], + customNormalization: { algolia: { aloglia: 'aglolia' } }, + customRanking: ['algolia'], + decompoundQuery: false, + decompoundedAttributes: { algolia: 'aloglia' }, + disableExactOnAttributes: ['algolia'], + disablePrefixOnAttributes: ['algolia'], + disableTypoToleranceOnAttributes: ['algolia'], + disableTypoToleranceOnWords: ['algolia'], + distinct: 3, + enablePersonalization: true, + enableReRanking: false, + enableRules: true, + exactOnSingleWordQuery: 'attribute', + highlightPreTag: '', + highlightPostTag: '', + hitsPerPage: 10, + ignorePlurals: false, + indexLanguages: ['algolia'], + keepDiacriticsOnCharacters: 'abc', + maxFacetHits: 20, + maxValuesPerFacet: 30, + minProximity: 6, + minWordSizefor1Typo: 5, + minWordSizefor2Typos: 11, + mode: 'neuralSearch', + numericAttributesForFiltering: ['algolia'], + optionalWords: ['myspace'], + paginationLimitedTo: 0, + queryLanguages: ['algolia'], + queryType: 'prefixLast', + ranking: ['geo'], + reRankingApplyFilter: 'mySearch:filters', + relevancyStrictness: 10, + removeStopWords: false, + removeWordsIfNoResults: 'lastWords', + renderingContent: { + facetOrdering: { + facets: { order: ['a', 'b'] }, + values: { a: { order: ['b'], sortRemainingBy: 'count' } }, + }, + }, + replaceSynonymsInHighlight: true, + replicas: [''], + responseFields: ['algolia'], + restrictHighlightAndSnippetArrays: true, + searchableAttributes: ['foo'], + semanticSearch: { eventSources: ['foo'] }, + separatorsToIndex: 'bar', + snippetEllipsisText: '---', + sortFacetValuesBy: 'date', + typoTolerance: false, + unretrievableAttributes: ['foo'], + userData: { user: 'data' }, + }); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); + +describe('updateApiKey', () => { + test('updateApiKey0', async () => { + const req = (await client.updateApiKey({ + key: 'myApiKey', + apiKey: { + acl: ['search', 'addObject'], + validity: 300, + maxQueriesPerIPPerHour: 100, + maxHitsPerQuery: 20, + }, + })) as unknown as EchoResponse; + + expect(req.path).toEqual('/1/keys/myApiKey'); + expect(req.method).toEqual('PUT'); + expect(req.data).toEqual({ + acl: ['search', 'addObject'], + validity: 300, + maxQueriesPerIPPerHour: 100, + maxHitsPerQuery: 20, + }); + expect(req.searchParams).toStrictEqual(undefined); + }); +}); diff --git a/tests/output/kotlin/src/commonTest/kotlin/com/algolia/requests/AbtestingTest.kt b/tests/output/kotlin/src/commonTest/kotlin/com/algolia/requests/AbtestingTest.kt new file mode 100644 index 0000000000..1abc042685 --- /dev/null +++ b/tests/output/kotlin/src/commonTest/kotlin/com/algolia/requests/AbtestingTest.kt @@ -0,0 +1,560 @@ +package com.algolia.methods.requests + +import com.algolia.client.api.AbtestingClient +import com.algolia.client.configuration.* +import com.algolia.client.model.abtesting.* +import com.algolia.client.transport.* +import com.algolia.utils.* +import io.ktor.http.* +import kotlinx.coroutines.test.* +import kotlinx.serialization.json.* +import kotlin.test.* + +class AbtestingTest { + + val client = AbtestingClient( + appId = "appId", + apiKey = "apiKey", + region = "us", + ) + + // addABTests + + @Test + fun `addABTests with minimal parameters`() = runTest { + client.runTest( + call = { + addABTests( + addABTestsRequest = AddABTestsRequest( + endAt = "2022-12-31T00:00:00.000Z", + name = "myABTest", + variants = listOf( + AbTestsVariant( + index = "AB_TEST_1", + trafficPercentage = 30, + ), + AbTestsVariant( + index = "AB_TEST_2", + trafficPercentage = 50, + ), + ), + ), + ) + }, + intercept = { + assertEquals("/2/abtests".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"endAt":"2022-12-31T00:00:00.000Z","name":"myABTest","variants":[{"index":"AB_TEST_1","trafficPercentage":30},{"index":"AB_TEST_2","trafficPercentage":50}]}""", it.body) + }, + ) + } + + // customDelete + + @Test + fun `allow del method for a custom path with minimal parameters`() = runTest { + client.runTest( + call = { + customDelete( + path = "/test/minimal", + ) + }, + intercept = { + assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("DELETE"), it.method) + assertNoBody(it.body) + }, + ) + } + + @Test + fun `allow del method for a custom path with all parameters`() = runTest { + client.runTest( + call = { + customDelete( + path = "/test/all", + parameters = mapOf("query" to "parameters"), + ) + }, + intercept = { + assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("DELETE"), it.method) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + // customGet + + @Test + fun `allow get method for a custom path with minimal parameters`() = runTest { + client.runTest( + call = { + customGet( + path = "/test/minimal", + ) + }, + intercept = { + assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + @Test + fun `allow get method for a custom path with all parameters`() = runTest { + client.runTest( + call = { + customGet( + path = "/test/all", + parameters = mapOf("query" to "parameters"), + ) + }, + intercept = { + assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + // customPost + + @Test + fun `allow post method for a custom path with minimal parameters`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/minimal", + ) + }, + intercept = { + assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{}""", it.body) + }, + ) + } + + @Test + fun `allow post method for a custom path with all parameters`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/all", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "body", + JsonPrimitive("parameters"), + ) + }, + ) + }, + intercept = { + assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertJsonBody("""{"body":"parameters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions can override default query parameters`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("query", "myQueryParameter") + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"myQueryParameter"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions merges query parameters with default ones`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("query2", "myQueryParameter") + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","query2":"myQueryParameter"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions can override default headers`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + headers = buildMap { + put("x-algolia-api-key", "myApiKey") + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"x-algolia-api-key":"myApiKey"}""", it.headers) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions merges headers with default ones`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + headers = buildMap { + put("x-algolia-api-key", "myApiKey") + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"x-algolia-api-key":"myApiKey"}""", it.headers) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions queryParameters accepts booleans`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("isItWorking", true) + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","isItWorking":"true"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions queryParameters accepts integers`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("myParam", 2) + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","myParam":"2"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions queryParameters accepts list of string`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("myParam", listOf("c", "d")) + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","myParam":"c,d"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions queryParameters accepts list of booleans`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("myParam", listOf(true, true, false)) + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","myParam":"true,true,false"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions queryParameters accepts list of integers`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("myParam", listOf(1, 2)) + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","myParam":"1,2"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + // customPut + + @Test + fun `allow put method for a custom path with minimal parameters`() = runTest { + client.runTest( + call = { + customPut( + path = "/test/minimal", + ) + }, + intercept = { + assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("PUT"), it.method) + assertJsonBody("""{}""", it.body) + }, + ) + } + + @Test + fun `allow put method for a custom path with all parameters`() = runTest { + client.runTest( + call = { + customPut( + path = "/test/all", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "body", + JsonPrimitive("parameters"), + ) + }, + ) + }, + intercept = { + assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("PUT"), it.method) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertJsonBody("""{"body":"parameters"}""", it.body) + }, + ) + } + + // deleteABTest + + @Test + fun `deleteABTest`() = runTest { + client.runTest( + call = { + deleteABTest( + id = 42, + ) + }, + intercept = { + assertEquals("/2/abtests/42".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("DELETE"), it.method) + assertNoBody(it.body) + }, + ) + } + + // getABTest + + @Test + fun `getABTest`() = runTest { + client.runTest( + call = { + getABTest( + id = 42, + ) + }, + intercept = { + assertEquals("/2/abtests/42".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + // listABTests + + @Test + fun `listABTests with minimal parameters`() = runTest { + client.runTest( + call = { + listABTests() + }, + intercept = { + assertEquals("/2/abtests".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + @Test + fun `listABTests with parameters`() = runTest { + client.runTest( + call = { + listABTests( + offset = 42, + limit = 21, + indexPrefix = "foo", + indexSuffix = "bar", + ) + }, + intercept = { + assertEquals("/2/abtests".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"offset":"42","limit":"21","indexPrefix":"foo","indexSuffix":"bar"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + // stopABTest + + @Test + fun `stopABTest`() = runTest { + client.runTest( + call = { + stopABTest( + id = 42, + ) + }, + intercept = { + assertEquals("/2/abtests/42/stop".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertEmptyBody(it.body) + }, + ) + } +} diff --git a/tests/output/kotlin/src/commonTest/kotlin/com/algolia/requests/AnalyticsTest.kt b/tests/output/kotlin/src/commonTest/kotlin/com/algolia/requests/AnalyticsTest.kt new file mode 100644 index 0000000000..fe7dfba4dd --- /dev/null +++ b/tests/output/kotlin/src/commonTest/kotlin/com/algolia/requests/AnalyticsTest.kt @@ -0,0 +1,1150 @@ +package com.algolia.methods.requests + +import com.algolia.client.api.AnalyticsClient +import com.algolia.client.configuration.* +import com.algolia.client.model.analytics.* +import com.algolia.client.transport.* +import com.algolia.utils.* +import io.ktor.http.* +import kotlinx.coroutines.test.* +import kotlinx.serialization.json.* +import kotlin.test.* + +class AnalyticsTest { + + val client = AnalyticsClient( + appId = "appId", + apiKey = "apiKey", + region = "us", + ) + + // customDelete + + @Test + fun `allow del method for a custom path with minimal parameters`() = runTest { + client.runTest( + call = { + customDelete( + path = "/test/minimal", + ) + }, + intercept = { + assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("DELETE"), it.method) + assertNoBody(it.body) + }, + ) + } + + @Test + fun `allow del method for a custom path with all parameters`() = runTest { + client.runTest( + call = { + customDelete( + path = "/test/all", + parameters = mapOf("query" to "parameters"), + ) + }, + intercept = { + assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("DELETE"), it.method) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + // customGet + + @Test + fun `allow get method for a custom path with minimal parameters`() = runTest { + client.runTest( + call = { + customGet( + path = "/test/minimal", + ) + }, + intercept = { + assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + @Test + fun `allow get method for a custom path with all parameters`() = runTest { + client.runTest( + call = { + customGet( + path = "/test/all", + parameters = mapOf("query" to "parameters"), + ) + }, + intercept = { + assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + // customPost + + @Test + fun `allow post method for a custom path with minimal parameters`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/minimal", + ) + }, + intercept = { + assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{}""", it.body) + }, + ) + } + + @Test + fun `allow post method for a custom path with all parameters`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/all", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "body", + JsonPrimitive("parameters"), + ) + }, + ) + }, + intercept = { + assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertJsonBody("""{"body":"parameters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions can override default query parameters`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("query", "myQueryParameter") + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"myQueryParameter"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions merges query parameters with default ones`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("query2", "myQueryParameter") + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","query2":"myQueryParameter"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions can override default headers`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + headers = buildMap { + put("x-algolia-api-key", "myApiKey") + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"x-algolia-api-key":"myApiKey"}""", it.headers) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions merges headers with default ones`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + headers = buildMap { + put("x-algolia-api-key", "myApiKey") + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"x-algolia-api-key":"myApiKey"}""", it.headers) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions queryParameters accepts booleans`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("isItWorking", true) + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","isItWorking":"true"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions queryParameters accepts integers`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("myParam", 2) + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","myParam":"2"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions queryParameters accepts list of string`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("myParam", listOf("c", "d")) + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","myParam":"c,d"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions queryParameters accepts list of booleans`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("myParam", listOf(true, true, false)) + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","myParam":"true,true,false"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions queryParameters accepts list of integers`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("myParam", listOf(1, 2)) + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","myParam":"1,2"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + // customPut + + @Test + fun `allow put method for a custom path with minimal parameters`() = runTest { + client.runTest( + call = { + customPut( + path = "/test/minimal", + ) + }, + intercept = { + assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("PUT"), it.method) + assertJsonBody("""{}""", it.body) + }, + ) + } + + @Test + fun `allow put method for a custom path with all parameters`() = runTest { + client.runTest( + call = { + customPut( + path = "/test/all", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "body", + JsonPrimitive("parameters"), + ) + }, + ) + }, + intercept = { + assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("PUT"), it.method) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertJsonBody("""{"body":"parameters"}""", it.body) + }, + ) + } + + // getAverageClickPosition + + @Test + fun `get getAverageClickPosition with minimal parameters`() = runTest { + client.runTest( + call = { + getAverageClickPosition( + index = "index", + ) + }, + intercept = { + assertEquals("/2/clicks/averageClickPosition".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"index":"index"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + @Test + fun `get getAverageClickPosition with all parameters`() = runTest { + client.runTest( + call = { + getAverageClickPosition( + index = "index", + startDate = "1999-09-19", + endDate = "2001-01-01", + tags = "tag", + ) + }, + intercept = { + assertEquals("/2/clicks/averageClickPosition".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + // getClickPositions + + @Test + fun `get getClickPositions with minimal parameters`() = runTest { + client.runTest( + call = { + getClickPositions( + index = "index", + ) + }, + intercept = { + assertEquals("/2/clicks/positions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"index":"index"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + @Test + fun `get getClickPositions with all parameters`() = runTest { + client.runTest( + call = { + getClickPositions( + index = "index", + startDate = "1999-09-19", + endDate = "2001-01-01", + tags = "tag", + ) + }, + intercept = { + assertEquals("/2/clicks/positions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + // getClickThroughRate + + @Test + fun `get getClickThroughRate with minimal parameters`() = runTest { + client.runTest( + call = { + getClickThroughRate( + index = "index", + ) + }, + intercept = { + assertEquals("/2/clicks/clickThroughRate".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"index":"index"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + @Test + fun `get getClickThroughRate with all parameters`() = runTest { + client.runTest( + call = { + getClickThroughRate( + index = "index", + startDate = "1999-09-19", + endDate = "2001-01-01", + tags = "tag", + ) + }, + intercept = { + assertEquals("/2/clicks/clickThroughRate".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + // getConversationRate + + @Test + fun `get getConversationRate with minimal parameters`() = runTest { + client.runTest( + call = { + getConversationRate( + index = "index", + ) + }, + intercept = { + assertEquals("/2/conversions/conversionRate".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"index":"index"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + @Test + fun `get getConversationRate with all parameters`() = runTest { + client.runTest( + call = { + getConversationRate( + index = "index", + startDate = "1999-09-19", + endDate = "2001-01-01", + tags = "tag", + ) + }, + intercept = { + assertEquals("/2/conversions/conversionRate".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + // getNoClickRate + + @Test + fun `get getNoClickRate with minimal parameters`() = runTest { + client.runTest( + call = { + getNoClickRate( + index = "index", + ) + }, + intercept = { + assertEquals("/2/searches/noClickRate".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"index":"index"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + @Test + fun `get getNoClickRate with all parameters`() = runTest { + client.runTest( + call = { + getNoClickRate( + index = "index", + startDate = "1999-09-19", + endDate = "2001-01-01", + tags = "tag", + ) + }, + intercept = { + assertEquals("/2/searches/noClickRate".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + // getNoResultsRate + + @Test + fun `get getNoResultsRate with minimal parameters`() = runTest { + client.runTest( + call = { + getNoResultsRate( + index = "index", + ) + }, + intercept = { + assertEquals("/2/searches/noResultRate".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"index":"index"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + @Test + fun `get getNoResultsRate with all parameters`() = runTest { + client.runTest( + call = { + getNoResultsRate( + index = "index", + startDate = "1999-09-19", + endDate = "2001-01-01", + tags = "tag", + ) + }, + intercept = { + assertEquals("/2/searches/noResultRate".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + // getSearchesCount + + @Test + fun `get getSearchesCount with minimal parameters`() = runTest { + client.runTest( + call = { + getSearchesCount( + index = "index", + ) + }, + intercept = { + assertEquals("/2/searches/count".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"index":"index"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + @Test + fun `get getSearchesCount with all parameters`() = runTest { + client.runTest( + call = { + getSearchesCount( + index = "index", + startDate = "1999-09-19", + endDate = "2001-01-01", + tags = "tag", + ) + }, + intercept = { + assertEquals("/2/searches/count".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + // getSearchesNoClicks + + @Test + fun `get getSearchesNoClicks with minimal parameters`() = runTest { + client.runTest( + call = { + getSearchesNoClicks( + index = "index", + ) + }, + intercept = { + assertEquals("/2/searches/noClicks".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"index":"index"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + @Test + fun `get getSearchesNoClicks with all parameters`() = runTest { + client.runTest( + call = { + getSearchesNoClicks( + index = "index", + startDate = "1999-09-19", + endDate = "2001-01-01", + limit = 21, + offset = 42, + tags = "tag", + ) + }, + intercept = { + assertEquals("/2/searches/noClicks".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + // getSearchesNoResults + + @Test + fun `get getSearchesNoResults with minimal parameters`() = runTest { + client.runTest( + call = { + getSearchesNoResults( + index = "index", + ) + }, + intercept = { + assertEquals("/2/searches/noResults".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"index":"index"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + @Test + fun `get getSearchesNoResults with all parameters`() = runTest { + client.runTest( + call = { + getSearchesNoResults( + index = "index", + startDate = "1999-09-19", + endDate = "2001-01-01", + limit = 21, + offset = 42, + tags = "tag", + ) + }, + intercept = { + assertEquals("/2/searches/noResults".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + // getStatus + + @Test + fun `get getStatus with minimal parameters`() = runTest { + client.runTest( + call = { + getStatus( + index = "index", + ) + }, + intercept = { + assertEquals("/2/status".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"index":"index"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + // getTopCountries + + @Test + fun `get getTopCountries with minimal parameters`() = runTest { + client.runTest( + call = { + getTopCountries( + index = "index", + ) + }, + intercept = { + assertEquals("/2/countries".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"index":"index"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + @Test + fun `get getTopCountries with all parameters`() = runTest { + client.runTest( + call = { + getTopCountries( + index = "index", + startDate = "1999-09-19", + endDate = "2001-01-01", + limit = 21, + offset = 42, + tags = "tag", + ) + }, + intercept = { + assertEquals("/2/countries".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + // getTopFilterAttributes + + @Test + fun `get getTopFilterAttributes with minimal parameters`() = runTest { + client.runTest( + call = { + getTopFilterAttributes( + index = "index", + ) + }, + intercept = { + assertEquals("/2/filters".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"index":"index"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + @Test + fun `get getTopFilterAttributes with all parameters`() = runTest { + client.runTest( + call = { + getTopFilterAttributes( + index = "index", + search = "mySearch", + startDate = "1999-09-19", + endDate = "2001-01-01", + limit = 21, + offset = 42, + tags = "tag", + ) + }, + intercept = { + assertEquals("/2/filters".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"index":"index","search":"mySearch","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + // getTopFilterForAttribute + + @Test + fun `get getTopFilterForAttribute with minimal parameters`() = runTest { + client.runTest( + call = { + getTopFilterForAttribute( + attribute = "myAttribute", + index = "index", + ) + }, + intercept = { + assertEquals("/2/filters/myAttribute".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"index":"index"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + @Test + fun `get getTopFilterForAttribute with minimal parameters and multiple attributes`() = runTest { + client.runTest( + call = { + getTopFilterForAttribute( + attribute = "myAttribute1,myAttribute2", + index = "index", + ) + }, + intercept = { + assertEquals("/2/filters/myAttribute1%2CmyAttribute2".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"index":"index"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + @Test + fun `get getTopFilterForAttribute with all parameters`() = runTest { + client.runTest( + call = { + getTopFilterForAttribute( + attribute = "myAttribute", + index = "index", + search = "mySearch", + startDate = "1999-09-19", + endDate = "2001-01-01", + limit = 21, + offset = 42, + tags = "tag", + ) + }, + intercept = { + assertEquals("/2/filters/myAttribute".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"index":"index","search":"mySearch","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + @Test + fun `get getTopFilterForAttribute with all parameters and multiple attributes`() = runTest { + client.runTest( + call = { + getTopFilterForAttribute( + attribute = "myAttribute1,myAttribute2", + index = "index", + search = "mySearch", + startDate = "1999-09-19", + endDate = "2001-01-01", + limit = 21, + offset = 42, + tags = "tag", + ) + }, + intercept = { + assertEquals("/2/filters/myAttribute1%2CmyAttribute2".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"index":"index","search":"mySearch","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + // getTopFiltersNoResults + + @Test + fun `get getTopFiltersNoResults with minimal parameters`() = runTest { + client.runTest( + call = { + getTopFiltersNoResults( + index = "index", + ) + }, + intercept = { + assertEquals("/2/filters/noResults".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"index":"index"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + @Test + fun `get getTopFiltersNoResults with all parameters`() = runTest { + client.runTest( + call = { + getTopFiltersNoResults( + index = "index", + search = "mySearch", + startDate = "1999-09-19", + endDate = "2001-01-01", + limit = 21, + offset = 42, + tags = "tag", + ) + }, + intercept = { + assertEquals("/2/filters/noResults".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"index":"index","search":"mySearch","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + // getTopHits + + @Test + fun `get getTopHits with minimal parameters`() = runTest { + client.runTest( + call = { + getTopHits( + index = "index", + ) + }, + intercept = { + assertEquals("/2/hits".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"index":"index"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + @Test + fun `get getTopHits with all parameters`() = runTest { + client.runTest( + call = { + getTopHits( + index = "index", + search = "mySearch", + clickAnalytics = true, + startDate = "1999-09-19", + endDate = "2001-01-01", + limit = 21, + offset = 42, + tags = "tag", + ) + }, + intercept = { + assertEquals("/2/hits".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"index":"index","search":"mySearch","clickAnalytics":"true","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + // getTopSearches + + @Test + fun `get getTopSearches with minimal parameters`() = runTest { + client.runTest( + call = { + getTopSearches( + index = "index", + ) + }, + intercept = { + assertEquals("/2/searches".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"index":"index"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + @Test + fun `get getTopSearches with all parameters`() = runTest { + client.runTest( + call = { + getTopSearches( + index = "index", + clickAnalytics = true, + startDate = "1999-09-19", + endDate = "2001-01-01", + orderBy = OrderBy.entries.first { it.value == "searchCount" }, + direction = Direction.entries.first { it.value == "asc" }, + limit = 21, + offset = 42, + tags = "tag", + ) + }, + intercept = { + assertEquals("/2/searches".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"index":"index","clickAnalytics":"true","startDate":"1999-09-19","endDate":"2001-01-01","orderBy":"searchCount","direction":"asc","limit":"21","offset":"42","tags":"tag"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + // getUsersCount + + @Test + fun `get getUsersCount with minimal parameters`() = runTest { + client.runTest( + call = { + getUsersCount( + index = "index", + ) + }, + intercept = { + assertEquals("/2/users/count".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"index":"index"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + @Test + fun `get getUsersCount with all parameters`() = runTest { + client.runTest( + call = { + getUsersCount( + index = "index", + startDate = "1999-09-19", + endDate = "2001-01-01", + tags = "tag", + ) + }, + intercept = { + assertEquals("/2/users/count".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } +} diff --git a/tests/output/kotlin/src/commonTest/kotlin/com/algolia/requests/IngestionTest.kt b/tests/output/kotlin/src/commonTest/kotlin/com/algolia/requests/IngestionTest.kt new file mode 100644 index 0000000000..cab34de8d4 --- /dev/null +++ b/tests/output/kotlin/src/commonTest/kotlin/com/algolia/requests/IngestionTest.kt @@ -0,0 +1,1146 @@ +package com.algolia.methods.requests + +import com.algolia.client.api.IngestionClient +import com.algolia.client.configuration.* +import com.algolia.client.model.ingestion.* +import com.algolia.client.transport.* +import com.algolia.utils.* +import io.ktor.http.* +import kotlinx.coroutines.test.* +import kotlinx.serialization.json.* +import kotlin.test.* + +class IngestionTest { + + val client = IngestionClient( + appId = "appId", + apiKey = "apiKey", + region = "us", + ) + + // createAuthentication + + @Test + fun `createAuthenticationOAuth`() = runTest { + client.runTest( + call = { + createAuthentication( + authenticationCreate = AuthenticationCreate( + type = AuthenticationType.entries.first { it.value == "oauth" }, + name = "authName", + input = AuthOAuth( + url = "http://test.oauth", + clientId = "myID", + clientSecret = "mySecret", + ), + ), + ) + }, + intercept = { + assertEquals("/1/authentications".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"type":"oauth","name":"authName","input":{"url":"http://test.oauth","client_id":"myID","client_secret":"mySecret"}}""", it.body) + }, + ) + } + + @Test + fun `createAuthenticationAlgolia`() = runTest { + client.runTest( + call = { + createAuthentication( + authenticationCreate = AuthenticationCreate( + type = AuthenticationType.entries.first { it.value == "algolia" }, + name = "authName", + input = AuthAlgolia( + appID = "myappID", + apiKey = "randomApiKey", + ), + ), + ) + }, + intercept = { + assertEquals("/1/authentications".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"type":"algolia","name":"authName","input":{"appID":"myappID","apiKey":"randomApiKey"}}""", it.body) + }, + ) + } + + // createDestination + + @Test + fun `createDestination`() = runTest { + client.runTest( + call = { + createDestination( + destinationCreate = DestinationCreate( + type = DestinationType.entries.first { it.value == "search" }, + name = "destinationName", + input = DestinationIndexPrefix( + indexPrefix = "prefix_", + ), + authenticationID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", + ), + ) + }, + intercept = { + assertEquals("/1/destinations".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"type":"search","name":"destinationName","input":{"indexPrefix":"prefix_"},"authenticationID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}""", it.body) + }, + ) + } + + // createSource + + @Test + fun `createSource`() = runTest { + client.runTest( + call = { + createSource( + sourceCreate = SourceCreate( + type = SourceType.entries.first { it.value == "commercetools" }, + name = "sourceName", + input = SourceCommercetools( + storeKeys = listOf("myStore"), + locales = listOf("de"), + url = "http://commercetools.com", + projectKey = "keyID", + ), + authenticationID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", + ), + ) + }, + intercept = { + assertEquals("/1/sources".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"type":"commercetools","name":"sourceName","input":{"storeKeys":["myStore"],"locales":["de"],"url":"http://commercetools.com","projectKey":"keyID"},"authenticationID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}""", it.body) + }, + ) + } + + // createTask + + @Test + fun `createTaskOnDemand`() = runTest { + client.runTest( + call = { + createTask( + taskCreate = TaskCreate( + sourceID = "search", + destinationID = "destinationName", + trigger = OnDemandTriggerInput( + type = OnDemandTriggerType.entries.first { it.value == "onDemand" }, + ), + action = ActionType.entries.first { it.value == "replace" }, + ), + ) + }, + intercept = { + assertEquals("/1/tasks".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"sourceID":"search","destinationID":"destinationName","trigger":{"type":"onDemand"},"action":"replace"}""", it.body) + }, + ) + } + + @Test + fun `createTaskSchedule`() = runTest { + client.runTest( + call = { + createTask( + taskCreate = TaskCreate( + sourceID = "search", + destinationID = "destinationName", + trigger = ScheduleTriggerInput( + type = ScheduleTriggerType.entries.first { it.value == "schedule" }, + cron = "* * * * *", + ), + action = ActionType.entries.first { it.value == "replace" }, + ), + ) + }, + intercept = { + assertEquals("/1/tasks".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"sourceID":"search","destinationID":"destinationName","trigger":{"type":"schedule","cron":"* * * * *"},"action":"replace"}""", it.body) + }, + ) + } + + @Test + fun `createTaskSubscription`() = runTest { + client.runTest( + call = { + createTask( + taskCreate = TaskCreate( + sourceID = "search", + destinationID = "destinationName", + trigger = OnDemandTriggerInput( + type = OnDemandTriggerType.entries.first { it.value == "onDemand" }, + ), + action = ActionType.entries.first { it.value == "replace" }, + ), + ) + }, + intercept = { + assertEquals("/1/tasks".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"sourceID":"search","destinationID":"destinationName","trigger":{"type":"onDemand"},"action":"replace"}""", it.body) + }, + ) + } + + // customDelete + + @Test + fun `allow del method for a custom path with minimal parameters`() = runTest { + client.runTest( + call = { + customDelete( + path = "/test/minimal", + ) + }, + intercept = { + assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("DELETE"), it.method) + assertNoBody(it.body) + }, + ) + } + + @Test + fun `allow del method for a custom path with all parameters`() = runTest { + client.runTest( + call = { + customDelete( + path = "/test/all", + parameters = mapOf("query" to "parameters"), + ) + }, + intercept = { + assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("DELETE"), it.method) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + // customGet + + @Test + fun `allow get method for a custom path with minimal parameters`() = runTest { + client.runTest( + call = { + customGet( + path = "/test/minimal", + ) + }, + intercept = { + assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + @Test + fun `allow get method for a custom path with all parameters`() = runTest { + client.runTest( + call = { + customGet( + path = "/test/all", + parameters = mapOf("query" to "parameters"), + ) + }, + intercept = { + assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + // customPost + + @Test + fun `allow post method for a custom path with minimal parameters`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/minimal", + ) + }, + intercept = { + assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{}""", it.body) + }, + ) + } + + @Test + fun `allow post method for a custom path with all parameters`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/all", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "body", + JsonPrimitive("parameters"), + ) + }, + ) + }, + intercept = { + assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertJsonBody("""{"body":"parameters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions can override default query parameters`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("query", "myQueryParameter") + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"myQueryParameter"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions merges query parameters with default ones`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("query2", "myQueryParameter") + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","query2":"myQueryParameter"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions can override default headers`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + headers = buildMap { + put("x-algolia-api-key", "myApiKey") + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"x-algolia-api-key":"myApiKey"}""", it.headers) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions merges headers with default ones`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + headers = buildMap { + put("x-algolia-api-key", "myApiKey") + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"x-algolia-api-key":"myApiKey"}""", it.headers) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions queryParameters accepts booleans`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("isItWorking", true) + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","isItWorking":"true"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions queryParameters accepts integers`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("myParam", 2) + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","myParam":"2"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions queryParameters accepts list of string`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("myParam", listOf("c", "d")) + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","myParam":"c,d"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions queryParameters accepts list of booleans`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("myParam", listOf(true, true, false)) + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","myParam":"true,true,false"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions queryParameters accepts list of integers`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("myParam", listOf(1, 2)) + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","myParam":"1,2"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + // customPut + + @Test + fun `allow put method for a custom path with minimal parameters`() = runTest { + client.runTest( + call = { + customPut( + path = "/test/minimal", + ) + }, + intercept = { + assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("PUT"), it.method) + assertJsonBody("""{}""", it.body) + }, + ) + } + + @Test + fun `allow put method for a custom path with all parameters`() = runTest { + client.runTest( + call = { + customPut( + path = "/test/all", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "body", + JsonPrimitive("parameters"), + ) + }, + ) + }, + intercept = { + assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("PUT"), it.method) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertJsonBody("""{"body":"parameters"}""", it.body) + }, + ) + } + + // deleteAuthentication + + @Test + fun `deleteAuthentication`() = runTest { + client.runTest( + call = { + deleteAuthentication( + authenticationID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", + ) + }, + intercept = { + assertEquals("/1/authentications/6c02aeb1-775e-418e-870b-1faccd4b2c0f".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("DELETE"), it.method) + assertNoBody(it.body) + }, + ) + } + + // deleteDestination + + @Test + fun `deleteDestination`() = runTest { + client.runTest( + call = { + deleteDestination( + destinationID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", + ) + }, + intercept = { + assertEquals("/1/destinations/6c02aeb1-775e-418e-870b-1faccd4b2c0f".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("DELETE"), it.method) + assertNoBody(it.body) + }, + ) + } + + // deleteSource + + @Test + fun `deleteSource`() = runTest { + client.runTest( + call = { + deleteSource( + sourceID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", + ) + }, + intercept = { + assertEquals("/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("DELETE"), it.method) + assertNoBody(it.body) + }, + ) + } + + // deleteTask + + @Test + fun `deleteTask`() = runTest { + client.runTest( + call = { + deleteTask( + taskID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", + ) + }, + intercept = { + assertEquals("/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("DELETE"), it.method) + assertNoBody(it.body) + }, + ) + } + + // disableTask + + @Test + fun `disableTask`() = runTest { + client.runTest( + call = { + disableTask( + taskID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", + ) + }, + intercept = { + assertEquals("/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f/disable".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("PUT"), it.method) + assertEmptyBody(it.body) + }, + ) + } + + // enableTask + + @Test + fun `enableTask`() = runTest { + client.runTest( + call = { + enableTask( + taskID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", + ) + }, + intercept = { + assertEquals("/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f/enable".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("PUT"), it.method) + assertEmptyBody(it.body) + }, + ) + } + + // getAuthentication + + @Test + fun `getAuthentication`() = runTest { + client.runTest( + call = { + getAuthentication( + authenticationID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", + ) + }, + intercept = { + assertEquals("/1/authentications/6c02aeb1-775e-418e-870b-1faccd4b2c0f".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + // getAuthentications + + @Test + fun `getAuthentications`() = runTest { + client.runTest( + call = { + getAuthentications() + }, + intercept = { + assertEquals("/1/authentications".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + // getDestination + + @Test + fun `getDestination`() = runTest { + client.runTest( + call = { + getDestination( + destinationID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", + ) + }, + intercept = { + assertEquals("/1/destinations/6c02aeb1-775e-418e-870b-1faccd4b2c0f".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + // getDestinations + + @Test + fun `getDestinations`() = runTest { + client.runTest( + call = { + getDestinations() + }, + intercept = { + assertEquals("/1/destinations".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + // getDockerSourceStreams + + @Test + fun `getDockerSourceStreams`() = runTest { + client.runTest( + call = { + getDockerSourceStreams( + sourceID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", + ) + }, + intercept = { + assertEquals("/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f/discover".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + // getEvent + + @Test + fun `getEvent`() = runTest { + client.runTest( + call = { + getEvent( + runID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", + eventID = "6c02aeb1-775e-418e-870b-1faccd4b2c0c", + ) + }, + intercept = { + assertEquals("/1/runs/6c02aeb1-775e-418e-870b-1faccd4b2c0f/events/6c02aeb1-775e-418e-870b-1faccd4b2c0c".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + // getEvents + + @Test + fun `getEvents`() = runTest { + client.runTest( + call = { + getEvents( + runID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", + ) + }, + intercept = { + assertEquals("/1/runs/6c02aeb1-775e-418e-870b-1faccd4b2c0f/events".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + // getRun + + @Test + fun `getRun`() = runTest { + client.runTest( + call = { + getRun( + runID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", + ) + }, + intercept = { + assertEquals("/1/runs/6c02aeb1-775e-418e-870b-1faccd4b2c0f".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + // getRuns + + @Test + fun `getRuns`() = runTest { + client.runTest( + call = { + getRuns() + }, + intercept = { + assertEquals("/1/runs".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + // getSource + + @Test + fun `getSource`() = runTest { + client.runTest( + call = { + getSource( + sourceID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", + ) + }, + intercept = { + assertEquals("/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + // getSources + + @Test + fun `getSources`() = runTest { + client.runTest( + call = { + getSources() + }, + intercept = { + assertEquals("/1/sources".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + // getTask + + @Test + fun `getTask`() = runTest { + client.runTest( + call = { + getTask( + taskID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", + ) + }, + intercept = { + assertEquals("/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + // getTasks + + @Test + fun `getTasks`() = runTest { + client.runTest( + call = { + getTasks() + }, + intercept = { + assertEquals("/1/tasks".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + // runTask + + @Test + fun `runTask`() = runTest { + client.runTest( + call = { + runTask( + taskID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", + ) + }, + intercept = { + assertEquals("/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f/run".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertEmptyBody(it.body) + }, + ) + } + + // searchAuthentications + + @Test + fun `searchAuthentications`() = runTest { + client.runTest( + call = { + searchAuthentications( + authenticationSearch = AuthenticationSearch( + authenticationIDs = listOf("6c02aeb1-775e-418e-870b-1faccd4b2c0f", "947ac9c4-7e58-4c87-b1e7-14a68e99699a"), + ), + ) + }, + intercept = { + assertEquals("/1/authentications/search".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"authenticationIDs":["6c02aeb1-775e-418e-870b-1faccd4b2c0f","947ac9c4-7e58-4c87-b1e7-14a68e99699a"]}""", it.body) + }, + ) + } + + // searchDestinations + + @Test + fun `searchDestinations`() = runTest { + client.runTest( + call = { + searchDestinations( + destinationSearch = DestinationSearch( + destinationIDs = listOf("6c02aeb1-775e-418e-870b-1faccd4b2c0f", "947ac9c4-7e58-4c87-b1e7-14a68e99699a"), + ), + ) + }, + intercept = { + assertEquals("/1/destinations/search".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"destinationIDs":["6c02aeb1-775e-418e-870b-1faccd4b2c0f","947ac9c4-7e58-4c87-b1e7-14a68e99699a"]}""", it.body) + }, + ) + } + + // searchSources + + @Test + fun `searchSources`() = runTest { + client.runTest( + call = { + searchSources( + sourceSearch = SourceSearch( + sourceIDs = listOf("6c02aeb1-775e-418e-870b-1faccd4b2c0f", "947ac9c4-7e58-4c87-b1e7-14a68e99699a"), + ), + ) + }, + intercept = { + assertEquals("/1/sources/search".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"sourceIDs":["6c02aeb1-775e-418e-870b-1faccd4b2c0f","947ac9c4-7e58-4c87-b1e7-14a68e99699a"]}""", it.body) + }, + ) + } + + // searchTasks + + @Test + fun `searchTasks`() = runTest { + client.runTest( + call = { + searchTasks( + taskSearch = TaskSearch( + taskIDs = listOf("6c02aeb1-775e-418e-870b-1faccd4b2c0f", "947ac9c4-7e58-4c87-b1e7-14a68e99699a"), + ), + ) + }, + intercept = { + assertEquals("/1/tasks/search".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"taskIDs":["6c02aeb1-775e-418e-870b-1faccd4b2c0f","947ac9c4-7e58-4c87-b1e7-14a68e99699a"]}""", it.body) + }, + ) + } + + // triggerDockerSourceDiscover + + @Test + fun `triggerDockerSourceDiscover`() = runTest { + client.runTest( + call = { + triggerDockerSourceDiscover( + sourceID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", + ) + }, + intercept = { + assertEquals("/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f/discover".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertEmptyBody(it.body) + }, + ) + } + + // updateAuthentication + + @Test + fun `updateAuthentication`() = runTest { + client.runTest( + call = { + updateAuthentication( + authenticationID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", + authenticationUpdate = AuthenticationUpdate( + name = "newName", + ), + ) + }, + intercept = { + assertEquals("/1/authentications/6c02aeb1-775e-418e-870b-1faccd4b2c0f".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("PATCH"), it.method) + assertJsonBody("""{"name":"newName"}""", it.body) + }, + ) + } + + // updateDestination + + @Test + fun `updateDestination`() = runTest { + client.runTest( + call = { + updateDestination( + destinationID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", + destinationUpdate = DestinationUpdate( + name = "newName", + ), + ) + }, + intercept = { + assertEquals("/1/destinations/6c02aeb1-775e-418e-870b-1faccd4b2c0f".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("PATCH"), it.method) + assertJsonBody("""{"name":"newName"}""", it.body) + }, + ) + } + + // updateSource + + @Test + fun `updateSource`() = runTest { + client.runTest( + call = { + updateSource( + sourceID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", + sourceUpdate = SourceUpdate( + name = "newName", + ), + ) + }, + intercept = { + assertEquals("/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("PATCH"), it.method) + assertJsonBody("""{"name":"newName"}""", it.body) + }, + ) + } + + // updateTask + + @Test + fun `updateTask`() = runTest { + client.runTest( + call = { + updateTask( + taskID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", + taskUpdate = TaskUpdate( + enabled = false, + ), + ) + }, + intercept = { + assertEquals("/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("PATCH"), it.method) + assertJsonBody("""{"enabled":false}""", it.body) + }, + ) + } +} diff --git a/tests/output/kotlin/src/commonTest/kotlin/com/algolia/requests/InsightsTest.kt b/tests/output/kotlin/src/commonTest/kotlin/com/algolia/requests/InsightsTest.kt new file mode 100644 index 0000000000..dd3d850627 --- /dev/null +++ b/tests/output/kotlin/src/commonTest/kotlin/com/algolia/requests/InsightsTest.kt @@ -0,0 +1,609 @@ +package com.algolia.methods.requests + +import com.algolia.client.api.InsightsClient +import com.algolia.client.configuration.* +import com.algolia.client.model.insights.* +import com.algolia.client.transport.* +import com.algolia.utils.* +import io.ktor.http.* +import kotlinx.coroutines.test.* +import kotlinx.serialization.json.* +import kotlin.test.* + +class InsightsTest { + + val client = InsightsClient( + appId = "appId", + apiKey = "apiKey", + region = "us", + ) + + // customDelete + + @Test + fun `allow del method for a custom path with minimal parameters`() = runTest { + client.runTest( + call = { + customDelete( + path = "/test/minimal", + ) + }, + intercept = { + assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("DELETE"), it.method) + assertNoBody(it.body) + }, + ) + } + + @Test + fun `allow del method for a custom path with all parameters`() = runTest { + client.runTest( + call = { + customDelete( + path = "/test/all", + parameters = mapOf("query" to "parameters"), + ) + }, + intercept = { + assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("DELETE"), it.method) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + // customGet + + @Test + fun `allow get method for a custom path with minimal parameters`() = runTest { + client.runTest( + call = { + customGet( + path = "/test/minimal", + ) + }, + intercept = { + assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + @Test + fun `allow get method for a custom path with all parameters`() = runTest { + client.runTest( + call = { + customGet( + path = "/test/all", + parameters = mapOf("query" to "parameters"), + ) + }, + intercept = { + assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + // customPost + + @Test + fun `allow post method for a custom path with minimal parameters`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/minimal", + ) + }, + intercept = { + assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{}""", it.body) + }, + ) + } + + @Test + fun `allow post method for a custom path with all parameters`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/all", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "body", + JsonPrimitive("parameters"), + ) + }, + ) + }, + intercept = { + assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertJsonBody("""{"body":"parameters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions can override default query parameters`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("query", "myQueryParameter") + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"myQueryParameter"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions merges query parameters with default ones`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("query2", "myQueryParameter") + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","query2":"myQueryParameter"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions can override default headers`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + headers = buildMap { + put("x-algolia-api-key", "myApiKey") + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"x-algolia-api-key":"myApiKey"}""", it.headers) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions merges headers with default ones`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + headers = buildMap { + put("x-algolia-api-key", "myApiKey") + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"x-algolia-api-key":"myApiKey"}""", it.headers) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions queryParameters accepts booleans`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("isItWorking", true) + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","isItWorking":"true"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions queryParameters accepts integers`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("myParam", 2) + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","myParam":"2"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions queryParameters accepts list of string`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("myParam", listOf("c", "d")) + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","myParam":"c,d"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions queryParameters accepts list of booleans`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("myParam", listOf(true, true, false)) + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","myParam":"true,true,false"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions queryParameters accepts list of integers`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("myParam", listOf(1, 2)) + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","myParam":"1,2"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + // customPut + + @Test + fun `allow put method for a custom path with minimal parameters`() = runTest { + client.runTest( + call = { + customPut( + path = "/test/minimal", + ) + }, + intercept = { + assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("PUT"), it.method) + assertJsonBody("""{}""", it.body) + }, + ) + } + + @Test + fun `allow put method for a custom path with all parameters`() = runTest { + client.runTest( + call = { + customPut( + path = "/test/all", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "body", + JsonPrimitive("parameters"), + ) + }, + ) + }, + intercept = { + assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("PUT"), it.method) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertJsonBody("""{"body":"parameters"}""", it.body) + }, + ) + } + + // pushEvents + + @Test + fun `pushEvents0`() = runTest { + client.runTest( + call = { + pushEvents( + insightsEvents = InsightsEvents( + events = listOf( + ClickedObjectIDsAfterSearch( + eventType = ClickEvent.entries.first { it.value == "click" }, + eventName = "Product Clicked", + index = "products", + userToken = "user-123456", + authenticatedUserToken = "user-123456", + timestamp = 1641290601962L, + objectIDs = listOf("9780545139700", "9780439784542"), + queryID = "43b15df305339e827f0ac0bdc5ebcaa7", + positions = listOf(7, 6), + ), + ), + ), + ) + }, + intercept = { + assertEquals("/1/events".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"events":[{"eventType":"click","eventName":"Product Clicked","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"queryID":"43b15df305339e827f0ac0bdc5ebcaa7","positions":[7,6]}]}""", it.body) + }, + ) + } + + @Test + fun `Many events type`() = runTest { + client.runTest( + call = { + pushEvents( + insightsEvents = InsightsEvents( + events = listOf( + ConvertedObjectIDsAfterSearch( + eventType = ConversionEvent.entries.first { it.value == "conversion" }, + eventName = "Product Purchased", + index = "products", + userToken = "user-123456", + authenticatedUserToken = "user-123456", + timestamp = 1641290601962L, + objectIDs = listOf("9780545139700", "9780439784542"), + queryID = "43b15df305339e827f0ac0bdc5ebcaa7", + ), + ViewedObjectIDs( + eventType = ViewEvent.entries.first { it.value == "view" }, + eventName = "Product Detail Page Viewed", + index = "products", + userToken = "user-123456", + authenticatedUserToken = "user-123456", + timestamp = 1641290601962L, + objectIDs = listOf("9780545139700", "9780439784542"), + ), + ), + ), + ) + }, + intercept = { + assertEquals("/1/events".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"events":[{"eventType":"conversion","eventName":"Product Purchased","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"queryID":"43b15df305339e827f0ac0bdc5ebcaa7"},{"eventType":"view","eventName":"Product Detail Page Viewed","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"]}]}""", it.body) + }, + ) + } + + @Test + fun `ConvertedObjectIDsAfterSearch`() = runTest { + client.runTest( + call = { + pushEvents( + insightsEvents = InsightsEvents( + events = listOf( + ConvertedObjectIDsAfterSearch( + eventType = ConversionEvent.entries.first { it.value == "conversion" }, + eventName = "Product Purchased", + index = "products", + userToken = "user-123456", + authenticatedUserToken = "user-123456", + timestamp = 1641290601962L, + objectIDs = listOf("9780545139700", "9780439784542"), + queryID = "43b15df305339e827f0ac0bdc5ebcaa7", + ), + ), + ), + ) + }, + intercept = { + assertEquals("/1/events".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"events":[{"eventType":"conversion","eventName":"Product Purchased","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"queryID":"43b15df305339e827f0ac0bdc5ebcaa7"}]}""", it.body) + }, + ) + } + + @Test + fun `ViewedObjectIDs`() = runTest { + client.runTest( + call = { + pushEvents( + insightsEvents = InsightsEvents( + events = listOf( + ViewedObjectIDs( + eventType = ViewEvent.entries.first { it.value == "view" }, + eventName = "Product Detail Page Viewed", + index = "products", + userToken = "user-123456", + authenticatedUserToken = "user-123456", + timestamp = 1641290601962L, + objectIDs = listOf("9780545139700", "9780439784542"), + ), + ), + ), + ) + }, + intercept = { + assertEquals("/1/events".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"events":[{"eventType":"view","eventName":"Product Detail Page Viewed","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"]}]}""", it.body) + }, + ) + } + + @Test + fun `AddedToCartObjectIDs`() = runTest { + client.runTest( + call = { + pushEvents( + insightsEvents = InsightsEvents( + events = listOf( + AddedToCartObjectIDsAfterSearch( + eventType = ConversionEvent.entries.first { it.value == "conversion" }, + eventSubtype = AddToCartEvent.entries.first { it.value == "addToCart" }, + eventName = "Product Added To Cart", + index = "products", + queryID = "43b15df305339e827f0ac0bdc5ebcaa7", + userToken = "user-123456", + authenticatedUserToken = "user-123456", + timestamp = 1641290601962L, + objectIDs = listOf("9780545139700", "9780439784542"), + objectData = listOf( + ObjectDataAfterSearch( + price = Price.of(19.99), + quantity = 10, + discount = Discount.of(2.5), + ), + ObjectDataAfterSearch( + price = Price.of("8$"), + quantity = 7, + discount = Discount.of("30%"), + ), + ), + currency = "USD", + ), + ), + ), + ) + }, + intercept = { + assertEquals("/1/events".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"events":[{"eventType":"conversion","eventSubtype":"addToCart","eventName":"Product Added To Cart","index":"products","queryID":"43b15df305339e827f0ac0bdc5ebcaa7","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"objectData":[{"price":19.99,"quantity":10,"discount":2.5},{"price":"8$","quantity":7,"discount":"30%"}],"currency":"USD"}]}""", it.body) + }, + ) + } +} diff --git a/tests/output/kotlin/src/commonTest/kotlin/com/algolia/requests/MonitoringTest.kt b/tests/output/kotlin/src/commonTest/kotlin/com/algolia/requests/MonitoringTest.kt new file mode 100644 index 0000000000..a423b0c54c --- /dev/null +++ b/tests/output/kotlin/src/commonTest/kotlin/com/algolia/requests/MonitoringTest.kt @@ -0,0 +1,595 @@ +package com.algolia.methods.requests + +import com.algolia.client.api.MonitoringClient +import com.algolia.client.configuration.* +import com.algolia.client.model.monitoring.* +import com.algolia.client.transport.* +import com.algolia.utils.* +import io.ktor.http.* +import kotlinx.coroutines.test.* +import kotlinx.serialization.json.* +import kotlin.test.* + +class MonitoringTest { + + val client = MonitoringClient( + appId = "appId", + apiKey = "apiKey", + ) + + // customDelete + + @Test + fun `allow del method for a custom path with minimal parameters`() = runTest { + client.runTest( + call = { + customDelete( + path = "/test/minimal", + ) + }, + intercept = { + assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("DELETE"), it.method) + assertNoBody(it.body) + }, + ) + } + + @Test + fun `allow del method for a custom path with all parameters`() = runTest { + client.runTest( + call = { + customDelete( + path = "/test/all", + parameters = mapOf("query" to "parameters"), + ) + }, + intercept = { + assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("DELETE"), it.method) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + // customGet + + @Test + fun `allow get method for a custom path with minimal parameters`() = runTest { + client.runTest( + call = { + customGet( + path = "/test/minimal", + ) + }, + intercept = { + assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + @Test + fun `allow get method for a custom path with all parameters`() = runTest { + client.runTest( + call = { + customGet( + path = "/test/all", + parameters = mapOf("query" to "parameters"), + ) + }, + intercept = { + assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + // customPost + + @Test + fun `allow post method for a custom path with minimal parameters`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/minimal", + ) + }, + intercept = { + assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{}""", it.body) + }, + ) + } + + @Test + fun `allow post method for a custom path with all parameters`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/all", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "body", + JsonPrimitive("parameters"), + ) + }, + ) + }, + intercept = { + assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertJsonBody("""{"body":"parameters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions can override default query parameters`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("query", "myQueryParameter") + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"myQueryParameter"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions merges query parameters with default ones`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("query2", "myQueryParameter") + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","query2":"myQueryParameter"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions can override default headers`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + headers = buildMap { + put("x-algolia-api-key", "myApiKey") + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"x-algolia-api-key":"myApiKey"}""", it.headers) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions merges headers with default ones`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + headers = buildMap { + put("x-algolia-api-key", "myApiKey") + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"x-algolia-api-key":"myApiKey"}""", it.headers) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions queryParameters accepts booleans`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("isItWorking", true) + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","isItWorking":"true"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions queryParameters accepts integers`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("myParam", 2) + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","myParam":"2"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions queryParameters accepts list of string`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("myParam", listOf("c", "d")) + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","myParam":"c,d"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions queryParameters accepts list of booleans`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("myParam", listOf(true, true, false)) + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","myParam":"true,true,false"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions queryParameters accepts list of integers`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("myParam", listOf(1, 2)) + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","myParam":"1,2"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + // customPut + + @Test + fun `allow put method for a custom path with minimal parameters`() = runTest { + client.runTest( + call = { + customPut( + path = "/test/minimal", + ) + }, + intercept = { + assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("PUT"), it.method) + assertJsonBody("""{}""", it.body) + }, + ) + } + + @Test + fun `allow put method for a custom path with all parameters`() = runTest { + client.runTest( + call = { + customPut( + path = "/test/all", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "body", + JsonPrimitive("parameters"), + ) + }, + ) + }, + intercept = { + assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("PUT"), it.method) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertJsonBody("""{"body":"parameters"}""", it.body) + }, + ) + } + + // getClusterIncidents + + @Test + fun `getClusterIncidents`() = runTest { + client.runTest( + call = { + getClusterIncidents( + clusters = "c1-de", + ) + }, + intercept = { + assertEquals("/1/incidents/c1-de".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + // getClusterStatus + + @Test + fun `getClusterStatus`() = runTest { + client.runTest( + call = { + getClusterStatus( + clusters = "c1-de", + ) + }, + intercept = { + assertEquals("/1/status/c1-de".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + // getIncidents + + @Test + fun `getIncidents`() = runTest { + client.runTest( + call = { + getIncidents() + }, + intercept = { + assertEquals("/1/incidents".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + // getIndexingTime + + @Test + fun `getIndexingTime`() = runTest { + client.runTest( + call = { + getIndexingTime( + clusters = "c1-de", + ) + }, + intercept = { + assertEquals("/1/indexing/c1-de".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + // getInventory + + @Test + fun `getInventory`() = runTest { + client.runTest( + call = { + getInventory() + }, + intercept = { + assertEquals("/1/inventory/servers".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + // getLatency + + @Test + fun `getLatency`() = runTest { + client.runTest( + call = { + getLatency( + clusters = "c1-de", + ) + }, + intercept = { + assertEquals("/1/latency/c1-de".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + // getMetrics + + @Test + fun `getMetrics`() = runTest { + client.runTest( + call = { + getMetrics( + metric = Metric.entries.first { it.value == "avg_build_time" }, + period = Period.entries.first { it.value == "minute" }, + ) + }, + intercept = { + assertEquals("/1/infrastructure/avg_build_time/period/minute".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + // getReachability + + @Test + fun `getReachability`() = runTest { + client.runTest( + call = { + getReachability( + clusters = "c1-de", + ) + }, + intercept = { + assertEquals("/1/reachability/c1-de/probes".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + // getStatus + + @Test + fun `getStatus`() = runTest { + client.runTest( + call = { + getStatus() + }, + intercept = { + assertEquals("/1/status".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } +} diff --git a/tests/output/kotlin/src/commonTest/kotlin/com/algolia/requests/PersonalizationTest.kt b/tests/output/kotlin/src/commonTest/kotlin/com/algolia/requests/PersonalizationTest.kt new file mode 100644 index 0000000000..d4eb53d53d --- /dev/null +++ b/tests/output/kotlin/src/commonTest/kotlin/com/algolia/requests/PersonalizationTest.kt @@ -0,0 +1,524 @@ +package com.algolia.methods.requests + +import com.algolia.client.api.PersonalizationClient +import com.algolia.client.configuration.* +import com.algolia.client.model.personalization.* +import com.algolia.client.transport.* +import com.algolia.utils.* +import io.ktor.http.* +import kotlinx.coroutines.test.* +import kotlinx.serialization.json.* +import kotlin.test.* + +class PersonalizationTest { + + val client = PersonalizationClient( + appId = "appId", + apiKey = "apiKey", + region = "us", + ) + + // customDelete + + @Test + fun `allow del method for a custom path with minimal parameters`() = runTest { + client.runTest( + call = { + customDelete( + path = "/test/minimal", + ) + }, + intercept = { + assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("DELETE"), it.method) + assertNoBody(it.body) + }, + ) + } + + @Test + fun `allow del method for a custom path with all parameters`() = runTest { + client.runTest( + call = { + customDelete( + path = "/test/all", + parameters = mapOf("query" to "parameters"), + ) + }, + intercept = { + assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("DELETE"), it.method) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + // customGet + + @Test + fun `allow get method for a custom path with minimal parameters`() = runTest { + client.runTest( + call = { + customGet( + path = "/test/minimal", + ) + }, + intercept = { + assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + @Test + fun `allow get method for a custom path with all parameters`() = runTest { + client.runTest( + call = { + customGet( + path = "/test/all", + parameters = mapOf("query" to "parameters"), + ) + }, + intercept = { + assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + // customPost + + @Test + fun `allow post method for a custom path with minimal parameters`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/minimal", + ) + }, + intercept = { + assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{}""", it.body) + }, + ) + } + + @Test + fun `allow post method for a custom path with all parameters`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/all", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "body", + JsonPrimitive("parameters"), + ) + }, + ) + }, + intercept = { + assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertJsonBody("""{"body":"parameters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions can override default query parameters`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("query", "myQueryParameter") + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"myQueryParameter"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions merges query parameters with default ones`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("query2", "myQueryParameter") + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","query2":"myQueryParameter"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions can override default headers`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + headers = buildMap { + put("x-algolia-api-key", "myApiKey") + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"x-algolia-api-key":"myApiKey"}""", it.headers) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions merges headers with default ones`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + headers = buildMap { + put("x-algolia-api-key", "myApiKey") + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"x-algolia-api-key":"myApiKey"}""", it.headers) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions queryParameters accepts booleans`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("isItWorking", true) + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","isItWorking":"true"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions queryParameters accepts integers`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("myParam", 2) + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","myParam":"2"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions queryParameters accepts list of string`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("myParam", listOf("c", "d")) + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","myParam":"c,d"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions queryParameters accepts list of booleans`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("myParam", listOf(true, true, false)) + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","myParam":"true,true,false"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions queryParameters accepts list of integers`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("myParam", listOf(1, 2)) + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","myParam":"1,2"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + // customPut + + @Test + fun `allow put method for a custom path with minimal parameters`() = runTest { + client.runTest( + call = { + customPut( + path = "/test/minimal", + ) + }, + intercept = { + assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("PUT"), it.method) + assertJsonBody("""{}""", it.body) + }, + ) + } + + @Test + fun `allow put method for a custom path with all parameters`() = runTest { + client.runTest( + call = { + customPut( + path = "/test/all", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "body", + JsonPrimitive("parameters"), + ) + }, + ) + }, + intercept = { + assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("PUT"), it.method) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertJsonBody("""{"body":"parameters"}""", it.body) + }, + ) + } + + // deleteUserProfile + + @Test + fun `delete deleteUserProfile`() = runTest { + client.runTest( + call = { + deleteUserProfile( + userToken = "UserToken", + ) + }, + intercept = { + assertEquals("/1/profiles/UserToken".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("DELETE"), it.method) + assertNoBody(it.body) + }, + ) + } + + // getPersonalizationStrategy + + @Test + fun `get getPersonalizationStrategy`() = runTest { + client.runTest( + call = { + getPersonalizationStrategy() + }, + intercept = { + assertEquals("/1/strategies/personalization".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + // getUserTokenProfile + + @Test + fun `get getUserTokenProfile`() = runTest { + client.runTest( + call = { + getUserTokenProfile( + userToken = "UserToken", + ) + }, + intercept = { + assertEquals("/1/profiles/personalization/UserToken".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + // setPersonalizationStrategy + + @Test + fun `set setPersonalizationStrategy`() = runTest { + client.runTest( + call = { + setPersonalizationStrategy( + personalizationStrategyParams = PersonalizationStrategyParams( + eventScoring = listOf( + EventScoring( + score = 42, + eventName = "Algolia", + eventType = "Event", + ), + ), + facetScoring = listOf( + FacetScoring( + score = 42, + facetName = "Event", + ), + ), + personalizationImpact = 42, + ), + ) + }, + intercept = { + assertEquals("/1/strategies/personalization".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"eventScoring":[{"score":42,"eventName":"Algolia","eventType":"Event"}],"facetScoring":[{"score":42,"facetName":"Event"}],"personalizationImpact":42}""", it.body) + }, + ) + } +} diff --git a/tests/output/kotlin/src/commonTest/kotlin/com/algolia/requests/QuerySuggestionsTest.kt b/tests/output/kotlin/src/commonTest/kotlin/com/algolia/requests/QuerySuggestionsTest.kt new file mode 100644 index 0000000000..011024c6d2 --- /dev/null +++ b/tests/output/kotlin/src/commonTest/kotlin/com/algolia/requests/QuerySuggestionsTest.kt @@ -0,0 +1,593 @@ +package com.algolia.methods.requests + +import com.algolia.client.api.QuerySuggestionsClient +import com.algolia.client.configuration.* +import com.algolia.client.model.querysuggestions.* +import com.algolia.client.transport.* +import com.algolia.utils.* +import io.ktor.http.* +import kotlinx.coroutines.test.* +import kotlinx.serialization.json.* +import kotlin.test.* + +class QuerySuggestionsTest { + + val client = QuerySuggestionsClient( + appId = "appId", + apiKey = "apiKey", + region = "us", + ) + + // createConfig + + @Test + fun `createConfig0`() = runTest { + client.runTest( + call = { + createConfig( + querySuggestionsConfigurationWithIndex = QuerySuggestionsConfigurationWithIndex( + indexName = "theIndexName", + sourceIndices = listOf( + SourceIndex( + indexName = "testIndex", + facets = listOf( + Facet( + attribute = "test", + ), + ), + generate = listOf(listOf("facetA", "facetB"), listOf("facetC")), + ), + ), + languages = Languages.of(listOf("french")), + exclude = listOf("test"), + ), + ) + }, + intercept = { + assertEquals("/1/configs".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"indexName":"theIndexName","sourceIndices":[{"indexName":"testIndex","facets":[{"attribute":"test"}],"generate":[["facetA","facetB"],["facetC"]]}],"languages":["french"],"exclude":["test"]}""", it.body) + }, + ) + } + + // customDelete + + @Test + fun `allow del method for a custom path with minimal parameters`() = runTest { + client.runTest( + call = { + customDelete( + path = "/test/minimal", + ) + }, + intercept = { + assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("DELETE"), it.method) + assertNoBody(it.body) + }, + ) + } + + @Test + fun `allow del method for a custom path with all parameters`() = runTest { + client.runTest( + call = { + customDelete( + path = "/test/all", + parameters = mapOf("query" to "parameters"), + ) + }, + intercept = { + assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("DELETE"), it.method) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + // customGet + + @Test + fun `allow get method for a custom path with minimal parameters`() = runTest { + client.runTest( + call = { + customGet( + path = "/test/minimal", + ) + }, + intercept = { + assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + @Test + fun `allow get method for a custom path with all parameters`() = runTest { + client.runTest( + call = { + customGet( + path = "/test/all", + parameters = mapOf("query" to "parameters"), + ) + }, + intercept = { + assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + // customPost + + @Test + fun `allow post method for a custom path with minimal parameters`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/minimal", + ) + }, + intercept = { + assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{}""", it.body) + }, + ) + } + + @Test + fun `allow post method for a custom path with all parameters`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/all", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "body", + JsonPrimitive("parameters"), + ) + }, + ) + }, + intercept = { + assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertJsonBody("""{"body":"parameters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions can override default query parameters`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("query", "myQueryParameter") + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"myQueryParameter"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions merges query parameters with default ones`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("query2", "myQueryParameter") + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","query2":"myQueryParameter"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions can override default headers`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + headers = buildMap { + put("x-algolia-api-key", "myApiKey") + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"x-algolia-api-key":"myApiKey"}""", it.headers) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions merges headers with default ones`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + headers = buildMap { + put("x-algolia-api-key", "myApiKey") + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"x-algolia-api-key":"myApiKey"}""", it.headers) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions queryParameters accepts booleans`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("isItWorking", true) + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","isItWorking":"true"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions queryParameters accepts integers`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("myParam", 2) + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","myParam":"2"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions queryParameters accepts list of string`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("myParam", listOf("c", "d")) + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","myParam":"c,d"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions queryParameters accepts list of booleans`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("myParam", listOf(true, true, false)) + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","myParam":"true,true,false"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions queryParameters accepts list of integers`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("myParam", listOf(1, 2)) + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","myParam":"1,2"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + // customPut + + @Test + fun `allow put method for a custom path with minimal parameters`() = runTest { + client.runTest( + call = { + customPut( + path = "/test/minimal", + ) + }, + intercept = { + assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("PUT"), it.method) + assertJsonBody("""{}""", it.body) + }, + ) + } + + @Test + fun `allow put method for a custom path with all parameters`() = runTest { + client.runTest( + call = { + customPut( + path = "/test/all", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "body", + JsonPrimitive("parameters"), + ) + }, + ) + }, + intercept = { + assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("PUT"), it.method) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertJsonBody("""{"body":"parameters"}""", it.body) + }, + ) + } + + // deleteConfig + + @Test + fun `deleteConfig0`() = runTest { + client.runTest( + call = { + deleteConfig( + indexName = "theIndexName", + ) + }, + intercept = { + assertEquals("/1/configs/theIndexName".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("DELETE"), it.method) + assertNoBody(it.body) + }, + ) + } + + // getAllConfigs + + @Test + fun `getAllConfigs0`() = runTest { + client.runTest( + call = { + getAllConfigs() + }, + intercept = { + assertEquals("/1/configs".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + // getConfig + + @Test + fun `getConfig0`() = runTest { + client.runTest( + call = { + getConfig( + indexName = "theIndexName", + ) + }, + intercept = { + assertEquals("/1/configs/theIndexName".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + // getConfigStatus + + @Test + fun `getConfigStatus0`() = runTest { + client.runTest( + call = { + getConfigStatus( + indexName = "theIndexName", + ) + }, + intercept = { + assertEquals("/1/configs/theIndexName/status".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + // getLogFile + + @Test + fun `getLogFile0`() = runTest { + client.runTest( + call = { + getLogFile( + indexName = "theIndexName", + ) + }, + intercept = { + assertEquals("/1/logs/theIndexName".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + // updateConfig + + @Test + fun `updateConfig0`() = runTest { + client.runTest( + call = { + updateConfig( + indexName = "theIndexName", + querySuggestionsConfiguration = QuerySuggestionsConfiguration( + sourceIndices = listOf( + SourceIndex( + indexName = "testIndex", + facets = listOf( + Facet( + attribute = "test", + ), + ), + generate = listOf(listOf("facetA", "facetB"), listOf("facetC")), + ), + ), + languages = Languages.of(listOf("french")), + exclude = listOf("test"), + ), + ) + }, + intercept = { + assertEquals("/1/configs/theIndexName".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("PUT"), it.method) + assertJsonBody("""{"sourceIndices":[{"indexName":"testIndex","facets":[{"attribute":"test"}],"generate":[["facetA","facetB"],["facetC"]]}],"languages":["french"],"exclude":["test"]}""", it.body) + }, + ) + } +} diff --git a/tests/output/kotlin/src/commonTest/kotlin/com/algolia/requests/RecommendTest.kt b/tests/output/kotlin/src/commonTest/kotlin/com/algolia/requests/RecommendTest.kt new file mode 100644 index 0000000000..8896429094 --- /dev/null +++ b/tests/output/kotlin/src/commonTest/kotlin/com/algolia/requests/RecommendTest.kt @@ -0,0 +1,742 @@ +package com.algolia.methods.requests + +import com.algolia.client.api.RecommendClient +import com.algolia.client.configuration.* +import com.algolia.client.model.recommend.* +import com.algolia.client.transport.* +import com.algolia.utils.* +import io.ktor.http.* +import kotlinx.coroutines.test.* +import kotlinx.serialization.json.* +import kotlin.test.* + +class RecommendTest { + + val client = RecommendClient( + appId = "appId", + apiKey = "apiKey", + ) + + // customDelete + + @Test + fun `allow del method for a custom path with minimal parameters`() = runTest { + client.runTest( + call = { + customDelete( + path = "/test/minimal", + ) + }, + intercept = { + assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("DELETE"), it.method) + assertNoBody(it.body) + }, + ) + } + + @Test + fun `allow del method for a custom path with all parameters`() = runTest { + client.runTest( + call = { + customDelete( + path = "/test/all", + parameters = mapOf("query" to "parameters"), + ) + }, + intercept = { + assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("DELETE"), it.method) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + // customGet + + @Test + fun `allow get method for a custom path with minimal parameters`() = runTest { + client.runTest( + call = { + customGet( + path = "/test/minimal", + ) + }, + intercept = { + assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + @Test + fun `allow get method for a custom path with all parameters`() = runTest { + client.runTest( + call = { + customGet( + path = "/test/all", + parameters = mapOf("query" to "parameters"), + ) + }, + intercept = { + assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + // customPost + + @Test + fun `allow post method for a custom path with minimal parameters`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/minimal", + ) + }, + intercept = { + assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{}""", it.body) + }, + ) + } + + @Test + fun `allow post method for a custom path with all parameters`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/all", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "body", + JsonPrimitive("parameters"), + ) + }, + ) + }, + intercept = { + assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertJsonBody("""{"body":"parameters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions can override default query parameters`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("query", "myQueryParameter") + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"myQueryParameter"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions merges query parameters with default ones`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("query2", "myQueryParameter") + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","query2":"myQueryParameter"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions can override default headers`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + headers = buildMap { + put("x-algolia-api-key", "myApiKey") + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"x-algolia-api-key":"myApiKey"}""", it.headers) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions merges headers with default ones`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + headers = buildMap { + put("x-algolia-api-key", "myApiKey") + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"x-algolia-api-key":"myApiKey"}""", it.headers) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions queryParameters accepts booleans`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("isItWorking", true) + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","isItWorking":"true"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions queryParameters accepts integers`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("myParam", 2) + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","myParam":"2"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions queryParameters accepts list of string`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("myParam", listOf("c", "d")) + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","myParam":"c,d"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions queryParameters accepts list of booleans`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("myParam", listOf(true, true, false)) + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","myParam":"true,true,false"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions queryParameters accepts list of integers`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("myParam", listOf(1, 2)) + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","myParam":"1,2"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + // customPut + + @Test + fun `allow put method for a custom path with minimal parameters`() = runTest { + client.runTest( + call = { + customPut( + path = "/test/minimal", + ) + }, + intercept = { + assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("PUT"), it.method) + assertJsonBody("""{}""", it.body) + }, + ) + } + + @Test + fun `allow put method for a custom path with all parameters`() = runTest { + client.runTest( + call = { + customPut( + path = "/test/all", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "body", + JsonPrimitive("parameters"), + ) + }, + ) + }, + intercept = { + assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("PUT"), it.method) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertJsonBody("""{"body":"parameters"}""", it.body) + }, + ) + } + + // deleteRecommendRule + + @Test + fun `deleteRecommendRule0`() = runTest { + client.runTest( + call = { + deleteRecommendRule( + indexName = "indexName", + model = RecommendModels.entries.first { it.value == "related-products" }, + objectID = "objectID", + ) + }, + intercept = { + assertEquals("/1/indexes/indexName/related-products/recommend/rules/objectID".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("DELETE"), it.method) + assertNoBody(it.body) + }, + ) + } + + // getRecommendRule + + @Test + fun `getRecommendRule0`() = runTest { + client.runTest( + call = { + getRecommendRule( + indexName = "indexName", + model = RecommendModels.entries.first { it.value == "related-products" }, + objectID = "objectID", + ) + }, + intercept = { + assertEquals("/1/indexes/indexName/related-products/recommend/rules/objectID".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + // getRecommendStatus + + @Test + fun `getRecommendStatus0`() = runTest { + client.runTest( + call = { + getRecommendStatus( + indexName = "indexName", + model = RecommendModels.entries.first { it.value == "related-products" }, + taskID = 12345L, + ) + }, + intercept = { + assertEquals("/1/indexes/indexName/related-products/task/12345".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + // getRecommendations + + @Test + fun `get recommendations for recommend model with minimal parameters`() = runTest { + client.runTest( + call = { + getRecommendations( + getRecommendationsParams = GetRecommendationsParams( + requests = listOf( + RecommendationsQuery( + indexName = "indexName", + objectID = "objectID", + model = RecommendationModels.entries.first { it.value == "related-products" }, + threshold = 42, + ), + ), + ), + ) + }, + intercept = { + assertEquals("/1/indexes/*/recommendations".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"requests":[{"indexName":"indexName","objectID":"objectID","model":"related-products","threshold":42}]}""", it.body) + }, + ) + } + + @Test + fun `get recommendations for recommend model with all parameters`() = runTest { + client.runTest( + call = { + getRecommendations( + getRecommendationsParams = GetRecommendationsParams( + requests = listOf( + RecommendationsQuery( + indexName = "indexName", + objectID = "objectID", + model = RecommendationModels.entries.first { it.value == "related-products" }, + threshold = 42, + maxRecommendations = 10, + queryParameters = SearchParamsObject( + query = "myQuery", + facetFilters = FacetFilters.of(listOf(MixedSearchFilters.of("query"))), + ), + fallbackParameters = SearchParamsObject( + query = "myQuery", + facetFilters = FacetFilters.of(listOf(MixedSearchFilters.of("fallback"))), + ), + ), + ), + ), + ) + }, + intercept = { + assertEquals("/1/indexes/*/recommendations".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"requests":[{"indexName":"indexName","objectID":"objectID","model":"related-products","threshold":42,"maxRecommendations":10,"queryParameters":{"query":"myQuery","facetFilters":["query"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback"]}}]}""", it.body) + }, + ) + } + + @Test + fun `get recommendations for trending model with minimal parameters`() = runTest { + client.runTest( + call = { + getRecommendations( + getRecommendationsParams = GetRecommendationsParams( + requests = listOf( + TrendingItemsQuery( + indexName = "indexName", + model = TrendingItemsModel.entries.first { it.value == "trending-items" }, + threshold = 42, + ), + ), + ), + ) + }, + intercept = { + assertEquals("/1/indexes/*/recommendations".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"requests":[{"indexName":"indexName","model":"trending-items","threshold":42}]}""", it.body) + }, + ) + } + + @Test + fun `get recommendations for trending model with all parameters`() = runTest { + client.runTest( + call = { + getRecommendations( + getRecommendationsParams = GetRecommendationsParams( + requests = listOf( + TrendingItemsQuery( + indexName = "indexName", + model = TrendingItemsModel.entries.first { it.value == "trending-items" }, + threshold = 42, + maxRecommendations = 10, + facetName = "myFacetName", + facetValue = "myFacetValue", + queryParameters = SearchParamsObject( + query = "myQuery", + facetFilters = FacetFilters.of(listOf(MixedSearchFilters.of("query"))), + ), + fallbackParameters = SearchParamsObject( + query = "myQuery", + facetFilters = FacetFilters.of(listOf(MixedSearchFilters.of("fallback"))), + ), + ), + ), + ), + ) + }, + intercept = { + assertEquals("/1/indexes/*/recommendations".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"requests":[{"indexName":"indexName","model":"trending-items","threshold":42,"maxRecommendations":10,"facetName":"myFacetName","facetValue":"myFacetValue","queryParameters":{"query":"myQuery","facetFilters":["query"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback"]}}]}""", it.body) + }, + ) + } + + @Test + fun `get multiple recommendations with minimal parameters`() = runTest { + client.runTest( + call = { + getRecommendations( + getRecommendationsParams = GetRecommendationsParams( + requests = listOf( + RecommendationsQuery( + indexName = "indexName1", + objectID = "objectID1", + model = RecommendationModels.entries.first { it.value == "related-products" }, + threshold = 21, + ), + RecommendationsQuery( + indexName = "indexName2", + objectID = "objectID2", + model = RecommendationModels.entries.first { it.value == "related-products" }, + threshold = 21, + ), + ), + ), + ) + }, + intercept = { + assertEquals("/1/indexes/*/recommendations".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"requests":[{"indexName":"indexName1","objectID":"objectID1","model":"related-products","threshold":21},{"indexName":"indexName2","objectID":"objectID2","model":"related-products","threshold":21}]}""", it.body) + }, + ) + } + + @Test + fun `get multiple recommendations with all parameters`() = runTest { + client.runTest( + call = { + getRecommendations( + getRecommendationsParams = GetRecommendationsParams( + requests = listOf( + RecommendationsQuery( + indexName = "indexName1", + objectID = "objectID1", + model = RecommendationModels.entries.first { it.value == "related-products" }, + threshold = 21, + maxRecommendations = 10, + queryParameters = SearchParamsObject( + query = "myQuery", + facetFilters = FacetFilters.of(listOf(MixedSearchFilters.of("query1"))), + ), + fallbackParameters = SearchParamsObject( + query = "myQuery", + facetFilters = FacetFilters.of(listOf(MixedSearchFilters.of("fallback1"))), + ), + ), + RecommendationsQuery( + indexName = "indexName2", + objectID = "objectID2", + model = RecommendationModels.entries.first { it.value == "related-products" }, + threshold = 21, + maxRecommendations = 10, + queryParameters = SearchParamsObject( + query = "myQuery", + facetFilters = FacetFilters.of(listOf(MixedSearchFilters.of("query2"))), + ), + fallbackParameters = SearchParamsObject( + query = "myQuery", + facetFilters = FacetFilters.of(listOf(MixedSearchFilters.of("fallback2"))), + ), + ), + ), + ), + ) + }, + intercept = { + assertEquals("/1/indexes/*/recommendations".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"requests":[{"indexName":"indexName1","objectID":"objectID1","model":"related-products","threshold":21,"maxRecommendations":10,"queryParameters":{"query":"myQuery","facetFilters":["query1"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback1"]}},{"indexName":"indexName2","objectID":"objectID2","model":"related-products","threshold":21,"maxRecommendations":10,"queryParameters":{"query":"myQuery","facetFilters":["query2"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback2"]}}]}""", it.body) + }, + ) + } + + @Test + fun `get frequently bought together recommendations`() = runTest { + client.runTest( + call = { + getRecommendations( + getRecommendationsParams = GetRecommendationsParams( + requests = listOf( + RecommendationsQuery( + indexName = "indexName1", + objectID = "objectID1", + model = RecommendationModels.entries.first { it.value == "bought-together" }, + threshold = 42, + ), + ), + ), + ) + }, + intercept = { + assertEquals("/1/indexes/*/recommendations".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"requests":[{"indexName":"indexName1","objectID":"objectID1","model":"bought-together","threshold":42}]}""", it.body) + }, + ) + } + + // searchRecommendRules + + @Test + fun `searchRecommendRules0`() = runTest { + client.runTest( + call = { + searchRecommendRules( + indexName = "indexName", + model = RecommendModels.entries.first { it.value == "related-products" }, + ) + }, + intercept = { + assertEquals("/1/indexes/indexName/related-products/recommend/rules/search".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{}""", it.body) + }, + ) + } +} diff --git a/tests/output/kotlin/src/commonTest/kotlin/com/algolia/requests/SearchTest.kt b/tests/output/kotlin/src/commonTest/kotlin/com/algolia/requests/SearchTest.kt new file mode 100644 index 0000000000..57e23a4805 --- /dev/null +++ b/tests/output/kotlin/src/commonTest/kotlin/com/algolia/requests/SearchTest.kt @@ -0,0 +1,2851 @@ +package com.algolia.methods.requests + +import com.algolia.client.api.SearchClient +import com.algolia.client.configuration.* +import com.algolia.client.model.search.* +import com.algolia.client.transport.* +import com.algolia.utils.* +import io.ktor.http.* +import kotlinx.coroutines.test.* +import kotlinx.serialization.json.* +import kotlin.test.* + +class SearchTest { + + val client = SearchClient( + appId = "appId", + apiKey = "apiKey", + ) + + // addApiKey + + @Test + fun `addApiKey0`() = runTest { + client.runTest( + call = { + addApiKey( + apiKey = ApiKey( + acl = listOf(Acl.entries.first { it.value == "search" }, Acl.entries.first { it.value == "addObject" }), + description = "my new api key", + validity = 300, + maxQueriesPerIPPerHour = 100, + maxHitsPerQuery = 20, + ), + ) + }, + intercept = { + assertEquals("/1/keys".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"acl":["search","addObject"],"description":"my new api key","validity":300,"maxQueriesPerIPPerHour":100,"maxHitsPerQuery":20}""", it.body) + }, + ) + } + + // addOrUpdateObject + + @Test + fun `addOrUpdateObject0`() = runTest { + client.runTest( + call = { + addOrUpdateObject( + indexName = "indexName", + objectID = "uniqueID", + body = buildJsonObject { + put( + "key", + JsonPrimitive("value"), + ) + }, + ) + }, + intercept = { + assertEquals("/1/indexes/indexName/uniqueID".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("PUT"), it.method) + assertJsonBody("""{"key":"value"}""", it.body) + }, + ) + } + + // appendSource + + @Test + fun `appendSource0`() = runTest { + client.runTest( + call = { + appendSource( + source = Source( + source = "theSource", + description = "theDescription", + ), + ) + }, + intercept = { + assertEquals("/1/security/sources/append".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"source":"theSource","description":"theDescription"}""", it.body) + }, + ) + } + + // assignUserId + + @Test + fun `assignUserId0`() = runTest { + client.runTest( + call = { + assignUserId( + xAlgoliaUserID = "userID", + assignUserIdParams = AssignUserIdParams( + cluster = "theCluster", + ), + ) + }, + intercept = { + assertEquals("/1/clusters/mapping".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"x-algolia-user-id":"userID"}""", it.headers) + assertJsonBody("""{"cluster":"theCluster"}""", it.body) + }, + ) + } + + // batch + + @Test + fun `allows batch method with 'addObject' action`() = runTest { + client.runTest( + call = { + batch( + indexName = "theIndexName", + batchWriteParams = BatchWriteParams( + requests = listOf( + BatchRequest( + action = Action.entries.first { it.value == "addObject" }, + body = buildJsonObject { + put( + "key", + JsonPrimitive("value"), + ) + }, + ), + ), + ), + ) + }, + intercept = { + assertEquals("/1/indexes/theIndexName/batch".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"requests":[{"action":"addObject","body":{"key":"value"}}]}""", it.body) + }, + ) + } + + @Test + fun `allows batch method with 'clear' action`() = runTest { + client.runTest( + call = { + batch( + indexName = "theIndexName", + batchWriteParams = BatchWriteParams( + requests = listOf( + BatchRequest( + action = Action.entries.first { it.value == "clear" }, + body = buildJsonObject { + put( + "key", + JsonPrimitive("value"), + ) + }, + ), + ), + ), + ) + }, + intercept = { + assertEquals("/1/indexes/theIndexName/batch".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"requests":[{"action":"clear","body":{"key":"value"}}]}""", it.body) + }, + ) + } + + @Test + fun `allows batch method with 'delete' action`() = runTest { + client.runTest( + call = { + batch( + indexName = "theIndexName", + batchWriteParams = BatchWriteParams( + requests = listOf( + BatchRequest( + action = Action.entries.first { it.value == "delete" }, + body = buildJsonObject { + put( + "key", + JsonPrimitive("value"), + ) + }, + ), + ), + ), + ) + }, + intercept = { + assertEquals("/1/indexes/theIndexName/batch".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"requests":[{"action":"delete","body":{"key":"value"}}]}""", it.body) + }, + ) + } + + @Test + fun `allows batch method with 'deleteObject' action`() = runTest { + client.runTest( + call = { + batch( + indexName = "theIndexName", + batchWriteParams = BatchWriteParams( + requests = listOf( + BatchRequest( + action = Action.entries.first { it.value == "deleteObject" }, + body = buildJsonObject { + put( + "key", + JsonPrimitive("value"), + ) + }, + ), + ), + ), + ) + }, + intercept = { + assertEquals("/1/indexes/theIndexName/batch".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"requests":[{"action":"deleteObject","body":{"key":"value"}}]}""", it.body) + }, + ) + } + + @Test + fun `allows batch method with 'partialUpdateObject' action`() = runTest { + client.runTest( + call = { + batch( + indexName = "theIndexName", + batchWriteParams = BatchWriteParams( + requests = listOf( + BatchRequest( + action = Action.entries.first { it.value == "partialUpdateObject" }, + body = buildJsonObject { + put( + "key", + JsonPrimitive("value"), + ) + }, + ), + ), + ), + ) + }, + intercept = { + assertEquals("/1/indexes/theIndexName/batch".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"requests":[{"action":"partialUpdateObject","body":{"key":"value"}}]}""", it.body) + }, + ) + } + + @Test + fun `allows batch method with 'partialUpdateObjectNoCreate' action`() = runTest { + client.runTest( + call = { + batch( + indexName = "theIndexName", + batchWriteParams = BatchWriteParams( + requests = listOf( + BatchRequest( + action = Action.entries.first { it.value == "partialUpdateObjectNoCreate" }, + body = buildJsonObject { + put( + "key", + JsonPrimitive("value"), + ) + }, + ), + ), + ), + ) + }, + intercept = { + assertEquals("/1/indexes/theIndexName/batch".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"requests":[{"action":"partialUpdateObjectNoCreate","body":{"key":"value"}}]}""", it.body) + }, + ) + } + + @Test + fun `allows batch method with 'updateObject' action`() = runTest { + client.runTest( + call = { + batch( + indexName = "theIndexName", + batchWriteParams = BatchWriteParams( + requests = listOf( + BatchRequest( + action = Action.entries.first { it.value == "updateObject" }, + body = buildJsonObject { + put( + "key", + JsonPrimitive("value"), + ) + }, + ), + ), + ), + ) + }, + intercept = { + assertEquals("/1/indexes/theIndexName/batch".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"requests":[{"action":"updateObject","body":{"key":"value"}}]}""", it.body) + }, + ) + } + + // batchAssignUserIds + + @Test + fun `batchAssignUserIds0`() = runTest { + client.runTest( + call = { + batchAssignUserIds( + xAlgoliaUserID = "userID", + batchAssignUserIdsParams = BatchAssignUserIdsParams( + cluster = "theCluster", + users = listOf("user1", "user2"), + ), + ) + }, + intercept = { + assertEquals("/1/clusters/mapping/batch".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"x-algolia-user-id":"userID"}""", it.headers) + assertJsonBody("""{"cluster":"theCluster","users":["user1","user2"]}""", it.body) + }, + ) + } + + // batchDictionaryEntries + + @Test + fun `get batchDictionaryEntries results with minimal parameters`() = runTest { + client.runTest( + call = { + batchDictionaryEntries( + dictionaryName = DictionaryType.entries.first { it.value == "compounds" }, + batchDictionaryEntriesParams = BatchDictionaryEntriesParams( + requests = listOf( + BatchDictionaryEntriesRequest( + action = DictionaryAction.entries.first { it.value == "addEntry" }, + body = DictionaryEntry( + objectID = "1", + language = "en", + ), + ), + BatchDictionaryEntriesRequest( + action = DictionaryAction.entries.first { it.value == "deleteEntry" }, + body = DictionaryEntry( + objectID = "2", + language = "fr", + ), + ), + ), + ), + ) + }, + intercept = { + assertEquals("/1/dictionaries/compounds/batch".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"requests":[{"action":"addEntry","body":{"objectID":"1","language":"en"}},{"action":"deleteEntry","body":{"objectID":"2","language":"fr"}}]}""", it.body) + }, + ) + } + + @Test + fun `get batchDictionaryEntries results with all parameters`() = runTest { + client.runTest( + call = { + batchDictionaryEntries( + dictionaryName = DictionaryType.entries.first { it.value == "compounds" }, + batchDictionaryEntriesParams = BatchDictionaryEntriesParams( + clearExistingDictionaryEntries = false, + requests = listOf( + BatchDictionaryEntriesRequest( + action = DictionaryAction.entries.first { it.value == "addEntry" }, + body = DictionaryEntry( + objectID = "1", + language = "en", + word = "fancy", + words = listOf("believe", "algolia"), + decomposition = listOf("trust", "algolia"), + state = DictionaryEntryState.entries.first { it.value == "enabled" }, + ), + ), + BatchDictionaryEntriesRequest( + action = DictionaryAction.entries.first { it.value == "deleteEntry" }, + body = DictionaryEntry( + objectID = "2", + language = "fr", + word = "humility", + words = listOf("candor", "algolia"), + decomposition = listOf("grit", "algolia"), + state = DictionaryEntryState.entries.first { it.value == "enabled" }, + ), + ), + ), + ), + ) + }, + intercept = { + assertEquals("/1/dictionaries/compounds/batch".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"clearExistingDictionaryEntries":false,"requests":[{"action":"addEntry","body":{"objectID":"1","language":"en","word":"fancy","words":["believe","algolia"],"decomposition":["trust","algolia"],"state":"enabled"}},{"action":"deleteEntry","body":{"objectID":"2","language":"fr","word":"humility","words":["candor","algolia"],"decomposition":["grit","algolia"],"state":"enabled"}}]}""", it.body) + }, + ) + } + + @Test + fun `get batchDictionaryEntries results additional properties`() = runTest { + client.runTest( + call = { + batchDictionaryEntries( + dictionaryName = DictionaryType.entries.first { it.value == "compounds" }, + batchDictionaryEntriesParams = BatchDictionaryEntriesParams( + requests = listOf( + BatchDictionaryEntriesRequest( + action = DictionaryAction.entries.first { it.value == "addEntry" }, + body = DictionaryEntry( + objectID = "1", + language = "en", + additionalProperties = mapOf( + "additional" to JsonPrimitive("try me"), + ), + ), + ), + ), + ), + ) + }, + intercept = { + assertEquals("/1/dictionaries/compounds/batch".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"requests":[{"action":"addEntry","body":{"objectID":"1","language":"en","additional":"try me"}}]}""", it.body) + }, + ) + } + + // browse + + @Test + fun `browse with minimal parameters`() = runTest { + client.runTest( + call = { + browse( + indexName = "indexName", + ) + }, + intercept = { + assertEquals("/1/indexes/indexName/browse".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{}""", it.body) + }, + ) + } + + @Test + fun `browse with search parameters`() = runTest { + client.runTest( + call = { + browse( + indexName = "indexName", + browseParams = BrowseParamsObject( + query = "myQuery", + facetFilters = FacetFilters.of(listOf(MixedSearchFilters.of("tags:algolia"))), + ), + ) + }, + intercept = { + assertEquals("/1/indexes/indexName/browse".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"query":"myQuery","facetFilters":["tags:algolia"]}""", it.body) + }, + ) + } + + @Test + fun `browse allow a cursor in parameters`() = runTest { + client.runTest( + call = { + browse( + indexName = "indexName", + browseParams = BrowseParamsObject( + cursor = "test", + ), + ) + }, + intercept = { + assertEquals("/1/indexes/indexName/browse".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"cursor":"test"}""", it.body) + }, + ) + } + + // clearAllSynonyms + + @Test + fun `clearAllSynonyms0`() = runTest { + client.runTest( + call = { + clearAllSynonyms( + indexName = "indexName", + ) + }, + intercept = { + assertEquals("/1/indexes/indexName/synonyms/clear".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertEmptyBody(it.body) + }, + ) + } + + // clearObjects + + @Test + fun `clearObjects0`() = runTest { + client.runTest( + call = { + clearObjects( + indexName = "theIndexName", + ) + }, + intercept = { + assertEquals("/1/indexes/theIndexName/clear".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertEmptyBody(it.body) + }, + ) + } + + // clearRules + + @Test + fun `clearRules0`() = runTest { + client.runTest( + call = { + clearRules( + indexName = "indexName", + ) + }, + intercept = { + assertEquals("/1/indexes/indexName/rules/clear".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertEmptyBody(it.body) + }, + ) + } + + // customDelete + + @Test + fun `allow del method for a custom path with minimal parameters`() = runTest { + client.runTest( + call = { + customDelete( + path = "/test/minimal", + ) + }, + intercept = { + assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("DELETE"), it.method) + assertNoBody(it.body) + }, + ) + } + + @Test + fun `allow del method for a custom path with all parameters`() = runTest { + client.runTest( + call = { + customDelete( + path = "/test/all", + parameters = mapOf("query" to "parameters"), + ) + }, + intercept = { + assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("DELETE"), it.method) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + // customGet + + @Test + fun `allow get method for a custom path with minimal parameters`() = runTest { + client.runTest( + call = { + customGet( + path = "/test/minimal", + ) + }, + intercept = { + assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + @Test + fun `allow get method for a custom path with all parameters`() = runTest { + client.runTest( + call = { + customGet( + path = "/test/all", + parameters = mapOf("query" to "parameters"), + ) + }, + intercept = { + assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + // customPost + + @Test + fun `allow post method for a custom path with minimal parameters`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/minimal", + ) + }, + intercept = { + assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{}""", it.body) + }, + ) + } + + @Test + fun `allow post method for a custom path with all parameters`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/all", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "body", + JsonPrimitive("parameters"), + ) + }, + ) + }, + intercept = { + assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertJsonBody("""{"body":"parameters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions can override default query parameters`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("query", "myQueryParameter") + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"myQueryParameter"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions merges query parameters with default ones`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("query2", "myQueryParameter") + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","query2":"myQueryParameter"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions can override default headers`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + headers = buildMap { + put("x-algolia-api-key", "myApiKey") + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"x-algolia-api-key":"myApiKey"}""", it.headers) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions merges headers with default ones`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + headers = buildMap { + put("x-algolia-api-key", "myApiKey") + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"x-algolia-api-key":"myApiKey"}""", it.headers) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions queryParameters accepts booleans`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("isItWorking", true) + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","isItWorking":"true"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions queryParameters accepts integers`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("myParam", 2) + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","myParam":"2"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions queryParameters accepts list of string`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("myParam", listOf("c", "d")) + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","myParam":"c,d"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions queryParameters accepts list of booleans`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("myParam", listOf(true, true, false)) + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","myParam":"true,true,false"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + @Test + fun `requestOptions queryParameters accepts list of integers`() = runTest { + client.runTest( + call = { + customPost( + path = "/test/requestOptions", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "facet", + JsonPrimitive("filters"), + ) + }, + requestOptions = RequestOptions( + urlParameters = buildMap { + put("myParam", listOf(1, 2)) + }, + ), + ) + }, + intercept = { + assertEquals("/1/test/requestOptions".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"query":"parameters","myParam":"1,2"}""", it.url.parameters) + assertJsonBody("""{"facet":"filters"}""", it.body) + }, + ) + } + + // customPut + + @Test + fun `allow put method for a custom path with minimal parameters`() = runTest { + client.runTest( + call = { + customPut( + path = "/test/minimal", + ) + }, + intercept = { + assertEquals("/1/test/minimal".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("PUT"), it.method) + assertJsonBody("""{}""", it.body) + }, + ) + } + + @Test + fun `allow put method for a custom path with all parameters`() = runTest { + client.runTest( + call = { + customPut( + path = "/test/all", + parameters = mapOf("query" to "parameters"), + body = buildJsonObject { + put( + "body", + JsonPrimitive("parameters"), + ) + }, + ) + }, + intercept = { + assertEquals("/1/test/all".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("PUT"), it.method) + assertContainsAll("""{"query":"parameters"}""", it.url.parameters) + assertJsonBody("""{"body":"parameters"}""", it.body) + }, + ) + } + + // deleteApiKey + + @Test + fun `deleteApiKey0`() = runTest { + client.runTest( + call = { + deleteApiKey( + key = "myTestApiKey", + ) + }, + intercept = { + assertEquals("/1/keys/myTestApiKey".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("DELETE"), it.method) + assertNoBody(it.body) + }, + ) + } + + // deleteBy + + @Test + fun `deleteBy0`() = runTest { + client.runTest( + call = { + deleteBy( + indexName = "theIndexName", + deleteByParams = DeleteByParams( + filters = "brand:brandName", + ), + ) + }, + intercept = { + assertEquals("/1/indexes/theIndexName/deleteByQuery".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"filters":"brand:brandName"}""", it.body) + }, + ) + } + + // deleteIndex + + @Test + fun `deleteIndex0`() = runTest { + client.runTest( + call = { + deleteIndex( + indexName = "theIndexName", + ) + }, + intercept = { + assertEquals("/1/indexes/theIndexName".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("DELETE"), it.method) + assertNoBody(it.body) + }, + ) + } + + // deleteObject + + @Test + fun `deleteObject0`() = runTest { + client.runTest( + call = { + deleteObject( + indexName = "theIndexName", + objectID = "uniqueID", + ) + }, + intercept = { + assertEquals("/1/indexes/theIndexName/uniqueID".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("DELETE"), it.method) + assertNoBody(it.body) + }, + ) + } + + // deleteRule + + @Test + fun `delete rule simple case`() = runTest { + client.runTest( + call = { + deleteRule( + indexName = "indexName", + objectID = "id1", + ) + }, + intercept = { + assertEquals("/1/indexes/indexName/rules/id1".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("DELETE"), it.method) + assertNoBody(it.body) + }, + ) + } + + @Test + fun `delete rule with simple characters to encode in objectID`() = runTest { + client.runTest( + call = { + deleteRule( + indexName = "indexName", + objectID = "test/with/slash", + ) + }, + intercept = { + assertEquals("/1/indexes/indexName/rules/test%2Fwith%2Fslash".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("DELETE"), it.method) + assertNoBody(it.body) + }, + ) + } + + // deleteSource + + @Test + fun `deleteSource0`() = runTest { + client.runTest( + call = { + deleteSource( + source = "theSource", + ) + }, + intercept = { + assertEquals("/1/security/sources/theSource".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("DELETE"), it.method) + assertNoBody(it.body) + }, + ) + } + + // deleteSynonym + + @Test + fun `deleteSynonym0`() = runTest { + client.runTest( + call = { + deleteSynonym( + indexName = "indexName", + objectID = "id1", + ) + }, + intercept = { + assertEquals("/1/indexes/indexName/synonyms/id1".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("DELETE"), it.method) + assertNoBody(it.body) + }, + ) + } + + // getApiKey + + @Test + fun `getApiKey0`() = runTest { + client.runTest( + call = { + getApiKey( + key = "myTestApiKey", + ) + }, + intercept = { + assertEquals("/1/keys/myTestApiKey".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + // getDictionaryLanguages + + @Test + fun `get getDictionaryLanguages`() = runTest { + client.runTest( + call = { + getDictionaryLanguages() + }, + intercept = { + assertEquals("/1/dictionaries/*/languages".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + // getDictionarySettings + + @Test + fun `get getDictionarySettings results`() = runTest { + client.runTest( + call = { + getDictionarySettings() + }, + intercept = { + assertEquals("/1/dictionaries/*/settings".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + // getLogs + + @Test + fun `getLogs with minimal parameters`() = runTest { + client.runTest( + call = { + getLogs() + }, + intercept = { + assertEquals("/1/logs".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + @Test + fun `getLogs with parameters`() = runTest { + client.runTest( + call = { + getLogs( + offset = 5, + length = 10, + indexName = "theIndexName", + type = LogType.entries.first { it.value == "all" }, + ) + }, + intercept = { + assertEquals("/1/logs".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"offset":"5","length":"10","indexName":"theIndexName","type":"all"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + // getObject + + @Test + fun `getObject0`() = runTest { + client.runTest( + call = { + getObject( + indexName = "theIndexName", + objectID = "uniqueID", + attributesToRetrieve = listOf("attr1", "attr2"), + ) + }, + intercept = { + assertEquals("/1/indexes/theIndexName/uniqueID".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"attributesToRetrieve":"attr1,attr2"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + // getObjects + + @Test + fun `getObjects0`() = runTest { + client.runTest( + call = { + getObjects( + getObjectsParams = GetObjectsParams( + requests = listOf( + GetObjectsRequest( + attributesToRetrieve = listOf("attr1", "attr2"), + objectID = "uniqueID", + indexName = "theIndexName", + ), + ), + ), + ) + }, + intercept = { + assertEquals("/1/indexes/*/objects".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"requests":[{"attributesToRetrieve":["attr1","attr2"],"objectID":"uniqueID","indexName":"theIndexName"}]}""", it.body) + }, + ) + } + + // getRule + + @Test + fun `getRule0`() = runTest { + client.runTest( + call = { + getRule( + indexName = "indexName", + objectID = "id1", + ) + }, + intercept = { + assertEquals("/1/indexes/indexName/rules/id1".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + // getSettings + + @Test + fun `getSettings0`() = runTest { + client.runTest( + call = { + getSettings( + indexName = "theIndexName", + ) + }, + intercept = { + assertEquals("/1/indexes/theIndexName/settings".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + // getSources + + @Test + fun `getSources0`() = runTest { + client.runTest( + call = { + getSources() + }, + intercept = { + assertEquals("/1/security/sources".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + // getSynonym + + @Test + fun `getSynonym0`() = runTest { + client.runTest( + call = { + getSynonym( + indexName = "indexName", + objectID = "id1", + ) + }, + intercept = { + assertEquals("/1/indexes/indexName/synonyms/id1".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + // getTask + + @Test + fun `getTask0`() = runTest { + client.runTest( + call = { + getTask( + indexName = "theIndexName", + taskID = 123L, + ) + }, + intercept = { + assertEquals("/1/indexes/theIndexName/task/123".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + // getTopUserIds + + @Test + fun `getTopUserIds0`() = runTest { + client.runTest( + call = { + getTopUserIds() + }, + intercept = { + assertEquals("/1/clusters/mapping/top".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + // getUserId + + @Test + fun `getUserId0`() = runTest { + client.runTest( + call = { + getUserId( + userID = "uniqueID", + ) + }, + intercept = { + assertEquals("/1/clusters/mapping/uniqueID".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + // hasPendingMappings + + @Test + fun `hasPendingMappings with minimal parameters`() = runTest { + client.runTest( + call = { + hasPendingMappings() + }, + intercept = { + assertEquals("/1/clusters/mapping/pending".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + @Test + fun `hasPendingMappings with parameters`() = runTest { + client.runTest( + call = { + hasPendingMappings( + getClusters = true, + ) + }, + intercept = { + assertEquals("/1/clusters/mapping/pending".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"getClusters":"true"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + // listApiKeys + + @Test + fun `listApiKeys0`() = runTest { + client.runTest( + call = { + listApiKeys() + }, + intercept = { + assertEquals("/1/keys".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + // listClusters + + @Test + fun `listClusters0`() = runTest { + client.runTest( + call = { + listClusters() + }, + intercept = { + assertEquals("/1/clusters".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + // listIndices + + @Test + fun `listIndices with minimal parameters`() = runTest { + client.runTest( + call = { + listIndices() + }, + intercept = { + assertEquals("/1/indexes".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + @Test + fun `listIndices with parameters`() = runTest { + client.runTest( + call = { + listIndices( + page = 8, + hitsPerPage = 3, + ) + }, + intercept = { + assertEquals("/1/indexes".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"page":"8","hitsPerPage":"3"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + // listUserIds + + @Test + fun `listUserIds with minimal parameters`() = runTest { + client.runTest( + call = { + listUserIds() + }, + intercept = { + assertEquals("/1/clusters/mapping".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertNoBody(it.body) + }, + ) + } + + @Test + fun `listUserIds with parameters`() = runTest { + client.runTest( + call = { + listUserIds( + page = 8, + hitsPerPage = 100, + ) + }, + intercept = { + assertEquals("/1/clusters/mapping".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("GET"), it.method) + assertContainsAll("""{"page":"8","hitsPerPage":"100"}""", it.url.parameters) + assertNoBody(it.body) + }, + ) + } + + // multipleBatch + + @Test + fun `multipleBatch0`() = runTest { + client.runTest( + call = { + multipleBatch( + batchParams = BatchParams( + requests = listOf( + MultipleBatchRequest( + action = Action.entries.first { it.value == "addObject" }, + body = buildJsonObject { + put( + "key", + JsonPrimitive("value"), + ) + }, + indexName = "theIndexName", + ), + ), + ), + ) + }, + intercept = { + assertEquals("/1/indexes/*/batch".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"requests":[{"action":"addObject","body":{"key":"value"},"indexName":"theIndexName"}]}""", it.body) + }, + ) + } + + // operationIndex + + @Test + fun `operationIndex0`() = runTest { + client.runTest( + call = { + operationIndex( + indexName = "theIndexName", + operationIndexParams = OperationIndexParams( + operation = OperationType.entries.first { it.value == "copy" }, + destination = "dest", + scope = listOf(ScopeType.entries.first { it.value == "rules" }, ScopeType.entries.first { it.value == "settings" }), + ), + ) + }, + intercept = { + assertEquals("/1/indexes/theIndexName/operation".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"operation":"copy","destination":"dest","scope":["rules","settings"]}""", it.body) + }, + ) + } + + // partialUpdateObject + + @Test + fun `partialUpdateObject0`() = runTest { + client.runTest( + call = { + partialUpdateObject( + indexName = "theIndexName", + objectID = "uniqueID", + attributesToUpdate = mapOf( + "id1" to AttributeToUpdate.of("test"), + "id2" to BuiltInOperation( + operation = BuiltInOperationType.entries.first { it.value == "AddUnique" }, + value = "test2", + ), + ), + createIfNotExists = true, + ) + }, + intercept = { + assertEquals("/1/indexes/theIndexName/uniqueID/partial".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"createIfNotExists":"true"}""", it.url.parameters) + assertJsonBody("""{"id1":"test","id2":{"_operation":"AddUnique","value":"test2"}}""", it.body) + }, + ) + } + + // removeUserId + + @Test + fun `removeUserId0`() = runTest { + client.runTest( + call = { + removeUserId( + userID = "uniqueID", + ) + }, + intercept = { + assertEquals("/1/clusters/mapping/uniqueID".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("DELETE"), it.method) + assertNoBody(it.body) + }, + ) + } + + // replaceSources + + @Test + fun `replaceSources0`() = runTest { + client.runTest( + call = { + replaceSources( + source = listOf( + Source( + source = "theSource", + description = "theDescription", + ), + ), + ) + }, + intercept = { + assertEquals("/1/security/sources".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("PUT"), it.method) + assertJsonBody("""[{"source":"theSource","description":"theDescription"}]""", it.body) + }, + ) + } + + // restoreApiKey + + @Test + fun `restoreApiKey0`() = runTest { + client.runTest( + call = { + restoreApiKey( + key = "myApiKey", + ) + }, + intercept = { + assertEquals("/1/keys/myApiKey/restore".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertEmptyBody(it.body) + }, + ) + } + + // saveObject + + @Test + fun `saveObject0`() = runTest { + client.runTest( + call = { + saveObject( + indexName = "theIndexName", + body = buildJsonObject { + put( + "objectID", + JsonPrimitive("id"), + ) + put( + "test", + JsonPrimitive("val"), + ) + }, + ) + }, + intercept = { + assertEquals("/1/indexes/theIndexName".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"objectID":"id","test":"val"}""", it.body) + }, + ) + } + + // saveRule + + @Test + fun `saveRule with minimal parameters`() = runTest { + client.runTest( + call = { + saveRule( + indexName = "indexName", + objectID = "id1", + rule = Rule( + objectID = "id1", + conditions = listOf( + Condition( + pattern = "apple", + anchoring = Anchoring.entries.first { it.value == "contains" }, + ), + ), + ), + ) + }, + intercept = { + assertEquals("/1/indexes/indexName/rules/id1".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("PUT"), it.method) + assertJsonBody("""{"objectID":"id1","conditions":[{"pattern":"apple","anchoring":"contains"}]}""", it.body) + }, + ) + } + + @Test + fun `saveRule with all parameters`() = runTest { + client.runTest( + call = { + saveRule( + indexName = "indexName", + objectID = "id1", + rule = Rule( + objectID = "id1", + conditions = listOf( + Condition( + pattern = "apple", + anchoring = Anchoring.entries.first { it.value == "contains" }, + alternatives = false, + context = "search", + ), + ), + consequence = Consequence( + params = ConsequenceParams( + filters = "brand:apple", + query = ConsequenceQueryObject( + remove = listOf("algolia"), + edits = listOf( + Edit( + type = EditType.entries.first { it.value == "remove" }, + delete = "abc", + insert = "cde", + ), + Edit( + type = EditType.entries.first { it.value == "replace" }, + delete = "abc", + insert = "cde", + ), + ), + ), + ), + hide = listOf( + ConsequenceHide( + objectID = "321", + ), + ), + filterPromotes = false, + userData = buildJsonObject { + put("algolia", "aloglia") + }, + promote = listOf( + PromoteObjectID( + objectID = "abc", + position = 3, + ), + PromoteObjectIDs( + objectIDs = listOf("abc", "def"), + position = 1, + ), + ), + ), + description = "test", + enabled = true, + validity = listOf( + TimeRange( + from = 1656670273, + until = 1656670277, + ), + ), + ), + forwardToReplicas = true, + ) + }, + intercept = { + assertEquals("/1/indexes/indexName/rules/id1".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("PUT"), it.method) + assertContainsAll("""{"forwardToReplicas":"true"}""", it.url.parameters) + assertJsonBody("""{"objectID":"id1","conditions":[{"pattern":"apple","anchoring":"contains","alternatives":false,"context":"search"}],"consequence":{"params":{"filters":"brand:apple","query":{"remove":["algolia"],"edits":[{"type":"remove","delete":"abc","insert":"cde"},{"type":"replace","delete":"abc","insert":"cde"}]}},"hide":[{"objectID":"321"}],"filterPromotes":false,"userData":{"algolia":"aloglia"},"promote":[{"objectID":"abc","position":3},{"objectIDs":["abc","def"],"position":1}]},"description":"test","enabled":true,"validity":[{"from":1656670273,"until":1656670277}]}""", it.body) + }, + ) + } + + // saveRules + + @Test + fun `saveRules with minimal parameters`() = runTest { + client.runTest( + call = { + saveRules( + indexName = "indexName", + rules = listOf( + Rule( + objectID = "a-rule-id", + conditions = listOf( + Condition( + pattern = "smartphone", + anchoring = Anchoring.entries.first { it.value == "contains" }, + ), + ), + ), + Rule( + objectID = "a-second-rule-id", + conditions = listOf( + Condition( + pattern = "apple", + anchoring = Anchoring.entries.first { it.value == "contains" }, + ), + ), + ), + ), + ) + }, + intercept = { + assertEquals("/1/indexes/indexName/rules/batch".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""[{"objectID":"a-rule-id","conditions":[{"pattern":"smartphone","anchoring":"contains"}]},{"objectID":"a-second-rule-id","conditions":[{"pattern":"apple","anchoring":"contains"}]}]""", it.body) + }, + ) + } + + @Test + fun `saveRules with all parameters`() = runTest { + client.runTest( + call = { + saveRules( + indexName = "indexName", + rules = listOf( + Rule( + objectID = "id1", + conditions = listOf( + Condition( + pattern = "apple", + anchoring = Anchoring.entries.first { it.value == "contains" }, + alternatives = false, + context = "search", + ), + ), + consequence = Consequence( + params = ConsequenceParams( + filters = "brand:apple", + query = ConsequenceQueryObject( + remove = listOf("algolia"), + edits = listOf( + Edit( + type = EditType.entries.first { it.value == "remove" }, + delete = "abc", + insert = "cde", + ), + Edit( + type = EditType.entries.first { it.value == "replace" }, + delete = "abc", + insert = "cde", + ), + ), + ), + ), + hide = listOf( + ConsequenceHide( + objectID = "321", + ), + ), + filterPromotes = false, + userData = buildJsonObject { + put("algolia", "aloglia") + }, + promote = listOf( + PromoteObjectID( + objectID = "abc", + position = 3, + ), + PromoteObjectIDs( + objectIDs = listOf("abc", "def"), + position = 1, + ), + ), + ), + description = "test", + enabled = true, + validity = listOf( + TimeRange( + from = 1656670273, + until = 1656670277, + ), + ), + ), + ), + forwardToReplicas = true, + clearExistingRules = true, + ) + }, + intercept = { + assertEquals("/1/indexes/indexName/rules/batch".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"forwardToReplicas":"true","clearExistingRules":"true"}""", it.url.parameters) + assertJsonBody("""[{"objectID":"id1","conditions":[{"pattern":"apple","anchoring":"contains","alternatives":false,"context":"search"}],"consequence":{"params":{"filters":"brand:apple","query":{"remove":["algolia"],"edits":[{"type":"remove","delete":"abc","insert":"cde"},{"type":"replace","delete":"abc","insert":"cde"}]}},"hide":[{"objectID":"321"}],"filterPromotes":false,"userData":{"algolia":"aloglia"},"promote":[{"objectID":"abc","position":3},{"objectIDs":["abc","def"],"position":1}]},"description":"test","enabled":true,"validity":[{"from":1656670273,"until":1656670277}]}]""", it.body) + }, + ) + } + + // saveSynonym + + @Test + fun `saveSynonym0`() = runTest { + client.runTest( + call = { + saveSynonym( + indexName = "indexName", + objectID = "id1", + synonymHit = SynonymHit( + objectID = "id1", + type = SynonymType.entries.first { it.value == "synonym" }, + synonyms = listOf("car", "vehicule", "auto"), + ), + forwardToReplicas = true, + ) + }, + intercept = { + assertEquals("/1/indexes/indexName/synonyms/id1".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("PUT"), it.method) + assertContainsAll("""{"forwardToReplicas":"true"}""", it.url.parameters) + assertJsonBody("""{"objectID":"id1","type":"synonym","synonyms":["car","vehicule","auto"]}""", it.body) + }, + ) + } + + // saveSynonyms + + @Test + fun `saveSynonyms0`() = runTest { + client.runTest( + call = { + saveSynonyms( + indexName = "indexName", + synonymHit = listOf( + SynonymHit( + objectID = "id1", + type = SynonymType.entries.first { it.value == "synonym" }, + synonyms = listOf("car", "vehicule", "auto"), + ), + SynonymHit( + objectID = "id2", + type = SynonymType.entries.first { it.value == "onewaysynonym" }, + input = "iphone", + synonyms = listOf("ephone", "aphone", "yphone"), + ), + ), + forwardToReplicas = true, + replaceExistingSynonyms = false, + ) + }, + intercept = { + assertEquals("/1/indexes/indexName/synonyms/batch".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"forwardToReplicas":"true","replaceExistingSynonyms":"false"}""", it.url.parameters) + assertJsonBody("""[{"objectID":"id1","type":"synonym","synonyms":["car","vehicule","auto"]},{"objectID":"id2","type":"onewaysynonym","input":"iphone","synonyms":["ephone","aphone","yphone"]}]""", it.body) + }, + ) + } + + // search + + @Test + fun `search for a single hits request with minimal parameters`() = runTest { + client.runTest( + call = { + search( + searchMethodParams = SearchMethodParams( + requests = listOf( + SearchForHits( + indexName = "cts_e2e_search_empty_index", + ), + ), + ), + ) + }, + intercept = { + assertEquals("/1/indexes/*/queries".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"requests":[{"indexName":"cts_e2e_search_empty_index"}]}""", it.body) + }, + ) + } + + @Test + fun `search for a single facet request with minimal parameters`() = runTest { + client.runTest( + call = { + search( + searchMethodParams = SearchMethodParams( + requests = listOf( + SearchForFacets( + indexName = "cts_e2e_search_facet", + type = SearchTypeFacet.entries.first { it.value == "facet" }, + facet = "editor", + ), + ), + strategy = SearchStrategy.entries.first { it.value == "stopIfEnoughMatches" }, + ), + ) + }, + intercept = { + assertEquals("/1/indexes/*/queries".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"requests":[{"indexName":"cts_e2e_search_facet","type":"facet","facet":"editor"}],"strategy":"stopIfEnoughMatches"}""", it.body) + }, + ) + } + + @Test + fun `search for a single hits request with all parameters`() = runTest { + client.runTest( + call = { + search( + searchMethodParams = SearchMethodParams( + requests = listOf( + SearchForHits( + indexName = "theIndexName", + query = "myQuery", + hitsPerPage = 50, + type = SearchTypeDefault.entries.first { it.value == "default" }, + ), + ), + ), + ) + }, + intercept = { + assertEquals("/1/indexes/*/queries".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"requests":[{"indexName":"theIndexName","query":"myQuery","hitsPerPage":50,"type":"default"}]}""", it.body) + }, + ) + } + + @Test + fun `search for a single facet request with all parameters`() = runTest { + client.runTest( + call = { + search( + searchMethodParams = SearchMethodParams( + requests = listOf( + SearchForFacets( + indexName = "theIndexName", + type = SearchTypeFacet.entries.first { it.value == "facet" }, + facet = "theFacet", + facetQuery = "theFacetQuery", + query = "theQuery", + maxFacetHits = 50, + ), + ), + strategy = SearchStrategy.entries.first { it.value == "stopIfEnoughMatches" }, + ), + ) + }, + intercept = { + assertEquals("/1/indexes/*/queries".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"requests":[{"indexName":"theIndexName","type":"facet","facet":"theFacet","facetQuery":"theFacetQuery","query":"theQuery","maxFacetHits":50}],"strategy":"stopIfEnoughMatches"}""", it.body) + }, + ) + } + + @Test + fun `search for multiple mixed requests in multiple indices with minimal parameters`() = runTest { + client.runTest( + call = { + search( + searchMethodParams = SearchMethodParams( + requests = listOf( + SearchForHits( + indexName = "theIndexName", + ), + SearchForFacets( + indexName = "theIndexName2", + type = SearchTypeFacet.entries.first { it.value == "facet" }, + facet = "theFacet", + ), + SearchForHits( + indexName = "theIndexName", + type = SearchTypeDefault.entries.first { it.value == "default" }, + ), + ), + strategy = SearchStrategy.entries.first { it.value == "stopIfEnoughMatches" }, + ), + ) + }, + intercept = { + assertEquals("/1/indexes/*/queries".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"requests":[{"indexName":"theIndexName"},{"indexName":"theIndexName2","type":"facet","facet":"theFacet"},{"indexName":"theIndexName","type":"default"}],"strategy":"stopIfEnoughMatches"}""", it.body) + }, + ) + } + + @Test + fun `search for multiple mixed requests in multiple indices with all parameters`() = runTest { + client.runTest( + call = { + search( + searchMethodParams = SearchMethodParams( + requests = listOf( + SearchForFacets( + indexName = "theIndexName", + type = SearchTypeFacet.entries.first { it.value == "facet" }, + facet = "theFacet", + facetQuery = "theFacetQuery", + query = "theQuery", + maxFacetHits = 50, + ), + SearchForHits( + indexName = "theIndexName", + query = "myQuery", + hitsPerPage = 50, + type = SearchTypeDefault.entries.first { it.value == "default" }, + ), + ), + strategy = SearchStrategy.entries.first { it.value == "stopIfEnoughMatches" }, + ), + ) + }, + intercept = { + assertEquals("/1/indexes/*/queries".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"requests":[{"indexName":"theIndexName","type":"facet","facet":"theFacet","facetQuery":"theFacetQuery","query":"theQuery","maxFacetHits":50},{"indexName":"theIndexName","query":"myQuery","hitsPerPage":50,"type":"default"}],"strategy":"stopIfEnoughMatches"}""", it.body) + }, + ) + } + + @Test + fun `search filters accept all of the possible shapes`() = runTest { + client.runTest( + call = { + search( + searchMethodParams = SearchMethodParams( + requests = listOf( + SearchForHits( + indexName = "theIndexName", + facetFilters = FacetFilters.of("mySearch:filters"), + reRankingApplyFilter = ReRankingApplyFilter.of("mySearch:filters"), + tagFilters = TagFilters.of("mySearch:filters"), + numericFilters = NumericFilters.of("mySearch:filters"), + optionalFilters = OptionalFilters.of("mySearch:filters"), + ), + SearchForHits( + indexName = "theIndexName", + facetFilters = FacetFilters.of(listOf(MixedSearchFilters.of("mySearch:filters"), MixedSearchFilters.of(listOf("mySearch:filters")))), + reRankingApplyFilter = ReRankingApplyFilter.of(listOf(MixedSearchFilters.of("mySearch:filters"), MixedSearchFilters.of(listOf("mySearch:filters")))), + tagFilters = TagFilters.of(listOf(MixedSearchFilters.of("mySearch:filters"), MixedSearchFilters.of(listOf("mySearch:filters")))), + numericFilters = NumericFilters.of(listOf(MixedSearchFilters.of("mySearch:filters"), MixedSearchFilters.of(listOf("mySearch:filters")))), + optionalFilters = OptionalFilters.of(listOf(MixedSearchFilters.of("mySearch:filters"), MixedSearchFilters.of(listOf("mySearch:filters")))), + ), + ), + ), + ) + }, + intercept = { + assertEquals("/1/indexes/*/queries".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"requests":[{"indexName":"theIndexName","facetFilters":"mySearch:filters","reRankingApplyFilter":"mySearch:filters","tagFilters":"mySearch:filters","numericFilters":"mySearch:filters","optionalFilters":"mySearch:filters"},{"indexName":"theIndexName","facetFilters":["mySearch:filters",["mySearch:filters"]],"reRankingApplyFilter":["mySearch:filters",["mySearch:filters"]],"tagFilters":["mySearch:filters",["mySearch:filters"]],"numericFilters":["mySearch:filters",["mySearch:filters"]],"optionalFilters":["mySearch:filters",["mySearch:filters"]]}]}""", it.body) + }, + ) + } + + @Test + fun `search with all search parameters`() = runTest { + client.runTest( + call = { + search( + searchMethodParams = SearchMethodParams( + requests = listOf( + SearchForHits( + advancedSyntax = true, + advancedSyntaxFeatures = listOf(AdvancedSyntaxFeatures.entries.first { it.value == "exactPhrase" }), + allowTyposOnNumericTokens = true, + alternativesAsExact = listOf(AlternativesAsExact.entries.first { it.value == "multiWordsSynonym" }), + analytics = true, + analyticsTags = listOf(""), + aroundLatLng = "", + aroundLatLngViaIP = true, + aroundPrecision = AroundPrecision.of(0), + aroundRadius = AroundRadiusAll.entries.first { it.value == "all" }, + attributeCriteriaComputedByMinProximity = true, + attributesForFaceting = listOf(""), + attributesToHighlight = listOf(""), + attributesToRetrieve = listOf(""), + attributesToSnippet = listOf(""), + clickAnalytics = true, + customRanking = listOf(""), + decompoundQuery = true, + disableExactOnAttributes = listOf(""), + disableTypoToleranceOnAttributes = listOf(""), + distinct = Distinct.of(0), + enableABTest = true, + enablePersonalization = true, + enableReRanking = true, + enableRules = true, + exactOnSingleWordQuery = ExactOnSingleWordQuery.entries.first { it.value == "attribute" }, + explain = listOf("foo", "bar"), + facetFilters = FacetFilters.of(listOf(MixedSearchFilters.of(""))), + facetingAfterDistinct = true, + facets = listOf(""), + filters = "", + getRankingInfo = true, + highlightPostTag = "", + highlightPreTag = "", + hitsPerPage = 1, + ignorePlurals = IgnorePlurals.of(false), + indexName = "theIndexName", + insideBoundingBox = listOf(listOf(47.3165, 4.9665, 47.3424, 5.0201), listOf(40.9234, 2.1185, 38.643, 1.9916)), + insidePolygon = listOf(listOf(47.3165, 4.9665, 47.3424, 5.0201, 47.32, 4.9), listOf(40.9234, 2.1185, 38.643, 1.9916, 39.2587, 2.0104)), + keepDiacriticsOnCharacters = "", + length = 1, + maxValuesPerFacet = 0, + minProximity = 1, + minWordSizefor1Typo = 0, + minWordSizefor2Typos = 0, + minimumAroundRadius = 1, + naturalLanguages = listOf(""), + numericFilters = NumericFilters.of(listOf(MixedSearchFilters.of(""))), + offset = 0, + optionalFilters = OptionalFilters.of(listOf(MixedSearchFilters.of(""))), + optionalWords = listOf(""), + page = 0, + percentileComputation = true, + personalizationImpact = 0, + query = "", + queryLanguages = listOf(""), + queryType = QueryType.entries.first { it.value == "prefixAll" }, + ranking = listOf(""), + reRankingApplyFilter = ReRankingApplyFilter.of(listOf(MixedSearchFilters.of(""))), + relevancyStrictness = 0, + removeStopWords = RemoveStopWords.of(true), + removeWordsIfNoResults = RemoveWordsIfNoResults.entries.first { it.value == "allOptional" }, + renderingContent = RenderingContent( + facetOrdering = FacetOrdering( + facets = Facets( + order = listOf("a", "b"), + ), + values = mapOf( + "a" to Value( + order = listOf("b"), + sortRemainingBy = SortRemainingBy.entries.first { it.value == "count" }, + ), + ), + ), + ), + replaceSynonymsInHighlight = true, + responseFields = listOf(""), + restrictHighlightAndSnippetArrays = true, + restrictSearchableAttributes = listOf(""), + ruleContexts = listOf(""), + similarQuery = "", + snippetEllipsisText = "", + sortFacetValuesBy = "", + sumOrFiltersScores = true, + synonyms = true, + tagFilters = TagFilters.of(listOf(MixedSearchFilters.of(""))), + type = SearchTypeDefault.entries.first { it.value == "default" }, + typoTolerance = TypoToleranceEnum.entries.first { it.value == "min" }, + userToken = "", + ), + ), + ), + ) + }, + intercept = { + assertEquals("/1/indexes/*/queries".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"requests":[{"advancedSyntax":true,"advancedSyntaxFeatures":["exactPhrase"],"allowTyposOnNumericTokens":true,"alternativesAsExact":["multiWordsSynonym"],"analytics":true,"analyticsTags":[""],"aroundLatLng":"","aroundLatLngViaIP":true,"aroundPrecision":0,"aroundRadius":"all","attributeCriteriaComputedByMinProximity":true,"attributesForFaceting":[""],"attributesToHighlight":[""],"attributesToRetrieve":[""],"attributesToSnippet":[""],"clickAnalytics":true,"customRanking":[""],"decompoundQuery":true,"disableExactOnAttributes":[""],"disableTypoToleranceOnAttributes":[""],"distinct":0,"enableABTest":true,"enablePersonalization":true,"enableReRanking":true,"enableRules":true,"exactOnSingleWordQuery":"attribute","explain":["foo","bar"],"facetFilters":[""],"facetingAfterDistinct":true,"facets":[""],"filters":"","getRankingInfo":true,"highlightPostTag":"","highlightPreTag":"","hitsPerPage":1,"ignorePlurals":false,"indexName":"theIndexName","insideBoundingBox":[[47.3165,4.9665,47.3424,5.0201],[40.9234,2.1185,38.643,1.9916]],"insidePolygon":[[47.3165,4.9665,47.3424,5.0201,47.32,4.9],[40.9234,2.1185,38.643,1.9916,39.2587,2.0104]],"keepDiacriticsOnCharacters":"","length":1,"maxValuesPerFacet":0,"minProximity":1,"minWordSizefor1Typo":0,"minWordSizefor2Typos":0,"minimumAroundRadius":1,"naturalLanguages":[""],"numericFilters":[""],"offset":0,"optionalFilters":[""],"optionalWords":[""],"page":0,"percentileComputation":true,"personalizationImpact":0,"query":"","queryLanguages":[""],"queryType":"prefixAll","ranking":[""],"reRankingApplyFilter":[""],"relevancyStrictness":0,"removeStopWords":true,"removeWordsIfNoResults":"allOptional","renderingContent":{"facetOrdering":{"facets":{"order":["a","b"]},"values":{"a":{"order":["b"],"sortRemainingBy":"count"}}}},"replaceSynonymsInHighlight":true,"responseFields":[""],"restrictHighlightAndSnippetArrays":true,"restrictSearchableAttributes":[""],"ruleContexts":[""],"similarQuery":"","snippetEllipsisText":"","sortFacetValuesBy":"","sumOrFiltersScores":true,"synonyms":true,"tagFilters":[""],"type":"default","typoTolerance":"min","userToken":""}]}""", it.body) + }, + ) + } + + // searchDictionaryEntries + + @Test + fun `get searchDictionaryEntries results with minimal parameters`() = runTest { + client.runTest( + call = { + searchDictionaryEntries( + dictionaryName = DictionaryType.entries.first { it.value == "compounds" }, + searchDictionaryEntriesParams = SearchDictionaryEntriesParams( + query = "foo", + ), + ) + }, + intercept = { + assertEquals("/1/dictionaries/compounds/search".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"query":"foo"}""", it.body) + }, + ) + } + + @Test + fun `get searchDictionaryEntries results with all parameters`() = runTest { + client.runTest( + call = { + searchDictionaryEntries( + dictionaryName = DictionaryType.entries.first { it.value == "compounds" }, + searchDictionaryEntriesParams = SearchDictionaryEntriesParams( + query = "foo", + page = 4, + hitsPerPage = 2, + language = "fr", + ), + ) + }, + intercept = { + assertEquals("/1/dictionaries/compounds/search".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"query":"foo","page":4,"hitsPerPage":2,"language":"fr"}""", it.body) + }, + ) + } + + // searchForFacetValues + + @Test + fun `get searchForFacetValues results with minimal parameters`() = runTest { + client.runTest( + call = { + searchForFacetValues( + indexName = "indexName", + facetName = "facetName", + ) + }, + intercept = { + assertEquals("/1/indexes/indexName/facets/facetName/query".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{}""", it.body) + }, + ) + } + + @Test + fun `get searchForFacetValues results with all parameters`() = runTest { + client.runTest( + call = { + searchForFacetValues( + indexName = "indexName", + facetName = "facetName", + searchForFacetValuesRequest = SearchForFacetValuesRequest( + params = "query=foo&facetFilters=['bar']", + facetQuery = "foo", + maxFacetHits = 42, + ), + ) + }, + intercept = { + assertEquals("/1/indexes/indexName/facets/facetName/query".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"params":"query=foo&facetFilters=['bar']","facetQuery":"foo","maxFacetHits":42}""", it.body) + }, + ) + } + + // searchRules + + @Test + fun `searchRules0`() = runTest { + client.runTest( + call = { + searchRules( + indexName = "indexName", + searchRulesParams = SearchRulesParams( + query = "something", + ), + ) + }, + intercept = { + assertEquals("/1/indexes/indexName/rules/search".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"query":"something"}""", it.body) + }, + ) + } + + // searchSingleIndex + + @Test + fun `search with minimal parameters`() = runTest { + client.runTest( + call = { + searchSingleIndex( + indexName = "indexName", + ) + }, + intercept = { + assertEquals("/1/indexes/indexName/query".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{}""", it.body) + }, + ) + } + + @Test + fun `search with searchParams`() = runTest { + client.runTest( + call = { + searchSingleIndex( + indexName = "indexName", + searchParams = SearchParamsObject( + query = "myQuery", + facetFilters = FacetFilters.of(listOf(MixedSearchFilters.of("tags:algolia"))), + ), + ) + }, + intercept = { + assertEquals("/1/indexes/indexName/query".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"query":"myQuery","facetFilters":["tags:algolia"]}""", it.body) + }, + ) + } + + // searchSynonyms + + @Test + fun `searchSynonyms with minimal parameters`() = runTest { + client.runTest( + call = { + searchSynonyms( + indexName = "indexName", + ) + }, + intercept = { + assertEquals("/1/indexes/indexName/synonyms/search".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{}""", it.body) + }, + ) + } + + @Test + fun `searchSynonyms with all parameters`() = runTest { + client.runTest( + call = { + searchSynonyms( + indexName = "indexName", + type = SynonymType.entries.first { it.value == "altcorrection1" }, + page = 10, + hitsPerPage = 10, + searchSynonymsParams = SearchSynonymsParams( + query = "myQuery", + ), + ) + }, + intercept = { + assertEquals("/1/indexes/indexName/synonyms/search".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertContainsAll("""{"type":"altcorrection1","page":"10","hitsPerPage":"10"}""", it.url.parameters) + assertJsonBody("""{"query":"myQuery"}""", it.body) + }, + ) + } + + // searchUserIds + + @Test + fun `searchUserIds0`() = runTest { + client.runTest( + call = { + searchUserIds( + searchUserIdsParams = SearchUserIdsParams( + query = "test", + clusterName = "theClusterName", + page = 5, + hitsPerPage = 10, + ), + ) + }, + intercept = { + assertEquals("/1/clusters/mapping/search".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("POST"), it.method) + assertJsonBody("""{"query":"test","clusterName":"theClusterName","page":5,"hitsPerPage":10}""", it.body) + }, + ) + } + + // setDictionarySettings + + @Test + fun `get setDictionarySettings results with minimal parameters`() = runTest { + client.runTest( + call = { + setDictionarySettings( + dictionarySettingsParams = DictionarySettingsParams( + disableStandardEntries = StandardEntries( + plurals = mapOf("fr" to false, "en" to false, "ru" to true), + ), + ), + ) + }, + intercept = { + assertEquals("/1/dictionaries/*/settings".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("PUT"), it.method) + assertJsonBody("""{"disableStandardEntries":{"plurals":{"fr":false,"en":false,"ru":true}}}""", it.body) + }, + ) + } + + @Test + fun `get setDictionarySettings results with all parameters`() = runTest { + client.runTest( + call = { + setDictionarySettings( + dictionarySettingsParams = DictionarySettingsParams( + disableStandardEntries = StandardEntries( + plurals = mapOf("fr" to false, "en" to false, "ru" to true), + stopwords = mapOf("fr" to false), + compounds = mapOf("ru" to true), + ), + ), + ) + }, + intercept = { + assertEquals("/1/dictionaries/*/settings".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("PUT"), it.method) + assertJsonBody("""{"disableStandardEntries":{"plurals":{"fr":false,"en":false,"ru":true},"stopwords":{"fr":false},"compounds":{"ru":true}}}""", it.body) + }, + ) + } + + // setSettings + + @Test + fun `setSettings with minimal parameters`() = runTest { + client.runTest( + call = { + setSettings( + indexName = "theIndexName", + indexSettings = IndexSettings( + paginationLimitedTo = 10, + ), + forwardToReplicas = true, + ) + }, + intercept = { + assertEquals("/1/indexes/theIndexName/settings".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("PUT"), it.method) + assertContainsAll("""{"forwardToReplicas":"true"}""", it.url.parameters) + assertJsonBody("""{"paginationLimitedTo":10}""", it.body) + }, + ) + } + + @Test + fun `setSettings allow boolean 'typoTolerance'`() = runTest { + client.runTest( + call = { + setSettings( + indexName = "theIndexName", + indexSettings = IndexSettings( + typoTolerance = TypoTolerance.of(true), + ), + forwardToReplicas = true, + ) + }, + intercept = { + assertEquals("/1/indexes/theIndexName/settings".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("PUT"), it.method) + assertContainsAll("""{"forwardToReplicas":"true"}""", it.url.parameters) + assertJsonBody("""{"typoTolerance":true}""", it.body) + }, + ) + } + + @Test + fun `setSettings allow enum 'typoTolerance'`() = runTest { + client.runTest( + call = { + setSettings( + indexName = "theIndexName", + indexSettings = IndexSettings( + typoTolerance = TypoToleranceEnum.entries.first { it.value == "min" }, + ), + forwardToReplicas = true, + ) + }, + intercept = { + assertEquals("/1/indexes/theIndexName/settings".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("PUT"), it.method) + assertContainsAll("""{"forwardToReplicas":"true"}""", it.url.parameters) + assertJsonBody("""{"typoTolerance":"min"}""", it.body) + }, + ) + } + + @Test + fun `setSettings allow boolean 'ignorePlurals'`() = runTest { + client.runTest( + call = { + setSettings( + indexName = "theIndexName", + indexSettings = IndexSettings( + ignorePlurals = IgnorePlurals.of(true), + ), + forwardToReplicas = true, + ) + }, + intercept = { + assertEquals("/1/indexes/theIndexName/settings".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("PUT"), it.method) + assertContainsAll("""{"forwardToReplicas":"true"}""", it.url.parameters) + assertJsonBody("""{"ignorePlurals":true}""", it.body) + }, + ) + } + + @Test + fun `setSettings allow list of string 'ignorePlurals'`() = runTest { + client.runTest( + call = { + setSettings( + indexName = "theIndexName", + indexSettings = IndexSettings( + ignorePlurals = IgnorePlurals.of(listOf("algolia")), + ), + forwardToReplicas = true, + ) + }, + intercept = { + assertEquals("/1/indexes/theIndexName/settings".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("PUT"), it.method) + assertContainsAll("""{"forwardToReplicas":"true"}""", it.url.parameters) + assertJsonBody("""{"ignorePlurals":["algolia"]}""", it.body) + }, + ) + } + + @Test + fun `setSettings allow boolean 'removeStopWords'`() = runTest { + client.runTest( + call = { + setSettings( + indexName = "theIndexName", + indexSettings = IndexSettings( + removeStopWords = RemoveStopWords.of(true), + ), + forwardToReplicas = true, + ) + }, + intercept = { + assertEquals("/1/indexes/theIndexName/settings".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("PUT"), it.method) + assertContainsAll("""{"forwardToReplicas":"true"}""", it.url.parameters) + assertJsonBody("""{"removeStopWords":true}""", it.body) + }, + ) + } + + @Test + fun `setSettings allow list of string 'removeStopWords'`() = runTest { + client.runTest( + call = { + setSettings( + indexName = "theIndexName", + indexSettings = IndexSettings( + removeStopWords = RemoveStopWords.of(listOf("algolia")), + ), + forwardToReplicas = true, + ) + }, + intercept = { + assertEquals("/1/indexes/theIndexName/settings".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("PUT"), it.method) + assertContainsAll("""{"forwardToReplicas":"true"}""", it.url.parameters) + assertJsonBody("""{"removeStopWords":["algolia"]}""", it.body) + }, + ) + } + + @Test + fun `setSettings allow boolean 'distinct'`() = runTest { + client.runTest( + call = { + setSettings( + indexName = "theIndexName", + indexSettings = IndexSettings( + distinct = Distinct.of(true), + ), + forwardToReplicas = true, + ) + }, + intercept = { + assertEquals("/1/indexes/theIndexName/settings".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("PUT"), it.method) + assertContainsAll("""{"forwardToReplicas":"true"}""", it.url.parameters) + assertJsonBody("""{"distinct":true}""", it.body) + }, + ) + } + + @Test + fun `setSettings allow integers for 'distinct'`() = runTest { + client.runTest( + call = { + setSettings( + indexName = "theIndexName", + indexSettings = IndexSettings( + distinct = Distinct.of(1), + ), + forwardToReplicas = true, + ) + }, + intercept = { + assertEquals("/1/indexes/theIndexName/settings".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("PUT"), it.method) + assertContainsAll("""{"forwardToReplicas":"true"}""", it.url.parameters) + assertJsonBody("""{"distinct":1}""", it.body) + }, + ) + } + + @Test + fun `setSettings allow all 'indexSettings'`() = runTest { + client.runTest( + call = { + setSettings( + indexName = "theIndexName", + indexSettings = IndexSettings( + advancedSyntax = true, + advancedSyntaxFeatures = listOf(AdvancedSyntaxFeatures.entries.first { it.value == "exactPhrase" }), + allowCompressionOfIntegerArray = true, + allowTyposOnNumericTokens = true, + alternativesAsExact = listOf(AlternativesAsExact.entries.first { it.value == "singleWordSynonym" }), + attributeCriteriaComputedByMinProximity = true, + attributeForDistinct = "test", + attributesForFaceting = listOf("algolia"), + attributesToHighlight = listOf("algolia"), + attributesToRetrieve = listOf("algolia"), + attributesToSnippet = listOf("algolia"), + attributesToTransliterate = listOf("algolia"), + camelCaseAttributes = listOf("algolia"), + customNormalization = mapOf("algolia" to mapOf("aloglia" to "aglolia")), + customRanking = listOf("algolia"), + decompoundQuery = false, + decompoundedAttributes = buildJsonObject { + put( + "algolia", + JsonPrimitive("aloglia"), + ) + }, + disableExactOnAttributes = listOf("algolia"), + disablePrefixOnAttributes = listOf("algolia"), + disableTypoToleranceOnAttributes = listOf("algolia"), + disableTypoToleranceOnWords = listOf("algolia"), + distinct = Distinct.of(3), + enablePersonalization = true, + enableReRanking = false, + enableRules = true, + exactOnSingleWordQuery = ExactOnSingleWordQuery.entries.first { it.value == "attribute" }, + highlightPreTag = "", + highlightPostTag = "", + hitsPerPage = 10, + ignorePlurals = IgnorePlurals.of(false), + indexLanguages = listOf("algolia"), + keepDiacriticsOnCharacters = "abc", + maxFacetHits = 20, + maxValuesPerFacet = 30, + minProximity = 6, + minWordSizefor1Typo = 5, + minWordSizefor2Typos = 11, + mode = Mode.entries.first { it.value == "neuralSearch" }, + numericAttributesForFiltering = listOf("algolia"), + optionalWords = listOf("myspace"), + paginationLimitedTo = 0, + queryLanguages = listOf("algolia"), + queryType = QueryType.entries.first { it.value == "prefixLast" }, + ranking = listOf("geo"), + reRankingApplyFilter = ReRankingApplyFilter.of("mySearch:filters"), + relevancyStrictness = 10, + removeStopWords = RemoveStopWords.of(false), + removeWordsIfNoResults = RemoveWordsIfNoResults.entries.first { it.value == "lastWords" }, + renderingContent = RenderingContent( + facetOrdering = FacetOrdering( + facets = Facets( + order = listOf("a", "b"), + ), + values = mapOf( + "a" to Value( + order = listOf("b"), + sortRemainingBy = SortRemainingBy.entries.first { it.value == "count" }, + ), + ), + ), + ), + replaceSynonymsInHighlight = true, + replicas = listOf(""), + responseFields = listOf("algolia"), + restrictHighlightAndSnippetArrays = true, + searchableAttributes = listOf("foo"), + semanticSearch = SemanticSearch( + eventSources = listOf("foo"), + ), + separatorsToIndex = "bar", + snippetEllipsisText = "---", + sortFacetValuesBy = "date", + typoTolerance = TypoTolerance.of(false), + unretrievableAttributes = listOf("foo"), + userData = buildJsonObject { + put( + "user", + JsonPrimitive("data"), + ) + }, + ), + ) + }, + intercept = { + assertEquals("/1/indexes/theIndexName/settings".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("PUT"), it.method) + assertJsonBody("""{"advancedSyntax":true,"advancedSyntaxFeatures":["exactPhrase"],"allowCompressionOfIntegerArray":true,"allowTyposOnNumericTokens":true,"alternativesAsExact":["singleWordSynonym"],"attributeCriteriaComputedByMinProximity":true,"attributeForDistinct":"test","attributesForFaceting":["algolia"],"attributesToHighlight":["algolia"],"attributesToRetrieve":["algolia"],"attributesToSnippet":["algolia"],"attributesToTransliterate":["algolia"],"camelCaseAttributes":["algolia"],"customNormalization":{"algolia":{"aloglia":"aglolia"}},"customRanking":["algolia"],"decompoundQuery":false,"decompoundedAttributes":{"algolia":"aloglia"},"disableExactOnAttributes":["algolia"],"disablePrefixOnAttributes":["algolia"],"disableTypoToleranceOnAttributes":["algolia"],"disableTypoToleranceOnWords":["algolia"],"distinct":3,"enablePersonalization":true,"enableReRanking":false,"enableRules":true,"exactOnSingleWordQuery":"attribute","highlightPreTag":"","highlightPostTag":"","hitsPerPage":10,"ignorePlurals":false,"indexLanguages":["algolia"],"keepDiacriticsOnCharacters":"abc","maxFacetHits":20,"maxValuesPerFacet":30,"minProximity":6,"minWordSizefor1Typo":5,"minWordSizefor2Typos":11,"mode":"neuralSearch","numericAttributesForFiltering":["algolia"],"optionalWords":["myspace"],"paginationLimitedTo":0,"queryLanguages":["algolia"],"queryType":"prefixLast","ranking":["geo"],"reRankingApplyFilter":"mySearch:filters","relevancyStrictness":10,"removeStopWords":false,"removeWordsIfNoResults":"lastWords","renderingContent":{"facetOrdering":{"facets":{"order":["a","b"]},"values":{"a":{"order":["b"],"sortRemainingBy":"count"}}}},"replaceSynonymsInHighlight":true,"replicas":[""],"responseFields":["algolia"],"restrictHighlightAndSnippetArrays":true,"searchableAttributes":["foo"],"semanticSearch":{"eventSources":["foo"]},"separatorsToIndex":"bar","snippetEllipsisText":"---","sortFacetValuesBy":"date","typoTolerance":false,"unretrievableAttributes":["foo"],"userData":{"user":"data"}}""", it.body) + }, + ) + } + + // updateApiKey + + @Test + fun `updateApiKey0`() = runTest { + client.runTest( + call = { + updateApiKey( + key = "myApiKey", + apiKey = ApiKey( + acl = listOf(Acl.entries.first { it.value == "search" }, Acl.entries.first { it.value == "addObject" }), + validity = 300, + maxQueriesPerIPPerHour = 100, + maxHitsPerQuery = 20, + ), + ) + }, + intercept = { + assertEquals("/1/keys/myApiKey".toPathSegments(), it.url.pathSegments) + assertEquals(HttpMethod.parse("PUT"), it.method) + assertJsonBody("""{"acl":["search","addObject"],"validity":300,"maxQueriesPerIPPerHour":100,"maxHitsPerQuery":20}""", it.body) + }, + ) + } +} diff --git a/tests/output/php/src/requests/AbtestingTest.php b/tests/output/php/src/requests/AbtestingTest.php new file mode 100644 index 0000000000..95323120bf --- /dev/null +++ b/tests/output/php/src/requests/AbtestingTest.php @@ -0,0 +1,697 @@ +recordedRequests[] = $request; + + return new Response(200, [], '{}'); + } + + /** + * Test case for AddABTests + * addABTests with minimal parameters. + */ + public function testAddABTests0() + { + $client = $this->getClient(); + $client->addABTests( + ['endAt' => '2022-12-31T00:00:00.000Z', + 'name' => 'myABTest', + 'variants' => [ + ['index' => 'AB_TEST_1', + 'trafficPercentage' => 30, + ], + + ['index' => 'AB_TEST_2', + 'trafficPercentage' => 50, + ], + ], + ], + ); + + $this->assertRequests([ + [ + 'path' => '/2/abtests', + 'method' => 'POST', + 'body' => json_decode('{"endAt":"2022-12-31T00:00:00.000Z","name":"myABTest","variants":[{"index":"AB_TEST_1","trafficPercentage":30},{"index":"AB_TEST_2","trafficPercentage":50}]}'), + ], + ]); + } + + /** + * Test case for CustomDelete + * allow del method for a custom path with minimal parameters. + */ + public function testCustomDelete0() + { + $client = $this->getClient(); + $client->customDelete( + '/test/minimal', + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/minimal', + 'method' => 'DELETE', + 'body' => null, + ], + ]); + } + + /** + * Test case for CustomDelete + * allow del method for a custom path with all parameters. + */ + public function testCustomDelete1() + { + $client = $this->getClient(); + $client->customDelete( + '/test/all', + ['query' => 'parameters', + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/all', + 'method' => 'DELETE', + 'body' => null, + 'queryParameters' => json_decode('{"query":"parameters"}', true), + ], + ]); + } + + /** + * Test case for CustomGet + * allow get method for a custom path with minimal parameters. + */ + public function testCustomGet0() + { + $client = $this->getClient(); + $client->customGet( + '/test/minimal', + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/minimal', + 'method' => 'GET', + 'body' => null, + ], + ]); + } + + /** + * Test case for CustomGet + * allow get method for a custom path with all parameters. + */ + public function testCustomGet1() + { + $client = $this->getClient(); + $client->customGet( + '/test/all', + ['query' => 'parameters', + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/all', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"query":"parameters"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * allow post method for a custom path with minimal parameters. + */ + public function testCustomPost0() + { + $client = $this->getClient(); + $client->customPost( + '/test/minimal', + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/minimal', + 'method' => 'POST', + 'body' => json_decode('{}'), + ], + ]); + } + + /** + * Test case for CustomPost + * allow post method for a custom path with all parameters. + */ + public function testCustomPost1() + { + $client = $this->getClient(); + $client->customPost( + '/test/all', + ['query' => 'parameters', + ], + ['body' => 'parameters', + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/all', + 'method' => 'POST', + 'body' => json_decode('{"body":"parameters"}'), + 'queryParameters' => json_decode('{"query":"parameters"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions can override default query parameters. + */ + public function testCustomPost2() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'query' => 'myQueryParameter', + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"myQueryParameter"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions merges query parameters with default ones. + */ + public function testCustomPost3() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'query2' => 'myQueryParameter', + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters","query2":"myQueryParameter"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions can override default headers. + */ + public function testCustomPost4() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + ], + 'headers' => [ + 'x-algolia-api-key' => 'myApiKey', + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters"}', true), + 'headers' => json_decode('{"x-algolia-api-key":"myApiKey"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions merges headers with default ones. + */ + public function testCustomPost5() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + ], + 'headers' => [ + 'x-algolia-api-key' => 'myApiKey', + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters"}', true), + 'headers' => json_decode('{"x-algolia-api-key":"myApiKey"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions queryParameters accepts booleans. + */ + public function testCustomPost6() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'isItWorking' => true, + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters","isItWorking":"true"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions queryParameters accepts integers. + */ + public function testCustomPost7() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'myParam' => 2, + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters","myParam":"2"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions queryParameters accepts list of string. + */ + public function testCustomPost8() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'myParam' => ['c', 'd', + ], + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters","myParam":"c,d"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions queryParameters accepts list of booleans. + */ + public function testCustomPost9() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'myParam' => [true, true, false, + ], + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters","myParam":"true,true,false"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions queryParameters accepts list of integers. + */ + public function testCustomPost10() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'myParam' => [1, 2, + ], + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters","myParam":"1,2"}', true), + ], + ]); + } + + /** + * Test case for CustomPut + * allow put method for a custom path with minimal parameters. + */ + public function testCustomPut0() + { + $client = $this->getClient(); + $client->customPut( + '/test/minimal', + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/minimal', + 'method' => 'PUT', + 'body' => json_decode('{}'), + ], + ]); + } + + /** + * Test case for CustomPut + * allow put method for a custom path with all parameters. + */ + public function testCustomPut1() + { + $client = $this->getClient(); + $client->customPut( + '/test/all', + ['query' => 'parameters', + ], + ['body' => 'parameters', + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/all', + 'method' => 'PUT', + 'body' => json_decode('{"body":"parameters"}'), + 'queryParameters' => json_decode('{"query":"parameters"}', true), + ], + ]); + } + + /** + * Test case for DeleteABTest + * deleteABTest. + */ + public function testDeleteABTest0() + { + $client = $this->getClient(); + $client->deleteABTest( + 42, + ); + + $this->assertRequests([ + [ + 'path' => '/2/abtests/42', + 'method' => 'DELETE', + 'body' => null, + ], + ]); + } + + /** + * Test case for GetABTest + * getABTest. + */ + public function testGetABTest0() + { + $client = $this->getClient(); + $client->getABTest( + 42, + ); + + $this->assertRequests([ + [ + 'path' => '/2/abtests/42', + 'method' => 'GET', + 'body' => null, + ], + ]); + } + + /** + * Test case for ListABTests + * listABTests with minimal parameters. + */ + public function testListABTests0() + { + $client = $this->getClient(); + $client->listABTests(); + + $this->assertRequests([ + [ + 'path' => '/2/abtests', + 'method' => 'GET', + 'body' => null, + ], + ]); + } + + /** + * Test case for ListABTests + * listABTests with parameters. + */ + public function testListABTests1() + { + $client = $this->getClient(); + $client->listABTests( + 42, + 21, + 'foo', + 'bar', + ); + + $this->assertRequests([ + [ + 'path' => '/2/abtests', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"offset":"42","limit":"21","indexPrefix":"foo","indexSuffix":"bar"}', true), + ], + ]); + } + + /** + * Test case for StopABTest + * stopABTest. + */ + public function testStopABTest0() + { + $client = $this->getClient(); + $client->stopABTest( + 42, + ); + + $this->assertRequests([ + [ + 'path' => '/2/abtests/42/stop', + 'method' => 'POST', + 'body' => json_decode(''), + ], + ]); + } + + protected function assertRequests(array $requests) + { + $this->assertGreaterThan(0, count($requests)); + $this->assertEquals(count($requests), count($this->recordedRequests)); + + foreach ($requests as $i => $request) { + $recordedRequest = $this->recordedRequests[$i]; + + $this->assertEquals($request['method'], $recordedRequest->getMethod()); + + $this->assertEquals($request['path'], $recordedRequest->getUri()->getPath()); + + if (isset($request['body'])) { + $this->assertEquals( + json_encode($request['body']), + $recordedRequest->getBody()->getContents() + ); + } + + if (isset($request['queryParameters'])) { + $this->assertEquals( + Query::build($request['queryParameters']), + $recordedRequest->getUri()->getQuery() + ); + } + + if (isset($request['headers'])) { + foreach ($request['headers'] as $key => $value) { + $this->assertArrayHasKey( + $key, + $recordedRequest->getHeaders() + ); + $this->assertEquals( + $recordedRequest->getHeaderLine($key), + $value + ); + } + } + } + } + + protected function getClient() + { + $api = new ApiWrapper($this, AbtestingConfig::create(getenv('ALGOLIA_APP_ID'), getenv('ALGOLIA_API_KEY')), ClusterHosts::create('127.0.0.1')); + $config = AbtestingConfig::create('foo', 'bar'); + + return new AbtestingClient($api, $config); + } +} diff --git a/tests/output/php/src/requests/AnalyticsTest.php b/tests/output/php/src/requests/AnalyticsTest.php new file mode 100644 index 0000000000..b037a51c97 --- /dev/null +++ b/tests/output/php/src/requests/AnalyticsTest.php @@ -0,0 +1,1381 @@ +recordedRequests[] = $request; + + return new Response(200, [], '{}'); + } + + /** + * Test case for CustomDelete + * allow del method for a custom path with minimal parameters. + */ + public function testCustomDelete0() + { + $client = $this->getClient(); + $client->customDelete( + '/test/minimal', + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/minimal', + 'method' => 'DELETE', + 'body' => null, + ], + ]); + } + + /** + * Test case for CustomDelete + * allow del method for a custom path with all parameters. + */ + public function testCustomDelete1() + { + $client = $this->getClient(); + $client->customDelete( + '/test/all', + ['query' => 'parameters', + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/all', + 'method' => 'DELETE', + 'body' => null, + 'queryParameters' => json_decode('{"query":"parameters"}', true), + ], + ]); + } + + /** + * Test case for CustomGet + * allow get method for a custom path with minimal parameters. + */ + public function testCustomGet0() + { + $client = $this->getClient(); + $client->customGet( + '/test/minimal', + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/minimal', + 'method' => 'GET', + 'body' => null, + ], + ]); + } + + /** + * Test case for CustomGet + * allow get method for a custom path with all parameters. + */ + public function testCustomGet1() + { + $client = $this->getClient(); + $client->customGet( + '/test/all', + ['query' => 'parameters', + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/all', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"query":"parameters"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * allow post method for a custom path with minimal parameters. + */ + public function testCustomPost0() + { + $client = $this->getClient(); + $client->customPost( + '/test/minimal', + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/minimal', + 'method' => 'POST', + 'body' => json_decode('{}'), + ], + ]); + } + + /** + * Test case for CustomPost + * allow post method for a custom path with all parameters. + */ + public function testCustomPost1() + { + $client = $this->getClient(); + $client->customPost( + '/test/all', + ['query' => 'parameters', + ], + ['body' => 'parameters', + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/all', + 'method' => 'POST', + 'body' => json_decode('{"body":"parameters"}'), + 'queryParameters' => json_decode('{"query":"parameters"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions can override default query parameters. + */ + public function testCustomPost2() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'query' => 'myQueryParameter', + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"myQueryParameter"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions merges query parameters with default ones. + */ + public function testCustomPost3() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'query2' => 'myQueryParameter', + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters","query2":"myQueryParameter"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions can override default headers. + */ + public function testCustomPost4() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + ], + 'headers' => [ + 'x-algolia-api-key' => 'myApiKey', + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters"}', true), + 'headers' => json_decode('{"x-algolia-api-key":"myApiKey"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions merges headers with default ones. + */ + public function testCustomPost5() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + ], + 'headers' => [ + 'x-algolia-api-key' => 'myApiKey', + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters"}', true), + 'headers' => json_decode('{"x-algolia-api-key":"myApiKey"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions queryParameters accepts booleans. + */ + public function testCustomPost6() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'isItWorking' => true, + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters","isItWorking":"true"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions queryParameters accepts integers. + */ + public function testCustomPost7() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'myParam' => 2, + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters","myParam":"2"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions queryParameters accepts list of string. + */ + public function testCustomPost8() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'myParam' => ['c', 'd', + ], + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters","myParam":"c,d"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions queryParameters accepts list of booleans. + */ + public function testCustomPost9() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'myParam' => [true, true, false, + ], + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters","myParam":"true,true,false"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions queryParameters accepts list of integers. + */ + public function testCustomPost10() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'myParam' => [1, 2, + ], + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters","myParam":"1,2"}', true), + ], + ]); + } + + /** + * Test case for CustomPut + * allow put method for a custom path with minimal parameters. + */ + public function testCustomPut0() + { + $client = $this->getClient(); + $client->customPut( + '/test/minimal', + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/minimal', + 'method' => 'PUT', + 'body' => json_decode('{}'), + ], + ]); + } + + /** + * Test case for CustomPut + * allow put method for a custom path with all parameters. + */ + public function testCustomPut1() + { + $client = $this->getClient(); + $client->customPut( + '/test/all', + ['query' => 'parameters', + ], + ['body' => 'parameters', + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/all', + 'method' => 'PUT', + 'body' => json_decode('{"body":"parameters"}'), + 'queryParameters' => json_decode('{"query":"parameters"}', true), + ], + ]); + } + + /** + * Test case for GetAverageClickPosition + * get getAverageClickPosition with minimal parameters. + */ + public function testGetAverageClickPosition0() + { + $client = $this->getClient(); + $client->getAverageClickPosition( + 'index', + ); + + $this->assertRequests([ + [ + 'path' => '/2/clicks/averageClickPosition', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"index":"index"}', true), + ], + ]); + } + + /** + * Test case for GetAverageClickPosition + * get getAverageClickPosition with all parameters. + */ + public function testGetAverageClickPosition1() + { + $client = $this->getClient(); + $client->getAverageClickPosition( + 'index', + '1999-09-19', + '2001-01-01', + 'tag', + ); + + $this->assertRequests([ + [ + 'path' => '/2/clicks/averageClickPosition', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}', true), + ], + ]); + } + + /** + * Test case for GetClickPositions + * get getClickPositions with minimal parameters. + */ + public function testGetClickPositions0() + { + $client = $this->getClient(); + $client->getClickPositions( + 'index', + ); + + $this->assertRequests([ + [ + 'path' => '/2/clicks/positions', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"index":"index"}', true), + ], + ]); + } + + /** + * Test case for GetClickPositions + * get getClickPositions with all parameters. + */ + public function testGetClickPositions1() + { + $client = $this->getClient(); + $client->getClickPositions( + 'index', + '1999-09-19', + '2001-01-01', + 'tag', + ); + + $this->assertRequests([ + [ + 'path' => '/2/clicks/positions', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}', true), + ], + ]); + } + + /** + * Test case for GetClickThroughRate + * get getClickThroughRate with minimal parameters. + */ + public function testGetClickThroughRate0() + { + $client = $this->getClient(); + $client->getClickThroughRate( + 'index', + ); + + $this->assertRequests([ + [ + 'path' => '/2/clicks/clickThroughRate', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"index":"index"}', true), + ], + ]); + } + + /** + * Test case for GetClickThroughRate + * get getClickThroughRate with all parameters. + */ + public function testGetClickThroughRate1() + { + $client = $this->getClient(); + $client->getClickThroughRate( + 'index', + '1999-09-19', + '2001-01-01', + 'tag', + ); + + $this->assertRequests([ + [ + 'path' => '/2/clicks/clickThroughRate', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}', true), + ], + ]); + } + + /** + * Test case for GetConversationRate + * get getConversationRate with minimal parameters. + */ + public function testGetConversationRate0() + { + $client = $this->getClient(); + $client->getConversationRate( + 'index', + ); + + $this->assertRequests([ + [ + 'path' => '/2/conversions/conversionRate', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"index":"index"}', true), + ], + ]); + } + + /** + * Test case for GetConversationRate + * get getConversationRate with all parameters. + */ + public function testGetConversationRate1() + { + $client = $this->getClient(); + $client->getConversationRate( + 'index', + '1999-09-19', + '2001-01-01', + 'tag', + ); + + $this->assertRequests([ + [ + 'path' => '/2/conversions/conversionRate', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}', true), + ], + ]); + } + + /** + * Test case for GetNoClickRate + * get getNoClickRate with minimal parameters. + */ + public function testGetNoClickRate0() + { + $client = $this->getClient(); + $client->getNoClickRate( + 'index', + ); + + $this->assertRequests([ + [ + 'path' => '/2/searches/noClickRate', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"index":"index"}', true), + ], + ]); + } + + /** + * Test case for GetNoClickRate + * get getNoClickRate with all parameters. + */ + public function testGetNoClickRate1() + { + $client = $this->getClient(); + $client->getNoClickRate( + 'index', + '1999-09-19', + '2001-01-01', + 'tag', + ); + + $this->assertRequests([ + [ + 'path' => '/2/searches/noClickRate', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}', true), + ], + ]); + } + + /** + * Test case for GetNoResultsRate + * get getNoResultsRate with minimal parameters. + */ + public function testGetNoResultsRate0() + { + $client = $this->getClient(); + $client->getNoResultsRate( + 'index', + ); + + $this->assertRequests([ + [ + 'path' => '/2/searches/noResultRate', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"index":"index"}', true), + ], + ]); + } + + /** + * Test case for GetNoResultsRate + * get getNoResultsRate with all parameters. + */ + public function testGetNoResultsRate1() + { + $client = $this->getClient(); + $client->getNoResultsRate( + 'index', + '1999-09-19', + '2001-01-01', + 'tag', + ); + + $this->assertRequests([ + [ + 'path' => '/2/searches/noResultRate', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}', true), + ], + ]); + } + + /** + * Test case for GetSearchesCount + * get getSearchesCount with minimal parameters. + */ + public function testGetSearchesCount0() + { + $client = $this->getClient(); + $client->getSearchesCount( + 'index', + ); + + $this->assertRequests([ + [ + 'path' => '/2/searches/count', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"index":"index"}', true), + ], + ]); + } + + /** + * Test case for GetSearchesCount + * get getSearchesCount with all parameters. + */ + public function testGetSearchesCount1() + { + $client = $this->getClient(); + $client->getSearchesCount( + 'index', + '1999-09-19', + '2001-01-01', + 'tag', + ); + + $this->assertRequests([ + [ + 'path' => '/2/searches/count', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}', true), + ], + ]); + } + + /** + * Test case for GetSearchesNoClicks + * get getSearchesNoClicks with minimal parameters. + */ + public function testGetSearchesNoClicks0() + { + $client = $this->getClient(); + $client->getSearchesNoClicks( + 'index', + ); + + $this->assertRequests([ + [ + 'path' => '/2/searches/noClicks', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"index":"index"}', true), + ], + ]); + } + + /** + * Test case for GetSearchesNoClicks + * get getSearchesNoClicks with all parameters. + */ + public function testGetSearchesNoClicks1() + { + $client = $this->getClient(); + $client->getSearchesNoClicks( + 'index', + '1999-09-19', + '2001-01-01', + 21, + 42, + 'tag', + ); + + $this->assertRequests([ + [ + 'path' => '/2/searches/noClicks', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}', true), + ], + ]); + } + + /** + * Test case for GetSearchesNoResults + * get getSearchesNoResults with minimal parameters. + */ + public function testGetSearchesNoResults0() + { + $client = $this->getClient(); + $client->getSearchesNoResults( + 'index', + ); + + $this->assertRequests([ + [ + 'path' => '/2/searches/noResults', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"index":"index"}', true), + ], + ]); + } + + /** + * Test case for GetSearchesNoResults + * get getSearchesNoResults with all parameters. + */ + public function testGetSearchesNoResults1() + { + $client = $this->getClient(); + $client->getSearchesNoResults( + 'index', + '1999-09-19', + '2001-01-01', + 21, + 42, + 'tag', + ); + + $this->assertRequests([ + [ + 'path' => '/2/searches/noResults', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}', true), + ], + ]); + } + + /** + * Test case for GetStatus + * get getStatus with minimal parameters. + */ + public function testGetStatus0() + { + $client = $this->getClient(); + $client->getStatus( + 'index', + ); + + $this->assertRequests([ + [ + 'path' => '/2/status', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"index":"index"}', true), + ], + ]); + } + + /** + * Test case for GetTopCountries + * get getTopCountries with minimal parameters. + */ + public function testGetTopCountries0() + { + $client = $this->getClient(); + $client->getTopCountries( + 'index', + ); + + $this->assertRequests([ + [ + 'path' => '/2/countries', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"index":"index"}', true), + ], + ]); + } + + /** + * Test case for GetTopCountries + * get getTopCountries with all parameters. + */ + public function testGetTopCountries1() + { + $client = $this->getClient(); + $client->getTopCountries( + 'index', + '1999-09-19', + '2001-01-01', + 21, + 42, + 'tag', + ); + + $this->assertRequests([ + [ + 'path' => '/2/countries', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}', true), + ], + ]); + } + + /** + * Test case for GetTopFilterAttributes + * get getTopFilterAttributes with minimal parameters. + */ + public function testGetTopFilterAttributes0() + { + $client = $this->getClient(); + $client->getTopFilterAttributes( + 'index', + ); + + $this->assertRequests([ + [ + 'path' => '/2/filters', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"index":"index"}', true), + ], + ]); + } + + /** + * Test case for GetTopFilterAttributes + * get getTopFilterAttributes with all parameters. + */ + public function testGetTopFilterAttributes1() + { + $client = $this->getClient(); + $client->getTopFilterAttributes( + 'index', + 'mySearch', + '1999-09-19', + '2001-01-01', + 21, + 42, + 'tag', + ); + + $this->assertRequests([ + [ + 'path' => '/2/filters', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"index":"index","search":"mySearch","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}', true), + ], + ]); + } + + /** + * Test case for GetTopFilterForAttribute + * get getTopFilterForAttribute with minimal parameters. + */ + public function testGetTopFilterForAttribute0() + { + $client = $this->getClient(); + $client->getTopFilterForAttribute( + 'myAttribute', + 'index', + ); + + $this->assertRequests([ + [ + 'path' => '/2/filters/myAttribute', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"index":"index"}', true), + ], + ]); + } + + /** + * Test case for GetTopFilterForAttribute + * get getTopFilterForAttribute with minimal parameters and multiple attributes. + */ + public function testGetTopFilterForAttribute1() + { + $client = $this->getClient(); + $client->getTopFilterForAttribute( + 'myAttribute1,myAttribute2', + 'index', + ); + + $this->assertRequests([ + [ + 'path' => '/2/filters/myAttribute1%2CmyAttribute2', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"index":"index"}', true), + ], + ]); + } + + /** + * Test case for GetTopFilterForAttribute + * get getTopFilterForAttribute with all parameters. + */ + public function testGetTopFilterForAttribute2() + { + $client = $this->getClient(); + $client->getTopFilterForAttribute( + 'myAttribute', + 'index', + 'mySearch', + '1999-09-19', + '2001-01-01', + 21, + 42, + 'tag', + ); + + $this->assertRequests([ + [ + 'path' => '/2/filters/myAttribute', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"index":"index","search":"mySearch","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}', true), + ], + ]); + } + + /** + * Test case for GetTopFilterForAttribute + * get getTopFilterForAttribute with all parameters and multiple attributes. + */ + public function testGetTopFilterForAttribute3() + { + $client = $this->getClient(); + $client->getTopFilterForAttribute( + 'myAttribute1,myAttribute2', + 'index', + 'mySearch', + '1999-09-19', + '2001-01-01', + 21, + 42, + 'tag', + ); + + $this->assertRequests([ + [ + 'path' => '/2/filters/myAttribute1%2CmyAttribute2', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"index":"index","search":"mySearch","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}', true), + ], + ]); + } + + /** + * Test case for GetTopFiltersNoResults + * get getTopFiltersNoResults with minimal parameters. + */ + public function testGetTopFiltersNoResults0() + { + $client = $this->getClient(); + $client->getTopFiltersNoResults( + 'index', + ); + + $this->assertRequests([ + [ + 'path' => '/2/filters/noResults', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"index":"index"}', true), + ], + ]); + } + + /** + * Test case for GetTopFiltersNoResults + * get getTopFiltersNoResults with all parameters. + */ + public function testGetTopFiltersNoResults1() + { + $client = $this->getClient(); + $client->getTopFiltersNoResults( + 'index', + 'mySearch', + '1999-09-19', + '2001-01-01', + 21, + 42, + 'tag', + ); + + $this->assertRequests([ + [ + 'path' => '/2/filters/noResults', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"index":"index","search":"mySearch","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}', true), + ], + ]); + } + + /** + * Test case for GetTopHits + * get getTopHits with minimal parameters. + */ + public function testGetTopHits0() + { + $client = $this->getClient(); + $client->getTopHits( + 'index', + ); + + $this->assertRequests([ + [ + 'path' => '/2/hits', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"index":"index"}', true), + ], + ]); + } + + /** + * Test case for GetTopHits + * get getTopHits with all parameters. + */ + public function testGetTopHits1() + { + $client = $this->getClient(); + $client->getTopHits( + 'index', + 'mySearch', + true, + '1999-09-19', + '2001-01-01', + 21, + 42, + 'tag', + ); + + $this->assertRequests([ + [ + 'path' => '/2/hits', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"index":"index","search":"mySearch","clickAnalytics":"true","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}', true), + ], + ]); + } + + /** + * Test case for GetTopSearches + * get getTopSearches with minimal parameters. + */ + public function testGetTopSearches0() + { + $client = $this->getClient(); + $client->getTopSearches( + 'index', + ); + + $this->assertRequests([ + [ + 'path' => '/2/searches', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"index":"index"}', true), + ], + ]); + } + + /** + * Test case for GetTopSearches + * get getTopSearches with all parameters. + */ + public function testGetTopSearches1() + { + $client = $this->getClient(); + $client->getTopSearches( + 'index', + true, + '1999-09-19', + '2001-01-01', + 'searchCount', + 'asc', + 21, + 42, + 'tag', + ); + + $this->assertRequests([ + [ + 'path' => '/2/searches', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"index":"index","clickAnalytics":"true","startDate":"1999-09-19","endDate":"2001-01-01","orderBy":"searchCount","direction":"asc","limit":"21","offset":"42","tags":"tag"}', true), + ], + ]); + } + + /** + * Test case for GetUsersCount + * get getUsersCount with minimal parameters. + */ + public function testGetUsersCount0() + { + $client = $this->getClient(); + $client->getUsersCount( + 'index', + ); + + $this->assertRequests([ + [ + 'path' => '/2/users/count', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"index":"index"}', true), + ], + ]); + } + + /** + * Test case for GetUsersCount + * get getUsersCount with all parameters. + */ + public function testGetUsersCount1() + { + $client = $this->getClient(); + $client->getUsersCount( + 'index', + '1999-09-19', + '2001-01-01', + 'tag', + ); + + $this->assertRequests([ + [ + 'path' => '/2/users/count', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}', true), + ], + ]); + } + + protected function assertRequests(array $requests) + { + $this->assertGreaterThan(0, count($requests)); + $this->assertEquals(count($requests), count($this->recordedRequests)); + + foreach ($requests as $i => $request) { + $recordedRequest = $this->recordedRequests[$i]; + + $this->assertEquals($request['method'], $recordedRequest->getMethod()); + + $this->assertEquals($request['path'], $recordedRequest->getUri()->getPath()); + + if (isset($request['body'])) { + $this->assertEquals( + json_encode($request['body']), + $recordedRequest->getBody()->getContents() + ); + } + + if (isset($request['queryParameters'])) { + $this->assertEquals( + Query::build($request['queryParameters']), + $recordedRequest->getUri()->getQuery() + ); + } + + if (isset($request['headers'])) { + foreach ($request['headers'] as $key => $value) { + $this->assertArrayHasKey( + $key, + $recordedRequest->getHeaders() + ); + $this->assertEquals( + $recordedRequest->getHeaderLine($key), + $value + ); + } + } + } + } + + protected function getClient() + { + $api = new ApiWrapper($this, AnalyticsConfig::create(getenv('ALGOLIA_APP_ID'), getenv('ALGOLIA_API_KEY')), ClusterHosts::create('127.0.0.1')); + $config = AnalyticsConfig::create('foo', 'bar'); + + return new AnalyticsClient($api, $config); + } +} diff --git a/tests/output/php/src/requests/InsightsTest.php b/tests/output/php/src/requests/InsightsTest.php new file mode 100644 index 0000000000..aaeb11f0e5 --- /dev/null +++ b/tests/output/php/src/requests/InsightsTest.php @@ -0,0 +1,769 @@ +recordedRequests[] = $request; + + return new Response(200, [], '{}'); + } + + /** + * Test case for CustomDelete + * allow del method for a custom path with minimal parameters. + */ + public function testCustomDelete0() + { + $client = $this->getClient(); + $client->customDelete( + '/test/minimal', + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/minimal', + 'method' => 'DELETE', + 'body' => null, + ], + ]); + } + + /** + * Test case for CustomDelete + * allow del method for a custom path with all parameters. + */ + public function testCustomDelete1() + { + $client = $this->getClient(); + $client->customDelete( + '/test/all', + ['query' => 'parameters', + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/all', + 'method' => 'DELETE', + 'body' => null, + 'queryParameters' => json_decode('{"query":"parameters"}', true), + ], + ]); + } + + /** + * Test case for CustomGet + * allow get method for a custom path with minimal parameters. + */ + public function testCustomGet0() + { + $client = $this->getClient(); + $client->customGet( + '/test/minimal', + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/minimal', + 'method' => 'GET', + 'body' => null, + ], + ]); + } + + /** + * Test case for CustomGet + * allow get method for a custom path with all parameters. + */ + public function testCustomGet1() + { + $client = $this->getClient(); + $client->customGet( + '/test/all', + ['query' => 'parameters', + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/all', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"query":"parameters"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * allow post method for a custom path with minimal parameters. + */ + public function testCustomPost0() + { + $client = $this->getClient(); + $client->customPost( + '/test/minimal', + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/minimal', + 'method' => 'POST', + 'body' => json_decode('{}'), + ], + ]); + } + + /** + * Test case for CustomPost + * allow post method for a custom path with all parameters. + */ + public function testCustomPost1() + { + $client = $this->getClient(); + $client->customPost( + '/test/all', + ['query' => 'parameters', + ], + ['body' => 'parameters', + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/all', + 'method' => 'POST', + 'body' => json_decode('{"body":"parameters"}'), + 'queryParameters' => json_decode('{"query":"parameters"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions can override default query parameters. + */ + public function testCustomPost2() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'query' => 'myQueryParameter', + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"myQueryParameter"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions merges query parameters with default ones. + */ + public function testCustomPost3() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'query2' => 'myQueryParameter', + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters","query2":"myQueryParameter"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions can override default headers. + */ + public function testCustomPost4() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + ], + 'headers' => [ + 'x-algolia-api-key' => 'myApiKey', + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters"}', true), + 'headers' => json_decode('{"x-algolia-api-key":"myApiKey"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions merges headers with default ones. + */ + public function testCustomPost5() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + ], + 'headers' => [ + 'x-algolia-api-key' => 'myApiKey', + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters"}', true), + 'headers' => json_decode('{"x-algolia-api-key":"myApiKey"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions queryParameters accepts booleans. + */ + public function testCustomPost6() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'isItWorking' => true, + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters","isItWorking":"true"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions queryParameters accepts integers. + */ + public function testCustomPost7() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'myParam' => 2, + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters","myParam":"2"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions queryParameters accepts list of string. + */ + public function testCustomPost8() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'myParam' => ['c', 'd', + ], + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters","myParam":"c,d"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions queryParameters accepts list of booleans. + */ + public function testCustomPost9() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'myParam' => [true, true, false, + ], + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters","myParam":"true,true,false"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions queryParameters accepts list of integers. + */ + public function testCustomPost10() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'myParam' => [1, 2, + ], + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters","myParam":"1,2"}', true), + ], + ]); + } + + /** + * Test case for CustomPut + * allow put method for a custom path with minimal parameters. + */ + public function testCustomPut0() + { + $client = $this->getClient(); + $client->customPut( + '/test/minimal', + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/minimal', + 'method' => 'PUT', + 'body' => json_decode('{}'), + ], + ]); + } + + /** + * Test case for CustomPut + * allow put method for a custom path with all parameters. + */ + public function testCustomPut1() + { + $client = $this->getClient(); + $client->customPut( + '/test/all', + ['query' => 'parameters', + ], + ['body' => 'parameters', + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/all', + 'method' => 'PUT', + 'body' => json_decode('{"body":"parameters"}'), + 'queryParameters' => json_decode('{"query":"parameters"}', true), + ], + ]); + } + + /** + * Test case for PushEvents + * pushEvents0. + */ + public function testPushEvents0() + { + $client = $this->getClient(); + $client->pushEvents( + ['events' => [ + ['eventType' => 'click', + 'eventName' => 'Product Clicked', + 'index' => 'products', + 'userToken' => 'user-123456', + 'authenticatedUserToken' => 'user-123456', + 'timestamp' => 1641290601962, + 'objectIDs' => [ + '9780545139700', + + '9780439784542', + ], + 'queryID' => '43b15df305339e827f0ac0bdc5ebcaa7', + 'positions' => [ + 7, + + 6, + ], + ], + ], + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/events', + 'method' => 'POST', + 'body' => json_decode('{"events":[{"eventType":"click","eventName":"Product Clicked","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"queryID":"43b15df305339e827f0ac0bdc5ebcaa7","positions":[7,6]}]}'), + ], + ]); + } + + /** + * Test case for PushEvents + * Many events type. + */ + public function testPushEvents1() + { + $client = $this->getClient(); + $client->pushEvents( + ['events' => [ + ['eventType' => 'conversion', + 'eventName' => 'Product Purchased', + 'index' => 'products', + 'userToken' => 'user-123456', + 'authenticatedUserToken' => 'user-123456', + 'timestamp' => 1641290601962, + 'objectIDs' => [ + '9780545139700', + + '9780439784542', + ], + 'queryID' => '43b15df305339e827f0ac0bdc5ebcaa7', + ], + + ['eventType' => 'view', + 'eventName' => 'Product Detail Page Viewed', + 'index' => 'products', + 'userToken' => 'user-123456', + 'authenticatedUserToken' => 'user-123456', + 'timestamp' => 1641290601962, + 'objectIDs' => [ + '9780545139700', + + '9780439784542', + ], + ], + ], + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/events', + 'method' => 'POST', + 'body' => json_decode('{"events":[{"eventType":"conversion","eventName":"Product Purchased","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"queryID":"43b15df305339e827f0ac0bdc5ebcaa7"},{"eventType":"view","eventName":"Product Detail Page Viewed","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"]}]}'), + ], + ]); + } + + /** + * Test case for PushEvents + * ConvertedObjectIDsAfterSearch. + */ + public function testPushEvents2() + { + $client = $this->getClient(); + $client->pushEvents( + ['events' => [ + ['eventType' => 'conversion', + 'eventName' => 'Product Purchased', + 'index' => 'products', + 'userToken' => 'user-123456', + 'authenticatedUserToken' => 'user-123456', + 'timestamp' => 1641290601962, + 'objectIDs' => [ + '9780545139700', + + '9780439784542', + ], + 'queryID' => '43b15df305339e827f0ac0bdc5ebcaa7', + ], + ], + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/events', + 'method' => 'POST', + 'body' => json_decode('{"events":[{"eventType":"conversion","eventName":"Product Purchased","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"queryID":"43b15df305339e827f0ac0bdc5ebcaa7"}]}'), + ], + ]); + } + + /** + * Test case for PushEvents + * ViewedObjectIDs. + */ + public function testPushEvents3() + { + $client = $this->getClient(); + $client->pushEvents( + ['events' => [ + ['eventType' => 'view', + 'eventName' => 'Product Detail Page Viewed', + 'index' => 'products', + 'userToken' => 'user-123456', + 'authenticatedUserToken' => 'user-123456', + 'timestamp' => 1641290601962, + 'objectIDs' => [ + '9780545139700', + + '9780439784542', + ], + ], + ], + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/events', + 'method' => 'POST', + 'body' => json_decode('{"events":[{"eventType":"view","eventName":"Product Detail Page Viewed","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"]}]}'), + ], + ]); + } + + /** + * Test case for PushEvents + * AddedToCartObjectIDs. + */ + public function testPushEvents4() + { + $client = $this->getClient(); + $client->pushEvents( + ['events' => [ + ['eventType' => 'conversion', + 'eventSubtype' => 'addToCart', + 'eventName' => 'Product Added To Cart', + 'index' => 'products', + 'queryID' => '43b15df305339e827f0ac0bdc5ebcaa7', + 'userToken' => 'user-123456', + 'authenticatedUserToken' => 'user-123456', + 'timestamp' => 1641290601962, + 'objectIDs' => [ + '9780545139700', + + '9780439784542', + ], + 'objectData' => [ + ['price' => 19.99, + 'quantity' => 10, + 'discount' => 2.5, + ], + + ['price' => '8$', + 'quantity' => 7, + 'discount' => '30%', + ], + ], + 'currency' => 'USD', + ], + ], + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/events', + 'method' => 'POST', + 'body' => json_decode('{"events":[{"eventType":"conversion","eventSubtype":"addToCart","eventName":"Product Added To Cart","index":"products","queryID":"43b15df305339e827f0ac0bdc5ebcaa7","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"objectData":[{"price":19.99,"quantity":10,"discount":2.5},{"price":"8$","quantity":7,"discount":"30%"}],"currency":"USD"}]}'), + ], + ]); + } + + protected function assertRequests(array $requests) + { + $this->assertGreaterThan(0, count($requests)); + $this->assertEquals(count($requests), count($this->recordedRequests)); + + foreach ($requests as $i => $request) { + $recordedRequest = $this->recordedRequests[$i]; + + $this->assertEquals($request['method'], $recordedRequest->getMethod()); + + $this->assertEquals($request['path'], $recordedRequest->getUri()->getPath()); + + if (isset($request['body'])) { + $this->assertEquals( + json_encode($request['body']), + $recordedRequest->getBody()->getContents() + ); + } + + if (isset($request['queryParameters'])) { + $this->assertEquals( + Query::build($request['queryParameters']), + $recordedRequest->getUri()->getQuery() + ); + } + + if (isset($request['headers'])) { + foreach ($request['headers'] as $key => $value) { + $this->assertArrayHasKey( + $key, + $recordedRequest->getHeaders() + ); + $this->assertEquals( + $recordedRequest->getHeaderLine($key), + $value + ); + } + } + } + } + + protected function getClient() + { + $api = new ApiWrapper($this, InsightsConfig::create(getenv('ALGOLIA_APP_ID'), getenv('ALGOLIA_API_KEY')), ClusterHosts::create('127.0.0.1')); + $config = InsightsConfig::create('foo', 'bar'); + + return new InsightsClient($api, $config); + } +} diff --git a/tests/output/php/src/requests/MonitoringTest.php b/tests/output/php/src/requests/MonitoringTest.php new file mode 100644 index 0000000000..8672c3810a --- /dev/null +++ b/tests/output/php/src/requests/MonitoringTest.php @@ -0,0 +1,739 @@ +recordedRequests[] = $request; + + return new Response(200, [], '{}'); + } + + /** + * Test case for CustomDelete + * allow del method for a custom path with minimal parameters. + */ + public function testCustomDelete0() + { + $client = $this->getClient(); + $client->customDelete( + '/test/minimal', + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/minimal', + 'method' => 'DELETE', + 'body' => null, + ], + ]); + } + + /** + * Test case for CustomDelete + * allow del method for a custom path with all parameters. + */ + public function testCustomDelete1() + { + $client = $this->getClient(); + $client->customDelete( + '/test/all', + ['query' => 'parameters', + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/all', + 'method' => 'DELETE', + 'body' => null, + 'queryParameters' => json_decode('{"query":"parameters"}', true), + ], + ]); + } + + /** + * Test case for CustomGet + * allow get method for a custom path with minimal parameters. + */ + public function testCustomGet0() + { + $client = $this->getClient(); + $client->customGet( + '/test/minimal', + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/minimal', + 'method' => 'GET', + 'body' => null, + ], + ]); + } + + /** + * Test case for CustomGet + * allow get method for a custom path with all parameters. + */ + public function testCustomGet1() + { + $client = $this->getClient(); + $client->customGet( + '/test/all', + ['query' => 'parameters', + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/all', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"query":"parameters"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * allow post method for a custom path with minimal parameters. + */ + public function testCustomPost0() + { + $client = $this->getClient(); + $client->customPost( + '/test/minimal', + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/minimal', + 'method' => 'POST', + 'body' => json_decode('{}'), + ], + ]); + } + + /** + * Test case for CustomPost + * allow post method for a custom path with all parameters. + */ + public function testCustomPost1() + { + $client = $this->getClient(); + $client->customPost( + '/test/all', + ['query' => 'parameters', + ], + ['body' => 'parameters', + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/all', + 'method' => 'POST', + 'body' => json_decode('{"body":"parameters"}'), + 'queryParameters' => json_decode('{"query":"parameters"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions can override default query parameters. + */ + public function testCustomPost2() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'query' => 'myQueryParameter', + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"myQueryParameter"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions merges query parameters with default ones. + */ + public function testCustomPost3() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'query2' => 'myQueryParameter', + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters","query2":"myQueryParameter"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions can override default headers. + */ + public function testCustomPost4() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + ], + 'headers' => [ + 'x-algolia-api-key' => 'myApiKey', + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters"}', true), + 'headers' => json_decode('{"x-algolia-api-key":"myApiKey"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions merges headers with default ones. + */ + public function testCustomPost5() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + ], + 'headers' => [ + 'x-algolia-api-key' => 'myApiKey', + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters"}', true), + 'headers' => json_decode('{"x-algolia-api-key":"myApiKey"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions queryParameters accepts booleans. + */ + public function testCustomPost6() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'isItWorking' => true, + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters","isItWorking":"true"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions queryParameters accepts integers. + */ + public function testCustomPost7() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'myParam' => 2, + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters","myParam":"2"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions queryParameters accepts list of string. + */ + public function testCustomPost8() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'myParam' => ['c', 'd', + ], + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters","myParam":"c,d"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions queryParameters accepts list of booleans. + */ + public function testCustomPost9() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'myParam' => [true, true, false, + ], + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters","myParam":"true,true,false"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions queryParameters accepts list of integers. + */ + public function testCustomPost10() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'myParam' => [1, 2, + ], + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters","myParam":"1,2"}', true), + ], + ]); + } + + /** + * Test case for CustomPut + * allow put method for a custom path with minimal parameters. + */ + public function testCustomPut0() + { + $client = $this->getClient(); + $client->customPut( + '/test/minimal', + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/minimal', + 'method' => 'PUT', + 'body' => json_decode('{}'), + ], + ]); + } + + /** + * Test case for CustomPut + * allow put method for a custom path with all parameters. + */ + public function testCustomPut1() + { + $client = $this->getClient(); + $client->customPut( + '/test/all', + ['query' => 'parameters', + ], + ['body' => 'parameters', + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/all', + 'method' => 'PUT', + 'body' => json_decode('{"body":"parameters"}'), + 'queryParameters' => json_decode('{"query":"parameters"}', true), + ], + ]); + } + + /** + * Test case for GetClusterIncidents + * getClusterIncidents. + */ + public function testGetClusterIncidents0() + { + $client = $this->getClient(); + $client->getClusterIncidents( + 'c1-de', + ); + + $this->assertRequests([ + [ + 'path' => '/1/incidents/c1-de', + 'method' => 'GET', + 'body' => null, + ], + ]); + } + + /** + * Test case for GetClusterStatus + * getClusterStatus. + */ + public function testGetClusterStatus0() + { + $client = $this->getClient(); + $client->getClusterStatus( + 'c1-de', + ); + + $this->assertRequests([ + [ + 'path' => '/1/status/c1-de', + 'method' => 'GET', + 'body' => null, + ], + ]); + } + + /** + * Test case for GetIncidents + * getIncidents. + */ + public function testGetIncidents0() + { + $client = $this->getClient(); + $client->getIncidents(); + + $this->assertRequests([ + [ + 'path' => '/1/incidents', + 'method' => 'GET', + 'body' => null, + ], + ]); + } + + /** + * Test case for GetIndexingTime + * getIndexingTime. + */ + public function testGetIndexingTime0() + { + $client = $this->getClient(); + $client->getIndexingTime( + 'c1-de', + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexing/c1-de', + 'method' => 'GET', + 'body' => null, + ], + ]); + } + + /** + * Test case for GetInventory + * getInventory. + */ + public function testGetInventory0() + { + $client = $this->getClient(); + $client->getInventory(); + + $this->assertRequests([ + [ + 'path' => '/1/inventory/servers', + 'method' => 'GET', + 'body' => null, + ], + ]); + } + + /** + * Test case for GetLatency + * getLatency. + */ + public function testGetLatency0() + { + $client = $this->getClient(); + $client->getLatency( + 'c1-de', + ); + + $this->assertRequests([ + [ + 'path' => '/1/latency/c1-de', + 'method' => 'GET', + 'body' => null, + ], + ]); + } + + /** + * Test case for GetMetrics + * getMetrics. + */ + public function testGetMetrics0() + { + $client = $this->getClient(); + $client->getMetrics( + 'avg_build_time', + 'minute', + ); + + $this->assertRequests([ + [ + 'path' => '/1/infrastructure/avg_build_time/period/minute', + 'method' => 'GET', + 'body' => null, + ], + ]); + } + + /** + * Test case for GetReachability + * getReachability. + */ + public function testGetReachability0() + { + $client = $this->getClient(); + $client->getReachability( + 'c1-de', + ); + + $this->assertRequests([ + [ + 'path' => '/1/reachability/c1-de/probes', + 'method' => 'GET', + 'body' => null, + ], + ]); + } + + /** + * Test case for GetStatus + * getStatus. + */ + public function testGetStatus0() + { + $client = $this->getClient(); + $client->getStatus(); + + $this->assertRequests([ + [ + 'path' => '/1/status', + 'method' => 'GET', + 'body' => null, + ], + ]); + } + + protected function assertRequests(array $requests) + { + $this->assertGreaterThan(0, count($requests)); + $this->assertEquals(count($requests), count($this->recordedRequests)); + + foreach ($requests as $i => $request) { + $recordedRequest = $this->recordedRequests[$i]; + + $this->assertEquals($request['method'], $recordedRequest->getMethod()); + + $this->assertEquals($request['path'], $recordedRequest->getUri()->getPath()); + + if (isset($request['body'])) { + $this->assertEquals( + json_encode($request['body']), + $recordedRequest->getBody()->getContents() + ); + } + + if (isset($request['queryParameters'])) { + $this->assertEquals( + Query::build($request['queryParameters']), + $recordedRequest->getUri()->getQuery() + ); + } + + if (isset($request['headers'])) { + foreach ($request['headers'] as $key => $value) { + $this->assertArrayHasKey( + $key, + $recordedRequest->getHeaders() + ); + $this->assertEquals( + $recordedRequest->getHeaderLine($key), + $value + ); + } + } + } + } + + protected function getClient() + { + $api = new ApiWrapper($this, MonitoringConfig::create(getenv('ALGOLIA_APP_ID'), getenv('ALGOLIA_API_KEY')), ClusterHosts::create('127.0.0.1')); + $config = MonitoringConfig::create('foo', 'bar'); + + return new MonitoringClient($api, $config); + } +} diff --git a/tests/output/php/src/requests/PersonalizationTest.php b/tests/output/php/src/requests/PersonalizationTest.php new file mode 100644 index 0000000000..ea5e5f1af9 --- /dev/null +++ b/tests/output/php/src/requests/PersonalizationTest.php @@ -0,0 +1,654 @@ +recordedRequests[] = $request; + + return new Response(200, [], '{}'); + } + + /** + * Test case for CustomDelete + * allow del method for a custom path with minimal parameters. + */ + public function testCustomDelete0() + { + $client = $this->getClient(); + $client->customDelete( + '/test/minimal', + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/minimal', + 'method' => 'DELETE', + 'body' => null, + ], + ]); + } + + /** + * Test case for CustomDelete + * allow del method for a custom path with all parameters. + */ + public function testCustomDelete1() + { + $client = $this->getClient(); + $client->customDelete( + '/test/all', + ['query' => 'parameters', + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/all', + 'method' => 'DELETE', + 'body' => null, + 'queryParameters' => json_decode('{"query":"parameters"}', true), + ], + ]); + } + + /** + * Test case for CustomGet + * allow get method for a custom path with minimal parameters. + */ + public function testCustomGet0() + { + $client = $this->getClient(); + $client->customGet( + '/test/minimal', + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/minimal', + 'method' => 'GET', + 'body' => null, + ], + ]); + } + + /** + * Test case for CustomGet + * allow get method for a custom path with all parameters. + */ + public function testCustomGet1() + { + $client = $this->getClient(); + $client->customGet( + '/test/all', + ['query' => 'parameters', + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/all', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"query":"parameters"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * allow post method for a custom path with minimal parameters. + */ + public function testCustomPost0() + { + $client = $this->getClient(); + $client->customPost( + '/test/minimal', + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/minimal', + 'method' => 'POST', + 'body' => json_decode('{}'), + ], + ]); + } + + /** + * Test case for CustomPost + * allow post method for a custom path with all parameters. + */ + public function testCustomPost1() + { + $client = $this->getClient(); + $client->customPost( + '/test/all', + ['query' => 'parameters', + ], + ['body' => 'parameters', + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/all', + 'method' => 'POST', + 'body' => json_decode('{"body":"parameters"}'), + 'queryParameters' => json_decode('{"query":"parameters"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions can override default query parameters. + */ + public function testCustomPost2() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'query' => 'myQueryParameter', + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"myQueryParameter"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions merges query parameters with default ones. + */ + public function testCustomPost3() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'query2' => 'myQueryParameter', + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters","query2":"myQueryParameter"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions can override default headers. + */ + public function testCustomPost4() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + ], + 'headers' => [ + 'x-algolia-api-key' => 'myApiKey', + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters"}', true), + 'headers' => json_decode('{"x-algolia-api-key":"myApiKey"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions merges headers with default ones. + */ + public function testCustomPost5() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + ], + 'headers' => [ + 'x-algolia-api-key' => 'myApiKey', + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters"}', true), + 'headers' => json_decode('{"x-algolia-api-key":"myApiKey"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions queryParameters accepts booleans. + */ + public function testCustomPost6() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'isItWorking' => true, + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters","isItWorking":"true"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions queryParameters accepts integers. + */ + public function testCustomPost7() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'myParam' => 2, + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters","myParam":"2"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions queryParameters accepts list of string. + */ + public function testCustomPost8() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'myParam' => ['c', 'd', + ], + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters","myParam":"c,d"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions queryParameters accepts list of booleans. + */ + public function testCustomPost9() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'myParam' => [true, true, false, + ], + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters","myParam":"true,true,false"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions queryParameters accepts list of integers. + */ + public function testCustomPost10() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'myParam' => [1, 2, + ], + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters","myParam":"1,2"}', true), + ], + ]); + } + + /** + * Test case for CustomPut + * allow put method for a custom path with minimal parameters. + */ + public function testCustomPut0() + { + $client = $this->getClient(); + $client->customPut( + '/test/minimal', + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/minimal', + 'method' => 'PUT', + 'body' => json_decode('{}'), + ], + ]); + } + + /** + * Test case for CustomPut + * allow put method for a custom path with all parameters. + */ + public function testCustomPut1() + { + $client = $this->getClient(); + $client->customPut( + '/test/all', + ['query' => 'parameters', + ], + ['body' => 'parameters', + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/all', + 'method' => 'PUT', + 'body' => json_decode('{"body":"parameters"}'), + 'queryParameters' => json_decode('{"query":"parameters"}', true), + ], + ]); + } + + /** + * Test case for DeleteUserProfile + * delete deleteUserProfile. + */ + public function testDeleteUserProfile0() + { + $client = $this->getClient(); + $client->deleteUserProfile( + 'UserToken', + ); + + $this->assertRequests([ + [ + 'path' => '/1/profiles/UserToken', + 'method' => 'DELETE', + 'body' => null, + ], + ]); + } + + /** + * Test case for GetPersonalizationStrategy + * get getPersonalizationStrategy. + */ + public function testGetPersonalizationStrategy0() + { + $client = $this->getClient(); + $client->getPersonalizationStrategy(); + + $this->assertRequests([ + [ + 'path' => '/1/strategies/personalization', + 'method' => 'GET', + 'body' => null, + ], + ]); + } + + /** + * Test case for GetUserTokenProfile + * get getUserTokenProfile. + */ + public function testGetUserTokenProfile0() + { + $client = $this->getClient(); + $client->getUserTokenProfile( + 'UserToken', + ); + + $this->assertRequests([ + [ + 'path' => '/1/profiles/personalization/UserToken', + 'method' => 'GET', + 'body' => null, + ], + ]); + } + + /** + * Test case for SetPersonalizationStrategy + * set setPersonalizationStrategy. + */ + public function testSetPersonalizationStrategy0() + { + $client = $this->getClient(); + $client->setPersonalizationStrategy( + ['eventScoring' => [ + ['score' => 42, + 'eventName' => 'Algolia', + 'eventType' => 'Event', + ], + ], + 'facetScoring' => [ + ['score' => 42, + 'facetName' => 'Event', + ], + ], + 'personalizationImpact' => 42, + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/strategies/personalization', + 'method' => 'POST', + 'body' => json_decode('{"eventScoring":[{"score":42,"eventName":"Algolia","eventType":"Event"}],"facetScoring":[{"score":42,"facetName":"Event"}],"personalizationImpact":42}'), + ], + ]); + } + + protected function assertRequests(array $requests) + { + $this->assertGreaterThan(0, count($requests)); + $this->assertEquals(count($requests), count($this->recordedRequests)); + + foreach ($requests as $i => $request) { + $recordedRequest = $this->recordedRequests[$i]; + + $this->assertEquals($request['method'], $recordedRequest->getMethod()); + + $this->assertEquals($request['path'], $recordedRequest->getUri()->getPath()); + + if (isset($request['body'])) { + $this->assertEquals( + json_encode($request['body']), + $recordedRequest->getBody()->getContents() + ); + } + + if (isset($request['queryParameters'])) { + $this->assertEquals( + Query::build($request['queryParameters']), + $recordedRequest->getUri()->getQuery() + ); + } + + if (isset($request['headers'])) { + foreach ($request['headers'] as $key => $value) { + $this->assertArrayHasKey( + $key, + $recordedRequest->getHeaders() + ); + $this->assertEquals( + $recordedRequest->getHeaderLine($key), + $value + ); + } + } + } + } + + protected function getClient() + { + $api = new ApiWrapper($this, PersonalizationConfig::create(getenv('ALGOLIA_APP_ID'), getenv('ALGOLIA_API_KEY')), ClusterHosts::create('127.0.0.1')); + $config = PersonalizationConfig::create('foo', 'bar'); + + return new PersonalizationClient($api, $config); + } +} diff --git a/tests/output/php/src/requests/QuerySuggestionsTest.php b/tests/output/php/src/requests/QuerySuggestionsTest.php new file mode 100644 index 0000000000..0444aa84c8 --- /dev/null +++ b/tests/output/php/src/requests/QuerySuggestionsTest.php @@ -0,0 +1,754 @@ +recordedRequests[] = $request; + + return new Response(200, [], '{}'); + } + + /** + * Test case for CreateConfig + * createConfig0. + */ + public function testCreateConfig0() + { + $client = $this->getClient(); + $client->createConfig( + ['indexName' => 'theIndexName', + 'sourceIndices' => [ + ['indexName' => 'testIndex', + 'facets' => [ + ['attribute' => 'test', + ], + ], + 'generate' => [ + [ + 'facetA', + + 'facetB', + ], + + [ + 'facetC', + ], + ], + ], + ], + 'languages' => [ + 'french', + ], + 'exclude' => [ + 'test', + ], + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/configs', + 'method' => 'POST', + 'body' => json_decode('{"indexName":"theIndexName","sourceIndices":[{"indexName":"testIndex","facets":[{"attribute":"test"}],"generate":[["facetA","facetB"],["facetC"]]}],"languages":["french"],"exclude":["test"]}'), + ], + ]); + } + + /** + * Test case for CustomDelete + * allow del method for a custom path with minimal parameters. + */ + public function testCustomDelete0() + { + $client = $this->getClient(); + $client->customDelete( + '/test/minimal', + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/minimal', + 'method' => 'DELETE', + 'body' => null, + ], + ]); + } + + /** + * Test case for CustomDelete + * allow del method for a custom path with all parameters. + */ + public function testCustomDelete1() + { + $client = $this->getClient(); + $client->customDelete( + '/test/all', + ['query' => 'parameters', + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/all', + 'method' => 'DELETE', + 'body' => null, + 'queryParameters' => json_decode('{"query":"parameters"}', true), + ], + ]); + } + + /** + * Test case for CustomGet + * allow get method for a custom path with minimal parameters. + */ + public function testCustomGet0() + { + $client = $this->getClient(); + $client->customGet( + '/test/minimal', + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/minimal', + 'method' => 'GET', + 'body' => null, + ], + ]); + } + + /** + * Test case for CustomGet + * allow get method for a custom path with all parameters. + */ + public function testCustomGet1() + { + $client = $this->getClient(); + $client->customGet( + '/test/all', + ['query' => 'parameters', + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/all', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"query":"parameters"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * allow post method for a custom path with minimal parameters. + */ + public function testCustomPost0() + { + $client = $this->getClient(); + $client->customPost( + '/test/minimal', + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/minimal', + 'method' => 'POST', + 'body' => json_decode('{}'), + ], + ]); + } + + /** + * Test case for CustomPost + * allow post method for a custom path with all parameters. + */ + public function testCustomPost1() + { + $client = $this->getClient(); + $client->customPost( + '/test/all', + ['query' => 'parameters', + ], + ['body' => 'parameters', + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/all', + 'method' => 'POST', + 'body' => json_decode('{"body":"parameters"}'), + 'queryParameters' => json_decode('{"query":"parameters"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions can override default query parameters. + */ + public function testCustomPost2() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'query' => 'myQueryParameter', + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"myQueryParameter"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions merges query parameters with default ones. + */ + public function testCustomPost3() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'query2' => 'myQueryParameter', + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters","query2":"myQueryParameter"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions can override default headers. + */ + public function testCustomPost4() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + ], + 'headers' => [ + 'x-algolia-api-key' => 'myApiKey', + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters"}', true), + 'headers' => json_decode('{"x-algolia-api-key":"myApiKey"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions merges headers with default ones. + */ + public function testCustomPost5() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + ], + 'headers' => [ + 'x-algolia-api-key' => 'myApiKey', + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters"}', true), + 'headers' => json_decode('{"x-algolia-api-key":"myApiKey"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions queryParameters accepts booleans. + */ + public function testCustomPost6() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'isItWorking' => true, + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters","isItWorking":"true"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions queryParameters accepts integers. + */ + public function testCustomPost7() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'myParam' => 2, + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters","myParam":"2"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions queryParameters accepts list of string. + */ + public function testCustomPost8() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'myParam' => ['c', 'd', + ], + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters","myParam":"c,d"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions queryParameters accepts list of booleans. + */ + public function testCustomPost9() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'myParam' => [true, true, false, + ], + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters","myParam":"true,true,false"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions queryParameters accepts list of integers. + */ + public function testCustomPost10() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'myParam' => [1, 2, + ], + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters","myParam":"1,2"}', true), + ], + ]); + } + + /** + * Test case for CustomPut + * allow put method for a custom path with minimal parameters. + */ + public function testCustomPut0() + { + $client = $this->getClient(); + $client->customPut( + '/test/minimal', + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/minimal', + 'method' => 'PUT', + 'body' => json_decode('{}'), + ], + ]); + } + + /** + * Test case for CustomPut + * allow put method for a custom path with all parameters. + */ + public function testCustomPut1() + { + $client = $this->getClient(); + $client->customPut( + '/test/all', + ['query' => 'parameters', + ], + ['body' => 'parameters', + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/all', + 'method' => 'PUT', + 'body' => json_decode('{"body":"parameters"}'), + 'queryParameters' => json_decode('{"query":"parameters"}', true), + ], + ]); + } + + /** + * Test case for DeleteConfig + * deleteConfig0. + */ + public function testDeleteConfig0() + { + $client = $this->getClient(); + $client->deleteConfig( + 'theIndexName', + ); + + $this->assertRequests([ + [ + 'path' => '/1/configs/theIndexName', + 'method' => 'DELETE', + 'body' => null, + ], + ]); + } + + /** + * Test case for GetAllConfigs + * getAllConfigs0. + */ + public function testGetAllConfigs0() + { + $client = $this->getClient(); + $client->getAllConfigs(); + + $this->assertRequests([ + [ + 'path' => '/1/configs', + 'method' => 'GET', + 'body' => null, + ], + ]); + } + + /** + * Test case for GetConfig + * getConfig0. + */ + public function testGetConfig0() + { + $client = $this->getClient(); + $client->getConfig( + 'theIndexName', + ); + + $this->assertRequests([ + [ + 'path' => '/1/configs/theIndexName', + 'method' => 'GET', + 'body' => null, + ], + ]); + } + + /** + * Test case for GetConfigStatus + * getConfigStatus0. + */ + public function testGetConfigStatus0() + { + $client = $this->getClient(); + $client->getConfigStatus( + 'theIndexName', + ); + + $this->assertRequests([ + [ + 'path' => '/1/configs/theIndexName/status', + 'method' => 'GET', + 'body' => null, + ], + ]); + } + + /** + * Test case for GetLogFile + * getLogFile0. + */ + public function testGetLogFile0() + { + $client = $this->getClient(); + $client->getLogFile( + 'theIndexName', + ); + + $this->assertRequests([ + [ + 'path' => '/1/logs/theIndexName', + 'method' => 'GET', + 'body' => null, + ], + ]); + } + + /** + * Test case for UpdateConfig + * updateConfig0. + */ + public function testUpdateConfig0() + { + $client = $this->getClient(); + $client->updateConfig( + 'theIndexName', + ['sourceIndices' => [ + ['indexName' => 'testIndex', + 'facets' => [ + ['attribute' => 'test', + ], + ], + 'generate' => [ + [ + 'facetA', + + 'facetB', + ], + + [ + 'facetC', + ], + ], + ], + ], + 'languages' => [ + 'french', + ], + 'exclude' => [ + 'test', + ], + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/configs/theIndexName', + 'method' => 'PUT', + 'body' => json_decode('{"sourceIndices":[{"indexName":"testIndex","facets":[{"attribute":"test"}],"generate":[["facetA","facetB"],["facetC"]]}],"languages":["french"],"exclude":["test"]}'), + ], + ]); + } + + protected function assertRequests(array $requests) + { + $this->assertGreaterThan(0, count($requests)); + $this->assertEquals(count($requests), count($this->recordedRequests)); + + foreach ($requests as $i => $request) { + $recordedRequest = $this->recordedRequests[$i]; + + $this->assertEquals($request['method'], $recordedRequest->getMethod()); + + $this->assertEquals($request['path'], $recordedRequest->getUri()->getPath()); + + if (isset($request['body'])) { + $this->assertEquals( + json_encode($request['body']), + $recordedRequest->getBody()->getContents() + ); + } + + if (isset($request['queryParameters'])) { + $this->assertEquals( + Query::build($request['queryParameters']), + $recordedRequest->getUri()->getQuery() + ); + } + + if (isset($request['headers'])) { + foreach ($request['headers'] as $key => $value) { + $this->assertArrayHasKey( + $key, + $recordedRequest->getHeaders() + ); + $this->assertEquals( + $recordedRequest->getHeaderLine($key), + $value + ); + } + } + } + } + + protected function getClient() + { + $api = new ApiWrapper($this, QuerySuggestionsConfig::create(getenv('ALGOLIA_APP_ID'), getenv('ALGOLIA_API_KEY')), ClusterHosts::create('127.0.0.1')); + $config = QuerySuggestionsConfig::create('foo', 'bar'); + + return new QuerySuggestionsClient($api, $config); + } +} diff --git a/tests/output/php/src/requests/RecommendTest.php b/tests/output/php/src/requests/RecommendTest.php new file mode 100644 index 0000000000..550b0fd812 --- /dev/null +++ b/tests/output/php/src/requests/RecommendTest.php @@ -0,0 +1,896 @@ +recordedRequests[] = $request; + + return new Response(200, [], '{}'); + } + + /** + * Test case for CustomDelete + * allow del method for a custom path with minimal parameters. + */ + public function testCustomDelete0() + { + $client = $this->getClient(); + $client->customDelete( + '/test/minimal', + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/minimal', + 'method' => 'DELETE', + 'body' => null, + ], + ]); + } + + /** + * Test case for CustomDelete + * allow del method for a custom path with all parameters. + */ + public function testCustomDelete1() + { + $client = $this->getClient(); + $client->customDelete( + '/test/all', + ['query' => 'parameters', + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/all', + 'method' => 'DELETE', + 'body' => null, + 'queryParameters' => json_decode('{"query":"parameters"}', true), + ], + ]); + } + + /** + * Test case for CustomGet + * allow get method for a custom path with minimal parameters. + */ + public function testCustomGet0() + { + $client = $this->getClient(); + $client->customGet( + '/test/minimal', + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/minimal', + 'method' => 'GET', + 'body' => null, + ], + ]); + } + + /** + * Test case for CustomGet + * allow get method for a custom path with all parameters. + */ + public function testCustomGet1() + { + $client = $this->getClient(); + $client->customGet( + '/test/all', + ['query' => 'parameters', + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/all', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"query":"parameters"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * allow post method for a custom path with minimal parameters. + */ + public function testCustomPost0() + { + $client = $this->getClient(); + $client->customPost( + '/test/minimal', + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/minimal', + 'method' => 'POST', + 'body' => json_decode('{}'), + ], + ]); + } + + /** + * Test case for CustomPost + * allow post method for a custom path with all parameters. + */ + public function testCustomPost1() + { + $client = $this->getClient(); + $client->customPost( + '/test/all', + ['query' => 'parameters', + ], + ['body' => 'parameters', + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/all', + 'method' => 'POST', + 'body' => json_decode('{"body":"parameters"}'), + 'queryParameters' => json_decode('{"query":"parameters"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions can override default query parameters. + */ + public function testCustomPost2() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'query' => 'myQueryParameter', + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"myQueryParameter"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions merges query parameters with default ones. + */ + public function testCustomPost3() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'query2' => 'myQueryParameter', + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters","query2":"myQueryParameter"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions can override default headers. + */ + public function testCustomPost4() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + ], + 'headers' => [ + 'x-algolia-api-key' => 'myApiKey', + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters"}', true), + 'headers' => json_decode('{"x-algolia-api-key":"myApiKey"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions merges headers with default ones. + */ + public function testCustomPost5() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + ], + 'headers' => [ + 'x-algolia-api-key' => 'myApiKey', + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters"}', true), + 'headers' => json_decode('{"x-algolia-api-key":"myApiKey"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions queryParameters accepts booleans. + */ + public function testCustomPost6() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'isItWorking' => true, + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters","isItWorking":"true"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions queryParameters accepts integers. + */ + public function testCustomPost7() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'myParam' => 2, + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters","myParam":"2"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions queryParameters accepts list of string. + */ + public function testCustomPost8() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'myParam' => ['c', 'd', + ], + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters","myParam":"c,d"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions queryParameters accepts list of booleans. + */ + public function testCustomPost9() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'myParam' => [true, true, false, + ], + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters","myParam":"true,true,false"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions queryParameters accepts list of integers. + */ + public function testCustomPost10() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'myParam' => [1, 2, + ], + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters","myParam":"1,2"}', true), + ], + ]); + } + + /** + * Test case for CustomPut + * allow put method for a custom path with minimal parameters. + */ + public function testCustomPut0() + { + $client = $this->getClient(); + $client->customPut( + '/test/minimal', + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/minimal', + 'method' => 'PUT', + 'body' => json_decode('{}'), + ], + ]); + } + + /** + * Test case for CustomPut + * allow put method for a custom path with all parameters. + */ + public function testCustomPut1() + { + $client = $this->getClient(); + $client->customPut( + '/test/all', + ['query' => 'parameters', + ], + ['body' => 'parameters', + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/all', + 'method' => 'PUT', + 'body' => json_decode('{"body":"parameters"}'), + 'queryParameters' => json_decode('{"query":"parameters"}', true), + ], + ]); + } + + /** + * Test case for DeleteRecommendRule + * deleteRecommendRule0. + */ + public function testDeleteRecommendRule0() + { + $client = $this->getClient(); + $client->deleteRecommendRule( + 'indexName', + 'related-products', + 'objectID', + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/indexName/related-products/recommend/rules/objectID', + 'method' => 'DELETE', + 'body' => null, + ], + ]); + } + + /** + * Test case for GetRecommendRule + * getRecommendRule0. + */ + public function testGetRecommendRule0() + { + $client = $this->getClient(); + $client->getRecommendRule( + 'indexName', + 'related-products', + 'objectID', + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/indexName/related-products/recommend/rules/objectID', + 'method' => 'GET', + 'body' => null, + ], + ]); + } + + /** + * Test case for GetRecommendStatus + * getRecommendStatus0. + */ + public function testGetRecommendStatus0() + { + $client = $this->getClient(); + $client->getRecommendStatus( + 'indexName', + 'related-products', + 12345, + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/indexName/related-products/task/12345', + 'method' => 'GET', + 'body' => null, + ], + ]); + } + + /** + * Test case for GetRecommendations + * get recommendations for recommend model with minimal parameters. + */ + public function testGetRecommendations0() + { + $client = $this->getClient(); + $client->getRecommendations( + ['requests' => [ + ['indexName' => 'indexName', + 'objectID' => 'objectID', + 'model' => 'related-products', + 'threshold' => 42, + ], + ], + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/*/recommendations', + 'method' => 'POST', + 'body' => json_decode('{"requests":[{"indexName":"indexName","objectID":"objectID","model":"related-products","threshold":42}]}'), + ], + ]); + } + + /** + * Test case for GetRecommendations + * get recommendations for recommend model with all parameters. + */ + public function testGetRecommendations1() + { + $client = $this->getClient(); + $client->getRecommendations( + ['requests' => [ + ['indexName' => 'indexName', + 'objectID' => 'objectID', + 'model' => 'related-products', + 'threshold' => 42, + 'maxRecommendations' => 10, + 'queryParameters' => ['query' => 'myQuery', + 'facetFilters' => [ + 'query', + ], + ], + 'fallbackParameters' => ['query' => 'myQuery', + 'facetFilters' => [ + 'fallback', + ], + ], + ], + ], + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/*/recommendations', + 'method' => 'POST', + 'body' => json_decode('{"requests":[{"indexName":"indexName","objectID":"objectID","model":"related-products","threshold":42,"maxRecommendations":10,"queryParameters":{"query":"myQuery","facetFilters":["query"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback"]}}]}'), + ], + ]); + } + + /** + * Test case for GetRecommendations + * get recommendations for trending model with minimal parameters. + */ + public function testGetRecommendations2() + { + $client = $this->getClient(); + $client->getRecommendations( + ['requests' => [ + ['indexName' => 'indexName', + 'model' => 'trending-items', + 'threshold' => 42, + ], + ], + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/*/recommendations', + 'method' => 'POST', + 'body' => json_decode('{"requests":[{"indexName":"indexName","model":"trending-items","threshold":42}]}'), + ], + ]); + } + + /** + * Test case for GetRecommendations + * get recommendations for trending model with all parameters. + */ + public function testGetRecommendations3() + { + $client = $this->getClient(); + $client->getRecommendations( + ['requests' => [ + ['indexName' => 'indexName', + 'model' => 'trending-items', + 'threshold' => 42, + 'maxRecommendations' => 10, + 'facetName' => 'myFacetName', + 'facetValue' => 'myFacetValue', + 'queryParameters' => ['query' => 'myQuery', + 'facetFilters' => [ + 'query', + ], + ], + 'fallbackParameters' => ['query' => 'myQuery', + 'facetFilters' => [ + 'fallback', + ], + ], + ], + ], + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/*/recommendations', + 'method' => 'POST', + 'body' => json_decode('{"requests":[{"indexName":"indexName","model":"trending-items","threshold":42,"maxRecommendations":10,"facetName":"myFacetName","facetValue":"myFacetValue","queryParameters":{"query":"myQuery","facetFilters":["query"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback"]}}]}'), + ], + ]); + } + + /** + * Test case for GetRecommendations + * get multiple recommendations with minimal parameters. + */ + public function testGetRecommendations4() + { + $client = $this->getClient(); + $client->getRecommendations( + ['requests' => [ + ['indexName' => 'indexName1', + 'objectID' => 'objectID1', + 'model' => 'related-products', + 'threshold' => 21, + ], + + ['indexName' => 'indexName2', + 'objectID' => 'objectID2', + 'model' => 'related-products', + 'threshold' => 21, + ], + ], + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/*/recommendations', + 'method' => 'POST', + 'body' => json_decode('{"requests":[{"indexName":"indexName1","objectID":"objectID1","model":"related-products","threshold":21},{"indexName":"indexName2","objectID":"objectID2","model":"related-products","threshold":21}]}'), + ], + ]); + } + + /** + * Test case for GetRecommendations + * get multiple recommendations with all parameters. + */ + public function testGetRecommendations5() + { + $client = $this->getClient(); + $client->getRecommendations( + ['requests' => [ + ['indexName' => 'indexName1', + 'objectID' => 'objectID1', + 'model' => 'related-products', + 'threshold' => 21, + 'maxRecommendations' => 10, + 'queryParameters' => ['query' => 'myQuery', + 'facetFilters' => [ + 'query1', + ], + ], + 'fallbackParameters' => ['query' => 'myQuery', + 'facetFilters' => [ + 'fallback1', + ], + ], + ], + + ['indexName' => 'indexName2', + 'objectID' => 'objectID2', + 'model' => 'related-products', + 'threshold' => 21, + 'maxRecommendations' => 10, + 'queryParameters' => ['query' => 'myQuery', + 'facetFilters' => [ + 'query2', + ], + ], + 'fallbackParameters' => ['query' => 'myQuery', + 'facetFilters' => [ + 'fallback2', + ], + ], + ], + ], + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/*/recommendations', + 'method' => 'POST', + 'body' => json_decode('{"requests":[{"indexName":"indexName1","objectID":"objectID1","model":"related-products","threshold":21,"maxRecommendations":10,"queryParameters":{"query":"myQuery","facetFilters":["query1"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback1"]}},{"indexName":"indexName2","objectID":"objectID2","model":"related-products","threshold":21,"maxRecommendations":10,"queryParameters":{"query":"myQuery","facetFilters":["query2"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback2"]}}]}'), + ], + ]); + } + + /** + * Test case for GetRecommendations + * get frequently bought together recommendations. + */ + public function testGetRecommendations6() + { + $client = $this->getClient(); + $client->getRecommendations( + ['requests' => [ + ['indexName' => 'indexName1', + 'objectID' => 'objectID1', + 'model' => 'bought-together', + 'threshold' => 42, + ], + ], + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/*/recommendations', + 'method' => 'POST', + 'body' => json_decode('{"requests":[{"indexName":"indexName1","objectID":"objectID1","model":"bought-together","threshold":42}]}'), + ], + ]); + } + + /** + * Test case for SearchRecommendRules + * searchRecommendRules0. + */ + public function testSearchRecommendRules0() + { + $client = $this->getClient(); + $client->searchRecommendRules( + 'indexName', + 'related-products', + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/indexName/related-products/recommend/rules/search', + 'method' => 'POST', + 'body' => json_decode('{}'), + ], + ]); + } + + protected function assertRequests(array $requests) + { + $this->assertGreaterThan(0, count($requests)); + $this->assertEquals(count($requests), count($this->recordedRequests)); + + foreach ($requests as $i => $request) { + $recordedRequest = $this->recordedRequests[$i]; + + $this->assertEquals($request['method'], $recordedRequest->getMethod()); + + $this->assertEquals($request['path'], $recordedRequest->getUri()->getPath()); + + if (isset($request['body'])) { + $this->assertEquals( + json_encode($request['body']), + $recordedRequest->getBody()->getContents() + ); + } + + if (isset($request['queryParameters'])) { + $this->assertEquals( + Query::build($request['queryParameters']), + $recordedRequest->getUri()->getQuery() + ); + } + + if (isset($request['headers'])) { + foreach ($request['headers'] as $key => $value) { + $this->assertArrayHasKey( + $key, + $recordedRequest->getHeaders() + ); + $this->assertEquals( + $recordedRequest->getHeaderLine($key), + $value + ); + } + } + } + } + + protected function getClient() + { + $api = new ApiWrapper($this, RecommendConfig::create(getenv('ALGOLIA_APP_ID'), getenv('ALGOLIA_API_KEY')), ClusterHosts::create('127.0.0.1')); + $config = RecommendConfig::create('foo', 'bar'); + + return new RecommendClient($api, $config); + } +} diff --git a/tests/output/php/src/requests/SearchTest.php b/tests/output/php/src/requests/SearchTest.php new file mode 100644 index 0000000000..f11a874a82 --- /dev/null +++ b/tests/output/php/src/requests/SearchTest.php @@ -0,0 +1,3385 @@ +load(); +} else { + $_ENV = getenv(); +} + +/** + * SearchTest. + * + * @category Class + * + * @internal + * + * @coversNothing + */ +class SearchTest extends TestCase implements HttpClientInterface +{ + /** + * @var RequestInterface[] + */ + private $recordedRequests = []; + + public function sendRequest(RequestInterface $request, $timeout, $connectTimeout) + { + $this->recordedRequests[] = $request; + + return new Response(200, [], '{}'); + } + + /** + * Test case for AddApiKey + * addApiKey0. + */ + public function testAddApiKey0() + { + $client = $this->getClient(); + $client->addApiKey( + ['acl' => [ + 'search', + + 'addObject', + ], + 'description' => 'my new api key', + 'validity' => 300, + 'maxQueriesPerIPPerHour' => 100, + 'maxHitsPerQuery' => 20, + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/keys', + 'method' => 'POST', + 'body' => json_decode('{"acl":["search","addObject"],"description":"my new api key","validity":300,"maxQueriesPerIPPerHour":100,"maxHitsPerQuery":20}'), + ], + ]); + } + + /** + * Test case for AddOrUpdateObject + * addOrUpdateObject0. + */ + public function testAddOrUpdateObject0() + { + $client = $this->getClient(); + $client->addOrUpdateObject( + 'indexName', + 'uniqueID', + ['key' => 'value', + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/indexName/uniqueID', + 'method' => 'PUT', + 'body' => json_decode('{"key":"value"}'), + ], + ]); + } + + /** + * Test case for AppendSource + * appendSource0. + */ + public function testAppendSource0() + { + $client = $this->getClient(); + $client->appendSource( + ['source' => 'theSource', + 'description' => 'theDescription', + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/security/sources/append', + 'method' => 'POST', + 'body' => json_decode('{"source":"theSource","description":"theDescription"}'), + ], + ]); + } + + /** + * Test case for AssignUserId + * assignUserId0. + */ + public function testAssignUserId0() + { + $client = $this->getClient(); + $client->assignUserId( + 'userID', + ['cluster' => 'theCluster', + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/clusters/mapping', + 'method' => 'POST', + 'body' => json_decode('{"cluster":"theCluster"}'), + 'headers' => json_decode('{"x-algolia-user-id":"userID"}', true), + ], + ]); + } + + /** + * Test case for Batch + * allows batch method with `addObject` action. + */ + public function testBatch0() + { + $client = $this->getClient(); + $client->batch( + 'theIndexName', + ['requests' => [ + ['action' => 'addObject', + 'body' => ['key' => 'value', + ], + ], + ], + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/theIndexName/batch', + 'method' => 'POST', + 'body' => json_decode('{"requests":[{"action":"addObject","body":{"key":"value"}}]}'), + ], + ]); + } + + /** + * Test case for Batch + * allows batch method with `clear` action. + */ + public function testBatch1() + { + $client = $this->getClient(); + $client->batch( + 'theIndexName', + ['requests' => [ + ['action' => 'clear', + 'body' => ['key' => 'value', + ], + ], + ], + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/theIndexName/batch', + 'method' => 'POST', + 'body' => json_decode('{"requests":[{"action":"clear","body":{"key":"value"}}]}'), + ], + ]); + } + + /** + * Test case for Batch + * allows batch method with `delete` action. + */ + public function testBatch2() + { + $client = $this->getClient(); + $client->batch( + 'theIndexName', + ['requests' => [ + ['action' => 'delete', + 'body' => ['key' => 'value', + ], + ], + ], + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/theIndexName/batch', + 'method' => 'POST', + 'body' => json_decode('{"requests":[{"action":"delete","body":{"key":"value"}}]}'), + ], + ]); + } + + /** + * Test case for Batch + * allows batch method with `deleteObject` action. + */ + public function testBatch3() + { + $client = $this->getClient(); + $client->batch( + 'theIndexName', + ['requests' => [ + ['action' => 'deleteObject', + 'body' => ['key' => 'value', + ], + ], + ], + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/theIndexName/batch', + 'method' => 'POST', + 'body' => json_decode('{"requests":[{"action":"deleteObject","body":{"key":"value"}}]}'), + ], + ]); + } + + /** + * Test case for Batch + * allows batch method with `partialUpdateObject` action. + */ + public function testBatch4() + { + $client = $this->getClient(); + $client->batch( + 'theIndexName', + ['requests' => [ + ['action' => 'partialUpdateObject', + 'body' => ['key' => 'value', + ], + ], + ], + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/theIndexName/batch', + 'method' => 'POST', + 'body' => json_decode('{"requests":[{"action":"partialUpdateObject","body":{"key":"value"}}]}'), + ], + ]); + } + + /** + * Test case for Batch + * allows batch method with `partialUpdateObjectNoCreate` action. + */ + public function testBatch5() + { + $client = $this->getClient(); + $client->batch( + 'theIndexName', + ['requests' => [ + ['action' => 'partialUpdateObjectNoCreate', + 'body' => ['key' => 'value', + ], + ], + ], + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/theIndexName/batch', + 'method' => 'POST', + 'body' => json_decode('{"requests":[{"action":"partialUpdateObjectNoCreate","body":{"key":"value"}}]}'), + ], + ]); + } + + /** + * Test case for Batch + * allows batch method with `updateObject` action. + */ + public function testBatch6() + { + $client = $this->getClient(); + $client->batch( + 'theIndexName', + ['requests' => [ + ['action' => 'updateObject', + 'body' => ['key' => 'value', + ], + ], + ], + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/theIndexName/batch', + 'method' => 'POST', + 'body' => json_decode('{"requests":[{"action":"updateObject","body":{"key":"value"}}]}'), + ], + ]); + } + + /** + * Test case for BatchAssignUserIds + * batchAssignUserIds0. + */ + public function testBatchAssignUserIds0() + { + $client = $this->getClient(); + $client->batchAssignUserIds( + 'userID', + ['cluster' => 'theCluster', + 'users' => [ + 'user1', + + 'user2', + ], + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/clusters/mapping/batch', + 'method' => 'POST', + 'body' => json_decode('{"cluster":"theCluster","users":["user1","user2"]}'), + 'headers' => json_decode('{"x-algolia-user-id":"userID"}', true), + ], + ]); + } + + /** + * Test case for BatchDictionaryEntries + * get batchDictionaryEntries results with minimal parameters. + */ + public function testBatchDictionaryEntries0() + { + $client = $this->getClient(); + $client->batchDictionaryEntries( + 'compounds', + ['requests' => [ + ['action' => 'addEntry', + 'body' => ['objectID' => '1', + 'language' => 'en', + ], + ], + + ['action' => 'deleteEntry', + 'body' => ['objectID' => '2', + 'language' => 'fr', + ], + ], + ], + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/dictionaries/compounds/batch', + 'method' => 'POST', + 'body' => json_decode('{"requests":[{"action":"addEntry","body":{"objectID":"1","language":"en"}},{"action":"deleteEntry","body":{"objectID":"2","language":"fr"}}]}'), + ], + ]); + } + + /** + * Test case for BatchDictionaryEntries + * get batchDictionaryEntries results with all parameters. + */ + public function testBatchDictionaryEntries1() + { + $client = $this->getClient(); + $client->batchDictionaryEntries( + 'compounds', + ['clearExistingDictionaryEntries' => false, + 'requests' => [ + ['action' => 'addEntry', + 'body' => ['objectID' => '1', + 'language' => 'en', + 'word' => 'fancy', + 'words' => [ + 'believe', + + 'algolia', + ], + 'decomposition' => [ + 'trust', + + 'algolia', + ], + 'state' => 'enabled', + ], + ], + + ['action' => 'deleteEntry', + 'body' => ['objectID' => '2', + 'language' => 'fr', + 'word' => 'humility', + 'words' => [ + 'candor', + + 'algolia', + ], + 'decomposition' => [ + 'grit', + + 'algolia', + ], + 'state' => 'enabled', + ], + ], + ], + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/dictionaries/compounds/batch', + 'method' => 'POST', + 'body' => json_decode('{"clearExistingDictionaryEntries":false,"requests":[{"action":"addEntry","body":{"objectID":"1","language":"en","word":"fancy","words":["believe","algolia"],"decomposition":["trust","algolia"],"state":"enabled"}},{"action":"deleteEntry","body":{"objectID":"2","language":"fr","word":"humility","words":["candor","algolia"],"decomposition":["grit","algolia"],"state":"enabled"}}]}'), + ], + ]); + } + + /** + * Test case for BatchDictionaryEntries + * get batchDictionaryEntries results additional properties. + */ + public function testBatchDictionaryEntries2() + { + $client = $this->getClient(); + $client->batchDictionaryEntries( + 'compounds', + ['requests' => [ + ['action' => 'addEntry', + 'body' => ['objectID' => '1', + 'language' => 'en', + 'additional' => 'try me', + ], + ], + ], + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/dictionaries/compounds/batch', + 'method' => 'POST', + 'body' => json_decode('{"requests":[{"action":"addEntry","body":{"objectID":"1","language":"en","additional":"try me"}}]}'), + ], + ]); + } + + /** + * Test case for Browse + * browse with minimal parameters. + */ + public function testBrowse0() + { + $client = $this->getClient(); + $client->browse( + 'indexName', + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/indexName/browse', + 'method' => 'POST', + 'body' => json_decode('{}'), + ], + ]); + } + + /** + * Test case for Browse + * browse with search parameters. + */ + public function testBrowse1() + { + $client = $this->getClient(); + $client->browse( + 'indexName', + ['query' => 'myQuery', + 'facetFilters' => [ + 'tags:algolia', + ], + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/indexName/browse', + 'method' => 'POST', + 'body' => json_decode('{"query":"myQuery","facetFilters":["tags:algolia"]}'), + ], + ]); + } + + /** + * Test case for Browse + * browse allow a cursor in parameters. + */ + public function testBrowse2() + { + $client = $this->getClient(); + $client->browse( + 'indexName', + ['cursor' => 'test', + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/indexName/browse', + 'method' => 'POST', + 'body' => json_decode('{"cursor":"test"}'), + ], + ]); + } + + /** + * Test case for ClearAllSynonyms + * clearAllSynonyms0. + */ + public function testClearAllSynonyms0() + { + $client = $this->getClient(); + $client->clearAllSynonyms( + 'indexName', + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/indexName/synonyms/clear', + 'method' => 'POST', + 'body' => json_decode(''), + ], + ]); + } + + /** + * Test case for ClearObjects + * clearObjects0. + */ + public function testClearObjects0() + { + $client = $this->getClient(); + $client->clearObjects( + 'theIndexName', + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/theIndexName/clear', + 'method' => 'POST', + 'body' => json_decode(''), + ], + ]); + } + + /** + * Test case for ClearRules + * clearRules0. + */ + public function testClearRules0() + { + $client = $this->getClient(); + $client->clearRules( + 'indexName', + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/indexName/rules/clear', + 'method' => 'POST', + 'body' => json_decode(''), + ], + ]); + } + + /** + * Test case for CustomDelete + * allow del method for a custom path with minimal parameters. + */ + public function testCustomDelete0() + { + $client = $this->getClient(); + $client->customDelete( + '/test/minimal', + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/minimal', + 'method' => 'DELETE', + 'body' => null, + ], + ]); + } + + /** + * Test case for CustomDelete + * allow del method for a custom path with all parameters. + */ + public function testCustomDelete1() + { + $client = $this->getClient(); + $client->customDelete( + '/test/all', + ['query' => 'parameters', + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/all', + 'method' => 'DELETE', + 'body' => null, + 'queryParameters' => json_decode('{"query":"parameters"}', true), + ], + ]); + } + + /** + * Test case for CustomGet + * allow get method for a custom path with minimal parameters. + */ + public function testCustomGet0() + { + $client = $this->getClient(); + $client->customGet( + '/test/minimal', + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/minimal', + 'method' => 'GET', + 'body' => null, + ], + ]); + } + + /** + * Test case for CustomGet + * allow get method for a custom path with all parameters. + */ + public function testCustomGet1() + { + $client = $this->getClient(); + $client->customGet( + '/test/all', + ['query' => 'parameters', + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/all', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"query":"parameters"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * allow post method for a custom path with minimal parameters. + */ + public function testCustomPost0() + { + $client = $this->getClient(); + $client->customPost( + '/test/minimal', + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/minimal', + 'method' => 'POST', + 'body' => json_decode('{}'), + ], + ]); + } + + /** + * Test case for CustomPost + * allow post method for a custom path with all parameters. + */ + public function testCustomPost1() + { + $client = $this->getClient(); + $client->customPost( + '/test/all', + ['query' => 'parameters', + ], + ['body' => 'parameters', + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/all', + 'method' => 'POST', + 'body' => json_decode('{"body":"parameters"}'), + 'queryParameters' => json_decode('{"query":"parameters"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions can override default query parameters. + */ + public function testCustomPost2() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'query' => 'myQueryParameter', + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"myQueryParameter"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions merges query parameters with default ones. + */ + public function testCustomPost3() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'query2' => 'myQueryParameter', + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters","query2":"myQueryParameter"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions can override default headers. + */ + public function testCustomPost4() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + ], + 'headers' => [ + 'x-algolia-api-key' => 'myApiKey', + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters"}', true), + 'headers' => json_decode('{"x-algolia-api-key":"myApiKey"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions merges headers with default ones. + */ + public function testCustomPost5() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + ], + 'headers' => [ + 'x-algolia-api-key' => 'myApiKey', + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters"}', true), + 'headers' => json_decode('{"x-algolia-api-key":"myApiKey"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions queryParameters accepts booleans. + */ + public function testCustomPost6() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'isItWorking' => true, + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters","isItWorking":"true"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions queryParameters accepts integers. + */ + public function testCustomPost7() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'myParam' => 2, + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters","myParam":"2"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions queryParameters accepts list of string. + */ + public function testCustomPost8() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'myParam' => ['c', 'd', + ], + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters","myParam":"c,d"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions queryParameters accepts list of booleans. + */ + public function testCustomPost9() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'myParam' => [true, true, false, + ], + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters","myParam":"true,true,false"}', true), + ], + ]); + } + + /** + * Test case for CustomPost + * requestOptions queryParameters accepts list of integers. + */ + public function testCustomPost10() + { + $client = $this->getClient(); + $requestOptions = [ + 'queryParameters' => [ + 'myParam' => [1, 2, + ], + ], + 'headers' => [ + ], + ]; + $client->customPost( + '/test/requestOptions', + ['query' => 'parameters', + ], + ['facet' => 'filters', + ], + $requestOptions + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/requestOptions', + 'method' => 'POST', + 'body' => json_decode('{"facet":"filters"}'), + 'queryParameters' => json_decode('{"query":"parameters","myParam":"1,2"}', true), + ], + ]); + } + + /** + * Test case for CustomPut + * allow put method for a custom path with minimal parameters. + */ + public function testCustomPut0() + { + $client = $this->getClient(); + $client->customPut( + '/test/minimal', + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/minimal', + 'method' => 'PUT', + 'body' => json_decode('{}'), + ], + ]); + } + + /** + * Test case for CustomPut + * allow put method for a custom path with all parameters. + */ + public function testCustomPut1() + { + $client = $this->getClient(); + $client->customPut( + '/test/all', + ['query' => 'parameters', + ], + ['body' => 'parameters', + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/test/all', + 'method' => 'PUT', + 'body' => json_decode('{"body":"parameters"}'), + 'queryParameters' => json_decode('{"query":"parameters"}', true), + ], + ]); + } + + /** + * Test case for DeleteApiKey + * deleteApiKey0. + */ + public function testDeleteApiKey0() + { + $client = $this->getClient(); + $client->deleteApiKey( + 'myTestApiKey', + ); + + $this->assertRequests([ + [ + 'path' => '/1/keys/myTestApiKey', + 'method' => 'DELETE', + 'body' => null, + ], + ]); + } + + /** + * Test case for DeleteBy + * deleteBy0. + */ + public function testDeleteBy0() + { + $client = $this->getClient(); + $client->deleteBy( + 'theIndexName', + ['filters' => 'brand:brandName', + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/theIndexName/deleteByQuery', + 'method' => 'POST', + 'body' => json_decode('{"filters":"brand:brandName"}'), + ], + ]); + } + + /** + * Test case for DeleteIndex + * deleteIndex0. + */ + public function testDeleteIndex0() + { + $client = $this->getClient(); + $client->deleteIndex( + 'theIndexName', + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/theIndexName', + 'method' => 'DELETE', + 'body' => null, + ], + ]); + } + + /** + * Test case for DeleteObject + * deleteObject0. + */ + public function testDeleteObject0() + { + $client = $this->getClient(); + $client->deleteObject( + 'theIndexName', + 'uniqueID', + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/theIndexName/uniqueID', + 'method' => 'DELETE', + 'body' => null, + ], + ]); + } + + /** + * Test case for DeleteRule + * delete rule simple case. + */ + public function testDeleteRule0() + { + $client = $this->getClient(); + $client->deleteRule( + 'indexName', + 'id1', + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/indexName/rules/id1', + 'method' => 'DELETE', + 'body' => null, + ], + ]); + } + + /** + * Test case for DeleteRule + * delete rule with simple characters to encode in objectID. + */ + public function testDeleteRule1() + { + $client = $this->getClient(); + $client->deleteRule( + 'indexName', + 'test/with/slash', + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/indexName/rules/test%2Fwith%2Fslash', + 'method' => 'DELETE', + 'body' => null, + ], + ]); + } + + /** + * Test case for DeleteSource + * deleteSource0. + */ + public function testDeleteSource0() + { + $client = $this->getClient(); + $client->deleteSource( + 'theSource', + ); + + $this->assertRequests([ + [ + 'path' => '/1/security/sources/theSource', + 'method' => 'DELETE', + 'body' => null, + ], + ]); + } + + /** + * Test case for DeleteSynonym + * deleteSynonym0. + */ + public function testDeleteSynonym0() + { + $client = $this->getClient(); + $client->deleteSynonym( + 'indexName', + 'id1', + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/indexName/synonyms/id1', + 'method' => 'DELETE', + 'body' => null, + ], + ]); + } + + /** + * Test case for GetApiKey + * getApiKey0. + */ + public function testGetApiKey0() + { + $client = $this->getClient(); + $client->getApiKey( + 'myTestApiKey', + ); + + $this->assertRequests([ + [ + 'path' => '/1/keys/myTestApiKey', + 'method' => 'GET', + 'body' => null, + ], + ]); + } + + /** + * Test case for GetDictionaryLanguages + * get getDictionaryLanguages. + */ + public function testGetDictionaryLanguages0() + { + $client = $this->getClient(); + $client->getDictionaryLanguages(); + + $this->assertRequests([ + [ + 'path' => '/1/dictionaries/*/languages', + 'method' => 'GET', + 'body' => null, + ], + ]); + } + + /** + * Test case for GetDictionarySettings + * get getDictionarySettings results. + */ + public function testGetDictionarySettings0() + { + $client = $this->getClient(); + $client->getDictionarySettings(); + + $this->assertRequests([ + [ + 'path' => '/1/dictionaries/*/settings', + 'method' => 'GET', + 'body' => null, + ], + ]); + } + + /** + * Test case for GetLogs + * getLogs with minimal parameters. + */ + public function testGetLogs0() + { + $client = $this->getClient(); + $client->getLogs(); + + $this->assertRequests([ + [ + 'path' => '/1/logs', + 'method' => 'GET', + 'body' => null, + ], + ]); + } + + /** + * Test case for GetLogs + * getLogs with parameters. + */ + public function testGetLogs1() + { + $client = $this->getClient(); + $client->getLogs( + 5, + 10, + 'theIndexName', + 'all', + ); + + $this->assertRequests([ + [ + 'path' => '/1/logs', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"offset":"5","length":"10","indexName":"theIndexName","type":"all"}', true), + ], + ]); + } + + /** + * Test case for GetObject + * getObject0. + */ + public function testGetObject0() + { + $client = $this->getClient(); + $client->getObject( + 'theIndexName', + 'uniqueID', + [ + 'attr1', + + 'attr2', + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/theIndexName/uniqueID', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"attributesToRetrieve":"attr1,attr2"}', true), + ], + ]); + } + + /** + * Test case for GetObjects + * getObjects0. + */ + public function testGetObjects0() + { + $client = $this->getClient(); + $client->getObjects( + ['requests' => [ + ['attributesToRetrieve' => [ + 'attr1', + + 'attr2', + ], + 'objectID' => 'uniqueID', + 'indexName' => 'theIndexName', + ], + ], + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/*/objects', + 'method' => 'POST', + 'body' => json_decode('{"requests":[{"attributesToRetrieve":["attr1","attr2"],"objectID":"uniqueID","indexName":"theIndexName"}]}'), + ], + ]); + } + + /** + * Test case for GetRule + * getRule0. + */ + public function testGetRule0() + { + $client = $this->getClient(); + $client->getRule( + 'indexName', + 'id1', + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/indexName/rules/id1', + 'method' => 'GET', + 'body' => null, + ], + ]); + } + + /** + * Test case for GetSettings + * getSettings0. + */ + public function testGetSettings0() + { + $client = $this->getClient(); + $client->getSettings( + 'theIndexName', + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/theIndexName/settings', + 'method' => 'GET', + 'body' => null, + ], + ]); + } + + /** + * Test case for GetSources + * getSources0. + */ + public function testGetSources0() + { + $client = $this->getClient(); + $client->getSources(); + + $this->assertRequests([ + [ + 'path' => '/1/security/sources', + 'method' => 'GET', + 'body' => null, + ], + ]); + } + + /** + * Test case for GetSynonym + * getSynonym0. + */ + public function testGetSynonym0() + { + $client = $this->getClient(); + $client->getSynonym( + 'indexName', + 'id1', + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/indexName/synonyms/id1', + 'method' => 'GET', + 'body' => null, + ], + ]); + } + + /** + * Test case for GetTask + * getTask0. + */ + public function testGetTask0() + { + $client = $this->getClient(); + $client->getTask( + 'theIndexName', + 123, + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/theIndexName/task/123', + 'method' => 'GET', + 'body' => null, + ], + ]); + } + + /** + * Test case for GetTopUserIds + * getTopUserIds0. + */ + public function testGetTopUserIds0() + { + $client = $this->getClient(); + $client->getTopUserIds(); + + $this->assertRequests([ + [ + 'path' => '/1/clusters/mapping/top', + 'method' => 'GET', + 'body' => null, + ], + ]); + } + + /** + * Test case for GetUserId + * getUserId0. + */ + public function testGetUserId0() + { + $client = $this->getClient(); + $client->getUserId( + 'uniqueID', + ); + + $this->assertRequests([ + [ + 'path' => '/1/clusters/mapping/uniqueID', + 'method' => 'GET', + 'body' => null, + ], + ]); + } + + /** + * Test case for HasPendingMappings + * hasPendingMappings with minimal parameters. + */ + public function testHasPendingMappings0() + { + $client = $this->getClient(); + $client->hasPendingMappings(); + + $this->assertRequests([ + [ + 'path' => '/1/clusters/mapping/pending', + 'method' => 'GET', + 'body' => null, + ], + ]); + } + + /** + * Test case for HasPendingMappings + * hasPendingMappings with parameters. + */ + public function testHasPendingMappings1() + { + $client = $this->getClient(); + $client->hasPendingMappings( + true, + ); + + $this->assertRequests([ + [ + 'path' => '/1/clusters/mapping/pending', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"getClusters":"true"}', true), + ], + ]); + } + + /** + * Test case for ListApiKeys + * listApiKeys0. + */ + public function testListApiKeys0() + { + $client = $this->getClient(); + $client->listApiKeys(); + + $this->assertRequests([ + [ + 'path' => '/1/keys', + 'method' => 'GET', + 'body' => null, + ], + ]); + } + + /** + * Test case for ListClusters + * listClusters0. + */ + public function testListClusters0() + { + $client = $this->getClient(); + $client->listClusters(); + + $this->assertRequests([ + [ + 'path' => '/1/clusters', + 'method' => 'GET', + 'body' => null, + ], + ]); + } + + /** + * Test case for ListIndices + * listIndices with minimal parameters. + */ + public function testListIndices0() + { + $client = $this->getClient(); + $client->listIndices(); + + $this->assertRequests([ + [ + 'path' => '/1/indexes', + 'method' => 'GET', + 'body' => null, + ], + ]); + } + + /** + * Test case for ListIndices + * listIndices with parameters. + */ + public function testListIndices1() + { + $client = $this->getClient(); + $client->listIndices( + 8, + 3, + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"page":"8","hitsPerPage":"3"}', true), + ], + ]); + } + + /** + * Test case for ListUserIds + * listUserIds with minimal parameters. + */ + public function testListUserIds0() + { + $client = $this->getClient(); + $client->listUserIds(); + + $this->assertRequests([ + [ + 'path' => '/1/clusters/mapping', + 'method' => 'GET', + 'body' => null, + ], + ]); + } + + /** + * Test case for ListUserIds + * listUserIds with parameters. + */ + public function testListUserIds1() + { + $client = $this->getClient(); + $client->listUserIds( + 8, + 100, + ); + + $this->assertRequests([ + [ + 'path' => '/1/clusters/mapping', + 'method' => 'GET', + 'body' => null, + 'queryParameters' => json_decode('{"page":"8","hitsPerPage":"100"}', true), + ], + ]); + } + + /** + * Test case for MultipleBatch + * multipleBatch0. + */ + public function testMultipleBatch0() + { + $client = $this->getClient(); + $client->multipleBatch( + ['requests' => [ + ['action' => 'addObject', + 'body' => ['key' => 'value', + ], + 'indexName' => 'theIndexName', + ], + ], + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/*/batch', + 'method' => 'POST', + 'body' => json_decode('{"requests":[{"action":"addObject","body":{"key":"value"},"indexName":"theIndexName"}]}'), + ], + ]); + } + + /** + * Test case for OperationIndex + * operationIndex0. + */ + public function testOperationIndex0() + { + $client = $this->getClient(); + $client->operationIndex( + 'theIndexName', + ['operation' => 'copy', + 'destination' => 'dest', + 'scope' => [ + 'rules', + + 'settings', + ], + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/theIndexName/operation', + 'method' => 'POST', + 'body' => json_decode('{"operation":"copy","destination":"dest","scope":["rules","settings"]}'), + ], + ]); + } + + /** + * Test case for PartialUpdateObject + * partialUpdateObject0. + */ + public function testPartialUpdateObject0() + { + $client = $this->getClient(); + $client->partialUpdateObject( + 'theIndexName', + 'uniqueID', + ['id1' => 'test', + 'id2' => ['_operation' => 'AddUnique', + 'value' => 'test2', + ], + ], + true, + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/theIndexName/uniqueID/partial', + 'method' => 'POST', + 'body' => json_decode('{"id1":"test","id2":{"_operation":"AddUnique","value":"test2"}}'), + 'queryParameters' => json_decode('{"createIfNotExists":"true"}', true), + ], + ]); + } + + /** + * Test case for RemoveUserId + * removeUserId0. + */ + public function testRemoveUserId0() + { + $client = $this->getClient(); + $client->removeUserId( + 'uniqueID', + ); + + $this->assertRequests([ + [ + 'path' => '/1/clusters/mapping/uniqueID', + 'method' => 'DELETE', + 'body' => null, + ], + ]); + } + + /** + * Test case for ReplaceSources + * replaceSources0. + */ + public function testReplaceSources0() + { + $client = $this->getClient(); + $client->replaceSources( + [ + ['source' => 'theSource', + 'description' => 'theDescription', + ], + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/security/sources', + 'method' => 'PUT', + 'body' => json_decode('[{"source":"theSource","description":"theDescription"}]'), + ], + ]); + } + + /** + * Test case for RestoreApiKey + * restoreApiKey0. + */ + public function testRestoreApiKey0() + { + $client = $this->getClient(); + $client->restoreApiKey( + 'myApiKey', + ); + + $this->assertRequests([ + [ + 'path' => '/1/keys/myApiKey/restore', + 'method' => 'POST', + 'body' => json_decode(''), + ], + ]); + } + + /** + * Test case for SaveObject + * saveObject0. + */ + public function testSaveObject0() + { + $client = $this->getClient(); + $client->saveObject( + 'theIndexName', + ['objectID' => 'id', + 'test' => 'val', + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/theIndexName', + 'method' => 'POST', + 'body' => json_decode('{"objectID":"id","test":"val"}'), + ], + ]); + } + + /** + * Test case for SaveRule + * saveRule with minimal parameters. + */ + public function testSaveRule0() + { + $client = $this->getClient(); + $client->saveRule( + 'indexName', + 'id1', + ['objectID' => 'id1', + 'conditions' => [ + ['pattern' => 'apple', + 'anchoring' => 'contains', + ], + ], + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/indexName/rules/id1', + 'method' => 'PUT', + 'body' => json_decode('{"objectID":"id1","conditions":[{"pattern":"apple","anchoring":"contains"}]}'), + ], + ]); + } + + /** + * Test case for SaveRule + * saveRule with all parameters. + */ + public function testSaveRule1() + { + $client = $this->getClient(); + $client->saveRule( + 'indexName', + 'id1', + ['objectID' => 'id1', + 'conditions' => [ + ['pattern' => 'apple', + 'anchoring' => 'contains', + 'alternatives' => false, + 'context' => 'search', + ], + ], + 'consequence' => ['params' => ['filters' => 'brand:apple', + 'query' => ['remove' => [ + 'algolia', + ], + 'edits' => [ + ['type' => 'remove', + 'delete' => 'abc', + 'insert' => 'cde', + ], + + ['type' => 'replace', + 'delete' => 'abc', + 'insert' => 'cde', + ], + ], + ], + ], + 'hide' => [ + ['objectID' => '321', + ], + ], + 'filterPromotes' => false, + 'userData' => ['algolia' => 'aloglia'], + 'promote' => [ + ['objectID' => 'abc', + 'position' => 3, + ], + + ['objectIDs' => [ + 'abc', + + 'def', + ], + 'position' => 1, + ], + ], + ], + 'description' => 'test', + 'enabled' => true, + 'validity' => [ + ['from' => 1656670273, + 'until' => 1656670277, + ], + ], + ], + true, + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/indexName/rules/id1', + 'method' => 'PUT', + 'body' => json_decode('{"objectID":"id1","conditions":[{"pattern":"apple","anchoring":"contains","alternatives":false,"context":"search"}],"consequence":{"params":{"filters":"brand:apple","query":{"remove":["algolia"],"edits":[{"type":"remove","delete":"abc","insert":"cde"},{"type":"replace","delete":"abc","insert":"cde"}]}},"hide":[{"objectID":"321"}],"filterPromotes":false,"userData":{"algolia":"aloglia"},"promote":[{"objectID":"abc","position":3},{"objectIDs":["abc","def"],"position":1}]},"description":"test","enabled":true,"validity":[{"from":1656670273,"until":1656670277}]}'), + 'queryParameters' => json_decode('{"forwardToReplicas":"true"}', true), + ], + ]); + } + + /** + * Test case for SaveRules + * saveRules with minimal parameters. + */ + public function testSaveRules0() + { + $client = $this->getClient(); + $client->saveRules( + 'indexName', + [ + ['objectID' => 'a-rule-id', + 'conditions' => [ + ['pattern' => 'smartphone', + 'anchoring' => 'contains', + ], + ], + ], + + ['objectID' => 'a-second-rule-id', + 'conditions' => [ + ['pattern' => 'apple', + 'anchoring' => 'contains', + ], + ], + ], + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/indexName/rules/batch', + 'method' => 'POST', + 'body' => json_decode('[{"objectID":"a-rule-id","conditions":[{"pattern":"smartphone","anchoring":"contains"}]},{"objectID":"a-second-rule-id","conditions":[{"pattern":"apple","anchoring":"contains"}]}]'), + ], + ]); + } + + /** + * Test case for SaveRules + * saveRules with all parameters. + */ + public function testSaveRules1() + { + $client = $this->getClient(); + $client->saveRules( + 'indexName', + [ + ['objectID' => 'id1', + 'conditions' => [ + ['pattern' => 'apple', + 'anchoring' => 'contains', + 'alternatives' => false, + 'context' => 'search', + ], + ], + 'consequence' => ['params' => ['filters' => 'brand:apple', + 'query' => ['remove' => [ + 'algolia', + ], + 'edits' => [ + ['type' => 'remove', + 'delete' => 'abc', + 'insert' => 'cde', + ], + + ['type' => 'replace', + 'delete' => 'abc', + 'insert' => 'cde', + ], + ], + ], + ], + 'hide' => [ + ['objectID' => '321', + ], + ], + 'filterPromotes' => false, + 'userData' => ['algolia' => 'aloglia'], + 'promote' => [ + ['objectID' => 'abc', + 'position' => 3, + ], + + ['objectIDs' => [ + 'abc', + + 'def', + ], + 'position' => 1, + ], + ], + ], + 'description' => 'test', + 'enabled' => true, + 'validity' => [ + ['from' => 1656670273, + 'until' => 1656670277, + ], + ], + ], + ], + true, + true, + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/indexName/rules/batch', + 'method' => 'POST', + 'body' => json_decode('[{"objectID":"id1","conditions":[{"pattern":"apple","anchoring":"contains","alternatives":false,"context":"search"}],"consequence":{"params":{"filters":"brand:apple","query":{"remove":["algolia"],"edits":[{"type":"remove","delete":"abc","insert":"cde"},{"type":"replace","delete":"abc","insert":"cde"}]}},"hide":[{"objectID":"321"}],"filterPromotes":false,"userData":{"algolia":"aloglia"},"promote":[{"objectID":"abc","position":3},{"objectIDs":["abc","def"],"position":1}]},"description":"test","enabled":true,"validity":[{"from":1656670273,"until":1656670277}]}]'), + 'queryParameters' => json_decode('{"forwardToReplicas":"true","clearExistingRules":"true"}', true), + ], + ]); + } + + /** + * Test case for SaveSynonym + * saveSynonym0. + */ + public function testSaveSynonym0() + { + $client = $this->getClient(); + $client->saveSynonym( + 'indexName', + 'id1', + ['objectID' => 'id1', + 'type' => 'synonym', + 'synonyms' => [ + 'car', + + 'vehicule', + + 'auto', + ], + ], + true, + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/indexName/synonyms/id1', + 'method' => 'PUT', + 'body' => json_decode('{"objectID":"id1","type":"synonym","synonyms":["car","vehicule","auto"]}'), + 'queryParameters' => json_decode('{"forwardToReplicas":"true"}', true), + ], + ]); + } + + /** + * Test case for SaveSynonyms + * saveSynonyms0. + */ + public function testSaveSynonyms0() + { + $client = $this->getClient(); + $client->saveSynonyms( + 'indexName', + [ + ['objectID' => 'id1', + 'type' => 'synonym', + 'synonyms' => [ + 'car', + + 'vehicule', + + 'auto', + ], + ], + + ['objectID' => 'id2', + 'type' => 'onewaysynonym', + 'input' => 'iphone', + 'synonyms' => [ + 'ephone', + + 'aphone', + + 'yphone', + ], + ], + ], + true, + false, + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/indexName/synonyms/batch', + 'method' => 'POST', + 'body' => json_decode('[{"objectID":"id1","type":"synonym","synonyms":["car","vehicule","auto"]},{"objectID":"id2","type":"onewaysynonym","input":"iphone","synonyms":["ephone","aphone","yphone"]}]'), + 'queryParameters' => json_decode('{"forwardToReplicas":"true","replaceExistingSynonyms":"false"}', true), + ], + ]); + } + + /** + * Test case for Search + * search for a single hits request with minimal parameters. + */ + public function testSearch0() + { + $client = $this->getClient(); + $client->search( + ['requests' => [ + ['indexName' => 'cts_e2e_search_empty_index', + ], + ], + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/*/queries', + 'method' => 'POST', + 'body' => json_decode('{"requests":[{"indexName":"cts_e2e_search_empty_index"}]}'), + ], + ]); + + $e2eClient = $this->getE2EClient(); + $resp = $e2eClient->search( + ['requests' => [ + ['indexName' => 'cts_e2e_search_empty_index', + ], + ], + ], + ); + + $this->assertEquals($resp, json_decode('{"results":[{"hits":[],"page":0,"nbHits":0,"nbPages":0,"hitsPerPage":20,"exhaustiveNbHits":true,"exhaustiveTypo":true,"exhaustive":{"nbHits":true,"typo":true},"processingTimeMS":1,"query":"","params":"","index":"cts_e2e_search_empty_index","renderingContent":{}}]}', true)); + } + + /** + * Test case for Search + * search for a single facet request with minimal parameters. + */ + public function testSearch1() + { + $client = $this->getClient(); + $client->search( + ['requests' => [ + ['indexName' => 'cts_e2e_search_facet', + 'type' => 'facet', + 'facet' => 'editor', + ], + ], + 'strategy' => 'stopIfEnoughMatches', + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/*/queries', + 'method' => 'POST', + 'body' => json_decode('{"requests":[{"indexName":"cts_e2e_search_facet","type":"facet","facet":"editor"}],"strategy":"stopIfEnoughMatches"}'), + ], + ]); + + $e2eClient = $this->getE2EClient(); + $resp = $e2eClient->search( + ['requests' => [ + ['indexName' => 'cts_e2e_search_facet', + 'type' => 'facet', + 'facet' => 'editor', + ], + ], + 'strategy' => 'stopIfEnoughMatches', + ], + ); + + $this->assertEquals($resp, json_decode('{"results":[{"exhaustiveFacetsCount":true,"processingTimeMS":1,"facetHits":[{"count":1,"highlighted":"goland","value":"goland"},{"count":1,"highlighted":"neovim","value":"neovim"},{"count":1,"highlighted":"vscode","value":"vscode"}]}]}', true)); + } + + /** + * Test case for Search + * search for a single hits request with all parameters. + */ + public function testSearch2() + { + $client = $this->getClient(); + $client->search( + ['requests' => [ + ['indexName' => 'theIndexName', + 'query' => 'myQuery', + 'hitsPerPage' => 50, + 'type' => 'default', + ], + ], + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/*/queries', + 'method' => 'POST', + 'body' => json_decode('{"requests":[{"indexName":"theIndexName","query":"myQuery","hitsPerPage":50,"type":"default"}]}'), + ], + ]); + } + + /** + * Test case for Search + * search for a single facet request with all parameters. + */ + public function testSearch3() + { + $client = $this->getClient(); + $client->search( + ['requests' => [ + ['indexName' => 'theIndexName', + 'type' => 'facet', + 'facet' => 'theFacet', + 'facetQuery' => 'theFacetQuery', + 'query' => 'theQuery', + 'maxFacetHits' => 50, + ], + ], + 'strategy' => 'stopIfEnoughMatches', + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/*/queries', + 'method' => 'POST', + 'body' => json_decode('{"requests":[{"indexName":"theIndexName","type":"facet","facet":"theFacet","facetQuery":"theFacetQuery","query":"theQuery","maxFacetHits":50}],"strategy":"stopIfEnoughMatches"}'), + ], + ]); + } + + /** + * Test case for Search + * search for multiple mixed requests in multiple indices with minimal parameters. + */ + public function testSearch4() + { + $client = $this->getClient(); + $client->search( + ['requests' => [ + ['indexName' => 'theIndexName', + ], + + ['indexName' => 'theIndexName2', + 'type' => 'facet', + 'facet' => 'theFacet', + ], + + ['indexName' => 'theIndexName', + 'type' => 'default', + ], + ], + 'strategy' => 'stopIfEnoughMatches', + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/*/queries', + 'method' => 'POST', + 'body' => json_decode('{"requests":[{"indexName":"theIndexName"},{"indexName":"theIndexName2","type":"facet","facet":"theFacet"},{"indexName":"theIndexName","type":"default"}],"strategy":"stopIfEnoughMatches"}'), + ], + ]); + } + + /** + * Test case for Search + * search for multiple mixed requests in multiple indices with all parameters. + */ + public function testSearch5() + { + $client = $this->getClient(); + $client->search( + ['requests' => [ + ['indexName' => 'theIndexName', + 'type' => 'facet', + 'facet' => 'theFacet', + 'facetQuery' => 'theFacetQuery', + 'query' => 'theQuery', + 'maxFacetHits' => 50, + ], + + ['indexName' => 'theIndexName', + 'query' => 'myQuery', + 'hitsPerPage' => 50, + 'type' => 'default', + ], + ], + 'strategy' => 'stopIfEnoughMatches', + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/*/queries', + 'method' => 'POST', + 'body' => json_decode('{"requests":[{"indexName":"theIndexName","type":"facet","facet":"theFacet","facetQuery":"theFacetQuery","query":"theQuery","maxFacetHits":50},{"indexName":"theIndexName","query":"myQuery","hitsPerPage":50,"type":"default"}],"strategy":"stopIfEnoughMatches"}'), + ], + ]); + } + + /** + * Test case for Search + * search filters accept all of the possible shapes. + */ + public function testSearch6() + { + $client = $this->getClient(); + $client->search( + ['requests' => [ + ['indexName' => 'theIndexName', + 'facetFilters' => 'mySearch:filters', + 'reRankingApplyFilter' => 'mySearch:filters', + 'tagFilters' => 'mySearch:filters', + 'numericFilters' => 'mySearch:filters', + 'optionalFilters' => 'mySearch:filters', + ], + + ['indexName' => 'theIndexName', + 'facetFilters' => [ + 'mySearch:filters', + + [ + 'mySearch:filters', + ], + ], + 'reRankingApplyFilter' => [ + 'mySearch:filters', + + [ + 'mySearch:filters', + ], + ], + 'tagFilters' => [ + 'mySearch:filters', + + [ + 'mySearch:filters', + ], + ], + 'numericFilters' => [ + 'mySearch:filters', + + [ + 'mySearch:filters', + ], + ], + 'optionalFilters' => [ + 'mySearch:filters', + + [ + 'mySearch:filters', + ], + ], + ], + ], + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/*/queries', + 'method' => 'POST', + 'body' => json_decode('{"requests":[{"indexName":"theIndexName","facetFilters":"mySearch:filters","reRankingApplyFilter":"mySearch:filters","tagFilters":"mySearch:filters","numericFilters":"mySearch:filters","optionalFilters":"mySearch:filters"},{"indexName":"theIndexName","facetFilters":["mySearch:filters",["mySearch:filters"]],"reRankingApplyFilter":["mySearch:filters",["mySearch:filters"]],"tagFilters":["mySearch:filters",["mySearch:filters"]],"numericFilters":["mySearch:filters",["mySearch:filters"]],"optionalFilters":["mySearch:filters",["mySearch:filters"]]}]}'), + ], + ]); + } + + /** + * Test case for Search + * search with all search parameters. + */ + public function testSearch7() + { + $client = $this->getClient(); + $client->search( + ['requests' => [ + ['advancedSyntax' => true, + 'advancedSyntaxFeatures' => [ + 'exactPhrase', + ], + 'allowTyposOnNumericTokens' => true, + 'alternativesAsExact' => [ + 'multiWordsSynonym', + ], + 'analytics' => true, + 'analyticsTags' => [ + '', + ], + 'aroundLatLng' => '', + 'aroundLatLngViaIP' => true, + 'aroundPrecision' => 0, + 'aroundRadius' => 'all', + 'attributeCriteriaComputedByMinProximity' => true, + 'attributesForFaceting' => [ + '', + ], + 'attributesToHighlight' => [ + '', + ], + 'attributesToRetrieve' => [ + '', + ], + 'attributesToSnippet' => [ + '', + ], + 'clickAnalytics' => true, + 'customRanking' => [ + '', + ], + 'decompoundQuery' => true, + 'disableExactOnAttributes' => [ + '', + ], + 'disableTypoToleranceOnAttributes' => [ + '', + ], + 'distinct' => 0, + 'enableABTest' => true, + 'enablePersonalization' => true, + 'enableReRanking' => true, + 'enableRules' => true, + 'exactOnSingleWordQuery' => 'attribute', + 'explain' => [ + 'foo', + + 'bar', + ], + 'facetFilters' => [ + '', + ], + 'facetingAfterDistinct' => true, + 'facets' => [ + '', + ], + 'filters' => '', + 'getRankingInfo' => true, + 'highlightPostTag' => '', + 'highlightPreTag' => '', + 'hitsPerPage' => 1, + 'ignorePlurals' => false, + 'indexName' => 'theIndexName', + 'insideBoundingBox' => [ + [ + 47.3165, + + 4.9665, + + 47.3424, + + 5.0201, + ], + + [ + 40.9234, + + 2.1185, + + 38.643, + + 1.9916, + ], + ], + 'insidePolygon' => [ + [ + 47.3165, + + 4.9665, + + 47.3424, + + 5.0201, + + 47.32, + + 4.9, + ], + + [ + 40.9234, + + 2.1185, + + 38.643, + + 1.9916, + + 39.2587, + + 2.0104, + ], + ], + 'keepDiacriticsOnCharacters' => '', + 'length' => 1, + 'maxValuesPerFacet' => 0, + 'minProximity' => 1, + 'minWordSizefor1Typo' => 0, + 'minWordSizefor2Typos' => 0, + 'minimumAroundRadius' => 1, + 'naturalLanguages' => [ + '', + ], + 'numericFilters' => [ + '', + ], + 'offset' => 0, + 'optionalFilters' => [ + '', + ], + 'optionalWords' => [ + '', + ], + 'page' => 0, + 'percentileComputation' => true, + 'personalizationImpact' => 0, + 'query' => '', + 'queryLanguages' => [ + '', + ], + 'queryType' => 'prefixAll', + 'ranking' => [ + '', + ], + 'reRankingApplyFilter' => [ + '', + ], + 'relevancyStrictness' => 0, + 'removeStopWords' => true, + 'removeWordsIfNoResults' => 'allOptional', + 'renderingContent' => ['facetOrdering' => ['facets' => ['order' => [ + 'a', + + 'b', + ], + ], + 'values' => ['a' => ['order' => [ + 'b', + ], + 'sortRemainingBy' => 'count', + ], + ], + ], + ], + 'replaceSynonymsInHighlight' => true, + 'responseFields' => [ + '', + ], + 'restrictHighlightAndSnippetArrays' => true, + 'restrictSearchableAttributes' => [ + '', + ], + 'ruleContexts' => [ + '', + ], + 'similarQuery' => '', + 'snippetEllipsisText' => '', + 'sortFacetValuesBy' => '', + 'sumOrFiltersScores' => true, + 'synonyms' => true, + 'tagFilters' => [ + '', + ], + 'type' => 'default', + 'typoTolerance' => 'min', + 'userToken' => '', + ], + ], + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/*/queries', + 'method' => 'POST', + 'body' => json_decode('{"requests":[{"advancedSyntax":true,"advancedSyntaxFeatures":["exactPhrase"],"allowTyposOnNumericTokens":true,"alternativesAsExact":["multiWordsSynonym"],"analytics":true,"analyticsTags":[""],"aroundLatLng":"","aroundLatLngViaIP":true,"aroundPrecision":0,"aroundRadius":"all","attributeCriteriaComputedByMinProximity":true,"attributesForFaceting":[""],"attributesToHighlight":[""],"attributesToRetrieve":[""],"attributesToSnippet":[""],"clickAnalytics":true,"customRanking":[""],"decompoundQuery":true,"disableExactOnAttributes":[""],"disableTypoToleranceOnAttributes":[""],"distinct":0,"enableABTest":true,"enablePersonalization":true,"enableReRanking":true,"enableRules":true,"exactOnSingleWordQuery":"attribute","explain":["foo","bar"],"facetFilters":[""],"facetingAfterDistinct":true,"facets":[""],"filters":"","getRankingInfo":true,"highlightPostTag":"","highlightPreTag":"","hitsPerPage":1,"ignorePlurals":false,"indexName":"theIndexName","insideBoundingBox":[[47.3165,4.9665,47.3424,5.0201],[40.9234,2.1185,38.643,1.9916]],"insidePolygon":[[47.3165,4.9665,47.3424,5.0201,47.32,4.9],[40.9234,2.1185,38.643,1.9916,39.2587,2.0104]],"keepDiacriticsOnCharacters":"","length":1,"maxValuesPerFacet":0,"minProximity":1,"minWordSizefor1Typo":0,"minWordSizefor2Typos":0,"minimumAroundRadius":1,"naturalLanguages":[""],"numericFilters":[""],"offset":0,"optionalFilters":[""],"optionalWords":[""],"page":0,"percentileComputation":true,"personalizationImpact":0,"query":"","queryLanguages":[""],"queryType":"prefixAll","ranking":[""],"reRankingApplyFilter":[""],"relevancyStrictness":0,"removeStopWords":true,"removeWordsIfNoResults":"allOptional","renderingContent":{"facetOrdering":{"facets":{"order":["a","b"]},"values":{"a":{"order":["b"],"sortRemainingBy":"count"}}}},"replaceSynonymsInHighlight":true,"responseFields":[""],"restrictHighlightAndSnippetArrays":true,"restrictSearchableAttributes":[""],"ruleContexts":[""],"similarQuery":"","snippetEllipsisText":"","sortFacetValuesBy":"","sumOrFiltersScores":true,"synonyms":true,"tagFilters":[""],"type":"default","typoTolerance":"min","userToken":""}]}'), + ], + ]); + } + + /** + * Test case for SearchDictionaryEntries + * get searchDictionaryEntries results with minimal parameters. + */ + public function testSearchDictionaryEntries0() + { + $client = $this->getClient(); + $client->searchDictionaryEntries( + 'compounds', + ['query' => 'foo', + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/dictionaries/compounds/search', + 'method' => 'POST', + 'body' => json_decode('{"query":"foo"}'), + ], + ]); + } + + /** + * Test case for SearchDictionaryEntries + * get searchDictionaryEntries results with all parameters. + */ + public function testSearchDictionaryEntries1() + { + $client = $this->getClient(); + $client->searchDictionaryEntries( + 'compounds', + ['query' => 'foo', + 'page' => 4, + 'hitsPerPage' => 2, + 'language' => 'fr', + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/dictionaries/compounds/search', + 'method' => 'POST', + 'body' => json_decode('{"query":"foo","page":4,"hitsPerPage":2,"language":"fr"}'), + ], + ]); + } + + /** + * Test case for SearchForFacetValues + * get searchForFacetValues results with minimal parameters. + */ + public function testSearchForFacetValues0() + { + $client = $this->getClient(); + $client->searchForFacetValues( + 'indexName', + 'facetName', + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/indexName/facets/facetName/query', + 'method' => 'POST', + 'body' => json_decode('{}'), + ], + ]); + } + + /** + * Test case for SearchForFacetValues + * get searchForFacetValues results with all parameters. + */ + public function testSearchForFacetValues1() + { + $client = $this->getClient(); + $client->searchForFacetValues( + 'indexName', + 'facetName', + ['params' => "query=foo&facetFilters=['bar']", + 'facetQuery' => 'foo', + 'maxFacetHits' => 42, + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/indexName/facets/facetName/query', + 'method' => 'POST', + 'body' => json_decode("{\"params\":\"query=foo&facetFilters=['bar']\",\"facetQuery\":\"foo\",\"maxFacetHits\":42}"), + ], + ]); + } + + /** + * Test case for SearchRules + * searchRules0. + */ + public function testSearchRules0() + { + $client = $this->getClient(); + $client->searchRules( + 'indexName', + ['query' => 'something', + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/indexName/rules/search', + 'method' => 'POST', + 'body' => json_decode('{"query":"something"}'), + ], + ]); + } + + /** + * Test case for SearchSingleIndex + * search with minimal parameters. + */ + public function testSearchSingleIndex0() + { + $client = $this->getClient(); + $client->searchSingleIndex( + 'indexName', + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/indexName/query', + 'method' => 'POST', + 'body' => json_decode('{}'), + ], + ]); + } + + /** + * Test case for SearchSingleIndex + * search with searchParams. + */ + public function testSearchSingleIndex1() + { + $client = $this->getClient(); + $client->searchSingleIndex( + 'indexName', + ['query' => 'myQuery', + 'facetFilters' => [ + 'tags:algolia', + ], + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/indexName/query', + 'method' => 'POST', + 'body' => json_decode('{"query":"myQuery","facetFilters":["tags:algolia"]}'), + ], + ]); + } + + /** + * Test case for SearchSynonyms + * searchSynonyms with minimal parameters. + */ + public function testSearchSynonyms0() + { + $client = $this->getClient(); + $client->searchSynonyms( + 'indexName', + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/indexName/synonyms/search', + 'method' => 'POST', + 'body' => json_decode('{}'), + ], + ]); + } + + /** + * Test case for SearchSynonyms + * searchSynonyms with all parameters. + */ + public function testSearchSynonyms1() + { + $client = $this->getClient(); + $client->searchSynonyms( + 'indexName', + 'altcorrection1', + 10, + 10, + ['query' => 'myQuery', + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/indexName/synonyms/search', + 'method' => 'POST', + 'body' => json_decode('{"query":"myQuery"}'), + 'queryParameters' => json_decode('{"type":"altcorrection1","page":"10","hitsPerPage":"10"}', true), + ], + ]); + } + + /** + * Test case for SearchUserIds + * searchUserIds0. + */ + public function testSearchUserIds0() + { + $client = $this->getClient(); + $client->searchUserIds( + ['query' => 'test', + 'clusterName' => 'theClusterName', + 'page' => 5, + 'hitsPerPage' => 10, + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/clusters/mapping/search', + 'method' => 'POST', + 'body' => json_decode('{"query":"test","clusterName":"theClusterName","page":5,"hitsPerPage":10}'), + ], + ]); + } + + /** + * Test case for SetDictionarySettings + * get setDictionarySettings results with minimal parameters. + */ + public function testSetDictionarySettings0() + { + $client = $this->getClient(); + $client->setDictionarySettings( + ['disableStandardEntries' => ['plurals' => ['fr' => false, + 'en' => false, + 'ru' => true, + ], + ], + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/dictionaries/*/settings', + 'method' => 'PUT', + 'body' => json_decode('{"disableStandardEntries":{"plurals":{"fr":false,"en":false,"ru":true}}}'), + ], + ]); + } + + /** + * Test case for SetDictionarySettings + * get setDictionarySettings results with all parameters. + */ + public function testSetDictionarySettings1() + { + $client = $this->getClient(); + $client->setDictionarySettings( + ['disableStandardEntries' => ['plurals' => ['fr' => false, + 'en' => false, + 'ru' => true, + ], + 'stopwords' => ['fr' => false, + ], + 'compounds' => ['ru' => true, + ], + ], + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/dictionaries/*/settings', + 'method' => 'PUT', + 'body' => json_decode('{"disableStandardEntries":{"plurals":{"fr":false,"en":false,"ru":true},"stopwords":{"fr":false},"compounds":{"ru":true}}}'), + ], + ]); + } + + /** + * Test case for SetSettings + * setSettings with minimal parameters. + */ + public function testSetSettings0() + { + $client = $this->getClient(); + $client->setSettings( + 'theIndexName', + ['paginationLimitedTo' => 10, + ], + true, + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/theIndexName/settings', + 'method' => 'PUT', + 'body' => json_decode('{"paginationLimitedTo":10}'), + 'queryParameters' => json_decode('{"forwardToReplicas":"true"}', true), + ], + ]); + } + + /** + * Test case for SetSettings + * setSettings allow boolean `typoTolerance`. + */ + public function testSetSettings1() + { + $client = $this->getClient(); + $client->setSettings( + 'theIndexName', + ['typoTolerance' => true, + ], + true, + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/theIndexName/settings', + 'method' => 'PUT', + 'body' => json_decode('{"typoTolerance":true}'), + 'queryParameters' => json_decode('{"forwardToReplicas":"true"}', true), + ], + ]); + } + + /** + * Test case for SetSettings + * setSettings allow enum `typoTolerance`. + */ + public function testSetSettings2() + { + $client = $this->getClient(); + $client->setSettings( + 'theIndexName', + ['typoTolerance' => 'min', + ], + true, + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/theIndexName/settings', + 'method' => 'PUT', + 'body' => json_decode('{"typoTolerance":"min"}'), + 'queryParameters' => json_decode('{"forwardToReplicas":"true"}', true), + ], + ]); + } + + /** + * Test case for SetSettings + * setSettings allow boolean `ignorePlurals`. + */ + public function testSetSettings3() + { + $client = $this->getClient(); + $client->setSettings( + 'theIndexName', + ['ignorePlurals' => true, + ], + true, + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/theIndexName/settings', + 'method' => 'PUT', + 'body' => json_decode('{"ignorePlurals":true}'), + 'queryParameters' => json_decode('{"forwardToReplicas":"true"}', true), + ], + ]); + } + + /** + * Test case for SetSettings + * setSettings allow list of string `ignorePlurals`. + */ + public function testSetSettings4() + { + $client = $this->getClient(); + $client->setSettings( + 'theIndexName', + ['ignorePlurals' => [ + 'algolia', + ], + ], + true, + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/theIndexName/settings', + 'method' => 'PUT', + 'body' => json_decode('{"ignorePlurals":["algolia"]}'), + 'queryParameters' => json_decode('{"forwardToReplicas":"true"}', true), + ], + ]); + } + + /** + * Test case for SetSettings + * setSettings allow boolean `removeStopWords`. + */ + public function testSetSettings5() + { + $client = $this->getClient(); + $client->setSettings( + 'theIndexName', + ['removeStopWords' => true, + ], + true, + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/theIndexName/settings', + 'method' => 'PUT', + 'body' => json_decode('{"removeStopWords":true}'), + 'queryParameters' => json_decode('{"forwardToReplicas":"true"}', true), + ], + ]); + } + + /** + * Test case for SetSettings + * setSettings allow list of string `removeStopWords`. + */ + public function testSetSettings6() + { + $client = $this->getClient(); + $client->setSettings( + 'theIndexName', + ['removeStopWords' => [ + 'algolia', + ], + ], + true, + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/theIndexName/settings', + 'method' => 'PUT', + 'body' => json_decode('{"removeStopWords":["algolia"]}'), + 'queryParameters' => json_decode('{"forwardToReplicas":"true"}', true), + ], + ]); + } + + /** + * Test case for SetSettings + * setSettings allow boolean `distinct`. + */ + public function testSetSettings7() + { + $client = $this->getClient(); + $client->setSettings( + 'theIndexName', + ['distinct' => true, + ], + true, + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/theIndexName/settings', + 'method' => 'PUT', + 'body' => json_decode('{"distinct":true}'), + 'queryParameters' => json_decode('{"forwardToReplicas":"true"}', true), + ], + ]); + } + + /** + * Test case for SetSettings + * setSettings allow integers for `distinct`. + */ + public function testSetSettings8() + { + $client = $this->getClient(); + $client->setSettings( + 'theIndexName', + ['distinct' => 1, + ], + true, + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/theIndexName/settings', + 'method' => 'PUT', + 'body' => json_decode('{"distinct":1}'), + 'queryParameters' => json_decode('{"forwardToReplicas":"true"}', true), + ], + ]); + } + + /** + * Test case for SetSettings + * setSettings allow all `indexSettings`. + */ + public function testSetSettings9() + { + $client = $this->getClient(); + $client->setSettings( + 'theIndexName', + ['advancedSyntax' => true, + 'advancedSyntaxFeatures' => [ + 'exactPhrase', + ], + 'allowCompressionOfIntegerArray' => true, + 'allowTyposOnNumericTokens' => true, + 'alternativesAsExact' => [ + 'singleWordSynonym', + ], + 'attributeCriteriaComputedByMinProximity' => true, + 'attributeForDistinct' => 'test', + 'attributesForFaceting' => [ + 'algolia', + ], + 'attributesToHighlight' => [ + 'algolia', + ], + 'attributesToRetrieve' => [ + 'algolia', + ], + 'attributesToSnippet' => [ + 'algolia', + ], + 'attributesToTransliterate' => [ + 'algolia', + ], + 'camelCaseAttributes' => [ + 'algolia', + ], + 'customNormalization' => ['algolia' => ['aloglia' => 'aglolia', + ], + ], + 'customRanking' => [ + 'algolia', + ], + 'decompoundQuery' => false, + 'decompoundedAttributes' => ['algolia' => 'aloglia', + ], + 'disableExactOnAttributes' => [ + 'algolia', + ], + 'disablePrefixOnAttributes' => [ + 'algolia', + ], + 'disableTypoToleranceOnAttributes' => [ + 'algolia', + ], + 'disableTypoToleranceOnWords' => [ + 'algolia', + ], + 'distinct' => 3, + 'enablePersonalization' => true, + 'enableReRanking' => false, + 'enableRules' => true, + 'exactOnSingleWordQuery' => 'attribute', + 'highlightPreTag' => '', + 'highlightPostTag' => '', + 'hitsPerPage' => 10, + 'ignorePlurals' => false, + 'indexLanguages' => [ + 'algolia', + ], + 'keepDiacriticsOnCharacters' => 'abc', + 'maxFacetHits' => 20, + 'maxValuesPerFacet' => 30, + 'minProximity' => 6, + 'minWordSizefor1Typo' => 5, + 'minWordSizefor2Typos' => 11, + 'mode' => 'neuralSearch', + 'numericAttributesForFiltering' => [ + 'algolia', + ], + 'optionalWords' => [ + 'myspace', + ], + 'paginationLimitedTo' => 0, + 'queryLanguages' => [ + 'algolia', + ], + 'queryType' => 'prefixLast', + 'ranking' => [ + 'geo', + ], + 'reRankingApplyFilter' => 'mySearch:filters', + 'relevancyStrictness' => 10, + 'removeStopWords' => false, + 'removeWordsIfNoResults' => 'lastWords', + 'renderingContent' => ['facetOrdering' => ['facets' => ['order' => [ + 'a', + + 'b', + ], + ], + 'values' => ['a' => ['order' => [ + 'b', + ], + 'sortRemainingBy' => 'count', + ], + ], + ], + ], + 'replaceSynonymsInHighlight' => true, + 'replicas' => [ + '', + ], + 'responseFields' => [ + 'algolia', + ], + 'restrictHighlightAndSnippetArrays' => true, + 'searchableAttributes' => [ + 'foo', + ], + 'semanticSearch' => ['eventSources' => [ + 'foo', + ], + ], + 'separatorsToIndex' => 'bar', + 'snippetEllipsisText' => '---', + 'sortFacetValuesBy' => 'date', + 'typoTolerance' => false, + 'unretrievableAttributes' => [ + 'foo', + ], + 'userData' => ['user' => 'data', + ], + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/indexes/theIndexName/settings', + 'method' => 'PUT', + 'body' => json_decode('{"advancedSyntax":true,"advancedSyntaxFeatures":["exactPhrase"],"allowCompressionOfIntegerArray":true,"allowTyposOnNumericTokens":true,"alternativesAsExact":["singleWordSynonym"],"attributeCriteriaComputedByMinProximity":true,"attributeForDistinct":"test","attributesForFaceting":["algolia"],"attributesToHighlight":["algolia"],"attributesToRetrieve":["algolia"],"attributesToSnippet":["algolia"],"attributesToTransliterate":["algolia"],"camelCaseAttributes":["algolia"],"customNormalization":{"algolia":{"aloglia":"aglolia"}},"customRanking":["algolia"],"decompoundQuery":false,"decompoundedAttributes":{"algolia":"aloglia"},"disableExactOnAttributes":["algolia"],"disablePrefixOnAttributes":["algolia"],"disableTypoToleranceOnAttributes":["algolia"],"disableTypoToleranceOnWords":["algolia"],"distinct":3,"enablePersonalization":true,"enableReRanking":false,"enableRules":true,"exactOnSingleWordQuery":"attribute","highlightPreTag":"","highlightPostTag":"","hitsPerPage":10,"ignorePlurals":false,"indexLanguages":["algolia"],"keepDiacriticsOnCharacters":"abc","maxFacetHits":20,"maxValuesPerFacet":30,"minProximity":6,"minWordSizefor1Typo":5,"minWordSizefor2Typos":11,"mode":"neuralSearch","numericAttributesForFiltering":["algolia"],"optionalWords":["myspace"],"paginationLimitedTo":0,"queryLanguages":["algolia"],"queryType":"prefixLast","ranking":["geo"],"reRankingApplyFilter":"mySearch:filters","relevancyStrictness":10,"removeStopWords":false,"removeWordsIfNoResults":"lastWords","renderingContent":{"facetOrdering":{"facets":{"order":["a","b"]},"values":{"a":{"order":["b"],"sortRemainingBy":"count"}}}},"replaceSynonymsInHighlight":true,"replicas":[""],"responseFields":["algolia"],"restrictHighlightAndSnippetArrays":true,"searchableAttributes":["foo"],"semanticSearch":{"eventSources":["foo"]},"separatorsToIndex":"bar","snippetEllipsisText":"---","sortFacetValuesBy":"date","typoTolerance":false,"unretrievableAttributes":["foo"],"userData":{"user":"data"}}'), + ], + ]); + } + + /** + * Test case for UpdateApiKey + * updateApiKey0. + */ + public function testUpdateApiKey0() + { + $client = $this->getClient(); + $client->updateApiKey( + 'myApiKey', + ['acl' => [ + 'search', + + 'addObject', + ], + 'validity' => 300, + 'maxQueriesPerIPPerHour' => 100, + 'maxHitsPerQuery' => 20, + ], + ); + + $this->assertRequests([ + [ + 'path' => '/1/keys/myApiKey', + 'method' => 'PUT', + 'body' => json_decode('{"acl":["search","addObject"],"validity":300,"maxQueriesPerIPPerHour":100,"maxHitsPerQuery":20}'), + ], + ]); + } + + protected function assertRequests(array $requests) + { + $this->assertGreaterThan(0, count($requests)); + $this->assertEquals(count($requests), count($this->recordedRequests)); + + foreach ($requests as $i => $request) { + $recordedRequest = $this->recordedRequests[$i]; + + $this->assertEquals($request['method'], $recordedRequest->getMethod()); + + $this->assertEquals($request['path'], $recordedRequest->getUri()->getPath()); + + if (isset($request['body'])) { + $this->assertEquals( + json_encode($request['body']), + $recordedRequest->getBody()->getContents() + ); + } + + if (isset($request['queryParameters'])) { + $this->assertEquals( + Query::build($request['queryParameters']), + $recordedRequest->getUri()->getQuery() + ); + } + + if (isset($request['headers'])) { + foreach ($request['headers'] as $key => $value) { + $this->assertArrayHasKey( + $key, + $recordedRequest->getHeaders() + ); + $this->assertEquals( + $recordedRequest->getHeaderLine($key), + $value + ); + } + } + } + } + + protected function getE2EClient() + { + return SearchClient::create($_ENV['ALGOLIA_APPLICATION_ID'], $_ENV['ALGOLIA_ADMIN_KEY']); + } + + protected function getClient() + { + $api = new ApiWrapper($this, SearchConfig::create(getenv('ALGOLIA_APP_ID'), getenv('ALGOLIA_API_KEY')), ClusterHosts::create('127.0.0.1')); + $config = SearchConfig::create('foo', 'bar'); + + return new SearchClient($api, $config); + } +} diff --git a/tests/output/python/tests/requests/abtesting_test.py b/tests/output/python/tests/requests/abtesting_test.py new file mode 100644 index 0000000000..b3b311f106 --- /dev/null +++ b/tests/output/python/tests/requests/abtesting_test.py @@ -0,0 +1,472 @@ +from json import loads + +from algoliasearch.abtesting.client import AbtestingClient +from algoliasearch.abtesting.config import Config +from algoliasearch.http.transporter import EchoTransporter + + +class TestAbtestingClient: + _config = Config("test_app_id", "test_api_key", "us") + _client = AbtestingClient(EchoTransporter(_config), _config) + + async def test_add_ab_tests_0(self): + """ + addABTests with minimal parameters + """ + _req = await self._client.add_ab_tests_with_http_info( + add_ab_tests_request={ + "endAt": "2022-12-31T00:00:00.000Z", + "name": "myABTest", + "variants": [ + { + "index": "AB_TEST_1", + "trafficPercentage": 30, + }, + { + "index": "AB_TEST_2", + "trafficPercentage": 50, + }, + ], + }, + ) + + assert _req.path == "/2/abtests" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"endAt":"2022-12-31T00:00:00.000Z","name":"myABTest","variants":[{"index":"AB_TEST_1","trafficPercentage":30},{"index":"AB_TEST_2","trafficPercentage":50}]}""" + ) + + async def test_custom_delete_0(self): + """ + allow del method for a custom path with minimal parameters + """ + _req = await self._client.custom_delete_with_http_info( + path="/test/minimal", + ) + + assert _req.path == "/1/test/minimal" + assert _req.verb == "DELETE" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_custom_delete_1(self): + """ + allow del method for a custom path with all parameters + """ + _req = await self._client.custom_delete_with_http_info( + path="/test/all", + parameters={ + "query": "parameters", + }, + ) + + assert _req.path == "/1/test/all" + assert _req.verb == "DELETE" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_custom_get_0(self): + """ + allow get method for a custom path with minimal parameters + """ + _req = await self._client.custom_get_with_http_info( + path="/test/minimal", + ) + + assert _req.path == "/1/test/minimal" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_custom_get_1(self): + """ + allow get method for a custom path with all parameters + """ + _req = await self._client.custom_get_with_http_info( + path="/test/all", + parameters={ + "query": "parameters", + }, + ) + + assert _req.path == "/1/test/all" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_custom_post_0(self): + """ + allow post method for a custom path with minimal parameters + """ + _req = await self._client.custom_post_with_http_info( + path="/test/minimal", + ) + + assert _req.path == "/1/test/minimal" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{}""") + + async def test_custom_post_1(self): + """ + allow post method for a custom path with all parameters + """ + _req = await self._client.custom_post_with_http_info( + path="/test/all", + parameters={ + "query": "parameters", + }, + body={ + "body": "parameters", + }, + ) + + assert _req.path == "/1/test/all" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"body":"parameters"}""") + + async def test_custom_post_2(self): + """ + requestOptions can override default query parameters + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"query":"myQueryParameter"}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {"query": "myQueryParameter"}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_3(self): + """ + requestOptions merges query parameters with default ones + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"query2":"myQueryParameter"}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "query2": "myQueryParameter"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_4(self): + """ + requestOptions can override default headers + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "headers": loads("""{"x-algolia-api-key":"myApiKey"}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {"x-algolia-api-key": "myApiKey"}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_5(self): + """ + requestOptions merges headers with default ones + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "headers": loads("""{"x-algolia-api-key":"myApiKey"}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {"x-algolia-api-key": "myApiKey"}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_6(self): + """ + requestOptions queryParameters accepts booleans + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"isItWorking":true}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "isItWorking": "true"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_7(self): + """ + requestOptions queryParameters accepts integers + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"myParam":2}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "myParam": "2"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_8(self): + """ + requestOptions queryParameters accepts list of string + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"myParam":["c","d"]}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "myParam": "c,d"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_9(self): + """ + requestOptions queryParameters accepts list of booleans + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"myParam":[true,true,false]}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "myParam": "true,true,false"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_10(self): + """ + requestOptions queryParameters accepts list of integers + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"myParam":[1,2]}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "myParam": "1,2"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_put_0(self): + """ + allow put method for a custom path with minimal parameters + """ + _req = await self._client.custom_put_with_http_info( + path="/test/minimal", + ) + + assert _req.path == "/1/test/minimal" + assert _req.verb == "PUT" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{}""") + + async def test_custom_put_1(self): + """ + allow put method for a custom path with all parameters + """ + _req = await self._client.custom_put_with_http_info( + path="/test/all", + parameters={ + "query": "parameters", + }, + body={ + "body": "parameters", + }, + ) + + assert _req.path == "/1/test/all" + assert _req.verb == "PUT" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"body":"parameters"}""") + + async def test_delete_ab_test_0(self): + """ + deleteABTest + """ + _req = await self._client.delete_ab_test_with_http_info( + id=42, + ) + + assert _req.path == "/2/abtests/42" + assert _req.verb == "DELETE" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_ab_test_0(self): + """ + getABTest + """ + _req = await self._client.get_ab_test_with_http_info( + id=42, + ) + + assert _req.path == "/2/abtests/42" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_list_ab_tests_0(self): + """ + listABTests with minimal parameters + """ + _req = await self._client.list_ab_tests_with_http_info() + + assert _req.path == "/2/abtests" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_list_ab_tests_1(self): + """ + listABTests with parameters + """ + _req = await self._client.list_ab_tests_with_http_info( + offset=42, + limit=21, + index_prefix="foo", + index_suffix="bar", + ) + + assert _req.path == "/2/abtests" + assert _req.verb == "GET" + assert ( + _req.query_parameters.items() + >= { + "offset": "42", + "limit": "21", + "indexPrefix": "foo", + "indexSuffix": "bar", + }.items() + ) + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_stop_ab_test_0(self): + """ + stopABTest + """ + _req = await self._client.stop_ab_test_with_http_info( + id=42, + ) + + assert _req.path == "/2/abtests/42/stop" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() diff --git a/tests/output/python/tests/requests/analytics_test.py b/tests/output/python/tests/requests/analytics_test.py new file mode 100644 index 0000000000..6f90b6b610 --- /dev/null +++ b/tests/output/python/tests/requests/analytics_test.py @@ -0,0 +1,1100 @@ +from json import loads + +from algoliasearch.analytics.client import AnalyticsClient +from algoliasearch.analytics.config import Config +from algoliasearch.http.transporter import EchoTransporter + + +class TestAnalyticsClient: + _config = Config("test_app_id", "test_api_key", "us") + _client = AnalyticsClient(EchoTransporter(_config), _config) + + async def test_custom_delete_0(self): + """ + allow del method for a custom path with minimal parameters + """ + _req = await self._client.custom_delete_with_http_info( + path="/test/minimal", + ) + + assert _req.path == "/1/test/minimal" + assert _req.verb == "DELETE" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_custom_delete_1(self): + """ + allow del method for a custom path with all parameters + """ + _req = await self._client.custom_delete_with_http_info( + path="/test/all", + parameters={ + "query": "parameters", + }, + ) + + assert _req.path == "/1/test/all" + assert _req.verb == "DELETE" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_custom_get_0(self): + """ + allow get method for a custom path with minimal parameters + """ + _req = await self._client.custom_get_with_http_info( + path="/test/minimal", + ) + + assert _req.path == "/1/test/minimal" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_custom_get_1(self): + """ + allow get method for a custom path with all parameters + """ + _req = await self._client.custom_get_with_http_info( + path="/test/all", + parameters={ + "query": "parameters", + }, + ) + + assert _req.path == "/1/test/all" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_custom_post_0(self): + """ + allow post method for a custom path with minimal parameters + """ + _req = await self._client.custom_post_with_http_info( + path="/test/minimal", + ) + + assert _req.path == "/1/test/minimal" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{}""") + + async def test_custom_post_1(self): + """ + allow post method for a custom path with all parameters + """ + _req = await self._client.custom_post_with_http_info( + path="/test/all", + parameters={ + "query": "parameters", + }, + body={ + "body": "parameters", + }, + ) + + assert _req.path == "/1/test/all" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"body":"parameters"}""") + + async def test_custom_post_2(self): + """ + requestOptions can override default query parameters + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"query":"myQueryParameter"}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {"query": "myQueryParameter"}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_3(self): + """ + requestOptions merges query parameters with default ones + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"query2":"myQueryParameter"}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "query2": "myQueryParameter"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_4(self): + """ + requestOptions can override default headers + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "headers": loads("""{"x-algolia-api-key":"myApiKey"}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {"x-algolia-api-key": "myApiKey"}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_5(self): + """ + requestOptions merges headers with default ones + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "headers": loads("""{"x-algolia-api-key":"myApiKey"}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {"x-algolia-api-key": "myApiKey"}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_6(self): + """ + requestOptions queryParameters accepts booleans + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"isItWorking":true}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "isItWorking": "true"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_7(self): + """ + requestOptions queryParameters accepts integers + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"myParam":2}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "myParam": "2"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_8(self): + """ + requestOptions queryParameters accepts list of string + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"myParam":["c","d"]}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "myParam": "c,d"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_9(self): + """ + requestOptions queryParameters accepts list of booleans + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"myParam":[true,true,false]}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "myParam": "true,true,false"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_10(self): + """ + requestOptions queryParameters accepts list of integers + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"myParam":[1,2]}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "myParam": "1,2"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_put_0(self): + """ + allow put method for a custom path with minimal parameters + """ + _req = await self._client.custom_put_with_http_info( + path="/test/minimal", + ) + + assert _req.path == "/1/test/minimal" + assert _req.verb == "PUT" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{}""") + + async def test_custom_put_1(self): + """ + allow put method for a custom path with all parameters + """ + _req = await self._client.custom_put_with_http_info( + path="/test/all", + parameters={ + "query": "parameters", + }, + body={ + "body": "parameters", + }, + ) + + assert _req.path == "/1/test/all" + assert _req.verb == "PUT" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"body":"parameters"}""") + + async def test_get_average_click_position_0(self): + """ + get getAverageClickPosition with minimal parameters + """ + _req = await self._client.get_average_click_position_with_http_info( + index="index", + ) + + assert _req.path == "/2/clicks/averageClickPosition" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {"index": "index"}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_average_click_position_1(self): + """ + get getAverageClickPosition with all parameters + """ + _req = await self._client.get_average_click_position_with_http_info( + index="index", + start_date="1999-09-19", + end_date="2001-01-01", + tags="tag", + ) + + assert _req.path == "/2/clicks/averageClickPosition" + assert _req.verb == "GET" + assert ( + _req.query_parameters.items() + >= { + "index": "index", + "startDate": "1999-09-19", + "endDate": "2001-01-01", + "tags": "tag", + }.items() + ) + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_click_positions_0(self): + """ + get getClickPositions with minimal parameters + """ + _req = await self._client.get_click_positions_with_http_info( + index="index", + ) + + assert _req.path == "/2/clicks/positions" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {"index": "index"}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_click_positions_1(self): + """ + get getClickPositions with all parameters + """ + _req = await self._client.get_click_positions_with_http_info( + index="index", + start_date="1999-09-19", + end_date="2001-01-01", + tags="tag", + ) + + assert _req.path == "/2/clicks/positions" + assert _req.verb == "GET" + assert ( + _req.query_parameters.items() + >= { + "index": "index", + "startDate": "1999-09-19", + "endDate": "2001-01-01", + "tags": "tag", + }.items() + ) + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_click_through_rate_0(self): + """ + get getClickThroughRate with minimal parameters + """ + _req = await self._client.get_click_through_rate_with_http_info( + index="index", + ) + + assert _req.path == "/2/clicks/clickThroughRate" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {"index": "index"}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_click_through_rate_1(self): + """ + get getClickThroughRate with all parameters + """ + _req = await self._client.get_click_through_rate_with_http_info( + index="index", + start_date="1999-09-19", + end_date="2001-01-01", + tags="tag", + ) + + assert _req.path == "/2/clicks/clickThroughRate" + assert _req.verb == "GET" + assert ( + _req.query_parameters.items() + >= { + "index": "index", + "startDate": "1999-09-19", + "endDate": "2001-01-01", + "tags": "tag", + }.items() + ) + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_conversation_rate_0(self): + """ + get getConversationRate with minimal parameters + """ + _req = await self._client.get_conversation_rate_with_http_info( + index="index", + ) + + assert _req.path == "/2/conversions/conversionRate" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {"index": "index"}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_conversation_rate_1(self): + """ + get getConversationRate with all parameters + """ + _req = await self._client.get_conversation_rate_with_http_info( + index="index", + start_date="1999-09-19", + end_date="2001-01-01", + tags="tag", + ) + + assert _req.path == "/2/conversions/conversionRate" + assert _req.verb == "GET" + assert ( + _req.query_parameters.items() + >= { + "index": "index", + "startDate": "1999-09-19", + "endDate": "2001-01-01", + "tags": "tag", + }.items() + ) + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_no_click_rate_0(self): + """ + get getNoClickRate with minimal parameters + """ + _req = await self._client.get_no_click_rate_with_http_info( + index="index", + ) + + assert _req.path == "/2/searches/noClickRate" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {"index": "index"}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_no_click_rate_1(self): + """ + get getNoClickRate with all parameters + """ + _req = await self._client.get_no_click_rate_with_http_info( + index="index", + start_date="1999-09-19", + end_date="2001-01-01", + tags="tag", + ) + + assert _req.path == "/2/searches/noClickRate" + assert _req.verb == "GET" + assert ( + _req.query_parameters.items() + >= { + "index": "index", + "startDate": "1999-09-19", + "endDate": "2001-01-01", + "tags": "tag", + }.items() + ) + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_no_results_rate_0(self): + """ + get getNoResultsRate with minimal parameters + """ + _req = await self._client.get_no_results_rate_with_http_info( + index="index", + ) + + assert _req.path == "/2/searches/noResultRate" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {"index": "index"}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_no_results_rate_1(self): + """ + get getNoResultsRate with all parameters + """ + _req = await self._client.get_no_results_rate_with_http_info( + index="index", + start_date="1999-09-19", + end_date="2001-01-01", + tags="tag", + ) + + assert _req.path == "/2/searches/noResultRate" + assert _req.verb == "GET" + assert ( + _req.query_parameters.items() + >= { + "index": "index", + "startDate": "1999-09-19", + "endDate": "2001-01-01", + "tags": "tag", + }.items() + ) + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_searches_count_0(self): + """ + get getSearchesCount with minimal parameters + """ + _req = await self._client.get_searches_count_with_http_info( + index="index", + ) + + assert _req.path == "/2/searches/count" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {"index": "index"}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_searches_count_1(self): + """ + get getSearchesCount with all parameters + """ + _req = await self._client.get_searches_count_with_http_info( + index="index", + start_date="1999-09-19", + end_date="2001-01-01", + tags="tag", + ) + + assert _req.path == "/2/searches/count" + assert _req.verb == "GET" + assert ( + _req.query_parameters.items() + >= { + "index": "index", + "startDate": "1999-09-19", + "endDate": "2001-01-01", + "tags": "tag", + }.items() + ) + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_searches_no_clicks_0(self): + """ + get getSearchesNoClicks with minimal parameters + """ + _req = await self._client.get_searches_no_clicks_with_http_info( + index="index", + ) + + assert _req.path == "/2/searches/noClicks" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {"index": "index"}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_searches_no_clicks_1(self): + """ + get getSearchesNoClicks with all parameters + """ + _req = await self._client.get_searches_no_clicks_with_http_info( + index="index", + start_date="1999-09-19", + end_date="2001-01-01", + limit=21, + offset=42, + tags="tag", + ) + + assert _req.path == "/2/searches/noClicks" + assert _req.verb == "GET" + assert ( + _req.query_parameters.items() + >= { + "index": "index", + "startDate": "1999-09-19", + "endDate": "2001-01-01", + "limit": "21", + "offset": "42", + "tags": "tag", + }.items() + ) + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_searches_no_results_0(self): + """ + get getSearchesNoResults with minimal parameters + """ + _req = await self._client.get_searches_no_results_with_http_info( + index="index", + ) + + assert _req.path == "/2/searches/noResults" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {"index": "index"}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_searches_no_results_1(self): + """ + get getSearchesNoResults with all parameters + """ + _req = await self._client.get_searches_no_results_with_http_info( + index="index", + start_date="1999-09-19", + end_date="2001-01-01", + limit=21, + offset=42, + tags="tag", + ) + + assert _req.path == "/2/searches/noResults" + assert _req.verb == "GET" + assert ( + _req.query_parameters.items() + >= { + "index": "index", + "startDate": "1999-09-19", + "endDate": "2001-01-01", + "limit": "21", + "offset": "42", + "tags": "tag", + }.items() + ) + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_status_0(self): + """ + get getStatus with minimal parameters + """ + _req = await self._client.get_status_with_http_info( + index="index", + ) + + assert _req.path == "/2/status" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {"index": "index"}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_top_countries_0(self): + """ + get getTopCountries with minimal parameters + """ + _req = await self._client.get_top_countries_with_http_info( + index="index", + ) + + assert _req.path == "/2/countries" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {"index": "index"}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_top_countries_1(self): + """ + get getTopCountries with all parameters + """ + _req = await self._client.get_top_countries_with_http_info( + index="index", + start_date="1999-09-19", + end_date="2001-01-01", + limit=21, + offset=42, + tags="tag", + ) + + assert _req.path == "/2/countries" + assert _req.verb == "GET" + assert ( + _req.query_parameters.items() + >= { + "index": "index", + "startDate": "1999-09-19", + "endDate": "2001-01-01", + "limit": "21", + "offset": "42", + "tags": "tag", + }.items() + ) + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_top_filter_attributes_0(self): + """ + get getTopFilterAttributes with minimal parameters + """ + _req = await self._client.get_top_filter_attributes_with_http_info( + index="index", + ) + + assert _req.path == "/2/filters" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {"index": "index"}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_top_filter_attributes_1(self): + """ + get getTopFilterAttributes with all parameters + """ + _req = await self._client.get_top_filter_attributes_with_http_info( + index="index", + search="mySearch", + start_date="1999-09-19", + end_date="2001-01-01", + limit=21, + offset=42, + tags="tag", + ) + + assert _req.path == "/2/filters" + assert _req.verb == "GET" + assert ( + _req.query_parameters.items() + >= { + "index": "index", + "search": "mySearch", + "startDate": "1999-09-19", + "endDate": "2001-01-01", + "limit": "21", + "offset": "42", + "tags": "tag", + }.items() + ) + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_top_filter_for_attribute_0(self): + """ + get getTopFilterForAttribute with minimal parameters + """ + _req = await self._client.get_top_filter_for_attribute_with_http_info( + attribute="myAttribute", + index="index", + ) + + assert _req.path == "/2/filters/myAttribute" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {"index": "index"}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_top_filter_for_attribute_1(self): + """ + get getTopFilterForAttribute with minimal parameters and multiple attributes + """ + _req = await self._client.get_top_filter_for_attribute_with_http_info( + attribute="myAttribute1,myAttribute2", + index="index", + ) + + assert _req.path == "/2/filters/myAttribute1%2CmyAttribute2" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {"index": "index"}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_top_filter_for_attribute_2(self): + """ + get getTopFilterForAttribute with all parameters + """ + _req = await self._client.get_top_filter_for_attribute_with_http_info( + attribute="myAttribute", + index="index", + search="mySearch", + start_date="1999-09-19", + end_date="2001-01-01", + limit=21, + offset=42, + tags="tag", + ) + + assert _req.path == "/2/filters/myAttribute" + assert _req.verb == "GET" + assert ( + _req.query_parameters.items() + >= { + "index": "index", + "search": "mySearch", + "startDate": "1999-09-19", + "endDate": "2001-01-01", + "limit": "21", + "offset": "42", + "tags": "tag", + }.items() + ) + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_top_filter_for_attribute_3(self): + """ + get getTopFilterForAttribute with all parameters and multiple attributes + """ + _req = await self._client.get_top_filter_for_attribute_with_http_info( + attribute="myAttribute1,myAttribute2", + index="index", + search="mySearch", + start_date="1999-09-19", + end_date="2001-01-01", + limit=21, + offset=42, + tags="tag", + ) + + assert _req.path == "/2/filters/myAttribute1%2CmyAttribute2" + assert _req.verb == "GET" + assert ( + _req.query_parameters.items() + >= { + "index": "index", + "search": "mySearch", + "startDate": "1999-09-19", + "endDate": "2001-01-01", + "limit": "21", + "offset": "42", + "tags": "tag", + }.items() + ) + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_top_filters_no_results_0(self): + """ + get getTopFiltersNoResults with minimal parameters + """ + _req = await self._client.get_top_filters_no_results_with_http_info( + index="index", + ) + + assert _req.path == "/2/filters/noResults" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {"index": "index"}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_top_filters_no_results_1(self): + """ + get getTopFiltersNoResults with all parameters + """ + _req = await self._client.get_top_filters_no_results_with_http_info( + index="index", + search="mySearch", + start_date="1999-09-19", + end_date="2001-01-01", + limit=21, + offset=42, + tags="tag", + ) + + assert _req.path == "/2/filters/noResults" + assert _req.verb == "GET" + assert ( + _req.query_parameters.items() + >= { + "index": "index", + "search": "mySearch", + "startDate": "1999-09-19", + "endDate": "2001-01-01", + "limit": "21", + "offset": "42", + "tags": "tag", + }.items() + ) + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_top_hits_0(self): + """ + get getTopHits with minimal parameters + """ + _req = await self._client.get_top_hits_with_http_info( + index="index", + ) + + assert _req.path == "/2/hits" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {"index": "index"}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_top_hits_1(self): + """ + get getTopHits with all parameters + """ + _req = await self._client.get_top_hits_with_http_info( + index="index", + search="mySearch", + click_analytics=True, + start_date="1999-09-19", + end_date="2001-01-01", + limit=21, + offset=42, + tags="tag", + ) + + assert _req.path == "/2/hits" + assert _req.verb == "GET" + assert ( + _req.query_parameters.items() + >= { + "index": "index", + "search": "mySearch", + "clickAnalytics": "true", + "startDate": "1999-09-19", + "endDate": "2001-01-01", + "limit": "21", + "offset": "42", + "tags": "tag", + }.items() + ) + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_top_searches_0(self): + """ + get getTopSearches with minimal parameters + """ + _req = await self._client.get_top_searches_with_http_info( + index="index", + ) + + assert _req.path == "/2/searches" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {"index": "index"}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_top_searches_1(self): + """ + get getTopSearches with all parameters + """ + _req = await self._client.get_top_searches_with_http_info( + index="index", + click_analytics=True, + start_date="1999-09-19", + end_date="2001-01-01", + order_by="searchCount", + direction="asc", + limit=21, + offset=42, + tags="tag", + ) + + assert _req.path == "/2/searches" + assert _req.verb == "GET" + assert ( + _req.query_parameters.items() + >= { + "index": "index", + "clickAnalytics": "true", + "startDate": "1999-09-19", + "endDate": "2001-01-01", + "orderBy": "searchCount", + "direction": "asc", + "limit": "21", + "offset": "42", + "tags": "tag", + }.items() + ) + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_users_count_0(self): + """ + get getUsersCount with minimal parameters + """ + _req = await self._client.get_users_count_with_http_info( + index="index", + ) + + assert _req.path == "/2/users/count" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {"index": "index"}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_users_count_1(self): + """ + get getUsersCount with all parameters + """ + _req = await self._client.get_users_count_with_http_info( + index="index", + start_date="1999-09-19", + end_date="2001-01-01", + tags="tag", + ) + + assert _req.path == "/2/users/count" + assert _req.verb == "GET" + assert ( + _req.query_parameters.items() + >= { + "index": "index", + "startDate": "1999-09-19", + "endDate": "2001-01-01", + "tags": "tag", + }.items() + ) + assert _req.headers.items() >= {}.items() + assert _req.data is None diff --git a/tests/output/python/tests/requests/ingestion_test.py b/tests/output/python/tests/requests/ingestion_test.py new file mode 100644 index 0000000000..17ee146848 --- /dev/null +++ b/tests/output/python/tests/requests/ingestion_test.py @@ -0,0 +1,971 @@ +from json import loads + +from algoliasearch.http.transporter import EchoTransporter +from algoliasearch.ingestion.client import IngestionClient +from algoliasearch.ingestion.config import Config + + +class TestIngestionClient: + _config = Config("test_app_id", "test_api_key", "us") + _client = IngestionClient(EchoTransporter(_config), _config) + + async def test_create_authentication_0(self): + """ + createAuthenticationOAuth + """ + _req = await self._client.create_authentication_with_http_info( + authentication_create={ + "type": "oauth", + "name": "authName", + "input": { + "url": "http://test.oauth", + "client_id": "myID", + "client_secret": "mySecret", + }, + }, + ) + + assert _req.path == "/1/authentications" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"type":"oauth","name":"authName","input":{"url":"http://test.oauth","client_id":"myID","client_secret":"mySecret"}}""" + ) + + async def test_create_authentication_1(self): + """ + createAuthenticationAlgolia + """ + _req = await self._client.create_authentication_with_http_info( + authentication_create={ + "type": "algolia", + "name": "authName", + "input": { + "appID": "myappID", + "apiKey": "randomApiKey", + }, + }, + ) + + assert _req.path == "/1/authentications" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"type":"algolia","name":"authName","input":{"appID":"myappID","apiKey":"randomApiKey"}}""" + ) + + async def test_create_destination_0(self): + """ + createDestination + """ + _req = await self._client.create_destination_with_http_info( + destination_create={ + "type": "search", + "name": "destinationName", + "input": { + "indexPrefix": "prefix_", + }, + "authenticationID": "6c02aeb1-775e-418e-870b-1faccd4b2c0f", + }, + ) + + assert _req.path == "/1/destinations" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"type":"search","name":"destinationName","input":{"indexPrefix":"prefix_"},"authenticationID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}""" + ) + + async def test_create_source_0(self): + """ + createSource + """ + _req = await self._client.create_source_with_http_info( + source_create={ + "type": "commercetools", + "name": "sourceName", + "input": { + "storeKeys": [ + "myStore", + ], + "locales": [ + "de", + ], + "url": "http://commercetools.com", + "projectKey": "keyID", + }, + "authenticationID": "6c02aeb1-775e-418e-870b-1faccd4b2c0f", + }, + ) + + assert _req.path == "/1/sources" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"type":"commercetools","name":"sourceName","input":{"storeKeys":["myStore"],"locales":["de"],"url":"http://commercetools.com","projectKey":"keyID"},"authenticationID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}""" + ) + + async def test_create_task_0(self): + """ + createTaskOnDemand + """ + _req = await self._client.create_task_with_http_info( + task_create={ + "sourceID": "search", + "destinationID": "destinationName", + "trigger": { + "type": "onDemand", + }, + "action": "replace", + }, + ) + + assert _req.path == "/1/tasks" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"sourceID":"search","destinationID":"destinationName","trigger":{"type":"onDemand"},"action":"replace"}""" + ) + + async def test_create_task_1(self): + """ + createTaskSchedule + """ + _req = await self._client.create_task_with_http_info( + task_create={ + "sourceID": "search", + "destinationID": "destinationName", + "trigger": { + "type": "schedule", + "cron": "* * * * *", + }, + "action": "replace", + }, + ) + + assert _req.path == "/1/tasks" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"sourceID":"search","destinationID":"destinationName","trigger":{"type":"schedule","cron":"* * * * *"},"action":"replace"}""" + ) + + async def test_create_task_2(self): + """ + createTaskSubscription + """ + _req = await self._client.create_task_with_http_info( + task_create={ + "sourceID": "search", + "destinationID": "destinationName", + "trigger": { + "type": "onDemand", + }, + "action": "replace", + }, + ) + + assert _req.path == "/1/tasks" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"sourceID":"search","destinationID":"destinationName","trigger":{"type":"onDemand"},"action":"replace"}""" + ) + + async def test_custom_delete_0(self): + """ + allow del method for a custom path with minimal parameters + """ + _req = await self._client.custom_delete_with_http_info( + path="/test/minimal", + ) + + assert _req.path == "/1/test/minimal" + assert _req.verb == "DELETE" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_custom_delete_1(self): + """ + allow del method for a custom path with all parameters + """ + _req = await self._client.custom_delete_with_http_info( + path="/test/all", + parameters={ + "query": "parameters", + }, + ) + + assert _req.path == "/1/test/all" + assert _req.verb == "DELETE" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_custom_get_0(self): + """ + allow get method for a custom path with minimal parameters + """ + _req = await self._client.custom_get_with_http_info( + path="/test/minimal", + ) + + assert _req.path == "/1/test/minimal" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_custom_get_1(self): + """ + allow get method for a custom path with all parameters + """ + _req = await self._client.custom_get_with_http_info( + path="/test/all", + parameters={ + "query": "parameters", + }, + ) + + assert _req.path == "/1/test/all" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_custom_post_0(self): + """ + allow post method for a custom path with minimal parameters + """ + _req = await self._client.custom_post_with_http_info( + path="/test/minimal", + ) + + assert _req.path == "/1/test/minimal" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{}""") + + async def test_custom_post_1(self): + """ + allow post method for a custom path with all parameters + """ + _req = await self._client.custom_post_with_http_info( + path="/test/all", + parameters={ + "query": "parameters", + }, + body={ + "body": "parameters", + }, + ) + + assert _req.path == "/1/test/all" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"body":"parameters"}""") + + async def test_custom_post_2(self): + """ + requestOptions can override default query parameters + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"query":"myQueryParameter"}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {"query": "myQueryParameter"}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_3(self): + """ + requestOptions merges query parameters with default ones + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"query2":"myQueryParameter"}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "query2": "myQueryParameter"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_4(self): + """ + requestOptions can override default headers + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "headers": loads("""{"x-algolia-api-key":"myApiKey"}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {"x-algolia-api-key": "myApiKey"}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_5(self): + """ + requestOptions merges headers with default ones + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "headers": loads("""{"x-algolia-api-key":"myApiKey"}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {"x-algolia-api-key": "myApiKey"}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_6(self): + """ + requestOptions queryParameters accepts booleans + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"isItWorking":true}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "isItWorking": "true"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_7(self): + """ + requestOptions queryParameters accepts integers + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"myParam":2}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "myParam": "2"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_8(self): + """ + requestOptions queryParameters accepts list of string + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"myParam":["c","d"]}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "myParam": "c,d"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_9(self): + """ + requestOptions queryParameters accepts list of booleans + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"myParam":[true,true,false]}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "myParam": "true,true,false"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_10(self): + """ + requestOptions queryParameters accepts list of integers + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"myParam":[1,2]}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "myParam": "1,2"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_put_0(self): + """ + allow put method for a custom path with minimal parameters + """ + _req = await self._client.custom_put_with_http_info( + path="/test/minimal", + ) + + assert _req.path == "/1/test/minimal" + assert _req.verb == "PUT" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{}""") + + async def test_custom_put_1(self): + """ + allow put method for a custom path with all parameters + """ + _req = await self._client.custom_put_with_http_info( + path="/test/all", + parameters={ + "query": "parameters", + }, + body={ + "body": "parameters", + }, + ) + + assert _req.path == "/1/test/all" + assert _req.verb == "PUT" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"body":"parameters"}""") + + async def test_delete_authentication_0(self): + """ + deleteAuthentication + """ + _req = await self._client.delete_authentication_with_http_info( + authentication_id="6c02aeb1-775e-418e-870b-1faccd4b2c0f", + ) + + assert _req.path == "/1/authentications/6c02aeb1-775e-418e-870b-1faccd4b2c0f" + assert _req.verb == "DELETE" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_delete_destination_0(self): + """ + deleteDestination + """ + _req = await self._client.delete_destination_with_http_info( + destination_id="6c02aeb1-775e-418e-870b-1faccd4b2c0f", + ) + + assert _req.path == "/1/destinations/6c02aeb1-775e-418e-870b-1faccd4b2c0f" + assert _req.verb == "DELETE" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_delete_source_0(self): + """ + deleteSource + """ + _req = await self._client.delete_source_with_http_info( + source_id="6c02aeb1-775e-418e-870b-1faccd4b2c0f", + ) + + assert _req.path == "/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f" + assert _req.verb == "DELETE" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_delete_task_0(self): + """ + deleteTask + """ + _req = await self._client.delete_task_with_http_info( + task_id="6c02aeb1-775e-418e-870b-1faccd4b2c0f", + ) + + assert _req.path == "/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f" + assert _req.verb == "DELETE" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_disable_task_0(self): + """ + disableTask + """ + _req = await self._client.disable_task_with_http_info( + task_id="6c02aeb1-775e-418e-870b-1faccd4b2c0f", + ) + + assert _req.path == "/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f/disable" + assert _req.verb == "PUT" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + + async def test_enable_task_0(self): + """ + enableTask + """ + _req = await self._client.enable_task_with_http_info( + task_id="6c02aeb1-775e-418e-870b-1faccd4b2c0f", + ) + + assert _req.path == "/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f/enable" + assert _req.verb == "PUT" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + + async def test_get_authentication_0(self): + """ + getAuthentication + """ + _req = await self._client.get_authentication_with_http_info( + authentication_id="6c02aeb1-775e-418e-870b-1faccd4b2c0f", + ) + + assert _req.path == "/1/authentications/6c02aeb1-775e-418e-870b-1faccd4b2c0f" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_authentications_0(self): + """ + getAuthentications + """ + _req = await self._client.get_authentications_with_http_info() + + assert _req.path == "/1/authentications" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_destination_0(self): + """ + getDestination + """ + _req = await self._client.get_destination_with_http_info( + destination_id="6c02aeb1-775e-418e-870b-1faccd4b2c0f", + ) + + assert _req.path == "/1/destinations/6c02aeb1-775e-418e-870b-1faccd4b2c0f" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_destinations_0(self): + """ + getDestinations + """ + _req = await self._client.get_destinations_with_http_info() + + assert _req.path == "/1/destinations" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_docker_source_streams_0(self): + """ + getDockerSourceStreams + """ + _req = await self._client.get_docker_source_streams_with_http_info( + source_id="6c02aeb1-775e-418e-870b-1faccd4b2c0f", + ) + + assert _req.path == "/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f/discover" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_event_0(self): + """ + getEvent + """ + _req = await self._client.get_event_with_http_info( + run_id="6c02aeb1-775e-418e-870b-1faccd4b2c0f", + event_id="6c02aeb1-775e-418e-870b-1faccd4b2c0c", + ) + + assert ( + _req.path + == "/1/runs/6c02aeb1-775e-418e-870b-1faccd4b2c0f/events/6c02aeb1-775e-418e-870b-1faccd4b2c0c" + ) + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_events_0(self): + """ + getEvents + """ + _req = await self._client.get_events_with_http_info( + run_id="6c02aeb1-775e-418e-870b-1faccd4b2c0f", + ) + + assert _req.path == "/1/runs/6c02aeb1-775e-418e-870b-1faccd4b2c0f/events" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_run_0(self): + """ + getRun + """ + _req = await self._client.get_run_with_http_info( + run_id="6c02aeb1-775e-418e-870b-1faccd4b2c0f", + ) + + assert _req.path == "/1/runs/6c02aeb1-775e-418e-870b-1faccd4b2c0f" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_runs_0(self): + """ + getRuns + """ + _req = await self._client.get_runs_with_http_info() + + assert _req.path == "/1/runs" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_source_0(self): + """ + getSource + """ + _req = await self._client.get_source_with_http_info( + source_id="6c02aeb1-775e-418e-870b-1faccd4b2c0f", + ) + + assert _req.path == "/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_sources_0(self): + """ + getSources + """ + _req = await self._client.get_sources_with_http_info() + + assert _req.path == "/1/sources" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_task_0(self): + """ + getTask + """ + _req = await self._client.get_task_with_http_info( + task_id="6c02aeb1-775e-418e-870b-1faccd4b2c0f", + ) + + assert _req.path == "/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_tasks_0(self): + """ + getTasks + """ + _req = await self._client.get_tasks_with_http_info() + + assert _req.path == "/1/tasks" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_run_task_0(self): + """ + runTask + """ + _req = await self._client.run_task_with_http_info( + task_id="6c02aeb1-775e-418e-870b-1faccd4b2c0f", + ) + + assert _req.path == "/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f/run" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + + async def test_search_authentications_0(self): + """ + searchAuthentications + """ + _req = await self._client.search_authentications_with_http_info( + authentication_search={ + "authenticationIDs": [ + "6c02aeb1-775e-418e-870b-1faccd4b2c0f", + "947ac9c4-7e58-4c87-b1e7-14a68e99699a", + ], + }, + ) + + assert _req.path == "/1/authentications/search" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"authenticationIDs":["6c02aeb1-775e-418e-870b-1faccd4b2c0f","947ac9c4-7e58-4c87-b1e7-14a68e99699a"]}""" + ) + + async def test_search_destinations_0(self): + """ + searchDestinations + """ + _req = await self._client.search_destinations_with_http_info( + destination_search={ + "destinationIDs": [ + "6c02aeb1-775e-418e-870b-1faccd4b2c0f", + "947ac9c4-7e58-4c87-b1e7-14a68e99699a", + ], + }, + ) + + assert _req.path == "/1/destinations/search" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"destinationIDs":["6c02aeb1-775e-418e-870b-1faccd4b2c0f","947ac9c4-7e58-4c87-b1e7-14a68e99699a"]}""" + ) + + async def test_search_sources_0(self): + """ + searchSources + """ + _req = await self._client.search_sources_with_http_info( + source_search={ + "sourceIDs": [ + "6c02aeb1-775e-418e-870b-1faccd4b2c0f", + "947ac9c4-7e58-4c87-b1e7-14a68e99699a", + ], + }, + ) + + assert _req.path == "/1/sources/search" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"sourceIDs":["6c02aeb1-775e-418e-870b-1faccd4b2c0f","947ac9c4-7e58-4c87-b1e7-14a68e99699a"]}""" + ) + + async def test_search_tasks_0(self): + """ + searchTasks + """ + _req = await self._client.search_tasks_with_http_info( + task_search={ + "taskIDs": [ + "6c02aeb1-775e-418e-870b-1faccd4b2c0f", + "947ac9c4-7e58-4c87-b1e7-14a68e99699a", + ], + }, + ) + + assert _req.path == "/1/tasks/search" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"taskIDs":["6c02aeb1-775e-418e-870b-1faccd4b2c0f","947ac9c4-7e58-4c87-b1e7-14a68e99699a"]}""" + ) + + async def test_trigger_docker_source_discover_0(self): + """ + triggerDockerSourceDiscover + """ + _req = await self._client.trigger_docker_source_discover_with_http_info( + source_id="6c02aeb1-775e-418e-870b-1faccd4b2c0f", + ) + + assert _req.path == "/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f/discover" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + + async def test_update_authentication_0(self): + """ + updateAuthentication + """ + _req = await self._client.update_authentication_with_http_info( + authentication_id="6c02aeb1-775e-418e-870b-1faccd4b2c0f", + authentication_update={ + "name": "newName", + }, + ) + + assert _req.path == "/1/authentications/6c02aeb1-775e-418e-870b-1faccd4b2c0f" + assert _req.verb == "PATCH" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"name":"newName"}""") + + async def test_update_destination_0(self): + """ + updateDestination + """ + _req = await self._client.update_destination_with_http_info( + destination_id="6c02aeb1-775e-418e-870b-1faccd4b2c0f", + destination_update={ + "name": "newName", + }, + ) + + assert _req.path == "/1/destinations/6c02aeb1-775e-418e-870b-1faccd4b2c0f" + assert _req.verb == "PATCH" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"name":"newName"}""") + + async def test_update_source_0(self): + """ + updateSource + """ + _req = await self._client.update_source_with_http_info( + source_id="6c02aeb1-775e-418e-870b-1faccd4b2c0f", + source_update={ + "name": "newName", + }, + ) + + assert _req.path == "/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f" + assert _req.verb == "PATCH" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"name":"newName"}""") + + async def test_update_task_0(self): + """ + updateTask + """ + _req = await self._client.update_task_with_http_info( + task_id="6c02aeb1-775e-418e-870b-1faccd4b2c0f", + task_update={ + "enabled": False, + }, + ) + + assert _req.path == "/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f" + assert _req.verb == "PATCH" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"enabled":false}""") diff --git a/tests/output/python/tests/requests/insights_test.py b/tests/output/python/tests/requests/insights_test.py new file mode 100644 index 0000000000..e439f3b202 --- /dev/null +++ b/tests/output/python/tests/requests/insights_test.py @@ -0,0 +1,554 @@ +from json import loads + +from algoliasearch.http.transporter import EchoTransporter +from algoliasearch.insights.client import InsightsClient +from algoliasearch.insights.config import Config + + +class TestInsightsClient: + _config = Config("test_app_id", "test_api_key", "us") + _client = InsightsClient(EchoTransporter(_config), _config) + + async def test_custom_delete_0(self): + """ + allow del method for a custom path with minimal parameters + """ + _req = await self._client.custom_delete_with_http_info( + path="/test/minimal", + ) + + assert _req.path == "/1/test/minimal" + assert _req.verb == "DELETE" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_custom_delete_1(self): + """ + allow del method for a custom path with all parameters + """ + _req = await self._client.custom_delete_with_http_info( + path="/test/all", + parameters={ + "query": "parameters", + }, + ) + + assert _req.path == "/1/test/all" + assert _req.verb == "DELETE" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_custom_get_0(self): + """ + allow get method for a custom path with minimal parameters + """ + _req = await self._client.custom_get_with_http_info( + path="/test/minimal", + ) + + assert _req.path == "/1/test/minimal" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_custom_get_1(self): + """ + allow get method for a custom path with all parameters + """ + _req = await self._client.custom_get_with_http_info( + path="/test/all", + parameters={ + "query": "parameters", + }, + ) + + assert _req.path == "/1/test/all" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_custom_post_0(self): + """ + allow post method for a custom path with minimal parameters + """ + _req = await self._client.custom_post_with_http_info( + path="/test/minimal", + ) + + assert _req.path == "/1/test/minimal" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{}""") + + async def test_custom_post_1(self): + """ + allow post method for a custom path with all parameters + """ + _req = await self._client.custom_post_with_http_info( + path="/test/all", + parameters={ + "query": "parameters", + }, + body={ + "body": "parameters", + }, + ) + + assert _req.path == "/1/test/all" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"body":"parameters"}""") + + async def test_custom_post_2(self): + """ + requestOptions can override default query parameters + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"query":"myQueryParameter"}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {"query": "myQueryParameter"}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_3(self): + """ + requestOptions merges query parameters with default ones + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"query2":"myQueryParameter"}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "query2": "myQueryParameter"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_4(self): + """ + requestOptions can override default headers + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "headers": loads("""{"x-algolia-api-key":"myApiKey"}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {"x-algolia-api-key": "myApiKey"}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_5(self): + """ + requestOptions merges headers with default ones + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "headers": loads("""{"x-algolia-api-key":"myApiKey"}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {"x-algolia-api-key": "myApiKey"}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_6(self): + """ + requestOptions queryParameters accepts booleans + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"isItWorking":true}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "isItWorking": "true"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_7(self): + """ + requestOptions queryParameters accepts integers + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"myParam":2}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "myParam": "2"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_8(self): + """ + requestOptions queryParameters accepts list of string + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"myParam":["c","d"]}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "myParam": "c,d"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_9(self): + """ + requestOptions queryParameters accepts list of booleans + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"myParam":[true,true,false]}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "myParam": "true,true,false"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_10(self): + """ + requestOptions queryParameters accepts list of integers + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"myParam":[1,2]}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "myParam": "1,2"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_put_0(self): + """ + allow put method for a custom path with minimal parameters + """ + _req = await self._client.custom_put_with_http_info( + path="/test/minimal", + ) + + assert _req.path == "/1/test/minimal" + assert _req.verb == "PUT" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{}""") + + async def test_custom_put_1(self): + """ + allow put method for a custom path with all parameters + """ + _req = await self._client.custom_put_with_http_info( + path="/test/all", + parameters={ + "query": "parameters", + }, + body={ + "body": "parameters", + }, + ) + + assert _req.path == "/1/test/all" + assert _req.verb == "PUT" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"body":"parameters"}""") + + async def test_push_events_0(self): + """ + pushEvents0 + """ + _req = await self._client.push_events_with_http_info( + insights_events={ + "events": [ + { + "eventType": "click", + "eventName": "Product Clicked", + "index": "products", + "userToken": "user-123456", + "authenticatedUserToken": "user-123456", + "timestamp": 1641290601962, + "objectIDs": [ + "9780545139700", + "9780439784542", + ], + "queryID": "43b15df305339e827f0ac0bdc5ebcaa7", + "positions": [ + 7, + 6, + ], + }, + ], + }, + ) + + assert _req.path == "/1/events" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"events":[{"eventType":"click","eventName":"Product Clicked","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"queryID":"43b15df305339e827f0ac0bdc5ebcaa7","positions":[7,6]}]}""" + ) + + async def test_push_events_1(self): + """ + Many events type + """ + _req = await self._client.push_events_with_http_info( + insights_events={ + "events": [ + { + "eventType": "conversion", + "eventName": "Product Purchased", + "index": "products", + "userToken": "user-123456", + "authenticatedUserToken": "user-123456", + "timestamp": 1641290601962, + "objectIDs": [ + "9780545139700", + "9780439784542", + ], + "queryID": "43b15df305339e827f0ac0bdc5ebcaa7", + }, + { + "eventType": "view", + "eventName": "Product Detail Page Viewed", + "index": "products", + "userToken": "user-123456", + "authenticatedUserToken": "user-123456", + "timestamp": 1641290601962, + "objectIDs": [ + "9780545139700", + "9780439784542", + ], + }, + ], + }, + ) + + assert _req.path == "/1/events" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"events":[{"eventType":"conversion","eventName":"Product Purchased","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"queryID":"43b15df305339e827f0ac0bdc5ebcaa7"},{"eventType":"view","eventName":"Product Detail Page Viewed","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"]}]}""" + ) + + async def test_push_events_2(self): + """ + ConvertedObjectIDsAfterSearch + """ + _req = await self._client.push_events_with_http_info( + insights_events={ + "events": [ + { + "eventType": "conversion", + "eventName": "Product Purchased", + "index": "products", + "userToken": "user-123456", + "authenticatedUserToken": "user-123456", + "timestamp": 1641290601962, + "objectIDs": [ + "9780545139700", + "9780439784542", + ], + "queryID": "43b15df305339e827f0ac0bdc5ebcaa7", + }, + ], + }, + ) + + assert _req.path == "/1/events" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"events":[{"eventType":"conversion","eventName":"Product Purchased","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"queryID":"43b15df305339e827f0ac0bdc5ebcaa7"}]}""" + ) + + async def test_push_events_3(self): + """ + ViewedObjectIDs + """ + _req = await self._client.push_events_with_http_info( + insights_events={ + "events": [ + { + "eventType": "view", + "eventName": "Product Detail Page Viewed", + "index": "products", + "userToken": "user-123456", + "authenticatedUserToken": "user-123456", + "timestamp": 1641290601962, + "objectIDs": [ + "9780545139700", + "9780439784542", + ], + }, + ], + }, + ) + + assert _req.path == "/1/events" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"events":[{"eventType":"view","eventName":"Product Detail Page Viewed","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"]}]}""" + ) + + async def test_push_events_4(self): + """ + AddedToCartObjectIDs + """ + _req = await self._client.push_events_with_http_info( + insights_events={ + "events": [ + { + "eventType": "conversion", + "eventSubtype": "addToCart", + "eventName": "Product Added To Cart", + "index": "products", + "queryID": "43b15df305339e827f0ac0bdc5ebcaa7", + "userToken": "user-123456", + "authenticatedUserToken": "user-123456", + "timestamp": 1641290601962, + "objectIDs": [ + "9780545139700", + "9780439784542", + ], + "objectData": [ + { + "price": 19.99, + "quantity": 10, + "discount": 2.5, + }, + { + "price": "8$", + "quantity": 7, + "discount": "30%", + }, + ], + "currency": "USD", + }, + ], + }, + ) + + assert _req.path == "/1/events" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"events":[{"eventType":"conversion","eventSubtype":"addToCart","eventName":"Product Added To Cart","index":"products","queryID":"43b15df305339e827f0ac0bdc5ebcaa7","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"objectData":[{"price":19.99,"quantity":10,"discount":2.5},{"price":"8$","quantity":7,"discount":"30%"}],"currency":"USD"}]}""" + ) diff --git a/tests/output/python/tests/requests/monitoring_test.py b/tests/output/python/tests/requests/monitoring_test.py new file mode 100644 index 0000000000..9c1f1a6aa5 --- /dev/null +++ b/tests/output/python/tests/requests/monitoring_test.py @@ -0,0 +1,486 @@ +from json import loads + +from algoliasearch.http.transporter import EchoTransporter +from algoliasearch.monitoring.client import MonitoringClient +from algoliasearch.monitoring.config import Config + + +class TestMonitoringClient: + _config = Config("test_app_id", "test_api_key") + _client = MonitoringClient(EchoTransporter(_config), _config) + + async def test_custom_delete_0(self): + """ + allow del method for a custom path with minimal parameters + """ + _req = await self._client.custom_delete_with_http_info( + path="/test/minimal", + ) + + assert _req.path == "/1/test/minimal" + assert _req.verb == "DELETE" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_custom_delete_1(self): + """ + allow del method for a custom path with all parameters + """ + _req = await self._client.custom_delete_with_http_info( + path="/test/all", + parameters={ + "query": "parameters", + }, + ) + + assert _req.path == "/1/test/all" + assert _req.verb == "DELETE" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_custom_get_0(self): + """ + allow get method for a custom path with minimal parameters + """ + _req = await self._client.custom_get_with_http_info( + path="/test/minimal", + ) + + assert _req.path == "/1/test/minimal" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_custom_get_1(self): + """ + allow get method for a custom path with all parameters + """ + _req = await self._client.custom_get_with_http_info( + path="/test/all", + parameters={ + "query": "parameters", + }, + ) + + assert _req.path == "/1/test/all" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_custom_post_0(self): + """ + allow post method for a custom path with minimal parameters + """ + _req = await self._client.custom_post_with_http_info( + path="/test/minimal", + ) + + assert _req.path == "/1/test/minimal" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{}""") + + async def test_custom_post_1(self): + """ + allow post method for a custom path with all parameters + """ + _req = await self._client.custom_post_with_http_info( + path="/test/all", + parameters={ + "query": "parameters", + }, + body={ + "body": "parameters", + }, + ) + + assert _req.path == "/1/test/all" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"body":"parameters"}""") + + async def test_custom_post_2(self): + """ + requestOptions can override default query parameters + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"query":"myQueryParameter"}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {"query": "myQueryParameter"}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_3(self): + """ + requestOptions merges query parameters with default ones + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"query2":"myQueryParameter"}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "query2": "myQueryParameter"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_4(self): + """ + requestOptions can override default headers + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "headers": loads("""{"x-algolia-api-key":"myApiKey"}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {"x-algolia-api-key": "myApiKey"}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_5(self): + """ + requestOptions merges headers with default ones + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "headers": loads("""{"x-algolia-api-key":"myApiKey"}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {"x-algolia-api-key": "myApiKey"}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_6(self): + """ + requestOptions queryParameters accepts booleans + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"isItWorking":true}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "isItWorking": "true"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_7(self): + """ + requestOptions queryParameters accepts integers + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"myParam":2}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "myParam": "2"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_8(self): + """ + requestOptions queryParameters accepts list of string + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"myParam":["c","d"]}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "myParam": "c,d"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_9(self): + """ + requestOptions queryParameters accepts list of booleans + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"myParam":[true,true,false]}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "myParam": "true,true,false"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_10(self): + """ + requestOptions queryParameters accepts list of integers + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"myParam":[1,2]}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "myParam": "1,2"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_put_0(self): + """ + allow put method for a custom path with minimal parameters + """ + _req = await self._client.custom_put_with_http_info( + path="/test/minimal", + ) + + assert _req.path == "/1/test/minimal" + assert _req.verb == "PUT" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{}""") + + async def test_custom_put_1(self): + """ + allow put method for a custom path with all parameters + """ + _req = await self._client.custom_put_with_http_info( + path="/test/all", + parameters={ + "query": "parameters", + }, + body={ + "body": "parameters", + }, + ) + + assert _req.path == "/1/test/all" + assert _req.verb == "PUT" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"body":"parameters"}""") + + async def test_get_cluster_incidents_0(self): + """ + getClusterIncidents + """ + _req = await self._client.get_cluster_incidents_with_http_info( + clusters="c1-de", + ) + + assert _req.path == "/1/incidents/c1-de" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_cluster_status_0(self): + """ + getClusterStatus + """ + _req = await self._client.get_cluster_status_with_http_info( + clusters="c1-de", + ) + + assert _req.path == "/1/status/c1-de" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_incidents_0(self): + """ + getIncidents + """ + _req = await self._client.get_incidents_with_http_info() + + assert _req.path == "/1/incidents" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_indexing_time_0(self): + """ + getIndexingTime + """ + _req = await self._client.get_indexing_time_with_http_info( + clusters="c1-de", + ) + + assert _req.path == "/1/indexing/c1-de" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_inventory_0(self): + """ + getInventory + """ + _req = await self._client.get_inventory_with_http_info() + + assert _req.path == "/1/inventory/servers" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_latency_0(self): + """ + getLatency + """ + _req = await self._client.get_latency_with_http_info( + clusters="c1-de", + ) + + assert _req.path == "/1/latency/c1-de" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_metrics_0(self): + """ + getMetrics + """ + _req = await self._client.get_metrics_with_http_info( + metric="avg_build_time", + period="minute", + ) + + assert _req.path == "/1/infrastructure/avg_build_time/period/minute" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_reachability_0(self): + """ + getReachability + """ + _req = await self._client.get_reachability_with_http_info( + clusters="c1-de", + ) + + assert _req.path == "/1/reachability/c1-de/probes" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_status_0(self): + """ + getStatus + """ + _req = await self._client.get_status_with_http_info() + + assert _req.path == "/1/status" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None diff --git a/tests/output/python/tests/requests/personalization_test.py b/tests/output/python/tests/requests/personalization_test.py new file mode 100644 index 0000000000..828e9012dd --- /dev/null +++ b/tests/output/python/tests/requests/personalization_test.py @@ -0,0 +1,436 @@ +from json import loads + +from algoliasearch.http.transporter import EchoTransporter +from algoliasearch.personalization.client import PersonalizationClient +from algoliasearch.personalization.config import Config + + +class TestPersonalizationClient: + _config = Config("test_app_id", "test_api_key", "us") + _client = PersonalizationClient(EchoTransporter(_config), _config) + + async def test_custom_delete_0(self): + """ + allow del method for a custom path with minimal parameters + """ + _req = await self._client.custom_delete_with_http_info( + path="/test/minimal", + ) + + assert _req.path == "/1/test/minimal" + assert _req.verb == "DELETE" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_custom_delete_1(self): + """ + allow del method for a custom path with all parameters + """ + _req = await self._client.custom_delete_with_http_info( + path="/test/all", + parameters={ + "query": "parameters", + }, + ) + + assert _req.path == "/1/test/all" + assert _req.verb == "DELETE" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_custom_get_0(self): + """ + allow get method for a custom path with minimal parameters + """ + _req = await self._client.custom_get_with_http_info( + path="/test/minimal", + ) + + assert _req.path == "/1/test/minimal" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_custom_get_1(self): + """ + allow get method for a custom path with all parameters + """ + _req = await self._client.custom_get_with_http_info( + path="/test/all", + parameters={ + "query": "parameters", + }, + ) + + assert _req.path == "/1/test/all" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_custom_post_0(self): + """ + allow post method for a custom path with minimal parameters + """ + _req = await self._client.custom_post_with_http_info( + path="/test/minimal", + ) + + assert _req.path == "/1/test/minimal" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{}""") + + async def test_custom_post_1(self): + """ + allow post method for a custom path with all parameters + """ + _req = await self._client.custom_post_with_http_info( + path="/test/all", + parameters={ + "query": "parameters", + }, + body={ + "body": "parameters", + }, + ) + + assert _req.path == "/1/test/all" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"body":"parameters"}""") + + async def test_custom_post_2(self): + """ + requestOptions can override default query parameters + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"query":"myQueryParameter"}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {"query": "myQueryParameter"}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_3(self): + """ + requestOptions merges query parameters with default ones + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"query2":"myQueryParameter"}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "query2": "myQueryParameter"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_4(self): + """ + requestOptions can override default headers + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "headers": loads("""{"x-algolia-api-key":"myApiKey"}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {"x-algolia-api-key": "myApiKey"}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_5(self): + """ + requestOptions merges headers with default ones + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "headers": loads("""{"x-algolia-api-key":"myApiKey"}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {"x-algolia-api-key": "myApiKey"}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_6(self): + """ + requestOptions queryParameters accepts booleans + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"isItWorking":true}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "isItWorking": "true"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_7(self): + """ + requestOptions queryParameters accepts integers + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"myParam":2}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "myParam": "2"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_8(self): + """ + requestOptions queryParameters accepts list of string + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"myParam":["c","d"]}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "myParam": "c,d"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_9(self): + """ + requestOptions queryParameters accepts list of booleans + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"myParam":[true,true,false]}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "myParam": "true,true,false"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_10(self): + """ + requestOptions queryParameters accepts list of integers + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"myParam":[1,2]}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "myParam": "1,2"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_put_0(self): + """ + allow put method for a custom path with minimal parameters + """ + _req = await self._client.custom_put_with_http_info( + path="/test/minimal", + ) + + assert _req.path == "/1/test/minimal" + assert _req.verb == "PUT" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{}""") + + async def test_custom_put_1(self): + """ + allow put method for a custom path with all parameters + """ + _req = await self._client.custom_put_with_http_info( + path="/test/all", + parameters={ + "query": "parameters", + }, + body={ + "body": "parameters", + }, + ) + + assert _req.path == "/1/test/all" + assert _req.verb == "PUT" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"body":"parameters"}""") + + async def test_delete_user_profile_0(self): + """ + delete deleteUserProfile + """ + _req = await self._client.delete_user_profile_with_http_info( + user_token="UserToken", + ) + + assert _req.path == "/1/profiles/UserToken" + assert _req.verb == "DELETE" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_personalization_strategy_0(self): + """ + get getPersonalizationStrategy + """ + _req = await self._client.get_personalization_strategy_with_http_info() + + assert _req.path == "/1/strategies/personalization" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_user_token_profile_0(self): + """ + get getUserTokenProfile + """ + _req = await self._client.get_user_token_profile_with_http_info( + user_token="UserToken", + ) + + assert _req.path == "/1/profiles/personalization/UserToken" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_set_personalization_strategy_0(self): + """ + set setPersonalizationStrategy + """ + _req = await self._client.set_personalization_strategy_with_http_info( + personalization_strategy_params={ + "eventScoring": [ + { + "score": 42, + "eventName": "Algolia", + "eventType": "Event", + }, + ], + "facetScoring": [ + { + "score": 42, + "facetName": "Event", + }, + ], + "personalizationImpact": 42, + }, + ) + + assert _req.path == "/1/strategies/personalization" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"eventScoring":[{"score":42,"eventName":"Algolia","eventType":"Event"}],"facetScoring":[{"score":42,"facetName":"Event"}],"personalizationImpact":42}""" + ) diff --git a/tests/output/python/tests/requests/query_suggestions_test.py b/tests/output/python/tests/requests/query_suggestions_test.py new file mode 100644 index 0000000000..5f10f6b49c --- /dev/null +++ b/tests/output/python/tests/requests/query_suggestions_test.py @@ -0,0 +1,519 @@ +from json import loads + +from algoliasearch.http.transporter import EchoTransporter +from algoliasearch.query_suggestions.client import QuerySuggestionsClient +from algoliasearch.query_suggestions.config import Config + + +class TestQuerySuggestionsClient: + _config = Config("test_app_id", "test_api_key", "us") + _client = QuerySuggestionsClient(EchoTransporter(_config), _config) + + async def test_create_config_0(self): + """ + createConfig0 + """ + _req = await self._client.create_config_with_http_info( + query_suggestions_configuration_with_index={ + "indexName": "theIndexName", + "sourceIndices": [ + { + "indexName": "testIndex", + "facets": [ + { + "attribute": "test", + }, + ], + "generate": [ + [ + "facetA", + "facetB", + ], + [ + "facetC", + ], + ], + }, + ], + "languages": [ + "french", + ], + "exclude": [ + "test", + ], + }, + ) + + assert _req.path == "/1/configs" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"indexName":"theIndexName","sourceIndices":[{"indexName":"testIndex","facets":[{"attribute":"test"}],"generate":[["facetA","facetB"],["facetC"]]}],"languages":["french"],"exclude":["test"]}""" + ) + + async def test_custom_delete_0(self): + """ + allow del method for a custom path with minimal parameters + """ + _req = await self._client.custom_delete_with_http_info( + path="/test/minimal", + ) + + assert _req.path == "/1/test/minimal" + assert _req.verb == "DELETE" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_custom_delete_1(self): + """ + allow del method for a custom path with all parameters + """ + _req = await self._client.custom_delete_with_http_info( + path="/test/all", + parameters={ + "query": "parameters", + }, + ) + + assert _req.path == "/1/test/all" + assert _req.verb == "DELETE" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_custom_get_0(self): + """ + allow get method for a custom path with minimal parameters + """ + _req = await self._client.custom_get_with_http_info( + path="/test/minimal", + ) + + assert _req.path == "/1/test/minimal" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_custom_get_1(self): + """ + allow get method for a custom path with all parameters + """ + _req = await self._client.custom_get_with_http_info( + path="/test/all", + parameters={ + "query": "parameters", + }, + ) + + assert _req.path == "/1/test/all" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_custom_post_0(self): + """ + allow post method for a custom path with minimal parameters + """ + _req = await self._client.custom_post_with_http_info( + path="/test/minimal", + ) + + assert _req.path == "/1/test/minimal" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{}""") + + async def test_custom_post_1(self): + """ + allow post method for a custom path with all parameters + """ + _req = await self._client.custom_post_with_http_info( + path="/test/all", + parameters={ + "query": "parameters", + }, + body={ + "body": "parameters", + }, + ) + + assert _req.path == "/1/test/all" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"body":"parameters"}""") + + async def test_custom_post_2(self): + """ + requestOptions can override default query parameters + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"query":"myQueryParameter"}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {"query": "myQueryParameter"}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_3(self): + """ + requestOptions merges query parameters with default ones + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"query2":"myQueryParameter"}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "query2": "myQueryParameter"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_4(self): + """ + requestOptions can override default headers + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "headers": loads("""{"x-algolia-api-key":"myApiKey"}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {"x-algolia-api-key": "myApiKey"}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_5(self): + """ + requestOptions merges headers with default ones + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "headers": loads("""{"x-algolia-api-key":"myApiKey"}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {"x-algolia-api-key": "myApiKey"}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_6(self): + """ + requestOptions queryParameters accepts booleans + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"isItWorking":true}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "isItWorking": "true"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_7(self): + """ + requestOptions queryParameters accepts integers + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"myParam":2}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "myParam": "2"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_8(self): + """ + requestOptions queryParameters accepts list of string + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"myParam":["c","d"]}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "myParam": "c,d"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_9(self): + """ + requestOptions queryParameters accepts list of booleans + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"myParam":[true,true,false]}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "myParam": "true,true,false"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_10(self): + """ + requestOptions queryParameters accepts list of integers + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"myParam":[1,2]}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "myParam": "1,2"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_put_0(self): + """ + allow put method for a custom path with minimal parameters + """ + _req = await self._client.custom_put_with_http_info( + path="/test/minimal", + ) + + assert _req.path == "/1/test/minimal" + assert _req.verb == "PUT" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{}""") + + async def test_custom_put_1(self): + """ + allow put method for a custom path with all parameters + """ + _req = await self._client.custom_put_with_http_info( + path="/test/all", + parameters={ + "query": "parameters", + }, + body={ + "body": "parameters", + }, + ) + + assert _req.path == "/1/test/all" + assert _req.verb == "PUT" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"body":"parameters"}""") + + async def test_delete_config_0(self): + """ + deleteConfig0 + """ + _req = await self._client.delete_config_with_http_info( + index_name="theIndexName", + ) + + assert _req.path == "/1/configs/theIndexName" + assert _req.verb == "DELETE" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_all_configs_0(self): + """ + getAllConfigs0 + """ + _req = await self._client.get_all_configs_with_http_info() + + assert _req.path == "/1/configs" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_config_0(self): + """ + getConfig0 + """ + _req = await self._client.get_config_with_http_info( + index_name="theIndexName", + ) + + assert _req.path == "/1/configs/theIndexName" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_config_status_0(self): + """ + getConfigStatus0 + """ + _req = await self._client.get_config_status_with_http_info( + index_name="theIndexName", + ) + + assert _req.path == "/1/configs/theIndexName/status" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_log_file_0(self): + """ + getLogFile0 + """ + _req = await self._client.get_log_file_with_http_info( + index_name="theIndexName", + ) + + assert _req.path == "/1/logs/theIndexName" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_update_config_0(self): + """ + updateConfig0 + """ + _req = await self._client.update_config_with_http_info( + index_name="theIndexName", + query_suggestions_configuration={ + "sourceIndices": [ + { + "indexName": "testIndex", + "facets": [ + { + "attribute": "test", + }, + ], + "generate": [ + [ + "facetA", + "facetB", + ], + [ + "facetC", + ], + ], + }, + ], + "languages": [ + "french", + ], + "exclude": [ + "test", + ], + }, + ) + + assert _req.path == "/1/configs/theIndexName" + assert _req.verb == "PUT" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"sourceIndices":[{"indexName":"testIndex","facets":[{"attribute":"test"}],"generate":[["facetA","facetB"],["facetC"]]}],"languages":["french"],"exclude":["test"]}""" + ) diff --git a/tests/output/python/tests/requests/recommend_test.py b/tests/output/python/tests/requests/recommend_test.py new file mode 100644 index 0000000000..9a201301ed --- /dev/null +++ b/tests/output/python/tests/requests/recommend_test.py @@ -0,0 +1,675 @@ +from json import loads + +from algoliasearch.http.transporter import EchoTransporter +from algoliasearch.recommend.client import RecommendClient +from algoliasearch.recommend.config import Config + + +class TestRecommendClient: + _config = Config("test_app_id", "test_api_key") + _client = RecommendClient(EchoTransporter(_config), _config) + + async def test_custom_delete_0(self): + """ + allow del method for a custom path with minimal parameters + """ + _req = await self._client.custom_delete_with_http_info( + path="/test/minimal", + ) + + assert _req.path == "/1/test/minimal" + assert _req.verb == "DELETE" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_custom_delete_1(self): + """ + allow del method for a custom path with all parameters + """ + _req = await self._client.custom_delete_with_http_info( + path="/test/all", + parameters={ + "query": "parameters", + }, + ) + + assert _req.path == "/1/test/all" + assert _req.verb == "DELETE" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_custom_get_0(self): + """ + allow get method for a custom path with minimal parameters + """ + _req = await self._client.custom_get_with_http_info( + path="/test/minimal", + ) + + assert _req.path == "/1/test/minimal" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_custom_get_1(self): + """ + allow get method for a custom path with all parameters + """ + _req = await self._client.custom_get_with_http_info( + path="/test/all", + parameters={ + "query": "parameters", + }, + ) + + assert _req.path == "/1/test/all" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_custom_post_0(self): + """ + allow post method for a custom path with minimal parameters + """ + _req = await self._client.custom_post_with_http_info( + path="/test/minimal", + ) + + assert _req.path == "/1/test/minimal" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{}""") + + async def test_custom_post_1(self): + """ + allow post method for a custom path with all parameters + """ + _req = await self._client.custom_post_with_http_info( + path="/test/all", + parameters={ + "query": "parameters", + }, + body={ + "body": "parameters", + }, + ) + + assert _req.path == "/1/test/all" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"body":"parameters"}""") + + async def test_custom_post_2(self): + """ + requestOptions can override default query parameters + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"query":"myQueryParameter"}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {"query": "myQueryParameter"}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_3(self): + """ + requestOptions merges query parameters with default ones + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"query2":"myQueryParameter"}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "query2": "myQueryParameter"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_4(self): + """ + requestOptions can override default headers + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "headers": loads("""{"x-algolia-api-key":"myApiKey"}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {"x-algolia-api-key": "myApiKey"}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_5(self): + """ + requestOptions merges headers with default ones + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "headers": loads("""{"x-algolia-api-key":"myApiKey"}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {"x-algolia-api-key": "myApiKey"}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_6(self): + """ + requestOptions queryParameters accepts booleans + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"isItWorking":true}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "isItWorking": "true"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_7(self): + """ + requestOptions queryParameters accepts integers + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"myParam":2}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "myParam": "2"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_8(self): + """ + requestOptions queryParameters accepts list of string + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"myParam":["c","d"]}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "myParam": "c,d"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_9(self): + """ + requestOptions queryParameters accepts list of booleans + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"myParam":[true,true,false]}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "myParam": "true,true,false"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_10(self): + """ + requestOptions queryParameters accepts list of integers + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"myParam":[1,2]}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "myParam": "1,2"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_put_0(self): + """ + allow put method for a custom path with minimal parameters + """ + _req = await self._client.custom_put_with_http_info( + path="/test/minimal", + ) + + assert _req.path == "/1/test/minimal" + assert _req.verb == "PUT" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{}""") + + async def test_custom_put_1(self): + """ + allow put method for a custom path with all parameters + """ + _req = await self._client.custom_put_with_http_info( + path="/test/all", + parameters={ + "query": "parameters", + }, + body={ + "body": "parameters", + }, + ) + + assert _req.path == "/1/test/all" + assert _req.verb == "PUT" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"body":"parameters"}""") + + async def test_delete_recommend_rule_0(self): + """ + deleteRecommendRule0 + """ + _req = await self._client.delete_recommend_rule_with_http_info( + index_name="indexName", + model="related-products", + object_id="objectID", + ) + + assert ( + _req.path + == "/1/indexes/indexName/related-products/recommend/rules/objectID" + ) + assert _req.verb == "DELETE" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_recommend_rule_0(self): + """ + getRecommendRule0 + """ + _req = await self._client.get_recommend_rule_with_http_info( + index_name="indexName", + model="related-products", + object_id="objectID", + ) + + assert ( + _req.path + == "/1/indexes/indexName/related-products/recommend/rules/objectID" + ) + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_recommend_status_0(self): + """ + getRecommendStatus0 + """ + _req = await self._client.get_recommend_status_with_http_info( + index_name="indexName", + model="related-products", + task_id=12345, + ) + + assert _req.path == "/1/indexes/indexName/related-products/task/12345" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_recommendations_0(self): + """ + get recommendations for recommend model with minimal parameters + """ + _req = await self._client.get_recommendations_with_http_info( + get_recommendations_params={ + "requests": [ + { + "indexName": "indexName", + "objectID": "objectID", + "model": "related-products", + "threshold": 42, + }, + ], + }, + ) + + assert _req.path == "/1/indexes/*/recommendations" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"requests":[{"indexName":"indexName","objectID":"objectID","model":"related-products","threshold":42}]}""" + ) + + async def test_get_recommendations_1(self): + """ + get recommendations for recommend model with all parameters + """ + _req = await self._client.get_recommendations_with_http_info( + get_recommendations_params={ + "requests": [ + { + "indexName": "indexName", + "objectID": "objectID", + "model": "related-products", + "threshold": 42, + "maxRecommendations": 10, + "queryParameters": { + "query": "myQuery", + "facetFilters": [ + "query", + ], + }, + "fallbackParameters": { + "query": "myQuery", + "facetFilters": [ + "fallback", + ], + }, + }, + ], + }, + ) + + assert _req.path == "/1/indexes/*/recommendations" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"requests":[{"indexName":"indexName","objectID":"objectID","model":"related-products","threshold":42,"maxRecommendations":10,"queryParameters":{"query":"myQuery","facetFilters":["query"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback"]}}]}""" + ) + + async def test_get_recommendations_2(self): + """ + get recommendations for trending model with minimal parameters + """ + _req = await self._client.get_recommendations_with_http_info( + get_recommendations_params={ + "requests": [ + { + "indexName": "indexName", + "model": "trending-items", + "threshold": 42, + }, + ], + }, + ) + + assert _req.path == "/1/indexes/*/recommendations" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"requests":[{"indexName":"indexName","model":"trending-items","threshold":42}]}""" + ) + + async def test_get_recommendations_3(self): + """ + get recommendations for trending model with all parameters + """ + _req = await self._client.get_recommendations_with_http_info( + get_recommendations_params={ + "requests": [ + { + "indexName": "indexName", + "model": "trending-items", + "threshold": 42, + "maxRecommendations": 10, + "facetName": "myFacetName", + "facetValue": "myFacetValue", + "queryParameters": { + "query": "myQuery", + "facetFilters": [ + "query", + ], + }, + "fallbackParameters": { + "query": "myQuery", + "facetFilters": [ + "fallback", + ], + }, + }, + ], + }, + ) + + assert _req.path == "/1/indexes/*/recommendations" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"requests":[{"indexName":"indexName","model":"trending-items","threshold":42,"maxRecommendations":10,"facetName":"myFacetName","facetValue":"myFacetValue","queryParameters":{"query":"myQuery","facetFilters":["query"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback"]}}]}""" + ) + + async def test_get_recommendations_4(self): + """ + get multiple recommendations with minimal parameters + """ + _req = await self._client.get_recommendations_with_http_info( + get_recommendations_params={ + "requests": [ + { + "indexName": "indexName1", + "objectID": "objectID1", + "model": "related-products", + "threshold": 21, + }, + { + "indexName": "indexName2", + "objectID": "objectID2", + "model": "related-products", + "threshold": 21, + }, + ], + }, + ) + + assert _req.path == "/1/indexes/*/recommendations" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"requests":[{"indexName":"indexName1","objectID":"objectID1","model":"related-products","threshold":21},{"indexName":"indexName2","objectID":"objectID2","model":"related-products","threshold":21}]}""" + ) + + async def test_get_recommendations_5(self): + """ + get multiple recommendations with all parameters + """ + _req = await self._client.get_recommendations_with_http_info( + get_recommendations_params={ + "requests": [ + { + "indexName": "indexName1", + "objectID": "objectID1", + "model": "related-products", + "threshold": 21, + "maxRecommendations": 10, + "queryParameters": { + "query": "myQuery", + "facetFilters": [ + "query1", + ], + }, + "fallbackParameters": { + "query": "myQuery", + "facetFilters": [ + "fallback1", + ], + }, + }, + { + "indexName": "indexName2", + "objectID": "objectID2", + "model": "related-products", + "threshold": 21, + "maxRecommendations": 10, + "queryParameters": { + "query": "myQuery", + "facetFilters": [ + "query2", + ], + }, + "fallbackParameters": { + "query": "myQuery", + "facetFilters": [ + "fallback2", + ], + }, + }, + ], + }, + ) + + assert _req.path == "/1/indexes/*/recommendations" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"requests":[{"indexName":"indexName1","objectID":"objectID1","model":"related-products","threshold":21,"maxRecommendations":10,"queryParameters":{"query":"myQuery","facetFilters":["query1"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback1"]}},{"indexName":"indexName2","objectID":"objectID2","model":"related-products","threshold":21,"maxRecommendations":10,"queryParameters":{"query":"myQuery","facetFilters":["query2"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback2"]}}]}""" + ) + + async def test_get_recommendations_6(self): + """ + get frequently bought together recommendations + """ + _req = await self._client.get_recommendations_with_http_info( + get_recommendations_params={ + "requests": [ + { + "indexName": "indexName1", + "objectID": "objectID1", + "model": "bought-together", + "threshold": 42, + }, + ], + }, + ) + + assert _req.path == "/1/indexes/*/recommendations" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"requests":[{"indexName":"indexName1","objectID":"objectID1","model":"bought-together","threshold":42}]}""" + ) + + async def test_search_recommend_rules_0(self): + """ + searchRecommendRules0 + """ + _req = await self._client.search_recommend_rules_with_http_info( + index_name="indexName", + model="related-products", + ) + + assert ( + _req.path == "/1/indexes/indexName/related-products/recommend/rules/search" + ) + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{}""") diff --git a/tests/output/python/tests/requests/search_test.py b/tests/output/python/tests/requests/search_test.py new file mode 100644 index 0000000000..23d052dcc9 --- /dev/null +++ b/tests/output/python/tests/requests/search_test.py @@ -0,0 +1,2796 @@ +from json import loads +from os import environ + +from algoliasearch.http.transporter import EchoTransporter +from algoliasearch.search.client import SearchClient +from algoliasearch.search.config import Config +from dotenv import load_dotenv + +load_dotenv("../../.env") + + +class TestSearchClient: + _config = Config("test_app_id", "test_api_key") + _client = SearchClient(EchoTransporter(_config), _config) + + _e2e_app_id = environ.get("ALGOLIA_APPLICATION_ID") + if _e2e_app_id is None: + raise Exception( + "please provide an `ALGOLIA_APPLICATION_ID` env var for e2e tests" + ) + + _e2e_api_key = environ.get("ALGOLIA_ADMIN_KEY") + if _e2e_api_key is None: + raise Exception("please provide an `ALGOLIA_ADMIN_KEY` env var for e2e tests") + + async def test_add_api_key_0(self): + """ + addApiKey0 + """ + _req = await self._client.add_api_key_with_http_info( + api_key={ + "acl": [ + "search", + "addObject", + ], + "description": "my new api key", + "validity": 300, + "maxQueriesPerIPPerHour": 100, + "maxHitsPerQuery": 20, + }, + ) + + assert _req.path == "/1/keys" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"acl":["search","addObject"],"description":"my new api key","validity":300,"maxQueriesPerIPPerHour":100,"maxHitsPerQuery":20}""" + ) + + async def test_add_or_update_object_0(self): + """ + addOrUpdateObject0 + """ + _req = await self._client.add_or_update_object_with_http_info( + index_name="indexName", + object_id="uniqueID", + body={ + "key": "value", + }, + ) + + assert _req.path == "/1/indexes/indexName/uniqueID" + assert _req.verb == "PUT" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"key":"value"}""") + + async def test_append_source_0(self): + """ + appendSource0 + """ + _req = await self._client.append_source_with_http_info( + source={ + "source": "theSource", + "description": "theDescription", + }, + ) + + assert _req.path == "/1/security/sources/append" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"source":"theSource","description":"theDescription"}""" + ) + + async def test_assign_user_id_0(self): + """ + assignUserId0 + """ + _req = await self._client.assign_user_id_with_http_info( + x_algolia_user_id="userID", + assign_user_id_params={ + "cluster": "theCluster", + }, + ) + + assert _req.path == "/1/clusters/mapping" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {"x-algolia-user-id": "userID"}.items() + assert loads(_req.data) == loads("""{"cluster":"theCluster"}""") + + async def test_batch_0(self): + """ + allows batch method with `addObject` action + """ + _req = await self._client.batch_with_http_info( + index_name="theIndexName", + batch_write_params={ + "requests": [ + { + "action": "addObject", + "body": { + "key": "value", + }, + }, + ], + }, + ) + + assert _req.path == "/1/indexes/theIndexName/batch" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"requests":[{"action":"addObject","body":{"key":"value"}}]}""" + ) + + async def test_batch_1(self): + """ + allows batch method with `clear` action + """ + _req = await self._client.batch_with_http_info( + index_name="theIndexName", + batch_write_params={ + "requests": [ + { + "action": "clear", + "body": { + "key": "value", + }, + }, + ], + }, + ) + + assert _req.path == "/1/indexes/theIndexName/batch" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"requests":[{"action":"clear","body":{"key":"value"}}]}""" + ) + + async def test_batch_2(self): + """ + allows batch method with `delete` action + """ + _req = await self._client.batch_with_http_info( + index_name="theIndexName", + batch_write_params={ + "requests": [ + { + "action": "delete", + "body": { + "key": "value", + }, + }, + ], + }, + ) + + assert _req.path == "/1/indexes/theIndexName/batch" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"requests":[{"action":"delete","body":{"key":"value"}}]}""" + ) + + async def test_batch_3(self): + """ + allows batch method with `deleteObject` action + """ + _req = await self._client.batch_with_http_info( + index_name="theIndexName", + batch_write_params={ + "requests": [ + { + "action": "deleteObject", + "body": { + "key": "value", + }, + }, + ], + }, + ) + + assert _req.path == "/1/indexes/theIndexName/batch" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"requests":[{"action":"deleteObject","body":{"key":"value"}}]}""" + ) + + async def test_batch_4(self): + """ + allows batch method with `partialUpdateObject` action + """ + _req = await self._client.batch_with_http_info( + index_name="theIndexName", + batch_write_params={ + "requests": [ + { + "action": "partialUpdateObject", + "body": { + "key": "value", + }, + }, + ], + }, + ) + + assert _req.path == "/1/indexes/theIndexName/batch" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"requests":[{"action":"partialUpdateObject","body":{"key":"value"}}]}""" + ) + + async def test_batch_5(self): + """ + allows batch method with `partialUpdateObjectNoCreate` action + """ + _req = await self._client.batch_with_http_info( + index_name="theIndexName", + batch_write_params={ + "requests": [ + { + "action": "partialUpdateObjectNoCreate", + "body": { + "key": "value", + }, + }, + ], + }, + ) + + assert _req.path == "/1/indexes/theIndexName/batch" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"requests":[{"action":"partialUpdateObjectNoCreate","body":{"key":"value"}}]}""" + ) + + async def test_batch_6(self): + """ + allows batch method with `updateObject` action + """ + _req = await self._client.batch_with_http_info( + index_name="theIndexName", + batch_write_params={ + "requests": [ + { + "action": "updateObject", + "body": { + "key": "value", + }, + }, + ], + }, + ) + + assert _req.path == "/1/indexes/theIndexName/batch" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"requests":[{"action":"updateObject","body":{"key":"value"}}]}""" + ) + + async def test_batch_assign_user_ids_0(self): + """ + batchAssignUserIds0 + """ + _req = await self._client.batch_assign_user_ids_with_http_info( + x_algolia_user_id="userID", + batch_assign_user_ids_params={ + "cluster": "theCluster", + "users": [ + "user1", + "user2", + ], + }, + ) + + assert _req.path == "/1/clusters/mapping/batch" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {"x-algolia-user-id": "userID"}.items() + assert loads(_req.data) == loads( + """{"cluster":"theCluster","users":["user1","user2"]}""" + ) + + async def test_batch_dictionary_entries_0(self): + """ + get batchDictionaryEntries results with minimal parameters + """ + _req = await self._client.batch_dictionary_entries_with_http_info( + dictionary_name="compounds", + batch_dictionary_entries_params={ + "requests": [ + { + "action": "addEntry", + "body": { + "objectID": "1", + "language": "en", + }, + }, + { + "action": "deleteEntry", + "body": { + "objectID": "2", + "language": "fr", + }, + }, + ], + }, + ) + + assert _req.path == "/1/dictionaries/compounds/batch" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"requests":[{"action":"addEntry","body":{"objectID":"1","language":"en"}},{"action":"deleteEntry","body":{"objectID":"2","language":"fr"}}]}""" + ) + + async def test_batch_dictionary_entries_1(self): + """ + get batchDictionaryEntries results with all parameters + """ + _req = await self._client.batch_dictionary_entries_with_http_info( + dictionary_name="compounds", + batch_dictionary_entries_params={ + "clearExistingDictionaryEntries": False, + "requests": [ + { + "action": "addEntry", + "body": { + "objectID": "1", + "language": "en", + "word": "fancy", + "words": [ + "believe", + "algolia", + ], + "decomposition": [ + "trust", + "algolia", + ], + "state": "enabled", + }, + }, + { + "action": "deleteEntry", + "body": { + "objectID": "2", + "language": "fr", + "word": "humility", + "words": [ + "candor", + "algolia", + ], + "decomposition": [ + "grit", + "algolia", + ], + "state": "enabled", + }, + }, + ], + }, + ) + + assert _req.path == "/1/dictionaries/compounds/batch" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"clearExistingDictionaryEntries":false,"requests":[{"action":"addEntry","body":{"objectID":"1","language":"en","word":"fancy","words":["believe","algolia"],"decomposition":["trust","algolia"],"state":"enabled"}},{"action":"deleteEntry","body":{"objectID":"2","language":"fr","word":"humility","words":["candor","algolia"],"decomposition":["grit","algolia"],"state":"enabled"}}]}""" + ) + + async def test_batch_dictionary_entries_2(self): + """ + get batchDictionaryEntries results additional properties + """ + _req = await self._client.batch_dictionary_entries_with_http_info( + dictionary_name="compounds", + batch_dictionary_entries_params={ + "requests": [ + { + "action": "addEntry", + "body": { + "objectID": "1", + "language": "en", + "additional": "try me", + }, + }, + ], + }, + ) + + assert _req.path == "/1/dictionaries/compounds/batch" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"requests":[{"action":"addEntry","body":{"objectID":"1","language":"en","additional":"try me"}}]}""" + ) + + async def test_browse_0(self): + """ + browse with minimal parameters + """ + _req = await self._client.browse_with_http_info( + index_name="indexName", + ) + + assert _req.path == "/1/indexes/indexName/browse" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{}""") + + async def test_browse_1(self): + """ + browse with search parameters + """ + _req = await self._client.browse_with_http_info( + index_name="indexName", + browse_params={ + "query": "myQuery", + "facetFilters": [ + "tags:algolia", + ], + }, + ) + + assert _req.path == "/1/indexes/indexName/browse" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"query":"myQuery","facetFilters":["tags:algolia"]}""" + ) + + async def test_browse_2(self): + """ + browse allow a cursor in parameters + """ + _req = await self._client.browse_with_http_info( + index_name="indexName", + browse_params={ + "cursor": "test", + }, + ) + + assert _req.path == "/1/indexes/indexName/browse" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"cursor":"test"}""") + + async def test_clear_all_synonyms_0(self): + """ + clearAllSynonyms0 + """ + _req = await self._client.clear_all_synonyms_with_http_info( + index_name="indexName", + ) + + assert _req.path == "/1/indexes/indexName/synonyms/clear" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + + async def test_clear_objects_0(self): + """ + clearObjects0 + """ + _req = await self._client.clear_objects_with_http_info( + index_name="theIndexName", + ) + + assert _req.path == "/1/indexes/theIndexName/clear" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + + async def test_clear_rules_0(self): + """ + clearRules0 + """ + _req = await self._client.clear_rules_with_http_info( + index_name="indexName", + ) + + assert _req.path == "/1/indexes/indexName/rules/clear" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + + async def test_custom_delete_0(self): + """ + allow del method for a custom path with minimal parameters + """ + _req = await self._client.custom_delete_with_http_info( + path="/test/minimal", + ) + + assert _req.path == "/1/test/minimal" + assert _req.verb == "DELETE" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_custom_delete_1(self): + """ + allow del method for a custom path with all parameters + """ + _req = await self._client.custom_delete_with_http_info( + path="/test/all", + parameters={ + "query": "parameters", + }, + ) + + assert _req.path == "/1/test/all" + assert _req.verb == "DELETE" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_custom_get_0(self): + """ + allow get method for a custom path with minimal parameters + """ + _req = await self._client.custom_get_with_http_info( + path="/test/minimal", + ) + + assert _req.path == "/1/test/minimal" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_custom_get_1(self): + """ + allow get method for a custom path with all parameters + """ + _req = await self._client.custom_get_with_http_info( + path="/test/all", + parameters={ + "query": "parameters", + }, + ) + + assert _req.path == "/1/test/all" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_custom_post_0(self): + """ + allow post method for a custom path with minimal parameters + """ + _req = await self._client.custom_post_with_http_info( + path="/test/minimal", + ) + + assert _req.path == "/1/test/minimal" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{}""") + + async def test_custom_post_1(self): + """ + allow post method for a custom path with all parameters + """ + _req = await self._client.custom_post_with_http_info( + path="/test/all", + parameters={ + "query": "parameters", + }, + body={ + "body": "parameters", + }, + ) + + assert _req.path == "/1/test/all" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"body":"parameters"}""") + + async def test_custom_post_2(self): + """ + requestOptions can override default query parameters + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"query":"myQueryParameter"}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {"query": "myQueryParameter"}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_3(self): + """ + requestOptions merges query parameters with default ones + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"query2":"myQueryParameter"}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "query2": "myQueryParameter"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_4(self): + """ + requestOptions can override default headers + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "headers": loads("""{"x-algolia-api-key":"myApiKey"}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {"x-algolia-api-key": "myApiKey"}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_5(self): + """ + requestOptions merges headers with default ones + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "headers": loads("""{"x-algolia-api-key":"myApiKey"}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {"x-algolia-api-key": "myApiKey"}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_6(self): + """ + requestOptions queryParameters accepts booleans + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"isItWorking":true}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "isItWorking": "true"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_7(self): + """ + requestOptions queryParameters accepts integers + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"myParam":2}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "myParam": "2"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_8(self): + """ + requestOptions queryParameters accepts list of string + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"myParam":["c","d"]}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "myParam": "c,d"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_9(self): + """ + requestOptions queryParameters accepts list of booleans + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"myParam":[true,true,false]}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "myParam": "true,true,false"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_post_10(self): + """ + requestOptions queryParameters accepts list of integers + """ + _req = await self._client.custom_post_with_http_info( + path="/test/requestOptions", + parameters={ + "query": "parameters", + }, + body={ + "facet": "filters", + }, + request_options={ + "query_parameters": loads("""{"myParam":[1,2]}"""), + }, + ) + + assert _req.path == "/1/test/requestOptions" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"query": "parameters", "myParam": "1,2"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"facet":"filters"}""") + + async def test_custom_put_0(self): + """ + allow put method for a custom path with minimal parameters + """ + _req = await self._client.custom_put_with_http_info( + path="/test/minimal", + ) + + assert _req.path == "/1/test/minimal" + assert _req.verb == "PUT" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{}""") + + async def test_custom_put_1(self): + """ + allow put method for a custom path with all parameters + """ + _req = await self._client.custom_put_with_http_info( + path="/test/all", + parameters={ + "query": "parameters", + }, + body={ + "body": "parameters", + }, + ) + + assert _req.path == "/1/test/all" + assert _req.verb == "PUT" + assert _req.query_parameters.items() >= {"query": "parameters"}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"body":"parameters"}""") + + async def test_delete_api_key_0(self): + """ + deleteApiKey0 + """ + _req = await self._client.delete_api_key_with_http_info( + key="myTestApiKey", + ) + + assert _req.path == "/1/keys/myTestApiKey" + assert _req.verb == "DELETE" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_delete_by_0(self): + """ + deleteBy0 + """ + _req = await self._client.delete_by_with_http_info( + index_name="theIndexName", + delete_by_params={ + "filters": "brand:brandName", + }, + ) + + assert _req.path == "/1/indexes/theIndexName/deleteByQuery" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"filters":"brand:brandName"}""") + + async def test_delete_index_0(self): + """ + deleteIndex0 + """ + _req = await self._client.delete_index_with_http_info( + index_name="theIndexName", + ) + + assert _req.path == "/1/indexes/theIndexName" + assert _req.verb == "DELETE" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_delete_object_0(self): + """ + deleteObject0 + """ + _req = await self._client.delete_object_with_http_info( + index_name="theIndexName", + object_id="uniqueID", + ) + + assert _req.path == "/1/indexes/theIndexName/uniqueID" + assert _req.verb == "DELETE" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_delete_rule_0(self): + """ + delete rule simple case + """ + _req = await self._client.delete_rule_with_http_info( + index_name="indexName", + object_id="id1", + ) + + assert _req.path == "/1/indexes/indexName/rules/id1" + assert _req.verb == "DELETE" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_delete_rule_1(self): + """ + delete rule with simple characters to encode in objectID + """ + _req = await self._client.delete_rule_with_http_info( + index_name="indexName", + object_id="test/with/slash", + ) + + assert _req.path == "/1/indexes/indexName/rules/test%2Fwith%2Fslash" + assert _req.verb == "DELETE" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_delete_source_0(self): + """ + deleteSource0 + """ + _req = await self._client.delete_source_with_http_info( + source="theSource", + ) + + assert _req.path == "/1/security/sources/theSource" + assert _req.verb == "DELETE" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_delete_synonym_0(self): + """ + deleteSynonym0 + """ + _req = await self._client.delete_synonym_with_http_info( + index_name="indexName", + object_id="id1", + ) + + assert _req.path == "/1/indexes/indexName/synonyms/id1" + assert _req.verb == "DELETE" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_api_key_0(self): + """ + getApiKey0 + """ + _req = await self._client.get_api_key_with_http_info( + key="myTestApiKey", + ) + + assert _req.path == "/1/keys/myTestApiKey" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_dictionary_languages_0(self): + """ + get getDictionaryLanguages + """ + _req = await self._client.get_dictionary_languages_with_http_info() + + assert _req.path == "/1/dictionaries/*/languages" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_dictionary_settings_0(self): + """ + get getDictionarySettings results + """ + _req = await self._client.get_dictionary_settings_with_http_info() + + assert _req.path == "/1/dictionaries/*/settings" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_logs_0(self): + """ + getLogs with minimal parameters + """ + _req = await self._client.get_logs_with_http_info() + + assert _req.path == "/1/logs" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_logs_1(self): + """ + getLogs with parameters + """ + _req = await self._client.get_logs_with_http_info( + offset=5, + length=10, + index_name="theIndexName", + type="all", + ) + + assert _req.path == "/1/logs" + assert _req.verb == "GET" + assert ( + _req.query_parameters.items() + >= { + "offset": "5", + "length": "10", + "indexName": "theIndexName", + "type": "all", + }.items() + ) + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_object_0(self): + """ + getObject0 + """ + _req = await self._client.get_object_with_http_info( + index_name="theIndexName", + object_id="uniqueID", + attributes_to_retrieve=[ + "attr1", + "attr2", + ], + ) + + assert _req.path == "/1/indexes/theIndexName/uniqueID" + assert _req.verb == "GET" + assert ( + _req.query_parameters.items() + >= {"attributesToRetrieve": "attr1,attr2"}.items() + ) + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_objects_0(self): + """ + getObjects0 + """ + _req = await self._client.get_objects_with_http_info( + get_objects_params={ + "requests": [ + { + "attributesToRetrieve": [ + "attr1", + "attr2", + ], + "objectID": "uniqueID", + "indexName": "theIndexName", + }, + ], + }, + ) + + assert _req.path == "/1/indexes/*/objects" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"requests":[{"attributesToRetrieve":["attr1","attr2"],"objectID":"uniqueID","indexName":"theIndexName"}]}""" + ) + + async def test_get_rule_0(self): + """ + getRule0 + """ + _req = await self._client.get_rule_with_http_info( + index_name="indexName", + object_id="id1", + ) + + assert _req.path == "/1/indexes/indexName/rules/id1" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_settings_0(self): + """ + getSettings0 + """ + _req = await self._client.get_settings_with_http_info( + index_name="theIndexName", + ) + + assert _req.path == "/1/indexes/theIndexName/settings" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_sources_0(self): + """ + getSources0 + """ + _req = await self._client.get_sources_with_http_info() + + assert _req.path == "/1/security/sources" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_synonym_0(self): + """ + getSynonym0 + """ + _req = await self._client.get_synonym_with_http_info( + index_name="indexName", + object_id="id1", + ) + + assert _req.path == "/1/indexes/indexName/synonyms/id1" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_task_0(self): + """ + getTask0 + """ + _req = await self._client.get_task_with_http_info( + index_name="theIndexName", + task_id=123, + ) + + assert _req.path == "/1/indexes/theIndexName/task/123" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_top_user_ids_0(self): + """ + getTopUserIds0 + """ + _req = await self._client.get_top_user_ids_with_http_info() + + assert _req.path == "/1/clusters/mapping/top" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_get_user_id_0(self): + """ + getUserId0 + """ + _req = await self._client.get_user_id_with_http_info( + user_id="uniqueID", + ) + + assert _req.path == "/1/clusters/mapping/uniqueID" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_has_pending_mappings_0(self): + """ + hasPendingMappings with minimal parameters + """ + _req = await self._client.has_pending_mappings_with_http_info() + + assert _req.path == "/1/clusters/mapping/pending" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_has_pending_mappings_1(self): + """ + hasPendingMappings with parameters + """ + _req = await self._client.has_pending_mappings_with_http_info( + get_clusters=True, + ) + + assert _req.path == "/1/clusters/mapping/pending" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {"getClusters": "true"}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_list_api_keys_0(self): + """ + listApiKeys0 + """ + _req = await self._client.list_api_keys_with_http_info() + + assert _req.path == "/1/keys" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_list_clusters_0(self): + """ + listClusters0 + """ + _req = await self._client.list_clusters_with_http_info() + + assert _req.path == "/1/clusters" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_list_indices_0(self): + """ + listIndices with minimal parameters + """ + _req = await self._client.list_indices_with_http_info() + + assert _req.path == "/1/indexes" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_list_indices_1(self): + """ + listIndices with parameters + """ + _req = await self._client.list_indices_with_http_info( + page=8, + hits_per_page=3, + ) + + assert _req.path == "/1/indexes" + assert _req.verb == "GET" + assert ( + _req.query_parameters.items() >= {"page": "8", "hitsPerPage": "3"}.items() + ) + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_list_user_ids_0(self): + """ + listUserIds with minimal parameters + """ + _req = await self._client.list_user_ids_with_http_info() + + assert _req.path == "/1/clusters/mapping" + assert _req.verb == "GET" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_list_user_ids_1(self): + """ + listUserIds with parameters + """ + _req = await self._client.list_user_ids_with_http_info( + page=8, + hits_per_page=100, + ) + + assert _req.path == "/1/clusters/mapping" + assert _req.verb == "GET" + assert ( + _req.query_parameters.items() >= {"page": "8", "hitsPerPage": "100"}.items() + ) + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_multiple_batch_0(self): + """ + multipleBatch0 + """ + _req = await self._client.multiple_batch_with_http_info( + batch_params={ + "requests": [ + { + "action": "addObject", + "body": { + "key": "value", + }, + "indexName": "theIndexName", + }, + ], + }, + ) + + assert _req.path == "/1/indexes/*/batch" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"requests":[{"action":"addObject","body":{"key":"value"},"indexName":"theIndexName"}]}""" + ) + + async def test_operation_index_0(self): + """ + operationIndex0 + """ + _req = await self._client.operation_index_with_http_info( + index_name="theIndexName", + operation_index_params={ + "operation": "copy", + "destination": "dest", + "scope": [ + "rules", + "settings", + ], + }, + ) + + assert _req.path == "/1/indexes/theIndexName/operation" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"operation":"copy","destination":"dest","scope":["rules","settings"]}""" + ) + + async def test_partial_update_object_0(self): + """ + partialUpdateObject0 + """ + _req = await self._client.partial_update_object_with_http_info( + index_name="theIndexName", + object_id="uniqueID", + attributes_to_update={ + "id1": "test", + "id2": { + "_operation": "AddUnique", + "value": "test2", + }, + }, + create_if_not_exists=True, + ) + + assert _req.path == "/1/indexes/theIndexName/uniqueID/partial" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {"createIfNotExists": "true"}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"id1":"test","id2":{"_operation":"AddUnique","value":"test2"}}""" + ) + + async def test_remove_user_id_0(self): + """ + removeUserId0 + """ + _req = await self._client.remove_user_id_with_http_info( + user_id="uniqueID", + ) + + assert _req.path == "/1/clusters/mapping/uniqueID" + assert _req.verb == "DELETE" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert _req.data is None + + async def test_replace_sources_0(self): + """ + replaceSources0 + """ + _req = await self._client.replace_sources_with_http_info( + source=[ + { + "source": "theSource", + "description": "theDescription", + }, + ], + ) + + assert _req.path == "/1/security/sources" + assert _req.verb == "PUT" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """[{"source":"theSource","description":"theDescription"}]""" + ) + + async def test_restore_api_key_0(self): + """ + restoreApiKey0 + """ + _req = await self._client.restore_api_key_with_http_info( + key="myApiKey", + ) + + assert _req.path == "/1/keys/myApiKey/restore" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + + async def test_save_object_0(self): + """ + saveObject0 + """ + _req = await self._client.save_object_with_http_info( + index_name="theIndexName", + body={ + "objectID": "id", + "test": "val", + }, + ) + + assert _req.path == "/1/indexes/theIndexName" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"objectID":"id","test":"val"}""") + + async def test_save_rule_0(self): + """ + saveRule with minimal parameters + """ + _req = await self._client.save_rule_with_http_info( + index_name="indexName", + object_id="id1", + rule={ + "objectID": "id1", + "conditions": [ + { + "pattern": "apple", + "anchoring": "contains", + }, + ], + }, + ) + + assert _req.path == "/1/indexes/indexName/rules/id1" + assert _req.verb == "PUT" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"objectID":"id1","conditions":[{"pattern":"apple","anchoring":"contains"}]}""" + ) + + async def test_save_rule_1(self): + """ + saveRule with all parameters + """ + _req = await self._client.save_rule_with_http_info( + index_name="indexName", + object_id="id1", + rule={ + "objectID": "id1", + "conditions": [ + { + "pattern": "apple", + "anchoring": "contains", + "alternatives": False, + "context": "search", + }, + ], + "consequence": { + "params": { + "filters": "brand:apple", + "query": { + "remove": [ + "algolia", + ], + "edits": [ + { + "type": "remove", + "delete": "abc", + "insert": "cde", + }, + { + "type": "replace", + "delete": "abc", + "insert": "cde", + }, + ], + }, + }, + "hide": [ + { + "objectID": "321", + }, + ], + "filterPromotes": False, + "userData": {"algolia": "aloglia"}, + "promote": [ + { + "objectID": "abc", + "position": 3, + }, + { + "objectIDs": [ + "abc", + "def", + ], + "position": 1, + }, + ], + }, + "description": "test", + "enabled": True, + "validity": [ + { + "from": 1656670273, + "until": 1656670277, + }, + ], + }, + forward_to_replicas=True, + ) + + assert _req.path == "/1/indexes/indexName/rules/id1" + assert _req.verb == "PUT" + assert _req.query_parameters.items() >= {"forwardToReplicas": "true"}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"objectID":"id1","conditions":[{"pattern":"apple","anchoring":"contains","alternatives":false,"context":"search"}],"consequence":{"params":{"filters":"brand:apple","query":{"remove":["algolia"],"edits":[{"type":"remove","delete":"abc","insert":"cde"},{"type":"replace","delete":"abc","insert":"cde"}]}},"hide":[{"objectID":"321"}],"filterPromotes":false,"userData":{"algolia":"aloglia"},"promote":[{"objectID":"abc","position":3},{"objectIDs":["abc","def"],"position":1}]},"description":"test","enabled":true,"validity":[{"from":1656670273,"until":1656670277}]}""" + ) + + async def test_save_rules_0(self): + """ + saveRules with minimal parameters + """ + _req = await self._client.save_rules_with_http_info( + index_name="indexName", + rules=[ + { + "objectID": "a-rule-id", + "conditions": [ + { + "pattern": "smartphone", + "anchoring": "contains", + }, + ], + }, + { + "objectID": "a-second-rule-id", + "conditions": [ + { + "pattern": "apple", + "anchoring": "contains", + }, + ], + }, + ], + ) + + assert _req.path == "/1/indexes/indexName/rules/batch" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """[{"objectID":"a-rule-id","conditions":[{"pattern":"smartphone","anchoring":"contains"}]},{"objectID":"a-second-rule-id","conditions":[{"pattern":"apple","anchoring":"contains"}]}]""" + ) + + async def test_save_rules_1(self): + """ + saveRules with all parameters + """ + _req = await self._client.save_rules_with_http_info( + index_name="indexName", + rules=[ + { + "objectID": "id1", + "conditions": [ + { + "pattern": "apple", + "anchoring": "contains", + "alternatives": False, + "context": "search", + }, + ], + "consequence": { + "params": { + "filters": "brand:apple", + "query": { + "remove": [ + "algolia", + ], + "edits": [ + { + "type": "remove", + "delete": "abc", + "insert": "cde", + }, + { + "type": "replace", + "delete": "abc", + "insert": "cde", + }, + ], + }, + }, + "hide": [ + { + "objectID": "321", + }, + ], + "filterPromotes": False, + "userData": {"algolia": "aloglia"}, + "promote": [ + { + "objectID": "abc", + "position": 3, + }, + { + "objectIDs": [ + "abc", + "def", + ], + "position": 1, + }, + ], + }, + "description": "test", + "enabled": True, + "validity": [ + { + "from": 1656670273, + "until": 1656670277, + }, + ], + }, + ], + forward_to_replicas=True, + clear_existing_rules=True, + ) + + assert _req.path == "/1/indexes/indexName/rules/batch" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"forwardToReplicas": "true", "clearExistingRules": "true"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """[{"objectID":"id1","conditions":[{"pattern":"apple","anchoring":"contains","alternatives":false,"context":"search"}],"consequence":{"params":{"filters":"brand:apple","query":{"remove":["algolia"],"edits":[{"type":"remove","delete":"abc","insert":"cde"},{"type":"replace","delete":"abc","insert":"cde"}]}},"hide":[{"objectID":"321"}],"filterPromotes":false,"userData":{"algolia":"aloglia"},"promote":[{"objectID":"abc","position":3},{"objectIDs":["abc","def"],"position":1}]},"description":"test","enabled":true,"validity":[{"from":1656670273,"until":1656670277}]}]""" + ) + + async def test_save_synonym_0(self): + """ + saveSynonym0 + """ + _req = await self._client.save_synonym_with_http_info( + index_name="indexName", + object_id="id1", + synonym_hit={ + "objectID": "id1", + "type": "synonym", + "synonyms": [ + "car", + "vehicule", + "auto", + ], + }, + forward_to_replicas=True, + ) + + assert _req.path == "/1/indexes/indexName/synonyms/id1" + assert _req.verb == "PUT" + assert _req.query_parameters.items() >= {"forwardToReplicas": "true"}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"objectID":"id1","type":"synonym","synonyms":["car","vehicule","auto"]}""" + ) + + async def test_save_synonyms_0(self): + """ + saveSynonyms0 + """ + _req = await self._client.save_synonyms_with_http_info( + index_name="indexName", + synonym_hit=[ + { + "objectID": "id1", + "type": "synonym", + "synonyms": [ + "car", + "vehicule", + "auto", + ], + }, + { + "objectID": "id2", + "type": "onewaysynonym", + "input": "iphone", + "synonyms": [ + "ephone", + "aphone", + "yphone", + ], + }, + ], + forward_to_replicas=True, + replace_existing_synonyms=False, + ) + + assert _req.path == "/1/indexes/indexName/synonyms/batch" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"forwardToReplicas": "true", "replaceExistingSynonyms": "false"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """[{"objectID":"id1","type":"synonym","synonyms":["car","vehicule","auto"]},{"objectID":"id2","type":"onewaysynonym","input":"iphone","synonyms":["ephone","aphone","yphone"]}]""" + ) + + async def test_search_0(self): + """ + search for a single hits request with minimal parameters + """ + _req = await self._client.search_with_http_info( + search_method_params={ + "requests": [ + { + "indexName": "cts_e2e_search_empty_index", + }, + ], + }, + ) + + assert _req.path == "/1/indexes/*/queries" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"requests":[{"indexName":"cts_e2e_search_empty_index"}]}""" + ) + + resp = await SearchClient.create( + self._e2e_app_id, self._e2e_api_key + ).search_with_http_info( + search_method_params={ + "requests": [ + { + "indexName": "cts_e2e_search_empty_index", + }, + ], + }, + ) + + assert resp.status_code == 200 + assert loads(resp.raw_data) == loads( + """{"results":[{"hits":[],"page":0,"nbHits":0,"nbPages":0,"hitsPerPage":20,"exhaustiveNbHits":true,"exhaustiveTypo":true,"exhaustive":{"nbHits":true,"typo":true},"processingTimeMS":1,"query":"","params":"","index":"cts_e2e_search_empty_index","renderingContent":{}}]}""" + ) + + async def test_search_1(self): + """ + search for a single facet request with minimal parameters + """ + _req = await self._client.search_with_http_info( + search_method_params={ + "requests": [ + { + "indexName": "cts_e2e_search_facet", + "type": "facet", + "facet": "editor", + }, + ], + "strategy": "stopIfEnoughMatches", + }, + ) + + assert _req.path == "/1/indexes/*/queries" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"requests":[{"indexName":"cts_e2e_search_facet","type":"facet","facet":"editor"}],"strategy":"stopIfEnoughMatches"}""" + ) + + resp = await SearchClient.create( + self._e2e_app_id, self._e2e_api_key + ).search_with_http_info( + search_method_params={ + "requests": [ + { + "indexName": "cts_e2e_search_facet", + "type": "facet", + "facet": "editor", + }, + ], + "strategy": "stopIfEnoughMatches", + }, + ) + + assert resp.status_code == 200 + assert loads(resp.raw_data) == loads( + """{"results":[{"exhaustiveFacetsCount":true,"processingTimeMS":1,"facetHits":[{"count":1,"highlighted":"goland","value":"goland"},{"count":1,"highlighted":"neovim","value":"neovim"},{"count":1,"highlighted":"vscode","value":"vscode"}]}]}""" + ) + + async def test_search_2(self): + """ + search for a single hits request with all parameters + """ + _req = await self._client.search_with_http_info( + search_method_params={ + "requests": [ + { + "indexName": "theIndexName", + "query": "myQuery", + "hitsPerPage": 50, + "type": "default", + }, + ], + }, + ) + + assert _req.path == "/1/indexes/*/queries" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"requests":[{"indexName":"theIndexName","query":"myQuery","hitsPerPage":50,"type":"default"}]}""" + ) + + async def test_search_3(self): + """ + search for a single facet request with all parameters + """ + _req = await self._client.search_with_http_info( + search_method_params={ + "requests": [ + { + "indexName": "theIndexName", + "type": "facet", + "facet": "theFacet", + "facetQuery": "theFacetQuery", + "query": "theQuery", + "maxFacetHits": 50, + }, + ], + "strategy": "stopIfEnoughMatches", + }, + ) + + assert _req.path == "/1/indexes/*/queries" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"requests":[{"indexName":"theIndexName","type":"facet","facet":"theFacet","facetQuery":"theFacetQuery","query":"theQuery","maxFacetHits":50}],"strategy":"stopIfEnoughMatches"}""" + ) + + async def test_search_4(self): + """ + search for multiple mixed requests in multiple indices with minimal parameters + """ + _req = await self._client.search_with_http_info( + search_method_params={ + "requests": [ + { + "indexName": "theIndexName", + }, + { + "indexName": "theIndexName2", + "type": "facet", + "facet": "theFacet", + }, + { + "indexName": "theIndexName", + "type": "default", + }, + ], + "strategy": "stopIfEnoughMatches", + }, + ) + + assert _req.path == "/1/indexes/*/queries" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"requests":[{"indexName":"theIndexName"},{"indexName":"theIndexName2","type":"facet","facet":"theFacet"},{"indexName":"theIndexName","type":"default"}],"strategy":"stopIfEnoughMatches"}""" + ) + + async def test_search_5(self): + """ + search for multiple mixed requests in multiple indices with all parameters + """ + _req = await self._client.search_with_http_info( + search_method_params={ + "requests": [ + { + "indexName": "theIndexName", + "type": "facet", + "facet": "theFacet", + "facetQuery": "theFacetQuery", + "query": "theQuery", + "maxFacetHits": 50, + }, + { + "indexName": "theIndexName", + "query": "myQuery", + "hitsPerPage": 50, + "type": "default", + }, + ], + "strategy": "stopIfEnoughMatches", + }, + ) + + assert _req.path == "/1/indexes/*/queries" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"requests":[{"indexName":"theIndexName","type":"facet","facet":"theFacet","facetQuery":"theFacetQuery","query":"theQuery","maxFacetHits":50},{"indexName":"theIndexName","query":"myQuery","hitsPerPage":50,"type":"default"}],"strategy":"stopIfEnoughMatches"}""" + ) + + async def test_search_6(self): + """ + search filters accept all of the possible shapes + """ + _req = await self._client.search_with_http_info( + search_method_params={ + "requests": [ + { + "indexName": "theIndexName", + "facetFilters": "mySearch:filters", + "reRankingApplyFilter": "mySearch:filters", + "tagFilters": "mySearch:filters", + "numericFilters": "mySearch:filters", + "optionalFilters": "mySearch:filters", + }, + { + "indexName": "theIndexName", + "facetFilters": [ + "mySearch:filters", + [ + "mySearch:filters", + ], + ], + "reRankingApplyFilter": [ + "mySearch:filters", + [ + "mySearch:filters", + ], + ], + "tagFilters": [ + "mySearch:filters", + [ + "mySearch:filters", + ], + ], + "numericFilters": [ + "mySearch:filters", + [ + "mySearch:filters", + ], + ], + "optionalFilters": [ + "mySearch:filters", + [ + "mySearch:filters", + ], + ], + }, + ], + }, + ) + + assert _req.path == "/1/indexes/*/queries" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"requests":[{"indexName":"theIndexName","facetFilters":"mySearch:filters","reRankingApplyFilter":"mySearch:filters","tagFilters":"mySearch:filters","numericFilters":"mySearch:filters","optionalFilters":"mySearch:filters"},{"indexName":"theIndexName","facetFilters":["mySearch:filters",["mySearch:filters"]],"reRankingApplyFilter":["mySearch:filters",["mySearch:filters"]],"tagFilters":["mySearch:filters",["mySearch:filters"]],"numericFilters":["mySearch:filters",["mySearch:filters"]],"optionalFilters":["mySearch:filters",["mySearch:filters"]]}]}""" + ) + + async def test_search_7(self): + """ + search with all search parameters + """ + _req = await self._client.search_with_http_info( + search_method_params={ + "requests": [ + { + "advancedSyntax": True, + "advancedSyntaxFeatures": [ + "exactPhrase", + ], + "allowTyposOnNumericTokens": True, + "alternativesAsExact": [ + "multiWordsSynonym", + ], + "analytics": True, + "analyticsTags": [ + "", + ], + "aroundLatLng": "", + "aroundLatLngViaIP": True, + "aroundPrecision": 0, + "aroundRadius": "all", + "attributeCriteriaComputedByMinProximity": True, + "attributesForFaceting": [ + "", + ], + "attributesToHighlight": [ + "", + ], + "attributesToRetrieve": [ + "", + ], + "attributesToSnippet": [ + "", + ], + "clickAnalytics": True, + "customRanking": [ + "", + ], + "decompoundQuery": True, + "disableExactOnAttributes": [ + "", + ], + "disableTypoToleranceOnAttributes": [ + "", + ], + "distinct": 0, + "enableABTest": True, + "enablePersonalization": True, + "enableReRanking": True, + "enableRules": True, + "exactOnSingleWordQuery": "attribute", + "explain": [ + "foo", + "bar", + ], + "facetFilters": [ + "", + ], + "facetingAfterDistinct": True, + "facets": [ + "", + ], + "filters": "", + "getRankingInfo": True, + "highlightPostTag": "", + "highlightPreTag": "", + "hitsPerPage": 1, + "ignorePlurals": False, + "indexName": "theIndexName", + "insideBoundingBox": [ + [ + 47.3165, + 4.9665, + 47.3424, + 5.0201, + ], + [ + 40.9234, + 2.1185, + 38.643, + 1.9916, + ], + ], + "insidePolygon": [ + [ + 47.3165, + 4.9665, + 47.3424, + 5.0201, + 47.32, + 4.9, + ], + [ + 40.9234, + 2.1185, + 38.643, + 1.9916, + 39.2587, + 2.0104, + ], + ], + "keepDiacriticsOnCharacters": "", + "length": 1, + "maxValuesPerFacet": 0, + "minProximity": 1, + "minWordSizefor1Typo": 0, + "minWordSizefor2Typos": 0, + "minimumAroundRadius": 1, + "naturalLanguages": [ + "", + ], + "numericFilters": [ + "", + ], + "offset": 0, + "optionalFilters": [ + "", + ], + "optionalWords": [ + "", + ], + "page": 0, + "percentileComputation": True, + "personalizationImpact": 0, + "query": "", + "queryLanguages": [ + "", + ], + "queryType": "prefixAll", + "ranking": [ + "", + ], + "reRankingApplyFilter": [ + "", + ], + "relevancyStrictness": 0, + "removeStopWords": True, + "removeWordsIfNoResults": "allOptional", + "renderingContent": { + "facetOrdering": { + "facets": { + "order": [ + "a", + "b", + ], + }, + "values": { + "a": { + "order": [ + "b", + ], + "sortRemainingBy": "count", + }, + }, + }, + }, + "replaceSynonymsInHighlight": True, + "responseFields": [ + "", + ], + "restrictHighlightAndSnippetArrays": True, + "restrictSearchableAttributes": [ + "", + ], + "ruleContexts": [ + "", + ], + "similarQuery": "", + "snippetEllipsisText": "", + "sortFacetValuesBy": "", + "sumOrFiltersScores": True, + "synonyms": True, + "tagFilters": [ + "", + ], + "type": "default", + "typoTolerance": "min", + "userToken": "", + }, + ], + }, + ) + + assert _req.path == "/1/indexes/*/queries" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"requests":[{"advancedSyntax":true,"advancedSyntaxFeatures":["exactPhrase"],"allowTyposOnNumericTokens":true,"alternativesAsExact":["multiWordsSynonym"],"analytics":true,"analyticsTags":[""],"aroundLatLng":"","aroundLatLngViaIP":true,"aroundPrecision":0,"aroundRadius":"all","attributeCriteriaComputedByMinProximity":true,"attributesForFaceting":[""],"attributesToHighlight":[""],"attributesToRetrieve":[""],"attributesToSnippet":[""],"clickAnalytics":true,"customRanking":[""],"decompoundQuery":true,"disableExactOnAttributes":[""],"disableTypoToleranceOnAttributes":[""],"distinct":0,"enableABTest":true,"enablePersonalization":true,"enableReRanking":true,"enableRules":true,"exactOnSingleWordQuery":"attribute","explain":["foo","bar"],"facetFilters":[""],"facetingAfterDistinct":true,"facets":[""],"filters":"","getRankingInfo":true,"highlightPostTag":"","highlightPreTag":"","hitsPerPage":1,"ignorePlurals":false,"indexName":"theIndexName","insideBoundingBox":[[47.3165,4.9665,47.3424,5.0201],[40.9234,2.1185,38.643,1.9916]],"insidePolygon":[[47.3165,4.9665,47.3424,5.0201,47.32,4.9],[40.9234,2.1185,38.643,1.9916,39.2587,2.0104]],"keepDiacriticsOnCharacters":"","length":1,"maxValuesPerFacet":0,"minProximity":1,"minWordSizefor1Typo":0,"minWordSizefor2Typos":0,"minimumAroundRadius":1,"naturalLanguages":[""],"numericFilters":[""],"offset":0,"optionalFilters":[""],"optionalWords":[""],"page":0,"percentileComputation":true,"personalizationImpact":0,"query":"","queryLanguages":[""],"queryType":"prefixAll","ranking":[""],"reRankingApplyFilter":[""],"relevancyStrictness":0,"removeStopWords":true,"removeWordsIfNoResults":"allOptional","renderingContent":{"facetOrdering":{"facets":{"order":["a","b"]},"values":{"a":{"order":["b"],"sortRemainingBy":"count"}}}},"replaceSynonymsInHighlight":true,"responseFields":[""],"restrictHighlightAndSnippetArrays":true,"restrictSearchableAttributes":[""],"ruleContexts":[""],"similarQuery":"","snippetEllipsisText":"","sortFacetValuesBy":"","sumOrFiltersScores":true,"synonyms":true,"tagFilters":[""],"type":"default","typoTolerance":"min","userToken":""}]}""" + ) + + async def test_search_dictionary_entries_0(self): + """ + get searchDictionaryEntries results with minimal parameters + """ + _req = await self._client.search_dictionary_entries_with_http_info( + dictionary_name="compounds", + search_dictionary_entries_params={ + "query": "foo", + }, + ) + + assert _req.path == "/1/dictionaries/compounds/search" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"query":"foo"}""") + + async def test_search_dictionary_entries_1(self): + """ + get searchDictionaryEntries results with all parameters + """ + _req = await self._client.search_dictionary_entries_with_http_info( + dictionary_name="compounds", + search_dictionary_entries_params={ + "query": "foo", + "page": 4, + "hitsPerPage": 2, + "language": "fr", + }, + ) + + assert _req.path == "/1/dictionaries/compounds/search" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"query":"foo","page":4,"hitsPerPage":2,"language":"fr"}""" + ) + + async def test_search_for_facet_values_0(self): + """ + get searchForFacetValues results with minimal parameters + """ + _req = await self._client.search_for_facet_values_with_http_info( + index_name="indexName", + facet_name="facetName", + ) + + assert _req.path == "/1/indexes/indexName/facets/facetName/query" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{}""") + + async def test_search_for_facet_values_1(self): + """ + get searchForFacetValues results with all parameters + """ + _req = await self._client.search_for_facet_values_with_http_info( + index_name="indexName", + facet_name="facetName", + search_for_facet_values_request={ + "params": "query=foo&facetFilters=['bar']", + "facetQuery": "foo", + "maxFacetHits": 42, + }, + ) + + assert _req.path == "/1/indexes/indexName/facets/facetName/query" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"params":"query=foo&facetFilters=['bar']","facetQuery":"foo","maxFacetHits":42}""" + ) + + async def test_search_rules_0(self): + """ + searchRules0 + """ + _req = await self._client.search_rules_with_http_info( + index_name="indexName", + search_rules_params={ + "query": "something", + }, + ) + + assert _req.path == "/1/indexes/indexName/rules/search" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"query":"something"}""") + + async def test_search_single_index_0(self): + """ + search with minimal parameters + """ + _req = await self._client.search_single_index_with_http_info( + index_name="indexName", + ) + + assert _req.path == "/1/indexes/indexName/query" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{}""") + + async def test_search_single_index_1(self): + """ + search with searchParams + """ + _req = await self._client.search_single_index_with_http_info( + index_name="indexName", + search_params={ + "query": "myQuery", + "facetFilters": [ + "tags:algolia", + ], + }, + ) + + assert _req.path == "/1/indexes/indexName/query" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"query":"myQuery","facetFilters":["tags:algolia"]}""" + ) + + async def test_search_synonyms_0(self): + """ + searchSynonyms with minimal parameters + """ + _req = await self._client.search_synonyms_with_http_info( + index_name="indexName", + ) + + assert _req.path == "/1/indexes/indexName/synonyms/search" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{}""") + + async def test_search_synonyms_1(self): + """ + searchSynonyms with all parameters + """ + _req = await self._client.search_synonyms_with_http_info( + index_name="indexName", + type="altcorrection1", + page=10, + hits_per_page=10, + search_synonyms_params={ + "query": "myQuery", + }, + ) + + assert _req.path == "/1/indexes/indexName/synonyms/search" + assert _req.verb == "POST" + assert ( + _req.query_parameters.items() + >= {"type": "altcorrection1", "page": "10", "hitsPerPage": "10"}.items() + ) + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"query":"myQuery"}""") + + async def test_search_user_ids_0(self): + """ + searchUserIds0 + """ + _req = await self._client.search_user_ids_with_http_info( + search_user_ids_params={ + "query": "test", + "clusterName": "theClusterName", + "page": 5, + "hitsPerPage": 10, + }, + ) + + assert _req.path == "/1/clusters/mapping/search" + assert _req.verb == "POST" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"query":"test","clusterName":"theClusterName","page":5,"hitsPerPage":10}""" + ) + + async def test_set_dictionary_settings_0(self): + """ + get setDictionarySettings results with minimal parameters + """ + _req = await self._client.set_dictionary_settings_with_http_info( + dictionary_settings_params={ + "disableStandardEntries": { + "plurals": { + "fr": False, + "en": False, + "ru": True, + }, + }, + }, + ) + + assert _req.path == "/1/dictionaries/*/settings" + assert _req.verb == "PUT" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"disableStandardEntries":{"plurals":{"fr":false,"en":false,"ru":true}}}""" + ) + + async def test_set_dictionary_settings_1(self): + """ + get setDictionarySettings results with all parameters + """ + _req = await self._client.set_dictionary_settings_with_http_info( + dictionary_settings_params={ + "disableStandardEntries": { + "plurals": { + "fr": False, + "en": False, + "ru": True, + }, + "stopwords": { + "fr": False, + }, + "compounds": { + "ru": True, + }, + }, + }, + ) + + assert _req.path == "/1/dictionaries/*/settings" + assert _req.verb == "PUT" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"disableStandardEntries":{"plurals":{"fr":false,"en":false,"ru":true},"stopwords":{"fr":false},"compounds":{"ru":true}}}""" + ) + + async def test_set_settings_0(self): + """ + setSettings with minimal parameters + """ + _req = await self._client.set_settings_with_http_info( + index_name="theIndexName", + index_settings={ + "paginationLimitedTo": 10, + }, + forward_to_replicas=True, + ) + + assert _req.path == "/1/indexes/theIndexName/settings" + assert _req.verb == "PUT" + assert _req.query_parameters.items() >= {"forwardToReplicas": "true"}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"paginationLimitedTo":10}""") + + async def test_set_settings_1(self): + """ + setSettings allow boolean `typoTolerance` + """ + _req = await self._client.set_settings_with_http_info( + index_name="theIndexName", + index_settings={ + "typoTolerance": True, + }, + forward_to_replicas=True, + ) + + assert _req.path == "/1/indexes/theIndexName/settings" + assert _req.verb == "PUT" + assert _req.query_parameters.items() >= {"forwardToReplicas": "true"}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"typoTolerance":true}""") + + async def test_set_settings_2(self): + """ + setSettings allow enum `typoTolerance` + """ + _req = await self._client.set_settings_with_http_info( + index_name="theIndexName", + index_settings={ + "typoTolerance": "min", + }, + forward_to_replicas=True, + ) + + assert _req.path == "/1/indexes/theIndexName/settings" + assert _req.verb == "PUT" + assert _req.query_parameters.items() >= {"forwardToReplicas": "true"}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"typoTolerance":"min"}""") + + async def test_set_settings_3(self): + """ + setSettings allow boolean `ignorePlurals` + """ + _req = await self._client.set_settings_with_http_info( + index_name="theIndexName", + index_settings={ + "ignorePlurals": True, + }, + forward_to_replicas=True, + ) + + assert _req.path == "/1/indexes/theIndexName/settings" + assert _req.verb == "PUT" + assert _req.query_parameters.items() >= {"forwardToReplicas": "true"}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"ignorePlurals":true}""") + + async def test_set_settings_4(self): + """ + setSettings allow list of string `ignorePlurals` + """ + _req = await self._client.set_settings_with_http_info( + index_name="theIndexName", + index_settings={ + "ignorePlurals": [ + "algolia", + ], + }, + forward_to_replicas=True, + ) + + assert _req.path == "/1/indexes/theIndexName/settings" + assert _req.verb == "PUT" + assert _req.query_parameters.items() >= {"forwardToReplicas": "true"}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"ignorePlurals":["algolia"]}""") + + async def test_set_settings_5(self): + """ + setSettings allow boolean `removeStopWords` + """ + _req = await self._client.set_settings_with_http_info( + index_name="theIndexName", + index_settings={ + "removeStopWords": True, + }, + forward_to_replicas=True, + ) + + assert _req.path == "/1/indexes/theIndexName/settings" + assert _req.verb == "PUT" + assert _req.query_parameters.items() >= {"forwardToReplicas": "true"}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"removeStopWords":true}""") + + async def test_set_settings_6(self): + """ + setSettings allow list of string `removeStopWords` + """ + _req = await self._client.set_settings_with_http_info( + index_name="theIndexName", + index_settings={ + "removeStopWords": [ + "algolia", + ], + }, + forward_to_replicas=True, + ) + + assert _req.path == "/1/indexes/theIndexName/settings" + assert _req.verb == "PUT" + assert _req.query_parameters.items() >= {"forwardToReplicas": "true"}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"removeStopWords":["algolia"]}""") + + async def test_set_settings_7(self): + """ + setSettings allow boolean `distinct` + """ + _req = await self._client.set_settings_with_http_info( + index_name="theIndexName", + index_settings={ + "distinct": True, + }, + forward_to_replicas=True, + ) + + assert _req.path == "/1/indexes/theIndexName/settings" + assert _req.verb == "PUT" + assert _req.query_parameters.items() >= {"forwardToReplicas": "true"}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"distinct":true}""") + + async def test_set_settings_8(self): + """ + setSettings allow integers for `distinct` + """ + _req = await self._client.set_settings_with_http_info( + index_name="theIndexName", + index_settings={ + "distinct": 1, + }, + forward_to_replicas=True, + ) + + assert _req.path == "/1/indexes/theIndexName/settings" + assert _req.verb == "PUT" + assert _req.query_parameters.items() >= {"forwardToReplicas": "true"}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads("""{"distinct":1}""") + + async def test_set_settings_9(self): + """ + setSettings allow all `indexSettings` + """ + _req = await self._client.set_settings_with_http_info( + index_name="theIndexName", + index_settings={ + "advancedSyntax": True, + "advancedSyntaxFeatures": [ + "exactPhrase", + ], + "allowCompressionOfIntegerArray": True, + "allowTyposOnNumericTokens": True, + "alternativesAsExact": [ + "singleWordSynonym", + ], + "attributeCriteriaComputedByMinProximity": True, + "attributeForDistinct": "test", + "attributesForFaceting": [ + "algolia", + ], + "attributesToHighlight": [ + "algolia", + ], + "attributesToRetrieve": [ + "algolia", + ], + "attributesToSnippet": [ + "algolia", + ], + "attributesToTransliterate": [ + "algolia", + ], + "camelCaseAttributes": [ + "algolia", + ], + "customNormalization": { + "algolia": { + "aloglia": "aglolia", + }, + }, + "customRanking": [ + "algolia", + ], + "decompoundQuery": False, + "decompoundedAttributes": { + "algolia": "aloglia", + }, + "disableExactOnAttributes": [ + "algolia", + ], + "disablePrefixOnAttributes": [ + "algolia", + ], + "disableTypoToleranceOnAttributes": [ + "algolia", + ], + "disableTypoToleranceOnWords": [ + "algolia", + ], + "distinct": 3, + "enablePersonalization": True, + "enableReRanking": False, + "enableRules": True, + "exactOnSingleWordQuery": "attribute", + "highlightPreTag": "", + "highlightPostTag": "", + "hitsPerPage": 10, + "ignorePlurals": False, + "indexLanguages": [ + "algolia", + ], + "keepDiacriticsOnCharacters": "abc", + "maxFacetHits": 20, + "maxValuesPerFacet": 30, + "minProximity": 6, + "minWordSizefor1Typo": 5, + "minWordSizefor2Typos": 11, + "mode": "neuralSearch", + "numericAttributesForFiltering": [ + "algolia", + ], + "optionalWords": [ + "myspace", + ], + "paginationLimitedTo": 0, + "queryLanguages": [ + "algolia", + ], + "queryType": "prefixLast", + "ranking": [ + "geo", + ], + "reRankingApplyFilter": "mySearch:filters", + "relevancyStrictness": 10, + "removeStopWords": False, + "removeWordsIfNoResults": "lastWords", + "renderingContent": { + "facetOrdering": { + "facets": { + "order": [ + "a", + "b", + ], + }, + "values": { + "a": { + "order": [ + "b", + ], + "sortRemainingBy": "count", + }, + }, + }, + }, + "replaceSynonymsInHighlight": True, + "replicas": [ + "", + ], + "responseFields": [ + "algolia", + ], + "restrictHighlightAndSnippetArrays": True, + "searchableAttributes": [ + "foo", + ], + "semanticSearch": { + "eventSources": [ + "foo", + ], + }, + "separatorsToIndex": "bar", + "snippetEllipsisText": "---", + "sortFacetValuesBy": "date", + "typoTolerance": False, + "unretrievableAttributes": [ + "foo", + ], + "userData": { + "user": "data", + }, + }, + ) + + assert _req.path == "/1/indexes/theIndexName/settings" + assert _req.verb == "PUT" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"advancedSyntax":true,"advancedSyntaxFeatures":["exactPhrase"],"allowCompressionOfIntegerArray":true,"allowTyposOnNumericTokens":true,"alternativesAsExact":["singleWordSynonym"],"attributeCriteriaComputedByMinProximity":true,"attributeForDistinct":"test","attributesForFaceting":["algolia"],"attributesToHighlight":["algolia"],"attributesToRetrieve":["algolia"],"attributesToSnippet":["algolia"],"attributesToTransliterate":["algolia"],"camelCaseAttributes":["algolia"],"customNormalization":{"algolia":{"aloglia":"aglolia"}},"customRanking":["algolia"],"decompoundQuery":false,"decompoundedAttributes":{"algolia":"aloglia"},"disableExactOnAttributes":["algolia"],"disablePrefixOnAttributes":["algolia"],"disableTypoToleranceOnAttributes":["algolia"],"disableTypoToleranceOnWords":["algolia"],"distinct":3,"enablePersonalization":true,"enableReRanking":false,"enableRules":true,"exactOnSingleWordQuery":"attribute","highlightPreTag":"","highlightPostTag":"","hitsPerPage":10,"ignorePlurals":false,"indexLanguages":["algolia"],"keepDiacriticsOnCharacters":"abc","maxFacetHits":20,"maxValuesPerFacet":30,"minProximity":6,"minWordSizefor1Typo":5,"minWordSizefor2Typos":11,"mode":"neuralSearch","numericAttributesForFiltering":["algolia"],"optionalWords":["myspace"],"paginationLimitedTo":0,"queryLanguages":["algolia"],"queryType":"prefixLast","ranking":["geo"],"reRankingApplyFilter":"mySearch:filters","relevancyStrictness":10,"removeStopWords":false,"removeWordsIfNoResults":"lastWords","renderingContent":{"facetOrdering":{"facets":{"order":["a","b"]},"values":{"a":{"order":["b"],"sortRemainingBy":"count"}}}},"replaceSynonymsInHighlight":true,"replicas":[""],"responseFields":["algolia"],"restrictHighlightAndSnippetArrays":true,"searchableAttributes":["foo"],"semanticSearch":{"eventSources":["foo"]},"separatorsToIndex":"bar","snippetEllipsisText":"---","sortFacetValuesBy":"date","typoTolerance":false,"unretrievableAttributes":["foo"],"userData":{"user":"data"}}""" + ) + + async def test_update_api_key_0(self): + """ + updateApiKey0 + """ + _req = await self._client.update_api_key_with_http_info( + key="myApiKey", + api_key={ + "acl": [ + "search", + "addObject", + ], + "validity": 300, + "maxQueriesPerIPPerHour": 100, + "maxHitsPerQuery": 20, + }, + ) + + assert _req.path == "/1/keys/myApiKey" + assert _req.verb == "PUT" + assert _req.query_parameters.items() >= {}.items() + assert _req.headers.items() >= {}.items() + assert loads(_req.data) == loads( + """{"acl":["search","addObject"],"validity":300,"maxQueriesPerIPPerHour":100,"maxHitsPerQuery":20}""" + ) diff --git a/tests/output/ruby/test/requests/abtesting_test.rb b/tests/output/ruby/test/requests/abtesting_test.rb new file mode 100644 index 0000000000..69d6c35a81 --- /dev/null +++ b/tests/output/ruby/test/requests/abtesting_test.rb @@ -0,0 +1,289 @@ +require 'algolia' +require 'test/unit' + +class TestAbtestingClient < Test::Unit::TestCase + include Algolia::Abtesting + def setup + @client = Algolia::AbtestingClient.create_with_config( + Algolia::Configuration.new( + 'APP_ID', + 'API_KEY', + [Algolia::Transport::StatefulHost.new('localhost')], + 'abtesting', + { requester: Algolia::Transport::EchoRequester.new } + ) + ) + end + + # addABTests with minimal parameters + def test_add_ab_tests0 + req = @client.add_ab_tests_with_http_info(AddABTestsRequest.new(end_at: "2022-12-31T00:00:00.000Z", name: "myABTest", + variants: [AbTestsVariant.new(index: "AB_TEST_1", traffic_percentage: 30), AbTestsVariant.new(index: "AB_TEST_2", traffic_percentage: 50)])) + + assert_equal(:post, req.method) + assert_equal('/2/abtests', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal( + JSON.parse('{"endAt":"2022-12-31T00:00:00.000Z","name":"myABTest","variants":[{"index":"AB_TEST_1","trafficPercentage":30},{"index":"AB_TEST_2","trafficPercentage":50}]}'), JSON.parse(req.body) + ) + end + + # allow del method for a custom path with minimal parameters + def test_custom_delete0 + req = @client.custom_delete_with_http_info("/test/minimal") + + assert_equal(:delete, req.method) + assert_equal('/1/test/minimal', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # allow del method for a custom path with all parameters + def test_custom_delete1 + req = @client.custom_delete_with_http_info("/test/all", { query: "parameters" }) + + assert_equal(:delete, req.method) + assert_equal('/1/test/all', req.path) + assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # allow get method for a custom path with minimal parameters + def test_custom_get0 + req = @client.custom_get_with_http_info("/test/minimal") + + assert_equal(:get, req.method) + assert_equal('/1/test/minimal', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # allow get method for a custom path with all parameters + def test_custom_get1 + req = @client.custom_get_with_http_info("/test/all", { query: "parameters" }) + + assert_equal(:get, req.method) + assert_equal('/1/test/all', req.path) + assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # allow post method for a custom path with minimal parameters + def test_custom_post0 + req = @client.custom_post_with_http_info("/test/minimal") + + assert_equal(:post, req.method) + assert_equal('/1/test/minimal', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{}'), JSON.parse(req.body)) + end + + # allow post method for a custom path with all parameters + def test_custom_post1 + req = @client.custom_post_with_http_info("/test/all", { query: "parameters" }, { body: "parameters" }) + + assert_equal(:post, req.method) + assert_equal('/1/test/all', req.path) + assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"body":"parameters"}'), JSON.parse(req.body)) + end + + # requestOptions can override default query parameters + def test_custom_post2 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"query":"myQueryParameter"}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "myQueryParameter" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions merges query parameters with default ones + def test_custom_post3 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"query2":"myQueryParameter"}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters", 'query2': "myQueryParameter" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions can override default headers + def test_custom_post4 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :header_params => JSON.parse('{"x-algolia-api-key":"myApiKey"}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({ 'x-algolia-api-key': "myApiKey" }.transform_keys(&:to_s).to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions merges headers with default ones + def test_custom_post5 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :header_params => JSON.parse('{"x-algolia-api-key":"myApiKey"}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({ 'x-algolia-api-key': "myApiKey" }.transform_keys(&:to_s).to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions queryParameters accepts booleans + def test_custom_post6 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"isItWorking":true}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters", 'isItWorking': "true" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions queryParameters accepts integers + def test_custom_post7 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"myParam":2}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters", 'myParam': "2" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions queryParameters accepts list of string + def test_custom_post8 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"myParam":["c","d"]}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters", 'myParam': "c,d" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions queryParameters accepts list of booleans + def test_custom_post9 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"myParam":[true,true,false]}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters", 'myParam': "true,true,false" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions queryParameters accepts list of integers + def test_custom_post10 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"myParam":[1,2]}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters", 'myParam': "1,2" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # allow put method for a custom path with minimal parameters + def test_custom_put0 + req = @client.custom_put_with_http_info("/test/minimal") + + assert_equal(:put, req.method) + assert_equal('/1/test/minimal', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{}'), JSON.parse(req.body)) + end + + # allow put method for a custom path with all parameters + def test_custom_put1 + req = @client.custom_put_with_http_info("/test/all", { query: "parameters" }, { body: "parameters" }) + + assert_equal(:put, req.method) + assert_equal('/1/test/all', req.path) + assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"body":"parameters"}'), JSON.parse(req.body)) + end + + # deleteABTest + def test_delete_ab_test0 + req = @client.delete_ab_test_with_http_info(42) + + assert_equal(:delete, req.method) + assert_equal('/2/abtests/42', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # getABTest + def test_get_ab_test0 + req = @client.get_ab_test_with_http_info(42) + + assert_equal(:get, req.method) + assert_equal('/2/abtests/42', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # listABTests with minimal parameters + def test_list_ab_tests0 + req = @client.list_ab_tests_with_http_info + + assert_equal(:get, req.method) + assert_equal('/2/abtests', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # listABTests with parameters + def test_list_ab_tests1 + req = @client.list_ab_tests_with_http_info(42, 21, "foo", "bar") + + assert_equal(:get, req.method) + assert_equal('/2/abtests', req.path) + assert(({ 'offset': "42", 'limit': "21", 'indexPrefix': "foo", 'indexSuffix': "bar" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # stopABTest + def test_stop_ab_test0 + req = @client.stop_ab_test_with_http_info(42) + + assert_equal(:post, req.method) + assert_equal('/2/abtests/42/stop', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + end +end diff --git a/tests/output/ruby/test/requests/analytics_test.rb b/tests/output/ruby/test/requests/analytics_test.rb new file mode 100644 index 0000000000..4ac253f8ca --- /dev/null +++ b/tests/output/ruby/test/requests/analytics_test.rb @@ -0,0 +1,650 @@ +require 'algolia' +require 'test/unit' + +class TestAnalyticsClient < Test::Unit::TestCase + include Algolia::Analytics + def setup + @client = Algolia::AnalyticsClient.create_with_config( + Algolia::Configuration.new( + 'APP_ID', + 'API_KEY', + [Algolia::Transport::StatefulHost.new('localhost')], + 'analytics', + { requester: Algolia::Transport::EchoRequester.new } + ) + ) + end + + # allow del method for a custom path with minimal parameters + def test_custom_delete0 + req = @client.custom_delete_with_http_info("/test/minimal") + + assert_equal(:delete, req.method) + assert_equal('/1/test/minimal', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # allow del method for a custom path with all parameters + def test_custom_delete1 + req = @client.custom_delete_with_http_info("/test/all", { query: "parameters" }) + + assert_equal(:delete, req.method) + assert_equal('/1/test/all', req.path) + assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # allow get method for a custom path with minimal parameters + def test_custom_get0 + req = @client.custom_get_with_http_info("/test/minimal") + + assert_equal(:get, req.method) + assert_equal('/1/test/minimal', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # allow get method for a custom path with all parameters + def test_custom_get1 + req = @client.custom_get_with_http_info("/test/all", { query: "parameters" }) + + assert_equal(:get, req.method) + assert_equal('/1/test/all', req.path) + assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # allow post method for a custom path with minimal parameters + def test_custom_post0 + req = @client.custom_post_with_http_info("/test/minimal") + + assert_equal(:post, req.method) + assert_equal('/1/test/minimal', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{}'), JSON.parse(req.body)) + end + + # allow post method for a custom path with all parameters + def test_custom_post1 + req = @client.custom_post_with_http_info("/test/all", { query: "parameters" }, { body: "parameters" }) + + assert_equal(:post, req.method) + assert_equal('/1/test/all', req.path) + assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"body":"parameters"}'), JSON.parse(req.body)) + end + + # requestOptions can override default query parameters + def test_custom_post2 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"query":"myQueryParameter"}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "myQueryParameter" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions merges query parameters with default ones + def test_custom_post3 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"query2":"myQueryParameter"}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters", 'query2': "myQueryParameter" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions can override default headers + def test_custom_post4 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :header_params => JSON.parse('{"x-algolia-api-key":"myApiKey"}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({ 'x-algolia-api-key': "myApiKey" }.transform_keys(&:to_s).to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions merges headers with default ones + def test_custom_post5 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :header_params => JSON.parse('{"x-algolia-api-key":"myApiKey"}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({ 'x-algolia-api-key': "myApiKey" }.transform_keys(&:to_s).to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions queryParameters accepts booleans + def test_custom_post6 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"isItWorking":true}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters", 'isItWorking': "true" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions queryParameters accepts integers + def test_custom_post7 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"myParam":2}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters", 'myParam': "2" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions queryParameters accepts list of string + def test_custom_post8 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"myParam":["c","d"]}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters", 'myParam': "c,d" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions queryParameters accepts list of booleans + def test_custom_post9 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"myParam":[true,true,false]}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters", 'myParam': "true,true,false" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions queryParameters accepts list of integers + def test_custom_post10 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"myParam":[1,2]}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters", 'myParam': "1,2" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # allow put method for a custom path with minimal parameters + def test_custom_put0 + req = @client.custom_put_with_http_info("/test/minimal") + + assert_equal(:put, req.method) + assert_equal('/1/test/minimal', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{}'), JSON.parse(req.body)) + end + + # allow put method for a custom path with all parameters + def test_custom_put1 + req = @client.custom_put_with_http_info("/test/all", { query: "parameters" }, { body: "parameters" }) + + assert_equal(:put, req.method) + assert_equal('/1/test/all', req.path) + assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"body":"parameters"}'), JSON.parse(req.body)) + end + + # get getAverageClickPosition with minimal parameters + def test_get_average_click_position0 + req = @client.get_average_click_position_with_http_info("index") + + assert_equal(:get, req.method) + assert_equal('/2/clicks/averageClickPosition', req.path) + assert(({ 'index': "index" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # get getAverageClickPosition with all parameters + def test_get_average_click_position1 + req = @client.get_average_click_position_with_http_info("index", "1999-09-19", "2001-01-01", "tag") + + assert_equal(:get, req.method) + assert_equal('/2/clicks/averageClickPosition', req.path) + assert(({ 'index': "index", 'startDate': "1999-09-19", 'endDate': "2001-01-01", 'tags': "tag" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # get getClickPositions with minimal parameters + def test_get_click_positions0 + req = @client.get_click_positions_with_http_info("index") + + assert_equal(:get, req.method) + assert_equal('/2/clicks/positions', req.path) + assert(({ 'index': "index" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # get getClickPositions with all parameters + def test_get_click_positions1 + req = @client.get_click_positions_with_http_info("index", "1999-09-19", "2001-01-01", "tag") + + assert_equal(:get, req.method) + assert_equal('/2/clicks/positions', req.path) + assert(({ 'index': "index", 'startDate': "1999-09-19", 'endDate': "2001-01-01", 'tags': "tag" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # get getClickThroughRate with minimal parameters + def test_get_click_through_rate0 + req = @client.get_click_through_rate_with_http_info("index") + + assert_equal(:get, req.method) + assert_equal('/2/clicks/clickThroughRate', req.path) + assert(({ 'index': "index" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # get getClickThroughRate with all parameters + def test_get_click_through_rate1 + req = @client.get_click_through_rate_with_http_info("index", "1999-09-19", "2001-01-01", "tag") + + assert_equal(:get, req.method) + assert_equal('/2/clicks/clickThroughRate', req.path) + assert(({ 'index': "index", 'startDate': "1999-09-19", 'endDate': "2001-01-01", 'tags': "tag" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # get getConversationRate with minimal parameters + def test_get_conversation_rate0 + req = @client.get_conversation_rate_with_http_info("index") + + assert_equal(:get, req.method) + assert_equal('/2/conversions/conversionRate', req.path) + assert(({ 'index': "index" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # get getConversationRate with all parameters + def test_get_conversation_rate1 + req = @client.get_conversation_rate_with_http_info("index", "1999-09-19", "2001-01-01", "tag") + + assert_equal(:get, req.method) + assert_equal('/2/conversions/conversionRate', req.path) + assert(({ 'index': "index", 'startDate': "1999-09-19", 'endDate': "2001-01-01", 'tags': "tag" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # get getNoClickRate with minimal parameters + def test_get_no_click_rate0 + req = @client.get_no_click_rate_with_http_info("index") + + assert_equal(:get, req.method) + assert_equal('/2/searches/noClickRate', req.path) + assert(({ 'index': "index" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # get getNoClickRate with all parameters + def test_get_no_click_rate1 + req = @client.get_no_click_rate_with_http_info("index", "1999-09-19", "2001-01-01", "tag") + + assert_equal(:get, req.method) + assert_equal('/2/searches/noClickRate', req.path) + assert(({ 'index': "index", 'startDate': "1999-09-19", 'endDate': "2001-01-01", 'tags': "tag" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # get getNoResultsRate with minimal parameters + def test_get_no_results_rate0 + req = @client.get_no_results_rate_with_http_info("index") + + assert_equal(:get, req.method) + assert_equal('/2/searches/noResultRate', req.path) + assert(({ 'index': "index" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # get getNoResultsRate with all parameters + def test_get_no_results_rate1 + req = @client.get_no_results_rate_with_http_info("index", "1999-09-19", "2001-01-01", "tag") + + assert_equal(:get, req.method) + assert_equal('/2/searches/noResultRate', req.path) + assert(({ 'index': "index", 'startDate': "1999-09-19", 'endDate': "2001-01-01", 'tags': "tag" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # get getSearchesCount with minimal parameters + def test_get_searches_count0 + req = @client.get_searches_count_with_http_info("index") + + assert_equal(:get, req.method) + assert_equal('/2/searches/count', req.path) + assert(({ 'index': "index" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # get getSearchesCount with all parameters + def test_get_searches_count1 + req = @client.get_searches_count_with_http_info("index", "1999-09-19", "2001-01-01", "tag") + + assert_equal(:get, req.method) + assert_equal('/2/searches/count', req.path) + assert(({ 'index': "index", 'startDate': "1999-09-19", 'endDate': "2001-01-01", 'tags': "tag" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # get getSearchesNoClicks with minimal parameters + def test_get_searches_no_clicks0 + req = @client.get_searches_no_clicks_with_http_info("index") + + assert_equal(:get, req.method) + assert_equal('/2/searches/noClicks', req.path) + assert(({ 'index': "index" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # get getSearchesNoClicks with all parameters + def test_get_searches_no_clicks1 + req = @client.get_searches_no_clicks_with_http_info("index", "1999-09-19", "2001-01-01", 21, 42, "tag") + + assert_equal(:get, req.method) + assert_equal('/2/searches/noClicks', req.path) + assert(({ 'index': "index", 'startDate': "1999-09-19", 'endDate': "2001-01-01", 'limit': "21", 'offset': "42", 'tags': "tag" }.to_a - req.query_params.to_a).empty?, + req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # get getSearchesNoResults with minimal parameters + def test_get_searches_no_results0 + req = @client.get_searches_no_results_with_http_info("index") + + assert_equal(:get, req.method) + assert_equal('/2/searches/noResults', req.path) + assert(({ 'index': "index" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # get getSearchesNoResults with all parameters + def test_get_searches_no_results1 + req = @client.get_searches_no_results_with_http_info("index", "1999-09-19", "2001-01-01", 21, 42, "tag") + + assert_equal(:get, req.method) + assert_equal('/2/searches/noResults', req.path) + assert(({ 'index': "index", 'startDate': "1999-09-19", 'endDate': "2001-01-01", 'limit': "21", 'offset': "42", 'tags': "tag" }.to_a - req.query_params.to_a).empty?, + req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # get getStatus with minimal parameters + def test_get_status0 + req = @client.get_status_with_http_info("index") + + assert_equal(:get, req.method) + assert_equal('/2/status', req.path) + assert(({ 'index': "index" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # get getTopCountries with minimal parameters + def test_get_top_countries0 + req = @client.get_top_countries_with_http_info("index") + + assert_equal(:get, req.method) + assert_equal('/2/countries', req.path) + assert(({ 'index': "index" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # get getTopCountries with all parameters + def test_get_top_countries1 + req = @client.get_top_countries_with_http_info("index", "1999-09-19", "2001-01-01", 21, 42, "tag") + + assert_equal(:get, req.method) + assert_equal('/2/countries', req.path) + assert(({ 'index': "index", 'startDate': "1999-09-19", 'endDate': "2001-01-01", 'limit': "21", 'offset': "42", 'tags': "tag" }.to_a - req.query_params.to_a).empty?, + req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # get getTopFilterAttributes with minimal parameters + def test_get_top_filter_attributes0 + req = @client.get_top_filter_attributes_with_http_info("index") + + assert_equal(:get, req.method) + assert_equal('/2/filters', req.path) + assert(({ 'index': "index" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # get getTopFilterAttributes with all parameters + def test_get_top_filter_attributes1 + req = @client.get_top_filter_attributes_with_http_info("index", "mySearch", "1999-09-19", "2001-01-01", 21, 42, "tag") + + assert_equal(:get, req.method) + assert_equal('/2/filters', req.path) + assert(({ 'index': "index", 'search': "mySearch", 'startDate': "1999-09-19", 'endDate': "2001-01-01", 'limit': "21", 'offset': "42", 'tags': "tag" }.to_a - req.query_params.to_a).empty?, + req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # get getTopFilterForAttribute with minimal parameters + def test_get_top_filter_for_attribute0 + req = @client.get_top_filter_for_attribute_with_http_info("myAttribute", "index") + + assert_equal(:get, req.method) + assert_equal('/2/filters/myAttribute', req.path) + assert(({ 'index': "index" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # get getTopFilterForAttribute with minimal parameters and multiple attributes + def test_get_top_filter_for_attribute1 + req = @client.get_top_filter_for_attribute_with_http_info("myAttribute1,myAttribute2", "index") + + assert_equal(:get, req.method) + assert_equal('/2/filters/myAttribute1%2CmyAttribute2', req.path) + assert(({ 'index': "index" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # get getTopFilterForAttribute with all parameters + def test_get_top_filter_for_attribute2 + req = @client.get_top_filter_for_attribute_with_http_info("myAttribute", "index", "mySearch", "1999-09-19", "2001-01-01", 21, 42, "tag") + + assert_equal(:get, req.method) + assert_equal('/2/filters/myAttribute', req.path) + assert(({ 'index': "index", 'search': "mySearch", 'startDate': "1999-09-19", 'endDate': "2001-01-01", 'limit': "21", 'offset': "42", 'tags': "tag" }.to_a - req.query_params.to_a).empty?, + req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # get getTopFilterForAttribute with all parameters and multiple attributes + def test_get_top_filter_for_attribute3 + req = @client.get_top_filter_for_attribute_with_http_info("myAttribute1,myAttribute2", "index", "mySearch", "1999-09-19", "2001-01-01", 21, 42, "tag") + + assert_equal(:get, req.method) + assert_equal('/2/filters/myAttribute1%2CmyAttribute2', req.path) + assert(({ 'index': "index", 'search': "mySearch", 'startDate': "1999-09-19", 'endDate': "2001-01-01", 'limit': "21", 'offset': "42", 'tags': "tag" }.to_a - req.query_params.to_a).empty?, + req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # get getTopFiltersNoResults with minimal parameters + def test_get_top_filters_no_results0 + req = @client.get_top_filters_no_results_with_http_info("index") + + assert_equal(:get, req.method) + assert_equal('/2/filters/noResults', req.path) + assert(({ 'index': "index" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # get getTopFiltersNoResults with all parameters + def test_get_top_filters_no_results1 + req = @client.get_top_filters_no_results_with_http_info("index", "mySearch", "1999-09-19", "2001-01-01", 21, 42, "tag") + + assert_equal(:get, req.method) + assert_equal('/2/filters/noResults', req.path) + assert(({ 'index': "index", 'search': "mySearch", 'startDate': "1999-09-19", 'endDate': "2001-01-01", 'limit': "21", 'offset': "42", 'tags': "tag" }.to_a - req.query_params.to_a).empty?, + req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # get getTopHits with minimal parameters + def test_get_top_hits0 + req = @client.get_top_hits_with_http_info("index") + + assert_equal(:get, req.method) + assert_equal('/2/hits', req.path) + assert(({ 'index': "index" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # get getTopHits with all parameters + def test_get_top_hits1 + req = @client.get_top_hits_with_http_info("index", "mySearch", true, "1999-09-19", "2001-01-01", 21, 42, "tag") + + assert_equal(:get, req.method) + assert_equal('/2/hits', req.path) + assert( + ({ 'index': "index", 'search': "mySearch", 'clickAnalytics': "true", 'startDate': "1999-09-19", 'endDate': "2001-01-01", 'limit': "21", 'offset': "42", + 'tags': "tag" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s + ) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # get getTopSearches with minimal parameters + def test_get_top_searches0 + req = @client.get_top_searches_with_http_info("index") + + assert_equal(:get, req.method) + assert_equal('/2/searches', req.path) + assert(({ 'index': "index" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # get getTopSearches with all parameters + def test_get_top_searches1 + req = @client.get_top_searches_with_http_info("index", true, "1999-09-19", "2001-01-01", 'searchCount', 'asc', 21, 42, "tag") + + assert_equal(:get, req.method) + assert_equal('/2/searches', req.path) + assert( + ({ 'index': "index", 'clickAnalytics': "true", 'startDate': "1999-09-19", 'endDate': "2001-01-01", 'orderBy': "searchCount", 'direction': "asc", 'limit': "21", 'offset': "42", + 'tags': "tag" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s + ) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # get getUsersCount with minimal parameters + def test_get_users_count0 + req = @client.get_users_count_with_http_info("index") + + assert_equal(:get, req.method) + assert_equal('/2/users/count', req.path) + assert(({ 'index': "index" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # get getUsersCount with all parameters + def test_get_users_count1 + req = @client.get_users_count_with_http_info("index", "1999-09-19", "2001-01-01", "tag") + + assert_equal(:get, req.method) + assert_equal('/2/users/count', req.path) + assert(({ 'index': "index", 'startDate': "1999-09-19", 'endDate': "2001-01-01", 'tags': "tag" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end +end diff --git a/tests/output/ruby/test/requests/ingestion_test.rb b/tests/output/ruby/test/requests/ingestion_test.rb new file mode 100644 index 0000000000..c669d212bc --- /dev/null +++ b/tests/output/ruby/test/requests/ingestion_test.rb @@ -0,0 +1,638 @@ +require 'algolia' +require 'test/unit' + +class TestIngestionClient < Test::Unit::TestCase + include Algolia::Ingestion + def setup + @client = Algolia::IngestionClient.create_with_config( + Algolia::Configuration.new( + 'APP_ID', + 'API_KEY', + [Algolia::Transport::StatefulHost.new('localhost')], + 'ingestion', + { requester: Algolia::Transport::EchoRequester.new } + ) + ) + end + + # createAuthenticationOAuth + def test_create_authentication0 + req = @client.create_authentication_with_http_info(AuthenticationCreate.new(type: 'oauth', name: "authName", + input: AuthOAuth.new(url: "http://test.oauth", client_id: "myID", client_secret: "mySecret"))) + + assert_equal(:post, req.method) + assert_equal('/1/authentications', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"type":"oauth","name":"authName","input":{"url":"http://test.oauth","client_id":"myID","client_secret":"mySecret"}}'), JSON.parse(req.body)) + end + + # createAuthenticationAlgolia + def test_create_authentication1 + req = @client.create_authentication_with_http_info(AuthenticationCreate.new(type: 'algolia', name: "authName", + input: AuthAlgolia.new(app_id: "myappID", api_key: "randomApiKey"))) + + assert_equal(:post, req.method) + assert_equal('/1/authentications', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"type":"algolia","name":"authName","input":{"appID":"myappID","apiKey":"randomApiKey"}}'), JSON.parse(req.body)) + end + + # createDestination + def test_create_destination0 + req = @client.create_destination_with_http_info(DestinationCreate.new(type: 'search', name: "destinationName", + input: DestinationIndexPrefix.new(index_prefix: "prefix_"), authentication_id: "6c02aeb1-775e-418e-870b-1faccd4b2c0f")) + + assert_equal(:post, req.method) + assert_equal('/1/destinations', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"type":"search","name":"destinationName","input":{"indexPrefix":"prefix_"},"authenticationID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}'), + JSON.parse(req.body)) + end + + # createSource + def test_create_source0 + req = @client.create_source_with_http_info(SourceCreate.new(type: 'commercetools', name: "sourceName", + input: SourceCommercetools.new(store_keys: ["myStore"], locales: ["de"], url: "http://commercetools.com", project_key: "keyID"), authentication_id: "6c02aeb1-775e-418e-870b-1faccd4b2c0f")) + + assert_equal(:post, req.method) + assert_equal('/1/sources', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal( + JSON.parse('{"type":"commercetools","name":"sourceName","input":{"storeKeys":["myStore"],"locales":["de"],"url":"http://commercetools.com","projectKey":"keyID"},"authenticationID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}'), JSON.parse(req.body) + ) + end + + # createTaskOnDemand + def test_create_task0 + req = @client.create_task_with_http_info(TaskCreate.new(source_id: "search", destination_id: "destinationName", trigger: OnDemandTriggerInput.new(type: 'onDemand'), + action: 'replace')) + + assert_equal(:post, req.method) + assert_equal('/1/tasks', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"sourceID":"search","destinationID":"destinationName","trigger":{"type":"onDemand"},"action":"replace"}'), JSON.parse(req.body)) + end + + # createTaskSchedule + def test_create_task1 + req = @client.create_task_with_http_info(TaskCreate.new(source_id: "search", destination_id: "destinationName", + trigger: ScheduleTriggerInput.new(type: 'schedule', cron: "* * * * *"), action: 'replace')) + + assert_equal(:post, req.method) + assert_equal('/1/tasks', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"sourceID":"search","destinationID":"destinationName","trigger":{"type":"schedule","cron":"* * * * *"},"action":"replace"}'), JSON.parse(req.body)) + end + + # createTaskSubscription + def test_create_task2 + req = @client.create_task_with_http_info(TaskCreate.new(source_id: "search", destination_id: "destinationName", trigger: OnDemandTriggerInput.new(type: 'onDemand'), + action: 'replace')) + + assert_equal(:post, req.method) + assert_equal('/1/tasks', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"sourceID":"search","destinationID":"destinationName","trigger":{"type":"onDemand"},"action":"replace"}'), JSON.parse(req.body)) + end + + # allow del method for a custom path with minimal parameters + def test_custom_delete0 + req = @client.custom_delete_with_http_info("/test/minimal") + + assert_equal(:delete, req.method) + assert_equal('/1/test/minimal', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # allow del method for a custom path with all parameters + def test_custom_delete1 + req = @client.custom_delete_with_http_info("/test/all", { query: "parameters" }) + + assert_equal(:delete, req.method) + assert_equal('/1/test/all', req.path) + assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # allow get method for a custom path with minimal parameters + def test_custom_get0 + req = @client.custom_get_with_http_info("/test/minimal") + + assert_equal(:get, req.method) + assert_equal('/1/test/minimal', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # allow get method for a custom path with all parameters + def test_custom_get1 + req = @client.custom_get_with_http_info("/test/all", { query: "parameters" }) + + assert_equal(:get, req.method) + assert_equal('/1/test/all', req.path) + assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # allow post method for a custom path with minimal parameters + def test_custom_post0 + req = @client.custom_post_with_http_info("/test/minimal") + + assert_equal(:post, req.method) + assert_equal('/1/test/minimal', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{}'), JSON.parse(req.body)) + end + + # allow post method for a custom path with all parameters + def test_custom_post1 + req = @client.custom_post_with_http_info("/test/all", { query: "parameters" }, { body: "parameters" }) + + assert_equal(:post, req.method) + assert_equal('/1/test/all', req.path) + assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"body":"parameters"}'), JSON.parse(req.body)) + end + + # requestOptions can override default query parameters + def test_custom_post2 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"query":"myQueryParameter"}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "myQueryParameter" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions merges query parameters with default ones + def test_custom_post3 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"query2":"myQueryParameter"}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters", 'query2': "myQueryParameter" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions can override default headers + def test_custom_post4 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :header_params => JSON.parse('{"x-algolia-api-key":"myApiKey"}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({ 'x-algolia-api-key': "myApiKey" }.transform_keys(&:to_s).to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions merges headers with default ones + def test_custom_post5 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :header_params => JSON.parse('{"x-algolia-api-key":"myApiKey"}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({ 'x-algolia-api-key': "myApiKey" }.transform_keys(&:to_s).to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions queryParameters accepts booleans + def test_custom_post6 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"isItWorking":true}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters", 'isItWorking': "true" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions queryParameters accepts integers + def test_custom_post7 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"myParam":2}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters", 'myParam': "2" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions queryParameters accepts list of string + def test_custom_post8 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"myParam":["c","d"]}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters", 'myParam': "c,d" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions queryParameters accepts list of booleans + def test_custom_post9 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"myParam":[true,true,false]}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters", 'myParam': "true,true,false" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions queryParameters accepts list of integers + def test_custom_post10 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"myParam":[1,2]}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters", 'myParam': "1,2" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # allow put method for a custom path with minimal parameters + def test_custom_put0 + req = @client.custom_put_with_http_info("/test/minimal") + + assert_equal(:put, req.method) + assert_equal('/1/test/minimal', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{}'), JSON.parse(req.body)) + end + + # allow put method for a custom path with all parameters + def test_custom_put1 + req = @client.custom_put_with_http_info("/test/all", { query: "parameters" }, { body: "parameters" }) + + assert_equal(:put, req.method) + assert_equal('/1/test/all', req.path) + assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"body":"parameters"}'), JSON.parse(req.body)) + end + + # deleteAuthentication + def test_delete_authentication0 + req = @client.delete_authentication_with_http_info("6c02aeb1-775e-418e-870b-1faccd4b2c0f") + + assert_equal(:delete, req.method) + assert_equal('/1/authentications/6c02aeb1-775e-418e-870b-1faccd4b2c0f', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # deleteDestination + def test_delete_destination0 + req = @client.delete_destination_with_http_info("6c02aeb1-775e-418e-870b-1faccd4b2c0f") + + assert_equal(:delete, req.method) + assert_equal('/1/destinations/6c02aeb1-775e-418e-870b-1faccd4b2c0f', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # deleteSource + def test_delete_source0 + req = @client.delete_source_with_http_info("6c02aeb1-775e-418e-870b-1faccd4b2c0f") + + assert_equal(:delete, req.method) + assert_equal('/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # deleteTask + def test_delete_task0 + req = @client.delete_task_with_http_info("6c02aeb1-775e-418e-870b-1faccd4b2c0f") + + assert_equal(:delete, req.method) + assert_equal('/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # disableTask + def test_disable_task0 + req = @client.disable_task_with_http_info("6c02aeb1-775e-418e-870b-1faccd4b2c0f") + + assert_equal(:put, req.method) + assert_equal('/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f/disable', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + end + + # enableTask + def test_enable_task0 + req = @client.enable_task_with_http_info("6c02aeb1-775e-418e-870b-1faccd4b2c0f") + + assert_equal(:put, req.method) + assert_equal('/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f/enable', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + end + + # getAuthentication + def test_get_authentication0 + req = @client.get_authentication_with_http_info("6c02aeb1-775e-418e-870b-1faccd4b2c0f") + + assert_equal(:get, req.method) + assert_equal('/1/authentications/6c02aeb1-775e-418e-870b-1faccd4b2c0f', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # getAuthentications + def test_get_authentications0 + req = @client.get_authentications_with_http_info + + assert_equal(:get, req.method) + assert_equal('/1/authentications', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # getDestination + def test_get_destination0 + req = @client.get_destination_with_http_info("6c02aeb1-775e-418e-870b-1faccd4b2c0f") + + assert_equal(:get, req.method) + assert_equal('/1/destinations/6c02aeb1-775e-418e-870b-1faccd4b2c0f', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # getDestinations + def test_get_destinations0 + req = @client.get_destinations_with_http_info + + assert_equal(:get, req.method) + assert_equal('/1/destinations', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # getDockerSourceStreams + def test_get_docker_source_streams0 + req = @client.get_docker_source_streams_with_http_info("6c02aeb1-775e-418e-870b-1faccd4b2c0f") + + assert_equal(:get, req.method) + assert_equal('/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f/discover', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # getEvent + def test_get_event0 + req = @client.get_event_with_http_info("6c02aeb1-775e-418e-870b-1faccd4b2c0f", "6c02aeb1-775e-418e-870b-1faccd4b2c0c") + + assert_equal(:get, req.method) + assert_equal('/1/runs/6c02aeb1-775e-418e-870b-1faccd4b2c0f/events/6c02aeb1-775e-418e-870b-1faccd4b2c0c', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # getEvents + def test_get_events0 + req = @client.get_events_with_http_info("6c02aeb1-775e-418e-870b-1faccd4b2c0f") + + assert_equal(:get, req.method) + assert_equal('/1/runs/6c02aeb1-775e-418e-870b-1faccd4b2c0f/events', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # getRun + def test_get_run0 + req = @client.get_run_with_http_info("6c02aeb1-775e-418e-870b-1faccd4b2c0f") + + assert_equal(:get, req.method) + assert_equal('/1/runs/6c02aeb1-775e-418e-870b-1faccd4b2c0f', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # getRuns + def test_get_runs0 + req = @client.get_runs_with_http_info + + assert_equal(:get, req.method) + assert_equal('/1/runs', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # getSource + def test_get_source0 + req = @client.get_source_with_http_info("6c02aeb1-775e-418e-870b-1faccd4b2c0f") + + assert_equal(:get, req.method) + assert_equal('/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # getSources + def test_get_sources0 + req = @client.get_sources_with_http_info + + assert_equal(:get, req.method) + assert_equal('/1/sources', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # getTask + def test_get_task0 + req = @client.get_task_with_http_info("6c02aeb1-775e-418e-870b-1faccd4b2c0f") + + assert_equal(:get, req.method) + assert_equal('/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # getTasks + def test_get_tasks0 + req = @client.get_tasks_with_http_info + + assert_equal(:get, req.method) + assert_equal('/1/tasks', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # runTask + def test_run_task0 + req = @client.run_task_with_http_info("6c02aeb1-775e-418e-870b-1faccd4b2c0f") + + assert_equal(:post, req.method) + assert_equal('/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f/run', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + end + + # searchAuthentications + def test_search_authentications0 + req = @client.search_authentications_with_http_info(AuthenticationSearch.new(authentication_ids: ["6c02aeb1-775e-418e-870b-1faccd4b2c0f", + "947ac9c4-7e58-4c87-b1e7-14a68e99699a"])) + + assert_equal(:post, req.method) + assert_equal('/1/authentications/search', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"authenticationIDs":["6c02aeb1-775e-418e-870b-1faccd4b2c0f","947ac9c4-7e58-4c87-b1e7-14a68e99699a"]}'), JSON.parse(req.body)) + end + + # searchDestinations + def test_search_destinations0 + req = @client.search_destinations_with_http_info(DestinationSearch.new(destination_ids: ["6c02aeb1-775e-418e-870b-1faccd4b2c0f", + "947ac9c4-7e58-4c87-b1e7-14a68e99699a"])) + + assert_equal(:post, req.method) + assert_equal('/1/destinations/search', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"destinationIDs":["6c02aeb1-775e-418e-870b-1faccd4b2c0f","947ac9c4-7e58-4c87-b1e7-14a68e99699a"]}'), JSON.parse(req.body)) + end + + # searchSources + def test_search_sources0 + req = @client.search_sources_with_http_info(SourceSearch.new(source_ids: ["6c02aeb1-775e-418e-870b-1faccd4b2c0f", "947ac9c4-7e58-4c87-b1e7-14a68e99699a"])) + + assert_equal(:post, req.method) + assert_equal('/1/sources/search', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"sourceIDs":["6c02aeb1-775e-418e-870b-1faccd4b2c0f","947ac9c4-7e58-4c87-b1e7-14a68e99699a"]}'), JSON.parse(req.body)) + end + + # searchTasks + def test_search_tasks0 + req = @client.search_tasks_with_http_info(TaskSearch.new(task_ids: ["6c02aeb1-775e-418e-870b-1faccd4b2c0f", "947ac9c4-7e58-4c87-b1e7-14a68e99699a"])) + + assert_equal(:post, req.method) + assert_equal('/1/tasks/search', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"taskIDs":["6c02aeb1-775e-418e-870b-1faccd4b2c0f","947ac9c4-7e58-4c87-b1e7-14a68e99699a"]}'), JSON.parse(req.body)) + end + + # triggerDockerSourceDiscover + def test_trigger_docker_source_discover0 + req = @client.trigger_docker_source_discover_with_http_info("6c02aeb1-775e-418e-870b-1faccd4b2c0f") + + assert_equal(:post, req.method) + assert_equal('/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f/discover', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + end + + # updateAuthentication + def test_update_authentication0 + req = @client.update_authentication_with_http_info("6c02aeb1-775e-418e-870b-1faccd4b2c0f", AuthenticationUpdate.new(name: "newName")) + + assert_equal(:patch, req.method) + assert_equal('/1/authentications/6c02aeb1-775e-418e-870b-1faccd4b2c0f', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"name":"newName"}'), JSON.parse(req.body)) + end + + # updateDestination + def test_update_destination0 + req = @client.update_destination_with_http_info("6c02aeb1-775e-418e-870b-1faccd4b2c0f", DestinationUpdate.new(name: "newName")) + + assert_equal(:patch, req.method) + assert_equal('/1/destinations/6c02aeb1-775e-418e-870b-1faccd4b2c0f', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"name":"newName"}'), JSON.parse(req.body)) + end + + # updateSource + def test_update_source0 + req = @client.update_source_with_http_info("6c02aeb1-775e-418e-870b-1faccd4b2c0f", SourceUpdate.new(name: "newName")) + + assert_equal(:patch, req.method) + assert_equal('/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"name":"newName"}'), JSON.parse(req.body)) + end + + # updateTask + def test_update_task0 + req = @client.update_task_with_http_info("6c02aeb1-775e-418e-870b-1faccd4b2c0f", TaskUpdate.new(enabled: false)) + + assert_equal(:patch, req.method) + assert_equal('/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"enabled":false}'), JSON.parse(req.body)) + end +end diff --git a/tests/output/ruby/test/requests/insights_test.rb b/tests/output/ruby/test/requests/insights_test.rb new file mode 100644 index 0000000000..bfb29cd22f --- /dev/null +++ b/tests/output/ruby/test/requests/insights_test.rb @@ -0,0 +1,289 @@ +require 'algolia' +require 'test/unit' + +class TestInsightsClient < Test::Unit::TestCase + include Algolia::Insights + def setup + @client = Algolia::InsightsClient.create_with_config( + Algolia::Configuration.new( + 'APP_ID', + 'API_KEY', + [Algolia::Transport::StatefulHost.new('localhost')], + 'insights', + { requester: Algolia::Transport::EchoRequester.new } + ) + ) + end + + # allow del method for a custom path with minimal parameters + def test_custom_delete0 + req = @client.custom_delete_with_http_info("/test/minimal") + + assert_equal(:delete, req.method) + assert_equal('/1/test/minimal', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # allow del method for a custom path with all parameters + def test_custom_delete1 + req = @client.custom_delete_with_http_info("/test/all", { query: "parameters" }) + + assert_equal(:delete, req.method) + assert_equal('/1/test/all', req.path) + assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # allow get method for a custom path with minimal parameters + def test_custom_get0 + req = @client.custom_get_with_http_info("/test/minimal") + + assert_equal(:get, req.method) + assert_equal('/1/test/minimal', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # allow get method for a custom path with all parameters + def test_custom_get1 + req = @client.custom_get_with_http_info("/test/all", { query: "parameters" }) + + assert_equal(:get, req.method) + assert_equal('/1/test/all', req.path) + assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # allow post method for a custom path with minimal parameters + def test_custom_post0 + req = @client.custom_post_with_http_info("/test/minimal") + + assert_equal(:post, req.method) + assert_equal('/1/test/minimal', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{}'), JSON.parse(req.body)) + end + + # allow post method for a custom path with all parameters + def test_custom_post1 + req = @client.custom_post_with_http_info("/test/all", { query: "parameters" }, { body: "parameters" }) + + assert_equal(:post, req.method) + assert_equal('/1/test/all', req.path) + assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"body":"parameters"}'), JSON.parse(req.body)) + end + + # requestOptions can override default query parameters + def test_custom_post2 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"query":"myQueryParameter"}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "myQueryParameter" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions merges query parameters with default ones + def test_custom_post3 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"query2":"myQueryParameter"}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters", 'query2': "myQueryParameter" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions can override default headers + def test_custom_post4 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :header_params => JSON.parse('{"x-algolia-api-key":"myApiKey"}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({ 'x-algolia-api-key': "myApiKey" }.transform_keys(&:to_s).to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions merges headers with default ones + def test_custom_post5 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :header_params => JSON.parse('{"x-algolia-api-key":"myApiKey"}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({ 'x-algolia-api-key': "myApiKey" }.transform_keys(&:to_s).to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions queryParameters accepts booleans + def test_custom_post6 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"isItWorking":true}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters", 'isItWorking': "true" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions queryParameters accepts integers + def test_custom_post7 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"myParam":2}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters", 'myParam': "2" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions queryParameters accepts list of string + def test_custom_post8 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"myParam":["c","d"]}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters", 'myParam': "c,d" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions queryParameters accepts list of booleans + def test_custom_post9 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"myParam":[true,true,false]}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters", 'myParam': "true,true,false" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions queryParameters accepts list of integers + def test_custom_post10 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"myParam":[1,2]}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters", 'myParam': "1,2" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # allow put method for a custom path with minimal parameters + def test_custom_put0 + req = @client.custom_put_with_http_info("/test/minimal") + + assert_equal(:put, req.method) + assert_equal('/1/test/minimal', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{}'), JSON.parse(req.body)) + end + + # allow put method for a custom path with all parameters + def test_custom_put1 + req = @client.custom_put_with_http_info("/test/all", { query: "parameters" }, { body: "parameters" }) + + assert_equal(:put, req.method) + assert_equal('/1/test/all', req.path) + assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"body":"parameters"}'), JSON.parse(req.body)) + end + + # pushEvents0 + def test_push_events0 + req = @client.push_events_with_http_info(InsightsEvents.new(events: [ClickedObjectIDsAfterSearch.new(event_type: 'click', event_name: "Product Clicked", + index: "products", user_token: "user-123456", authenticated_user_token: "user-123456", timestamp: 1_641_290_601_962, object_ids: ["9780545139700", "9780439784542"], query_id: "43b15df305339e827f0ac0bdc5ebcaa7", positions: [7, 6])])) + + assert_equal(:post, req.method) + assert_equal('/1/events', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal( + JSON.parse('{"events":[{"eventType":"click","eventName":"Product Clicked","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"queryID":"43b15df305339e827f0ac0bdc5ebcaa7","positions":[7,6]}]}'), JSON.parse(req.body) + ) + end + + # Many events type + def test_push_events1 + req = @client.push_events_with_http_info(InsightsEvents.new(events: [ + ConvertedObjectIDsAfterSearch.new(event_type: 'conversion', event_name: "Product Purchased", index: "products", user_token: "user-123456", authenticated_user_token: "user-123456", + timestamp: 1_641_290_601_962, object_ids: ["9780545139700", "9780439784542"], query_id: "43b15df305339e827f0ac0bdc5ebcaa7"), ViewedObjectIDs.new(event_type: 'view', event_name: "Product Detail Page Viewed", index: "products", user_token: "user-123456", authenticated_user_token: "user-123456", timestamp: 1_641_290_601_962, object_ids: ["9780545139700", "9780439784542"]) + ])) + + assert_equal(:post, req.method) + assert_equal('/1/events', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal( + JSON.parse('{"events":[{"eventType":"conversion","eventName":"Product Purchased","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"queryID":"43b15df305339e827f0ac0bdc5ebcaa7"},{"eventType":"view","eventName":"Product Detail Page Viewed","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"]}]}'), JSON.parse(req.body) + ) + end + + # ConvertedObjectIDsAfterSearch + def test_push_events2 + req = @client.push_events_with_http_info(InsightsEvents.new(events: [ConvertedObjectIDsAfterSearch.new(event_type: 'conversion', event_name: "Product Purchased", + index: "products", user_token: "user-123456", authenticated_user_token: "user-123456", timestamp: 1_641_290_601_962, object_ids: ["9780545139700", "9780439784542"], query_id: "43b15df305339e827f0ac0bdc5ebcaa7")])) + + assert_equal(:post, req.method) + assert_equal('/1/events', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal( + JSON.parse('{"events":[{"eventType":"conversion","eventName":"Product Purchased","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"queryID":"43b15df305339e827f0ac0bdc5ebcaa7"}]}'), JSON.parse(req.body) + ) + end + + # ViewedObjectIDs + def test_push_events3 + req = @client.push_events_with_http_info(InsightsEvents.new(events: [ViewedObjectIDs.new(event_type: 'view', event_name: "Product Detail Page Viewed", + index: "products", user_token: "user-123456", authenticated_user_token: "user-123456", timestamp: 1_641_290_601_962, object_ids: ["9780545139700", "9780439784542"])])) + + assert_equal(:post, req.method) + assert_equal('/1/events', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal( + JSON.parse('{"events":[{"eventType":"view","eventName":"Product Detail Page Viewed","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"]}]}'), JSON.parse(req.body) + ) + end + + # AddedToCartObjectIDs + def test_push_events4 + req = @client.push_events_with_http_info(InsightsEvents.new(events: [AddedToCartObjectIDsAfterSearch.new(event_type: 'conversion', event_subtype: 'addToCart', + event_name: "Product Added To Cart", index: "products", query_id: "43b15df305339e827f0ac0bdc5ebcaa7", user_token: "user-123456", authenticated_user_token: "user-123456", timestamp: 1_641_290_601_962, object_ids: ["9780545139700", "9780439784542"], object_data: [ObjectDataAfterSearch.new(price: 19.99, quantity: 10, discount: 2.5), ObjectDataAfterSearch.new(price: "8$", quantity: 7, discount: "30%")], currency: "USD")])) + + assert_equal(:post, req.method) + assert_equal('/1/events', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal( + JSON.parse('{"events":[{"eventType":"conversion","eventSubtype":"addToCart","eventName":"Product Added To Cart","index":"products","queryID":"43b15df305339e827f0ac0bdc5ebcaa7","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"objectData":[{"price":19.99,"quantity":10,"discount":2.5},{"price":"8$","quantity":7,"discount":"30%"}],"currency":"USD"}]}'), JSON.parse(req.body) + ) + end +end diff --git a/tests/output/ruby/test/requests/monitoring_test.rb b/tests/output/ruby/test/requests/monitoring_test.rb new file mode 100644 index 0000000000..4033d86627 --- /dev/null +++ b/tests/output/ruby/test/requests/monitoring_test.rb @@ -0,0 +1,325 @@ +require 'algolia' +require 'test/unit' + +class TestMonitoringClient < Test::Unit::TestCase + include Algolia::Monitoring + def setup + @client = Algolia::MonitoringClient.create_with_config( + Algolia::Configuration.new( + 'APP_ID', + 'API_KEY', + [Algolia::Transport::StatefulHost.new('localhost')], + 'monitoring', + { requester: Algolia::Transport::EchoRequester.new } + ) + ) + end + + # allow del method for a custom path with minimal parameters + def test_custom_delete0 + req = @client.custom_delete_with_http_info("/test/minimal") + + assert_equal(:delete, req.method) + assert_equal('/1/test/minimal', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # allow del method for a custom path with all parameters + def test_custom_delete1 + req = @client.custom_delete_with_http_info("/test/all", { query: "parameters" }) + + assert_equal(:delete, req.method) + assert_equal('/1/test/all', req.path) + assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # allow get method for a custom path with minimal parameters + def test_custom_get0 + req = @client.custom_get_with_http_info("/test/minimal") + + assert_equal(:get, req.method) + assert_equal('/1/test/minimal', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # allow get method for a custom path with all parameters + def test_custom_get1 + req = @client.custom_get_with_http_info("/test/all", { query: "parameters" }) + + assert_equal(:get, req.method) + assert_equal('/1/test/all', req.path) + assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # allow post method for a custom path with minimal parameters + def test_custom_post0 + req = @client.custom_post_with_http_info("/test/minimal") + + assert_equal(:post, req.method) + assert_equal('/1/test/minimal', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{}'), JSON.parse(req.body)) + end + + # allow post method for a custom path with all parameters + def test_custom_post1 + req = @client.custom_post_with_http_info("/test/all", { query: "parameters" }, { body: "parameters" }) + + assert_equal(:post, req.method) + assert_equal('/1/test/all', req.path) + assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"body":"parameters"}'), JSON.parse(req.body)) + end + + # requestOptions can override default query parameters + def test_custom_post2 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"query":"myQueryParameter"}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "myQueryParameter" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions merges query parameters with default ones + def test_custom_post3 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"query2":"myQueryParameter"}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters", 'query2': "myQueryParameter" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions can override default headers + def test_custom_post4 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :header_params => JSON.parse('{"x-algolia-api-key":"myApiKey"}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({ 'x-algolia-api-key': "myApiKey" }.transform_keys(&:to_s).to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions merges headers with default ones + def test_custom_post5 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :header_params => JSON.parse('{"x-algolia-api-key":"myApiKey"}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({ 'x-algolia-api-key': "myApiKey" }.transform_keys(&:to_s).to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions queryParameters accepts booleans + def test_custom_post6 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"isItWorking":true}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters", 'isItWorking': "true" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions queryParameters accepts integers + def test_custom_post7 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"myParam":2}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters", 'myParam': "2" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions queryParameters accepts list of string + def test_custom_post8 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"myParam":["c","d"]}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters", 'myParam': "c,d" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions queryParameters accepts list of booleans + def test_custom_post9 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"myParam":[true,true,false]}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters", 'myParam': "true,true,false" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions queryParameters accepts list of integers + def test_custom_post10 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"myParam":[1,2]}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters", 'myParam': "1,2" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # allow put method for a custom path with minimal parameters + def test_custom_put0 + req = @client.custom_put_with_http_info("/test/minimal") + + assert_equal(:put, req.method) + assert_equal('/1/test/minimal', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{}'), JSON.parse(req.body)) + end + + # allow put method for a custom path with all parameters + def test_custom_put1 + req = @client.custom_put_with_http_info("/test/all", { query: "parameters" }, { body: "parameters" }) + + assert_equal(:put, req.method) + assert_equal('/1/test/all', req.path) + assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"body":"parameters"}'), JSON.parse(req.body)) + end + + # getClusterIncidents + def test_get_cluster_incidents0 + req = @client.get_cluster_incidents_with_http_info("c1-de") + + assert_equal(:get, req.method) + assert_equal('/1/incidents/c1-de', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # getClusterStatus + def test_get_cluster_status0 + req = @client.get_cluster_status_with_http_info("c1-de") + + assert_equal(:get, req.method) + assert_equal('/1/status/c1-de', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # getIncidents + def test_get_incidents0 + req = @client.get_incidents_with_http_info + + assert_equal(:get, req.method) + assert_equal('/1/incidents', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # getIndexingTime + def test_get_indexing_time0 + req = @client.get_indexing_time_with_http_info("c1-de") + + assert_equal(:get, req.method) + assert_equal('/1/indexing/c1-de', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # getInventory + def test_get_inventory0 + req = @client.get_inventory_with_http_info + + assert_equal(:get, req.method) + assert_equal('/1/inventory/servers', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # getLatency + def test_get_latency0 + req = @client.get_latency_with_http_info("c1-de") + + assert_equal(:get, req.method) + assert_equal('/1/latency/c1-de', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # getMetrics + def test_get_metrics0 + req = @client.get_metrics_with_http_info('avg_build_time', 'minute') + + assert_equal(:get, req.method) + assert_equal('/1/infrastructure/avg_build_time/period/minute', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # getReachability + def test_get_reachability0 + req = @client.get_reachability_with_http_info("c1-de") + + assert_equal(:get, req.method) + assert_equal('/1/reachability/c1-de/probes', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # getStatus + def test_get_status0 + req = @client.get_status_with_http_info + + assert_equal(:get, req.method) + assert_equal('/1/status', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end +end diff --git a/tests/output/ruby/test/requests/personalization_test.rb b/tests/output/ruby/test/requests/personalization_test.rb new file mode 100644 index 0000000000..b4dafb69de --- /dev/null +++ b/tests/output/ruby/test/requests/personalization_test.rb @@ -0,0 +1,269 @@ +require 'algolia' +require 'test/unit' + +class TestPersonalizationClient < Test::Unit::TestCase + include Algolia::Personalization + def setup + @client = Algolia::PersonalizationClient.create_with_config( + Algolia::Configuration.new( + 'APP_ID', + 'API_KEY', + [Algolia::Transport::StatefulHost.new('localhost')], + 'personalization', + { requester: Algolia::Transport::EchoRequester.new } + ) + ) + end + + # allow del method for a custom path with minimal parameters + def test_custom_delete0 + req = @client.custom_delete_with_http_info("/test/minimal") + + assert_equal(:delete, req.method) + assert_equal('/1/test/minimal', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # allow del method for a custom path with all parameters + def test_custom_delete1 + req = @client.custom_delete_with_http_info("/test/all", { query: "parameters" }) + + assert_equal(:delete, req.method) + assert_equal('/1/test/all', req.path) + assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # allow get method for a custom path with minimal parameters + def test_custom_get0 + req = @client.custom_get_with_http_info("/test/minimal") + + assert_equal(:get, req.method) + assert_equal('/1/test/minimal', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # allow get method for a custom path with all parameters + def test_custom_get1 + req = @client.custom_get_with_http_info("/test/all", { query: "parameters" }) + + assert_equal(:get, req.method) + assert_equal('/1/test/all', req.path) + assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # allow post method for a custom path with minimal parameters + def test_custom_post0 + req = @client.custom_post_with_http_info("/test/minimal") + + assert_equal(:post, req.method) + assert_equal('/1/test/minimal', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{}'), JSON.parse(req.body)) + end + + # allow post method for a custom path with all parameters + def test_custom_post1 + req = @client.custom_post_with_http_info("/test/all", { query: "parameters" }, { body: "parameters" }) + + assert_equal(:post, req.method) + assert_equal('/1/test/all', req.path) + assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"body":"parameters"}'), JSON.parse(req.body)) + end + + # requestOptions can override default query parameters + def test_custom_post2 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"query":"myQueryParameter"}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "myQueryParameter" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions merges query parameters with default ones + def test_custom_post3 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"query2":"myQueryParameter"}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters", 'query2': "myQueryParameter" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions can override default headers + def test_custom_post4 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :header_params => JSON.parse('{"x-algolia-api-key":"myApiKey"}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({ 'x-algolia-api-key': "myApiKey" }.transform_keys(&:to_s).to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions merges headers with default ones + def test_custom_post5 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :header_params => JSON.parse('{"x-algolia-api-key":"myApiKey"}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({ 'x-algolia-api-key': "myApiKey" }.transform_keys(&:to_s).to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions queryParameters accepts booleans + def test_custom_post6 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"isItWorking":true}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters", 'isItWorking': "true" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions queryParameters accepts integers + def test_custom_post7 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"myParam":2}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters", 'myParam': "2" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions queryParameters accepts list of string + def test_custom_post8 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"myParam":["c","d"]}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters", 'myParam': "c,d" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions queryParameters accepts list of booleans + def test_custom_post9 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"myParam":[true,true,false]}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters", 'myParam': "true,true,false" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions queryParameters accepts list of integers + def test_custom_post10 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"myParam":[1,2]}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters", 'myParam': "1,2" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # allow put method for a custom path with minimal parameters + def test_custom_put0 + req = @client.custom_put_with_http_info("/test/minimal") + + assert_equal(:put, req.method) + assert_equal('/1/test/minimal', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{}'), JSON.parse(req.body)) + end + + # allow put method for a custom path with all parameters + def test_custom_put1 + req = @client.custom_put_with_http_info("/test/all", { query: "parameters" }, { body: "parameters" }) + + assert_equal(:put, req.method) + assert_equal('/1/test/all', req.path) + assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"body":"parameters"}'), JSON.parse(req.body)) + end + + # delete deleteUserProfile + def test_delete_user_profile0 + req = @client.delete_user_profile_with_http_info("UserToken") + + assert_equal(:delete, req.method) + assert_equal('/1/profiles/UserToken', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # get getPersonalizationStrategy + def test_get_personalization_strategy0 + req = @client.get_personalization_strategy_with_http_info + + assert_equal(:get, req.method) + assert_equal('/1/strategies/personalization', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # get getUserTokenProfile + def test_get_user_token_profile0 + req = @client.get_user_token_profile_with_http_info("UserToken") + + assert_equal(:get, req.method) + assert_equal('/1/profiles/personalization/UserToken', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # set setPersonalizationStrategy + def test_set_personalization_strategy0 + req = @client.set_personalization_strategy_with_http_info(PersonalizationStrategyParams.new( + event_scoring: [EventScoring.new(score: 42, event_name: "Algolia", + event_type: "Event")], facet_scoring: [FacetScoring.new(score: 42, facet_name: "Event")], personalization_impact: 42 + )) + + assert_equal(:post, req.method) + assert_equal('/1/strategies/personalization', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal( + JSON.parse('{"eventScoring":[{"score":42,"eventName":"Algolia","eventType":"Event"}],"facetScoring":[{"score":42,"facetName":"Event"}],"personalizationImpact":42}'), JSON.parse(req.body) + ) + end +end diff --git a/tests/output/ruby/test/requests/recommend_test.rb b/tests/output/ruby/test/requests/recommend_test.rb new file mode 100644 index 0000000000..872040afc0 --- /dev/null +++ b/tests/output/ruby/test/requests/recommend_test.rb @@ -0,0 +1,360 @@ +require 'algolia' +require 'test/unit' + +class TestRecommendClient < Test::Unit::TestCase + include Algolia::Recommend + def setup + @client = Algolia::RecommendClient.create_with_config( + Algolia::Configuration.new( + 'APP_ID', + 'API_KEY', + [Algolia::Transport::StatefulHost.new('localhost')], + 'recommend', + { requester: Algolia::Transport::EchoRequester.new } + ) + ) + end + + # allow del method for a custom path with minimal parameters + def test_custom_delete0 + req = @client.custom_delete_with_http_info("/test/minimal") + + assert_equal(:delete, req.method) + assert_equal('/1/test/minimal', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # allow del method for a custom path with all parameters + def test_custom_delete1 + req = @client.custom_delete_with_http_info("/test/all", { query: "parameters" }) + + assert_equal(:delete, req.method) + assert_equal('/1/test/all', req.path) + assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # allow get method for a custom path with minimal parameters + def test_custom_get0 + req = @client.custom_get_with_http_info("/test/minimal") + + assert_equal(:get, req.method) + assert_equal('/1/test/minimal', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # allow get method for a custom path with all parameters + def test_custom_get1 + req = @client.custom_get_with_http_info("/test/all", { query: "parameters" }) + + assert_equal(:get, req.method) + assert_equal('/1/test/all', req.path) + assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # allow post method for a custom path with minimal parameters + def test_custom_post0 + req = @client.custom_post_with_http_info("/test/minimal") + + assert_equal(:post, req.method) + assert_equal('/1/test/minimal', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{}'), JSON.parse(req.body)) + end + + # allow post method for a custom path with all parameters + def test_custom_post1 + req = @client.custom_post_with_http_info("/test/all", { query: "parameters" }, { body: "parameters" }) + + assert_equal(:post, req.method) + assert_equal('/1/test/all', req.path) + assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"body":"parameters"}'), JSON.parse(req.body)) + end + + # requestOptions can override default query parameters + def test_custom_post2 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"query":"myQueryParameter"}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "myQueryParameter" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions merges query parameters with default ones + def test_custom_post3 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"query2":"myQueryParameter"}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters", 'query2': "myQueryParameter" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions can override default headers + def test_custom_post4 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :header_params => JSON.parse('{"x-algolia-api-key":"myApiKey"}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({ 'x-algolia-api-key': "myApiKey" }.transform_keys(&:to_s).to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions merges headers with default ones + def test_custom_post5 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :header_params => JSON.parse('{"x-algolia-api-key":"myApiKey"}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({ 'x-algolia-api-key': "myApiKey" }.transform_keys(&:to_s).to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions queryParameters accepts booleans + def test_custom_post6 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"isItWorking":true}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters", 'isItWorking': "true" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions queryParameters accepts integers + def test_custom_post7 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"myParam":2}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters", 'myParam': "2" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions queryParameters accepts list of string + def test_custom_post8 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"myParam":["c","d"]}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters", 'myParam': "c,d" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions queryParameters accepts list of booleans + def test_custom_post9 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"myParam":[true,true,false]}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters", 'myParam': "true,true,false" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions queryParameters accepts list of integers + def test_custom_post10 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"myParam":[1,2]}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters", 'myParam': "1,2" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # allow put method for a custom path with minimal parameters + def test_custom_put0 + req = @client.custom_put_with_http_info("/test/minimal") + + assert_equal(:put, req.method) + assert_equal('/1/test/minimal', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{}'), JSON.parse(req.body)) + end + + # allow put method for a custom path with all parameters + def test_custom_put1 + req = @client.custom_put_with_http_info("/test/all", { query: "parameters" }, { body: "parameters" }) + + assert_equal(:put, req.method) + assert_equal('/1/test/all', req.path) + assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"body":"parameters"}'), JSON.parse(req.body)) + end + + # deleteRecommendRule0 + def test_delete_recommend_rule0 + req = @client.delete_recommend_rule_with_http_info("indexName", 'related-products', "objectID") + + assert_equal(:delete, req.method) + assert_equal('/1/indexes/indexName/related-products/recommend/rules/objectID', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # getRecommendRule0 + def test_get_recommend_rule0 + req = @client.get_recommend_rule_with_http_info("indexName", 'related-products', "objectID") + + assert_equal(:get, req.method) + assert_equal('/1/indexes/indexName/related-products/recommend/rules/objectID', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # getRecommendStatus0 + def test_get_recommend_status0 + req = @client.get_recommend_status_with_http_info("indexName", 'related-products', 12_345) + + assert_equal(:get, req.method) + assert_equal('/1/indexes/indexName/related-products/task/12345', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # get recommendations for recommend model with minimal parameters + def test_get_recommendations0 + req = @client.get_recommendations_with_http_info(GetRecommendationsParams.new(requests: [RecommendationsQuery.new(index_name: "indexName", object_id: "objectID", + model: 'related-products', threshold: 42)])) + + assert_equal(:post, req.method) + assert_equal('/1/indexes/*/recommendations', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"requests":[{"indexName":"indexName","objectID":"objectID","model":"related-products","threshold":42}]}'), JSON.parse(req.body)) + end + + # get recommendations for recommend model with all parameters + def test_get_recommendations1 + req = @client.get_recommendations_with_http_info(GetRecommendationsParams.new(requests: [RecommendationsQuery.new(index_name: "indexName", object_id: "objectID", + model: 'related-products', threshold: 42, max_recommendations: 10, query_parameters: SearchParamsObject.new(query: "myQuery", facet_filters: ["query"]), fallback_parameters: SearchParamsObject.new(query: "myQuery", facet_filters: ["fallback"]))])) + + assert_equal(:post, req.method) + assert_equal('/1/indexes/*/recommendations', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal( + JSON.parse('{"requests":[{"indexName":"indexName","objectID":"objectID","model":"related-products","threshold":42,"maxRecommendations":10,"queryParameters":{"query":"myQuery","facetFilters":["query"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback"]}}]}'), JSON.parse(req.body) + ) + end + + # get recommendations for trending model with minimal parameters + def test_get_recommendations2 + req = @client.get_recommendations_with_http_info(GetRecommendationsParams.new(requests: [TrendingItemsQuery.new(index_name: "indexName", model: 'trending-items', + threshold: 42)])) + + assert_equal(:post, req.method) + assert_equal('/1/indexes/*/recommendations', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"requests":[{"indexName":"indexName","model":"trending-items","threshold":42}]}'), JSON.parse(req.body)) + end + + # get recommendations for trending model with all parameters + def test_get_recommendations3 + req = @client.get_recommendations_with_http_info(GetRecommendationsParams.new(requests: [TrendingItemsQuery.new(index_name: "indexName", model: 'trending-items', + threshold: 42, max_recommendations: 10, facet_name: "myFacetName", facet_value: "myFacetValue", query_parameters: SearchParamsObject.new(query: "myQuery", facet_filters: ["query"]), fallback_parameters: SearchParamsObject.new(query: "myQuery", facet_filters: ["fallback"]))])) + + assert_equal(:post, req.method) + assert_equal('/1/indexes/*/recommendations', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal( + JSON.parse('{"requests":[{"indexName":"indexName","model":"trending-items","threshold":42,"maxRecommendations":10,"facetName":"myFacetName","facetValue":"myFacetValue","queryParameters":{"query":"myQuery","facetFilters":["query"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback"]}}]}'), JSON.parse(req.body) + ) + end + + # get multiple recommendations with minimal parameters + def test_get_recommendations4 + req = @client.get_recommendations_with_http_info(GetRecommendationsParams.new(requests: [ + RecommendationsQuery.new(index_name: "indexName1", object_id: "objectID1", model: 'related-products', + threshold: 21), RecommendationsQuery.new(index_name: "indexName2", object_id: "objectID2", model: 'related-products', threshold: 21) + ])) + + assert_equal(:post, req.method) + assert_equal('/1/indexes/*/recommendations', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal( + JSON.parse('{"requests":[{"indexName":"indexName1","objectID":"objectID1","model":"related-products","threshold":21},{"indexName":"indexName2","objectID":"objectID2","model":"related-products","threshold":21}]}'), JSON.parse(req.body) + ) + end + + # get multiple recommendations with all parameters + def test_get_recommendations5 + req = @client.get_recommendations_with_http_info(GetRecommendationsParams.new(requests: [ + RecommendationsQuery.new(index_name: "indexName1", object_id: "objectID1", model: 'related-products', threshold: 21, max_recommendations: 10, + query_parameters: SearchParamsObject.new(query: "myQuery", facet_filters: ["query1"]), fallback_parameters: SearchParamsObject.new(query: "myQuery", facet_filters: ["fallback1"])), RecommendationsQuery.new(index_name: "indexName2", object_id: "objectID2", model: 'related-products', threshold: 21, max_recommendations: 10, query_parameters: SearchParamsObject.new(query: "myQuery", facet_filters: ["query2"]), fallback_parameters: SearchParamsObject.new(query: "myQuery", facet_filters: ["fallback2"])) + ])) + + assert_equal(:post, req.method) + assert_equal('/1/indexes/*/recommendations', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal( + JSON.parse('{"requests":[{"indexName":"indexName1","objectID":"objectID1","model":"related-products","threshold":21,"maxRecommendations":10,"queryParameters":{"query":"myQuery","facetFilters":["query1"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback1"]}},{"indexName":"indexName2","objectID":"objectID2","model":"related-products","threshold":21,"maxRecommendations":10,"queryParameters":{"query":"myQuery","facetFilters":["query2"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback2"]}}]}'), JSON.parse(req.body) + ) + end + + # get frequently bought together recommendations + def test_get_recommendations6 + req = @client.get_recommendations_with_http_info(GetRecommendationsParams.new(requests: [RecommendationsQuery.new(index_name: "indexName1", object_id: "objectID1", + model: 'bought-together', threshold: 42)])) + + assert_equal(:post, req.method) + assert_equal('/1/indexes/*/recommendations', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"requests":[{"indexName":"indexName1","objectID":"objectID1","model":"bought-together","threshold":42}]}'), JSON.parse(req.body)) + end + + # searchRecommendRules0 + def test_search_recommend_rules0 + req = @client.search_recommend_rules_with_http_info("indexName", 'related-products') + + assert_equal(:post, req.method) + assert_equal('/1/indexes/indexName/related-products/recommend/rules/search', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{}'), JSON.parse(req.body)) + end +end diff --git a/tests/output/ruby/test/requests/search_test.rb b/tests/output/ruby/test/requests/search_test.rb new file mode 100644 index 0000000000..38c35d079a --- /dev/null +++ b/tests/output/ruby/test/requests/search_test.rb @@ -0,0 +1,1362 @@ +require 'algolia' +require 'test/unit' + +class TestSearchClient < Test::Unit::TestCase + include Algolia::Search + def setup + @client = Algolia::SearchClient.create_with_config( + Algolia::Configuration.new( + 'APP_ID', + 'API_KEY', + [Algolia::Transport::StatefulHost.new('localhost')], + 'search', + { requester: Algolia::Transport::EchoRequester.new } + ) + ) + end + + # addApiKey0 + def test_add_api_key0 + req = @client.add_api_key_with_http_info(ApiKey.new(acl: ['search', 'addObject'], description: "my new api key", validity: 300, max_queries_per_ip_per_hour: 100, + max_hits_per_query: 20)) + + assert_equal(:post, req.method) + assert_equal('/1/keys', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"acl":["search","addObject"],"description":"my new api key","validity":300,"maxQueriesPerIPPerHour":100,"maxHitsPerQuery":20}'), + JSON.parse(req.body)) + end + + # addOrUpdateObject0 + def test_add_or_update_object0 + req = @client.add_or_update_object_with_http_info("indexName", "uniqueID", { key: "value" }) + + assert_equal(:put, req.method) + assert_equal('/1/indexes/indexName/uniqueID', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"key":"value"}'), JSON.parse(req.body)) + end + + # appendSource0 + def test_append_source0 + req = @client.append_source_with_http_info(Source.new(source: "theSource", description: "theDescription")) + + assert_equal(:post, req.method) + assert_equal('/1/security/sources/append', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"source":"theSource","description":"theDescription"}'), JSON.parse(req.body)) + end + + # assignUserId0 + def test_assign_user_id0 + req = @client.assign_user_id_with_http_info("userID", AssignUserIdParams.new(cluster: "theCluster")) + + assert_equal(:post, req.method) + assert_equal('/1/clusters/mapping', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({ 'x-algolia-user-id': "userID" }.transform_keys(&:to_s).to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"cluster":"theCluster"}'), JSON.parse(req.body)) + end + + # allows batch method with `addObject` action + def test_batch0 + req = @client.batch_with_http_info("theIndexName", BatchWriteParams.new(requests: [BatchRequest.new(action: 'addObject', body: { key: "value" })])) + + assert_equal(:post, req.method) + assert_equal('/1/indexes/theIndexName/batch', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"requests":[{"action":"addObject","body":{"key":"value"}}]}'), JSON.parse(req.body)) + end + + # allows batch method with `clear` action + def test_batch1 + req = @client.batch_with_http_info("theIndexName", BatchWriteParams.new(requests: [BatchRequest.new(action: 'clear', body: { key: "value" })])) + + assert_equal(:post, req.method) + assert_equal('/1/indexes/theIndexName/batch', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"requests":[{"action":"clear","body":{"key":"value"}}]}'), JSON.parse(req.body)) + end + + # allows batch method with `delete` action + def test_batch2 + req = @client.batch_with_http_info("theIndexName", BatchWriteParams.new(requests: [BatchRequest.new(action: 'delete', body: { key: "value" })])) + + assert_equal(:post, req.method) + assert_equal('/1/indexes/theIndexName/batch', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"requests":[{"action":"delete","body":{"key":"value"}}]}'), JSON.parse(req.body)) + end + + # allows batch method with `deleteObject` action + def test_batch3 + req = @client.batch_with_http_info("theIndexName", BatchWriteParams.new(requests: [BatchRequest.new(action: 'deleteObject', body: { key: "value" })])) + + assert_equal(:post, req.method) + assert_equal('/1/indexes/theIndexName/batch', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"requests":[{"action":"deleteObject","body":{"key":"value"}}]}'), JSON.parse(req.body)) + end + + # allows batch method with `partialUpdateObject` action + def test_batch4 + req = @client.batch_with_http_info("theIndexName", + BatchWriteParams.new(requests: [BatchRequest.new(action: 'partialUpdateObject', body: { key: "value" })])) + + assert_equal(:post, req.method) + assert_equal('/1/indexes/theIndexName/batch', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"requests":[{"action":"partialUpdateObject","body":{"key":"value"}}]}'), JSON.parse(req.body)) + end + + # allows batch method with `partialUpdateObjectNoCreate` action + def test_batch5 + req = @client.batch_with_http_info("theIndexName", + BatchWriteParams.new(requests: [BatchRequest.new(action: 'partialUpdateObjectNoCreate', body: { key: "value" })])) + + assert_equal(:post, req.method) + assert_equal('/1/indexes/theIndexName/batch', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"requests":[{"action":"partialUpdateObjectNoCreate","body":{"key":"value"}}]}'), JSON.parse(req.body)) + end + + # allows batch method with `updateObject` action + def test_batch6 + req = @client.batch_with_http_info("theIndexName", BatchWriteParams.new(requests: [BatchRequest.new(action: 'updateObject', body: { key: "value" })])) + + assert_equal(:post, req.method) + assert_equal('/1/indexes/theIndexName/batch', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"requests":[{"action":"updateObject","body":{"key":"value"}}]}'), JSON.parse(req.body)) + end + + # batchAssignUserIds0 + def test_batch_assign_user_ids0 + req = @client.batch_assign_user_ids_with_http_info("userID", BatchAssignUserIdsParams.new(cluster: "theCluster", users: ["user1", "user2"])) + + assert_equal(:post, req.method) + assert_equal('/1/clusters/mapping/batch', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({ 'x-algolia-user-id': "userID" }.transform_keys(&:to_s).to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"cluster":"theCluster","users":["user1","user2"]}'), JSON.parse(req.body)) + end + + # get batchDictionaryEntries results with minimal parameters + def test_batch_dictionary_entries0 + req = @client.batch_dictionary_entries_with_http_info('compounds', + BatchDictionaryEntriesParams.new(requests: [BatchDictionaryEntriesRequest.new(action: 'addEntry', body: DictionaryEntry.new(object_id: "1", language: "en")), + BatchDictionaryEntriesRequest.new(action: 'deleteEntry', + body: DictionaryEntry.new( + object_id: "2", language: "fr" + ))])) + + assert_equal(:post, req.method) + assert_equal('/1/dictionaries/compounds/batch', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"requests":[{"action":"addEntry","body":{"objectID":"1","language":"en"}},{"action":"deleteEntry","body":{"objectID":"2","language":"fr"}}]}'), + JSON.parse(req.body)) + end + + # get batchDictionaryEntries results with all parameters + def test_batch_dictionary_entries1 + req = @client.batch_dictionary_entries_with_http_info('compounds', + BatchDictionaryEntriesParams.new(clear_existing_dictionary_entries: false, + requests: [ + BatchDictionaryEntriesRequest.new(action: 'addEntry', + body: DictionaryEntry.new(object_id: "1", language: "en", word: "fancy", words: ["believe", "algolia"], decomposition: ["trust", "algolia"], + state: 'enabled')), BatchDictionaryEntriesRequest.new(action: 'deleteEntry', body: DictionaryEntry.new(object_id: "2", language: "fr", word: "humility", words: ["candor", "algolia"], decomposition: ["grit", "algolia"], state: 'enabled')) + ])) + + assert_equal(:post, req.method) + assert_equal('/1/dictionaries/compounds/batch', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal( + JSON.parse('{"clearExistingDictionaryEntries":false,"requests":[{"action":"addEntry","body":{"objectID":"1","language":"en","word":"fancy","words":["believe","algolia"],"decomposition":["trust","algolia"],"state":"enabled"}},{"action":"deleteEntry","body":{"objectID":"2","language":"fr","word":"humility","words":["candor","algolia"],"decomposition":["grit","algolia"],"state":"enabled"}}]}'), JSON.parse(req.body) + ) + end + + # get batchDictionaryEntries results additional properties + def test_batch_dictionary_entries2 + req = @client.batch_dictionary_entries_with_http_info('compounds', + BatchDictionaryEntriesParams.new(requests: [BatchDictionaryEntriesRequest.new(action: 'addEntry', + body: DictionaryEntry.new( + object_id: "1", language: "en", additional: "try me" + ))])) + + assert_equal(:post, req.method) + assert_equal('/1/dictionaries/compounds/batch', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"requests":[{"action":"addEntry","body":{"objectID":"1","language":"en","additional":"try me"}}]}'), JSON.parse(req.body)) + end + + # browse with minimal parameters + def test_browse0 + req = @client.browse_with_http_info("indexName") + + assert_equal(:post, req.method) + assert_equal('/1/indexes/indexName/browse', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{}'), JSON.parse(req.body)) + end + + # browse with search parameters + def test_browse1 + req = @client.browse_with_http_info("indexName", BrowseParamsObject.new(query: "myQuery", facet_filters: ["tags:algolia"])) + + assert_equal(:post, req.method) + assert_equal('/1/indexes/indexName/browse', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"query":"myQuery","facetFilters":["tags:algolia"]}'), JSON.parse(req.body)) + end + + # browse allow a cursor in parameters + def test_browse2 + req = @client.browse_with_http_info("indexName", BrowseParamsObject.new(cursor: "test")) + + assert_equal(:post, req.method) + assert_equal('/1/indexes/indexName/browse', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"cursor":"test"}'), JSON.parse(req.body)) + end + + # clearAllSynonyms0 + def test_clear_all_synonyms0 + req = @client.clear_all_synonyms_with_http_info("indexName") + + assert_equal(:post, req.method) + assert_equal('/1/indexes/indexName/synonyms/clear', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + end + + # clearObjects0 + def test_clear_objects0 + req = @client.clear_objects_with_http_info("theIndexName") + + assert_equal(:post, req.method) + assert_equal('/1/indexes/theIndexName/clear', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + end + + # clearRules0 + def test_clear_rules0 + req = @client.clear_rules_with_http_info("indexName") + + assert_equal(:post, req.method) + assert_equal('/1/indexes/indexName/rules/clear', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + end + + # allow del method for a custom path with minimal parameters + def test_custom_delete0 + req = @client.custom_delete_with_http_info("/test/minimal") + + assert_equal(:delete, req.method) + assert_equal('/1/test/minimal', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # allow del method for a custom path with all parameters + def test_custom_delete1 + req = @client.custom_delete_with_http_info("/test/all", { query: "parameters" }) + + assert_equal(:delete, req.method) + assert_equal('/1/test/all', req.path) + assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # allow get method for a custom path with minimal parameters + def test_custom_get0 + req = @client.custom_get_with_http_info("/test/minimal") + + assert_equal(:get, req.method) + assert_equal('/1/test/minimal', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # allow get method for a custom path with all parameters + def test_custom_get1 + req = @client.custom_get_with_http_info("/test/all", { query: "parameters" }) + + assert_equal(:get, req.method) + assert_equal('/1/test/all', req.path) + assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # allow post method for a custom path with minimal parameters + def test_custom_post0 + req = @client.custom_post_with_http_info("/test/minimal") + + assert_equal(:post, req.method) + assert_equal('/1/test/minimal', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{}'), JSON.parse(req.body)) + end + + # allow post method for a custom path with all parameters + def test_custom_post1 + req = @client.custom_post_with_http_info("/test/all", { query: "parameters" }, { body: "parameters" }) + + assert_equal(:post, req.method) + assert_equal('/1/test/all', req.path) + assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"body":"parameters"}'), JSON.parse(req.body)) + end + + # requestOptions can override default query parameters + def test_custom_post2 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"query":"myQueryParameter"}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "myQueryParameter" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions merges query parameters with default ones + def test_custom_post3 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"query2":"myQueryParameter"}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters", 'query2': "myQueryParameter" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions can override default headers + def test_custom_post4 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :header_params => JSON.parse('{"x-algolia-api-key":"myApiKey"}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({ 'x-algolia-api-key': "myApiKey" }.transform_keys(&:to_s).to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions merges headers with default ones + def test_custom_post5 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :header_params => JSON.parse('{"x-algolia-api-key":"myApiKey"}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({ 'x-algolia-api-key': "myApiKey" }.transform_keys(&:to_s).to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions queryParameters accepts booleans + def test_custom_post6 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"isItWorking":true}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters", 'isItWorking': "true" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions queryParameters accepts integers + def test_custom_post7 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"myParam":2}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters", 'myParam': "2" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions queryParameters accepts list of string + def test_custom_post8 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"myParam":["c","d"]}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters", 'myParam': "c,d" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions queryParameters accepts list of booleans + def test_custom_post9 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"myParam":[true,true,false]}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters", 'myParam': "true,true,false" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # requestOptions queryParameters accepts list of integers + def test_custom_post10 + req = @client.custom_post_with_http_info("/test/requestOptions", { query: "parameters" }, { facet: "filters" }, + { :query_params => JSON.parse('{"myParam":[1,2]}', :symbolize_names => true) }) + + assert_equal(:post, req.method) + assert_equal('/1/test/requestOptions', req.path) + assert(({ 'query': "parameters", 'myParam': "1,2" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"facet":"filters"}'), JSON.parse(req.body)) + end + + # allow put method for a custom path with minimal parameters + def test_custom_put0 + req = @client.custom_put_with_http_info("/test/minimal") + + assert_equal(:put, req.method) + assert_equal('/1/test/minimal', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{}'), JSON.parse(req.body)) + end + + # allow put method for a custom path with all parameters + def test_custom_put1 + req = @client.custom_put_with_http_info("/test/all", { query: "parameters" }, { body: "parameters" }) + + assert_equal(:put, req.method) + assert_equal('/1/test/all', req.path) + assert(({ 'query': "parameters" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"body":"parameters"}'), JSON.parse(req.body)) + end + + # deleteApiKey0 + def test_delete_api_key0 + req = @client.delete_api_key_with_http_info("myTestApiKey") + + assert_equal(:delete, req.method) + assert_equal('/1/keys/myTestApiKey', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # deleteBy0 + def test_delete_by0 + req = @client.delete_by_with_http_info("theIndexName", DeleteByParams.new(filters: "brand:brandName")) + + assert_equal(:post, req.method) + assert_equal('/1/indexes/theIndexName/deleteByQuery', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"filters":"brand:brandName"}'), JSON.parse(req.body)) + end + + # deleteIndex0 + def test_delete_index0 + req = @client.delete_index_with_http_info("theIndexName") + + assert_equal(:delete, req.method) + assert_equal('/1/indexes/theIndexName', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # deleteObject0 + def test_delete_object0 + req = @client.delete_object_with_http_info("theIndexName", "uniqueID") + + assert_equal(:delete, req.method) + assert_equal('/1/indexes/theIndexName/uniqueID', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # delete rule simple case + def test_delete_rule0 + req = @client.delete_rule_with_http_info("indexName", "id1") + + assert_equal(:delete, req.method) + assert_equal('/1/indexes/indexName/rules/id1', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # delete rule with simple characters to encode in objectID + def test_delete_rule1 + req = @client.delete_rule_with_http_info("indexName", "test/with/slash") + + assert_equal(:delete, req.method) + assert_equal('/1/indexes/indexName/rules/test%2Fwith%2Fslash', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # deleteSource0 + def test_delete_source0 + req = @client.delete_source_with_http_info("theSource") + + assert_equal(:delete, req.method) + assert_equal('/1/security/sources/theSource', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # deleteSynonym0 + def test_delete_synonym0 + req = @client.delete_synonym_with_http_info("indexName", "id1") + + assert_equal(:delete, req.method) + assert_equal('/1/indexes/indexName/synonyms/id1', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # getApiKey0 + def test_get_api_key0 + req = @client.get_api_key_with_http_info("myTestApiKey") + + assert_equal(:get, req.method) + assert_equal('/1/keys/myTestApiKey', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # get getDictionaryLanguages + def test_get_dictionary_languages0 + req = @client.get_dictionary_languages_with_http_info + + assert_equal(:get, req.method) + assert_equal('/1/dictionaries/*/languages', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # get getDictionarySettings results + def test_get_dictionary_settings0 + req = @client.get_dictionary_settings_with_http_info + + assert_equal(:get, req.method) + assert_equal('/1/dictionaries/*/settings', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # getLogs with minimal parameters + def test_get_logs0 + req = @client.get_logs_with_http_info + + assert_equal(:get, req.method) + assert_equal('/1/logs', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # getLogs with parameters + def test_get_logs1 + req = @client.get_logs_with_http_info(5, 10, "theIndexName", 'all') + + assert_equal(:get, req.method) + assert_equal('/1/logs', req.path) + assert(({ 'offset': "5", 'length': "10", 'indexName': "theIndexName", 'type': "all" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # getObject0 + def test_get_object0 + req = @client.get_object_with_http_info("theIndexName", "uniqueID", ["attr1", "attr2"]) + + assert_equal(:get, req.method) + assert_equal('/1/indexes/theIndexName/uniqueID', req.path) + assert(({ 'attributesToRetrieve': "attr1,attr2" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # getObjects0 + def test_get_objects0 + req = @client.get_objects_with_http_info(GetObjectsParams.new(requests: [GetObjectsRequest.new(attributes_to_retrieve: ["attr1", "attr2"], + object_id: "uniqueID", index_name: "theIndexName")])) + + assert_equal(:post, req.method) + assert_equal('/1/indexes/*/objects', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"requests":[{"attributesToRetrieve":["attr1","attr2"],"objectID":"uniqueID","indexName":"theIndexName"}]}'), JSON.parse(req.body)) + end + + # getRule0 + def test_get_rule0 + req = @client.get_rule_with_http_info("indexName", "id1") + + assert_equal(:get, req.method) + assert_equal('/1/indexes/indexName/rules/id1', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # getSettings0 + def test_get_settings0 + req = @client.get_settings_with_http_info("theIndexName") + + assert_equal(:get, req.method) + assert_equal('/1/indexes/theIndexName/settings', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # getSources0 + def test_get_sources0 + req = @client.get_sources_with_http_info + + assert_equal(:get, req.method) + assert_equal('/1/security/sources', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # getSynonym0 + def test_get_synonym0 + req = @client.get_synonym_with_http_info("indexName", "id1") + + assert_equal(:get, req.method) + assert_equal('/1/indexes/indexName/synonyms/id1', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # getTask0 + def test_get_task0 + req = @client.get_task_with_http_info("theIndexName", 123) + + assert_equal(:get, req.method) + assert_equal('/1/indexes/theIndexName/task/123', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # getTopUserIds0 + def test_get_top_user_ids0 + req = @client.get_top_user_ids_with_http_info + + assert_equal(:get, req.method) + assert_equal('/1/clusters/mapping/top', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # getUserId0 + def test_get_user_id0 + req = @client.get_user_id_with_http_info("uniqueID") + + assert_equal(:get, req.method) + assert_equal('/1/clusters/mapping/uniqueID', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # hasPendingMappings with minimal parameters + def test_has_pending_mappings0 + req = @client.has_pending_mappings_with_http_info + + assert_equal(:get, req.method) + assert_equal('/1/clusters/mapping/pending', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # hasPendingMappings with parameters + def test_has_pending_mappings1 + req = @client.has_pending_mappings_with_http_info(true) + + assert_equal(:get, req.method) + assert_equal('/1/clusters/mapping/pending', req.path) + assert(({ 'getClusters': "true" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # listApiKeys0 + def test_list_api_keys0 + req = @client.list_api_keys_with_http_info + + assert_equal(:get, req.method) + assert_equal('/1/keys', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # listClusters0 + def test_list_clusters0 + req = @client.list_clusters_with_http_info + + assert_equal(:get, req.method) + assert_equal('/1/clusters', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # listIndices with minimal parameters + def test_list_indices0 + req = @client.list_indices_with_http_info + + assert_equal(:get, req.method) + assert_equal('/1/indexes', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # listIndices with parameters + def test_list_indices1 + req = @client.list_indices_with_http_info(8, 3) + + assert_equal(:get, req.method) + assert_equal('/1/indexes', req.path) + assert(({ 'page': "8", 'hitsPerPage': "3" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # listUserIds with minimal parameters + def test_list_user_ids0 + req = @client.list_user_ids_with_http_info + + assert_equal(:get, req.method) + assert_equal('/1/clusters/mapping', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # listUserIds with parameters + def test_list_user_ids1 + req = @client.list_user_ids_with_http_info(8, 100) + + assert_equal(:get, req.method) + assert_equal('/1/clusters/mapping', req.path) + assert(({ 'page': "8", 'hitsPerPage': "100" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # multipleBatch0 + def test_multiple_batch0 + req = @client.multiple_batch_with_http_info(BatchParams.new(requests: [MultipleBatchRequest.new(action: 'addObject', body: { key: "value" }, + index_name: "theIndexName")])) + + assert_equal(:post, req.method) + assert_equal('/1/indexes/*/batch', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"requests":[{"action":"addObject","body":{"key":"value"},"indexName":"theIndexName"}]}'), JSON.parse(req.body)) + end + + # operationIndex0 + def test_operation_index0 + req = @client.operation_index_with_http_info("theIndexName", OperationIndexParams.new(operation: 'copy', destination: "dest", scope: ['rules', 'settings'])) + + assert_equal(:post, req.method) + assert_equal('/1/indexes/theIndexName/operation', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"operation":"copy","destination":"dest","scope":["rules","settings"]}'), JSON.parse(req.body)) + end + + # partialUpdateObject0 + def test_partial_update_object0 + req = @client.partial_update_object_with_http_info("theIndexName", "uniqueID", + { id1: "test", id2: BuiltInOperation.new(_operation: 'AddUnique', value: "test2") }, true) + + assert_equal(:post, req.method) + assert_equal('/1/indexes/theIndexName/uniqueID/partial', req.path) + assert(({ 'createIfNotExists': "true" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"id1":"test","id2":{"_operation":"AddUnique","value":"test2"}}'), JSON.parse(req.body)) + end + + # removeUserId0 + def test_remove_user_id0 + req = @client.remove_user_id_with_http_info("uniqueID") + + assert_equal(:delete, req.method) + assert_equal('/1/clusters/mapping/uniqueID', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + + assert(req.body.nil?, 'body is not nil') + end + + # replaceSources0 + def test_replace_sources0 + req = @client.replace_sources_with_http_info([Source.new(source: "theSource", description: "theDescription")]) + + assert_equal(:put, req.method) + assert_equal('/1/security/sources', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('[{"source":"theSource","description":"theDescription"}]'), JSON.parse(req.body)) + end + + # restoreApiKey0 + def test_restore_api_key0 + req = @client.restore_api_key_with_http_info("myApiKey") + + assert_equal(:post, req.method) + assert_equal('/1/keys/myApiKey/restore', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + end + + # saveObject0 + def test_save_object0 + req = @client.save_object_with_http_info("theIndexName", { objectID: "id", test: "val" }) + + assert_equal(:post, req.method) + assert_equal('/1/indexes/theIndexName', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"objectID":"id","test":"val"}'), JSON.parse(req.body)) + end + + # saveRule with minimal parameters + def test_save_rule0 + req = @client.save_rule_with_http_info("indexName", "id1", + Rule.new(object_id: "id1", conditions: [Condition.new(pattern: "apple", anchoring: 'contains')])) + + assert_equal(:put, req.method) + assert_equal('/1/indexes/indexName/rules/id1', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"objectID":"id1","conditions":[{"pattern":"apple","anchoring":"contains"}]}'), JSON.parse(req.body)) + end + + # saveRule with all parameters + def test_save_rule1 + req = @client.save_rule_with_http_info("indexName", "id1", + Rule.new(object_id: "id1", conditions: [Condition.new(pattern: "apple", anchoring: 'contains', alternatives: false, context: "search")], consequence: Consequence.new(params: ConsequenceParams.new(filters: "brand:apple", query: ConsequenceQueryObject.new(remove: ["algolia"], edits: [Edit.new(type: 'remove', delete: "abc", insert: "cde"), Edit.new(type: 'replace', delete: "abc", insert: "cde")])), hide: [ConsequenceHide.new(object_id: "321")], filter_promotes: false, user_data: { 'algolia': "aloglia" }, promote: [PromoteObjectID.new(object_id: "abc", position: 3), PromoteObjectIDs.new(object_ids: ["abc", "def"], position: 1)]), description: "test", enabled: true, validity: [TimeRange.new(from: 1_656_670_273, _until: 1_656_670_277)]), true) + + assert_equal(:put, req.method) + assert_equal('/1/indexes/indexName/rules/id1', req.path) + assert(({ 'forwardToReplicas': "true" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal( + JSON.parse('{"objectID":"id1","conditions":[{"pattern":"apple","anchoring":"contains","alternatives":false,"context":"search"}],"consequence":{"params":{"filters":"brand:apple","query":{"remove":["algolia"],"edits":[{"type":"remove","delete":"abc","insert":"cde"},{"type":"replace","delete":"abc","insert":"cde"}]}},"hide":[{"objectID":"321"}],"filterPromotes":false,"userData":{"algolia":"aloglia"},"promote":[{"objectID":"abc","position":3},{"objectIDs":["abc","def"],"position":1}]},"description":"test","enabled":true,"validity":[{"from":1656670273,"until":1656670277}]}'), JSON.parse(req.body) + ) + end + + # saveRules with minimal parameters + def test_save_rules0 + req = @client.save_rules_with_http_info("indexName", + [Rule.new(object_id: "a-rule-id", conditions: [Condition.new(pattern: "smartphone", anchoring: 'contains')]), + Rule.new(object_id: "a-second-rule-id", conditions: [Condition.new(pattern: "apple", anchoring: 'contains')])]) + + assert_equal(:post, req.method) + assert_equal('/1/indexes/indexName/rules/batch', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal( + JSON.parse('[{"objectID":"a-rule-id","conditions":[{"pattern":"smartphone","anchoring":"contains"}]},{"objectID":"a-second-rule-id","conditions":[{"pattern":"apple","anchoring":"contains"}]}]'), JSON.parse(req.body) + ) + end + + # saveRules with all parameters + def test_save_rules1 + req = @client.save_rules_with_http_info("indexName", + [Rule.new(object_id: "id1", conditions: [Condition.new(pattern: "apple", anchoring: 'contains', alternatives: false, context: "search")], consequence: Consequence.new(params: ConsequenceParams.new(filters: "brand:apple", query: ConsequenceQueryObject.new(remove: ["algolia"], edits: [Edit.new(type: 'remove', delete: "abc", insert: "cde"), Edit.new(type: 'replace', delete: "abc", insert: "cde")])), hide: [ConsequenceHide.new(object_id: "321")], filter_promotes: false, user_data: { 'algolia': "aloglia" }, promote: [PromoteObjectID.new(object_id: "abc", position: 3), PromoteObjectIDs.new(object_ids: ["abc", "def"], position: 1)]), description: "test", enabled: true, validity: [TimeRange.new(from: 1_656_670_273, _until: 1_656_670_277)])], true, true) + + assert_equal(:post, req.method) + assert_equal('/1/indexes/indexName/rules/batch', req.path) + assert(({ 'forwardToReplicas': "true", 'clearExistingRules': "true" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal( + JSON.parse('[{"objectID":"id1","conditions":[{"pattern":"apple","anchoring":"contains","alternatives":false,"context":"search"}],"consequence":{"params":{"filters":"brand:apple","query":{"remove":["algolia"],"edits":[{"type":"remove","delete":"abc","insert":"cde"},{"type":"replace","delete":"abc","insert":"cde"}]}},"hide":[{"objectID":"321"}],"filterPromotes":false,"userData":{"algolia":"aloglia"},"promote":[{"objectID":"abc","position":3},{"objectIDs":["abc","def"],"position":1}]},"description":"test","enabled":true,"validity":[{"from":1656670273,"until":1656670277}]}]'), JSON.parse(req.body) + ) + end + + # saveSynonym0 + def test_save_synonym0 + req = @client.save_synonym_with_http_info("indexName", "id1", SynonymHit.new(object_id: "id1", type: 'synonym', synonyms: ["car", "vehicule", "auto"]), + true) + + assert_equal(:put, req.method) + assert_equal('/1/indexes/indexName/synonyms/id1', req.path) + assert(({ 'forwardToReplicas': "true" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"objectID":"id1","type":"synonym","synonyms":["car","vehicule","auto"]}'), JSON.parse(req.body)) + end + + # saveSynonyms0 + def test_save_synonyms0 + req = @client.save_synonyms_with_http_info("indexName", + [SynonymHit.new(object_id: "id1", type: 'synonym', synonyms: ["car", "vehicule", "auto"]), SynonymHit.new(object_id: "id2", type: 'onewaysynonym', input: "iphone", synonyms: ["ephone", "aphone", "yphone"])], true, false) + + assert_equal(:post, req.method) + assert_equal('/1/indexes/indexName/synonyms/batch', req.path) + assert(({ 'forwardToReplicas': "true", 'replaceExistingSynonyms': "false" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal( + JSON.parse('[{"objectID":"id1","type":"synonym","synonyms":["car","vehicule","auto"]},{"objectID":"id2","type":"onewaysynonym","input":"iphone","synonyms":["ephone","aphone","yphone"]}]'), JSON.parse(req.body) + ) + end + + # search for a single hits request with minimal parameters + def test_search0 + req = @client.search_with_http_info(SearchMethodParams.new(requests: [SearchForHits.new(index_name: "cts_e2e_search_empty_index")])) + + assert_equal(:post, req.method) + assert_equal('/1/indexes/*/queries', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"requests":[{"indexName":"cts_e2e_search_empty_index"}]}'), JSON.parse(req.body)) + end + + # search for a single facet request with minimal parameters + def test_search1 + req = @client.search_with_http_info(SearchMethodParams.new(requests: [SearchForFacets.new(index_name: "cts_e2e_search_facet", type: 'facet', facet: "editor")], + strategy: 'stopIfEnoughMatches')) + + assert_equal(:post, req.method) + assert_equal('/1/indexes/*/queries', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"requests":[{"indexName":"cts_e2e_search_facet","type":"facet","facet":"editor"}],"strategy":"stopIfEnoughMatches"}'), JSON.parse(req.body)) + end + + # search for a single hits request with all parameters + def test_search2 + req = @client.search_with_http_info(SearchMethodParams.new(requests: [SearchForHits.new(index_name: "theIndexName", query: "myQuery", hits_per_page: 50, + type: 'default')])) + + assert_equal(:post, req.method) + assert_equal('/1/indexes/*/queries', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"requests":[{"indexName":"theIndexName","query":"myQuery","hitsPerPage":50,"type":"default"}]}'), JSON.parse(req.body)) + end + + # search for a single facet request with all parameters + def test_search3 + req = @client.search_with_http_info(SearchMethodParams.new( + requests: [SearchForFacets.new(index_name: "theIndexName", type: 'facet', facet: "theFacet", facet_query: "theFacetQuery", query: "theQuery", + max_facet_hits: 50)], strategy: 'stopIfEnoughMatches' + )) + + assert_equal(:post, req.method) + assert_equal('/1/indexes/*/queries', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal( + JSON.parse('{"requests":[{"indexName":"theIndexName","type":"facet","facet":"theFacet","facetQuery":"theFacetQuery","query":"theQuery","maxFacetHits":50}],"strategy":"stopIfEnoughMatches"}'), JSON.parse(req.body) + ) + end + + # search for multiple mixed requests in multiple indices with minimal parameters + def test_search4 + req = @client.search_with_http_info(SearchMethodParams.new( + requests: [SearchForHits.new(index_name: "theIndexName"), SearchForFacets.new(index_name: "theIndexName2", type: 'facet', facet: "theFacet"), + SearchForHits.new(index_name: "theIndexName", type: 'default')], strategy: 'stopIfEnoughMatches' + )) + + assert_equal(:post, req.method) + assert_equal('/1/indexes/*/queries', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal( + JSON.parse('{"requests":[{"indexName":"theIndexName"},{"indexName":"theIndexName2","type":"facet","facet":"theFacet"},{"indexName":"theIndexName","type":"default"}],"strategy":"stopIfEnoughMatches"}'), JSON.parse(req.body) + ) + end + + # search for multiple mixed requests in multiple indices with all parameters + def test_search5 + req = @client.search_with_http_info(SearchMethodParams.new( + requests: [SearchForFacets.new(index_name: "theIndexName", type: 'facet', facet: "theFacet", facet_query: "theFacetQuery", query: "theQuery", max_facet_hits: 50), + SearchForHits.new(index_name: "theIndexName", query: "myQuery", hits_per_page: 50, + type: 'default')], strategy: 'stopIfEnoughMatches' + )) + + assert_equal(:post, req.method) + assert_equal('/1/indexes/*/queries', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal( + JSON.parse('{"requests":[{"indexName":"theIndexName","type":"facet","facet":"theFacet","facetQuery":"theFacetQuery","query":"theQuery","maxFacetHits":50},{"indexName":"theIndexName","query":"myQuery","hitsPerPage":50,"type":"default"}],"strategy":"stopIfEnoughMatches"}'), JSON.parse(req.body) + ) + end + + # search filters accept all of the possible shapes + def test_search6 + req = @client.search_with_http_info(SearchMethodParams.new(requests: [ + SearchForHits.new(index_name: "theIndexName", facet_filters: "mySearch:filters", re_ranking_apply_filter: "mySearch:filters", tag_filters: "mySearch:filters", + numeric_filters: "mySearch:filters", optional_filters: "mySearch:filters"), SearchForHits.new(index_name: "theIndexName", facet_filters: ["mySearch:filters", ["mySearch:filters"]], re_ranking_apply_filter: ["mySearch:filters", ["mySearch:filters"]], tag_filters: ["mySearch:filters", ["mySearch:filters"]], numeric_filters: ["mySearch:filters", ["mySearch:filters"]], optional_filters: ["mySearch:filters", ["mySearch:filters"]]) + ])) + + assert_equal(:post, req.method) + assert_equal('/1/indexes/*/queries', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal( + JSON.parse('{"requests":[{"indexName":"theIndexName","facetFilters":"mySearch:filters","reRankingApplyFilter":"mySearch:filters","tagFilters":"mySearch:filters","numericFilters":"mySearch:filters","optionalFilters":"mySearch:filters"},{"indexName":"theIndexName","facetFilters":["mySearch:filters",["mySearch:filters"]],"reRankingApplyFilter":["mySearch:filters",["mySearch:filters"]],"tagFilters":["mySearch:filters",["mySearch:filters"]],"numericFilters":["mySearch:filters",["mySearch:filters"]],"optionalFilters":["mySearch:filters",["mySearch:filters"]]}]}'), JSON.parse(req.body) + ) + end + + # search with all search parameters + def test_search7 + req = @client.search_with_http_info(SearchMethodParams.new(requests: [SearchForHits.new(advanced_syntax: true, advanced_syntax_features: ['exactPhrase'], + allow_typos_on_numeric_tokens: true, alternatives_as_exact: ['multiWordsSynonym'], analytics: true, analytics_tags: [""], around_lat_lng: "", around_lat_lng_via_ip: true, around_precision: 0, around_radius: 'all', attribute_criteria_computed_by_min_proximity: true, attributes_for_faceting: [""], attributes_to_highlight: [""], attributes_to_retrieve: [""], attributes_to_snippet: [""], click_analytics: true, custom_ranking: [""], decompound_query: true, disable_exact_on_attributes: [""], disable_typo_tolerance_on_attributes: [""], distinct: 0, enable_ab_test: true, enable_personalization: true, enable_re_ranking: true, enable_rules: true, exact_on_single_word_query: 'attribute', explain: ["foo", "bar"], facet_filters: [""], faceting_after_distinct: true, facets: [""], filters: "", get_ranking_info: true, highlight_post_tag: "", highlight_pre_tag: "", hits_per_page: 1, ignore_plurals: false, index_name: "theIndexName", inside_bounding_box: [[47.3165, 4.9665, 47.3424, 5.0201], [40.9234, 2.1185, 38.643, 1.9916]], inside_polygon: [[47.3165, 4.9665, 47.3424, 5.0201, 47.32, 4.9], [40.9234, 2.1185, 38.643, 1.9916, 39.2587, 2.0104]], keep_diacritics_on_characters: "", length: 1, max_values_per_facet: 0, min_proximity: 1, min_word_sizefor1_typo: 0, min_word_sizefor2_typos: 0, minimum_around_radius: 1, natural_languages: [""], numeric_filters: [""], offset: 0, optional_filters: [""], optional_words: [""], page: 0, percentile_computation: true, personalization_impact: 0, query: "", query_languages: [""], query_type: 'prefixAll', ranking: [""], re_ranking_apply_filter: [""], relevancy_strictness: 0, remove_stop_words: true, remove_words_if_no_results: 'allOptional', rendering_content: RenderingContent.new(facet_ordering: FacetOrdering.new(facets: Facets.new(order: ["a", "b"]), values: { a: Value.new(order: ["b"], sort_remaining_by: 'count') })), replace_synonyms_in_highlight: true, response_fields: [""], restrict_highlight_and_snippet_arrays: true, restrict_searchable_attributes: [""], rule_contexts: [""], similar_query: "", snippet_ellipsis_text: "", sort_facet_values_by: "", sum_or_filters_scores: true, synonyms: true, tag_filters: [""], type: 'default', typo_tolerance: 'min', user_token: "")])) + + assert_equal(:post, req.method) + assert_equal('/1/indexes/*/queries', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal( + JSON.parse('{"requests":[{"advancedSyntax":true,"advancedSyntaxFeatures":["exactPhrase"],"allowTyposOnNumericTokens":true,"alternativesAsExact":["multiWordsSynonym"],"analytics":true,"analyticsTags":[""],"aroundLatLng":"","aroundLatLngViaIP":true,"aroundPrecision":0,"aroundRadius":"all","attributeCriteriaComputedByMinProximity":true,"attributesForFaceting":[""],"attributesToHighlight":[""],"attributesToRetrieve":[""],"attributesToSnippet":[""],"clickAnalytics":true,"customRanking":[""],"decompoundQuery":true,"disableExactOnAttributes":[""],"disableTypoToleranceOnAttributes":[""],"distinct":0,"enableABTest":true,"enablePersonalization":true,"enableReRanking":true,"enableRules":true,"exactOnSingleWordQuery":"attribute","explain":["foo","bar"],"facetFilters":[""],"facetingAfterDistinct":true,"facets":[""],"filters":"","getRankingInfo":true,"highlightPostTag":"","highlightPreTag":"","hitsPerPage":1,"ignorePlurals":false,"indexName":"theIndexName","insideBoundingBox":[[47.3165,4.9665,47.3424,5.0201],[40.9234,2.1185,38.643,1.9916]],"insidePolygon":[[47.3165,4.9665,47.3424,5.0201,47.32,4.9],[40.9234,2.1185,38.643,1.9916,39.2587,2.0104]],"keepDiacriticsOnCharacters":"","length":1,"maxValuesPerFacet":0,"minProximity":1,"minWordSizefor1Typo":0,"minWordSizefor2Typos":0,"minimumAroundRadius":1,"naturalLanguages":[""],"numericFilters":[""],"offset":0,"optionalFilters":[""],"optionalWords":[""],"page":0,"percentileComputation":true,"personalizationImpact":0,"query":"","queryLanguages":[""],"queryType":"prefixAll","ranking":[""],"reRankingApplyFilter":[""],"relevancyStrictness":0,"removeStopWords":true,"removeWordsIfNoResults":"allOptional","renderingContent":{"facetOrdering":{"facets":{"order":["a","b"]},"values":{"a":{"order":["b"],"sortRemainingBy":"count"}}}},"replaceSynonymsInHighlight":true,"responseFields":[""],"restrictHighlightAndSnippetArrays":true,"restrictSearchableAttributes":[""],"ruleContexts":[""],"similarQuery":"","snippetEllipsisText":"","sortFacetValuesBy":"","sumOrFiltersScores":true,"synonyms":true,"tagFilters":[""],"type":"default","typoTolerance":"min","userToken":""}]}'), JSON.parse(req.body) + ) + end + + # get searchDictionaryEntries results with minimal parameters + def test_search_dictionary_entries0 + req = @client.search_dictionary_entries_with_http_info('compounds', SearchDictionaryEntriesParams.new(query: "foo")) + + assert_equal(:post, req.method) + assert_equal('/1/dictionaries/compounds/search', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"query":"foo"}'), JSON.parse(req.body)) + end + + # get searchDictionaryEntries results with all parameters + def test_search_dictionary_entries1 + req = @client.search_dictionary_entries_with_http_info('compounds', SearchDictionaryEntriesParams.new(query: "foo", page: 4, hits_per_page: 2, language: "fr")) + + assert_equal(:post, req.method) + assert_equal('/1/dictionaries/compounds/search', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"query":"foo","page":4,"hitsPerPage":2,"language":"fr"}'), JSON.parse(req.body)) + end + + # get searchForFacetValues results with minimal parameters + def test_search_for_facet_values0 + req = @client.search_for_facet_values_with_http_info("indexName", "facetName") + + assert_equal(:post, req.method) + assert_equal('/1/indexes/indexName/facets/facetName/query', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{}'), JSON.parse(req.body)) + end + + # get searchForFacetValues results with all parameters + def test_search_for_facet_values1 + req = @client.search_for_facet_values_with_http_info("indexName", "facetName", + SearchForFacetValuesRequest.new(params: "query=foo&facetFilters=['bar']", facet_query: "foo", max_facet_hits: 42)) + + assert_equal(:post, req.method) + assert_equal('/1/indexes/indexName/facets/facetName/query', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse(%q({"params":"query=foo&facetFilters=['bar']","facetQuery":"foo","maxFacetHits":42})), JSON.parse(req.body)) + end + + # searchRules0 + def test_search_rules0 + req = @client.search_rules_with_http_info("indexName", SearchRulesParams.new(query: "something")) + + assert_equal(:post, req.method) + assert_equal('/1/indexes/indexName/rules/search', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"query":"something"}'), JSON.parse(req.body)) + end + + # search with minimal parameters + def test_search_single_index0 + req = @client.search_single_index_with_http_info("indexName") + + assert_equal(:post, req.method) + assert_equal('/1/indexes/indexName/query', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{}'), JSON.parse(req.body)) + end + + # search with searchParams + def test_search_single_index1 + req = @client.search_single_index_with_http_info("indexName", SearchParamsObject.new(query: "myQuery", facet_filters: ["tags:algolia"])) + + assert_equal(:post, req.method) + assert_equal('/1/indexes/indexName/query', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"query":"myQuery","facetFilters":["tags:algolia"]}'), JSON.parse(req.body)) + end + + # searchSynonyms with minimal parameters + def test_search_synonyms0 + req = @client.search_synonyms_with_http_info("indexName") + + assert_equal(:post, req.method) + assert_equal('/1/indexes/indexName/synonyms/search', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{}'), JSON.parse(req.body)) + end + + # searchSynonyms with all parameters + def test_search_synonyms1 + req = @client.search_synonyms_with_http_info("indexName", 'altcorrection1', 10, 10, SearchSynonymsParams.new(query: "myQuery")) + + assert_equal(:post, req.method) + assert_equal('/1/indexes/indexName/synonyms/search', req.path) + assert(({ 'type': "altcorrection1", 'page': "10", 'hitsPerPage': "10" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"query":"myQuery"}'), JSON.parse(req.body)) + end + + # searchUserIds0 + def test_search_user_ids0 + req = @client.search_user_ids_with_http_info(SearchUserIdsParams.new(query: "test", cluster_name: "theClusterName", page: 5, hits_per_page: 10)) + + assert_equal(:post, req.method) + assert_equal('/1/clusters/mapping/search', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"query":"test","clusterName":"theClusterName","page":5,"hitsPerPage":10}'), JSON.parse(req.body)) + end + + # get setDictionarySettings results with minimal parameters + def test_set_dictionary_settings0 + req = @client.set_dictionary_settings_with_http_info(DictionarySettingsParams.new(disable_standard_entries: StandardEntries.new(plurals: { fr: false, en: false, + ru: true }))) + + assert_equal(:put, req.method) + assert_equal('/1/dictionaries/*/settings', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"disableStandardEntries":{"plurals":{"fr":false,"en":false,"ru":true}}}'), JSON.parse(req.body)) + end + + # get setDictionarySettings results with all parameters + def test_set_dictionary_settings1 + req = @client.set_dictionary_settings_with_http_info(DictionarySettingsParams.new(disable_standard_entries: StandardEntries.new( + plurals: { fr: false, en: false, ru: true }, stopwords: { fr: false }, compounds: { ru: true } + ))) + + assert_equal(:put, req.method) + assert_equal('/1/dictionaries/*/settings', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"disableStandardEntries":{"plurals":{"fr":false,"en":false,"ru":true},"stopwords":{"fr":false},"compounds":{"ru":true}}}'), JSON.parse(req.body)) + end + + # setSettings with minimal parameters + def test_set_settings0 + req = @client.set_settings_with_http_info("theIndexName", IndexSettings.new(pagination_limited_to: 10), true) + + assert_equal(:put, req.method) + assert_equal('/1/indexes/theIndexName/settings', req.path) + assert(({ 'forwardToReplicas': "true" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"paginationLimitedTo":10}'), JSON.parse(req.body)) + end + + # setSettings allow boolean `typoTolerance` + def test_set_settings1 + req = @client.set_settings_with_http_info("theIndexName", IndexSettings.new(typo_tolerance: true), true) + + assert_equal(:put, req.method) + assert_equal('/1/indexes/theIndexName/settings', req.path) + assert(({ 'forwardToReplicas': "true" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"typoTolerance":true}'), JSON.parse(req.body)) + end + + # setSettings allow enum `typoTolerance` + def test_set_settings2 + req = @client.set_settings_with_http_info("theIndexName", IndexSettings.new(typo_tolerance: 'min'), true) + + assert_equal(:put, req.method) + assert_equal('/1/indexes/theIndexName/settings', req.path) + assert(({ 'forwardToReplicas': "true" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"typoTolerance":"min"}'), JSON.parse(req.body)) + end + + # setSettings allow boolean `ignorePlurals` + def test_set_settings3 + req = @client.set_settings_with_http_info("theIndexName", IndexSettings.new(ignore_plurals: true), true) + + assert_equal(:put, req.method) + assert_equal('/1/indexes/theIndexName/settings', req.path) + assert(({ 'forwardToReplicas': "true" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"ignorePlurals":true}'), JSON.parse(req.body)) + end + + # setSettings allow list of string `ignorePlurals` + def test_set_settings4 + req = @client.set_settings_with_http_info("theIndexName", IndexSettings.new(ignore_plurals: ["algolia"]), true) + + assert_equal(:put, req.method) + assert_equal('/1/indexes/theIndexName/settings', req.path) + assert(({ 'forwardToReplicas': "true" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"ignorePlurals":["algolia"]}'), JSON.parse(req.body)) + end + + # setSettings allow boolean `removeStopWords` + def test_set_settings5 + req = @client.set_settings_with_http_info("theIndexName", IndexSettings.new(remove_stop_words: true), true) + + assert_equal(:put, req.method) + assert_equal('/1/indexes/theIndexName/settings', req.path) + assert(({ 'forwardToReplicas': "true" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"removeStopWords":true}'), JSON.parse(req.body)) + end + + # setSettings allow list of string `removeStopWords` + def test_set_settings6 + req = @client.set_settings_with_http_info("theIndexName", IndexSettings.new(remove_stop_words: ["algolia"]), true) + + assert_equal(:put, req.method) + assert_equal('/1/indexes/theIndexName/settings', req.path) + assert(({ 'forwardToReplicas': "true" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"removeStopWords":["algolia"]}'), JSON.parse(req.body)) + end + + # setSettings allow boolean `distinct` + def test_set_settings7 + req = @client.set_settings_with_http_info("theIndexName", IndexSettings.new(distinct: true), true) + + assert_equal(:put, req.method) + assert_equal('/1/indexes/theIndexName/settings', req.path) + assert(({ 'forwardToReplicas': "true" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"distinct":true}'), JSON.parse(req.body)) + end + + # setSettings allow integers for `distinct` + def test_set_settings8 + req = @client.set_settings_with_http_info("theIndexName", IndexSettings.new(distinct: 1), true) + + assert_equal(:put, req.method) + assert_equal('/1/indexes/theIndexName/settings', req.path) + assert(({ 'forwardToReplicas': "true" }.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"distinct":1}'), JSON.parse(req.body)) + end + + # setSettings allow all `indexSettings` + def test_set_settings9 + req = @client.set_settings_with_http_info("theIndexName", + IndexSettings.new(advanced_syntax: true, advanced_syntax_features: ['exactPhrase'], allow_compression_of_integer_array: true, allow_typos_on_numeric_tokens: true, + alternatives_as_exact: ['singleWordSynonym'], attribute_criteria_computed_by_min_proximity: true, attribute_for_distinct: "test", attributes_for_faceting: ["algolia"], attributes_to_highlight: ["algolia"], attributes_to_retrieve: ["algolia"], attributes_to_snippet: ["algolia"], attributes_to_transliterate: ["algolia"], camel_case_attributes: ["algolia"], custom_normalization: { algolia: { aloglia: "aglolia" } }, custom_ranking: ["algolia"], decompound_query: false, decompounded_attributes: { algolia: "aloglia" }, disable_exact_on_attributes: ["algolia"], disable_prefix_on_attributes: ["algolia"], disable_typo_tolerance_on_attributes: ["algolia"], disable_typo_tolerance_on_words: ["algolia"], distinct: 3, enable_personalization: true, enable_re_ranking: false, enable_rules: true, exact_on_single_word_query: 'attribute', highlight_pre_tag: "", highlight_post_tag: "", hits_per_page: 10, ignore_plurals: false, index_languages: ["algolia"], keep_diacritics_on_characters: "abc", max_facet_hits: 20, max_values_per_facet: 30, min_proximity: 6, min_word_sizefor1_typo: 5, min_word_sizefor2_typos: 11, mode: 'neuralSearch', numeric_attributes_for_filtering: ["algolia"], optional_words: ["myspace"], pagination_limited_to: 0, query_languages: ["algolia"], query_type: 'prefixLast', ranking: ["geo"], re_ranking_apply_filter: "mySearch:filters", relevancy_strictness: 10, remove_stop_words: false, remove_words_if_no_results: 'lastWords', rendering_content: RenderingContent.new(facet_ordering: FacetOrdering.new(facets: Facets.new(order: ["a", "b"]), values: { a: Value.new(order: ["b"], sort_remaining_by: 'count') })), replace_synonyms_in_highlight: true, replicas: [""], response_fields: ["algolia"], restrict_highlight_and_snippet_arrays: true, searchable_attributes: ["foo"], semantic_search: SemanticSearch.new(event_sources: ["foo"]), separators_to_index: "bar", snippet_ellipsis_text: "---", sort_facet_values_by: "date", typo_tolerance: false, unretrievable_attributes: ["foo"], user_data: { user: "data" })) + + assert_equal(:put, req.method) + assert_equal('/1/indexes/theIndexName/settings', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal( + JSON.parse('{"advancedSyntax":true,"advancedSyntaxFeatures":["exactPhrase"],"allowCompressionOfIntegerArray":true,"allowTyposOnNumericTokens":true,"alternativesAsExact":["singleWordSynonym"],"attributeCriteriaComputedByMinProximity":true,"attributeForDistinct":"test","attributesForFaceting":["algolia"],"attributesToHighlight":["algolia"],"attributesToRetrieve":["algolia"],"attributesToSnippet":["algolia"],"attributesToTransliterate":["algolia"],"camelCaseAttributes":["algolia"],"customNormalization":{"algolia":{"aloglia":"aglolia"}},"customRanking":["algolia"],"decompoundQuery":false,"decompoundedAttributes":{"algolia":"aloglia"},"disableExactOnAttributes":["algolia"],"disablePrefixOnAttributes":["algolia"],"disableTypoToleranceOnAttributes":["algolia"],"disableTypoToleranceOnWords":["algolia"],"distinct":3,"enablePersonalization":true,"enableReRanking":false,"enableRules":true,"exactOnSingleWordQuery":"attribute","highlightPreTag":"","highlightPostTag":"","hitsPerPage":10,"ignorePlurals":false,"indexLanguages":["algolia"],"keepDiacriticsOnCharacters":"abc","maxFacetHits":20,"maxValuesPerFacet":30,"minProximity":6,"minWordSizefor1Typo":5,"minWordSizefor2Typos":11,"mode":"neuralSearch","numericAttributesForFiltering":["algolia"],"optionalWords":["myspace"],"paginationLimitedTo":0,"queryLanguages":["algolia"],"queryType":"prefixLast","ranking":["geo"],"reRankingApplyFilter":"mySearch:filters","relevancyStrictness":10,"removeStopWords":false,"removeWordsIfNoResults":"lastWords","renderingContent":{"facetOrdering":{"facets":{"order":["a","b"]},"values":{"a":{"order":["b"],"sortRemainingBy":"count"}}}},"replaceSynonymsInHighlight":true,"replicas":[""],"responseFields":["algolia"],"restrictHighlightAndSnippetArrays":true,"searchableAttributes":["foo"],"semanticSearch":{"eventSources":["foo"]},"separatorsToIndex":"bar","snippetEllipsisText":"---","sortFacetValuesBy":"date","typoTolerance":false,"unretrievableAttributes":["foo"],"userData":{"user":"data"}}'), JSON.parse(req.body) + ) + end + + # updateApiKey0 + def test_update_api_key0 + req = @client.update_api_key_with_http_info("myApiKey", + ApiKey.new(acl: ['search', 'addObject'], validity: 300, max_queries_per_ip_per_hour: 100, max_hits_per_query: 20)) + + assert_equal(:put, req.method) + assert_equal('/1/keys/myApiKey', req.path) + assert(({}.to_a - req.query_params.to_a).empty?, req.query_params.to_s) + assert(({}.to_a - req.headers.to_a).empty?, req.headers.to_s) + assert_equal(JSON.parse('{"acl":["search","addObject"],"validity":300,"maxQueriesPerIPPerHour":100,"maxHitsPerQuery":20}'), JSON.parse(req.body)) + end +end diff --git a/tests/output/scala/src/test/scala/algoliasearch/requests/AbtestingTest.scala b/tests/output/scala/src/test/scala/algoliasearch/requests/AbtestingTest.scala new file mode 100644 index 0000000000..ca45bcf475 --- /dev/null +++ b/tests/output/scala/src/test/scala/algoliasearch/requests/AbtestingTest.scala @@ -0,0 +1,590 @@ +package algoliasearch.methods.requests + +import algoliasearch.EchoInterceptor +import algoliasearch.api.AbtestingClient +import algoliasearch.config.* +import algoliasearch.abtesting.* +import org.json4s.* +import org.json4s.native.JsonParser.* +import org.scalatest.funsuite.AnyFunSuite + +import scala.concurrent.duration.Duration +import scala.concurrent.{Await, ExecutionContextExecutor} + +class AbtestingTest extends AnyFunSuite { + implicit val ec: ExecutionContextExecutor = scala.concurrent.ExecutionContext.global + implicit val formats: Formats = org.json4s.DefaultFormats + + def testClient(): (AbtestingClient, EchoInterceptor) = { + val echo = EchoInterceptor() + ( + AbtestingClient( + appId = "appId", + apiKey = "apiKey", + region = Some("us"), + clientOptions = ClientOptions + .builder() + .withRequesterConfig(requester => requester.withInterceptor(echo)) + .build() + ), + echo + ) + } + + test("addABTests with minimal parameters") { + val (client, echo) = testClient() + val future = client.addABTests( + addABTestsRequest = AddABTestsRequest( + endAt = "2022-12-31T00:00:00.000Z", + name = "myABTest", + variants = Seq( + AbTestsVariant( + index = "AB_TEST_1", + trafficPercentage = 30 + ), + AbTestsVariant( + index = "AB_TEST_2", + trafficPercentage = 50 + ) + ) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/2/abtests") + assert(res.method == "POST") + val expectedBody = parse( + """{"endAt":"2022-12-31T00:00:00.000Z","name":"myABTest","variants":[{"index":"AB_TEST_1","trafficPercentage":30},{"index":"AB_TEST_2","trafficPercentage":50}]}""" + ) + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("allow del method for a custom path with minimal parameters") { + val (client, echo) = testClient() + val future = client.customDelete[JObject]( + path = "/test/minimal" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/minimal") + assert(res.method == "DELETE") + assert(res.body.isEmpty) + } + + test("allow del method for a custom path with all parameters") { + val (client, echo) = testClient() + val future = client.customDelete[JObject]( + path = "/test/all", + parameters = Some(Map("query" -> "parameters")) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/all") + assert(res.method == "DELETE") + assert(res.body.isEmpty) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("allow get method for a custom path with minimal parameters") { + val (client, echo) = testClient() + val future = client.customGet[JObject]( + path = "/test/minimal" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/minimal") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("allow get method for a custom path with all parameters") { + val (client, echo) = testClient() + val future = client.customGet[JObject]( + path = "/test/all", + parameters = Some(Map("query" -> "parameters")) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/all") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("allow post method for a custom path with minimal parameters") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/minimal" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/minimal") + assert(res.method == "POST") + val expectedBody = parse("""{}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("allow post method for a custom path with all parameters") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/all", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("body", JString("parameters"))))) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/all") + assert(res.method == "POST") + val expectedBody = parse("""{"body":"parameters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions can override default query parameters") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("query", "myQueryParameter") + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"myQueryParameter"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions merges query parameters with default ones") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("query2", "myQueryParameter") + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","query2":"myQueryParameter"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions can override default headers") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withHeader("x-algolia-api-key", "myApiKey") + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + val expectedHeaders = parse("""{"x-algolia-api-key":"myApiKey"}""").asInstanceOf[JObject].obj.toMap + val actualHeaders = res.headers + for ((k, v) <- expectedHeaders) { + assert(actualHeaders.contains(k)) + assert(actualHeaders(k) == v.asInstanceOf[JString].s) + } + } + + test("requestOptions merges headers with default ones") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withHeader("x-algolia-api-key", "myApiKey") + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + val expectedHeaders = parse("""{"x-algolia-api-key":"myApiKey"}""").asInstanceOf[JObject].obj.toMap + val actualHeaders = res.headers + for ((k, v) <- expectedHeaders) { + assert(actualHeaders.contains(k)) + assert(actualHeaders(k) == v.asInstanceOf[JString].s) + } + } + + test("requestOptions queryParameters accepts booleans") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("isItWorking", true) + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","isItWorking":"true"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions queryParameters accepts integers") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("myParam", 2) + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","myParam":"2"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions queryParameters accepts list of string") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("myParam", Seq("c", "d")) + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","myParam":"c,d"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions queryParameters accepts list of booleans") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("myParam", Seq(true, true, false)) + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","myParam":"true,true,false"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions queryParameters accepts list of integers") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("myParam", Seq(1, 2)) + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","myParam":"1,2"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("allow put method for a custom path with minimal parameters") { + val (client, echo) = testClient() + val future = client.customPut[JObject]( + path = "/test/minimal" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/minimal") + assert(res.method == "PUT") + val expectedBody = parse("""{}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("allow put method for a custom path with all parameters") { + val (client, echo) = testClient() + val future = client.customPut[JObject]( + path = "/test/all", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("body", JString("parameters"))))) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/all") + assert(res.method == "PUT") + val expectedBody = parse("""{"body":"parameters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("deleteABTest") { + val (client, echo) = testClient() + val future = client.deleteABTest( + id = 42 + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/2/abtests/42") + assert(res.method == "DELETE") + assert(res.body.isEmpty) + } + + test("getABTest") { + val (client, echo) = testClient() + val future = client.getABTest( + id = 42 + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/2/abtests/42") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("listABTests with minimal parameters") { + val (client, echo) = testClient() + val future = client.listABTests( + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/2/abtests") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("listABTests with parameters") { + val (client, echo) = testClient() + val future = client.listABTests( + offset = Some(42), + limit = Some(21), + indexPrefix = Some("foo"), + indexSuffix = Some("bar") + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/2/abtests") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = + parse("""{"offset":"42","limit":"21","indexPrefix":"foo","indexSuffix":"bar"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("stopABTest") { + val (client, echo) = testClient() + val future = client.stopABTest( + id = 42 + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/2/abtests/42/stop") + assert(res.method == "POST") + assert(res.body.contains("{}")) + } + +} diff --git a/tests/output/scala/src/test/scala/algoliasearch/requests/AnalyticsTest.scala b/tests/output/scala/src/test/scala/algoliasearch/requests/AnalyticsTest.scala new file mode 100644 index 0000000000..935b30fe15 --- /dev/null +++ b/tests/output/scala/src/test/scala/algoliasearch/requests/AnalyticsTest.scala @@ -0,0 +1,1338 @@ +package algoliasearch.methods.requests + +import algoliasearch.EchoInterceptor +import algoliasearch.api.AnalyticsClient +import algoliasearch.config.* +import algoliasearch.analytics.* +import org.json4s.* +import org.json4s.native.JsonParser.* +import org.scalatest.funsuite.AnyFunSuite + +import scala.concurrent.duration.Duration +import scala.concurrent.{Await, ExecutionContextExecutor} + +class AnalyticsTest extends AnyFunSuite { + implicit val ec: ExecutionContextExecutor = scala.concurrent.ExecutionContext.global + implicit val formats: Formats = org.json4s.DefaultFormats + + def testClient(): (AnalyticsClient, EchoInterceptor) = { + val echo = EchoInterceptor() + ( + AnalyticsClient( + appId = "appId", + apiKey = "apiKey", + region = Some("us"), + clientOptions = ClientOptions + .builder() + .withRequesterConfig(requester => requester.withInterceptor(echo)) + .build() + ), + echo + ) + } + + test("allow del method for a custom path with minimal parameters") { + val (client, echo) = testClient() + val future = client.customDelete[JObject]( + path = "/test/minimal" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/minimal") + assert(res.method == "DELETE") + assert(res.body.isEmpty) + } + + test("allow del method for a custom path with all parameters") { + val (client, echo) = testClient() + val future = client.customDelete[JObject]( + path = "/test/all", + parameters = Some(Map("query" -> "parameters")) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/all") + assert(res.method == "DELETE") + assert(res.body.isEmpty) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("allow get method for a custom path with minimal parameters") { + val (client, echo) = testClient() + val future = client.customGet[JObject]( + path = "/test/minimal" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/minimal") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("allow get method for a custom path with all parameters") { + val (client, echo) = testClient() + val future = client.customGet[JObject]( + path = "/test/all", + parameters = Some(Map("query" -> "parameters")) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/all") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("allow post method for a custom path with minimal parameters") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/minimal" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/minimal") + assert(res.method == "POST") + val expectedBody = parse("""{}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("allow post method for a custom path with all parameters") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/all", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("body", JString("parameters"))))) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/all") + assert(res.method == "POST") + val expectedBody = parse("""{"body":"parameters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions can override default query parameters") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("query", "myQueryParameter") + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"myQueryParameter"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions merges query parameters with default ones") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("query2", "myQueryParameter") + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","query2":"myQueryParameter"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions can override default headers") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withHeader("x-algolia-api-key", "myApiKey") + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + val expectedHeaders = parse("""{"x-algolia-api-key":"myApiKey"}""").asInstanceOf[JObject].obj.toMap + val actualHeaders = res.headers + for ((k, v) <- expectedHeaders) { + assert(actualHeaders.contains(k)) + assert(actualHeaders(k) == v.asInstanceOf[JString].s) + } + } + + test("requestOptions merges headers with default ones") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withHeader("x-algolia-api-key", "myApiKey") + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + val expectedHeaders = parse("""{"x-algolia-api-key":"myApiKey"}""").asInstanceOf[JObject].obj.toMap + val actualHeaders = res.headers + for ((k, v) <- expectedHeaders) { + assert(actualHeaders.contains(k)) + assert(actualHeaders(k) == v.asInstanceOf[JString].s) + } + } + + test("requestOptions queryParameters accepts booleans") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("isItWorking", true) + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","isItWorking":"true"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions queryParameters accepts integers") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("myParam", 2) + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","myParam":"2"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions queryParameters accepts list of string") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("myParam", Seq("c", "d")) + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","myParam":"c,d"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions queryParameters accepts list of booleans") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("myParam", Seq(true, true, false)) + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","myParam":"true,true,false"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions queryParameters accepts list of integers") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("myParam", Seq(1, 2)) + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","myParam":"1,2"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("allow put method for a custom path with minimal parameters") { + val (client, echo) = testClient() + val future = client.customPut[JObject]( + path = "/test/minimal" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/minimal") + assert(res.method == "PUT") + val expectedBody = parse("""{}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("allow put method for a custom path with all parameters") { + val (client, echo) = testClient() + val future = client.customPut[JObject]( + path = "/test/all", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("body", JString("parameters"))))) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/all") + assert(res.method == "PUT") + val expectedBody = parse("""{"body":"parameters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("get getAverageClickPosition with minimal parameters") { + val (client, echo) = testClient() + val future = client.getAverageClickPosition( + index = "index" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/2/clicks/averageClickPosition") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = parse("""{"index":"index"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("get getAverageClickPosition with all parameters") { + val (client, echo) = testClient() + val future = client.getAverageClickPosition( + index = "index", + startDate = Some("1999-09-19"), + endDate = Some("2001-01-01"), + tags = Some("tag") + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/2/clicks/averageClickPosition") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = parse("""{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}""") + .asInstanceOf[JObject] + .obj + .toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("get getClickPositions with minimal parameters") { + val (client, echo) = testClient() + val future = client.getClickPositions( + index = "index" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/2/clicks/positions") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = parse("""{"index":"index"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("get getClickPositions with all parameters") { + val (client, echo) = testClient() + val future = client.getClickPositions( + index = "index", + startDate = Some("1999-09-19"), + endDate = Some("2001-01-01"), + tags = Some("tag") + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/2/clicks/positions") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = parse("""{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}""") + .asInstanceOf[JObject] + .obj + .toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("get getClickThroughRate with minimal parameters") { + val (client, echo) = testClient() + val future = client.getClickThroughRate( + index = "index" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/2/clicks/clickThroughRate") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = parse("""{"index":"index"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("get getClickThroughRate with all parameters") { + val (client, echo) = testClient() + val future = client.getClickThroughRate( + index = "index", + startDate = Some("1999-09-19"), + endDate = Some("2001-01-01"), + tags = Some("tag") + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/2/clicks/clickThroughRate") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = parse("""{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}""") + .asInstanceOf[JObject] + .obj + .toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("get getConversationRate with minimal parameters") { + val (client, echo) = testClient() + val future = client.getConversationRate( + index = "index" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/2/conversions/conversionRate") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = parse("""{"index":"index"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("get getConversationRate with all parameters") { + val (client, echo) = testClient() + val future = client.getConversationRate( + index = "index", + startDate = Some("1999-09-19"), + endDate = Some("2001-01-01"), + tags = Some("tag") + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/2/conversions/conversionRate") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = parse("""{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}""") + .asInstanceOf[JObject] + .obj + .toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("get getNoClickRate with minimal parameters") { + val (client, echo) = testClient() + val future = client.getNoClickRate( + index = "index" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/2/searches/noClickRate") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = parse("""{"index":"index"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("get getNoClickRate with all parameters") { + val (client, echo) = testClient() + val future = client.getNoClickRate( + index = "index", + startDate = Some("1999-09-19"), + endDate = Some("2001-01-01"), + tags = Some("tag") + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/2/searches/noClickRate") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = parse("""{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}""") + .asInstanceOf[JObject] + .obj + .toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("get getNoResultsRate with minimal parameters") { + val (client, echo) = testClient() + val future = client.getNoResultsRate( + index = "index" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/2/searches/noResultRate") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = parse("""{"index":"index"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("get getNoResultsRate with all parameters") { + val (client, echo) = testClient() + val future = client.getNoResultsRate( + index = "index", + startDate = Some("1999-09-19"), + endDate = Some("2001-01-01"), + tags = Some("tag") + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/2/searches/noResultRate") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = parse("""{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}""") + .asInstanceOf[JObject] + .obj + .toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("get getSearchesCount with minimal parameters") { + val (client, echo) = testClient() + val future = client.getSearchesCount( + index = "index" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/2/searches/count") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = parse("""{"index":"index"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("get getSearchesCount with all parameters") { + val (client, echo) = testClient() + val future = client.getSearchesCount( + index = "index", + startDate = Some("1999-09-19"), + endDate = Some("2001-01-01"), + tags = Some("tag") + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/2/searches/count") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = parse("""{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}""") + .asInstanceOf[JObject] + .obj + .toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("get getSearchesNoClicks with minimal parameters") { + val (client, echo) = testClient() + val future = client.getSearchesNoClicks( + index = "index" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/2/searches/noClicks") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = parse("""{"index":"index"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("get getSearchesNoClicks with all parameters") { + val (client, echo) = testClient() + val future = client.getSearchesNoClicks( + index = "index", + startDate = Some("1999-09-19"), + endDate = Some("2001-01-01"), + limit = Some(21), + offset = Some(42), + tags = Some("tag") + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/2/searches/noClicks") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = parse( + """{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}""" + ).asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("get getSearchesNoResults with minimal parameters") { + val (client, echo) = testClient() + val future = client.getSearchesNoResults( + index = "index" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/2/searches/noResults") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = parse("""{"index":"index"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("get getSearchesNoResults with all parameters") { + val (client, echo) = testClient() + val future = client.getSearchesNoResults( + index = "index", + startDate = Some("1999-09-19"), + endDate = Some("2001-01-01"), + limit = Some(21), + offset = Some(42), + tags = Some("tag") + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/2/searches/noResults") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = parse( + """{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}""" + ).asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("get getStatus with minimal parameters") { + val (client, echo) = testClient() + val future = client.getStatus( + index = "index" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/2/status") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = parse("""{"index":"index"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("get getTopCountries with minimal parameters") { + val (client, echo) = testClient() + val future = client.getTopCountries( + index = "index" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/2/countries") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = parse("""{"index":"index"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("get getTopCountries with all parameters") { + val (client, echo) = testClient() + val future = client.getTopCountries( + index = "index", + startDate = Some("1999-09-19"), + endDate = Some("2001-01-01"), + limit = Some(21), + offset = Some(42), + tags = Some("tag") + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/2/countries") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = parse( + """{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}""" + ).asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("get getTopFilterAttributes with minimal parameters") { + val (client, echo) = testClient() + val future = client.getTopFilterAttributes( + index = "index" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/2/filters") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = parse("""{"index":"index"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("get getTopFilterAttributes with all parameters") { + val (client, echo) = testClient() + val future = client.getTopFilterAttributes( + index = "index", + search = Some("mySearch"), + startDate = Some("1999-09-19"), + endDate = Some("2001-01-01"), + limit = Some(21), + offset = Some(42), + tags = Some("tag") + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/2/filters") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = parse( + """{"index":"index","search":"mySearch","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}""" + ).asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("get getTopFilterForAttribute with minimal parameters") { + val (client, echo) = testClient() + val future = client.getTopFilterForAttribute( + attribute = "myAttribute", + index = "index" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/2/filters/myAttribute") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = parse("""{"index":"index"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("get getTopFilterForAttribute with minimal parameters and multiple attributes") { + val (client, echo) = testClient() + val future = client.getTopFilterForAttribute( + attribute = "myAttribute1,myAttribute2", + index = "index" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/2/filters/myAttribute1%2CmyAttribute2") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = parse("""{"index":"index"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("get getTopFilterForAttribute with all parameters") { + val (client, echo) = testClient() + val future = client.getTopFilterForAttribute( + attribute = "myAttribute", + index = "index", + search = Some("mySearch"), + startDate = Some("1999-09-19"), + endDate = Some("2001-01-01"), + limit = Some(21), + offset = Some(42), + tags = Some("tag") + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/2/filters/myAttribute") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = parse( + """{"index":"index","search":"mySearch","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}""" + ).asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("get getTopFilterForAttribute with all parameters and multiple attributes") { + val (client, echo) = testClient() + val future = client.getTopFilterForAttribute( + attribute = "myAttribute1,myAttribute2", + index = "index", + search = Some("mySearch"), + startDate = Some("1999-09-19"), + endDate = Some("2001-01-01"), + limit = Some(21), + offset = Some(42), + tags = Some("tag") + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/2/filters/myAttribute1%2CmyAttribute2") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = parse( + """{"index":"index","search":"mySearch","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}""" + ).asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("get getTopFiltersNoResults with minimal parameters") { + val (client, echo) = testClient() + val future = client.getTopFiltersNoResults( + index = "index" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/2/filters/noResults") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = parse("""{"index":"index"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("get getTopFiltersNoResults with all parameters") { + val (client, echo) = testClient() + val future = client.getTopFiltersNoResults( + index = "index", + search = Some("mySearch"), + startDate = Some("1999-09-19"), + endDate = Some("2001-01-01"), + limit = Some(21), + offset = Some(42), + tags = Some("tag") + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/2/filters/noResults") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = parse( + """{"index":"index","search":"mySearch","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}""" + ).asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("get getTopHits with minimal parameters") { + val (client, echo) = testClient() + val future = client.getTopHits( + index = "index" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/2/hits") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = parse("""{"index":"index"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("get getTopHits with all parameters") { + val (client, echo) = testClient() + val future = client.getTopHits( + index = "index", + search = Some("mySearch"), + clickAnalytics = Some(true), + startDate = Some("1999-09-19"), + endDate = Some("2001-01-01"), + limit = Some(21), + offset = Some(42), + tags = Some("tag") + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/2/hits") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = parse( + """{"index":"index","search":"mySearch","clickAnalytics":"true","startDate":"1999-09-19","endDate":"2001-01-01","limit":"21","offset":"42","tags":"tag"}""" + ).asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("get getTopSearches with minimal parameters") { + val (client, echo) = testClient() + val future = client.getTopSearches( + index = "index" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/2/searches") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = parse("""{"index":"index"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("get getTopSearches with all parameters") { + val (client, echo) = testClient() + val future = client.getTopSearches( + index = "index", + clickAnalytics = Some(true), + startDate = Some("1999-09-19"), + endDate = Some("2001-01-01"), + orderBy = Some(OrderBy.withName("searchCount")), + direction = Some(Direction.withName("asc")), + limit = Some(21), + offset = Some(42), + tags = Some("tag") + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/2/searches") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = parse( + """{"index":"index","clickAnalytics":"true","startDate":"1999-09-19","endDate":"2001-01-01","orderBy":"searchCount","direction":"asc","limit":"21","offset":"42","tags":"tag"}""" + ).asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("get getUsersCount with minimal parameters") { + val (client, echo) = testClient() + val future = client.getUsersCount( + index = "index" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/2/users/count") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = parse("""{"index":"index"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("get getUsersCount with all parameters") { + val (client, echo) = testClient() + val future = client.getUsersCount( + index = "index", + startDate = Some("1999-09-19"), + endDate = Some("2001-01-01"), + tags = Some("tag") + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/2/users/count") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = parse("""{"index":"index","startDate":"1999-09-19","endDate":"2001-01-01","tags":"tag"}""") + .asInstanceOf[JObject] + .obj + .toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + +} diff --git a/tests/output/scala/src/test/scala/algoliasearch/requests/IngestionTest.scala b/tests/output/scala/src/test/scala/algoliasearch/requests/IngestionTest.scala new file mode 100644 index 0000000000..569dfa8076 --- /dev/null +++ b/tests/output/scala/src/test/scala/algoliasearch/requests/IngestionTest.scala @@ -0,0 +1,1100 @@ +package algoliasearch.methods.requests + +import algoliasearch.EchoInterceptor +import algoliasearch.api.IngestionClient +import algoliasearch.config.* +import algoliasearch.ingestion.* +import org.json4s.* +import org.json4s.native.JsonParser.* +import org.scalatest.funsuite.AnyFunSuite + +import scala.concurrent.duration.Duration +import scala.concurrent.{Await, ExecutionContextExecutor} + +class IngestionTest extends AnyFunSuite { + implicit val ec: ExecutionContextExecutor = scala.concurrent.ExecutionContext.global + implicit val formats: Formats = org.json4s.DefaultFormats + + def testClient(): (IngestionClient, EchoInterceptor) = { + val echo = EchoInterceptor() + ( + IngestionClient( + appId = "appId", + apiKey = "apiKey", + region = "us", + clientOptions = ClientOptions + .builder() + .withRequesterConfig(requester => requester.withInterceptor(echo)) + .build() + ), + echo + ) + } + + test("createAuthenticationOAuth") { + val (client, echo) = testClient() + val future = client.createAuthentication( + authenticationCreate = AuthenticationCreate( + `type` = AuthenticationType.withName("oauth"), + name = "authName", + input = AuthOAuth( + url = "http://test.oauth", + client_id = "myID", + client_secret = "mySecret" + ) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/authentications") + assert(res.method == "POST") + val expectedBody = parse( + """{"type":"oauth","name":"authName","input":{"url":"http://test.oauth","client_id":"myID","client_secret":"mySecret"}}""" + ) + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("createAuthenticationAlgolia") { + val (client, echo) = testClient() + val future = client.createAuthentication( + authenticationCreate = AuthenticationCreate( + `type` = AuthenticationType.withName("algolia"), + name = "authName", + input = AuthAlgolia( + appID = "myappID", + apiKey = "randomApiKey" + ) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/authentications") + assert(res.method == "POST") + val expectedBody = + parse("""{"type":"algolia","name":"authName","input":{"appID":"myappID","apiKey":"randomApiKey"}}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("createDestination") { + val (client, echo) = testClient() + val future = client.createDestination( + destinationCreate = DestinationCreate( + `type` = DestinationType.withName("search"), + name = "destinationName", + input = DestinationIndexPrefix( + indexPrefix = "prefix_" + ), + authenticationID = Some("6c02aeb1-775e-418e-870b-1faccd4b2c0f") + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/destinations") + assert(res.method == "POST") + val expectedBody = parse( + """{"type":"search","name":"destinationName","input":{"indexPrefix":"prefix_"},"authenticationID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}""" + ) + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("createSource") { + val (client, echo) = testClient() + val future = client.createSource( + sourceCreate = SourceCreate( + `type` = SourceType.withName("commercetools"), + name = "sourceName", + input = SourceCommercetools( + storeKeys = Some(Seq("myStore")), + locales = Some(Seq("de")), + url = "http://commercetools.com", + projectKey = "keyID" + ), + authenticationID = Some("6c02aeb1-775e-418e-870b-1faccd4b2c0f") + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/sources") + assert(res.method == "POST") + val expectedBody = parse( + """{"type":"commercetools","name":"sourceName","input":{"storeKeys":["myStore"],"locales":["de"],"url":"http://commercetools.com","projectKey":"keyID"},"authenticationID":"6c02aeb1-775e-418e-870b-1faccd4b2c0f"}""" + ) + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("createTaskOnDemand") { + val (client, echo) = testClient() + val future = client.createTask( + taskCreate = TaskCreate( + sourceID = "search", + destinationID = "destinationName", + trigger = OnDemandTriggerInput( + `type` = OnDemandTriggerType.withName("onDemand") + ), + action = ActionType.withName("replace") + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/tasks") + assert(res.method == "POST") + val expectedBody = parse( + """{"sourceID":"search","destinationID":"destinationName","trigger":{"type":"onDemand"},"action":"replace"}""" + ) + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("createTaskSchedule") { + val (client, echo) = testClient() + val future = client.createTask( + taskCreate = TaskCreate( + sourceID = "search", + destinationID = "destinationName", + trigger = ScheduleTriggerInput( + `type` = ScheduleTriggerType.withName("schedule"), + cron = "* * * * *" + ), + action = ActionType.withName("replace") + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/tasks") + assert(res.method == "POST") + val expectedBody = parse( + """{"sourceID":"search","destinationID":"destinationName","trigger":{"type":"schedule","cron":"* * * * *"},"action":"replace"}""" + ) + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("createTaskSubscription") { + val (client, echo) = testClient() + val future = client.createTask( + taskCreate = TaskCreate( + sourceID = "search", + destinationID = "destinationName", + trigger = OnDemandTriggerInput( + `type` = OnDemandTriggerType.withName("onDemand") + ), + action = ActionType.withName("replace") + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/tasks") + assert(res.method == "POST") + val expectedBody = parse( + """{"sourceID":"search","destinationID":"destinationName","trigger":{"type":"onDemand"},"action":"replace"}""" + ) + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("allow del method for a custom path with minimal parameters") { + val (client, echo) = testClient() + val future = client.customDelete[JObject]( + path = "/test/minimal" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/minimal") + assert(res.method == "DELETE") + assert(res.body.isEmpty) + } + + test("allow del method for a custom path with all parameters") { + val (client, echo) = testClient() + val future = client.customDelete[JObject]( + path = "/test/all", + parameters = Some(Map("query" -> "parameters")) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/all") + assert(res.method == "DELETE") + assert(res.body.isEmpty) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("allow get method for a custom path with minimal parameters") { + val (client, echo) = testClient() + val future = client.customGet[JObject]( + path = "/test/minimal" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/minimal") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("allow get method for a custom path with all parameters") { + val (client, echo) = testClient() + val future = client.customGet[JObject]( + path = "/test/all", + parameters = Some(Map("query" -> "parameters")) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/all") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("allow post method for a custom path with minimal parameters") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/minimal" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/minimal") + assert(res.method == "POST") + val expectedBody = parse("""{}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("allow post method for a custom path with all parameters") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/all", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("body", JString("parameters"))))) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/all") + assert(res.method == "POST") + val expectedBody = parse("""{"body":"parameters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions can override default query parameters") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("query", "myQueryParameter") + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"myQueryParameter"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions merges query parameters with default ones") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("query2", "myQueryParameter") + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","query2":"myQueryParameter"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions can override default headers") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withHeader("x-algolia-api-key", "myApiKey") + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + val expectedHeaders = parse("""{"x-algolia-api-key":"myApiKey"}""").asInstanceOf[JObject].obj.toMap + val actualHeaders = res.headers + for ((k, v) <- expectedHeaders) { + assert(actualHeaders.contains(k)) + assert(actualHeaders(k) == v.asInstanceOf[JString].s) + } + } + + test("requestOptions merges headers with default ones") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withHeader("x-algolia-api-key", "myApiKey") + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + val expectedHeaders = parse("""{"x-algolia-api-key":"myApiKey"}""").asInstanceOf[JObject].obj.toMap + val actualHeaders = res.headers + for ((k, v) <- expectedHeaders) { + assert(actualHeaders.contains(k)) + assert(actualHeaders(k) == v.asInstanceOf[JString].s) + } + } + + test("requestOptions queryParameters accepts booleans") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("isItWorking", true) + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","isItWorking":"true"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions queryParameters accepts integers") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("myParam", 2) + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","myParam":"2"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions queryParameters accepts list of string") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("myParam", Seq("c", "d")) + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","myParam":"c,d"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions queryParameters accepts list of booleans") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("myParam", Seq(true, true, false)) + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","myParam":"true,true,false"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions queryParameters accepts list of integers") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("myParam", Seq(1, 2)) + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","myParam":"1,2"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("allow put method for a custom path with minimal parameters") { + val (client, echo) = testClient() + val future = client.customPut[JObject]( + path = "/test/minimal" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/minimal") + assert(res.method == "PUT") + val expectedBody = parse("""{}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("allow put method for a custom path with all parameters") { + val (client, echo) = testClient() + val future = client.customPut[JObject]( + path = "/test/all", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("body", JString("parameters"))))) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/all") + assert(res.method == "PUT") + val expectedBody = parse("""{"body":"parameters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("deleteAuthentication") { + val (client, echo) = testClient() + val future = client.deleteAuthentication( + authenticationID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/authentications/6c02aeb1-775e-418e-870b-1faccd4b2c0f") + assert(res.method == "DELETE") + assert(res.body.isEmpty) + } + + test("deleteDestination") { + val (client, echo) = testClient() + val future = client.deleteDestination( + destinationID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/destinations/6c02aeb1-775e-418e-870b-1faccd4b2c0f") + assert(res.method == "DELETE") + assert(res.body.isEmpty) + } + + test("deleteSource") { + val (client, echo) = testClient() + val future = client.deleteSource( + sourceID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f") + assert(res.method == "DELETE") + assert(res.body.isEmpty) + } + + test("deleteTask") { + val (client, echo) = testClient() + val future = client.deleteTask( + taskID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f") + assert(res.method == "DELETE") + assert(res.body.isEmpty) + } + + test("disableTask") { + val (client, echo) = testClient() + val future = client.disableTask( + taskID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f/disable") + assert(res.method == "PUT") + assert(res.body.contains("{}")) + } + + test("enableTask") { + val (client, echo) = testClient() + val future = client.enableTask( + taskID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f/enable") + assert(res.method == "PUT") + assert(res.body.contains("{}")) + } + + test("getAuthentication") { + val (client, echo) = testClient() + val future = client.getAuthentication( + authenticationID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/authentications/6c02aeb1-775e-418e-870b-1faccd4b2c0f") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("getAuthentications") { + val (client, echo) = testClient() + val future = client.getAuthentications( + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/authentications") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("getDestination") { + val (client, echo) = testClient() + val future = client.getDestination( + destinationID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/destinations/6c02aeb1-775e-418e-870b-1faccd4b2c0f") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("getDestinations") { + val (client, echo) = testClient() + val future = client.getDestinations( + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/destinations") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("getDockerSourceStreams") { + val (client, echo) = testClient() + val future = client.getDockerSourceStreams( + sourceID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f/discover") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("getEvent") { + val (client, echo) = testClient() + val future = client.getEvent( + runID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", + eventID = "6c02aeb1-775e-418e-870b-1faccd4b2c0c" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/runs/6c02aeb1-775e-418e-870b-1faccd4b2c0f/events/6c02aeb1-775e-418e-870b-1faccd4b2c0c") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("getEvents") { + val (client, echo) = testClient() + val future = client.getEvents( + runID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/runs/6c02aeb1-775e-418e-870b-1faccd4b2c0f/events") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("getRun") { + val (client, echo) = testClient() + val future = client.getRun( + runID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/runs/6c02aeb1-775e-418e-870b-1faccd4b2c0f") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("getRuns") { + val (client, echo) = testClient() + val future = client.getRuns( + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/runs") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("getSource") { + val (client, echo) = testClient() + val future = client.getSource( + sourceID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("getSources") { + val (client, echo) = testClient() + val future = client.getSources( + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/sources") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("getTask") { + val (client, echo) = testClient() + val future = client.getTask( + taskID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("getTasks") { + val (client, echo) = testClient() + val future = client.getTasks( + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/tasks") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("runTask") { + val (client, echo) = testClient() + val future = client.runTask( + taskID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f/run") + assert(res.method == "POST") + assert(res.body.contains("{}")) + } + + test("searchAuthentications") { + val (client, echo) = testClient() + val future = client.searchAuthentications( + authenticationSearch = AuthenticationSearch( + authenticationIDs = Seq("6c02aeb1-775e-418e-870b-1faccd4b2c0f", "947ac9c4-7e58-4c87-b1e7-14a68e99699a") + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/authentications/search") + assert(res.method == "POST") + val expectedBody = + parse("""{"authenticationIDs":["6c02aeb1-775e-418e-870b-1faccd4b2c0f","947ac9c4-7e58-4c87-b1e7-14a68e99699a"]}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("searchDestinations") { + val (client, echo) = testClient() + val future = client.searchDestinations( + destinationSearch = DestinationSearch( + destinationIDs = Seq("6c02aeb1-775e-418e-870b-1faccd4b2c0f", "947ac9c4-7e58-4c87-b1e7-14a68e99699a") + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/destinations/search") + assert(res.method == "POST") + val expectedBody = + parse("""{"destinationIDs":["6c02aeb1-775e-418e-870b-1faccd4b2c0f","947ac9c4-7e58-4c87-b1e7-14a68e99699a"]}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("searchSources") { + val (client, echo) = testClient() + val future = client.searchSources( + sourceSearch = SourceSearch( + sourceIDs = Seq("6c02aeb1-775e-418e-870b-1faccd4b2c0f", "947ac9c4-7e58-4c87-b1e7-14a68e99699a") + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/sources/search") + assert(res.method == "POST") + val expectedBody = + parse("""{"sourceIDs":["6c02aeb1-775e-418e-870b-1faccd4b2c0f","947ac9c4-7e58-4c87-b1e7-14a68e99699a"]}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("searchTasks") { + val (client, echo) = testClient() + val future = client.searchTasks( + taskSearch = TaskSearch( + taskIDs = Seq("6c02aeb1-775e-418e-870b-1faccd4b2c0f", "947ac9c4-7e58-4c87-b1e7-14a68e99699a") + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/tasks/search") + assert(res.method == "POST") + val expectedBody = + parse("""{"taskIDs":["6c02aeb1-775e-418e-870b-1faccd4b2c0f","947ac9c4-7e58-4c87-b1e7-14a68e99699a"]}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("triggerDockerSourceDiscover") { + val (client, echo) = testClient() + val future = client.triggerDockerSourceDiscover( + sourceID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f/discover") + assert(res.method == "POST") + assert(res.body.contains("{}")) + } + + test("updateAuthentication") { + val (client, echo) = testClient() + val future = client.updateAuthentication( + authenticationID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", + authenticationUpdate = AuthenticationUpdate( + name = Some("newName") + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/authentications/6c02aeb1-775e-418e-870b-1faccd4b2c0f") + assert(res.method == "PATCH") + val expectedBody = parse("""{"name":"newName"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("updateDestination") { + val (client, echo) = testClient() + val future = client.updateDestination( + destinationID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", + destinationUpdate = DestinationUpdate( + name = Some("newName") + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/destinations/6c02aeb1-775e-418e-870b-1faccd4b2c0f") + assert(res.method == "PATCH") + val expectedBody = parse("""{"name":"newName"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("updateSource") { + val (client, echo) = testClient() + val future = client.updateSource( + sourceID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", + sourceUpdate = SourceUpdate( + name = Some("newName") + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/sources/6c02aeb1-775e-418e-870b-1faccd4b2c0f") + assert(res.method == "PATCH") + val expectedBody = parse("""{"name":"newName"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("updateTask") { + val (client, echo) = testClient() + val future = client.updateTask( + taskID = "6c02aeb1-775e-418e-870b-1faccd4b2c0f", + taskUpdate = TaskUpdate( + enabled = Some(false) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/tasks/6c02aeb1-775e-418e-870b-1faccd4b2c0f") + assert(res.method == "PATCH") + val expectedBody = parse("""{"enabled":false}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + +} diff --git a/tests/output/scala/src/test/scala/algoliasearch/requests/InsightsTest.scala b/tests/output/scala/src/test/scala/algoliasearch/requests/InsightsTest.scala new file mode 100644 index 0000000000..272633b539 --- /dev/null +++ b/tests/output/scala/src/test/scala/algoliasearch/requests/InsightsTest.scala @@ -0,0 +1,659 @@ +package algoliasearch.methods.requests + +import algoliasearch.EchoInterceptor +import algoliasearch.api.InsightsClient +import algoliasearch.config.* +import algoliasearch.insights.* +import org.json4s.* +import org.json4s.native.JsonParser.* +import org.scalatest.funsuite.AnyFunSuite + +import scala.concurrent.duration.Duration +import scala.concurrent.{Await, ExecutionContextExecutor} + +class InsightsTest extends AnyFunSuite { + implicit val ec: ExecutionContextExecutor = scala.concurrent.ExecutionContext.global + implicit val formats: Formats = org.json4s.DefaultFormats + + def testClient(): (InsightsClient, EchoInterceptor) = { + val echo = EchoInterceptor() + ( + InsightsClient( + appId = "appId", + apiKey = "apiKey", + region = Some("us"), + clientOptions = ClientOptions + .builder() + .withRequesterConfig(requester => requester.withInterceptor(echo)) + .build() + ), + echo + ) + } + + test("allow del method for a custom path with minimal parameters") { + val (client, echo) = testClient() + val future = client.customDelete[JObject]( + path = "/test/minimal" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/minimal") + assert(res.method == "DELETE") + assert(res.body.isEmpty) + } + + test("allow del method for a custom path with all parameters") { + val (client, echo) = testClient() + val future = client.customDelete[JObject]( + path = "/test/all", + parameters = Some(Map("query" -> "parameters")) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/all") + assert(res.method == "DELETE") + assert(res.body.isEmpty) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("allow get method for a custom path with minimal parameters") { + val (client, echo) = testClient() + val future = client.customGet[JObject]( + path = "/test/minimal" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/minimal") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("allow get method for a custom path with all parameters") { + val (client, echo) = testClient() + val future = client.customGet[JObject]( + path = "/test/all", + parameters = Some(Map("query" -> "parameters")) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/all") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("allow post method for a custom path with minimal parameters") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/minimal" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/minimal") + assert(res.method == "POST") + val expectedBody = parse("""{}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("allow post method for a custom path with all parameters") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/all", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("body", JString("parameters"))))) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/all") + assert(res.method == "POST") + val expectedBody = parse("""{"body":"parameters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions can override default query parameters") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("query", "myQueryParameter") + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"myQueryParameter"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions merges query parameters with default ones") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("query2", "myQueryParameter") + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","query2":"myQueryParameter"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions can override default headers") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withHeader("x-algolia-api-key", "myApiKey") + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + val expectedHeaders = parse("""{"x-algolia-api-key":"myApiKey"}""").asInstanceOf[JObject].obj.toMap + val actualHeaders = res.headers + for ((k, v) <- expectedHeaders) { + assert(actualHeaders.contains(k)) + assert(actualHeaders(k) == v.asInstanceOf[JString].s) + } + } + + test("requestOptions merges headers with default ones") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withHeader("x-algolia-api-key", "myApiKey") + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + val expectedHeaders = parse("""{"x-algolia-api-key":"myApiKey"}""").asInstanceOf[JObject].obj.toMap + val actualHeaders = res.headers + for ((k, v) <- expectedHeaders) { + assert(actualHeaders.contains(k)) + assert(actualHeaders(k) == v.asInstanceOf[JString].s) + } + } + + test("requestOptions queryParameters accepts booleans") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("isItWorking", true) + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","isItWorking":"true"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions queryParameters accepts integers") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("myParam", 2) + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","myParam":"2"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions queryParameters accepts list of string") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("myParam", Seq("c", "d")) + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","myParam":"c,d"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions queryParameters accepts list of booleans") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("myParam", Seq(true, true, false)) + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","myParam":"true,true,false"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions queryParameters accepts list of integers") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("myParam", Seq(1, 2)) + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","myParam":"1,2"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("allow put method for a custom path with minimal parameters") { + val (client, echo) = testClient() + val future = client.customPut[JObject]( + path = "/test/minimal" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/minimal") + assert(res.method == "PUT") + val expectedBody = parse("""{}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("allow put method for a custom path with all parameters") { + val (client, echo) = testClient() + val future = client.customPut[JObject]( + path = "/test/all", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("body", JString("parameters"))))) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/all") + assert(res.method == "PUT") + val expectedBody = parse("""{"body":"parameters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("pushEvents0") { + val (client, echo) = testClient() + val future = client.pushEvents( + insightsEvents = InsightsEvents( + events = Seq( + ClickedObjectIDsAfterSearch( + eventType = ClickEvent.withName("click"), + eventName = "Product Clicked", + index = "products", + userToken = "user-123456", + authenticatedUserToken = Some("user-123456"), + timestamp = Some(1641290601962L), + objectIDs = Seq("9780545139700", "9780439784542"), + queryID = "43b15df305339e827f0ac0bdc5ebcaa7", + positions = Seq(7, 6) + ) + ) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/events") + assert(res.method == "POST") + val expectedBody = parse( + """{"events":[{"eventType":"click","eventName":"Product Clicked","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"queryID":"43b15df305339e827f0ac0bdc5ebcaa7","positions":[7,6]}]}""" + ) + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("Many events type") { + val (client, echo) = testClient() + val future = client.pushEvents( + insightsEvents = InsightsEvents( + events = Seq( + ConvertedObjectIDsAfterSearch( + eventType = ConversionEvent.withName("conversion"), + eventName = "Product Purchased", + index = "products", + userToken = "user-123456", + authenticatedUserToken = Some("user-123456"), + timestamp = Some(1641290601962L), + objectIDs = Seq("9780545139700", "9780439784542"), + queryID = "43b15df305339e827f0ac0bdc5ebcaa7" + ), + ViewedObjectIDs( + eventType = ViewEvent.withName("view"), + eventName = "Product Detail Page Viewed", + index = "products", + userToken = "user-123456", + authenticatedUserToken = Some("user-123456"), + timestamp = Some(1641290601962L), + objectIDs = Seq("9780545139700", "9780439784542") + ) + ) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/events") + assert(res.method == "POST") + val expectedBody = parse( + """{"events":[{"eventType":"conversion","eventName":"Product Purchased","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"queryID":"43b15df305339e827f0ac0bdc5ebcaa7"},{"eventType":"view","eventName":"Product Detail Page Viewed","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"]}]}""" + ) + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("ConvertedObjectIDsAfterSearch") { + val (client, echo) = testClient() + val future = client.pushEvents( + insightsEvents = InsightsEvents( + events = Seq( + ConvertedObjectIDsAfterSearch( + eventType = ConversionEvent.withName("conversion"), + eventName = "Product Purchased", + index = "products", + userToken = "user-123456", + authenticatedUserToken = Some("user-123456"), + timestamp = Some(1641290601962L), + objectIDs = Seq("9780545139700", "9780439784542"), + queryID = "43b15df305339e827f0ac0bdc5ebcaa7" + ) + ) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/events") + assert(res.method == "POST") + val expectedBody = parse( + """{"events":[{"eventType":"conversion","eventName":"Product Purchased","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"queryID":"43b15df305339e827f0ac0bdc5ebcaa7"}]}""" + ) + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("ViewedObjectIDs") { + val (client, echo) = testClient() + val future = client.pushEvents( + insightsEvents = InsightsEvents( + events = Seq( + ViewedObjectIDs( + eventType = ViewEvent.withName("view"), + eventName = "Product Detail Page Viewed", + index = "products", + userToken = "user-123456", + authenticatedUserToken = Some("user-123456"), + timestamp = Some(1641290601962L), + objectIDs = Seq("9780545139700", "9780439784542") + ) + ) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/events") + assert(res.method == "POST") + val expectedBody = parse( + """{"events":[{"eventType":"view","eventName":"Product Detail Page Viewed","index":"products","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"]}]}""" + ) + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("AddedToCartObjectIDs") { + val (client, echo) = testClient() + val future = client.pushEvents( + insightsEvents = InsightsEvents( + events = Seq( + AddedToCartObjectIDsAfterSearch( + eventType = ConversionEvent.withName("conversion"), + eventSubtype = AddToCartEvent.withName("addToCart"), + eventName = "Product Added To Cart", + index = "products", + queryID = "43b15df305339e827f0ac0bdc5ebcaa7", + userToken = "user-123456", + authenticatedUserToken = Some("user-123456"), + timestamp = Some(1641290601962L), + objectIDs = Seq("9780545139700", "9780439784542"), + objectData = Some( + Seq( + ObjectDataAfterSearch( + price = Some(Price(19.99)), + quantity = Some(10), + discount = Some(Discount(2.5)) + ), + ObjectDataAfterSearch( + price = Some(Price("8$")), + quantity = Some(7), + discount = Some(Discount("30%")) + ) + ) + ), + currency = Some("USD") + ) + ) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/events") + assert(res.method == "POST") + val expectedBody = parse( + """{"events":[{"eventType":"conversion","eventSubtype":"addToCart","eventName":"Product Added To Cart","index":"products","queryID":"43b15df305339e827f0ac0bdc5ebcaa7","userToken":"user-123456","authenticatedUserToken":"user-123456","timestamp":1641290601962,"objectIDs":["9780545139700","9780439784542"],"objectData":[{"price":19.99,"quantity":10,"discount":2.5},{"price":"8$","quantity":7,"discount":"30%"}],"currency":"USD"}]}""" + ) + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + +} diff --git a/tests/output/scala/src/test/scala/algoliasearch/requests/MonitoringTest.scala b/tests/output/scala/src/test/scala/algoliasearch/requests/MonitoringTest.scala new file mode 100644 index 0000000000..74f6e2d2d0 --- /dev/null +++ b/tests/output/scala/src/test/scala/algoliasearch/requests/MonitoringTest.scala @@ -0,0 +1,602 @@ +package algoliasearch.methods.requests + +import algoliasearch.EchoInterceptor +import algoliasearch.api.MonitoringClient +import algoliasearch.config.* +import algoliasearch.monitoring.* +import org.json4s.* +import org.json4s.native.JsonParser.* +import org.scalatest.funsuite.AnyFunSuite + +import scala.concurrent.duration.Duration +import scala.concurrent.{Await, ExecutionContextExecutor} + +class MonitoringTest extends AnyFunSuite { + implicit val ec: ExecutionContextExecutor = scala.concurrent.ExecutionContext.global + implicit val formats: Formats = org.json4s.DefaultFormats + + def testClient(): (MonitoringClient, EchoInterceptor) = { + val echo = EchoInterceptor() + ( + MonitoringClient( + appId = "appId", + apiKey = "apiKey", + clientOptions = ClientOptions + .builder() + .withRequesterConfig(requester => requester.withInterceptor(echo)) + .build() + ), + echo + ) + } + + test("allow del method for a custom path with minimal parameters") { + val (client, echo) = testClient() + val future = client.customDelete[JObject]( + path = "/test/minimal" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/minimal") + assert(res.method == "DELETE") + assert(res.body.isEmpty) + } + + test("allow del method for a custom path with all parameters") { + val (client, echo) = testClient() + val future = client.customDelete[JObject]( + path = "/test/all", + parameters = Some(Map("query" -> "parameters")) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/all") + assert(res.method == "DELETE") + assert(res.body.isEmpty) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("allow get method for a custom path with minimal parameters") { + val (client, echo) = testClient() + val future = client.customGet[JObject]( + path = "/test/minimal" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/minimal") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("allow get method for a custom path with all parameters") { + val (client, echo) = testClient() + val future = client.customGet[JObject]( + path = "/test/all", + parameters = Some(Map("query" -> "parameters")) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/all") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("allow post method for a custom path with minimal parameters") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/minimal" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/minimal") + assert(res.method == "POST") + val expectedBody = parse("""{}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("allow post method for a custom path with all parameters") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/all", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("body", JString("parameters"))))) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/all") + assert(res.method == "POST") + val expectedBody = parse("""{"body":"parameters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions can override default query parameters") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("query", "myQueryParameter") + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"myQueryParameter"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions merges query parameters with default ones") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("query2", "myQueryParameter") + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","query2":"myQueryParameter"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions can override default headers") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withHeader("x-algolia-api-key", "myApiKey") + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + val expectedHeaders = parse("""{"x-algolia-api-key":"myApiKey"}""").asInstanceOf[JObject].obj.toMap + val actualHeaders = res.headers + for ((k, v) <- expectedHeaders) { + assert(actualHeaders.contains(k)) + assert(actualHeaders(k) == v.asInstanceOf[JString].s) + } + } + + test("requestOptions merges headers with default ones") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withHeader("x-algolia-api-key", "myApiKey") + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + val expectedHeaders = parse("""{"x-algolia-api-key":"myApiKey"}""").asInstanceOf[JObject].obj.toMap + val actualHeaders = res.headers + for ((k, v) <- expectedHeaders) { + assert(actualHeaders.contains(k)) + assert(actualHeaders(k) == v.asInstanceOf[JString].s) + } + } + + test("requestOptions queryParameters accepts booleans") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("isItWorking", true) + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","isItWorking":"true"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions queryParameters accepts integers") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("myParam", 2) + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","myParam":"2"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions queryParameters accepts list of string") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("myParam", Seq("c", "d")) + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","myParam":"c,d"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions queryParameters accepts list of booleans") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("myParam", Seq(true, true, false)) + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","myParam":"true,true,false"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions queryParameters accepts list of integers") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("myParam", Seq(1, 2)) + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","myParam":"1,2"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("allow put method for a custom path with minimal parameters") { + val (client, echo) = testClient() + val future = client.customPut[JObject]( + path = "/test/minimal" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/minimal") + assert(res.method == "PUT") + val expectedBody = parse("""{}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("allow put method for a custom path with all parameters") { + val (client, echo) = testClient() + val future = client.customPut[JObject]( + path = "/test/all", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("body", JString("parameters"))))) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/all") + assert(res.method == "PUT") + val expectedBody = parse("""{"body":"parameters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("getClusterIncidents") { + val (client, echo) = testClient() + val future = client.getClusterIncidents( + clusters = "c1-de" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/incidents/c1-de") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("getClusterStatus") { + val (client, echo) = testClient() + val future = client.getClusterStatus( + clusters = "c1-de" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/status/c1-de") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("getIncidents") { + val (client, echo) = testClient() + val future = client.getIncidents( + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/incidents") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("getIndexingTime") { + val (client, echo) = testClient() + val future = client.getIndexingTime( + clusters = "c1-de" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexing/c1-de") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("getInventory") { + val (client, echo) = testClient() + val future = client.getInventory( + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/inventory/servers") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("getLatency") { + val (client, echo) = testClient() + val future = client.getLatency( + clusters = "c1-de" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/latency/c1-de") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("getMetrics") { + val (client, echo) = testClient() + val future = client.getMetrics( + metric = Metric.withName("avg_build_time"), + period = Period.withName("minute") + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/infrastructure/avg_build_time/period/minute") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("getReachability") { + val (client, echo) = testClient() + val future = client.getReachability( + clusters = "c1-de" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/reachability/c1-de/probes") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("getStatus") { + val (client, echo) = testClient() + val future = client.getStatus( + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/status") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + +} diff --git a/tests/output/scala/src/test/scala/algoliasearch/requests/PersonalizationTest.scala b/tests/output/scala/src/test/scala/algoliasearch/requests/PersonalizationTest.scala new file mode 100644 index 0000000000..ea04065f12 --- /dev/null +++ b/tests/output/scala/src/test/scala/algoliasearch/requests/PersonalizationTest.scala @@ -0,0 +1,553 @@ +package algoliasearch.methods.requests + +import algoliasearch.EchoInterceptor +import algoliasearch.api.PersonalizationClient +import algoliasearch.config.* +import algoliasearch.personalization.* +import org.json4s.* +import org.json4s.native.JsonParser.* +import org.scalatest.funsuite.AnyFunSuite + +import scala.concurrent.duration.Duration +import scala.concurrent.{Await, ExecutionContextExecutor} + +class PersonalizationTest extends AnyFunSuite { + implicit val ec: ExecutionContextExecutor = scala.concurrent.ExecutionContext.global + implicit val formats: Formats = org.json4s.DefaultFormats + + def testClient(): (PersonalizationClient, EchoInterceptor) = { + val echo = EchoInterceptor() + ( + PersonalizationClient( + appId = "appId", + apiKey = "apiKey", + region = "us", + clientOptions = ClientOptions + .builder() + .withRequesterConfig(requester => requester.withInterceptor(echo)) + .build() + ), + echo + ) + } + + test("allow del method for a custom path with minimal parameters") { + val (client, echo) = testClient() + val future = client.customDelete[JObject]( + path = "/test/minimal" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/minimal") + assert(res.method == "DELETE") + assert(res.body.isEmpty) + } + + test("allow del method for a custom path with all parameters") { + val (client, echo) = testClient() + val future = client.customDelete[JObject]( + path = "/test/all", + parameters = Some(Map("query" -> "parameters")) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/all") + assert(res.method == "DELETE") + assert(res.body.isEmpty) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("allow get method for a custom path with minimal parameters") { + val (client, echo) = testClient() + val future = client.customGet[JObject]( + path = "/test/minimal" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/minimal") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("allow get method for a custom path with all parameters") { + val (client, echo) = testClient() + val future = client.customGet[JObject]( + path = "/test/all", + parameters = Some(Map("query" -> "parameters")) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/all") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("allow post method for a custom path with minimal parameters") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/minimal" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/minimal") + assert(res.method == "POST") + val expectedBody = parse("""{}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("allow post method for a custom path with all parameters") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/all", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("body", JString("parameters"))))) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/all") + assert(res.method == "POST") + val expectedBody = parse("""{"body":"parameters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions can override default query parameters") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("query", "myQueryParameter") + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"myQueryParameter"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions merges query parameters with default ones") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("query2", "myQueryParameter") + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","query2":"myQueryParameter"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions can override default headers") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withHeader("x-algolia-api-key", "myApiKey") + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + val expectedHeaders = parse("""{"x-algolia-api-key":"myApiKey"}""").asInstanceOf[JObject].obj.toMap + val actualHeaders = res.headers + for ((k, v) <- expectedHeaders) { + assert(actualHeaders.contains(k)) + assert(actualHeaders(k) == v.asInstanceOf[JString].s) + } + } + + test("requestOptions merges headers with default ones") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withHeader("x-algolia-api-key", "myApiKey") + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + val expectedHeaders = parse("""{"x-algolia-api-key":"myApiKey"}""").asInstanceOf[JObject].obj.toMap + val actualHeaders = res.headers + for ((k, v) <- expectedHeaders) { + assert(actualHeaders.contains(k)) + assert(actualHeaders(k) == v.asInstanceOf[JString].s) + } + } + + test("requestOptions queryParameters accepts booleans") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("isItWorking", true) + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","isItWorking":"true"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions queryParameters accepts integers") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("myParam", 2) + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","myParam":"2"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions queryParameters accepts list of string") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("myParam", Seq("c", "d")) + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","myParam":"c,d"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions queryParameters accepts list of booleans") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("myParam", Seq(true, true, false)) + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","myParam":"true,true,false"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions queryParameters accepts list of integers") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("myParam", Seq(1, 2)) + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","myParam":"1,2"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("allow put method for a custom path with minimal parameters") { + val (client, echo) = testClient() + val future = client.customPut[JObject]( + path = "/test/minimal" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/minimal") + assert(res.method == "PUT") + val expectedBody = parse("""{}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("allow put method for a custom path with all parameters") { + val (client, echo) = testClient() + val future = client.customPut[JObject]( + path = "/test/all", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("body", JString("parameters"))))) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/all") + assert(res.method == "PUT") + val expectedBody = parse("""{"body":"parameters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("delete deleteUserProfile") { + val (client, echo) = testClient() + val future = client.deleteUserProfile( + userToken = "UserToken" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/profiles/UserToken") + assert(res.method == "DELETE") + assert(res.body.isEmpty) + } + + test("get getPersonalizationStrategy") { + val (client, echo) = testClient() + val future = client.getPersonalizationStrategy( + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/strategies/personalization") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("get getUserTokenProfile") { + val (client, echo) = testClient() + val future = client.getUserTokenProfile( + userToken = "UserToken" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/profiles/personalization/UserToken") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("set setPersonalizationStrategy") { + val (client, echo) = testClient() + val future = client.setPersonalizationStrategy( + personalizationStrategyParams = PersonalizationStrategyParams( + eventScoring = Seq( + EventScoring( + score = 42, + eventName = "Algolia", + eventType = "Event" + ) + ), + facetScoring = Seq( + FacetScoring( + score = 42, + facetName = "Event" + ) + ), + personalizationImpact = 42 + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/strategies/personalization") + assert(res.method == "POST") + val expectedBody = parse( + """{"eventScoring":[{"score":42,"eventName":"Algolia","eventType":"Event"}],"facetScoring":[{"score":42,"facetName":"Event"}],"personalizationImpact":42}""" + ) + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + +} diff --git a/tests/output/scala/src/test/scala/algoliasearch/requests/QuerySuggestionsTest.scala b/tests/output/scala/src/test/scala/algoliasearch/requests/QuerySuggestionsTest.scala new file mode 100644 index 0000000000..a04185f4aa --- /dev/null +++ b/tests/output/scala/src/test/scala/algoliasearch/requests/QuerySuggestionsTest.scala @@ -0,0 +1,618 @@ +package algoliasearch.methods.requests + +import algoliasearch.EchoInterceptor +import algoliasearch.api.QuerySuggestionsClient +import algoliasearch.config.* +import algoliasearch.querysuggestions.* +import org.json4s.* +import org.json4s.native.JsonParser.* +import org.scalatest.funsuite.AnyFunSuite + +import scala.concurrent.duration.Duration +import scala.concurrent.{Await, ExecutionContextExecutor} + +class QuerySuggestionsTest extends AnyFunSuite { + implicit val ec: ExecutionContextExecutor = scala.concurrent.ExecutionContext.global + implicit val formats: Formats = org.json4s.DefaultFormats + + def testClient(): (QuerySuggestionsClient, EchoInterceptor) = { + val echo = EchoInterceptor() + ( + QuerySuggestionsClient( + appId = "appId", + apiKey = "apiKey", + region = "us", + clientOptions = ClientOptions + .builder() + .withRequesterConfig(requester => requester.withInterceptor(echo)) + .build() + ), + echo + ) + } + + test("createConfig0") { + val (client, echo) = testClient() + val future = client.createConfig( + querySuggestionsConfigurationWithIndex = QuerySuggestionsConfigurationWithIndex( + indexName = "theIndexName", + sourceIndices = Seq( + SourceIndex( + indexName = "testIndex", + facets = Some( + Seq( + Facet( + attribute = Some("test") + ) + ) + ), + generate = Some(Seq(Seq("facetA", "facetB"), Seq("facetC"))) + ) + ), + languages = Some(Languages(Seq("french"))), + exclude = Some(Seq("test")) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/configs") + assert(res.method == "POST") + val expectedBody = parse( + """{"indexName":"theIndexName","sourceIndices":[{"indexName":"testIndex","facets":[{"attribute":"test"}],"generate":[["facetA","facetB"],["facetC"]]}],"languages":["french"],"exclude":["test"]}""" + ) + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("allow del method for a custom path with minimal parameters") { + val (client, echo) = testClient() + val future = client.customDelete[JObject]( + path = "/test/minimal" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/minimal") + assert(res.method == "DELETE") + assert(res.body.isEmpty) + } + + test("allow del method for a custom path with all parameters") { + val (client, echo) = testClient() + val future = client.customDelete[JObject]( + path = "/test/all", + parameters = Some(Map("query" -> "parameters")) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/all") + assert(res.method == "DELETE") + assert(res.body.isEmpty) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("allow get method for a custom path with minimal parameters") { + val (client, echo) = testClient() + val future = client.customGet[JObject]( + path = "/test/minimal" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/minimal") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("allow get method for a custom path with all parameters") { + val (client, echo) = testClient() + val future = client.customGet[JObject]( + path = "/test/all", + parameters = Some(Map("query" -> "parameters")) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/all") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("allow post method for a custom path with minimal parameters") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/minimal" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/minimal") + assert(res.method == "POST") + val expectedBody = parse("""{}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("allow post method for a custom path with all parameters") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/all", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("body", JString("parameters"))))) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/all") + assert(res.method == "POST") + val expectedBody = parse("""{"body":"parameters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions can override default query parameters") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("query", "myQueryParameter") + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"myQueryParameter"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions merges query parameters with default ones") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("query2", "myQueryParameter") + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","query2":"myQueryParameter"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions can override default headers") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withHeader("x-algolia-api-key", "myApiKey") + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + val expectedHeaders = parse("""{"x-algolia-api-key":"myApiKey"}""").asInstanceOf[JObject].obj.toMap + val actualHeaders = res.headers + for ((k, v) <- expectedHeaders) { + assert(actualHeaders.contains(k)) + assert(actualHeaders(k) == v.asInstanceOf[JString].s) + } + } + + test("requestOptions merges headers with default ones") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withHeader("x-algolia-api-key", "myApiKey") + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + val expectedHeaders = parse("""{"x-algolia-api-key":"myApiKey"}""").asInstanceOf[JObject].obj.toMap + val actualHeaders = res.headers + for ((k, v) <- expectedHeaders) { + assert(actualHeaders.contains(k)) + assert(actualHeaders(k) == v.asInstanceOf[JString].s) + } + } + + test("requestOptions queryParameters accepts booleans") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("isItWorking", true) + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","isItWorking":"true"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions queryParameters accepts integers") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("myParam", 2) + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","myParam":"2"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions queryParameters accepts list of string") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("myParam", Seq("c", "d")) + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","myParam":"c,d"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions queryParameters accepts list of booleans") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("myParam", Seq(true, true, false)) + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","myParam":"true,true,false"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions queryParameters accepts list of integers") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("myParam", Seq(1, 2)) + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","myParam":"1,2"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("allow put method for a custom path with minimal parameters") { + val (client, echo) = testClient() + val future = client.customPut[JObject]( + path = "/test/minimal" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/minimal") + assert(res.method == "PUT") + val expectedBody = parse("""{}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("allow put method for a custom path with all parameters") { + val (client, echo) = testClient() + val future = client.customPut[JObject]( + path = "/test/all", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("body", JString("parameters"))))) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/all") + assert(res.method == "PUT") + val expectedBody = parse("""{"body":"parameters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("deleteConfig0") { + val (client, echo) = testClient() + val future = client.deleteConfig( + indexName = "theIndexName" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/configs/theIndexName") + assert(res.method == "DELETE") + assert(res.body.isEmpty) + } + + test("getAllConfigs0") { + val (client, echo) = testClient() + val future = client.getAllConfigs( + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/configs") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("getConfig0") { + val (client, echo) = testClient() + val future = client.getConfig( + indexName = "theIndexName" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/configs/theIndexName") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("getConfigStatus0") { + val (client, echo) = testClient() + val future = client.getConfigStatus( + indexName = "theIndexName" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/configs/theIndexName/status") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("getLogFile0") { + val (client, echo) = testClient() + val future = client.getLogFile( + indexName = "theIndexName" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/logs/theIndexName") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("updateConfig0") { + val (client, echo) = testClient() + val future = client.updateConfig( + indexName = "theIndexName", + querySuggestionsConfiguration = QuerySuggestionsConfiguration( + sourceIndices = Seq( + SourceIndex( + indexName = "testIndex", + facets = Some( + Seq( + Facet( + attribute = Some("test") + ) + ) + ), + generate = Some(Seq(Seq("facetA", "facetB"), Seq("facetC"))) + ) + ), + languages = Some(Languages(Seq("french"))), + exclude = Some(Seq("test")) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/configs/theIndexName") + assert(res.method == "PUT") + val expectedBody = parse( + """{"sourceIndices":[{"indexName":"testIndex","facets":[{"attribute":"test"}],"generate":[["facetA","facetB"],["facetC"]]}],"languages":["french"],"exclude":["test"]}""" + ) + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + +} diff --git a/tests/output/scala/src/test/scala/algoliasearch/requests/RecommendTest.scala b/tests/output/scala/src/test/scala/algoliasearch/requests/RecommendTest.scala new file mode 100644 index 0000000000..07fdf6cbe7 --- /dev/null +++ b/tests/output/scala/src/test/scala/algoliasearch/requests/RecommendTest.scala @@ -0,0 +1,794 @@ +package algoliasearch.methods.requests + +import algoliasearch.EchoInterceptor +import algoliasearch.api.RecommendClient +import algoliasearch.config.* +import algoliasearch.recommend.* +import org.json4s.* +import org.json4s.native.JsonParser.* +import org.scalatest.funsuite.AnyFunSuite + +import scala.concurrent.duration.Duration +import scala.concurrent.{Await, ExecutionContextExecutor} + +class RecommendTest extends AnyFunSuite { + implicit val ec: ExecutionContextExecutor = scala.concurrent.ExecutionContext.global + implicit val formats: Formats = org.json4s.DefaultFormats + + def testClient(): (RecommendClient, EchoInterceptor) = { + val echo = EchoInterceptor() + ( + RecommendClient( + appId = "appId", + apiKey = "apiKey", + clientOptions = ClientOptions + .builder() + .withRequesterConfig(requester => requester.withInterceptor(echo)) + .build() + ), + echo + ) + } + + test("allow del method for a custom path with minimal parameters") { + val (client, echo) = testClient() + val future = client.customDelete[JObject]( + path = "/test/minimal" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/minimal") + assert(res.method == "DELETE") + assert(res.body.isEmpty) + } + + test("allow del method for a custom path with all parameters") { + val (client, echo) = testClient() + val future = client.customDelete[JObject]( + path = "/test/all", + parameters = Some(Map("query" -> "parameters")) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/all") + assert(res.method == "DELETE") + assert(res.body.isEmpty) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("allow get method for a custom path with minimal parameters") { + val (client, echo) = testClient() + val future = client.customGet[JObject]( + path = "/test/minimal" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/minimal") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("allow get method for a custom path with all parameters") { + val (client, echo) = testClient() + val future = client.customGet[JObject]( + path = "/test/all", + parameters = Some(Map("query" -> "parameters")) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/all") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("allow post method for a custom path with minimal parameters") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/minimal" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/minimal") + assert(res.method == "POST") + val expectedBody = parse("""{}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("allow post method for a custom path with all parameters") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/all", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("body", JString("parameters"))))) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/all") + assert(res.method == "POST") + val expectedBody = parse("""{"body":"parameters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions can override default query parameters") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("query", "myQueryParameter") + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"myQueryParameter"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions merges query parameters with default ones") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("query2", "myQueryParameter") + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","query2":"myQueryParameter"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions can override default headers") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withHeader("x-algolia-api-key", "myApiKey") + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + val expectedHeaders = parse("""{"x-algolia-api-key":"myApiKey"}""").asInstanceOf[JObject].obj.toMap + val actualHeaders = res.headers + for ((k, v) <- expectedHeaders) { + assert(actualHeaders.contains(k)) + assert(actualHeaders(k) == v.asInstanceOf[JString].s) + } + } + + test("requestOptions merges headers with default ones") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withHeader("x-algolia-api-key", "myApiKey") + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + val expectedHeaders = parse("""{"x-algolia-api-key":"myApiKey"}""").asInstanceOf[JObject].obj.toMap + val actualHeaders = res.headers + for ((k, v) <- expectedHeaders) { + assert(actualHeaders.contains(k)) + assert(actualHeaders(k) == v.asInstanceOf[JString].s) + } + } + + test("requestOptions queryParameters accepts booleans") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("isItWorking", true) + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","isItWorking":"true"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions queryParameters accepts integers") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("myParam", 2) + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","myParam":"2"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions queryParameters accepts list of string") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("myParam", Seq("c", "d")) + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","myParam":"c,d"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions queryParameters accepts list of booleans") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("myParam", Seq(true, true, false)) + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","myParam":"true,true,false"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions queryParameters accepts list of integers") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("myParam", Seq(1, 2)) + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","myParam":"1,2"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("allow put method for a custom path with minimal parameters") { + val (client, echo) = testClient() + val future = client.customPut[JObject]( + path = "/test/minimal" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/minimal") + assert(res.method == "PUT") + val expectedBody = parse("""{}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("allow put method for a custom path with all parameters") { + val (client, echo) = testClient() + val future = client.customPut[JObject]( + path = "/test/all", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("body", JString("parameters"))))) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/all") + assert(res.method == "PUT") + val expectedBody = parse("""{"body":"parameters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("deleteRecommendRule0") { + val (client, echo) = testClient() + val future = client.deleteRecommendRule( + indexName = "indexName", + model = RecommendModels.withName("related-products"), + objectID = "objectID" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/indexName/related-products/recommend/rules/objectID") + assert(res.method == "DELETE") + assert(res.body.isEmpty) + } + + test("getRecommendRule0") { + val (client, echo) = testClient() + val future = client.getRecommendRule( + indexName = "indexName", + model = RecommendModels.withName("related-products"), + objectID = "objectID" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/indexName/related-products/recommend/rules/objectID") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("getRecommendStatus0") { + val (client, echo) = testClient() + val future = client.getRecommendStatus( + indexName = "indexName", + model = RecommendModels.withName("related-products"), + taskID = 12345L + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/indexName/related-products/task/12345") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("get recommendations for recommend model with minimal parameters") { + val (client, echo) = testClient() + val future = client.getRecommendations( + getRecommendationsParams = GetRecommendationsParams( + requests = Seq( + RecommendationsQuery( + indexName = "indexName", + objectID = "objectID", + model = RecommendationModels.withName("related-products"), + threshold = Some(42) + ) + ) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/*/recommendations") + assert(res.method == "POST") + val expectedBody = parse( + """{"requests":[{"indexName":"indexName","objectID":"objectID","model":"related-products","threshold":42}]}""" + ) + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("get recommendations for recommend model with all parameters") { + val (client, echo) = testClient() + val future = client.getRecommendations( + getRecommendationsParams = GetRecommendationsParams( + requests = Seq( + RecommendationsQuery( + indexName = "indexName", + objectID = "objectID", + model = RecommendationModels.withName("related-products"), + threshold = Some(42), + maxRecommendations = Some(10), + queryParameters = Some( + SearchParamsObject( + query = Some("myQuery"), + facetFilters = Some(FacetFilters(Seq(MixedSearchFilters("query")))) + ) + ), + fallbackParameters = Some( + SearchParamsObject( + query = Some("myQuery"), + facetFilters = Some(FacetFilters(Seq(MixedSearchFilters("fallback")))) + ) + ) + ) + ) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/*/recommendations") + assert(res.method == "POST") + val expectedBody = parse( + """{"requests":[{"indexName":"indexName","objectID":"objectID","model":"related-products","threshold":42,"maxRecommendations":10,"queryParameters":{"query":"myQuery","facetFilters":["query"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback"]}}]}""" + ) + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("get recommendations for trending model with minimal parameters") { + val (client, echo) = testClient() + val future = client.getRecommendations( + getRecommendationsParams = GetRecommendationsParams( + requests = Seq( + TrendingItemsQuery( + indexName = "indexName", + model = Some(TrendingItemsModel.withName("trending-items")), + threshold = Some(42) + ) + ) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/*/recommendations") + assert(res.method == "POST") + val expectedBody = parse("""{"requests":[{"indexName":"indexName","model":"trending-items","threshold":42}]}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("get recommendations for trending model with all parameters") { + val (client, echo) = testClient() + val future = client.getRecommendations( + getRecommendationsParams = GetRecommendationsParams( + requests = Seq( + TrendingItemsQuery( + indexName = "indexName", + model = Some(TrendingItemsModel.withName("trending-items")), + threshold = Some(42), + maxRecommendations = Some(10), + facetName = Some("myFacetName"), + facetValue = Some("myFacetValue"), + queryParameters = Some( + SearchParamsObject( + query = Some("myQuery"), + facetFilters = Some(FacetFilters(Seq(MixedSearchFilters("query")))) + ) + ), + fallbackParameters = Some( + SearchParamsObject( + query = Some("myQuery"), + facetFilters = Some(FacetFilters(Seq(MixedSearchFilters("fallback")))) + ) + ) + ) + ) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/*/recommendations") + assert(res.method == "POST") + val expectedBody = parse( + """{"requests":[{"indexName":"indexName","model":"trending-items","threshold":42,"maxRecommendations":10,"facetName":"myFacetName","facetValue":"myFacetValue","queryParameters":{"query":"myQuery","facetFilters":["query"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback"]}}]}""" + ) + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("get multiple recommendations with minimal parameters") { + val (client, echo) = testClient() + val future = client.getRecommendations( + getRecommendationsParams = GetRecommendationsParams( + requests = Seq( + RecommendationsQuery( + indexName = "indexName1", + objectID = "objectID1", + model = RecommendationModels.withName("related-products"), + threshold = Some(21) + ), + RecommendationsQuery( + indexName = "indexName2", + objectID = "objectID2", + model = RecommendationModels.withName("related-products"), + threshold = Some(21) + ) + ) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/*/recommendations") + assert(res.method == "POST") + val expectedBody = parse( + """{"requests":[{"indexName":"indexName1","objectID":"objectID1","model":"related-products","threshold":21},{"indexName":"indexName2","objectID":"objectID2","model":"related-products","threshold":21}]}""" + ) + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("get multiple recommendations with all parameters") { + val (client, echo) = testClient() + val future = client.getRecommendations( + getRecommendationsParams = GetRecommendationsParams( + requests = Seq( + RecommendationsQuery( + indexName = "indexName1", + objectID = "objectID1", + model = RecommendationModels.withName("related-products"), + threshold = Some(21), + maxRecommendations = Some(10), + queryParameters = Some( + SearchParamsObject( + query = Some("myQuery"), + facetFilters = Some(FacetFilters(Seq(MixedSearchFilters("query1")))) + ) + ), + fallbackParameters = Some( + SearchParamsObject( + query = Some("myQuery"), + facetFilters = Some(FacetFilters(Seq(MixedSearchFilters("fallback1")))) + ) + ) + ), + RecommendationsQuery( + indexName = "indexName2", + objectID = "objectID2", + model = RecommendationModels.withName("related-products"), + threshold = Some(21), + maxRecommendations = Some(10), + queryParameters = Some( + SearchParamsObject( + query = Some("myQuery"), + facetFilters = Some(FacetFilters(Seq(MixedSearchFilters("query2")))) + ) + ), + fallbackParameters = Some( + SearchParamsObject( + query = Some("myQuery"), + facetFilters = Some(FacetFilters(Seq(MixedSearchFilters("fallback2")))) + ) + ) + ) + ) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/*/recommendations") + assert(res.method == "POST") + val expectedBody = parse( + """{"requests":[{"indexName":"indexName1","objectID":"objectID1","model":"related-products","threshold":21,"maxRecommendations":10,"queryParameters":{"query":"myQuery","facetFilters":["query1"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback1"]}},{"indexName":"indexName2","objectID":"objectID2","model":"related-products","threshold":21,"maxRecommendations":10,"queryParameters":{"query":"myQuery","facetFilters":["query2"]},"fallbackParameters":{"query":"myQuery","facetFilters":["fallback2"]}}]}""" + ) + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("get frequently bought together recommendations") { + val (client, echo) = testClient() + val future = client.getRecommendations( + getRecommendationsParams = GetRecommendationsParams( + requests = Seq( + RecommendationsQuery( + indexName = "indexName1", + objectID = "objectID1", + model = RecommendationModels.withName("bought-together"), + threshold = Some(42) + ) + ) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/*/recommendations") + assert(res.method == "POST") + val expectedBody = parse( + """{"requests":[{"indexName":"indexName1","objectID":"objectID1","model":"bought-together","threshold":42}]}""" + ) + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("searchRecommendRules0") { + val (client, echo) = testClient() + val future = client.searchRecommendRules( + indexName = "indexName", + model = RecommendModels.withName("related-products") + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/indexName/related-products/recommend/rules/search") + assert(res.method == "POST") + val expectedBody = parse("""{}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + +} diff --git a/tests/output/scala/src/test/scala/algoliasearch/requests/SearchTest.scala b/tests/output/scala/src/test/scala/algoliasearch/requests/SearchTest.scala new file mode 100644 index 0000000000..8d47b88cf4 --- /dev/null +++ b/tests/output/scala/src/test/scala/algoliasearch/requests/SearchTest.scala @@ -0,0 +1,2918 @@ +package algoliasearch.methods.requests + +import algoliasearch.EchoInterceptor +import algoliasearch.api.SearchClient +import algoliasearch.config.* +import algoliasearch.search.* +import org.json4s.* +import org.json4s.native.JsonParser.* +import org.scalatest.funsuite.AnyFunSuite + +import scala.concurrent.duration.Duration +import scala.concurrent.{Await, ExecutionContextExecutor} + +class SearchTest extends AnyFunSuite { + implicit val ec: ExecutionContextExecutor = scala.concurrent.ExecutionContext.global + implicit val formats: Formats = org.json4s.DefaultFormats + + def testClient(): (SearchClient, EchoInterceptor) = { + val echo = EchoInterceptor() + ( + SearchClient( + appId = "appId", + apiKey = "apiKey", + clientOptions = ClientOptions + .builder() + .withRequesterConfig(requester => requester.withInterceptor(echo)) + .build() + ), + echo + ) + } + + test("addApiKey0") { + val (client, echo) = testClient() + val future = client.addApiKey( + apiKey = ApiKey( + acl = Seq(Acl.withName("search"), Acl.withName("addObject")), + description = Some("my new api key"), + validity = Some(300), + maxQueriesPerIPPerHour = Some(100), + maxHitsPerQuery = Some(20) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/keys") + assert(res.method == "POST") + val expectedBody = parse( + """{"acl":["search","addObject"],"description":"my new api key","validity":300,"maxQueriesPerIPPerHour":100,"maxHitsPerQuery":20}""" + ) + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("addOrUpdateObject0") { + val (client, echo) = testClient() + val future = client.addOrUpdateObject( + indexName = "indexName", + objectID = "uniqueID", + body = JObject(List(JField("key", JString("value")))) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/indexName/uniqueID") + assert(res.method == "PUT") + val expectedBody = parse("""{"key":"value"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("appendSource0") { + val (client, echo) = testClient() + val future = client.appendSource( + source = Source( + source = "theSource", + description = Some("theDescription") + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/security/sources/append") + assert(res.method == "POST") + val expectedBody = parse("""{"source":"theSource","description":"theDescription"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("assignUserId0") { + val (client, echo) = testClient() + val future = client.assignUserId( + xAlgoliaUserID = "userID", + assignUserIdParams = AssignUserIdParams( + cluster = "theCluster" + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/clusters/mapping") + assert(res.method == "POST") + val expectedBody = parse("""{"cluster":"theCluster"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedHeaders = parse("""{"x-algolia-user-id":"userID"}""").asInstanceOf[JObject].obj.toMap + val actualHeaders = res.headers + for ((k, v) <- expectedHeaders) { + assert(actualHeaders.contains(k)) + assert(actualHeaders(k) == v.asInstanceOf[JString].s) + } + } + + test("allows batch method with `addObject` action") { + val (client, echo) = testClient() + val future = client.batch( + indexName = "theIndexName", + batchWriteParams = BatchWriteParams( + requests = Seq( + BatchRequest( + action = Action.withName("addObject"), + body = JObject(List(JField("key", JString("value")))) + ) + ) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/theIndexName/batch") + assert(res.method == "POST") + val expectedBody = parse("""{"requests":[{"action":"addObject","body":{"key":"value"}}]}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("allows batch method with `clear` action") { + val (client, echo) = testClient() + val future = client.batch( + indexName = "theIndexName", + batchWriteParams = BatchWriteParams( + requests = Seq( + BatchRequest( + action = Action.withName("clear"), + body = JObject(List(JField("key", JString("value")))) + ) + ) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/theIndexName/batch") + assert(res.method == "POST") + val expectedBody = parse("""{"requests":[{"action":"clear","body":{"key":"value"}}]}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("allows batch method with `delete` action") { + val (client, echo) = testClient() + val future = client.batch( + indexName = "theIndexName", + batchWriteParams = BatchWriteParams( + requests = Seq( + BatchRequest( + action = Action.withName("delete"), + body = JObject(List(JField("key", JString("value")))) + ) + ) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/theIndexName/batch") + assert(res.method == "POST") + val expectedBody = parse("""{"requests":[{"action":"delete","body":{"key":"value"}}]}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("allows batch method with `deleteObject` action") { + val (client, echo) = testClient() + val future = client.batch( + indexName = "theIndexName", + batchWriteParams = BatchWriteParams( + requests = Seq( + BatchRequest( + action = Action.withName("deleteObject"), + body = JObject(List(JField("key", JString("value")))) + ) + ) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/theIndexName/batch") + assert(res.method == "POST") + val expectedBody = parse("""{"requests":[{"action":"deleteObject","body":{"key":"value"}}]}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("allows batch method with `partialUpdateObject` action") { + val (client, echo) = testClient() + val future = client.batch( + indexName = "theIndexName", + batchWriteParams = BatchWriteParams( + requests = Seq( + BatchRequest( + action = Action.withName("partialUpdateObject"), + body = JObject(List(JField("key", JString("value")))) + ) + ) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/theIndexName/batch") + assert(res.method == "POST") + val expectedBody = parse("""{"requests":[{"action":"partialUpdateObject","body":{"key":"value"}}]}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("allows batch method with `partialUpdateObjectNoCreate` action") { + val (client, echo) = testClient() + val future = client.batch( + indexName = "theIndexName", + batchWriteParams = BatchWriteParams( + requests = Seq( + BatchRequest( + action = Action.withName("partialUpdateObjectNoCreate"), + body = JObject(List(JField("key", JString("value")))) + ) + ) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/theIndexName/batch") + assert(res.method == "POST") + val expectedBody = parse("""{"requests":[{"action":"partialUpdateObjectNoCreate","body":{"key":"value"}}]}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("allows batch method with `updateObject` action") { + val (client, echo) = testClient() + val future = client.batch( + indexName = "theIndexName", + batchWriteParams = BatchWriteParams( + requests = Seq( + BatchRequest( + action = Action.withName("updateObject"), + body = JObject(List(JField("key", JString("value")))) + ) + ) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/theIndexName/batch") + assert(res.method == "POST") + val expectedBody = parse("""{"requests":[{"action":"updateObject","body":{"key":"value"}}]}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("batchAssignUserIds0") { + val (client, echo) = testClient() + val future = client.batchAssignUserIds( + xAlgoliaUserID = "userID", + batchAssignUserIdsParams = BatchAssignUserIdsParams( + cluster = "theCluster", + users = Seq("user1", "user2") + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/clusters/mapping/batch") + assert(res.method == "POST") + val expectedBody = parse("""{"cluster":"theCluster","users":["user1","user2"]}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedHeaders = parse("""{"x-algolia-user-id":"userID"}""").asInstanceOf[JObject].obj.toMap + val actualHeaders = res.headers + for ((k, v) <- expectedHeaders) { + assert(actualHeaders.contains(k)) + assert(actualHeaders(k) == v.asInstanceOf[JString].s) + } + } + + test("get batchDictionaryEntries results with minimal parameters") { + val (client, echo) = testClient() + val future = client.batchDictionaryEntries( + dictionaryName = DictionaryType.withName("compounds"), + batchDictionaryEntriesParams = BatchDictionaryEntriesParams( + requests = Seq( + BatchDictionaryEntriesRequest( + action = DictionaryAction.withName("addEntry"), + body = DictionaryEntry( + objectID = "1", + language = "en" + ) + ), + BatchDictionaryEntriesRequest( + action = DictionaryAction.withName("deleteEntry"), + body = DictionaryEntry( + objectID = "2", + language = "fr" + ) + ) + ) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/dictionaries/compounds/batch") + assert(res.method == "POST") + val expectedBody = parse( + """{"requests":[{"action":"addEntry","body":{"objectID":"1","language":"en"}},{"action":"deleteEntry","body":{"objectID":"2","language":"fr"}}]}""" + ) + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("get batchDictionaryEntries results with all parameters") { + val (client, echo) = testClient() + val future = client.batchDictionaryEntries( + dictionaryName = DictionaryType.withName("compounds"), + batchDictionaryEntriesParams = BatchDictionaryEntriesParams( + clearExistingDictionaryEntries = Some(false), + requests = Seq( + BatchDictionaryEntriesRequest( + action = DictionaryAction.withName("addEntry"), + body = DictionaryEntry( + objectID = "1", + language = "en", + word = Some("fancy"), + words = Some(Seq("believe", "algolia")), + decomposition = Some(Seq("trust", "algolia")), + state = Some(DictionaryEntryState.withName("enabled")) + ) + ), + BatchDictionaryEntriesRequest( + action = DictionaryAction.withName("deleteEntry"), + body = DictionaryEntry( + objectID = "2", + language = "fr", + word = Some("humility"), + words = Some(Seq("candor", "algolia")), + decomposition = Some(Seq("grit", "algolia")), + state = Some(DictionaryEntryState.withName("enabled")) + ) + ) + ) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/dictionaries/compounds/batch") + assert(res.method == "POST") + val expectedBody = parse( + """{"clearExistingDictionaryEntries":false,"requests":[{"action":"addEntry","body":{"objectID":"1","language":"en","word":"fancy","words":["believe","algolia"],"decomposition":["trust","algolia"],"state":"enabled"}},{"action":"deleteEntry","body":{"objectID":"2","language":"fr","word":"humility","words":["candor","algolia"],"decomposition":["grit","algolia"],"state":"enabled"}}]}""" + ) + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("get batchDictionaryEntries results additional properties") { + val (client, echo) = testClient() + val future = client.batchDictionaryEntries( + dictionaryName = DictionaryType.withName("compounds"), + batchDictionaryEntriesParams = BatchDictionaryEntriesParams( + requests = Seq( + BatchDictionaryEntriesRequest( + action = DictionaryAction.withName("addEntry"), + body = DictionaryEntry( + objectID = "1", + language = "en", + additionalProperties = Some(List(JField("additional", JString("try me")))) + ) + ) + ) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/dictionaries/compounds/batch") + assert(res.method == "POST") + val expectedBody = + parse("""{"requests":[{"action":"addEntry","body":{"objectID":"1","language":"en","additional":"try me"}}]}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("browse with minimal parameters") { + val (client, echo) = testClient() + val future = client.browse( + indexName = "indexName" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/indexName/browse") + assert(res.method == "POST") + val expectedBody = parse("""{}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("browse with search parameters") { + val (client, echo) = testClient() + val future = client.browse( + indexName = "indexName", + browseParams = Some( + BrowseParamsObject( + query = Some("myQuery"), + facetFilters = Some(FacetFilters(Seq(MixedSearchFilters("tags:algolia")))) + ) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/indexName/browse") + assert(res.method == "POST") + val expectedBody = parse("""{"query":"myQuery","facetFilters":["tags:algolia"]}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("browse allow a cursor in parameters") { + val (client, echo) = testClient() + val future = client.browse( + indexName = "indexName", + browseParams = Some( + BrowseParamsObject( + cursor = Some("test") + ) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/indexName/browse") + assert(res.method == "POST") + val expectedBody = parse("""{"cursor":"test"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("clearAllSynonyms0") { + val (client, echo) = testClient() + val future = client.clearAllSynonyms( + indexName = "indexName" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/indexName/synonyms/clear") + assert(res.method == "POST") + assert(res.body.contains("{}")) + } + + test("clearObjects0") { + val (client, echo) = testClient() + val future = client.clearObjects( + indexName = "theIndexName" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/theIndexName/clear") + assert(res.method == "POST") + assert(res.body.contains("{}")) + } + + test("clearRules0") { + val (client, echo) = testClient() + val future = client.clearRules( + indexName = "indexName" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/indexName/rules/clear") + assert(res.method == "POST") + assert(res.body.contains("{}")) + } + + test("allow del method for a custom path with minimal parameters") { + val (client, echo) = testClient() + val future = client.customDelete[JObject]( + path = "/test/minimal" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/minimal") + assert(res.method == "DELETE") + assert(res.body.isEmpty) + } + + test("allow del method for a custom path with all parameters") { + val (client, echo) = testClient() + val future = client.customDelete[JObject]( + path = "/test/all", + parameters = Some(Map("query" -> "parameters")) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/all") + assert(res.method == "DELETE") + assert(res.body.isEmpty) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("allow get method for a custom path with minimal parameters") { + val (client, echo) = testClient() + val future = client.customGet[JObject]( + path = "/test/minimal" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/minimal") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("allow get method for a custom path with all parameters") { + val (client, echo) = testClient() + val future = client.customGet[JObject]( + path = "/test/all", + parameters = Some(Map("query" -> "parameters")) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/all") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("allow post method for a custom path with minimal parameters") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/minimal" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/minimal") + assert(res.method == "POST") + val expectedBody = parse("""{}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("allow post method for a custom path with all parameters") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/all", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("body", JString("parameters"))))) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/all") + assert(res.method == "POST") + val expectedBody = parse("""{"body":"parameters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions can override default query parameters") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("query", "myQueryParameter") + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"myQueryParameter"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions merges query parameters with default ones") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("query2", "myQueryParameter") + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","query2":"myQueryParameter"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions can override default headers") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withHeader("x-algolia-api-key", "myApiKey") + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + val expectedHeaders = parse("""{"x-algolia-api-key":"myApiKey"}""").asInstanceOf[JObject].obj.toMap + val actualHeaders = res.headers + for ((k, v) <- expectedHeaders) { + assert(actualHeaders.contains(k)) + assert(actualHeaders(k) == v.asInstanceOf[JString].s) + } + } + + test("requestOptions merges headers with default ones") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withHeader("x-algolia-api-key", "myApiKey") + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + val expectedHeaders = parse("""{"x-algolia-api-key":"myApiKey"}""").asInstanceOf[JObject].obj.toMap + val actualHeaders = res.headers + for ((k, v) <- expectedHeaders) { + assert(actualHeaders.contains(k)) + assert(actualHeaders(k) == v.asInstanceOf[JString].s) + } + } + + test("requestOptions queryParameters accepts booleans") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("isItWorking", true) + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","isItWorking":"true"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions queryParameters accepts integers") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("myParam", 2) + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","myParam":"2"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions queryParameters accepts list of string") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("myParam", Seq("c", "d")) + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","myParam":"c,d"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions queryParameters accepts list of booleans") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("myParam", Seq(true, true, false)) + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","myParam":"true,true,false"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("requestOptions queryParameters accepts list of integers") { + val (client, echo) = testClient() + val future = client.customPost[JObject]( + path = "/test/requestOptions", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("facet", JString("filters"))))), + requestOptions = Some( + RequestOptions + .builder() + .withQueryParameter("myParam", Seq(1, 2)) + .build() + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/requestOptions") + assert(res.method == "POST") + val expectedBody = parse("""{"facet":"filters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters","myParam":"1,2"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("allow put method for a custom path with minimal parameters") { + val (client, echo) = testClient() + val future = client.customPut[JObject]( + path = "/test/minimal" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/minimal") + assert(res.method == "PUT") + val expectedBody = parse("""{}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("allow put method for a custom path with all parameters") { + val (client, echo) = testClient() + val future = client.customPut[JObject]( + path = "/test/all", + parameters = Some(Map("query" -> "parameters")), + body = Some(JObject(List(JField("body", JString("parameters"))))) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/test/all") + assert(res.method == "PUT") + val expectedBody = parse("""{"body":"parameters"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"query":"parameters"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("deleteApiKey0") { + val (client, echo) = testClient() + val future = client.deleteApiKey( + key = "myTestApiKey" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/keys/myTestApiKey") + assert(res.method == "DELETE") + assert(res.body.isEmpty) + } + + test("deleteBy0") { + val (client, echo) = testClient() + val future = client.deleteBy( + indexName = "theIndexName", + deleteByParams = DeleteByParams( + filters = Some("brand:brandName") + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/theIndexName/deleteByQuery") + assert(res.method == "POST") + val expectedBody = parse("""{"filters":"brand:brandName"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("deleteIndex0") { + val (client, echo) = testClient() + val future = client.deleteIndex( + indexName = "theIndexName" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/theIndexName") + assert(res.method == "DELETE") + assert(res.body.isEmpty) + } + + test("deleteObject0") { + val (client, echo) = testClient() + val future = client.deleteObject( + indexName = "theIndexName", + objectID = "uniqueID" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/theIndexName/uniqueID") + assert(res.method == "DELETE") + assert(res.body.isEmpty) + } + + test("delete rule simple case") { + val (client, echo) = testClient() + val future = client.deleteRule( + indexName = "indexName", + objectID = "id1" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/indexName/rules/id1") + assert(res.method == "DELETE") + assert(res.body.isEmpty) + } + + test("delete rule with simple characters to encode in objectID") { + val (client, echo) = testClient() + val future = client.deleteRule( + indexName = "indexName", + objectID = "test/with/slash" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/indexName/rules/test%2Fwith%2Fslash") + assert(res.method == "DELETE") + assert(res.body.isEmpty) + } + + test("deleteSource0") { + val (client, echo) = testClient() + val future = client.deleteSource( + source = "theSource" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/security/sources/theSource") + assert(res.method == "DELETE") + assert(res.body.isEmpty) + } + + test("deleteSynonym0") { + val (client, echo) = testClient() + val future = client.deleteSynonym( + indexName = "indexName", + objectID = "id1" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/indexName/synonyms/id1") + assert(res.method == "DELETE") + assert(res.body.isEmpty) + } + + test("getApiKey0") { + val (client, echo) = testClient() + val future = client.getApiKey( + key = "myTestApiKey" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/keys/myTestApiKey") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("get getDictionaryLanguages") { + val (client, echo) = testClient() + val future = client.getDictionaryLanguages( + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/dictionaries/*/languages") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("get getDictionarySettings results") { + val (client, echo) = testClient() + val future = client.getDictionarySettings( + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/dictionaries/*/settings") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("getLogs with minimal parameters") { + val (client, echo) = testClient() + val future = client.getLogs( + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/logs") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("getLogs with parameters") { + val (client, echo) = testClient() + val future = client.getLogs( + offset = Some(5), + length = Some(10), + indexName = Some("theIndexName"), + `type` = Some(LogType.withName("all")) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/logs") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = + parse("""{"offset":"5","length":"10","indexName":"theIndexName","type":"all"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("getObject0") { + val (client, echo) = testClient() + val future = client.getObject( + indexName = "theIndexName", + objectID = "uniqueID", + attributesToRetrieve = Some(Seq("attr1", "attr2")) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/theIndexName/uniqueID") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = parse("""{"attributesToRetrieve":"attr1,attr2"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("getObjects0") { + val (client, echo) = testClient() + val future = client.getObjects( + getObjectsParams = GetObjectsParams( + requests = Seq( + GetObjectsRequest( + attributesToRetrieve = Some(Seq("attr1", "attr2")), + objectID = "uniqueID", + indexName = "theIndexName" + ) + ) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/*/objects") + assert(res.method == "POST") + val expectedBody = parse( + """{"requests":[{"attributesToRetrieve":["attr1","attr2"],"objectID":"uniqueID","indexName":"theIndexName"}]}""" + ) + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("getRule0") { + val (client, echo) = testClient() + val future = client.getRule( + indexName = "indexName", + objectID = "id1" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/indexName/rules/id1") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("getSettings0") { + val (client, echo) = testClient() + val future = client.getSettings( + indexName = "theIndexName" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/theIndexName/settings") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("getSources0") { + val (client, echo) = testClient() + val future = client.getSources( + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/security/sources") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("getSynonym0") { + val (client, echo) = testClient() + val future = client.getSynonym( + indexName = "indexName", + objectID = "id1" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/indexName/synonyms/id1") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("getTask0") { + val (client, echo) = testClient() + val future = client.getTask( + indexName = "theIndexName", + taskID = 123L + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/theIndexName/task/123") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("getTopUserIds0") { + val (client, echo) = testClient() + val future = client.getTopUserIds( + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/clusters/mapping/top") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("getUserId0") { + val (client, echo) = testClient() + val future = client.getUserId( + userID = "uniqueID" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/clusters/mapping/uniqueID") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("hasPendingMappings with minimal parameters") { + val (client, echo) = testClient() + val future = client.hasPendingMappings( + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/clusters/mapping/pending") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("hasPendingMappings with parameters") { + val (client, echo) = testClient() + val future = client.hasPendingMappings( + getClusters = Some(true) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/clusters/mapping/pending") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = parse("""{"getClusters":"true"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("listApiKeys0") { + val (client, echo) = testClient() + val future = client.listApiKeys( + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/keys") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("listClusters0") { + val (client, echo) = testClient() + val future = client.listClusters( + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/clusters") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("listIndices with minimal parameters") { + val (client, echo) = testClient() + val future = client.listIndices( + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("listIndices with parameters") { + val (client, echo) = testClient() + val future = client.listIndices( + page = Some(8), + hitsPerPage = Some(3) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = parse("""{"page":"8","hitsPerPage":"3"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("listUserIds with minimal parameters") { + val (client, echo) = testClient() + val future = client.listUserIds( + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/clusters/mapping") + assert(res.method == "GET") + assert(res.body.isEmpty) + } + + test("listUserIds with parameters") { + val (client, echo) = testClient() + val future = client.listUserIds( + page = Some(8), + hitsPerPage = Some(100) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/clusters/mapping") + assert(res.method == "GET") + assert(res.body.isEmpty) + val expectedQuery = parse("""{"page":"8","hitsPerPage":"100"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("multipleBatch0") { + val (client, echo) = testClient() + val future = client.multipleBatch( + batchParams = BatchParams( + requests = Seq( + MultipleBatchRequest( + action = Action.withName("addObject"), + body = JObject(List(JField("key", JString("value")))), + indexName = "theIndexName" + ) + ) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/*/batch") + assert(res.method == "POST") + val expectedBody = + parse("""{"requests":[{"action":"addObject","body":{"key":"value"},"indexName":"theIndexName"}]}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("operationIndex0") { + val (client, echo) = testClient() + val future = client.operationIndex( + indexName = "theIndexName", + operationIndexParams = OperationIndexParams( + operation = OperationType.withName("copy"), + destination = "dest", + scope = Some(Seq(ScopeType.withName("rules"), ScopeType.withName("settings"))) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/theIndexName/operation") + assert(res.method == "POST") + val expectedBody = parse("""{"operation":"copy","destination":"dest","scope":["rules","settings"]}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("partialUpdateObject0") { + val (client, echo) = testClient() + val future = client.partialUpdateObject( + indexName = "theIndexName", + objectID = "uniqueID", + attributesToUpdate = Map( + "id1" -> AttributeToUpdate("test"), + "id2" -> BuiltInOperation( + _operation = BuiltInOperationType.withName("AddUnique"), + value = "test2" + ) + ), + createIfNotExists = Some(true) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/theIndexName/uniqueID/partial") + assert(res.method == "POST") + val expectedBody = parse("""{"id1":"test","id2":{"_operation":"AddUnique","value":"test2"}}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"createIfNotExists":"true"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("removeUserId0") { + val (client, echo) = testClient() + val future = client.removeUserId( + userID = "uniqueID" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/clusters/mapping/uniqueID") + assert(res.method == "DELETE") + assert(res.body.isEmpty) + } + + test("replaceSources0") { + val (client, echo) = testClient() + val future = client.replaceSources( + source = Seq( + Source( + source = "theSource", + description = Some("theDescription") + ) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/security/sources") + assert(res.method == "PUT") + val expectedBody = parse("""[{"source":"theSource","description":"theDescription"}]""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("restoreApiKey0") { + val (client, echo) = testClient() + val future = client.restoreApiKey( + key = "myApiKey" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/keys/myApiKey/restore") + assert(res.method == "POST") + assert(res.body.contains("{}")) + } + + test("saveObject0") { + val (client, echo) = testClient() + val future = client.saveObject( + indexName = "theIndexName", + body = JObject(List(JField("objectID", JString("id")), JField("test", JString("val")))) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/theIndexName") + assert(res.method == "POST") + val expectedBody = parse("""{"objectID":"id","test":"val"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("saveRule with minimal parameters") { + val (client, echo) = testClient() + val future = client.saveRule( + indexName = "indexName", + objectID = "id1", + rule = Rule( + objectID = "id1", + conditions = Some( + Seq( + Condition( + pattern = Some("apple"), + anchoring = Some(Anchoring.withName("contains")) + ) + ) + ) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/indexName/rules/id1") + assert(res.method == "PUT") + val expectedBody = parse("""{"objectID":"id1","conditions":[{"pattern":"apple","anchoring":"contains"}]}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("saveRule with all parameters") { + val (client, echo) = testClient() + val future = client.saveRule( + indexName = "indexName", + objectID = "id1", + rule = Rule( + objectID = "id1", + conditions = Some( + Seq( + Condition( + pattern = Some("apple"), + anchoring = Some(Anchoring.withName("contains")), + alternatives = Some(false), + context = Some("search") + ) + ) + ), + consequence = Some( + Consequence( + params = Some( + ConsequenceParams( + filters = Some("brand:apple"), + query = Some( + ConsequenceQueryObject( + remove = Some(Seq("algolia")), + edits = Some( + Seq( + Edit( + `type` = Some(EditType.withName("remove")), + delete = Some("abc"), + insert = Some("cde") + ), + Edit( + `type` = Some(EditType.withName("replace")), + delete = Some("abc"), + insert = Some("cde") + ) + ) + ) + ) + ) + ) + ), + hide = Some( + Seq( + ConsequenceHide( + objectID = "321" + ) + ) + ), + filterPromotes = Some(false), + userData = Some( + JObject( + List( + JField("algolia", JString("aloglia")) + ) + ) + ), + promote = Some( + Seq( + PromoteObjectID( + objectID = "abc", + position = 3 + ), + PromoteObjectIDs( + objectIDs = Seq("abc", "def"), + position = 1 + ) + ) + ) + ) + ), + description = Some("test"), + enabled = Some(true), + validity = Some( + Seq( + TimeRange( + from = 1656670273, + until = 1656670277 + ) + ) + ) + ), + forwardToReplicas = Some(true) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/indexName/rules/id1") + assert(res.method == "PUT") + val expectedBody = parse( + """{"objectID":"id1","conditions":[{"pattern":"apple","anchoring":"contains","alternatives":false,"context":"search"}],"consequence":{"params":{"filters":"brand:apple","query":{"remove":["algolia"],"edits":[{"type":"remove","delete":"abc","insert":"cde"},{"type":"replace","delete":"abc","insert":"cde"}]}},"hide":[{"objectID":"321"}],"filterPromotes":false,"userData":{"algolia":"aloglia"},"promote":[{"objectID":"abc","position":3},{"objectIDs":["abc","def"],"position":1}]},"description":"test","enabled":true,"validity":[{"from":1656670273,"until":1656670277}]}""" + ) + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"forwardToReplicas":"true"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("saveRules with minimal parameters") { + val (client, echo) = testClient() + val future = client.saveRules( + indexName = "indexName", + rules = Seq( + Rule( + objectID = "a-rule-id", + conditions = Some( + Seq( + Condition( + pattern = Some("smartphone"), + anchoring = Some(Anchoring.withName("contains")) + ) + ) + ) + ), + Rule( + objectID = "a-second-rule-id", + conditions = Some( + Seq( + Condition( + pattern = Some("apple"), + anchoring = Some(Anchoring.withName("contains")) + ) + ) + ) + ) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/indexName/rules/batch") + assert(res.method == "POST") + val expectedBody = parse( + """[{"objectID":"a-rule-id","conditions":[{"pattern":"smartphone","anchoring":"contains"}]},{"objectID":"a-second-rule-id","conditions":[{"pattern":"apple","anchoring":"contains"}]}]""" + ) + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("saveRules with all parameters") { + val (client, echo) = testClient() + val future = client.saveRules( + indexName = "indexName", + rules = Seq( + Rule( + objectID = "id1", + conditions = Some( + Seq( + Condition( + pattern = Some("apple"), + anchoring = Some(Anchoring.withName("contains")), + alternatives = Some(false), + context = Some("search") + ) + ) + ), + consequence = Some( + Consequence( + params = Some( + ConsequenceParams( + filters = Some("brand:apple"), + query = Some( + ConsequenceQueryObject( + remove = Some(Seq("algolia")), + edits = Some( + Seq( + Edit( + `type` = Some(EditType.withName("remove")), + delete = Some("abc"), + insert = Some("cde") + ), + Edit( + `type` = Some(EditType.withName("replace")), + delete = Some("abc"), + insert = Some("cde") + ) + ) + ) + ) + ) + ) + ), + hide = Some( + Seq( + ConsequenceHide( + objectID = "321" + ) + ) + ), + filterPromotes = Some(false), + userData = Some( + JObject( + List( + JField("algolia", JString("aloglia")) + ) + ) + ), + promote = Some( + Seq( + PromoteObjectID( + objectID = "abc", + position = 3 + ), + PromoteObjectIDs( + objectIDs = Seq("abc", "def"), + position = 1 + ) + ) + ) + ) + ), + description = Some("test"), + enabled = Some(true), + validity = Some( + Seq( + TimeRange( + from = 1656670273, + until = 1656670277 + ) + ) + ) + ) + ), + forwardToReplicas = Some(true), + clearExistingRules = Some(true) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/indexName/rules/batch") + assert(res.method == "POST") + val expectedBody = parse( + """[{"objectID":"id1","conditions":[{"pattern":"apple","anchoring":"contains","alternatives":false,"context":"search"}],"consequence":{"params":{"filters":"brand:apple","query":{"remove":["algolia"],"edits":[{"type":"remove","delete":"abc","insert":"cde"},{"type":"replace","delete":"abc","insert":"cde"}]}},"hide":[{"objectID":"321"}],"filterPromotes":false,"userData":{"algolia":"aloglia"},"promote":[{"objectID":"abc","position":3},{"objectIDs":["abc","def"],"position":1}]},"description":"test","enabled":true,"validity":[{"from":1656670273,"until":1656670277}]}]""" + ) + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = + parse("""{"forwardToReplicas":"true","clearExistingRules":"true"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("saveSynonym0") { + val (client, echo) = testClient() + val future = client.saveSynonym( + indexName = "indexName", + objectID = "id1", + synonymHit = SynonymHit( + objectID = "id1", + `type` = SynonymType.withName("synonym"), + synonyms = Some(Seq("car", "vehicule", "auto")) + ), + forwardToReplicas = Some(true) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/indexName/synonyms/id1") + assert(res.method == "PUT") + val expectedBody = parse("""{"objectID":"id1","type":"synonym","synonyms":["car","vehicule","auto"]}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"forwardToReplicas":"true"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("saveSynonyms0") { + val (client, echo) = testClient() + val future = client.saveSynonyms( + indexName = "indexName", + synonymHit = Seq( + SynonymHit( + objectID = "id1", + `type` = SynonymType.withName("synonym"), + synonyms = Some(Seq("car", "vehicule", "auto")) + ), + SynonymHit( + objectID = "id2", + `type` = SynonymType.withName("onewaysynonym"), + input = Some("iphone"), + synonyms = Some(Seq("ephone", "aphone", "yphone")) + ) + ), + forwardToReplicas = Some(true), + replaceExistingSynonyms = Some(false) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/indexName/synonyms/batch") + assert(res.method == "POST") + val expectedBody = parse( + """[{"objectID":"id1","type":"synonym","synonyms":["car","vehicule","auto"]},{"objectID":"id2","type":"onewaysynonym","input":"iphone","synonyms":["ephone","aphone","yphone"]}]""" + ) + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = + parse("""{"forwardToReplicas":"true","replaceExistingSynonyms":"false"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("search for a single hits request with minimal parameters") { + val (client, echo) = testClient() + val future = client.search( + searchMethodParams = SearchMethodParams( + requests = Seq( + SearchForHits( + indexName = "cts_e2e_search_empty_index" + ) + ) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/*/queries") + assert(res.method == "POST") + val expectedBody = parse("""{"requests":[{"indexName":"cts_e2e_search_empty_index"}]}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("search for a single facet request with minimal parameters") { + val (client, echo) = testClient() + val future = client.search( + searchMethodParams = SearchMethodParams( + requests = Seq( + SearchForFacets( + indexName = "cts_e2e_search_facet", + `type` = SearchTypeFacet.withName("facet"), + facet = "editor" + ) + ), + strategy = Some(SearchStrategy.withName("stopIfEnoughMatches")) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/*/queries") + assert(res.method == "POST") + val expectedBody = parse( + """{"requests":[{"indexName":"cts_e2e_search_facet","type":"facet","facet":"editor"}],"strategy":"stopIfEnoughMatches"}""" + ) + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("search for a single hits request with all parameters") { + val (client, echo) = testClient() + val future = client.search( + searchMethodParams = SearchMethodParams( + requests = Seq( + SearchForHits( + indexName = "theIndexName", + query = Some("myQuery"), + hitsPerPage = Some(50), + `type` = Some(SearchTypeDefault.withName("default")) + ) + ) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/*/queries") + assert(res.method == "POST") + val expectedBody = + parse("""{"requests":[{"indexName":"theIndexName","query":"myQuery","hitsPerPage":50,"type":"default"}]}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("search for a single facet request with all parameters") { + val (client, echo) = testClient() + val future = client.search( + searchMethodParams = SearchMethodParams( + requests = Seq( + SearchForFacets( + indexName = "theIndexName", + `type` = SearchTypeFacet.withName("facet"), + facet = "theFacet", + facetQuery = Some("theFacetQuery"), + query = Some("theQuery"), + maxFacetHits = Some(50) + ) + ), + strategy = Some(SearchStrategy.withName("stopIfEnoughMatches")) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/*/queries") + assert(res.method == "POST") + val expectedBody = parse( + """{"requests":[{"indexName":"theIndexName","type":"facet","facet":"theFacet","facetQuery":"theFacetQuery","query":"theQuery","maxFacetHits":50}],"strategy":"stopIfEnoughMatches"}""" + ) + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("search for multiple mixed requests in multiple indices with minimal parameters") { + val (client, echo) = testClient() + val future = client.search( + searchMethodParams = SearchMethodParams( + requests = Seq( + SearchForHits( + indexName = "theIndexName" + ), + SearchForFacets( + indexName = "theIndexName2", + `type` = SearchTypeFacet.withName("facet"), + facet = "theFacet" + ), + SearchForHits( + indexName = "theIndexName", + `type` = Some(SearchTypeDefault.withName("default")) + ) + ), + strategy = Some(SearchStrategy.withName("stopIfEnoughMatches")) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/*/queries") + assert(res.method == "POST") + val expectedBody = parse( + """{"requests":[{"indexName":"theIndexName"},{"indexName":"theIndexName2","type":"facet","facet":"theFacet"},{"indexName":"theIndexName","type":"default"}],"strategy":"stopIfEnoughMatches"}""" + ) + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("search for multiple mixed requests in multiple indices with all parameters") { + val (client, echo) = testClient() + val future = client.search( + searchMethodParams = SearchMethodParams( + requests = Seq( + SearchForFacets( + indexName = "theIndexName", + `type` = SearchTypeFacet.withName("facet"), + facet = "theFacet", + facetQuery = Some("theFacetQuery"), + query = Some("theQuery"), + maxFacetHits = Some(50) + ), + SearchForHits( + indexName = "theIndexName", + query = Some("myQuery"), + hitsPerPage = Some(50), + `type` = Some(SearchTypeDefault.withName("default")) + ) + ), + strategy = Some(SearchStrategy.withName("stopIfEnoughMatches")) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/*/queries") + assert(res.method == "POST") + val expectedBody = parse( + """{"requests":[{"indexName":"theIndexName","type":"facet","facet":"theFacet","facetQuery":"theFacetQuery","query":"theQuery","maxFacetHits":50},{"indexName":"theIndexName","query":"myQuery","hitsPerPage":50,"type":"default"}],"strategy":"stopIfEnoughMatches"}""" + ) + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("search filters accept all of the possible shapes") { + val (client, echo) = testClient() + val future = client.search( + searchMethodParams = SearchMethodParams( + requests = Seq( + SearchForHits( + indexName = "theIndexName", + facetFilters = Some(FacetFilters("mySearch:filters")), + reRankingApplyFilter = Some(ReRankingApplyFilter("mySearch:filters")), + tagFilters = Some(TagFilters("mySearch:filters")), + numericFilters = Some(NumericFilters("mySearch:filters")), + optionalFilters = Some(OptionalFilters("mySearch:filters")) + ), + SearchForHits( + indexName = "theIndexName", + facetFilters = Some( + FacetFilters(Seq(MixedSearchFilters("mySearch:filters"), MixedSearchFilters(Seq("mySearch:filters")))) + ), + reRankingApplyFilter = Some( + ReRankingApplyFilter( + Seq(MixedSearchFilters("mySearch:filters"), MixedSearchFilters(Seq("mySearch:filters"))) + ) + ), + tagFilters = Some( + TagFilters(Seq(MixedSearchFilters("mySearch:filters"), MixedSearchFilters(Seq("mySearch:filters")))) + ), + numericFilters = Some( + NumericFilters(Seq(MixedSearchFilters("mySearch:filters"), MixedSearchFilters(Seq("mySearch:filters")))) + ), + optionalFilters = Some( + OptionalFilters(Seq(MixedSearchFilters("mySearch:filters"), MixedSearchFilters(Seq("mySearch:filters")))) + ) + ) + ) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/*/queries") + assert(res.method == "POST") + val expectedBody = parse( + """{"requests":[{"indexName":"theIndexName","facetFilters":"mySearch:filters","reRankingApplyFilter":"mySearch:filters","tagFilters":"mySearch:filters","numericFilters":"mySearch:filters","optionalFilters":"mySearch:filters"},{"indexName":"theIndexName","facetFilters":["mySearch:filters",["mySearch:filters"]],"reRankingApplyFilter":["mySearch:filters",["mySearch:filters"]],"tagFilters":["mySearch:filters",["mySearch:filters"]],"numericFilters":["mySearch:filters",["mySearch:filters"]],"optionalFilters":["mySearch:filters",["mySearch:filters"]]}]}""" + ) + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("search with all search parameters") { + val (client, echo) = testClient() + val future = client.search( + searchMethodParams = SearchMethodParams( + requests = Seq( + SearchForHits( + advancedSyntax = Some(true), + advancedSyntaxFeatures = Some(Seq(AdvancedSyntaxFeatures.withName("exactPhrase"))), + allowTyposOnNumericTokens = Some(true), + alternativesAsExact = Some(Seq(AlternativesAsExact.withName("multiWordsSynonym"))), + analytics = Some(true), + analyticsTags = Some(Seq("")), + aroundLatLng = Some(""), + aroundLatLngViaIP = Some(true), + aroundPrecision = Some(AroundPrecision(0)), + aroundRadius = Some(AroundRadiusAll.withName("all")), + attributeCriteriaComputedByMinProximity = Some(true), + attributesForFaceting = Some(Seq("")), + attributesToHighlight = Some(Seq("")), + attributesToRetrieve = Some(Seq("")), + attributesToSnippet = Some(Seq("")), + clickAnalytics = Some(true), + customRanking = Some(Seq("")), + decompoundQuery = Some(true), + disableExactOnAttributes = Some(Seq("")), + disableTypoToleranceOnAttributes = Some(Seq("")), + distinct = Some(Distinct(0)), + enableABTest = Some(true), + enablePersonalization = Some(true), + enableReRanking = Some(true), + enableRules = Some(true), + exactOnSingleWordQuery = Some(ExactOnSingleWordQuery.withName("attribute")), + explain = Some(Seq("foo", "bar")), + facetFilters = Some(FacetFilters(Seq(MixedSearchFilters("")))), + facetingAfterDistinct = Some(true), + facets = Some(Seq("")), + filters = Some(""), + getRankingInfo = Some(true), + highlightPostTag = Some(""), + highlightPreTag = Some(""), + hitsPerPage = Some(1), + ignorePlurals = Some(IgnorePlurals(false)), + indexName = "theIndexName", + insideBoundingBox = Some(Seq(Seq(47.3165, 4.9665, 47.3424, 5.0201), Seq(40.9234, 2.1185, 38.643, 1.9916))), + insidePolygon = Some( + Seq( + Seq(47.3165, 4.9665, 47.3424, 5.0201, 47.32, 4.9), + Seq(40.9234, 2.1185, 38.643, 1.9916, 39.2587, 2.0104) + ) + ), + keepDiacriticsOnCharacters = Some(""), + length = Some(1), + maxValuesPerFacet = Some(0), + minProximity = Some(1), + minWordSizefor1Typo = Some(0), + minWordSizefor2Typos = Some(0), + minimumAroundRadius = Some(1), + naturalLanguages = Some(Seq("")), + numericFilters = Some(NumericFilters(Seq(MixedSearchFilters("")))), + offset = Some(0), + optionalFilters = Some(OptionalFilters(Seq(MixedSearchFilters("")))), + optionalWords = Some(Seq("")), + page = Some(0), + percentileComputation = Some(true), + personalizationImpact = Some(0), + query = Some(""), + queryLanguages = Some(Seq("")), + queryType = Some(QueryType.withName("prefixAll")), + ranking = Some(Seq("")), + reRankingApplyFilter = Some(ReRankingApplyFilter(Seq(MixedSearchFilters("")))), + relevancyStrictness = Some(0), + removeStopWords = Some(RemoveStopWords(true)), + removeWordsIfNoResults = Some(RemoveWordsIfNoResults.withName("allOptional")), + renderingContent = Some( + RenderingContent( + facetOrdering = Some( + FacetOrdering( + facets = Some( + Facets( + order = Some(Seq("a", "b")) + ) + ), + values = Some( + Map( + "a" -> Value( + order = Some(Seq("b")), + sortRemainingBy = Some(SortRemainingBy.withName("count")) + ) + ) + ) + ) + ) + ) + ), + replaceSynonymsInHighlight = Some(true), + responseFields = Some(Seq("")), + restrictHighlightAndSnippetArrays = Some(true), + restrictSearchableAttributes = Some(Seq("")), + ruleContexts = Some(Seq("")), + similarQuery = Some(""), + snippetEllipsisText = Some(""), + sortFacetValuesBy = Some(""), + sumOrFiltersScores = Some(true), + synonyms = Some(true), + tagFilters = Some(TagFilters(Seq(MixedSearchFilters("")))), + `type` = Some(SearchTypeDefault.withName("default")), + typoTolerance = Some(TypoToleranceEnum.withName("min")), + userToken = Some("") + ) + ) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/*/queries") + assert(res.method == "POST") + val expectedBody = parse( + """{"requests":[{"advancedSyntax":true,"advancedSyntaxFeatures":["exactPhrase"],"allowTyposOnNumericTokens":true,"alternativesAsExact":["multiWordsSynonym"],"analytics":true,"analyticsTags":[""],"aroundLatLng":"","aroundLatLngViaIP":true,"aroundPrecision":0,"aroundRadius":"all","attributeCriteriaComputedByMinProximity":true,"attributesForFaceting":[""],"attributesToHighlight":[""],"attributesToRetrieve":[""],"attributesToSnippet":[""],"clickAnalytics":true,"customRanking":[""],"decompoundQuery":true,"disableExactOnAttributes":[""],"disableTypoToleranceOnAttributes":[""],"distinct":0,"enableABTest":true,"enablePersonalization":true,"enableReRanking":true,"enableRules":true,"exactOnSingleWordQuery":"attribute","explain":["foo","bar"],"facetFilters":[""],"facetingAfterDistinct":true,"facets":[""],"filters":"","getRankingInfo":true,"highlightPostTag":"","highlightPreTag":"","hitsPerPage":1,"ignorePlurals":false,"indexName":"theIndexName","insideBoundingBox":[[47.3165,4.9665,47.3424,5.0201],[40.9234,2.1185,38.643,1.9916]],"insidePolygon":[[47.3165,4.9665,47.3424,5.0201,47.32,4.9],[40.9234,2.1185,38.643,1.9916,39.2587,2.0104]],"keepDiacriticsOnCharacters":"","length":1,"maxValuesPerFacet":0,"minProximity":1,"minWordSizefor1Typo":0,"minWordSizefor2Typos":0,"minimumAroundRadius":1,"naturalLanguages":[""],"numericFilters":[""],"offset":0,"optionalFilters":[""],"optionalWords":[""],"page":0,"percentileComputation":true,"personalizationImpact":0,"query":"","queryLanguages":[""],"queryType":"prefixAll","ranking":[""],"reRankingApplyFilter":[""],"relevancyStrictness":0,"removeStopWords":true,"removeWordsIfNoResults":"allOptional","renderingContent":{"facetOrdering":{"facets":{"order":["a","b"]},"values":{"a":{"order":["b"],"sortRemainingBy":"count"}}}},"replaceSynonymsInHighlight":true,"responseFields":[""],"restrictHighlightAndSnippetArrays":true,"restrictSearchableAttributes":[""],"ruleContexts":[""],"similarQuery":"","snippetEllipsisText":"","sortFacetValuesBy":"","sumOrFiltersScores":true,"synonyms":true,"tagFilters":[""],"type":"default","typoTolerance":"min","userToken":""}]}""" + ) + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("get searchDictionaryEntries results with minimal parameters") { + val (client, echo) = testClient() + val future = client.searchDictionaryEntries( + dictionaryName = DictionaryType.withName("compounds"), + searchDictionaryEntriesParams = SearchDictionaryEntriesParams( + query = "foo" + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/dictionaries/compounds/search") + assert(res.method == "POST") + val expectedBody = parse("""{"query":"foo"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("get searchDictionaryEntries results with all parameters") { + val (client, echo) = testClient() + val future = client.searchDictionaryEntries( + dictionaryName = DictionaryType.withName("compounds"), + searchDictionaryEntriesParams = SearchDictionaryEntriesParams( + query = "foo", + page = Some(4), + hitsPerPage = Some(2), + language = Some("fr") + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/dictionaries/compounds/search") + assert(res.method == "POST") + val expectedBody = parse("""{"query":"foo","page":4,"hitsPerPage":2,"language":"fr"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("get searchForFacetValues results with minimal parameters") { + val (client, echo) = testClient() + val future = client.searchForFacetValues( + indexName = "indexName", + facetName = "facetName" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/indexName/facets/facetName/query") + assert(res.method == "POST") + val expectedBody = parse("""{}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("get searchForFacetValues results with all parameters") { + val (client, echo) = testClient() + val future = client.searchForFacetValues( + indexName = "indexName", + facetName = "facetName", + searchForFacetValuesRequest = Some( + SearchForFacetValuesRequest( + params = Some("query=foo&facetFilters=['bar']"), + facetQuery = Some("foo"), + maxFacetHits = Some(42) + ) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/indexName/facets/facetName/query") + assert(res.method == "POST") + val expectedBody = parse("""{"params":"query=foo&facetFilters=['bar']","facetQuery":"foo","maxFacetHits":42}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("searchRules0") { + val (client, echo) = testClient() + val future = client.searchRules( + indexName = "indexName", + searchRulesParams = Some( + SearchRulesParams( + query = Some("something") + ) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/indexName/rules/search") + assert(res.method == "POST") + val expectedBody = parse("""{"query":"something"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("search with minimal parameters") { + val (client, echo) = testClient() + val future = client.searchSingleIndex( + indexName = "indexName" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/indexName/query") + assert(res.method == "POST") + val expectedBody = parse("""{}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("search with searchParams") { + val (client, echo) = testClient() + val future = client.searchSingleIndex( + indexName = "indexName", + searchParams = Some( + SearchParamsObject( + query = Some("myQuery"), + facetFilters = Some(FacetFilters(Seq(MixedSearchFilters("tags:algolia")))) + ) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/indexName/query") + assert(res.method == "POST") + val expectedBody = parse("""{"query":"myQuery","facetFilters":["tags:algolia"]}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("searchSynonyms with minimal parameters") { + val (client, echo) = testClient() + val future = client.searchSynonyms( + indexName = "indexName" + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/indexName/synonyms/search") + assert(res.method == "POST") + val expectedBody = parse("""{}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("searchSynonyms with all parameters") { + val (client, echo) = testClient() + val future = client.searchSynonyms( + indexName = "indexName", + `type` = Some(SynonymType.withName("altcorrection1")), + page = Some(10), + hitsPerPage = Some(10), + searchSynonymsParams = Some( + SearchSynonymsParams( + query = Some("myQuery") + ) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/indexName/synonyms/search") + assert(res.method == "POST") + val expectedBody = parse("""{"query":"myQuery"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = + parse("""{"type":"altcorrection1","page":"10","hitsPerPage":"10"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("searchUserIds0") { + val (client, echo) = testClient() + val future = client.searchUserIds( + searchUserIdsParams = SearchUserIdsParams( + query = "test", + clusterName = Some("theClusterName"), + page = Some(5), + hitsPerPage = Some(10) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/clusters/mapping/search") + assert(res.method == "POST") + val expectedBody = parse("""{"query":"test","clusterName":"theClusterName","page":5,"hitsPerPage":10}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("get setDictionarySettings results with minimal parameters") { + val (client, echo) = testClient() + val future = client.setDictionarySettings( + dictionarySettingsParams = DictionarySettingsParams( + disableStandardEntries = StandardEntries( + plurals = Some(Map("fr" -> false, "en" -> false, "ru" -> true)) + ) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/dictionaries/*/settings") + assert(res.method == "PUT") + val expectedBody = parse("""{"disableStandardEntries":{"plurals":{"fr":false,"en":false,"ru":true}}}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("get setDictionarySettings results with all parameters") { + val (client, echo) = testClient() + val future = client.setDictionarySettings( + dictionarySettingsParams = DictionarySettingsParams( + disableStandardEntries = StandardEntries( + plurals = Some(Map("fr" -> false, "en" -> false, "ru" -> true)), + stopwords = Some(Map("fr" -> false)), + compounds = Some(Map("ru" -> true)) + ) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/dictionaries/*/settings") + assert(res.method == "PUT") + val expectedBody = parse( + """{"disableStandardEntries":{"plurals":{"fr":false,"en":false,"ru":true},"stopwords":{"fr":false},"compounds":{"ru":true}}}""" + ) + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("setSettings with minimal parameters") { + val (client, echo) = testClient() + val future = client.setSettings( + indexName = "theIndexName", + indexSettings = IndexSettings( + paginationLimitedTo = Some(10) + ), + forwardToReplicas = Some(true) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/theIndexName/settings") + assert(res.method == "PUT") + val expectedBody = parse("""{"paginationLimitedTo":10}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"forwardToReplicas":"true"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("setSettings allow boolean `typoTolerance`") { + val (client, echo) = testClient() + val future = client.setSettings( + indexName = "theIndexName", + indexSettings = IndexSettings( + typoTolerance = Some(TypoTolerance(true)) + ), + forwardToReplicas = Some(true) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/theIndexName/settings") + assert(res.method == "PUT") + val expectedBody = parse("""{"typoTolerance":true}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"forwardToReplicas":"true"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("setSettings allow enum `typoTolerance`") { + val (client, echo) = testClient() + val future = client.setSettings( + indexName = "theIndexName", + indexSettings = IndexSettings( + typoTolerance = Some(TypoToleranceEnum.withName("min")) + ), + forwardToReplicas = Some(true) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/theIndexName/settings") + assert(res.method == "PUT") + val expectedBody = parse("""{"typoTolerance":"min"}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"forwardToReplicas":"true"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("setSettings allow boolean `ignorePlurals`") { + val (client, echo) = testClient() + val future = client.setSettings( + indexName = "theIndexName", + indexSettings = IndexSettings( + ignorePlurals = Some(IgnorePlurals(true)) + ), + forwardToReplicas = Some(true) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/theIndexName/settings") + assert(res.method == "PUT") + val expectedBody = parse("""{"ignorePlurals":true}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"forwardToReplicas":"true"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("setSettings allow list of string `ignorePlurals`") { + val (client, echo) = testClient() + val future = client.setSettings( + indexName = "theIndexName", + indexSettings = IndexSettings( + ignorePlurals = Some(IgnorePlurals(Seq("algolia"))) + ), + forwardToReplicas = Some(true) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/theIndexName/settings") + assert(res.method == "PUT") + val expectedBody = parse("""{"ignorePlurals":["algolia"]}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"forwardToReplicas":"true"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("setSettings allow boolean `removeStopWords`") { + val (client, echo) = testClient() + val future = client.setSettings( + indexName = "theIndexName", + indexSettings = IndexSettings( + removeStopWords = Some(RemoveStopWords(true)) + ), + forwardToReplicas = Some(true) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/theIndexName/settings") + assert(res.method == "PUT") + val expectedBody = parse("""{"removeStopWords":true}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"forwardToReplicas":"true"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("setSettings allow list of string `removeStopWords`") { + val (client, echo) = testClient() + val future = client.setSettings( + indexName = "theIndexName", + indexSettings = IndexSettings( + removeStopWords = Some(RemoveStopWords(Seq("algolia"))) + ), + forwardToReplicas = Some(true) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/theIndexName/settings") + assert(res.method == "PUT") + val expectedBody = parse("""{"removeStopWords":["algolia"]}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"forwardToReplicas":"true"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("setSettings allow boolean `distinct`") { + val (client, echo) = testClient() + val future = client.setSettings( + indexName = "theIndexName", + indexSettings = IndexSettings( + distinct = Some(Distinct(true)) + ), + forwardToReplicas = Some(true) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/theIndexName/settings") + assert(res.method == "PUT") + val expectedBody = parse("""{"distinct":true}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"forwardToReplicas":"true"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("setSettings allow integers for `distinct`") { + val (client, echo) = testClient() + val future = client.setSettings( + indexName = "theIndexName", + indexSettings = IndexSettings( + distinct = Some(Distinct(1)) + ), + forwardToReplicas = Some(true) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/theIndexName/settings") + assert(res.method == "PUT") + val expectedBody = parse("""{"distinct":1}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + val expectedQuery = parse("""{"forwardToReplicas":"true"}""").asInstanceOf[JObject].obj.toMap + val actualQuery = res.queryParameters + assert(actualQuery.size == expectedQuery.size) + for ((k, v) <- actualQuery) { + assert(expectedQuery.contains(k)) + assert(expectedQuery(k).values == v) + } + } + + test("setSettings allow all `indexSettings`") { + val (client, echo) = testClient() + val future = client.setSettings( + indexName = "theIndexName", + indexSettings = IndexSettings( + advancedSyntax = Some(true), + advancedSyntaxFeatures = Some(Seq(AdvancedSyntaxFeatures.withName("exactPhrase"))), + allowCompressionOfIntegerArray = Some(true), + allowTyposOnNumericTokens = Some(true), + alternativesAsExact = Some(Seq(AlternativesAsExact.withName("singleWordSynonym"))), + attributeCriteriaComputedByMinProximity = Some(true), + attributeForDistinct = Some("test"), + attributesForFaceting = Some(Seq("algolia")), + attributesToHighlight = Some(Seq("algolia")), + attributesToRetrieve = Some(Seq("algolia")), + attributesToSnippet = Some(Seq("algolia")), + attributesToTransliterate = Some(Seq("algolia")), + camelCaseAttributes = Some(Seq("algolia")), + customNormalization = Some(Map("algolia" -> Map("aloglia" -> "aglolia"))), + customRanking = Some(Seq("algolia")), + decompoundQuery = Some(false), + decompoundedAttributes = Some(JObject(List(JField("algolia", JString("aloglia"))))), + disableExactOnAttributes = Some(Seq("algolia")), + disablePrefixOnAttributes = Some(Seq("algolia")), + disableTypoToleranceOnAttributes = Some(Seq("algolia")), + disableTypoToleranceOnWords = Some(Seq("algolia")), + distinct = Some(Distinct(3)), + enablePersonalization = Some(true), + enableReRanking = Some(false), + enableRules = Some(true), + exactOnSingleWordQuery = Some(ExactOnSingleWordQuery.withName("attribute")), + highlightPreTag = Some(""), + highlightPostTag = Some(""), + hitsPerPage = Some(10), + ignorePlurals = Some(IgnorePlurals(false)), + indexLanguages = Some(Seq("algolia")), + keepDiacriticsOnCharacters = Some("abc"), + maxFacetHits = Some(20), + maxValuesPerFacet = Some(30), + minProximity = Some(6), + minWordSizefor1Typo = Some(5), + minWordSizefor2Typos = Some(11), + mode = Some(Mode.withName("neuralSearch")), + numericAttributesForFiltering = Some(Seq("algolia")), + optionalWords = Some(Seq("myspace")), + paginationLimitedTo = Some(0), + queryLanguages = Some(Seq("algolia")), + queryType = Some(QueryType.withName("prefixLast")), + ranking = Some(Seq("geo")), + reRankingApplyFilter = Some(ReRankingApplyFilter("mySearch:filters")), + relevancyStrictness = Some(10), + removeStopWords = Some(RemoveStopWords(false)), + removeWordsIfNoResults = Some(RemoveWordsIfNoResults.withName("lastWords")), + renderingContent = Some( + RenderingContent( + facetOrdering = Some( + FacetOrdering( + facets = Some( + Facets( + order = Some(Seq("a", "b")) + ) + ), + values = Some( + Map( + "a" -> Value( + order = Some(Seq("b")), + sortRemainingBy = Some(SortRemainingBy.withName("count")) + ) + ) + ) + ) + ) + ) + ), + replaceSynonymsInHighlight = Some(true), + replicas = Some(Seq("")), + responseFields = Some(Seq("algolia")), + restrictHighlightAndSnippetArrays = Some(true), + searchableAttributes = Some(Seq("foo")), + semanticSearch = Some( + SemanticSearch( + eventSources = Some(Seq("foo")) + ) + ), + separatorsToIndex = Some("bar"), + snippetEllipsisText = Some("---"), + sortFacetValuesBy = Some("date"), + typoTolerance = Some(TypoTolerance(false)), + unretrievableAttributes = Some(Seq("foo")), + userData = Some(JObject(List(JField("user", JString("data"))))) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/indexes/theIndexName/settings") + assert(res.method == "PUT") + val expectedBody = parse( + """{"advancedSyntax":true,"advancedSyntaxFeatures":["exactPhrase"],"allowCompressionOfIntegerArray":true,"allowTyposOnNumericTokens":true,"alternativesAsExact":["singleWordSynonym"],"attributeCriteriaComputedByMinProximity":true,"attributeForDistinct":"test","attributesForFaceting":["algolia"],"attributesToHighlight":["algolia"],"attributesToRetrieve":["algolia"],"attributesToSnippet":["algolia"],"attributesToTransliterate":["algolia"],"camelCaseAttributes":["algolia"],"customNormalization":{"algolia":{"aloglia":"aglolia"}},"customRanking":["algolia"],"decompoundQuery":false,"decompoundedAttributes":{"algolia":"aloglia"},"disableExactOnAttributes":["algolia"],"disablePrefixOnAttributes":["algolia"],"disableTypoToleranceOnAttributes":["algolia"],"disableTypoToleranceOnWords":["algolia"],"distinct":3,"enablePersonalization":true,"enableReRanking":false,"enableRules":true,"exactOnSingleWordQuery":"attribute","highlightPreTag":"","highlightPostTag":"","hitsPerPage":10,"ignorePlurals":false,"indexLanguages":["algolia"],"keepDiacriticsOnCharacters":"abc","maxFacetHits":20,"maxValuesPerFacet":30,"minProximity":6,"minWordSizefor1Typo":5,"minWordSizefor2Typos":11,"mode":"neuralSearch","numericAttributesForFiltering":["algolia"],"optionalWords":["myspace"],"paginationLimitedTo":0,"queryLanguages":["algolia"],"queryType":"prefixLast","ranking":["geo"],"reRankingApplyFilter":"mySearch:filters","relevancyStrictness":10,"removeStopWords":false,"removeWordsIfNoResults":"lastWords","renderingContent":{"facetOrdering":{"facets":{"order":["a","b"]},"values":{"a":{"order":["b"],"sortRemainingBy":"count"}}}},"replaceSynonymsInHighlight":true,"replicas":[""],"responseFields":["algolia"],"restrictHighlightAndSnippetArrays":true,"searchableAttributes":["foo"],"semanticSearch":{"eventSources":["foo"]},"separatorsToIndex":"bar","snippetEllipsisText":"---","sortFacetValuesBy":"date","typoTolerance":false,"unretrievableAttributes":["foo"],"userData":{"user":"data"}}""" + ) + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + + test("updateApiKey0") { + val (client, echo) = testClient() + val future = client.updateApiKey( + key = "myApiKey", + apiKey = ApiKey( + acl = Seq(Acl.withName("search"), Acl.withName("addObject")), + validity = Some(300), + maxQueriesPerIPPerHour = Some(100), + maxHitsPerQuery = Some(20) + ) + ) + + Await.ready(future, Duration.Inf) + val res = echo.lastResponse.get + + assert(res.path == "/1/keys/myApiKey") + assert(res.method == "PUT") + val expectedBody = + parse("""{"acl":["search","addObject"],"validity":300,"maxQueriesPerIPPerHour":100,"maxHitsPerQuery":20}""") + val actualBody = parse(res.body.get) + assert(actualBody == expectedBody) + } + +}