@coveo/quantic 3.33.0 → 3.33.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 (296) hide show
  1. package/README.md +15 -15
  2. package/force-app/main/default/lwc/quanticAriaLive/__tests__/quanticAriaLive.test.js +106 -0
  3. package/force-app/main/default/lwc/quanticBreadcrumbManager/__tests__/quanticBreadcrumbManager.test.js +752 -0
  4. package/force-app/main/default/lwc/quanticBreadcrumbManager/e2e/fixture.ts +76 -0
  5. package/force-app/main/default/lwc/quanticBreadcrumbManager/e2e/pageObject.ts +282 -0
  6. package/force-app/main/default/lwc/quanticBreadcrumbManager/e2e/quanticBreadcrumbManager.e2e.ts +167 -0
  7. package/force-app/main/default/lwc/quanticCarousel/__tests__/quanticCarousel.test.js +262 -0
  8. package/force-app/main/default/lwc/quanticCaseClassification/__tests__/quanticCaseClassification.test.js +819 -0
  9. package/force-app/main/default/lwc/quanticCaseClassification/e2e/data.ts +23 -0
  10. package/force-app/main/default/lwc/quanticCaseClassification/e2e/fixture.ts +51 -0
  11. package/force-app/main/default/lwc/quanticCaseClassification/e2e/pageObject.ts +152 -0
  12. package/force-app/main/default/lwc/quanticCaseClassification/e2e/quanticCaseClassification.e2e.ts +269 -0
  13. package/force-app/main/default/lwc/quanticCategoryFacet/__tests__/quanticCategoryFacet.test.js +1183 -0
  14. package/force-app/main/default/lwc/quanticCategoryFacet/e2e/data.ts +27 -0
  15. package/force-app/main/default/lwc/quanticCategoryFacet/e2e/fixture.ts +75 -0
  16. package/force-app/main/default/lwc/quanticCategoryFacet/e2e/pageObject.ts +55 -0
  17. package/force-app/main/default/lwc/quanticCategoryFacet/e2e/quanticCategoryFacet.e2e.ts +199 -0
  18. package/force-app/main/default/lwc/quanticCitation/__tests__/quanticCitation.test.js +371 -0
  19. package/force-app/main/default/lwc/quanticColoredResultBadge/__tests__/quanticColoredResultBadge.test.js +212 -0
  20. package/force-app/main/default/lwc/quanticDateFacet/__tests__/quanticDateFacet.test.js +688 -0
  21. package/force-app/main/default/lwc/quanticDateFacet/e2e/data.ts +24 -0
  22. package/force-app/main/default/lwc/quanticDateFacet/e2e/fixture.ts +68 -0
  23. package/force-app/main/default/lwc/quanticDateFacet/e2e/pageObject.ts +27 -0
  24. package/force-app/main/default/lwc/quanticDateFacet/e2e/quanticDateFacet.e2e.ts +145 -0
  25. package/force-app/main/default/lwc/quanticDidYouMean/__tests__/quanticDidYouMean.test.js +348 -0
  26. package/force-app/main/default/lwc/quanticDidYouMean/e2e/data.ts +48 -0
  27. package/force-app/main/default/lwc/quanticDidYouMean/e2e/fixture.ts +80 -0
  28. package/force-app/main/default/lwc/quanticDidYouMean/e2e/pageObject.ts +173 -0
  29. package/force-app/main/default/lwc/quanticDidYouMean/e2e/quanticDidYouMean.e2e.ts +219 -0
  30. package/force-app/main/default/lwc/quanticDocumentSuggestion/__tests__/quanticDocumentSuggestion.test.js +404 -0
  31. package/force-app/main/default/lwc/quanticDocumentSuggestion/e2e/fixture.ts +38 -0
  32. package/force-app/main/default/lwc/quanticDocumentSuggestion/e2e/pageObject.ts +52 -0
  33. package/force-app/main/default/lwc/quanticDocumentSuggestion/e2e/quanticDocumentSuggestion.e2e.ts +102 -0
  34. package/force-app/main/default/lwc/quanticFacet/__tests__/quanticFacet.test.js +1105 -0
  35. package/force-app/main/default/lwc/quanticFacet/e2e/data.ts +21 -0
  36. package/force-app/main/default/lwc/quanticFacet/e2e/fixture.ts +73 -0
  37. package/force-app/main/default/lwc/quanticFacet/e2e/pageObject.ts +67 -0
  38. package/force-app/main/default/lwc/quanticFacet/e2e/quanticFacet.e2e.ts +208 -0
  39. package/force-app/main/default/lwc/quanticFacetCaption/__tests__/quanticFacetCaption.test.js +28 -0
  40. package/force-app/main/default/lwc/quanticFacetManager/__tests__/quanticFacetManager.test.js +178 -0
  41. package/force-app/main/default/lwc/quanticFacetManager/e2e/fixture.ts +64 -0
  42. package/force-app/main/default/lwc/quanticFacetManager/e2e/pageObject.ts +23 -0
  43. package/force-app/main/default/lwc/quanticFacetManager/e2e/quanticFacetManager.e2e.ts +82 -0
  44. package/force-app/main/default/lwc/quanticFeedback/__tests__/quanticFeedback.test.js +392 -0
  45. package/force-app/main/default/lwc/quanticFeedbackModal/__tests__/quanticFeedbackModal.test.js +448 -0
  46. package/force-app/main/default/lwc/quanticFeedbackModalQna/__tests__/quanticFeedbackModalQna.test.js +298 -0
  47. package/force-app/main/default/lwc/quanticFoldedResultList/__tests__/quanticFoldedResultList.test.js +323 -0
  48. package/force-app/main/default/lwc/quanticFoldedResultList/e2e/fixture.ts +70 -0
  49. package/force-app/main/default/lwc/quanticFoldedResultList/e2e/pageObject.ts +81 -0
  50. package/force-app/main/default/lwc/quanticFoldedResultList/e2e/quanticFoldedResultList.e2e.ts +69 -0
  51. package/force-app/main/default/lwc/quanticGeneratedAnswer/__tests__/quanticGeneratedAnswer.test.js +1158 -0
  52. package/force-app/main/default/lwc/quanticGeneratedAnswer/e2e/data.ts +56 -0
  53. package/force-app/main/default/lwc/quanticGeneratedAnswer/e2e/fixture.ts +185 -0
  54. package/force-app/main/default/lwc/quanticGeneratedAnswer/e2e/pageObject.ts +451 -0
  55. package/force-app/main/default/lwc/quanticGeneratedAnswer/e2e/quanticGeneratedAnswer.e2e.ts +337 -0
  56. package/force-app/main/default/lwc/quanticGeneratedAnswerContent/__tests__/quanticGeneratedAnswerContent.test.js +151 -0
  57. package/force-app/main/default/lwc/quanticHeading/__tests__/quanticHeading.test.js +71 -0
  58. package/force-app/main/default/lwc/quanticHeadlessLoader/__tests__/quanticHeadlessLoader.test.js +651 -0
  59. package/force-app/main/default/lwc/quanticInsightInterface/__tests__/quanticInsightInterface.test.js +194 -0
  60. package/force-app/main/default/lwc/quanticInsightSummary/__tests__/quanticInsightSummary.test.js +230 -0
  61. package/force-app/main/default/lwc/quanticModal/__tests__/quanticModal.test.js +205 -0
  62. package/force-app/main/default/lwc/quanticNotifications/__tests__/quanticNotifications.test.js +309 -0
  63. package/force-app/main/default/lwc/quanticNotifications/e2e/fixture.ts +58 -0
  64. package/force-app/main/default/lwc/quanticNotifications/e2e/pageObject.ts +55 -0
  65. package/force-app/main/default/lwc/quanticNotifications/e2e/quanticNotifications.e2e.ts +47 -0
  66. package/force-app/main/default/lwc/quanticNumericFacet/__tests__/quanticNumericFacet.test.js +953 -0
  67. package/force-app/main/default/lwc/quanticNumericFacet/e2e/data.ts +28 -0
  68. package/force-app/main/default/lwc/quanticNumericFacet/e2e/fixture.ts +71 -0
  69. package/force-app/main/default/lwc/quanticNumericFacet/e2e/pageObject.ts +59 -0
  70. package/force-app/main/default/lwc/quanticNumericFacet/e2e/quanticNumericFacet.e2e.ts +164 -0
  71. package/force-app/main/default/lwc/quanticPager/__tests__/quanticPager.test.js +430 -0
  72. package/force-app/main/default/lwc/quanticPager/e2e/fixture.ts +65 -0
  73. package/force-app/main/default/lwc/quanticPager/e2e/pageObject.ts +69 -0
  74. package/force-app/main/default/lwc/quanticPager/e2e/quanticPager.e2e.ts +106 -0
  75. package/force-app/main/default/lwc/quanticPlaceholder/__tests__/quanticPlaceholder.test.js +47 -0
  76. package/force-app/main/default/lwc/quanticQuickviewContent/__tests__/data/defaultTestCase.json +13 -0
  77. package/force-app/main/default/lwc/quanticQuickviewContent/__tests__/data/youtubeTestCase.json +14 -0
  78. package/force-app/main/default/lwc/quanticQuickviewContent/__tests__/quanticQuickviewContent.test.js +82 -0
  79. package/force-app/main/default/lwc/quanticRadioButtonsGroup/__tests__/quanticRadioButtonsGroup.test.js +273 -0
  80. package/force-app/main/default/lwc/quanticRecentQueriesList/__tests__/quanticRecentQueriesList.test.js +448 -0
  81. package/force-app/main/default/lwc/quanticRecentQueriesList/e2e/fixture.ts +42 -0
  82. package/force-app/main/default/lwc/quanticRecentQueriesList/e2e/pageObject.ts +55 -0
  83. package/force-app/main/default/lwc/quanticRecentQueriesList/e2e/quanticRecentQueriesList.e2e.ts +93 -0
  84. package/force-app/main/default/lwc/quanticRecentResultsList/__tests__/quanticRecentResultsList.test.js +516 -0
  85. package/force-app/main/default/lwc/quanticRecentResultsList/e2e/fixture.ts +42 -0
  86. package/force-app/main/default/lwc/quanticRecentResultsList/e2e/pageObject.ts +61 -0
  87. package/force-app/main/default/lwc/quanticRecentResultsList/e2e/quanticRecentResultsList.e2e.ts +48 -0
  88. package/force-app/main/default/lwc/quanticRecommendationList/__tests__/quanticRecommendationList.test.js +491 -0
  89. package/force-app/main/default/lwc/quanticRecommendationList/e2e/fixture.ts +35 -0
  90. package/force-app/main/default/lwc/quanticRecommendationList/e2e/pageObject.ts +52 -0
  91. package/force-app/main/default/lwc/quanticRecommendationList/e2e/quanticRecommendationList.e2e.ts +53 -0
  92. package/force-app/main/default/lwc/quanticRefineModalContent/__tests__/quanticRefineModalContent.test.js +747 -0
  93. package/force-app/main/default/lwc/quanticRefineToggle/__tests__/quanticRefineToggle.test.js +542 -0
  94. package/force-app/main/default/lwc/quanticResultAction/__tests__/quanticResultAction.test.js +262 -0
  95. package/force-app/main/default/lwc/quanticResultActionBar/__tests__/quanticResultActionBar.test.js +141 -0
  96. package/force-app/main/default/lwc/quanticResultChildren/__tests__/quanticResultChildren.test.js +340 -0
  97. package/force-app/main/default/lwc/quanticResultCopyToClipboard/__tests__/quanticResultCopyToClipboard.test.js +300 -0
  98. package/force-app/main/default/lwc/quanticResultCopyToClipboard/e2e/fixture.ts +46 -0
  99. package/force-app/main/default/lwc/quanticResultCopyToClipboard/e2e/pageObject.ts +49 -0
  100. package/force-app/main/default/lwc/quanticResultCopyToClipboard/e2e/quanticResultCopyToClipboard.e2e.ts +40 -0
  101. package/force-app/main/default/lwc/quanticResultDate/__tests__/quanticResultDate.test.js +144 -0
  102. package/force-app/main/default/lwc/quanticResultField/__tests__/quanticResultField.test.js +120 -0
  103. package/force-app/main/default/lwc/quanticResultHighlightedTextField/__tests__/quanticResultHighlightedTextField.test.js +209 -0
  104. package/force-app/main/default/lwc/quanticResultLink/__tests__/quanticResultLink.test.js +261 -0
  105. package/force-app/main/default/lwc/quanticResultList/__tests__/quanticResultList.test.js +342 -0
  106. package/force-app/main/default/lwc/quanticResultList/e2e/fixture.ts +66 -0
  107. package/force-app/main/default/lwc/quanticResultList/e2e/pageObject.ts +81 -0
  108. package/force-app/main/default/lwc/quanticResultList/e2e/quanticResultList.e2e.ts +69 -0
  109. package/force-app/main/default/lwc/quanticResultMultiValueText/__tests__/quanticResultMultiValueText.test.js +235 -0
  110. package/force-app/main/default/lwc/quanticResultNumber/__tests__/quanticResultNumber.test.js +144 -0
  111. package/force-app/main/default/lwc/quanticResultPrintableUri/__tests__/quanticResultPrintableUri.test.js +324 -0
  112. package/force-app/main/default/lwc/quanticResultQuickview/__tests__/quanticResultQuickview.test.js +301 -0
  113. package/force-app/main/default/lwc/quanticResultQuickview/e2e/fixture.ts +81 -0
  114. package/force-app/main/default/lwc/quanticResultQuickview/e2e/pageObject.ts +38 -0
  115. package/force-app/main/default/lwc/quanticResultQuickview/e2e/quanticResultQuickView.e2e.ts +66 -0
  116. package/force-app/main/default/lwc/quanticResultTemplate/__tests__/quanticResultTemplate.test.js +90 -0
  117. package/force-app/main/default/lwc/quanticResultText/__tests__/quanticResultText.test.js +155 -0
  118. package/force-app/main/default/lwc/quanticResultsPerPage/__tests__/quanticResultsPerPage.test.js +464 -0
  119. package/force-app/main/default/lwc/quanticResultsPerPage/e2e/fixture.ts +74 -0
  120. package/force-app/main/default/lwc/quanticResultsPerPage/e2e/pageObject.ts +85 -0
  121. package/force-app/main/default/lwc/quanticResultsPerPage/e2e/quanticResultsPerPage.e2e.ts +97 -0
  122. package/force-app/main/default/lwc/quanticSearchBox/__tests__/quanticSearchBox.test.js +487 -0
  123. package/force-app/main/default/lwc/quanticSearchBox/e2e/fixture.ts +84 -0
  124. package/force-app/main/default/lwc/quanticSearchBox/e2e/pageObject.ts +45 -0
  125. package/force-app/main/default/lwc/quanticSearchBox/e2e/quanticSearchBox.e2e.ts +159 -0
  126. package/force-app/main/default/lwc/quanticSearchBoxInput/__tests__/quanticSearchBoxInput.test.js +743 -0
  127. package/force-app/main/default/lwc/quanticSearchBoxSuggestionsList/__tests__/quanticSearchBoxSuggestionsList.test.js +571 -0
  128. package/force-app/main/default/lwc/quanticSearchBoxSuggestionsList/e2e/fixture.ts +110 -0
  129. package/force-app/main/default/lwc/quanticSearchBoxSuggestionsList/e2e/pageObject.ts +113 -0
  130. package/force-app/main/default/lwc/quanticSearchBoxSuggestionsList/e2e/quanticSearchBoxSuggestionsList.e2e.ts +299 -0
  131. package/force-app/main/default/lwc/quanticSmartSnippet/__tests__/quanticSmartSnippet.test.js +341 -0
  132. package/force-app/main/default/lwc/quanticSmartSnippet/e2e/data.ts +21 -0
  133. package/force-app/main/default/lwc/quanticSmartSnippet/e2e/fixture.ts +91 -0
  134. package/force-app/main/default/lwc/quanticSmartSnippet/e2e/pageObject.ts +196 -0
  135. package/force-app/main/default/lwc/quanticSmartSnippet/e2e/quanticSmartSnippet.e2e.ts +192 -0
  136. package/force-app/main/default/lwc/quanticSmartSnippetAnswer/__tests__/quanticSmartSnippetAnswer.test.js +126 -0
  137. package/force-app/main/default/lwc/quanticSmartSnippetSource/__tests__/quanticSmartSnippetSource.test.js +290 -0
  138. package/force-app/main/default/lwc/quanticSmartSnippetSuggestions/__tests__/quanticSmartSnippetSuggestions.test.js +329 -0
  139. package/force-app/main/default/lwc/quanticSmartSnippetSuggestions/e2e/data.ts +31 -0
  140. package/force-app/main/default/lwc/quanticSmartSnippetSuggestions/e2e/fixture.ts +93 -0
  141. package/force-app/main/default/lwc/quanticSmartSnippetSuggestions/e2e/pageObject.ts +160 -0
  142. package/force-app/main/default/lwc/quanticSmartSnippetSuggestions/e2e/quanticSmartSnippetSuggestions.e2e.ts +127 -0
  143. package/force-app/main/default/lwc/quanticSort/__tests__/quanticSort.test.js +416 -0
  144. package/force-app/main/default/lwc/quanticSort/e2e/fixture.ts +61 -0
  145. package/force-app/main/default/lwc/quanticSort/e2e/pageObject.ts +89 -0
  146. package/force-app/main/default/lwc/quanticSort/e2e/quanticSort.e2e.ts +91 -0
  147. package/force-app/main/default/lwc/quanticSourceCitations/__tests__/quanticSourceCitations.test.js +136 -0
  148. package/force-app/main/default/lwc/quanticStandaloneSearchBox/__tests__/quanticStandaloneSearchBox.test.js +387 -0
  149. package/force-app/main/default/lwc/quanticStandaloneSearchBox/e2e/fixture.ts +53 -0
  150. package/force-app/main/default/lwc/quanticStandaloneSearchBox/e2e/pageObject.ts +54 -0
  151. package/force-app/main/default/lwc/quanticStandaloneSearchBox/e2e/quanticStandaloneSearchBox.e2e.ts +72 -0
  152. package/force-app/main/default/lwc/quanticStatefulButton/__tests__/quanticStatefulButton.test.js +222 -0
  153. package/force-app/main/default/lwc/quanticSummary/__tests__/quanticSummary.test.js +244 -0
  154. package/force-app/main/default/lwc/quanticTab/__tests__/quanticTab.test.js +333 -0
  155. package/force-app/main/default/lwc/quanticTab/e2e/fixture.ts +56 -0
  156. package/force-app/main/default/lwc/quanticTab/e2e/pageObject.ts +68 -0
  157. package/force-app/main/default/lwc/quanticTab/e2e/quanticTab.e2e.ts +72 -0
  158. package/force-app/main/default/lwc/quanticTabBar/__tests__/quanticTabBar.test.js +331 -0
  159. package/force-app/main/default/lwc/quanticTabBar/e2e/fixture.ts +61 -0
  160. package/force-app/main/default/lwc/quanticTabBar/e2e/pageObject.ts +80 -0
  161. package/force-app/main/default/lwc/quanticTabBar/e2e/quanticTabBar.e2e.ts +171 -0
  162. package/force-app/main/default/lwc/quanticTimeframeFacet/__tests__/quanticTimeframeFacet.test.js +1037 -0
  163. package/force-app/main/default/lwc/quanticTimeframeFacet/e2e/fixture.ts +58 -0
  164. package/force-app/main/default/lwc/quanticTimeframeFacet/e2e/pageObject.ts +43 -0
  165. package/force-app/main/default/lwc/quanticTimeframeFacet/e2e/quanticTimeframeFacet.e2e.ts +160 -0
  166. package/force-app/main/default/lwc/quanticTooltip/__tests__/quanticTooltip.test.js +107 -0
  167. package/force-app/main/default/lwc/quanticUserAction/__tests__/quanticUserAction.test.js +427 -0
  168. package/force-app/main/default/lwc/quanticUserActionsSession/__tests__/quanticUserActionsSession.test.js +269 -0
  169. package/force-app/main/default/lwc/quanticUserActionsTimeline/__tests__/data/userActionsState.json +89 -0
  170. package/force-app/main/default/lwc/quanticUserActionsTimeline/__tests__/quanticUserActionsTimeline.test.js +511 -0
  171. package/force-app/main/default/lwc/quanticUserActionsToggle/__tests__/quanticUserActionsToggle.test.js +229 -0
  172. package/force-app/main/default/lwc/quanticUserActionsToggle/e2e/data.ts +32 -0
  173. package/force-app/main/default/lwc/quanticUserActionsToggle/e2e/fixture.ts +32 -0
  174. package/force-app/main/default/lwc/quanticUserActionsToggle/e2e/pageObject.ts +71 -0
  175. package/force-app/main/default/lwc/quanticUserActionsToggle/e2e/quanticUserActionsToggle.e2e.ts +39 -0
  176. package/force-app/main/default/lwc/quanticUtils/__tests__/citationAnchoringUtils.test.js +84 -0
  177. package/force-app/main/default/lwc/quanticUtils/__tests__/facetDependenciesUtils.test.js +92 -0
  178. package/force-app/main/default/lwc/quanticUtils/__tests__/markdownUtils.test.js +71 -0
  179. package/force-app/main/default/lwc/quanticUtils/__tests__/quanticUtils.test.js +223 -0
  180. package/force-app/main/default/lwc/quanticViewedByCustomerBadge/__tests__/quanticViewedByCustomerBadge.test.js +131 -0
  181. package/force-app/main/default/staticresources/coveoheadless/case-assist/headless.js +2 -2
  182. package/force-app/main/default/staticresources/coveoheadless/definitions/app/case-assist-engine/case-assist-engine.d.ts +3 -3
  183. package/force-app/main/default/staticresources/coveoheadless/definitions/app/commerce-engine/commerce-engine.d.ts +16 -16
  184. package/force-app/main/default/staticresources/coveoheadless/definitions/app/common-reducers.d.ts +1 -1
  185. package/force-app/main/default/staticresources/coveoheadless/definitions/app/insight-engine/insight-engine.d.ts +5 -5
  186. package/force-app/main/default/staticresources/coveoheadless/definitions/app/recommendation-engine/recommendation-engine.d.ts +4 -4
  187. package/force-app/main/default/staticresources/coveoheadless/definitions/app/search-engine/search-engine.d.ts +4 -4
  188. package/force-app/main/default/staticresources/coveoheadless/definitions/app/store.d.ts +2 -2
  189. package/force-app/main/default/staticresources/coveoheadless/definitions/controllers/commerce/core/facets/headless-core-commerce-facet.d.ts +1 -1
  190. package/force-app/main/default/staticresources/coveoheadless/definitions/controllers/core/facets/range-facet/headless-core-range-facet.d.ts +1 -1
  191. package/force-app/main/default/staticresources/coveoheadless/definitions/features/actions-history/ipx-actions-history-actions.d.ts +1 -1
  192. package/force-app/main/default/staticresources/coveoheadless/definitions/features/advanced-search-queries/advanced-search-queries-slice.d.ts +1 -1
  193. package/force-app/main/default/staticresources/coveoheadless/definitions/features/attached-results/attached-results-slice.d.ts +1 -1
  194. package/force-app/main/default/staticresources/coveoheadless/definitions/features/case-assist-configuration/case-assist-configuration-slice.d.ts +1 -1
  195. package/force-app/main/default/staticresources/coveoheadless/definitions/features/case-context/case-context-slice.d.ts +1 -1
  196. package/force-app/main/default/staticresources/coveoheadless/definitions/features/case-field/case-field-actions.d.ts +1 -1
  197. package/force-app/main/default/staticresources/coveoheadless/definitions/features/case-field/case-field-slice.d.ts +1 -1
  198. package/force-app/main/default/staticresources/coveoheadless/definitions/features/case-input/case-input-slice.d.ts +1 -1
  199. package/force-app/main/default/staticresources/coveoheadless/definitions/features/commerce/configuration/configuration-slice.d.ts +1 -1
  200. package/force-app/main/default/staticresources/coveoheadless/definitions/features/commerce/context/cart/cart-actions.d.ts +2 -2
  201. package/force-app/main/default/staticresources/coveoheadless/definitions/features/commerce/context/cart/cart-slice.d.ts +1 -1
  202. package/force-app/main/default/staticresources/coveoheadless/definitions/features/commerce/context/context-slice.d.ts +1 -1
  203. package/force-app/main/default/staticresources/coveoheadless/definitions/features/commerce/did-you-mean/did-you-mean-slice.d.ts +1 -1
  204. package/force-app/main/default/staticresources/coveoheadless/definitions/features/commerce/facets/facet-search-set/commerce-facet-search-actions.d.ts +2 -2
  205. package/force-app/main/default/staticresources/coveoheadless/definitions/features/commerce/facets/facet-set/facet-set-slice.d.ts +1 -1
  206. package/force-app/main/default/staticresources/coveoheadless/definitions/features/commerce/facets/field-suggestions-order/field-suggestions-order-slice.d.ts +1 -1
  207. package/force-app/main/default/staticresources/coveoheadless/definitions/features/commerce/facets/numeric-facet/manual-numeric-facet-slice.d.ts +1 -1
  208. package/force-app/main/default/staticresources/coveoheadless/definitions/features/commerce/instant-products/instant-products-slice.d.ts +1 -1
  209. package/force-app/main/default/staticresources/coveoheadless/definitions/features/commerce/pagination/pagination-slice.d.ts +1 -1
  210. package/force-app/main/default/staticresources/coveoheadless/definitions/features/commerce/parameters/parameters-slice.d.ts +1 -1
  211. package/force-app/main/default/staticresources/coveoheadless/definitions/features/commerce/product/product-actions.d.ts +2 -2
  212. package/force-app/main/default/staticresources/coveoheadless/definitions/features/commerce/product-listing/product-listing-actions.d.ts +2 -2
  213. package/force-app/main/default/staticresources/coveoheadless/definitions/features/commerce/product-listing/product-listing-slice.d.ts +1 -1
  214. package/force-app/main/default/staticresources/coveoheadless/definitions/features/commerce/query/query-slice.d.ts +1 -1
  215. package/force-app/main/default/staticresources/coveoheadless/definitions/features/commerce/query-suggest/query-suggest-actions.d.ts +1 -1
  216. package/force-app/main/default/staticresources/coveoheadless/definitions/features/commerce/recent-queries/recent-queries-slice.d.ts +1 -1
  217. package/force-app/main/default/staticresources/coveoheadless/definitions/features/commerce/recommendations/recommendations-actions.d.ts +2 -2
  218. package/force-app/main/default/staticresources/coveoheadless/definitions/features/commerce/recommendations/recommendations-slice.d.ts +1 -1
  219. package/force-app/main/default/staticresources/coveoheadless/definitions/features/commerce/search/search-actions.d.ts +4 -4
  220. package/force-app/main/default/staticresources/coveoheadless/definitions/features/commerce/search/search-slice.d.ts +1 -1
  221. package/force-app/main/default/staticresources/coveoheadless/definitions/features/commerce/sort/sort-slice.d.ts +1 -1
  222. package/force-app/main/default/staticresources/coveoheadless/definitions/features/commerce/standalone-search-box-set/standalone-search-box-set-actions.d.ts +1 -1
  223. package/force-app/main/default/staticresources/coveoheadless/definitions/features/commerce/standalone-search-box-set/standalone-search-box-set-slice.d.ts +1 -1
  224. package/force-app/main/default/staticresources/coveoheadless/definitions/features/commerce/triggers/triggers-slice.d.ts +1 -1
  225. package/force-app/main/default/staticresources/coveoheadless/definitions/features/configuration/configuration-slice.d.ts +1 -1
  226. package/force-app/main/default/staticresources/coveoheadless/definitions/features/context/context-slice.d.ts +1 -1
  227. package/force-app/main/default/staticresources/coveoheadless/definitions/features/debug/debug-slice.d.ts +1 -1
  228. package/force-app/main/default/staticresources/coveoheadless/definitions/features/debug/version-slice.d.ts +1 -1
  229. package/force-app/main/default/staticresources/coveoheadless/definitions/features/dictionary-field-context/dictionary-field-context-slice.d.ts +1 -1
  230. package/force-app/main/default/staticresources/coveoheadless/definitions/features/did-you-mean/did-you-mean-slice.d.ts +1 -1
  231. package/force-app/main/default/staticresources/coveoheadless/definitions/features/document-suggestion/document-suggestion-actions.d.ts +1 -1
  232. package/force-app/main/default/staticresources/coveoheadless/definitions/features/document-suggestion/document-suggestion-slice.d.ts +1 -1
  233. package/force-app/main/default/staticresources/coveoheadless/definitions/features/excerpt-length/excerpt-length-slice.d.ts +1 -1
  234. package/force-app/main/default/staticresources/coveoheadless/definitions/features/facet-options/facet-options-slice.d.ts +1 -1
  235. package/force-app/main/default/staticresources/coveoheadless/definitions/features/facets/automatic-facet-set/automatic-facet-set-slice.d.ts +1 -1
  236. package/force-app/main/default/staticresources/coveoheadless/definitions/features/facets/category-facet-set/category-facet-set-slice.d.ts +1 -1
  237. package/force-app/main/default/staticresources/coveoheadless/definitions/features/facets/facet-order/facet-order-slice.d.ts +1 -1
  238. package/force-app/main/default/staticresources/coveoheadless/definitions/features/facets/facet-search-set/category/category-facet-search-set-slice.d.ts +1 -1
  239. package/force-app/main/default/staticresources/coveoheadless/definitions/features/facets/facet-search-set/generic/generic-facet-search-actions.d.ts +2 -2
  240. package/force-app/main/default/staticresources/coveoheadless/definitions/features/facets/facet-search-set/specific/specific-facet-search-set-slice.d.ts +1 -1
  241. package/force-app/main/default/staticresources/coveoheadless/definitions/features/facets/facet-set/facet-set-controller-actions.d.ts +2 -2
  242. package/force-app/main/default/staticresources/coveoheadless/definitions/features/facets/facet-set/facet-set-slice.d.ts +1 -1
  243. package/force-app/main/default/staticresources/coveoheadless/definitions/features/facets/range-facets/date-facet-set/date-facet-controller-actions.d.ts +2 -2
  244. package/force-app/main/default/staticresources/coveoheadless/definitions/features/facets/range-facets/date-facet-set/date-facet-set-slice.d.ts +1 -1
  245. package/force-app/main/default/staticresources/coveoheadless/definitions/features/facets/range-facets/numeric-facet-set/numeric-facet-controller-actions.d.ts +2 -2
  246. package/force-app/main/default/staticresources/coveoheadless/definitions/features/facets/range-facets/numeric-facet-set/numeric-facet-set-slice.d.ts +1 -1
  247. package/force-app/main/default/staticresources/coveoheadless/definitions/features/fields/fields-actions.d.ts +1 -1
  248. package/force-app/main/default/staticresources/coveoheadless/definitions/features/fields/fields-slice.d.ts +1 -1
  249. package/force-app/main/default/staticresources/coveoheadless/definitions/features/folding/folding-actions.d.ts +1 -1
  250. package/force-app/main/default/staticresources/coveoheadless/definitions/features/folding/folding-slice.d.ts +1 -1
  251. package/force-app/main/default/staticresources/coveoheadless/definitions/features/folding/insight-folding-actions.d.ts +1 -1
  252. package/force-app/main/default/staticresources/coveoheadless/definitions/features/generated-answer/generated-answer-actions.d.ts +2 -2
  253. package/force-app/main/default/staticresources/coveoheadless/definitions/features/generated-answer/generated-answer-slice.d.ts +1 -1
  254. package/force-app/main/default/staticresources/coveoheadless/definitions/features/history/history-actions.d.ts +3 -3
  255. package/force-app/main/default/staticresources/coveoheadless/definitions/features/history/history-slice.d.ts +2 -2
  256. package/force-app/main/default/staticresources/coveoheadless/definitions/features/insight-configuration/insight-configuration-slice.d.ts +1 -1
  257. package/force-app/main/default/staticresources/coveoheadless/definitions/features/insight-interface/insight-interface-actions.d.ts +1 -1
  258. package/force-app/main/default/staticresources/coveoheadless/definitions/features/insight-interface/insight-interface-slice.d.ts +1 -1
  259. package/force-app/main/default/staticresources/coveoheadless/definitions/features/insight-search/insight-search-actions.d.ts +5 -5
  260. package/force-app/main/default/staticresources/coveoheadless/definitions/features/insight-search/legacy/insight-search-actions.d.ts +4 -4
  261. package/force-app/main/default/staticresources/coveoheadless/definitions/features/insight-user-actions/insight-user-actions-actions.d.ts +1 -1
  262. package/force-app/main/default/staticresources/coveoheadless/definitions/features/insight-user-actions/insight-user-actions-slice.d.ts +1 -1
  263. package/force-app/main/default/staticresources/coveoheadless/definitions/features/instant-results/instant-results-slice.d.ts +1 -1
  264. package/force-app/main/default/staticresources/coveoheadless/definitions/features/pagination/pagination-slice.d.ts +1 -1
  265. package/force-app/main/default/staticresources/coveoheadless/definitions/features/pipeline/pipeline-slice.d.ts +1 -1
  266. package/force-app/main/default/staticresources/coveoheadless/definitions/features/query/query-slice.d.ts +1 -1
  267. package/force-app/main/default/staticresources/coveoheadless/definitions/features/query-set/query-set-slice.d.ts +1 -1
  268. package/force-app/main/default/staticresources/coveoheadless/definitions/features/query-suggest/query-suggest-actions.d.ts +1 -1
  269. package/force-app/main/default/staticresources/coveoheadless/definitions/features/query-suggest/query-suggest-slice.d.ts +1 -1
  270. package/force-app/main/default/staticresources/coveoheadless/definitions/features/question-answering/question-answering-slice.d.ts +1 -1
  271. package/force-app/main/default/staticresources/coveoheadless/definitions/features/recent-queries/recent-queries-slice.d.ts +1 -1
  272. package/force-app/main/default/staticresources/coveoheadless/definitions/features/recent-results/recent-results-slice.d.ts +1 -1
  273. package/force-app/main/default/staticresources/coveoheadless/definitions/features/recommendation/recommendation-actions.d.ts +1 -1
  274. package/force-app/main/default/staticresources/coveoheadless/definitions/features/recommendation/recommendation-slice.d.ts +1 -1
  275. package/force-app/main/default/staticresources/coveoheadless/definitions/features/result-preview/result-preview-actions.d.ts +2 -2
  276. package/force-app/main/default/staticresources/coveoheadless/definitions/features/result-preview/result-preview-slice.d.ts +1 -1
  277. package/force-app/main/default/staticresources/coveoheadless/definitions/features/search/legacy/search-actions.d.ts +5 -5
  278. package/force-app/main/default/staticresources/coveoheadless/definitions/features/search/search-actions.d.ts +6 -6
  279. package/force-app/main/default/staticresources/coveoheadless/definitions/features/search/search-slice.d.ts +1 -1
  280. package/force-app/main/default/staticresources/coveoheadless/definitions/features/search-hub/search-hub-slice.d.ts +1 -1
  281. package/force-app/main/default/staticresources/coveoheadless/definitions/features/sort-criteria/sort-criteria-slice.d.ts +1 -1
  282. package/force-app/main/default/staticresources/coveoheadless/definitions/features/standalone-search-box-set/standalone-search-box-set-actions.d.ts +1 -1
  283. package/force-app/main/default/staticresources/coveoheadless/definitions/features/standalone-search-box-set/standalone-search-box-set-slice.d.ts +1 -1
  284. package/force-app/main/default/staticresources/coveoheadless/definitions/features/static-filter-set/static-filter-set-slice.d.ts +1 -1
  285. package/force-app/main/default/staticresources/coveoheadless/definitions/features/tab-set/tab-set-slice.d.ts +1 -1
  286. package/force-app/main/default/staticresources/coveoheadless/definitions/features/triggers/triggers-slice.d.ts +1 -1
  287. package/force-app/main/default/staticresources/coveoheadless/definitions/ssr/commerce/factories/build-factory.d.ts +6 -1
  288. package/force-app/main/default/staticresources/coveoheadless/definitions/ssr/common/access-token-manager.d.ts +19 -0
  289. package/force-app/main/default/staticresources/coveoheadless/definitions/ssr-next/commerce/types/engine.d.ts +4 -2
  290. package/force-app/main/default/staticresources/coveoheadless/definitions/ssr-next/common/access-token-manager.d.ts +19 -0
  291. package/force-app/main/default/staticresources/coveoheadless/definitions/ssr-next/search/engine/search-engine.ssr.d.ts +2 -2
  292. package/force-app/main/default/staticresources/coveoheadless/definitions/test/mock-ssr-controller-definitions.d.ts +2 -2
  293. package/force-app/main/default/staticresources/coveoheadless/headless.js +2 -2
  294. package/force-app/main/default/staticresources/coveoheadless/insight/headless.js +2 -2
  295. package/force-app/main/default/staticresources/coveoheadless/recommendation/headless.js +2 -2
  296. package/package.json +46 -44
