@coveo/quantic 3.44.1 → 3.44.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) hide show
  1. package/force-app/main/default/classes/OrganizationEndpointsTest.cls +71 -15
  2. package/force-app/main/default/classes/RecommendationsControllerTest.cls +1 -1
  3. package/force-app/main/default/lwc/quanticTabBar/quanticTabBar.js +148 -125
  4. package/force-app/main/default/staticresources/coveoheadless/case-assist/headless.js +16 -16
  5. package/force-app/main/default/staticresources/coveoheadless/headless.js +17 -17
  6. package/force-app/main/default/staticresources/coveoheadless/insight/headless.js +16 -16
  7. package/force-app/main/default/staticresources/coveoheadless/recommendation/headless.js +16 -16
  8. package/package.json +33 -31
  9. package/force-app/main/default/lwc/quanticAriaLive/__tests__/quanticAriaLive.test.js +0 -106
  10. package/force-app/main/default/lwc/quanticBreadcrumbManager/__tests__/quanticBreadcrumbManager.test.js +0 -752
  11. package/force-app/main/default/lwc/quanticBreadcrumbManager/e2e/data.ts +0 -130
  12. package/force-app/main/default/lwc/quanticBreadcrumbManager/e2e/fixture.ts +0 -87
  13. package/force-app/main/default/lwc/quanticBreadcrumbManager/e2e/pageObject.ts +0 -282
  14. package/force-app/main/default/lwc/quanticBreadcrumbManager/e2e/quanticBreadcrumbManager.e2e.ts +0 -208
  15. package/force-app/main/default/lwc/quanticCarousel/__tests__/quanticCarousel.test.js +0 -262
  16. package/force-app/main/default/lwc/quanticCaseClassification/__tests__/quanticCaseClassification.test.js +0 -819
  17. package/force-app/main/default/lwc/quanticCaseClassification/e2e/data.ts +0 -23
  18. package/force-app/main/default/lwc/quanticCaseClassification/e2e/fixture.ts +0 -51
  19. package/force-app/main/default/lwc/quanticCaseClassification/e2e/pageObject.ts +0 -152
  20. package/force-app/main/default/lwc/quanticCaseClassification/e2e/quanticCaseClassification.e2e.ts +0 -269
  21. package/force-app/main/default/lwc/quanticCategoryFacet/__tests__/quanticCategoryFacet.test.js +0 -1183
  22. package/force-app/main/default/lwc/quanticCategoryFacet/e2e/data.ts +0 -91
  23. package/force-app/main/default/lwc/quanticCategoryFacet/e2e/fixture.ts +0 -79
  24. package/force-app/main/default/lwc/quanticCategoryFacet/e2e/pageObject.ts +0 -55
  25. package/force-app/main/default/lwc/quanticCategoryFacet/e2e/quanticCategoryFacet.e2e.ts +0 -219
  26. package/force-app/main/default/lwc/quanticCitation/__tests__/quanticCitation.test.js +0 -581
  27. package/force-app/main/default/lwc/quanticColoredResultBadge/__tests__/quanticColoredResultBadge.test.js +0 -212
  28. package/force-app/main/default/lwc/quanticDateFacet/__tests__/quanticDateFacet.test.js +0 -688
  29. package/force-app/main/default/lwc/quanticDateFacet/e2e/data.ts +0 -44
  30. package/force-app/main/default/lwc/quanticDateFacet/e2e/fixture.ts +0 -72
  31. package/force-app/main/default/lwc/quanticDateFacet/e2e/pageObject.ts +0 -27
  32. package/force-app/main/default/lwc/quanticDateFacet/e2e/quanticDateFacet.e2e.ts +0 -167
  33. package/force-app/main/default/lwc/quanticDidYouMean/__tests__/quanticDidYouMean.test.js +0 -348
  34. package/force-app/main/default/lwc/quanticDidYouMean/e2e/data.ts +0 -48
  35. package/force-app/main/default/lwc/quanticDidYouMean/e2e/fixture.ts +0 -84
  36. package/force-app/main/default/lwc/quanticDidYouMean/e2e/pageObject.ts +0 -173
  37. package/force-app/main/default/lwc/quanticDidYouMean/e2e/quanticDidYouMean.e2e.ts +0 -219
  38. package/force-app/main/default/lwc/quanticDocumentSuggestion/__tests__/quanticDocumentSuggestion.test.js +0 -404
  39. package/force-app/main/default/lwc/quanticDocumentSuggestion/e2e/fixture.ts +0 -38
  40. package/force-app/main/default/lwc/quanticDocumentSuggestion/e2e/pageObject.ts +0 -52
  41. package/force-app/main/default/lwc/quanticDocumentSuggestion/e2e/quanticDocumentSuggestion.e2e.ts +0 -102
  42. package/force-app/main/default/lwc/quanticFacet/__tests__/quanticFacet.test.js +0 -1105
  43. package/force-app/main/default/lwc/quanticFacet/e2e/data.ts +0 -62
  44. package/force-app/main/default/lwc/quanticFacet/e2e/fixture.ts +0 -78
  45. package/force-app/main/default/lwc/quanticFacet/e2e/pageObject.ts +0 -67
  46. package/force-app/main/default/lwc/quanticFacet/e2e/quanticFacet.e2e.ts +0 -242
  47. package/force-app/main/default/lwc/quanticFacetCaption/__tests__/quanticFacetCaption.test.js +0 -28
  48. package/force-app/main/default/lwc/quanticFacetManager/__tests__/quanticFacetManager.test.js +0 -178
  49. package/force-app/main/default/lwc/quanticFacetManager/e2e/data.ts +0 -59
  50. package/force-app/main/default/lwc/quanticFacetManager/e2e/fixture.ts +0 -75
  51. package/force-app/main/default/lwc/quanticFacetManager/e2e/pageObject.ts +0 -23
  52. package/force-app/main/default/lwc/quanticFacetManager/e2e/quanticFacetManager.e2e.ts +0 -82
  53. package/force-app/main/default/lwc/quanticFeedback/__tests__/quanticFeedback.test.js +0 -403
  54. package/force-app/main/default/lwc/quanticFeedbackModal/__tests__/quanticFeedbackModal.test.js +0 -448
  55. package/force-app/main/default/lwc/quanticFeedbackModalQna/__tests__/quanticFeedbackModalQna.test.js +0 -298
  56. package/force-app/main/default/lwc/quanticFoldedResultList/__tests__/quanticFoldedResultList.test.js +0 -323
  57. package/force-app/main/default/lwc/quanticFoldedResultList/e2e/fixture.ts +0 -74
  58. package/force-app/main/default/lwc/quanticFoldedResultList/e2e/pageObject.ts +0 -81
  59. package/force-app/main/default/lwc/quanticFoldedResultList/e2e/quanticFoldedResultList.e2e.ts +0 -69
  60. package/force-app/main/default/lwc/quanticGeneratedAnswer/__tests__/quanticGeneratedAnswer.test.js +0 -1575
  61. package/force-app/main/default/lwc/quanticGeneratedAnswer/e2e/agentData.ts +0 -279
  62. package/force-app/main/default/lwc/quanticGeneratedAnswer/e2e/data.ts +0 -56
  63. package/force-app/main/default/lwc/quanticGeneratedAnswer/e2e/fixture-agent.ts +0 -77
  64. package/force-app/main/default/lwc/quanticGeneratedAnswer/e2e/fixture.ts +0 -194
  65. package/force-app/main/default/lwc/quanticGeneratedAnswer/e2e/pageObject.ts +0 -599
  66. package/force-app/main/default/lwc/quanticGeneratedAnswer/e2e/quanticGeneratedAnswer.e2e.ts +0 -333
  67. package/force-app/main/default/lwc/quanticGeneratedAnswer/e2e/quanticGeneratedAnswerAgent.e2e.ts +0 -298
  68. package/force-app/main/default/lwc/quanticGeneratedAnswerBody/__tests__/quanticGeneratedAnswerBody.test.js +0 -418
  69. package/force-app/main/default/lwc/quanticGeneratedAnswerContent/__tests__/quanticGeneratedAnswerContent.test.js +0 -447
  70. package/force-app/main/default/lwc/quanticGeneratedAnswerCopyToClipboard/__tests__/quanticGeneratedAnswerCopyToClipboard.test.js +0 -129
  71. package/force-app/main/default/lwc/quanticGeneratedAnswerFollowUpInput/__tests__/quanticGeneratedAnswerFollowUpInput.test.js +0 -466
  72. package/force-app/main/default/lwc/quanticGeneratedAnswerStreamOfThought/__tests__/quanticGeneratedAnswerStreamOfThought.test.js +0 -402
  73. package/force-app/main/default/lwc/quanticGeneratedAnswerStreamOfThought/__tests__/stepsUtils.test.js +0 -118
  74. package/force-app/main/default/lwc/quanticGeneratedAnswerThread/__tests__/quanticGeneratedAnswerThread.test.js +0 -285
  75. package/force-app/main/default/lwc/quanticHeading/__tests__/quanticHeading.test.js +0 -71
  76. package/force-app/main/default/lwc/quanticHeadlessLoader/__tests__/quanticHeadlessLoader.test.js +0 -651
  77. package/force-app/main/default/lwc/quanticInsightInterface/__tests__/quanticInsightInterface.test.js +0 -194
  78. package/force-app/main/default/lwc/quanticInsightSummary/__tests__/quanticInsightSummary.test.js +0 -230
  79. package/force-app/main/default/lwc/quanticModal/__tests__/quanticModal.test.js +0 -205
  80. package/force-app/main/default/lwc/quanticNotifications/__tests__/quanticNotifications.test.js +0 -309
  81. package/force-app/main/default/lwc/quanticNotifications/e2e/fixture.ts +0 -62
  82. package/force-app/main/default/lwc/quanticNotifications/e2e/pageObject.ts +0 -55
  83. package/force-app/main/default/lwc/quanticNotifications/e2e/quanticNotifications.e2e.ts +0 -47
  84. package/force-app/main/default/lwc/quanticNumericFacet/__tests__/quanticNumericFacet.test.js +0 -953
  85. package/force-app/main/default/lwc/quanticNumericFacet/e2e/data.ts +0 -48
  86. package/force-app/main/default/lwc/quanticNumericFacet/e2e/fixture.ts +0 -75
  87. package/force-app/main/default/lwc/quanticNumericFacet/e2e/pageObject.ts +0 -59
  88. package/force-app/main/default/lwc/quanticNumericFacet/e2e/quanticNumericFacet.e2e.ts +0 -186
  89. package/force-app/main/default/lwc/quanticPager/__tests__/quanticPager.test.js +0 -430
  90. package/force-app/main/default/lwc/quanticPager/e2e/fixture.ts +0 -65
  91. package/force-app/main/default/lwc/quanticPager/e2e/pageObject.ts +0 -69
  92. package/force-app/main/default/lwc/quanticPager/e2e/quanticPager.e2e.ts +0 -106
  93. package/force-app/main/default/lwc/quanticPlaceholder/__tests__/quanticPlaceholder.test.js +0 -47
  94. package/force-app/main/default/lwc/quanticQuickviewContent/__tests__/data/defaultTestCase.json +0 -13
  95. package/force-app/main/default/lwc/quanticQuickviewContent/__tests__/data/youtubeTestCase.json +0 -14
  96. package/force-app/main/default/lwc/quanticQuickviewContent/__tests__/quanticQuickviewContent.test.js +0 -82
  97. package/force-app/main/default/lwc/quanticRadioButtonsGroup/__tests__/quanticRadioButtonsGroup.test.js +0 -273
  98. package/force-app/main/default/lwc/quanticRecentQueriesList/__tests__/quanticRecentQueriesList.test.js +0 -448
  99. package/force-app/main/default/lwc/quanticRecentQueriesList/e2e/fixture.ts +0 -43
  100. package/force-app/main/default/lwc/quanticRecentQueriesList/e2e/pageObject.ts +0 -55
  101. package/force-app/main/default/lwc/quanticRecentQueriesList/e2e/quanticRecentQueriesList.e2e.ts +0 -93
  102. package/force-app/main/default/lwc/quanticRecentResultsList/__tests__/quanticRecentResultsList.test.js +0 -516
  103. package/force-app/main/default/lwc/quanticRecentResultsList/e2e/fixture.ts +0 -43
  104. package/force-app/main/default/lwc/quanticRecentResultsList/e2e/pageObject.ts +0 -61
  105. package/force-app/main/default/lwc/quanticRecentResultsList/e2e/quanticRecentResultsList.e2e.ts +0 -48
  106. package/force-app/main/default/lwc/quanticRecommendationList/__tests__/quanticRecommendationList.test.js +0 -491
  107. package/force-app/main/default/lwc/quanticRecommendationList/e2e/fixture.ts +0 -36
  108. package/force-app/main/default/lwc/quanticRecommendationList/e2e/pageObject.ts +0 -52
  109. package/force-app/main/default/lwc/quanticRecommendationList/e2e/quanticRecommendationList.e2e.ts +0 -53
  110. package/force-app/main/default/lwc/quanticRefineModalContent/__tests__/quanticRefineModalContent.test.js +0 -747
  111. package/force-app/main/default/lwc/quanticRefineToggle/__tests__/quanticRefineToggle.test.js +0 -544
  112. package/force-app/main/default/lwc/quanticResultAction/__tests__/quanticResultAction.test.js +0 -262
  113. package/force-app/main/default/lwc/quanticResultActionBar/__tests__/quanticResultActionBar.test.js +0 -141
  114. package/force-app/main/default/lwc/quanticResultChildren/__tests__/quanticResultChildren.test.js +0 -340
  115. package/force-app/main/default/lwc/quanticResultCopyToClipboard/__tests__/quanticResultCopyToClipboard.test.js +0 -300
  116. package/force-app/main/default/lwc/quanticResultCopyToClipboard/e2e/fixture.ts +0 -49
  117. package/force-app/main/default/lwc/quanticResultCopyToClipboard/e2e/pageObject.ts +0 -49
  118. package/force-app/main/default/lwc/quanticResultCopyToClipboard/e2e/quanticResultCopyToClipboard.e2e.ts +0 -40
  119. package/force-app/main/default/lwc/quanticResultDate/__tests__/quanticResultDate.test.js +0 -144
  120. package/force-app/main/default/lwc/quanticResultField/__tests__/quanticResultField.test.js +0 -120
  121. package/force-app/main/default/lwc/quanticResultHighlightedTextField/__tests__/quanticResultHighlightedTextField.test.js +0 -209
  122. package/force-app/main/default/lwc/quanticResultLink/__tests__/quanticResultLink.test.js +0 -302
  123. package/force-app/main/default/lwc/quanticResultList/__tests__/quanticResultList.test.js +0 -342
  124. package/force-app/main/default/lwc/quanticResultList/e2e/fixture.ts +0 -70
  125. package/force-app/main/default/lwc/quanticResultList/e2e/pageObject.ts +0 -81
  126. package/force-app/main/default/lwc/quanticResultList/e2e/quanticResultList.e2e.ts +0 -69
  127. package/force-app/main/default/lwc/quanticResultMultiValueText/__tests__/quanticResultMultiValueText.test.js +0 -235
  128. package/force-app/main/default/lwc/quanticResultNumber/__tests__/quanticResultNumber.test.js +0 -144
  129. package/force-app/main/default/lwc/quanticResultPrintableUri/__tests__/quanticResultPrintableUri.test.js +0 -324
  130. package/force-app/main/default/lwc/quanticResultQuickview/__tests__/quanticResultQuickview.test.js +0 -308
  131. package/force-app/main/default/lwc/quanticResultQuickview/e2e/fixture.ts +0 -85
  132. package/force-app/main/default/lwc/quanticResultQuickview/e2e/pageObject.ts +0 -38
  133. package/force-app/main/default/lwc/quanticResultQuickview/e2e/quanticResultQuickView.e2e.ts +0 -66
  134. package/force-app/main/default/lwc/quanticResultTemplate/__tests__/quanticResultTemplate.test.js +0 -90
  135. package/force-app/main/default/lwc/quanticResultText/__tests__/quanticResultText.test.js +0 -155
  136. package/force-app/main/default/lwc/quanticResultsPerPage/__tests__/quanticResultsPerPage.test.js +0 -464
  137. package/force-app/main/default/lwc/quanticResultsPerPage/e2e/fixture.ts +0 -78
  138. package/force-app/main/default/lwc/quanticResultsPerPage/e2e/pageObject.ts +0 -85
  139. package/force-app/main/default/lwc/quanticResultsPerPage/e2e/quanticResultsPerPage.e2e.ts +0 -97
  140. package/force-app/main/default/lwc/quanticSearchBox/__tests__/quanticSearchBox.test.js +0 -487
  141. package/force-app/main/default/lwc/quanticSearchBox/e2e/fixture.ts +0 -86
  142. package/force-app/main/default/lwc/quanticSearchBox/e2e/pageObject.ts +0 -45
  143. package/force-app/main/default/lwc/quanticSearchBox/e2e/quanticSearchBox.e2e.ts +0 -159
  144. package/force-app/main/default/lwc/quanticSearchBoxInput/__tests__/quanticSearchBoxInput.test.js +0 -743
  145. package/force-app/main/default/lwc/quanticSearchBoxSuggestionsList/__tests__/quanticSearchBoxSuggestionsList.test.js +0 -571
  146. package/force-app/main/default/lwc/quanticSearchBoxSuggestionsList/e2e/fixture.ts +0 -113
  147. package/force-app/main/default/lwc/quanticSearchBoxSuggestionsList/e2e/pageObject.ts +0 -113
  148. package/force-app/main/default/lwc/quanticSearchBoxSuggestionsList/e2e/quanticSearchBoxSuggestionsList.e2e.ts +0 -282
  149. package/force-app/main/default/lwc/quanticSmartSnippet/__tests__/quanticSmartSnippet.test.js +0 -341
  150. package/force-app/main/default/lwc/quanticSmartSnippet/e2e/data.ts +0 -21
  151. package/force-app/main/default/lwc/quanticSmartSnippet/e2e/fixture.ts +0 -93
  152. package/force-app/main/default/lwc/quanticSmartSnippet/e2e/pageObject.ts +0 -196
  153. package/force-app/main/default/lwc/quanticSmartSnippet/e2e/quanticSmartSnippet.e2e.ts +0 -168
  154. package/force-app/main/default/lwc/quanticSmartSnippetAnswer/__tests__/quanticSmartSnippetAnswer.test.js +0 -126
  155. package/force-app/main/default/lwc/quanticSmartSnippetSource/__tests__/quanticSmartSnippetSource.test.js +0 -290
  156. package/force-app/main/default/lwc/quanticSmartSnippetSuggestions/__tests__/quanticSmartSnippetSuggestions.test.js +0 -329
  157. package/force-app/main/default/lwc/quanticSmartSnippetSuggestions/e2e/data.ts +0 -31
  158. package/force-app/main/default/lwc/quanticSmartSnippetSuggestions/e2e/fixture.ts +0 -95
  159. package/force-app/main/default/lwc/quanticSmartSnippetSuggestions/e2e/pageObject.ts +0 -160
  160. package/force-app/main/default/lwc/quanticSmartSnippetSuggestions/e2e/quanticSmartSnippetSuggestions.e2e.ts +0 -127
  161. package/force-app/main/default/lwc/quanticSort/__tests__/quanticSort.test.js +0 -416
  162. package/force-app/main/default/lwc/quanticSort/e2e/fixture.ts +0 -62
  163. package/force-app/main/default/lwc/quanticSort/e2e/pageObject.ts +0 -100
  164. package/force-app/main/default/lwc/quanticSort/e2e/quanticSort.e2e.ts +0 -86
  165. package/force-app/main/default/lwc/quanticSourceCitations/__tests__/quanticSourceCitations.test.js +0 -156
  166. package/force-app/main/default/lwc/quanticStandaloneSearchBox/__tests__/quanticStandaloneSearchBox.test.js +0 -387
  167. package/force-app/main/default/lwc/quanticStandaloneSearchBox/e2e/fixture.ts +0 -54
  168. package/force-app/main/default/lwc/quanticStandaloneSearchBox/e2e/pageObject.ts +0 -54
  169. package/force-app/main/default/lwc/quanticStandaloneSearchBox/e2e/quanticStandaloneSearchBox.e2e.ts +0 -72
  170. package/force-app/main/default/lwc/quanticStatefulButton/__tests__/quanticStatefulButton.test.js +0 -222
  171. package/force-app/main/default/lwc/quanticSummary/__tests__/quanticSummary.test.js +0 -244
  172. package/force-app/main/default/lwc/quanticTab/__tests__/quanticTab.test.js +0 -333
  173. package/force-app/main/default/lwc/quanticTab/e2e/fixture.ts +0 -60
  174. package/force-app/main/default/lwc/quanticTab/e2e/pageObject.ts +0 -68
  175. package/force-app/main/default/lwc/quanticTab/e2e/quanticTab.e2e.ts +0 -72
  176. package/force-app/main/default/lwc/quanticTabBar/__tests__/quanticTabBar.test.js +0 -331
  177. package/force-app/main/default/lwc/quanticTabBar/e2e/fixture.ts +0 -65
  178. package/force-app/main/default/lwc/quanticTabBar/e2e/pageObject.ts +0 -80
  179. package/force-app/main/default/lwc/quanticTabBar/e2e/quanticTabBar.e2e.ts +0 -172
  180. package/force-app/main/default/lwc/quanticThreadItem/__tests__/quanticThreadItem.test.js +0 -314
  181. package/force-app/main/default/lwc/quanticTimeframeFacet/__tests__/quanticTimeframeFacet.test.js +0 -1059
  182. package/force-app/main/default/lwc/quanticTimeframeFacet/e2e/data.ts +0 -66
  183. package/force-app/main/default/lwc/quanticTimeframeFacet/e2e/fixture.ts +0 -74
  184. package/force-app/main/default/lwc/quanticTimeframeFacet/e2e/pageObject.ts +0 -43
  185. package/force-app/main/default/lwc/quanticTimeframeFacet/e2e/quanticTimeframeFacet.e2e.ts +0 -184
  186. package/force-app/main/default/lwc/quanticTooltip/__tests__/quanticTooltip.test.js +0 -107
  187. package/force-app/main/default/lwc/quanticUserAction/__tests__/quanticUserAction.test.js +0 -427
  188. package/force-app/main/default/lwc/quanticUserActionsSession/__tests__/quanticUserActionsSession.test.js +0 -269
  189. package/force-app/main/default/lwc/quanticUserActionsTimeline/__tests__/data/userActionsState.json +0 -89
  190. package/force-app/main/default/lwc/quanticUserActionsTimeline/__tests__/quanticUserActionsTimeline.test.js +0 -511
  191. package/force-app/main/default/lwc/quanticUserActionsToggle/__tests__/quanticUserActionsToggle.test.js +0 -229
  192. package/force-app/main/default/lwc/quanticUserActionsToggle/e2e/data.ts +0 -32
  193. package/force-app/main/default/lwc/quanticUserActionsToggle/e2e/fixture.ts +0 -32
  194. package/force-app/main/default/lwc/quanticUserActionsToggle/e2e/pageObject.ts +0 -71
  195. package/force-app/main/default/lwc/quanticUserActionsToggle/e2e/quanticUserActionsToggle.e2e.ts +0 -39
  196. package/force-app/main/default/lwc/quanticUtils/__tests__/accessibilityUtils.test.js +0 -214
  197. package/force-app/main/default/lwc/quanticUtils/__tests__/citationAnchoringUtils.test.js +0 -84
  198. package/force-app/main/default/lwc/quanticUtils/__tests__/facetDependenciesUtils.test.js +0 -92
  199. package/force-app/main/default/lwc/quanticUtils/__tests__/facetStoreUtils.test.js +0 -86
  200. package/force-app/main/default/lwc/quanticUtils/__tests__/markdownUtils.test.js +0 -109
  201. package/force-app/main/default/lwc/quanticUtils/__tests__/quanticUtils.test.js +0 -233
  202. package/force-app/main/default/lwc/quanticUtils/__tests__/timeAndDateUtils.test.js +0 -22
  203. package/force-app/main/default/lwc/quanticViewedByCustomerBadge/__tests__/quanticViewedByCustomerBadge.test.js +0 -131
