@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.
- package/force-app/main/default/classes/OrganizationEndpointsTest.cls +71 -15
- package/force-app/main/default/classes/RecommendationsControllerTest.cls +1 -1
- package/force-app/main/default/lwc/quanticTabBar/quanticTabBar.js +148 -125
- package/force-app/main/default/staticresources/coveoheadless/case-assist/headless.js +16 -16
- package/force-app/main/default/staticresources/coveoheadless/headless.js +17 -17
- package/force-app/main/default/staticresources/coveoheadless/insight/headless.js +16 -16
- package/force-app/main/default/staticresources/coveoheadless/recommendation/headless.js +16 -16
- package/package.json +33 -31
- package/force-app/main/default/lwc/quanticAriaLive/__tests__/quanticAriaLive.test.js +0 -106
- package/force-app/main/default/lwc/quanticBreadcrumbManager/__tests__/quanticBreadcrumbManager.test.js +0 -752
- package/force-app/main/default/lwc/quanticBreadcrumbManager/e2e/data.ts +0 -130
- package/force-app/main/default/lwc/quanticBreadcrumbManager/e2e/fixture.ts +0 -87
- package/force-app/main/default/lwc/quanticBreadcrumbManager/e2e/pageObject.ts +0 -282
- package/force-app/main/default/lwc/quanticBreadcrumbManager/e2e/quanticBreadcrumbManager.e2e.ts +0 -208
- package/force-app/main/default/lwc/quanticCarousel/__tests__/quanticCarousel.test.js +0 -262
- package/force-app/main/default/lwc/quanticCaseClassification/__tests__/quanticCaseClassification.test.js +0 -819
- package/force-app/main/default/lwc/quanticCaseClassification/e2e/data.ts +0 -23
- package/force-app/main/default/lwc/quanticCaseClassification/e2e/fixture.ts +0 -51
- package/force-app/main/default/lwc/quanticCaseClassification/e2e/pageObject.ts +0 -152
- package/force-app/main/default/lwc/quanticCaseClassification/e2e/quanticCaseClassification.e2e.ts +0 -269
- package/force-app/main/default/lwc/quanticCategoryFacet/__tests__/quanticCategoryFacet.test.js +0 -1183
- package/force-app/main/default/lwc/quanticCategoryFacet/e2e/data.ts +0 -91
- package/force-app/main/default/lwc/quanticCategoryFacet/e2e/fixture.ts +0 -79
- package/force-app/main/default/lwc/quanticCategoryFacet/e2e/pageObject.ts +0 -55
- package/force-app/main/default/lwc/quanticCategoryFacet/e2e/quanticCategoryFacet.e2e.ts +0 -219
- package/force-app/main/default/lwc/quanticCitation/__tests__/quanticCitation.test.js +0 -581
- package/force-app/main/default/lwc/quanticColoredResultBadge/__tests__/quanticColoredResultBadge.test.js +0 -212
- package/force-app/main/default/lwc/quanticDateFacet/__tests__/quanticDateFacet.test.js +0 -688
- package/force-app/main/default/lwc/quanticDateFacet/e2e/data.ts +0 -44
- package/force-app/main/default/lwc/quanticDateFacet/e2e/fixture.ts +0 -72
- package/force-app/main/default/lwc/quanticDateFacet/e2e/pageObject.ts +0 -27
- package/force-app/main/default/lwc/quanticDateFacet/e2e/quanticDateFacet.e2e.ts +0 -167
- package/force-app/main/default/lwc/quanticDidYouMean/__tests__/quanticDidYouMean.test.js +0 -348
- package/force-app/main/default/lwc/quanticDidYouMean/e2e/data.ts +0 -48
- package/force-app/main/default/lwc/quanticDidYouMean/e2e/fixture.ts +0 -84
- package/force-app/main/default/lwc/quanticDidYouMean/e2e/pageObject.ts +0 -173
- package/force-app/main/default/lwc/quanticDidYouMean/e2e/quanticDidYouMean.e2e.ts +0 -219
- package/force-app/main/default/lwc/quanticDocumentSuggestion/__tests__/quanticDocumentSuggestion.test.js +0 -404
- package/force-app/main/default/lwc/quanticDocumentSuggestion/e2e/fixture.ts +0 -38
- package/force-app/main/default/lwc/quanticDocumentSuggestion/e2e/pageObject.ts +0 -52
- package/force-app/main/default/lwc/quanticDocumentSuggestion/e2e/quanticDocumentSuggestion.e2e.ts +0 -102
- package/force-app/main/default/lwc/quanticFacet/__tests__/quanticFacet.test.js +0 -1105
- package/force-app/main/default/lwc/quanticFacet/e2e/data.ts +0 -62
- package/force-app/main/default/lwc/quanticFacet/e2e/fixture.ts +0 -78
- package/force-app/main/default/lwc/quanticFacet/e2e/pageObject.ts +0 -67
- package/force-app/main/default/lwc/quanticFacet/e2e/quanticFacet.e2e.ts +0 -242
- package/force-app/main/default/lwc/quanticFacetCaption/__tests__/quanticFacetCaption.test.js +0 -28
- package/force-app/main/default/lwc/quanticFacetManager/__tests__/quanticFacetManager.test.js +0 -178
- package/force-app/main/default/lwc/quanticFacetManager/e2e/data.ts +0 -59
- package/force-app/main/default/lwc/quanticFacetManager/e2e/fixture.ts +0 -75
- package/force-app/main/default/lwc/quanticFacetManager/e2e/pageObject.ts +0 -23
- package/force-app/main/default/lwc/quanticFacetManager/e2e/quanticFacetManager.e2e.ts +0 -82
- package/force-app/main/default/lwc/quanticFeedback/__tests__/quanticFeedback.test.js +0 -403
- package/force-app/main/default/lwc/quanticFeedbackModal/__tests__/quanticFeedbackModal.test.js +0 -448
- package/force-app/main/default/lwc/quanticFeedbackModalQna/__tests__/quanticFeedbackModalQna.test.js +0 -298
- package/force-app/main/default/lwc/quanticFoldedResultList/__tests__/quanticFoldedResultList.test.js +0 -323
- package/force-app/main/default/lwc/quanticFoldedResultList/e2e/fixture.ts +0 -74
- package/force-app/main/default/lwc/quanticFoldedResultList/e2e/pageObject.ts +0 -81
- package/force-app/main/default/lwc/quanticFoldedResultList/e2e/quanticFoldedResultList.e2e.ts +0 -69
- package/force-app/main/default/lwc/quanticGeneratedAnswer/__tests__/quanticGeneratedAnswer.test.js +0 -1575
- package/force-app/main/default/lwc/quanticGeneratedAnswer/e2e/agentData.ts +0 -279
- package/force-app/main/default/lwc/quanticGeneratedAnswer/e2e/data.ts +0 -56
- package/force-app/main/default/lwc/quanticGeneratedAnswer/e2e/fixture-agent.ts +0 -77
- package/force-app/main/default/lwc/quanticGeneratedAnswer/e2e/fixture.ts +0 -194
- package/force-app/main/default/lwc/quanticGeneratedAnswer/e2e/pageObject.ts +0 -599
- package/force-app/main/default/lwc/quanticGeneratedAnswer/e2e/quanticGeneratedAnswer.e2e.ts +0 -333
- package/force-app/main/default/lwc/quanticGeneratedAnswer/e2e/quanticGeneratedAnswerAgent.e2e.ts +0 -298
- package/force-app/main/default/lwc/quanticGeneratedAnswerBody/__tests__/quanticGeneratedAnswerBody.test.js +0 -418
- package/force-app/main/default/lwc/quanticGeneratedAnswerContent/__tests__/quanticGeneratedAnswerContent.test.js +0 -447
- package/force-app/main/default/lwc/quanticGeneratedAnswerCopyToClipboard/__tests__/quanticGeneratedAnswerCopyToClipboard.test.js +0 -129
- package/force-app/main/default/lwc/quanticGeneratedAnswerFollowUpInput/__tests__/quanticGeneratedAnswerFollowUpInput.test.js +0 -466
- package/force-app/main/default/lwc/quanticGeneratedAnswerStreamOfThought/__tests__/quanticGeneratedAnswerStreamOfThought.test.js +0 -402
- package/force-app/main/default/lwc/quanticGeneratedAnswerStreamOfThought/__tests__/stepsUtils.test.js +0 -118
- package/force-app/main/default/lwc/quanticGeneratedAnswerThread/__tests__/quanticGeneratedAnswerThread.test.js +0 -285
- package/force-app/main/default/lwc/quanticHeading/__tests__/quanticHeading.test.js +0 -71
- package/force-app/main/default/lwc/quanticHeadlessLoader/__tests__/quanticHeadlessLoader.test.js +0 -651
- package/force-app/main/default/lwc/quanticInsightInterface/__tests__/quanticInsightInterface.test.js +0 -194
- package/force-app/main/default/lwc/quanticInsightSummary/__tests__/quanticInsightSummary.test.js +0 -230
- package/force-app/main/default/lwc/quanticModal/__tests__/quanticModal.test.js +0 -205
- package/force-app/main/default/lwc/quanticNotifications/__tests__/quanticNotifications.test.js +0 -309
- package/force-app/main/default/lwc/quanticNotifications/e2e/fixture.ts +0 -62
- package/force-app/main/default/lwc/quanticNotifications/e2e/pageObject.ts +0 -55
- package/force-app/main/default/lwc/quanticNotifications/e2e/quanticNotifications.e2e.ts +0 -47
- package/force-app/main/default/lwc/quanticNumericFacet/__tests__/quanticNumericFacet.test.js +0 -953
- package/force-app/main/default/lwc/quanticNumericFacet/e2e/data.ts +0 -48
- package/force-app/main/default/lwc/quanticNumericFacet/e2e/fixture.ts +0 -75
- package/force-app/main/default/lwc/quanticNumericFacet/e2e/pageObject.ts +0 -59
- package/force-app/main/default/lwc/quanticNumericFacet/e2e/quanticNumericFacet.e2e.ts +0 -186
- package/force-app/main/default/lwc/quanticPager/__tests__/quanticPager.test.js +0 -430
- package/force-app/main/default/lwc/quanticPager/e2e/fixture.ts +0 -65
- package/force-app/main/default/lwc/quanticPager/e2e/pageObject.ts +0 -69
- package/force-app/main/default/lwc/quanticPager/e2e/quanticPager.e2e.ts +0 -106
- package/force-app/main/default/lwc/quanticPlaceholder/__tests__/quanticPlaceholder.test.js +0 -47
- package/force-app/main/default/lwc/quanticQuickviewContent/__tests__/data/defaultTestCase.json +0 -13
- package/force-app/main/default/lwc/quanticQuickviewContent/__tests__/data/youtubeTestCase.json +0 -14
- package/force-app/main/default/lwc/quanticQuickviewContent/__tests__/quanticQuickviewContent.test.js +0 -82
- package/force-app/main/default/lwc/quanticRadioButtonsGroup/__tests__/quanticRadioButtonsGroup.test.js +0 -273
- package/force-app/main/default/lwc/quanticRecentQueriesList/__tests__/quanticRecentQueriesList.test.js +0 -448
- package/force-app/main/default/lwc/quanticRecentQueriesList/e2e/fixture.ts +0 -43
- package/force-app/main/default/lwc/quanticRecentQueriesList/e2e/pageObject.ts +0 -55
- package/force-app/main/default/lwc/quanticRecentQueriesList/e2e/quanticRecentQueriesList.e2e.ts +0 -93
- package/force-app/main/default/lwc/quanticRecentResultsList/__tests__/quanticRecentResultsList.test.js +0 -516
- package/force-app/main/default/lwc/quanticRecentResultsList/e2e/fixture.ts +0 -43
- package/force-app/main/default/lwc/quanticRecentResultsList/e2e/pageObject.ts +0 -61
- package/force-app/main/default/lwc/quanticRecentResultsList/e2e/quanticRecentResultsList.e2e.ts +0 -48
- package/force-app/main/default/lwc/quanticRecommendationList/__tests__/quanticRecommendationList.test.js +0 -491
- package/force-app/main/default/lwc/quanticRecommendationList/e2e/fixture.ts +0 -36
- package/force-app/main/default/lwc/quanticRecommendationList/e2e/pageObject.ts +0 -52
- package/force-app/main/default/lwc/quanticRecommendationList/e2e/quanticRecommendationList.e2e.ts +0 -53
- package/force-app/main/default/lwc/quanticRefineModalContent/__tests__/quanticRefineModalContent.test.js +0 -747
- package/force-app/main/default/lwc/quanticRefineToggle/__tests__/quanticRefineToggle.test.js +0 -544
- package/force-app/main/default/lwc/quanticResultAction/__tests__/quanticResultAction.test.js +0 -262
- package/force-app/main/default/lwc/quanticResultActionBar/__tests__/quanticResultActionBar.test.js +0 -141
- package/force-app/main/default/lwc/quanticResultChildren/__tests__/quanticResultChildren.test.js +0 -340
- package/force-app/main/default/lwc/quanticResultCopyToClipboard/__tests__/quanticResultCopyToClipboard.test.js +0 -300
- package/force-app/main/default/lwc/quanticResultCopyToClipboard/e2e/fixture.ts +0 -49
- package/force-app/main/default/lwc/quanticResultCopyToClipboard/e2e/pageObject.ts +0 -49
- package/force-app/main/default/lwc/quanticResultCopyToClipboard/e2e/quanticResultCopyToClipboard.e2e.ts +0 -40
- package/force-app/main/default/lwc/quanticResultDate/__tests__/quanticResultDate.test.js +0 -144
- package/force-app/main/default/lwc/quanticResultField/__tests__/quanticResultField.test.js +0 -120
- package/force-app/main/default/lwc/quanticResultHighlightedTextField/__tests__/quanticResultHighlightedTextField.test.js +0 -209
- package/force-app/main/default/lwc/quanticResultLink/__tests__/quanticResultLink.test.js +0 -302
- package/force-app/main/default/lwc/quanticResultList/__tests__/quanticResultList.test.js +0 -342
- package/force-app/main/default/lwc/quanticResultList/e2e/fixture.ts +0 -70
- package/force-app/main/default/lwc/quanticResultList/e2e/pageObject.ts +0 -81
- package/force-app/main/default/lwc/quanticResultList/e2e/quanticResultList.e2e.ts +0 -69
- package/force-app/main/default/lwc/quanticResultMultiValueText/__tests__/quanticResultMultiValueText.test.js +0 -235
- package/force-app/main/default/lwc/quanticResultNumber/__tests__/quanticResultNumber.test.js +0 -144
- package/force-app/main/default/lwc/quanticResultPrintableUri/__tests__/quanticResultPrintableUri.test.js +0 -324
- package/force-app/main/default/lwc/quanticResultQuickview/__tests__/quanticResultQuickview.test.js +0 -308
- package/force-app/main/default/lwc/quanticResultQuickview/e2e/fixture.ts +0 -85
- package/force-app/main/default/lwc/quanticResultQuickview/e2e/pageObject.ts +0 -38
- package/force-app/main/default/lwc/quanticResultQuickview/e2e/quanticResultQuickView.e2e.ts +0 -66
- package/force-app/main/default/lwc/quanticResultTemplate/__tests__/quanticResultTemplate.test.js +0 -90
- package/force-app/main/default/lwc/quanticResultText/__tests__/quanticResultText.test.js +0 -155
- package/force-app/main/default/lwc/quanticResultsPerPage/__tests__/quanticResultsPerPage.test.js +0 -464
- package/force-app/main/default/lwc/quanticResultsPerPage/e2e/fixture.ts +0 -78
- package/force-app/main/default/lwc/quanticResultsPerPage/e2e/pageObject.ts +0 -85
- package/force-app/main/default/lwc/quanticResultsPerPage/e2e/quanticResultsPerPage.e2e.ts +0 -97
- package/force-app/main/default/lwc/quanticSearchBox/__tests__/quanticSearchBox.test.js +0 -487
- package/force-app/main/default/lwc/quanticSearchBox/e2e/fixture.ts +0 -86
- package/force-app/main/default/lwc/quanticSearchBox/e2e/pageObject.ts +0 -45
- package/force-app/main/default/lwc/quanticSearchBox/e2e/quanticSearchBox.e2e.ts +0 -159
- package/force-app/main/default/lwc/quanticSearchBoxInput/__tests__/quanticSearchBoxInput.test.js +0 -743
- package/force-app/main/default/lwc/quanticSearchBoxSuggestionsList/__tests__/quanticSearchBoxSuggestionsList.test.js +0 -571
- package/force-app/main/default/lwc/quanticSearchBoxSuggestionsList/e2e/fixture.ts +0 -113
- package/force-app/main/default/lwc/quanticSearchBoxSuggestionsList/e2e/pageObject.ts +0 -113
- package/force-app/main/default/lwc/quanticSearchBoxSuggestionsList/e2e/quanticSearchBoxSuggestionsList.e2e.ts +0 -282
- package/force-app/main/default/lwc/quanticSmartSnippet/__tests__/quanticSmartSnippet.test.js +0 -341
- package/force-app/main/default/lwc/quanticSmartSnippet/e2e/data.ts +0 -21
- package/force-app/main/default/lwc/quanticSmartSnippet/e2e/fixture.ts +0 -93
- package/force-app/main/default/lwc/quanticSmartSnippet/e2e/pageObject.ts +0 -196
- package/force-app/main/default/lwc/quanticSmartSnippet/e2e/quanticSmartSnippet.e2e.ts +0 -168
- package/force-app/main/default/lwc/quanticSmartSnippetAnswer/__tests__/quanticSmartSnippetAnswer.test.js +0 -126
- package/force-app/main/default/lwc/quanticSmartSnippetSource/__tests__/quanticSmartSnippetSource.test.js +0 -290
- package/force-app/main/default/lwc/quanticSmartSnippetSuggestions/__tests__/quanticSmartSnippetSuggestions.test.js +0 -329
- package/force-app/main/default/lwc/quanticSmartSnippetSuggestions/e2e/data.ts +0 -31
- package/force-app/main/default/lwc/quanticSmartSnippetSuggestions/e2e/fixture.ts +0 -95
- package/force-app/main/default/lwc/quanticSmartSnippetSuggestions/e2e/pageObject.ts +0 -160
- package/force-app/main/default/lwc/quanticSmartSnippetSuggestions/e2e/quanticSmartSnippetSuggestions.e2e.ts +0 -127
- package/force-app/main/default/lwc/quanticSort/__tests__/quanticSort.test.js +0 -416
- package/force-app/main/default/lwc/quanticSort/e2e/fixture.ts +0 -62
- package/force-app/main/default/lwc/quanticSort/e2e/pageObject.ts +0 -100
- package/force-app/main/default/lwc/quanticSort/e2e/quanticSort.e2e.ts +0 -86
- package/force-app/main/default/lwc/quanticSourceCitations/__tests__/quanticSourceCitations.test.js +0 -156
- package/force-app/main/default/lwc/quanticStandaloneSearchBox/__tests__/quanticStandaloneSearchBox.test.js +0 -387
- package/force-app/main/default/lwc/quanticStandaloneSearchBox/e2e/fixture.ts +0 -54
- package/force-app/main/default/lwc/quanticStandaloneSearchBox/e2e/pageObject.ts +0 -54
- package/force-app/main/default/lwc/quanticStandaloneSearchBox/e2e/quanticStandaloneSearchBox.e2e.ts +0 -72
- package/force-app/main/default/lwc/quanticStatefulButton/__tests__/quanticStatefulButton.test.js +0 -222
- package/force-app/main/default/lwc/quanticSummary/__tests__/quanticSummary.test.js +0 -244
- package/force-app/main/default/lwc/quanticTab/__tests__/quanticTab.test.js +0 -333
- package/force-app/main/default/lwc/quanticTab/e2e/fixture.ts +0 -60
- package/force-app/main/default/lwc/quanticTab/e2e/pageObject.ts +0 -68
- package/force-app/main/default/lwc/quanticTab/e2e/quanticTab.e2e.ts +0 -72
- package/force-app/main/default/lwc/quanticTabBar/__tests__/quanticTabBar.test.js +0 -331
- package/force-app/main/default/lwc/quanticTabBar/e2e/fixture.ts +0 -65
- package/force-app/main/default/lwc/quanticTabBar/e2e/pageObject.ts +0 -80
- package/force-app/main/default/lwc/quanticTabBar/e2e/quanticTabBar.e2e.ts +0 -172
- package/force-app/main/default/lwc/quanticThreadItem/__tests__/quanticThreadItem.test.js +0 -314
- package/force-app/main/default/lwc/quanticTimeframeFacet/__tests__/quanticTimeframeFacet.test.js +0 -1059
- package/force-app/main/default/lwc/quanticTimeframeFacet/e2e/data.ts +0 -66
- package/force-app/main/default/lwc/quanticTimeframeFacet/e2e/fixture.ts +0 -74
- package/force-app/main/default/lwc/quanticTimeframeFacet/e2e/pageObject.ts +0 -43
- package/force-app/main/default/lwc/quanticTimeframeFacet/e2e/quanticTimeframeFacet.e2e.ts +0 -184
- package/force-app/main/default/lwc/quanticTooltip/__tests__/quanticTooltip.test.js +0 -107
- package/force-app/main/default/lwc/quanticUserAction/__tests__/quanticUserAction.test.js +0 -427
- package/force-app/main/default/lwc/quanticUserActionsSession/__tests__/quanticUserActionsSession.test.js +0 -269
- package/force-app/main/default/lwc/quanticUserActionsTimeline/__tests__/data/userActionsState.json +0 -89
- package/force-app/main/default/lwc/quanticUserActionsTimeline/__tests__/quanticUserActionsTimeline.test.js +0 -511
- package/force-app/main/default/lwc/quanticUserActionsToggle/__tests__/quanticUserActionsToggle.test.js +0 -229
- package/force-app/main/default/lwc/quanticUserActionsToggle/e2e/data.ts +0 -32
- package/force-app/main/default/lwc/quanticUserActionsToggle/e2e/fixture.ts +0 -32
- package/force-app/main/default/lwc/quanticUserActionsToggle/e2e/pageObject.ts +0 -71
- package/force-app/main/default/lwc/quanticUserActionsToggle/e2e/quanticUserActionsToggle.e2e.ts +0 -39
- package/force-app/main/default/lwc/quanticUtils/__tests__/accessibilityUtils.test.js +0 -214
- package/force-app/main/default/lwc/quanticUtils/__tests__/citationAnchoringUtils.test.js +0 -84
- package/force-app/main/default/lwc/quanticUtils/__tests__/facetDependenciesUtils.test.js +0 -92
- package/force-app/main/default/lwc/quanticUtils/__tests__/facetStoreUtils.test.js +0 -86
- package/force-app/main/default/lwc/quanticUtils/__tests__/markdownUtils.test.js +0 -109
- package/force-app/main/default/lwc/quanticUtils/__tests__/quanticUtils.test.js +0 -233
- package/force-app/main/default/lwc/quanticUtils/__tests__/timeAndDateUtils.test.js +0 -22
- package/force-app/main/default/lwc/quanticViewedByCustomerBadge/__tests__/quanticViewedByCustomerBadge.test.js +0 -131
|
@@ -1,491 +0,0 @@
|
|
|
1
|
-
/* eslint-disable jest/no-conditional-expect */
|
|
2
|
-
/* eslint-disable no-import-assign */
|
|
3
|
-
// @ts-ignore
|
|
4
|
-
import QuanticRecommendationList from 'c/quanticRecommendationList';
|
|
5
|
-
import {cleanup, flushPromises, buildCreateTestComponent} from 'c/testUtils';
|
|
6
|
-
import * as mockHeadlessLoader from 'c/quanticHeadlessLoader';
|
|
7
|
-
|
|
8
|
-
const recommendationsArray = [
|
|
9
|
-
{
|
|
10
|
-
title: 'Title 1',
|
|
11
|
-
clickUri: 'https://example.com/1',
|
|
12
|
-
excerpt: 'Excerpt 1',
|
|
13
|
-
},
|
|
14
|
-
{
|
|
15
|
-
title: 'Title 2',
|
|
16
|
-
clickUri: 'https://example.com/2',
|
|
17
|
-
excerpt: 'Excerpt 2',
|
|
18
|
-
},
|
|
19
|
-
];
|
|
20
|
-
|
|
21
|
-
jest.mock('c/quanticHeadlessLoader');
|
|
22
|
-
jest.mock('c/quanticUtils', () => ({
|
|
23
|
-
...jest.requireActual('c/quanticUtils'),
|
|
24
|
-
AriaLiveRegion: jest.fn(() => ({
|
|
25
|
-
dispatchMessage: jest.fn(),
|
|
26
|
-
})),
|
|
27
|
-
}));
|
|
28
|
-
|
|
29
|
-
jest.mock(
|
|
30
|
-
'@salesforce/label/c.quantic_InvalidPositiveIntegerProperty',
|
|
31
|
-
() => ({
|
|
32
|
-
default:
|
|
33
|
-
'The value of the {{0}} property must be an integer greater than 0.',
|
|
34
|
-
}),
|
|
35
|
-
{
|
|
36
|
-
virtual: true,
|
|
37
|
-
}
|
|
38
|
-
);
|
|
39
|
-
|
|
40
|
-
let isInitialized = false;
|
|
41
|
-
let consoleErrorSpy;
|
|
42
|
-
const initialRecommendationListState = {
|
|
43
|
-
isLoading: false,
|
|
44
|
-
recommendations: recommendationsArray,
|
|
45
|
-
error: null,
|
|
46
|
-
searchResponseId: '123',
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
let recommendationListState = initialRecommendationListState;
|
|
50
|
-
|
|
51
|
-
const functionMocks = {
|
|
52
|
-
buildRecommendationList: jest.fn(() => ({
|
|
53
|
-
state: recommendationListState,
|
|
54
|
-
subscribe: functionMocks.subscribe,
|
|
55
|
-
})),
|
|
56
|
-
buildResultTemplatesManager: jest.fn(() => ({
|
|
57
|
-
registerTemplates: functionMocks.registerTemplates,
|
|
58
|
-
})),
|
|
59
|
-
loadFieldActions: jest.fn(() => ({
|
|
60
|
-
registerFieldsToInclude: functionMocks.registerFieldsToInclude,
|
|
61
|
-
})),
|
|
62
|
-
subscribe: jest.fn((callback) => {
|
|
63
|
-
callback();
|
|
64
|
-
return functionMocks.unsubscribe;
|
|
65
|
-
}),
|
|
66
|
-
unsubscribe: jest.fn(() => {}),
|
|
67
|
-
dispatch: jest.fn(() => {}),
|
|
68
|
-
registerTemplates: jest.fn(() => {
|
|
69
|
-
return {
|
|
70
|
-
content: jest.fn(),
|
|
71
|
-
conditions: [],
|
|
72
|
-
};
|
|
73
|
-
}),
|
|
74
|
-
registerFieldsToInclude: jest.fn((fieldsToInclude) => {
|
|
75
|
-
return {
|
|
76
|
-
fieldsToInclude,
|
|
77
|
-
};
|
|
78
|
-
}),
|
|
79
|
-
};
|
|
80
|
-
|
|
81
|
-
const exampleEngine = {
|
|
82
|
-
id: 'exampleEngineId',
|
|
83
|
-
dispatch: functionMocks.dispatch,
|
|
84
|
-
};
|
|
85
|
-
const defaultFieldsToInclude = 'field1,field2';
|
|
86
|
-
|
|
87
|
-
const defaultOptions = {
|
|
88
|
-
engineId: exampleEngine.id,
|
|
89
|
-
recommendation: 'recommendation',
|
|
90
|
-
numberOfRecommendations: 10,
|
|
91
|
-
label: 'Top documents for you',
|
|
92
|
-
variant: 'grid',
|
|
93
|
-
recommendationsPerRow: 3,
|
|
94
|
-
fieldsToInclude: defaultFieldsToInclude,
|
|
95
|
-
};
|
|
96
|
-
|
|
97
|
-
const selectors = {
|
|
98
|
-
initializationError: 'c-quantic-component-error',
|
|
99
|
-
gridContainer: '[data-testid="recommendations__grid"]',
|
|
100
|
-
carouselContainer: '[data-testid="recommendations__carousel"]',
|
|
101
|
-
recommendationListItem: '[data-testid="recommendations__item"]',
|
|
102
|
-
recommendationListResult: 'c-quantic-result',
|
|
103
|
-
placeholder: 'c-quantic-placeholder',
|
|
104
|
-
quanticHeading: 'c-quantic-heading',
|
|
105
|
-
};
|
|
106
|
-
|
|
107
|
-
const createTestComponent = buildCreateTestComponent(
|
|
108
|
-
QuanticRecommendationList,
|
|
109
|
-
'c-quantic-recommendation-list',
|
|
110
|
-
defaultOptions
|
|
111
|
-
);
|
|
112
|
-
|
|
113
|
-
function prepareHeadlessState() {
|
|
114
|
-
// @ts-ignore
|
|
115
|
-
mockHeadlessLoader.getHeadlessBundle = () => {
|
|
116
|
-
return {
|
|
117
|
-
buildRecommendationList: functionMocks.buildRecommendationList,
|
|
118
|
-
buildResultTemplatesManager: functionMocks.buildResultTemplatesManager,
|
|
119
|
-
loadFieldActions: functionMocks.loadFieldActions,
|
|
120
|
-
};
|
|
121
|
-
};
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
function mockSuccessfulHeadlessInitialization() {
|
|
125
|
-
// @ts-ignore
|
|
126
|
-
mockHeadlessLoader.initializeWithHeadless = (element, _, initialize) => {
|
|
127
|
-
if (element instanceof QuanticRecommendationList && !isInitialized) {
|
|
128
|
-
isInitialized = true;
|
|
129
|
-
initialize(exampleEngine);
|
|
130
|
-
}
|
|
131
|
-
};
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
function mockErroneousHeadlessInitialization() {
|
|
135
|
-
// @ts-ignore
|
|
136
|
-
mockHeadlessLoader.initializeWithHeadless = (element) => {
|
|
137
|
-
if (element instanceof QuanticRecommendationList) {
|
|
138
|
-
element.setInitializationError();
|
|
139
|
-
}
|
|
140
|
-
};
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
describe('c-quantic-recommendation-list', () => {
|
|
144
|
-
beforeEach(() => {
|
|
145
|
-
mockSuccessfulHeadlessInitialization();
|
|
146
|
-
prepareHeadlessState();
|
|
147
|
-
});
|
|
148
|
-
|
|
149
|
-
afterEach(() => {
|
|
150
|
-
cleanup();
|
|
151
|
-
isInitialized = false;
|
|
152
|
-
recommendationListState = initialRecommendationListState;
|
|
153
|
-
});
|
|
154
|
-
|
|
155
|
-
describe('when the component is loading', () => {
|
|
156
|
-
it('should display the placeholder component when loading', async () => {
|
|
157
|
-
recommendationListState = {
|
|
158
|
-
isLoading: true,
|
|
159
|
-
recommendations: [],
|
|
160
|
-
error: null,
|
|
161
|
-
searchResponseId: null,
|
|
162
|
-
};
|
|
163
|
-
const element = createTestComponent();
|
|
164
|
-
await flushPromises();
|
|
165
|
-
|
|
166
|
-
const loadingPlaceholder = element.shadowRoot.querySelector(
|
|
167
|
-
selectors.placeholder
|
|
168
|
-
);
|
|
169
|
-
|
|
170
|
-
expect(loadingPlaceholder).not.toBeNull();
|
|
171
|
-
});
|
|
172
|
-
|
|
173
|
-
it('should not display the placeholder component when there is an error in the state', async () => {
|
|
174
|
-
recommendationListState = {
|
|
175
|
-
isLoading: true,
|
|
176
|
-
recommendations: [],
|
|
177
|
-
error: {
|
|
178
|
-
statusCode: 500,
|
|
179
|
-
message: 'Error loading recommendations',
|
|
180
|
-
},
|
|
181
|
-
searchResponseId: null,
|
|
182
|
-
};
|
|
183
|
-
const element = createTestComponent();
|
|
184
|
-
await flushPromises();
|
|
185
|
-
|
|
186
|
-
const loadingPlaceholder = element.shadowRoot.querySelector(
|
|
187
|
-
selectors.placeholder
|
|
188
|
-
);
|
|
189
|
-
|
|
190
|
-
expect(loadingPlaceholder).toBeNull();
|
|
191
|
-
});
|
|
192
|
-
});
|
|
193
|
-
|
|
194
|
-
describe('controller initialization', () => {
|
|
195
|
-
it('should build the RecommendationList controller and subscribe to its state', async () => {
|
|
196
|
-
createTestComponent();
|
|
197
|
-
await flushPromises();
|
|
198
|
-
|
|
199
|
-
expect(functionMocks.buildRecommendationList).toHaveBeenCalledTimes(1);
|
|
200
|
-
expect(functionMocks.buildRecommendationList).toHaveBeenCalledWith(
|
|
201
|
-
exampleEngine,
|
|
202
|
-
{
|
|
203
|
-
options: {
|
|
204
|
-
id: defaultOptions.recommendation,
|
|
205
|
-
numberOfRecommendations: defaultOptions.numberOfRecommendations,
|
|
206
|
-
},
|
|
207
|
-
}
|
|
208
|
-
);
|
|
209
|
-
expect(functionMocks.subscribe).toHaveBeenCalledTimes(1);
|
|
210
|
-
});
|
|
211
|
-
|
|
212
|
-
it('should build the ResultTemplatesManager controller', async () => {
|
|
213
|
-
createTestComponent();
|
|
214
|
-
await flushPromises();
|
|
215
|
-
|
|
216
|
-
expect(functionMocks.buildResultTemplatesManager).toHaveBeenCalledTimes(
|
|
217
|
-
1
|
|
218
|
-
);
|
|
219
|
-
expect(functionMocks.buildResultTemplatesManager).toHaveBeenCalledWith(
|
|
220
|
-
exampleEngine
|
|
221
|
-
);
|
|
222
|
-
});
|
|
223
|
-
|
|
224
|
-
it('should dispatch quantic__registerrecommendationtemplates event', async () => {
|
|
225
|
-
const mockEventHandler = jest.fn();
|
|
226
|
-
document.addEventListener(
|
|
227
|
-
'quantic__registerrecommendationtemplates',
|
|
228
|
-
// @ts-ignore
|
|
229
|
-
(event) => mockEventHandler(event.detail),
|
|
230
|
-
{once: true}
|
|
231
|
-
);
|
|
232
|
-
createTestComponent();
|
|
233
|
-
|
|
234
|
-
await flushPromises();
|
|
235
|
-
|
|
236
|
-
expect(mockEventHandler).toHaveBeenCalledTimes(1);
|
|
237
|
-
expect(mockEventHandler).toHaveBeenCalledWith({
|
|
238
|
-
registerTemplates: functionMocks.registerTemplates,
|
|
239
|
-
});
|
|
240
|
-
});
|
|
241
|
-
|
|
242
|
-
it('should register the fields to include', async () => {
|
|
243
|
-
const expectedFormattedFieldsToInclude = ['field1', 'field2'];
|
|
244
|
-
createTestComponent();
|
|
245
|
-
await flushPromises();
|
|
246
|
-
|
|
247
|
-
expect(functionMocks.loadFieldActions).toHaveBeenCalledTimes(1);
|
|
248
|
-
expect(functionMocks.loadFieldActions).toHaveBeenCalledWith(
|
|
249
|
-
exampleEngine
|
|
250
|
-
);
|
|
251
|
-
expect(functionMocks.dispatch).toHaveBeenCalledTimes(1);
|
|
252
|
-
expect(functionMocks.dispatch).toHaveBeenCalledWith(
|
|
253
|
-
functionMocks.registerFieldsToInclude(expectedFormattedFieldsToInclude)
|
|
254
|
-
);
|
|
255
|
-
});
|
|
256
|
-
|
|
257
|
-
describe('with custom #numberOfRecommendations option', () => {
|
|
258
|
-
it('should build the buildRecommendationList controller with the custom number of recommendation value', async () => {
|
|
259
|
-
createTestComponent({
|
|
260
|
-
...defaultOptions,
|
|
261
|
-
numberOfRecommendations: 5,
|
|
262
|
-
});
|
|
263
|
-
await flushPromises();
|
|
264
|
-
|
|
265
|
-
expect(functionMocks.buildRecommendationList).toHaveBeenCalledTimes(1);
|
|
266
|
-
expect(functionMocks.buildRecommendationList).toHaveBeenCalledWith(
|
|
267
|
-
exampleEngine,
|
|
268
|
-
{
|
|
269
|
-
options: {
|
|
270
|
-
id: defaultOptions.recommendation,
|
|
271
|
-
numberOfRecommendations: 5,
|
|
272
|
-
},
|
|
273
|
-
}
|
|
274
|
-
);
|
|
275
|
-
});
|
|
276
|
-
});
|
|
277
|
-
|
|
278
|
-
describe('when invalid property values are passed', () => {
|
|
279
|
-
const expectedInvalidPropertyErrorMessage =
|
|
280
|
-
'The value of the recommendationsPerRow property must be an integer greater than 0.';
|
|
281
|
-
|
|
282
|
-
beforeEach(() => {
|
|
283
|
-
consoleErrorSpy = jest.spyOn(console, 'error');
|
|
284
|
-
});
|
|
285
|
-
|
|
286
|
-
afterEach(() => {
|
|
287
|
-
consoleErrorSpy.mockRestore();
|
|
288
|
-
});
|
|
289
|
-
|
|
290
|
-
it('should diplay an error message when recommendationsPerRow is not a number', async () => {
|
|
291
|
-
const element = createTestComponent({
|
|
292
|
-
...defaultOptions,
|
|
293
|
-
recommendationsPerRow: 'invalid',
|
|
294
|
-
});
|
|
295
|
-
await flushPromises();
|
|
296
|
-
|
|
297
|
-
const initializationError = element.shadowRoot.querySelector(
|
|
298
|
-
selectors.initializationError
|
|
299
|
-
);
|
|
300
|
-
|
|
301
|
-
expect(initializationError).not.toBeNull();
|
|
302
|
-
expect(console.error).toHaveBeenCalledTimes(1);
|
|
303
|
-
expect(console.error).toHaveBeenCalledWith(
|
|
304
|
-
expectedInvalidPropertyErrorMessage
|
|
305
|
-
);
|
|
306
|
-
});
|
|
307
|
-
|
|
308
|
-
it('should diplay an error message when recommendationsPerRow is a negative number', async () => {
|
|
309
|
-
const element = createTestComponent({
|
|
310
|
-
...defaultOptions,
|
|
311
|
-
recommendationsPerRow: -1,
|
|
312
|
-
});
|
|
313
|
-
await flushPromises();
|
|
314
|
-
|
|
315
|
-
const initializationError = element.shadowRoot.querySelector(
|
|
316
|
-
selectors.initializationError
|
|
317
|
-
);
|
|
318
|
-
|
|
319
|
-
expect(initializationError).not.toBeNull();
|
|
320
|
-
expect(console.error).toHaveBeenCalledTimes(1);
|
|
321
|
-
expect(console.error).toHaveBeenCalledWith(
|
|
322
|
-
expectedInvalidPropertyErrorMessage
|
|
323
|
-
);
|
|
324
|
-
});
|
|
325
|
-
});
|
|
326
|
-
});
|
|
327
|
-
|
|
328
|
-
describe('when an initialization error occurs', () => {
|
|
329
|
-
beforeEach(() => {
|
|
330
|
-
mockErroneousHeadlessInitialization();
|
|
331
|
-
});
|
|
332
|
-
|
|
333
|
-
it('should display the error component', async () => {
|
|
334
|
-
const element = createTestComponent();
|
|
335
|
-
await flushPromises();
|
|
336
|
-
|
|
337
|
-
const initializationError = element.shadowRoot.querySelector(
|
|
338
|
-
selectors.initializationError
|
|
339
|
-
);
|
|
340
|
-
|
|
341
|
-
expect(initializationError).not.toBeNull();
|
|
342
|
-
});
|
|
343
|
-
});
|
|
344
|
-
|
|
345
|
-
describe('when the component is initialized successfully', () => {
|
|
346
|
-
beforeEach(() => {
|
|
347
|
-
mockSuccessfulHeadlessInitialization();
|
|
348
|
-
prepareHeadlessState();
|
|
349
|
-
});
|
|
350
|
-
|
|
351
|
-
describe('when there are no recommendations', () => {
|
|
352
|
-
it('should not display a recommendation list', async () => {
|
|
353
|
-
recommendationListState = {
|
|
354
|
-
isLoading: false,
|
|
355
|
-
recommendations: [],
|
|
356
|
-
error: null,
|
|
357
|
-
searchResponseId: null,
|
|
358
|
-
};
|
|
359
|
-
const element = createTestComponent();
|
|
360
|
-
await flushPromises();
|
|
361
|
-
|
|
362
|
-
const recommendationContainer = element.shadowRoot.querySelector(
|
|
363
|
-
selectors.gridContainer
|
|
364
|
-
);
|
|
365
|
-
|
|
366
|
-
expect(recommendationContainer).toBeNull();
|
|
367
|
-
const recommendationListElements = element.shadowRoot.querySelectorAll(
|
|
368
|
-
selectors.recommendationListItem
|
|
369
|
-
);
|
|
370
|
-
expect(recommendationListElements.length).toBe(0);
|
|
371
|
-
});
|
|
372
|
-
});
|
|
373
|
-
|
|
374
|
-
describe('when there are recommendations', () => {
|
|
375
|
-
describe('when the variant value is #grid', () => {
|
|
376
|
-
it('should properly display the recommendations as a grid', async () => {
|
|
377
|
-
const element = createTestComponent({
|
|
378
|
-
...defaultOptions,
|
|
379
|
-
variant: 'grid',
|
|
380
|
-
});
|
|
381
|
-
await flushPromises();
|
|
382
|
-
|
|
383
|
-
const recommendationContainer = element.shadowRoot.querySelector(
|
|
384
|
-
selectors.gridContainer
|
|
385
|
-
);
|
|
386
|
-
const recommendationItems = element.shadowRoot.querySelectorAll(
|
|
387
|
-
selectors.recommendationListResult
|
|
388
|
-
);
|
|
389
|
-
|
|
390
|
-
expect(recommendationContainer).not.toBeNull();
|
|
391
|
-
expect(recommendationItems.length).toBe(recommendationsArray.length);
|
|
392
|
-
recommendationItems.forEach((item, index) => {
|
|
393
|
-
expect(item.result).toEqual(
|
|
394
|
-
expect.objectContaining(recommendationsArray[index])
|
|
395
|
-
);
|
|
396
|
-
expect(item.engineId).toBe(defaultOptions.engineId);
|
|
397
|
-
expect(item.resultTemplatesManager).toEqual(
|
|
398
|
-
functionMocks.buildResultTemplatesManager()
|
|
399
|
-
);
|
|
400
|
-
});
|
|
401
|
-
});
|
|
402
|
-
|
|
403
|
-
describe('with a custom #recommendationsPerRow option', () => {
|
|
404
|
-
const customRecommendationsPerRow = 2;
|
|
405
|
-
it('should set the width of the recommendation items based on the number of #recommendationsPerRow value', async () => {
|
|
406
|
-
const expectedRecommendationWidth = `${100 / customRecommendationsPerRow}%`;
|
|
407
|
-
const element = createTestComponent({
|
|
408
|
-
...defaultOptions,
|
|
409
|
-
variant: 'grid',
|
|
410
|
-
recommendationsPerRow: customRecommendationsPerRow,
|
|
411
|
-
});
|
|
412
|
-
await flushPromises();
|
|
413
|
-
|
|
414
|
-
expect(element.style._values['--recommendationItemWidth']).toBe(
|
|
415
|
-
expectedRecommendationWidth
|
|
416
|
-
);
|
|
417
|
-
});
|
|
418
|
-
});
|
|
419
|
-
});
|
|
420
|
-
|
|
421
|
-
describe('when the variant value is #carousel', () => {
|
|
422
|
-
it('should properly display the recommendations as a carousel', async () => {
|
|
423
|
-
const element = createTestComponent({
|
|
424
|
-
...defaultOptions,
|
|
425
|
-
variant: 'carousel',
|
|
426
|
-
});
|
|
427
|
-
await flushPromises();
|
|
428
|
-
|
|
429
|
-
const recommendationContainer = element.shadowRoot.querySelector(
|
|
430
|
-
selectors.carouselContainer
|
|
431
|
-
);
|
|
432
|
-
|
|
433
|
-
expect(recommendationContainer).not.toBeNull();
|
|
434
|
-
expect(recommendationContainer.label).toBe(defaultOptions.label);
|
|
435
|
-
expect(recommendationContainer.itemsPerPage).toBe(
|
|
436
|
-
defaultOptions.recommendationsPerRow
|
|
437
|
-
);
|
|
438
|
-
|
|
439
|
-
const recommendationItems = element.shadowRoot.querySelectorAll(
|
|
440
|
-
selectors.recommendationListResult
|
|
441
|
-
);
|
|
442
|
-
|
|
443
|
-
recommendationItems.forEach((item, index) => {
|
|
444
|
-
expect(item.result).toEqual(
|
|
445
|
-
expect.objectContaining(recommendationsArray[index])
|
|
446
|
-
);
|
|
447
|
-
expect(item.engineId).toBe(defaultOptions.engineId);
|
|
448
|
-
expect(item.resultTemplatesManager).toEqual(
|
|
449
|
-
functionMocks.buildResultTemplatesManager()
|
|
450
|
-
);
|
|
451
|
-
});
|
|
452
|
-
});
|
|
453
|
-
|
|
454
|
-
describe('with a custom #recommendationsPerRow option', () => {
|
|
455
|
-
const customRecommendationsPerRow = 2;
|
|
456
|
-
it('should pass the #recommendationsPerRow value to the carousel #itemsPerPage property', async () => {
|
|
457
|
-
const element = createTestComponent({
|
|
458
|
-
...defaultOptions,
|
|
459
|
-
variant: 'carousel',
|
|
460
|
-
recommendationsPerRow: customRecommendationsPerRow,
|
|
461
|
-
});
|
|
462
|
-
await flushPromises();
|
|
463
|
-
const carousel = element.shadowRoot.querySelector(
|
|
464
|
-
selectors.carouselContainer
|
|
465
|
-
);
|
|
466
|
-
|
|
467
|
-
expect(carousel).not.toBeNull();
|
|
468
|
-
expect(carousel.itemsPerPage).toBe(customRecommendationsPerRow);
|
|
469
|
-
});
|
|
470
|
-
});
|
|
471
|
-
});
|
|
472
|
-
|
|
473
|
-
it('should properly pass the custom #label to the heading', async () => {
|
|
474
|
-
const customLabel = 'Custom label';
|
|
475
|
-
const element = createTestComponent({
|
|
476
|
-
...defaultOptions,
|
|
477
|
-
variant: 'carousel',
|
|
478
|
-
label: customLabel,
|
|
479
|
-
});
|
|
480
|
-
await flushPromises();
|
|
481
|
-
|
|
482
|
-
const headingElement = element.shadowRoot.querySelector(
|
|
483
|
-
selectors.quanticHeading
|
|
484
|
-
);
|
|
485
|
-
|
|
486
|
-
expect(headingElement).not.toBeNull();
|
|
487
|
-
expect(headingElement.label).toBe(customLabel);
|
|
488
|
-
});
|
|
489
|
-
});
|
|
490
|
-
});
|
|
491
|
-
});
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import {RecommendationListObject} from './pageObject';
|
|
2
|
-
import {SearchObject} from '../../../../../../playwright/page-object/searchObject';
|
|
3
|
-
import {quanticBase} from '../../../../../../playwright/fixtures/baseFixture';
|
|
4
|
-
import {searchRequestRegex} from '../../../../../../playwright/utils/requests';
|
|
5
|
-
|
|
6
|
-
const pageUrl = 's/quantic-recommendation-list';
|
|
7
|
-
|
|
8
|
-
interface RecommendationListOptions {
|
|
9
|
-
numberOfRecommendations: number;
|
|
10
|
-
recommendationsPerRow: number;
|
|
11
|
-
variant: string;
|
|
12
|
-
fieldsToInclude: string;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
type QuanticRecommendationListE2EFixtures = {
|
|
16
|
-
recommendationList: RecommendationListObject;
|
|
17
|
-
search: SearchObject;
|
|
18
|
-
options: Partial<RecommendationListOptions>;
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
export const test = quanticBase.extend<QuanticRecommendationListE2EFixtures>({
|
|
22
|
-
options: {},
|
|
23
|
-
search: async ({page}, use) => {
|
|
24
|
-
await use(new SearchObject(page, searchRequestRegex));
|
|
25
|
-
},
|
|
26
|
-
recommendationList: async ({page, options, configuration, search}, use) => {
|
|
27
|
-
await search.mockSearchWithBaseResponse();
|
|
28
|
-
await page.goto(pageUrl);
|
|
29
|
-
configuration.configure(options);
|
|
30
|
-
await search.waitForSearchResponse();
|
|
31
|
-
|
|
32
|
-
await use(new RecommendationListObject(page));
|
|
33
|
-
},
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
export {expect} from '@playwright/test';
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import type {Locator, Page, Request} from '@playwright/test';
|
|
2
|
-
import {isUaClickEvent} from '../../../../../../playwright/utils/requests';
|
|
3
|
-
|
|
4
|
-
export class RecommendationListObject {
|
|
5
|
-
constructor(public page: Page) {
|
|
6
|
-
this.page = page;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
get recommendationList(): Locator {
|
|
10
|
-
return this.page.locator('c-quantic-recommendation-list');
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
get recommendationLinks(): Locator {
|
|
14
|
-
return this.page.locator('c-quantic-result-link a');
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
getRecommendationLinkByIndex(index: number): Locator {
|
|
18
|
-
return this.recommendationLinks.nth(index);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
async captureRecommendationListClickEventWorkaround(): Promise<void> {
|
|
22
|
-
// Hack(?) to have the request payload in the analytics click event.
|
|
23
|
-
// Without this the payload is not available in the request.
|
|
24
|
-
return this.page.route('*analytics*', (route) => {
|
|
25
|
-
route.continue();
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
async waitForRecommendationListClickEvent(
|
|
30
|
-
customChecker?: Function
|
|
31
|
-
): Promise<Request> {
|
|
32
|
-
const uaRequest = this.page.waitForRequest((request) => {
|
|
33
|
-
if (isUaClickEvent(request)) {
|
|
34
|
-
const requestBody = request.postDataJSON?.();
|
|
35
|
-
const requestData = JSON.parse(requestBody.clickEvent);
|
|
36
|
-
const customData = requestData?.customData;
|
|
37
|
-
|
|
38
|
-
const actionCauseMatches =
|
|
39
|
-
requestData?.actionCause === 'recommendationOpen';
|
|
40
|
-
|
|
41
|
-
return (
|
|
42
|
-
actionCauseMatches &&
|
|
43
|
-
(customChecker
|
|
44
|
-
? customChecker(requestData.customData, customData)
|
|
45
|
-
: true)
|
|
46
|
-
);
|
|
47
|
-
}
|
|
48
|
-
return false;
|
|
49
|
-
});
|
|
50
|
-
return uaRequest;
|
|
51
|
-
}
|
|
52
|
-
}
|
package/force-app/main/default/lwc/quanticRecommendationList/e2e/quanticRecommendationList.e2e.ts
DELETED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import {test, expect} from './fixture';
|
|
2
|
-
|
|
3
|
-
const testFieldsToInclude = 'foo,bar,baz';
|
|
4
|
-
|
|
5
|
-
test.describe('quantic recommendation list', () => {
|
|
6
|
-
test.describe('when clicking a recommendation', () => {
|
|
7
|
-
test('should log recommendation open analytics', async ({
|
|
8
|
-
recommendationList,
|
|
9
|
-
}) => {
|
|
10
|
-
await recommendationList.captureRecommendationListClickEventWorkaround();
|
|
11
|
-
|
|
12
|
-
const recommendationClickAnalyticsPromise =
|
|
13
|
-
recommendationList.waitForRecommendationListClickEvent();
|
|
14
|
-
|
|
15
|
-
const firstRecommendationLink =
|
|
16
|
-
recommendationList.getRecommendationLinkByIndex(0);
|
|
17
|
-
firstRecommendationLink.scrollIntoViewIfNeeded();
|
|
18
|
-
await firstRecommendationLink.evaluate((el) =>
|
|
19
|
-
el.setAttribute('href', '#')
|
|
20
|
-
);
|
|
21
|
-
await firstRecommendationLink.click();
|
|
22
|
-
|
|
23
|
-
await recommendationClickAnalyticsPromise;
|
|
24
|
-
});
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
test.describe('when getting new recommendations', () => {
|
|
28
|
-
test.use({
|
|
29
|
-
options: {
|
|
30
|
-
fieldsToInclude: testFieldsToInclude,
|
|
31
|
-
},
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
test('should perform a search request with the correct fieldsToInclude', async ({
|
|
35
|
-
recommendationList,
|
|
36
|
-
search,
|
|
37
|
-
}) => {
|
|
38
|
-
const expectedFieldsToInclude = testFieldsToInclude.split(',');
|
|
39
|
-
const expectedRecommendationValue = 'Recommendation';
|
|
40
|
-
const searchRequestPromise = search.waitForSearchRequest();
|
|
41
|
-
await search.performRecommendationSearch();
|
|
42
|
-
const requestBody = (await searchRequestPromise).postDataJSON();
|
|
43
|
-
expect(requestBody?.fieldsToInclude).toBeDefined();
|
|
44
|
-
expect(requestBody).toEqual(
|
|
45
|
-
expect.objectContaining({
|
|
46
|
-
fieldsToInclude: expect.arrayContaining(expectedFieldsToInclude),
|
|
47
|
-
recommendation: expectedRecommendationValue,
|
|
48
|
-
})
|
|
49
|
-
);
|
|
50
|
-
await expect(recommendationList.recommendationList).toBeVisible();
|
|
51
|
-
});
|
|
52
|
-
});
|
|
53
|
-
});
|