@@ -0,0 +1,324 @@
1
+ // @ts-ignore
2
+ import * as mockHeadlessLoader from 'c/quanticHeadlessLoader';
3
+ // @ts-ignore
4
+ import {createElement} from 'lwc';
5
+ import QuanticResultPrintableUri from '../quanticResultPrintableUri';
6
+
7
+ const MIN_MAX_NUMBER_OF_PARTS = 3;
8
+
9
+ jest.mock('c/quanticHeadlessLoader');
10
+
11
+ // Helper function to mock Headless and Bueno for this suite of tests.
12
+ function mockHeadlessAndBueno() {
13
+ jest.spyOn(mockHeadlessLoader, 'getHeadlessEnginePromise').mockReturnValue(
14
+ new Promise((resolve) => {
15
+ resolve();
16
+ })
17
+ );
18
+
19
+ jest.spyOn(mockHeadlessLoader, 'getBueno').mockReturnValue(
20
+ new Promise(() => {
21
+ // @ts-ignore
22
+ global.Bueno = {
23
+ isString: jest
24
+ .fn()
25
+ .mockImplementation(
26
+ (value) =>
27
+ Object.prototype.toString.call(value) === '[object String]'
28
+ ),
29
+ };
30
+ })
31
+ );
32
+ }
33
+
34
+ const selectors = {
35
+ link: 'c-quantic-result-link',
36
+ pathItem: '[data-test="path__item"]',
37
+ pathExpandButton: '[data-test="path__expand-button"]',
38
+ errorMessage: '[data-test="error"]',
39
+ };
40
+ const exampleEngineId = 'example engine id';
41
+
42
+ function createTestComponent(options) {
43
+ const element = createElement('c-quantic-result-printable-uri', {
44
+ is: QuanticResultPrintableUri,
45
+ });
46
+
47
+ for (const [key, value] of Object.entries(options)) {
48
+ element[key] = value;
49
+ }
50
+
51
+ document.body.appendChild(element);
52
+ return element;
53
+ }
54
+
55
+ // Helper function to wait until the microtask queue is empty.
56
+ function flushPromises() {
57
+ return new Promise((resolve) => setTimeout(resolve, 0));
58
+ }
59
+
60
+ function generateExampleUri(id) {
61
+ return `https://uri${id}.com/`;
62
+ }
63
+
64
+ function generateResultParents(numberOfParents) {
65
+ let parents = '';
66
+ for (let i = 1; i <= numberOfParents; i++) {
67
+ parents += `<parent name="parent${i}" uri="${generateExampleUri(i)}" />`;
68
+ }
69
+ return `<parents>${parents}</parents>`;
70
+ }
71
+
72
+ function shouldProperlyDisplayAllPathItems(pathItems) {
73
+ pathItems.forEach((item, index) => {
74
+ expect(item.textContent).toBe(`parent${index + 1}`);
75
+ expect(item.href).toBe(`${generateExampleUri(index + 1)}`);
76
+ });
77
+ }
78
+
79
+ describe('c-quantic-result-printable-uri', () => {
80
+ function cleanup() {
81
+ // The jsdom instance is shared across test cases in a single file so reset the DOM
82
+ while (document.body.firstChild) {
83
+ document.body.removeChild(document.body.firstChild);
84
+ }
85
+ jest.clearAllMocks();
86
+ }
87
+
88
+ beforeEach(() => {
89
+ console.error = jest.fn();
90
+ mockHeadlessAndBueno();
91
+ });
92
+
93
+ afterEach(() => {
94
+ cleanup();
95
+ });
96
+
97
+ describe('when displaying the result path', () => {
98
+ describe('when the number of parents is lower than the maxNumberOfParts property', () => {
99
+ const numberOfParents = 2;
100
+ const exampleResultWithParents = {
101
+ raw: {
102
+ parents: generateResultParents(numberOfParents),
103
+ },
104
+ };
105
+ it('should properly display all the result path', async () => {
106
+ const element = createTestComponent({
107
+ result: exampleResultWithParents,
108
+ engineId: exampleEngineId,
109
+ maxNumberOfParts: 3,
110
+ });
111
+ await flushPromises();
112
+
113
+ const pathItems = element.shadowRoot.querySelectorAll(
114
+ selectors.pathItem
115
+ );
116
+ expect(pathItems).not.toBeNull();
117
+ expect(pathItems.length).toBe(numberOfParents);
118
+ shouldProperlyDisplayAllPathItems(pathItems);
119
+ });
120
+ });
121
+
122
+ describe('when the number of parents is greater than the maxNumberOfParts property', () => {
123
+ const numberOfParents = 8;
124
+ const exampleResultWithParents = {
125
+ raw: {
126
+ parents: generateResultParents(numberOfParents),
127
+ },
128
+ };
129
+
130
+ describe('when the default value of the maxNumberOfParts property is used', () => {
131
+ it('should properly display the result collapsed path', async () => {
132
+ const defaultMaxNumberOfParts = 5;
133
+ const element = createTestComponent({
134
+ result: exampleResultWithParents,
135
+ engineId: exampleEngineId,
136
+ });
137
+ await flushPromises();
138
+
139
+ const pathItems = Array.from(
140
+ element.shadowRoot.querySelectorAll(selectors.pathItem)
141
+ );
142
+ const expandButton = element.shadowRoot.querySelector(
143
+ selectors.pathExpandButton
144
+ );
145
+ expect(pathItems).not.toBeNull();
146
+ expect(pathItems.length).toBe(defaultMaxNumberOfParts);
147
+ pathItems
148
+ .slice(0, defaultMaxNumberOfParts - 1)
149
+ .forEach((item, index) => {
150
+ expect(item.textContent).toBe(`parent${index + 1}`);
151
+ expect(item.href).toBe(`${generateExampleUri(index + 1)}`);
152
+ });
153
+
154
+ expect(expandButton).not.toBeNull();
155
+
156
+ expect(pathItems[defaultMaxNumberOfParts - 1].textContent).toBe(
157
+ `parent${numberOfParents}`
158
+ );
159
+ expect(pathItems[defaultMaxNumberOfParts - 1].href).toBe(
160
+ `${generateExampleUri(numberOfParents)}`
161
+ );
162
+ });
163
+
164
+ describe('when expanding the result collapsed path', () => {
165
+ it('should properly display the result expanded path', async () => {
166
+ const element = createTestComponent({
167
+ result: exampleResultWithParents,
168
+ engineId: exampleEngineId,
169
+ });
170
+ await flushPromises();
171
+
172
+ let expandButton = element.shadowRoot.querySelector(
173
+ selectors.pathExpandButton
174
+ );
175
+
176
+ expect(expandButton).not.toBeNull();
177
+
178
+ await expandButton.click();
179
+
180
+ const pathItems = element.shadowRoot.querySelectorAll(
181
+ selectors.pathItem
182
+ );
183
+ expandButton = element.shadowRoot.querySelector(
184
+ selectors.pathExpandButton
185
+ );
186
+
187
+ expect(expandButton).toBeNull();
188
+ expect(pathItems).not.toBeNull();
189
+ expect(pathItems.length).toBe(numberOfParents);
190
+ shouldProperlyDisplayAllPathItems(pathItems);
191
+ });
192
+ });
193
+ });
194
+
195
+ describe('when a custom value of the maxNumberOfParts property is used', () => {
196
+ const customMaxNumberOfParts = 3;
197
+
198
+ it('should properly display the result collapsed path', async () => {
199
+ const element = createTestComponent({
200
+ result: exampleResultWithParents,
201
+ engineId: exampleEngineId,
202
+ maxNumberOfParts: customMaxNumberOfParts,
203
+ });
204
+ await flushPromises();
205
+
206
+ const pathItems = Array.from(
207
+ element.shadowRoot.querySelectorAll(selectors.pathItem)
208
+ );
209
+ const expandButton = element.shadowRoot.querySelector(
210
+ selectors.pathExpandButton
211
+ );
212
+ expect(pathItems).not.toBeNull();
213
+ expect(pathItems.length).toBe(customMaxNumberOfParts);
214
+ pathItems
215
+ .slice(0, customMaxNumberOfParts - 1)
216
+ .forEach((item, index) => {
217
+ expect(item.textContent).toBe(`parent${index + 1}`);
218
+ expect(item.href).toBe(`${generateExampleUri(index + 1)}`);
219
+ });
220
+
221
+ expect(expandButton).not.toBeNull();
222
+
223
+ expect(pathItems[customMaxNumberOfParts - 1].textContent).toBe(
224
+ `parent${numberOfParents}`
225
+ );
226
+ expect(pathItems[customMaxNumberOfParts - 1].href).toBe(
227
+ `${generateExampleUri(numberOfParents)}`
228
+ );
229
+ });
230
+
231
+ describe('when expanding the result collapsed path', () => {
232
+ it('should properly display the result expanded path', async () => {
233
+ const element = createTestComponent({
234
+ result: exampleResultWithParents,
235
+ engineId: exampleEngineId,
236
+ maxNumberOfParts: customMaxNumberOfParts,
237
+ });
238
+ await flushPromises();
239
+
240
+ let expandButton = element.shadowRoot.querySelector(
241
+ selectors.pathExpandButton
242
+ );
243
+
244
+ expect(expandButton).not.toBeNull();
245
+
246
+ await expandButton.click();
247
+
248
+ const pathItems = element.shadowRoot.querySelectorAll(
249
+ selectors.pathItem
250
+ );
251
+ expandButton = element.shadowRoot.querySelector(
252
+ selectors.pathExpandButton
253
+ );
254
+
255
+ expect(expandButton).toBeNull();
256
+ expect(pathItems).not.toBeNull();
257
+ expect(pathItems.length).toBe(numberOfParents);
258
+ shouldProperlyDisplayAllPathItems(pathItems);
259
+ });
260
+ });
261
+ });
262
+ });
263
+ });
264
+
265
+ describe('when displaying the result url', () => {
266
+ const exampleResult = {
267
+ title: 'example title',
268
+ clickUri: 'https://coveo.com/',
269
+ raw: {
270
+ parents: '',
271
+ },
272
+ };
273
+
274
+ it('should display the printable uri using the quantic result link component', async () => {
275
+ const customTarget = '_blank';
276
+ const element = createTestComponent({
277
+ result: exampleResult,
278
+ target: customTarget,
279
+ engineId: exampleEngineId,
280
+ });
281
+ await flushPromises();
282
+
283
+ const link = element.shadowRoot.querySelector(selectors.link);
284
+
285
+ expect(link).not.toBeNull();
286
+ expect(link.engineId).toBe(exampleEngineId);
287
+ expect(link.result).toEqual(exampleResult);
288
+ expect(link.displayedField).toBe('printableUri');
289
+ expect(link.target).toBe(customTarget);
290
+ });
291
+ });
292
+
293
+ describe('when given invalid value of the property maxNumberOfParts', () => {
294
+ const exampleResult = {
295
+ title: 'example title',
296
+ clickUri: 'https://coveo.com/',
297
+ raw: {
298
+ parents: '',
299
+ },
300
+ };
301
+ const invalidMaxNumberOfParts = 1;
302
+
303
+ it('should display an error message', async () => {
304
+ const element = createTestComponent({
305
+ engineId: exampleEngineId,
306
+ result: exampleResult,
307
+ maxNumberOfParts: invalidMaxNumberOfParts,
308
+ });
309
+ await flushPromises();
310
+
311
+ const errorMessage = element.shadowRoot.querySelector(
312
+ selectors.errorMessage
313
+ );
314
+
315
+ expect(errorMessage).not.toBeNull();
316
+ expect(errorMessage.textContent).toBe(
317
+ 'c-quantic-result-printable-uri Error'
318
+ );
319
+ expect(console.error).toHaveBeenCalledWith(
320
+ `The provided value of ${invalidMaxNumberOfParts} for the maxNumberOfParts option is inadequate. The provided value must be at least ${MIN_MAX_NUMBER_OF_PARTS}.`
321
+ );
322
+ });
323
+ });
324
+ });
@@ -0,0 +1,301 @@
1
+ /* eslint-disable jest/no-conditional-expect */
2
+ import * as mockHeadlessLoader from 'c/quanticHeadlessLoader';
3
+ // @ts-ignore
4
+ import {createElement} from 'lwc';
5
+ import QuanticResultQuickview from '../quanticResultQuickview';
6
+
7
+ const selectors = {
8
+ quickviewButton: '[data-testid="quick-view-button"]',
9
+ closeQuickviewButton: '[data-testid="quickview-modal__close-button"]',
10
+ quickviewContent: 'c-quantic-quickview-content',
11
+ icon: 'lightning-icon',
12
+ tooltip: 'c-quantic-tooltip',
13
+ };
14
+
15
+ jest.mock('c/quanticHeadlessLoader');
16
+ jest.mock(
17
+ '@salesforce/label/c.quantic_OpenPreview',
18
+ () => ({default: 'Open preview'}),
19
+ {
20
+ virtual: true,
21
+ }
22
+ );
23
+ jest.mock(
24
+ '@salesforce/label/c.quantic_OpenFileForPreview',
25
+ () => ({default: 'Open file for preview'}),
26
+ {
27
+ virtual: true,
28
+ }
29
+ );
30
+ jest.mock(
31
+ '@salesforce/label/c.quantic_NoPreviewAvailable',
32
+ () => ({default: 'No preview available'}),
33
+ {
34
+ virtual: true,
35
+ }
36
+ );
37
+ jest.mock('@salesforce/label/c.quantic_Close', () => ({default: 'Close'}), {
38
+ virtual: true,
39
+ });
40
+
41
+ const exampleResult = {
42
+ raw: {
43
+ date: '123',
44
+ },
45
+ title: 'abc',
46
+ uniqueId: '123',
47
+ };
48
+
49
+ const functionMocks = {
50
+ pushRecentResult: jest.fn(),
51
+ dispatchEvent: jest.fn(),
52
+ };
53
+
54
+ function createTestComponent(options = {result: exampleResult}) {
55
+ const element = createElement('c-quantic-result-quick-view', {
56
+ is: QuanticResultQuickview,
57
+ });
58
+
59
+ if (options) {
60
+ for (const [key, value] of Object.entries(options)) {
61
+ element[key] = value;
62
+ }
63
+ }
64
+
65
+ document.body.appendChild(element);
66
+
67
+ return element;
68
+ }
69
+
70
+ // Helper function to wait until the microtask queue is empty.
71
+ function flushPromises() {
72
+ // eslint-disable-next-line @lwc/lwc/no-async-operation
73
+ return new Promise((resolve) => setTimeout(resolve, 0));
74
+ }
75
+
76
+ let useCase = 'search';
77
+
78
+ function mockHeadless(hasPreview = true) {
79
+ jest.spyOn(mockHeadlessLoader, 'getHeadlessBundle').mockReturnValue({
80
+ buildQuickview: () => ({
81
+ state: {resultHasPreview: hasPreview},
82
+ fetchResultContent: jest.fn(),
83
+ subscribe: jest.fn((callback) => {
84
+ callback();
85
+ }),
86
+ cancelPendingSelect: jest.fn(),
87
+ }),
88
+ buildInteractiveResult: jest.fn(),
89
+ loadRecentResultsActions: () => ({
90
+ pushRecentResult: functionMocks.pushRecentResult,
91
+ }),
92
+ });
93
+
94
+ jest
95
+ .spyOn(mockHeadlessLoader, 'isHeadlessBundle')
96
+ .mockReturnValue(useCase === 'search');
97
+
98
+ jest.spyOn(mockHeadlessLoader, 'getHeadlessEnginePromise').mockReturnValue(
99
+ new Promise((resolve) => {
100
+ resolve({
101
+ dispatch: jest.fn(),
102
+ });
103
+ })
104
+ );
105
+ }
106
+
107
+ function mockBueno() {
108
+ jest.spyOn(mockHeadlessLoader, 'getBueno').mockReturnValue(
109
+ new Promise(() => {
110
+ // @ts-ignore
111
+ global.Bueno = {
112
+ isString: jest
113
+ .fn()
114
+ .mockImplementation(
115
+ (value) =>
116
+ Object.prototype.toString.call(value) === '[object String]'
117
+ ),
118
+ };
119
+ })
120
+ );
121
+ }
122
+
123
+ function cleanup() {
124
+ // The jsdom instance is shared across test cases in a single file so reset the DOM.
125
+ while (document.body.firstChild) {
126
+ document.body.removeChild(document.body.firstChild);
127
+ }
128
+ jest.clearAllMocks();
129
+ }
130
+
131
+ describe('c-quantic-result-quick-view', () => {
132
+ beforeEach(() => {
133
+ mockHeadless();
134
+ mockBueno();
135
+ });
136
+
137
+ afterEach(() => {
138
+ cleanup();
139
+ });
140
+
141
+ it('should dispatch the pushRecentResult action', async () => {
142
+ const element = createTestComponent();
143
+ await flushPromises();
144
+
145
+ const quickViewButton = element.shadowRoot.querySelector(
146
+ selectors.quickviewButton
147
+ );
148
+ expect(quickViewButton.disabled).toBeFalsy();
149
+ await quickViewButton.click();
150
+ await flushPromises();
151
+
152
+ expect(functionMocks.pushRecentResult).toHaveBeenCalledTimes(1);
153
+ expect(functionMocks.pushRecentResult).toHaveBeenCalledWith(exampleResult);
154
+ });
155
+
156
+ describe('when the result has no preview', () => {
157
+ beforeEach(() => {
158
+ jest.clearAllMocks();
159
+ mockHeadless(false);
160
+ mockBueno();
161
+ });
162
+
163
+ afterEach(() => {
164
+ cleanup();
165
+ });
166
+
167
+ it('should disable the quickview button', async () => {
168
+ const element = createTestComponent();
169
+ await flushPromises();
170
+
171
+ const quickViewButton = element.shadowRoot.querySelector(
172
+ selectors.quickviewButton
173
+ );
174
+
175
+ expect(quickViewButton.disabled).toBeTruthy();
176
+ });
177
+ });
178
+
179
+ describe('when the component has custom properties', () => {
180
+ it('should render the custom icon correctly', async () => {
181
+ const customIcon = 'utility:file';
182
+ const customOptions = {
183
+ result: exampleResult,
184
+ previewButtonIcon: customIcon,
185
+ };
186
+ const element = createTestComponent(customOptions);
187
+ await flushPromises();
188
+
189
+ const quickViewIcon = element.shadowRoot.querySelector(selectors.icon);
190
+
191
+ expect(quickViewIcon.iconName).toBe(customIcon);
192
+ });
193
+
194
+ it('should render the custom label correctly', async () => {
195
+ const customOptions = {
196
+ result: exampleResult,
197
+ previewButtonLabel: 'Custom Label',
198
+ };
199
+ const element = createTestComponent(customOptions);
200
+ await flushPromises();
201
+
202
+ const quickViewButton = element.shadowRoot.querySelector(
203
+ selectors.quickviewButton
204
+ );
205
+
206
+ expect(quickViewButton.textContent).toContain('Custom Label');
207
+ expect(quickViewButton.querySelector(selectors.icon).classList).toContain(
208
+ 'slds-button__icon_right'
209
+ );
210
+ });
211
+
212
+ it.each([['brand'], ['outline_brand'], ['result-action']])(
213
+ 'should render the custom variant %s',
214
+ async (testVariant) => {
215
+ const customOptions = {
216
+ result: exampleResult,
217
+ previewButtonVariant: testVariant,
218
+ dispatchEvent: functionMocks.dispatchEvent,
219
+ };
220
+
221
+ const element = createTestComponent(customOptions);
222
+ await flushPromises();
223
+
224
+ const quickViewButton = element.shadowRoot.querySelector(
225
+ selectors.quickviewButton
226
+ );
227
+
228
+ if (testVariant === 'result-action') {
229
+ expect(quickViewButton.classList).toContain(
230
+ 'slds-button_icon-border-filled'
231
+ );
232
+ expect(functionMocks.dispatchEvent).toHaveBeenCalledTimes(2);
233
+ expect(functionMocks.dispatchEvent.mock.calls[0][0].type).toBe(
234
+ 'quantic__resultactionregister'
235
+ );
236
+ } else {
237
+ expect(quickViewButton.classList).toContain(
238
+ `slds-button_${testVariant}`
239
+ );
240
+ expect(functionMocks.dispatchEvent).toHaveBeenCalledTimes(1);
241
+ expect(functionMocks.dispatchEvent.mock.calls[0][0].type).toBe(
242
+ 'quantic__haspreview'
243
+ );
244
+ }
245
+ }
246
+ );
247
+
248
+ it('should render the tooltip correctly', async () => {
249
+ const customOptions = {
250
+ result: exampleResult,
251
+ tooltip: 'Custom Tooltip',
252
+ };
253
+ const element = createTestComponent(customOptions);
254
+ await flushPromises();
255
+
256
+ const tooltip = element.shadowRoot.querySelector(selectors.tooltip);
257
+
258
+ expect(tooltip.textContent).toBe('Custom Tooltip');
259
+ });
260
+ });
261
+
262
+ describe('when the quickview is opened and closed', () => {
263
+ it('should open the quickview modal', async () => {
264
+ const element = createTestComponent();
265
+ await flushPromises();
266
+
267
+ const quickViewButton = element.shadowRoot.querySelector(
268
+ selectors.quickviewButton
269
+ );
270
+ await quickViewButton.click();
271
+ await flushPromises();
272
+
273
+ const modal = element.shadowRoot.querySelector(
274
+ selectors.quickviewContent
275
+ );
276
+ expect(modal).not.toBeNull();
277
+ });
278
+
279
+ it('should close the quickview modal', async () => {
280
+ const element = createTestComponent();
281
+ await flushPromises();
282
+
283
+ const quickViewButton = element.shadowRoot.querySelector(
284
+ selectors.quickviewButton
285
+ );
286
+ await quickViewButton.click();
287
+ await flushPromises();
288
+
289
+ const closeButton = element.shadowRoot.querySelector(
290
+ selectors.closeQuickviewButton
291
+ );
292
+ await closeButton.click();
293
+ await flushPromises();
294
+
295
+ const modal = element.shadowRoot.querySelector(
296
+ selectors.quickviewContent
297
+ );
298
+ expect(modal).toBeNull();
299
+ });
300
+ });
301
+ });
@@ -0,0 +1,81 @@
1
+ import {ResultQuickviewObject} from './pageObject';
2
+ import {quanticBase} from '../../../../../../playwright/fixtures/baseFixture';
3
+ import {
4
+ searchRequestRegex,
5
+ insightSearchRequestRegex,
6
+ searchQuickviewRequestRegex,
7
+ insightQuickviewRequestRegex,
8
+ } from '../../../../../../playwright/utils/requests';
9
+ import {InsightSetupObject} from '../../../../../../playwright/page-object/insightSetupObject';
10
+ import {useCaseEnum} from '../../../../../../playwright/utils/useCase';
11
+ import {SearchObjectWithQuickview} from '../../../../../../playwright/page-object/searchObjectWithQuickview';
12
+
13
+ const resultQuickviewUrl = 's/quantic-result-quickview';
14
+
15
+ interface ResultQuickviewOptions {
16
+ result: string;
17
+ maximumPreviewSize: number;
18
+ previewButtonIcon: string;
19
+ previewButtonLabel: string;
20
+ previewButtonVariant: string;
21
+ tooltip: string;
22
+ }
23
+ type QuanticResultQuickviewE2ESearchFixtures = {
24
+ resultQuickview: ResultQuickviewObject;
25
+ search: SearchObjectWithQuickview;
26
+ options: Partial<ResultQuickviewOptions>;
27
+ };
28
+
29
+ type QuanticResultQuickviewE2EInsightFixtures =
30
+ QuanticResultQuickviewE2ESearchFixtures & {
31
+ insightSetup: InsightSetupObject;
32
+ };
33
+
34
+ export const testSearch =
35
+ quanticBase.extend<QuanticResultQuickviewE2ESearchFixtures>({
36
+ options: {},
37
+ search: async ({page}, use) => {
38
+ await use(
39
+ new SearchObjectWithQuickview(
40
+ page,
41
+ searchRequestRegex,
42
+ searchQuickviewRequestRegex
43
+ )
44
+ );
45
+ },
46
+ resultQuickview: async ({page, options, configuration}, use) => {
47
+ await page.goto(resultQuickviewUrl);
48
+ await configuration.configure(options);
49
+ await use(new ResultQuickviewObject(page));
50
+ },
51
+ });
52
+
53
+ export const testInsight =
54
+ quanticBase.extend<QuanticResultQuickviewE2EInsightFixtures>({
55
+ options: {},
56
+ search: async ({page}, use) => {
57
+ await use(
58
+ new SearchObjectWithQuickview(
59
+ page,
60
+ insightSearchRequestRegex,
61
+ insightQuickviewRequestRegex
62
+ )
63
+ );
64
+ },
65
+ insightSetup: async ({page}, use) => {
66
+ await use(new InsightSetupObject(page));
67
+ },
68
+ resultQuickview: async (
69
+ {page, options, search, configuration, insightSetup},
70
+ use
71
+ ) => {
72
+ await page.goto(resultQuickviewUrl);
73
+ await configuration.configure({...options, useCase: useCaseEnum.insight});
74
+ await insightSetup.waitForInsightInterfaceInitialization();
75
+ await search.performSearch();
76
+ await search.waitForSearchResponse();
77
+ await use(new ResultQuickviewObject(page));
78
+ },
79
+ });
80
+
81
+ export {expect} from '@playwright/test';