@@ -1,404 +0,0 @@
1
- jest.mock('c/quanticHeadlessLoader');
2
-
3
- import QuanticDocumentSuggestion from 'c/quanticDocumentSuggestion';
4
- import {buildCreateTestComponent, cleanup, flushPromises} from 'c/testUtils';
5
- import * as quanticHeadlessLoader from 'c/quanticHeadlessLoader';
6
- const headlessLoaderMock = jest.mocked(quanticHeadlessLoader);
7
-
8
- const engineMock = {
9
- id: 'exampleEngineIdMock',
10
- dispatch: jest.fn(),
11
- };
12
- headlessLoaderMock.initializeWithHeadless.mockImplementation(
13
- async (element, _, initialize) => {
14
- initialize(engineMock);
15
- }
16
- );
17
- headlessLoaderMock.getHeadlessEnginePromise.mockImplementation(() =>
18
- Promise.resolve(engineMock.id)
19
- );
20
-
21
- let updateSuggestions;
22
- const documentSuggestionListMock = {
23
- subscribe: jest.fn((callback) => {
24
- updateSuggestions = async () => {
25
- callback();
26
- await flushPromises();
27
- };
28
- return () => {}; // Fake unsubscribe function
29
- }),
30
- };
31
-
32
- const functionsMocks = {
33
- fetchDocumentSuggestions: jest.fn(),
34
- logDocumentSuggestionClick: jest.fn(),
35
- logDocumentSuggestionRating: jest.fn(),
36
- };
37
-
38
- const headlessCaseAssistMock = {
39
- buildDocumentSuggestionList: jest
40
- .fn()
41
- .mockReturnValue(documentSuggestionListMock),
42
- buildQuickview: jest.fn().mockReturnValue(documentSuggestionListMock),
43
- loadCaseAssistAnalyticsActions: jest.fn().mockReturnValue({
44
- logDocumentSuggestionClick: functionsMocks.logDocumentSuggestionClick,
45
- logDocumentSuggestionRating: functionsMocks.logDocumentSuggestionRating,
46
- }),
47
- loadDocumentSuggestionActions: jest.fn().mockReturnValue({
48
- fetchDocumentSuggestions: functionsMocks.fetchDocumentSuggestions,
49
- }),
50
- };
51
-
52
- // @ts-ignore
53
- global.CoveoHeadlessCaseAssist = headlessCaseAssistMock;
54
- headlessLoaderMock.getHeadlessBundle.mockReturnValue(headlessCaseAssistMock);
55
-
56
- const createTestComponent = buildCreateTestComponent(
57
- QuanticDocumentSuggestion,
58
- 'c-quantic-document-suggestion',
59
- {
60
- engineId: engineMock.id,
61
- }
62
- );
63
-
64
- const selectors = {
65
- container: '.slds-card',
66
- accordion: 'lightning-accordion',
67
- accordionSection: 'lightning-accordion-section',
68
- noSuggestions: 'slot[name="no-suggestions"]',
69
- spinner: '.loading-holder lightning-spinner',
70
- quickview: 'c-quantic-result-quickview',
71
- componentError: 'c-quantic-component-error',
72
- };
73
-
74
- function mockErroneousHeadlessInitialization() {
75
- headlessLoaderMock.initializeWithHeadless.mockImplementation(
76
- async (element) => {
77
- if (element instanceof QuanticDocumentSuggestion) {
78
- element.setInitializationError();
79
- }
80
- }
81
- );
82
- }
83
-
84
- describe('c-quantic-document-suggestion', () => {
85
- beforeEach(() => {
86
- documentSuggestionListMock.state = {
87
- documents: [],
88
- loading: false,
89
- };
90
- });
91
-
92
- afterEach(() => {
93
- cleanup();
94
- });
95
-
96
- describe('on initialization', () => {
97
- it('should initialize the component and subscribe to the controller', async () => {
98
- createTestComponent();
99
-
100
- expect(headlessLoaderMock.registerComponentForInit).toHaveBeenCalled();
101
- expect(headlessLoaderMock.initializeWithHeadless).toHaveBeenCalled();
102
- expect(
103
- headlessCaseAssistMock.buildDocumentSuggestionList
104
- ).toHaveBeenCalledTimes(1);
105
- expect(
106
- headlessCaseAssistMock.buildDocumentSuggestionList
107
- ).toHaveBeenCalledWith(engineMock);
108
- expect(
109
- headlessCaseAssistMock.loadCaseAssistAnalyticsActions
110
- ).toHaveBeenCalledTimes(1);
111
- expect(
112
- headlessCaseAssistMock.loadDocumentSuggestionActions
113
- ).toHaveBeenCalledTimes(1);
114
- expect(engineMock.dispatch).not.toHaveBeenCalled();
115
- expect(documentSuggestionListMock.subscribe).toHaveBeenCalledTimes(1);
116
- expect(updateSuggestions).toBeDefined();
117
- });
118
- });
119
-
120
- describe('when loading suggestions', () => {
121
- it('should render the loading holder only', async () => {
122
- const element = createTestComponent();
123
- documentSuggestionListMock.state.loading = true;
124
- updateSuggestions();
125
- await flushPromises();
126
-
127
- const spinner = element.shadowRoot.querySelector(selectors.spinner);
128
- const container = element.shadowRoot.querySelector(selectors.container);
129
- const noSuggestions = element.shadowRoot.querySelector(
130
- selectors.noSuggestions
131
- );
132
- expect(spinner).toBeTruthy();
133
- expect(container).toBeFalsy();
134
- expect(noSuggestions).toBeFalsy();
135
- });
136
- });
137
-
138
- describe('when there are no suggestions', () => {
139
- it('should render the no-suggestions message', async () => {
140
- const element = createTestComponent();
141
- await updateSuggestions();
142
-
143
- const accordion = element.shadowRoot.querySelector(selectors.accordion);
144
- const noSuggestions = element.shadowRoot.querySelector(
145
- selectors.noSuggestions
146
- );
147
- expect(accordion).toBeFalsy();
148
- expect(noSuggestions).toBeTruthy();
149
- });
150
- });
151
-
152
- describe('when fetchOnInit property is set to true', () => {
153
- it('should fetch document suggestion on initialization', async () => {
154
- createTestComponent({
155
- fetchOnInit: true,
156
- });
157
- await flushPromises();
158
-
159
- expect(functionsMocks.fetchDocumentSuggestions).toHaveBeenCalledTimes(1);
160
- });
161
- });
162
-
163
- describe('with suggestions', () => {
164
- beforeEach(() => {
165
- documentSuggestionListMock.state.documents = [
166
- {
167
- uniqueId: 'ego',
168
- fields: {
169
- uri: 'weed eater',
170
- },
171
- },
172
- {
173
- uniqueId: 'stihl',
174
- fields: {
175
- uri: 'chainsaw',
176
- },
177
- },
178
- ];
179
- });
180
-
181
- it('should render the component and all parts with default options', async () => {
182
- const element = createTestComponent();
183
- await flushPromises();
184
- expect(functionsMocks.fetchDocumentSuggestions).not.toHaveBeenCalled();
185
- expect(headlessLoaderMock.registerComponentForInit).toHaveBeenCalled();
186
-
187
- const accordion = element.shadowRoot.querySelector(selectors.accordion);
188
- const noSuggestions = element.shadowRoot.querySelector(
189
- selectors.noSuggestions
190
- );
191
- const componentError = element.shadowRoot.querySelector(
192
- selectors.componentError
193
- );
194
-
195
- expect(accordion).toBeFalsy();
196
- expect(noSuggestions).toBeTruthy();
197
- expect(componentError).toBeFalsy();
198
-
199
- await updateSuggestions();
200
-
201
- const updatedNoSuggestions = element.shadowRoot.querySelector(
202
- selectors.noSuggestions
203
- );
204
- const container = element.shadowRoot.querySelector(selectors.container);
205
- const updatedAccordion = element.shadowRoot.querySelector(
206
- selectors.accordion
207
- );
208
-
209
- expect(updatedNoSuggestions).toBeFalsy();
210
- expect(container).toBeTruthy();
211
- expect(updatedAccordion).toBeTruthy();
212
-
213
- const sections = element.shadowRoot.querySelectorAll(
214
- selectors.accordionSection
215
- );
216
- expect(sections.length).toBe(
217
- documentSuggestionListMock.state.documents.length
218
- );
219
-
220
- sections.forEach((section, index) => {
221
- const {uniqueId, title} =
222
- documentSuggestionListMock.state.documents[index];
223
- expect(section.label).toBe(title);
224
- expect(section.getAttribute('data-id')).toBe(uniqueId);
225
- expect(section.querySelector(selectors.quickview)).toBeTruthy();
226
- expect(
227
- section
228
- .querySelector('slot[name="actions"]')
229
- .getAttribute('data-doc-id')
230
- ).toBe(uniqueId);
231
- expect(
232
- section
233
- .querySelector('slot[name="rating"]')
234
- .getAttribute('data-doc-id')
235
- ).toBe(uniqueId);
236
- });
237
- });
238
-
239
- it('should not render quickview button when withoutQuickview is set to true', async () => {
240
- const element = createTestComponent({
241
- withoutQuickview: true,
242
- });
243
- await updateSuggestions();
244
-
245
- expect(element.shadowRoot.querySelector(selectors.quickview)).toBeFalsy();
246
- });
247
-
248
- it('should log a suggestion click if the suggestion is not opened', async () => {
249
- const element = createTestComponent();
250
- await updateSuggestions();
251
-
252
- const sections = element.shadowRoot.querySelectorAll(
253
- selectors.accordionSection
254
- );
255
- const accordion = element.shadowRoot.querySelector(selectors.accordion);
256
-
257
- // First document is already opened and will be collapsed, no click event logged.
258
- sections[0].click();
259
- expect(functionsMocks.logDocumentSuggestionClick).toHaveBeenCalledTimes(
260
- 0
261
- );
262
- accordion.activeSectionName = sections[1].name;
263
-
264
- sections[1].click();
265
- await flushPromises();
266
- expect(functionsMocks.logDocumentSuggestionClick).toHaveBeenCalledTimes(
267
- 1
268
- );
269
- expect(functionsMocks.logDocumentSuggestionClick).toHaveBeenCalledWith(
270
- documentSuggestionListMock.state.documents[1].uniqueId
271
- );
272
- });
273
-
274
- it('should log analytics when rating a document', async () => {
275
- const element = createTestComponent();
276
- await updateSuggestions();
277
-
278
- const customEvent = new CustomEvent('quantic__rating', {
279
- detail: {id: 'mastercraft', score: 2},
280
- });
281
- element.shadowRoot.dispatchEvent(customEvent);
282
- expect(functionsMocks.logDocumentSuggestionRating).toHaveBeenCalledTimes(
283
- 1
284
- );
285
- expect(functionsMocks.logDocumentSuggestionRating).toHaveBeenCalledWith(
286
- 'mastercraft',
287
- 2
288
- );
289
- });
290
-
291
- it('should truncate documents to maxDocuments if the state contains more', async () => {
292
- const element = createTestComponent({
293
- maxDocuments: 1,
294
- });
295
- await updateSuggestions();
296
-
297
- const sections = element.shadowRoot.querySelectorAll(
298
- selectors.accordionSection
299
- );
300
- expect(sections.length).toBe(1);
301
- });
302
-
303
- it('should open the documents depending on numberOfAutoOpenedDocuments', async () => {
304
- const element = createTestComponent({
305
- fetchOnInit: true,
306
- numberOfAutoOpenedDocuments: 2,
307
- });
308
- await updateSuggestions();
309
-
310
- const accordion = element.shadowRoot.querySelector(selectors.accordion);
311
- const sections = element.shadowRoot.querySelectorAll(
312
- selectors.accordionSection
313
- );
314
- expect(sections.length).toBe(2);
315
- expect(accordion.activeSectionName).toEqual([
316
- sections[0].name,
317
- sections[1].name,
318
- ]);
319
- });
320
- });
321
-
322
- describe('when two document suggestions have a similar title', () => {
323
- it('should open the right document suggestion when clicked', async () => {
324
- documentSuggestionListMock.state.documents = [
325
- {
326
- title: 'dewalt',
327
- uniqueId: 'dw745',
328
- fields: {
329
- uri: 'table saw',
330
- },
331
- },
332
- {
333
- title: 'dewalt',
334
- uniqueId: 'dw560',
335
- fields: {
336
- uri: 'router',
337
- },
338
- },
339
- ];
340
-
341
- const element = createTestComponent({
342
- numberOfAutoOpenedDocuments: 0,
343
- });
344
- await updateSuggestions();
345
-
346
- const sectionToClick = element.shadowRoot.querySelectorAll(
347
- selectors.accordionSection
348
- )[1];
349
- const accordion = element.shadowRoot.querySelector(selectors.accordion);
350
- accordion.activeSectionName = sectionToClick.name;
351
- sectionToClick.click();
352
- expect(sectionToClick.name).toBe(
353
- documentSuggestionListMock.state.documents[1].uniqueId
354
- );
355
- expect(functionsMocks.logDocumentSuggestionClick).toHaveBeenCalledTimes(
356
- 1
357
- );
358
- expect(functionsMocks.logDocumentSuggestionClick).toHaveBeenCalledWith(
359
- sectionToClick.name
360
- );
361
- });
362
- });
363
-
364
- describe('with invalid options', () => {
365
- it('should set an error message if maxDocuments is invalid', async () => {
366
- const element = createTestComponent({
367
- maxDocuments: 0,
368
- });
369
- await flushPromises();
370
-
371
- const componentError = element.shadowRoot.querySelector(
372
- selectors.componentError
373
- );
374
- expect(componentError).toBeTruthy();
375
- });
376
- it('should set an error message if numberOfAutoOpenedDocuments is invalid', async () => {
377
- const element = createTestComponent({
378
- numberOfAutoOpenedDocuments: -1,
379
- });
380
- await flushPromises();
381
-
382
- const componentError = element.shadowRoot.querySelector(
383
- selectors.componentError
384
- );
385
- expect(componentError).toBeTruthy();
386
- });
387
- });
388
-
389
- describe('when an initialization error occurs', () => {
390
- beforeEach(() => {
391
- mockErroneousHeadlessInitialization();
392
- });
393
-
394
- it('should display the initialization error component', async () => {
395
- const element = createTestComponent();
396
- await flushPromises();
397
-
398
- const componentError = element.shadowRoot.querySelector(
399
- selectors.componentError
400
- );
401
- expect(componentError).toBeTruthy();
402
- });
403
- });
404
- });
@@ -1,38 +0,0 @@
1
- import {DocumentSuggestionObject} from './pageObject';
2
- import {quanticBase} from '../../../../../../playwright/fixtures/baseFixture';
3
- import {SearchObject} from '../../../../../../playwright/page-object/searchObject';
4
- import {CaseAssistObject} from '../../../../../../playwright/page-object/caseAssistObject';
5
-
6
- const pageUrl = 's/quantic-document-suggestion';
7
-
8
- interface DocumentSuggestionOptions {
9
- engineId: string;
10
- searchEngineId: string;
11
- maxDocuments: number;
12
- fetchOnInit: boolean;
13
- withoutQuickview: boolean;
14
- numberOfAutoOpenedDocuments: number;
15
- }
16
-
17
- type QuanticDocumentSuggestionE2EFixtures = {
18
- documentSuggestion: DocumentSuggestionObject;
19
- search: SearchObject;
20
- caseAssist: CaseAssistObject;
21
- options: Partial<DocumentSuggestionOptions>;
22
- urlHash: string;
23
- };
24
-
25
- export const test = quanticBase.extend<QuanticDocumentSuggestionE2EFixtures>({
26
- options: {},
27
- urlHash: '',
28
- caseAssist: async ({page}, use) => {
29
- await use(new CaseAssistObject(page));
30
- },
31
- documentSuggestion: async ({page, options, configuration}, use) => {
32
- await page.goto(pageUrl);
33
- await configuration.configure(options);
34
- await use(new DocumentSuggestionObject(page));
35
- },
36
- });
37
-
38
- export {expect} from '@playwright/test';
@@ -1,52 +0,0 @@
1
- import type {Locator, Page, Request} from '@playwright/test';
2
- import {
3
- isUaClickEvent,
4
- isEventProtocol,
5
- } from '../../../../../../playwright/utils/requests';
6
-
7
- export class DocumentSuggestionObject {
8
- private page: Page;
9
-
10
- constructor(page: Page) {
11
- this.page = page;
12
- }
13
-
14
- get documentSuggestion() {
15
- return this.page.locator('c-quantic-document-suggestion');
16
- }
17
-
18
- get accordion() {
19
- return this.page.locator('lightning-accordion');
20
- }
21
-
22
- get sections() {
23
- return this.page.locator('lightning-accordion-section');
24
- }
25
-
26
- get noSuggestionsMessage() {
27
- return this.page.getByText('No suggestions', {exact: true});
28
- }
29
-
30
- sectionContent(index: number): Locator {
31
- return this.sections.nth(index).locator('div.slds-accordion__content');
32
- }
33
-
34
- async clickSuggestion(index: number): Promise<void> {
35
- await this.sections.nth(index).click();
36
- }
37
-
38
- async waitForSuggestionClickEvent(mode: string): Promise<Request> {
39
- return this.page.waitForRequest((request) => {
40
- if (mode === 'legacy' && isUaClickEvent(request)) {
41
- const requestBody = request.postDataJSON?.();
42
- const event = JSON.parse(requestBody.clickEvent);
43
- return event.actionCause === 'documentSuggestionClick';
44
- } else if (mode === 'next' && isEventProtocol(request)) {
45
- const requestBody = request.postDataJSON?.();
46
- const requestData = requestBody[0];
47
- return requestData.meta.type === 'CaseAssist.DocumentSuggestionClick';
48
- }
49
- return false;
50
- });
51
- }
52
- }
@@ -1,102 +0,0 @@
1
- /* eslint-disable no-await-in-loop */
2
- import {test, expect} from './fixture';
3
-
4
- const fakeTrackingId = 'tracking_id_123';
5
-
6
- ['legacy', 'next'].forEach((mode) => {
7
- test.describe(`quantic document suggestion with analytics mode: ${mode}`, () => {
8
- let analyticsMode = 'legacy';
9
- test.beforeEach(async ({documentSuggestion, page}) => {
10
- analyticsMode = mode;
11
- if (analyticsMode === 'next') {
12
- await page.context().addCookies([
13
- {
14
- name: 'Coveo-Pendragon',
15
- value: fakeTrackingId,
16
- domain: '.my.site.com',
17
- path: '/',
18
- },
19
- {
20
- name: 'LSKey-c$Coveo-Pendragon',
21
- value: fakeTrackingId,
22
- domain: '.my.site.com',
23
- path: '/',
24
- },
25
- ]);
26
- }
27
-
28
- await expect(documentSuggestion.noSuggestionsMessage).toBeVisible();
29
- });
30
-
31
- test('should handle clicking on a document suggestion', async ({
32
- page,
33
- documentSuggestion,
34
- caseAssist,
35
- }) => {
36
- const responsePromise = caseAssist.waitForDocumentSuggestionResponse();
37
- await caseAssist.fetchSuggestions();
38
- const response = await responsePromise;
39
- const suggestions = await response.json();
40
- const clickedPosition = 2;
41
-
42
- // Hack(?) to have the request payload in the analytics request next.
43
- await page.route('*analytics*', (route) => {
44
- route.continue();
45
- });
46
-
47
- const analyticsPromise =
48
- documentSuggestion.waitForSuggestionClickEvent(analyticsMode);
49
- await documentSuggestion.clickSuggestion(clickedPosition);
50
- const analyticsRequest = await analyticsPromise;
51
- const payload = analyticsRequest.postDataJSON?.();
52
-
53
- if (analyticsMode === 'legacy') {
54
- expect(payload).toBeDefined();
55
- const event = JSON.parse(payload.clickEvent);
56
- expect(event.actionCause).toBe('documentSuggestionClick');
57
- expect(event.documentPosition).toBe(clickedPosition + 1);
58
- expect(event.documentTitle).toBe(
59
- suggestions.documents[clickedPosition].title
60
- );
61
- expect(event.documentUrl).toBe(
62
- suggestions.documents[clickedPosition].clickUri
63
- );
64
- } else {
65
- expect(payload).toBeDefined();
66
- expect(payload.length).toBe(1);
67
- expect(payload[0].meta.config.trackingId).toBe(fakeTrackingId);
68
- expect(payload[0].meta.type).toBe('CaseAssist.DocumentSuggestionClick');
69
- expect(payload[0].responseId).toBeDefined();
70
- expect(payload[0].position).toBe(clickedPosition + 1);
71
- expect(payload[0].itemMetadata.title).toBe(
72
- suggestions.documents[clickedPosition].title
73
- );
74
- expect(payload[0].itemMetadata.uniqueFieldName).toBe('uniqueId');
75
- expect(payload[0].itemMetadata.uniqueFieldValue).toBe(
76
- suggestions.documents[clickedPosition].uniqueId
77
- );
78
- }
79
- });
80
-
81
- test.describe('when numberOfAutoOpenedDocuments is set to the same as maxDocument', () => {
82
- test.use({
83
- options: {
84
- maxDocuments: 6,
85
- numberOfAutoOpenedDocuments: 6,
86
- },
87
- });
88
-
89
- test('should open all documents', async ({
90
- documentSuggestion,
91
- caseAssist,
92
- }) => {
93
- await caseAssist.fetchSuggestions();
94
- await expect(documentSuggestion.accordion).toBeVisible();
95
- const sections = await documentSuggestion.sections.count();
96
- for (let index = 0; index < sections; index++) {
97
- await expect(documentSuggestion.sectionContent(index)).toBeVisible();
98
- }
99
- });
100
- });
101
- });
102
- });