@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,302 +0,0 @@
|
|
|
1
|
-
import * as mockHeadlessLoader from 'c/quanticHeadlessLoader';
|
|
2
|
-
import {
|
|
3
|
-
getNavigateCalledWith,
|
|
4
|
-
getGenerateUrlCalledWith,
|
|
5
|
-
} from 'lightning/navigation';
|
|
6
|
-
// @ts-ignore
|
|
7
|
-
import {createElement} from 'lwc';
|
|
8
|
-
import QuanticResultLink from '../quanticResultLink';
|
|
9
|
-
|
|
10
|
-
const exampleResult = {
|
|
11
|
-
clickUri: 'https://coveo.com/',
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
const selectors = {
|
|
15
|
-
quanticTextField: 'c-quantic-result-highlighted-text-field',
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
jest.mock('c/quanticHeadlessLoader');
|
|
19
|
-
|
|
20
|
-
function createTestComponent(options) {
|
|
21
|
-
const element = createElement('c-quantic-result-link', {
|
|
22
|
-
is: QuanticResultLink,
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
for (const [key, value] of Object.entries(options)) {
|
|
26
|
-
element[key] = value;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
document.body.appendChild(element);
|
|
30
|
-
return element;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
// Helper function to wait until the microtask queue is empty.
|
|
34
|
-
function flushPromises() {
|
|
35
|
-
return new Promise((resolve) => setTimeout(resolve, 0));
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
// Helper function to mock headless for this suite of tests.
|
|
39
|
-
function mockHeadlessAndBueno() {
|
|
40
|
-
jest.spyOn(mockHeadlessLoader, 'getHeadlessBundle').mockReturnValue({
|
|
41
|
-
buildInteractiveResult: () => ({
|
|
42
|
-
select: jest.fn(),
|
|
43
|
-
beginDelayedSelect: jest.fn(),
|
|
44
|
-
cancelPendingSelect: jest.fn(),
|
|
45
|
-
}),
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
jest.spyOn(mockHeadlessLoader, 'getHeadlessEnginePromise').mockReturnValue(
|
|
49
|
-
new Promise((resolve) => {
|
|
50
|
-
resolve();
|
|
51
|
-
})
|
|
52
|
-
);
|
|
53
|
-
|
|
54
|
-
jest.spyOn(mockHeadlessLoader, 'getBueno').mockReturnValue(
|
|
55
|
-
new Promise(() => {
|
|
56
|
-
// @ts-ignore
|
|
57
|
-
global.Bueno = {
|
|
58
|
-
isString: jest
|
|
59
|
-
.fn()
|
|
60
|
-
.mockImplementation(
|
|
61
|
-
(value) =>
|
|
62
|
-
Object.prototype.toString.call(value) === '[object String]'
|
|
63
|
-
),
|
|
64
|
-
};
|
|
65
|
-
})
|
|
66
|
-
);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
describe('c-quantic-result-link', () => {
|
|
70
|
-
function cleanup() {
|
|
71
|
-
// The jsdom instance is shared across test cases in a single file so reset the DOM.
|
|
72
|
-
while (document.body.firstChild) {
|
|
73
|
-
document.body.removeChild(document.body.firstChild);
|
|
74
|
-
}
|
|
75
|
-
jest.clearAllMocks();
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
beforeEach(() => {
|
|
79
|
-
mockHeadlessAndBueno();
|
|
80
|
-
});
|
|
81
|
-
|
|
82
|
-
afterEach(() => {
|
|
83
|
-
cleanup();
|
|
84
|
-
});
|
|
85
|
-
|
|
86
|
-
describe('when the result is of type Salesforce', () => {
|
|
87
|
-
const exampleSalesforceResult = {
|
|
88
|
-
...exampleResult,
|
|
89
|
-
raw: {
|
|
90
|
-
sfid: '123',
|
|
91
|
-
},
|
|
92
|
-
};
|
|
93
|
-
it('should call the navigation mixin to get the Salesforce record URL', async () => {
|
|
94
|
-
createTestComponent({result: exampleSalesforceResult});
|
|
95
|
-
await flushPromises();
|
|
96
|
-
|
|
97
|
-
const {pageReference} = getGenerateUrlCalledWith();
|
|
98
|
-
|
|
99
|
-
expect(pageReference.attributes.recordId).toBe(
|
|
100
|
-
exampleSalesforceResult.raw.sfid
|
|
101
|
-
);
|
|
102
|
-
});
|
|
103
|
-
|
|
104
|
-
it('should open the result link in a Salesforce console subtab when no target is specified', async () => {
|
|
105
|
-
const element = createTestComponent({result: exampleSalesforceResult});
|
|
106
|
-
await flushPromises();
|
|
107
|
-
|
|
108
|
-
const linkSalesforce = element.shadowRoot.querySelector('a');
|
|
109
|
-
linkSalesforce.click();
|
|
110
|
-
|
|
111
|
-
const {pageReference} = getNavigateCalledWith();
|
|
112
|
-
|
|
113
|
-
expect(pageReference.attributes.recordId).toBe(
|
|
114
|
-
exampleSalesforceResult.raw.sfid
|
|
115
|
-
);
|
|
116
|
-
});
|
|
117
|
-
|
|
118
|
-
it('should open the Salesforce result link in a new browser tab when target is _blank', async () => {
|
|
119
|
-
const element = createTestComponent({
|
|
120
|
-
result: exampleSalesforceResult,
|
|
121
|
-
target: '_blank',
|
|
122
|
-
});
|
|
123
|
-
await flushPromises();
|
|
124
|
-
|
|
125
|
-
const linkSalesforce = element.shadowRoot.querySelector('a');
|
|
126
|
-
linkSalesforce.click();
|
|
127
|
-
|
|
128
|
-
expect(linkSalesforce.getAttribute('target')).toEqual('_blank');
|
|
129
|
-
expect(getNavigateCalledWith().pageReference).toBeUndefined();
|
|
130
|
-
});
|
|
131
|
-
|
|
132
|
-
it('should let Salesforce result links use other target values without console navigation', async () => {
|
|
133
|
-
const element = createTestComponent({
|
|
134
|
-
result: exampleSalesforceResult,
|
|
135
|
-
target: '_parent',
|
|
136
|
-
});
|
|
137
|
-
await flushPromises();
|
|
138
|
-
|
|
139
|
-
const linkSalesforce = element.shadowRoot.querySelector('a');
|
|
140
|
-
linkSalesforce.click();
|
|
141
|
-
|
|
142
|
-
expect(linkSalesforce.getAttribute('target')).toEqual('_parent');
|
|
143
|
-
expect(getNavigateCalledWith().pageReference).toBeUndefined();
|
|
144
|
-
});
|
|
145
|
-
|
|
146
|
-
describe('when the result is a knowledge article', () => {
|
|
147
|
-
const exampleKnowledgeArticleResult = {
|
|
148
|
-
...exampleResult,
|
|
149
|
-
raw: {
|
|
150
|
-
sfid: '1234',
|
|
151
|
-
sfkavid: '1234',
|
|
152
|
-
},
|
|
153
|
-
};
|
|
154
|
-
it('should open the result link in a Salesforce console subtab', async () => {
|
|
155
|
-
const element = createTestComponent({
|
|
156
|
-
result: exampleKnowledgeArticleResult,
|
|
157
|
-
});
|
|
158
|
-
await flushPromises();
|
|
159
|
-
|
|
160
|
-
const LinkKnowledgeArticle = element.shadowRoot.querySelector('a');
|
|
161
|
-
LinkKnowledgeArticle.click();
|
|
162
|
-
|
|
163
|
-
const {pageReference} = getNavigateCalledWith();
|
|
164
|
-
|
|
165
|
-
expect(pageReference.attributes.recordId).toBe(
|
|
166
|
-
exampleKnowledgeArticleResult.raw.sfkavid
|
|
167
|
-
);
|
|
168
|
-
});
|
|
169
|
-
});
|
|
170
|
-
|
|
171
|
-
describe('when the result is a case comment', () => {
|
|
172
|
-
const exampleCaseCommentResult = {
|
|
173
|
-
...exampleResult,
|
|
174
|
-
raw: {
|
|
175
|
-
sfid: '1234',
|
|
176
|
-
sfparentid: '5678',
|
|
177
|
-
documenttype: 'CaseComment',
|
|
178
|
-
},
|
|
179
|
-
};
|
|
180
|
-
it('should open the parent of the result in a Salesforce console subtab', async () => {
|
|
181
|
-
const element = createTestComponent({result: exampleCaseCommentResult});
|
|
182
|
-
await flushPromises();
|
|
183
|
-
|
|
184
|
-
const link = element.shadowRoot.querySelector('a');
|
|
185
|
-
link.click();
|
|
186
|
-
|
|
187
|
-
const {pageReference} = getNavigateCalledWith();
|
|
188
|
-
|
|
189
|
-
expect(pageReference.attributes.recordId).toBe(
|
|
190
|
-
exampleCaseCommentResult.raw.sfparentid
|
|
191
|
-
);
|
|
192
|
-
});
|
|
193
|
-
});
|
|
194
|
-
});
|
|
195
|
-
|
|
196
|
-
describe('when the result is NOT of type salesforce', () => {
|
|
197
|
-
it('should open the result link in the current browser tab', async () => {
|
|
198
|
-
const element = createTestComponent({result: exampleResult});
|
|
199
|
-
await flushPromises();
|
|
200
|
-
|
|
201
|
-
const link = element.shadowRoot.querySelector('a');
|
|
202
|
-
|
|
203
|
-
expect(link.getAttribute('href')).toEqual(exampleResult.clickUri);
|
|
204
|
-
expect(link.getAttribute('target')).toEqual('_self');
|
|
205
|
-
});
|
|
206
|
-
|
|
207
|
-
it('should open the result link in a new tab when target is _blank', async () => {
|
|
208
|
-
const element = createTestComponent({
|
|
209
|
-
result: exampleResult,
|
|
210
|
-
target: '_blank',
|
|
211
|
-
});
|
|
212
|
-
await flushPromises();
|
|
213
|
-
|
|
214
|
-
const link = element.shadowRoot.querySelector('a');
|
|
215
|
-
|
|
216
|
-
expect(link.getAttribute('href')).toEqual(exampleResult.clickUri);
|
|
217
|
-
expect(link.getAttribute('target')).toEqual('_blank');
|
|
218
|
-
});
|
|
219
|
-
|
|
220
|
-
describe('with a custom value for the target property', () => {
|
|
221
|
-
it('should open the result link based on the value of the target property', async () => {
|
|
222
|
-
const customTarget = '_blank';
|
|
223
|
-
const element = createTestComponent({
|
|
224
|
-
result: exampleResult,
|
|
225
|
-
target: customTarget,
|
|
226
|
-
});
|
|
227
|
-
await flushPromises();
|
|
228
|
-
|
|
229
|
-
const link = element.shadowRoot.querySelector('a');
|
|
230
|
-
|
|
231
|
-
expect(link.getAttribute('href')).toEqual(exampleResult.clickUri);
|
|
232
|
-
expect(link.getAttribute('target')).toEqual(customTarget);
|
|
233
|
-
});
|
|
234
|
-
});
|
|
235
|
-
});
|
|
236
|
-
|
|
237
|
-
describe('with a custom value for the displayed field property', () => {
|
|
238
|
-
it('should display the correct field as the link text', async () => {
|
|
239
|
-
const customFieldToDisplay = 'exampleField';
|
|
240
|
-
|
|
241
|
-
const element = createTestComponent({
|
|
242
|
-
result: {
|
|
243
|
-
...exampleResult,
|
|
244
|
-
raw: {[customFieldToDisplay]: 'exampleValue'},
|
|
245
|
-
},
|
|
246
|
-
displayedField: customFieldToDisplay,
|
|
247
|
-
});
|
|
248
|
-
await flushPromises();
|
|
249
|
-
|
|
250
|
-
const quanticTextFieldComponent = element.shadowRoot.querySelector(
|
|
251
|
-
selectors.quanticTextField
|
|
252
|
-
);
|
|
253
|
-
|
|
254
|
-
expect(quanticTextFieldComponent).not.toBeNull();
|
|
255
|
-
expect(quanticTextFieldComponent.field).toBe(customFieldToDisplay);
|
|
256
|
-
});
|
|
257
|
-
});
|
|
258
|
-
|
|
259
|
-
describe('with the default value for the displayed field property', () => {
|
|
260
|
-
describe('when the title field exists on the result', () => {
|
|
261
|
-
it('should display the title field as the link text', async () => {
|
|
262
|
-
const defaultFieldToDisplay = 'title';
|
|
263
|
-
|
|
264
|
-
const element = createTestComponent({
|
|
265
|
-
result: {
|
|
266
|
-
...exampleResult,
|
|
267
|
-
[defaultFieldToDisplay]: 'example title',
|
|
268
|
-
},
|
|
269
|
-
});
|
|
270
|
-
await flushPromises();
|
|
271
|
-
|
|
272
|
-
const quanticTextFieldComponent = element.shadowRoot.querySelector(
|
|
273
|
-
selectors.quanticTextField
|
|
274
|
-
);
|
|
275
|
-
|
|
276
|
-
expect(quanticTextFieldComponent).not.toBeNull();
|
|
277
|
-
expect(quanticTextFieldComponent.field).toBe(defaultFieldToDisplay);
|
|
278
|
-
});
|
|
279
|
-
});
|
|
280
|
-
|
|
281
|
-
describe('when the title field does not exist on the result', () => {
|
|
282
|
-
it('should fall back to display the click uri field as the link text', async () => {
|
|
283
|
-
const fallbackFieldToDisplay = 'clickUri';
|
|
284
|
-
|
|
285
|
-
const element = createTestComponent({
|
|
286
|
-
result: {
|
|
287
|
-
...exampleResult,
|
|
288
|
-
[fallbackFieldToDisplay]: 'example clickUri',
|
|
289
|
-
},
|
|
290
|
-
});
|
|
291
|
-
await flushPromises();
|
|
292
|
-
|
|
293
|
-
const quanticTextFieldComponent = element.shadowRoot.querySelector(
|
|
294
|
-
selectors.quanticTextField
|
|
295
|
-
);
|
|
296
|
-
|
|
297
|
-
expect(quanticTextFieldComponent).not.toBeNull();
|
|
298
|
-
expect(quanticTextFieldComponent.field).toBe(fallbackFieldToDisplay);
|
|
299
|
-
});
|
|
300
|
-
});
|
|
301
|
-
});
|
|
302
|
-
});
|
|
@@ -1,342 +0,0 @@
|
|
|
1
|
-
/* eslint-disable no-import-assign */
|
|
2
|
-
import QuanticResultList from 'c/quanticResultList';
|
|
3
|
-
import * as mockHeadlessLoader from 'c/quanticHeadlessLoader';
|
|
4
|
-
import {buildCreateTestComponent, cleanup, flushPromises} from 'c/testUtils';
|
|
5
|
-
|
|
6
|
-
jest.mock('c/quanticHeadlessLoader');
|
|
7
|
-
|
|
8
|
-
let isInitialized = false;
|
|
9
|
-
|
|
10
|
-
const exampleEngine = {
|
|
11
|
-
id: 'exampleEngineId',
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
const defaultFieldsToInclude =
|
|
15
|
-
'date,author,source,language,filetype,documenttype,parents,sfknowledgearticleid,sfid,sfkbid,sfkavid,sfparentid';
|
|
16
|
-
|
|
17
|
-
const defaultOptions = {
|
|
18
|
-
engineId: exampleEngine.id,
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
const initialResultListState = {
|
|
22
|
-
results: [],
|
|
23
|
-
searchResponseId: 'foo',
|
|
24
|
-
moreResultsAvailable: false,
|
|
25
|
-
};
|
|
26
|
-
let resultListState = initialResultListState;
|
|
27
|
-
|
|
28
|
-
const initialSearchStatusState = {
|
|
29
|
-
hasError: false,
|
|
30
|
-
};
|
|
31
|
-
let searchStatusState = initialSearchStatusState;
|
|
32
|
-
|
|
33
|
-
const selectors = {
|
|
34
|
-
resultList: 'c-quantic-result-list',
|
|
35
|
-
placeholder: 'c-quantic-placeholder',
|
|
36
|
-
initializationError: 'c-quantic-component-error',
|
|
37
|
-
quanticResult: 'c-quantic-result',
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
const initialResultsPerPageState = {
|
|
41
|
-
numberOfResults: 0,
|
|
42
|
-
};
|
|
43
|
-
let resultsPerPageState = initialResultsPerPageState;
|
|
44
|
-
|
|
45
|
-
const functionsMocks = {
|
|
46
|
-
buildResultList: jest.fn(() => ({
|
|
47
|
-
state: resultListState,
|
|
48
|
-
subscribe: functionsMocks.resultsListSubscriber,
|
|
49
|
-
fetchMoreResults: functionsMocks.fetchMoreResults,
|
|
50
|
-
})),
|
|
51
|
-
buildSearchStatus: jest.fn(() => ({
|
|
52
|
-
state: searchStatusState,
|
|
53
|
-
subscribe: functionsMocks.searchStatusStateSubscriber,
|
|
54
|
-
})),
|
|
55
|
-
buildResultsPerPage: jest.fn(() => ({
|
|
56
|
-
state: resultsPerPageState,
|
|
57
|
-
subscribe: functionsMocks.resultsPerPageSubscriber,
|
|
58
|
-
})),
|
|
59
|
-
buildResultTemplatesManager: jest.fn(),
|
|
60
|
-
resultsListSubscriber: jest.fn((cb) => {
|
|
61
|
-
cb();
|
|
62
|
-
return functionsMocks.resultListUnsubscriber;
|
|
63
|
-
}),
|
|
64
|
-
searchStatusStateSubscriber: jest.fn((cb) => {
|
|
65
|
-
cb();
|
|
66
|
-
return functionsMocks.searchStatusStateUnsubscriber;
|
|
67
|
-
}),
|
|
68
|
-
resultsPerPageSubscriber: jest.fn((cb) => {
|
|
69
|
-
cb();
|
|
70
|
-
return functionsMocks.resultsPerPageUnsubscriber;
|
|
71
|
-
}),
|
|
72
|
-
resultListUnsubscriber: jest.fn(),
|
|
73
|
-
searchStatusStateUnsubscriber: jest.fn(),
|
|
74
|
-
resultsPerPageUnsubscriber: jest.fn(),
|
|
75
|
-
fetchMoreResults: jest.fn(),
|
|
76
|
-
};
|
|
77
|
-
|
|
78
|
-
function prepareHeadlessState() {
|
|
79
|
-
// @ts-ignore
|
|
80
|
-
mockHeadlessLoader.getHeadlessBundle = () => {
|
|
81
|
-
return {
|
|
82
|
-
buildResultList: functionsMocks.buildResultList,
|
|
83
|
-
buildSearchStatus: functionsMocks.buildSearchStatus,
|
|
84
|
-
buildResultsPerPage: functionsMocks.buildResultsPerPage,
|
|
85
|
-
buildResultTemplatesManager: functionsMocks.buildResultTemplatesManager,
|
|
86
|
-
};
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
function mockSuccessfulHeadlessInitialization() {
|
|
91
|
-
// @ts-ignore
|
|
92
|
-
mockHeadlessLoader.initializeWithHeadless = (element, _, initialize) => {
|
|
93
|
-
if (element instanceof QuanticResultList && !isInitialized) {
|
|
94
|
-
isInitialized = true;
|
|
95
|
-
initialize(exampleEngine);
|
|
96
|
-
}
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
function mockErroneousHeadlessInitialization() {
|
|
101
|
-
// @ts-ignore
|
|
102
|
-
mockHeadlessLoader.initializeWithHeadless = (element) => {
|
|
103
|
-
if (element instanceof QuanticResultList) {
|
|
104
|
-
element.setInitializationError();
|
|
105
|
-
}
|
|
106
|
-
};
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
const createTestComponent = buildCreateTestComponent(
|
|
110
|
-
QuanticResultList,
|
|
111
|
-
'c-quantic-result-list',
|
|
112
|
-
defaultOptions
|
|
113
|
-
);
|
|
114
|
-
|
|
115
|
-
describe('c-quantic-result-list', () => {
|
|
116
|
-
beforeEach(() => {
|
|
117
|
-
mockSuccessfulHeadlessInitialization();
|
|
118
|
-
prepareHeadlessState();
|
|
119
|
-
});
|
|
120
|
-
|
|
121
|
-
afterEach(() => {
|
|
122
|
-
cleanup();
|
|
123
|
-
resultListState = initialResultListState;
|
|
124
|
-
searchStatusState = initialSearchStatusState;
|
|
125
|
-
resultsPerPageState = initialResultsPerPageState;
|
|
126
|
-
isInitialized = false;
|
|
127
|
-
});
|
|
128
|
-
|
|
129
|
-
describe('controller initialization', () => {
|
|
130
|
-
beforeEach(() => {
|
|
131
|
-
mockSuccessfulHeadlessInitialization();
|
|
132
|
-
prepareHeadlessState();
|
|
133
|
-
});
|
|
134
|
-
|
|
135
|
-
it('should initialize the result list, search status, results per page, and result templates manager controllers with the correct engine and options', async () => {
|
|
136
|
-
createTestComponent();
|
|
137
|
-
await flushPromises();
|
|
138
|
-
|
|
139
|
-
expect(functionsMocks.buildResultList).toHaveBeenCalledTimes(1);
|
|
140
|
-
expect(functionsMocks.buildResultList).toHaveBeenCalledWith(
|
|
141
|
-
exampleEngine,
|
|
142
|
-
{
|
|
143
|
-
options: {
|
|
144
|
-
fieldsToInclude: defaultFieldsToInclude.split(','),
|
|
145
|
-
},
|
|
146
|
-
}
|
|
147
|
-
);
|
|
148
|
-
expect(functionsMocks.resultsListSubscriber).toHaveBeenCalledTimes(1);
|
|
149
|
-
|
|
150
|
-
expect(functionsMocks.buildSearchStatus).toHaveBeenCalledTimes(1);
|
|
151
|
-
expect(functionsMocks.buildSearchStatus).toHaveBeenCalledWith(
|
|
152
|
-
exampleEngine
|
|
153
|
-
);
|
|
154
|
-
expect(functionsMocks.searchStatusStateSubscriber).toHaveBeenCalledTimes(
|
|
155
|
-
1
|
|
156
|
-
);
|
|
157
|
-
|
|
158
|
-
expect(functionsMocks.buildResultsPerPage).toHaveBeenCalledTimes(1);
|
|
159
|
-
expect(functionsMocks.buildResultsPerPage).toHaveBeenCalledWith(
|
|
160
|
-
exampleEngine
|
|
161
|
-
);
|
|
162
|
-
expect(functionsMocks.resultsPerPageSubscriber).toHaveBeenCalledTimes(1);
|
|
163
|
-
|
|
164
|
-
expect(functionsMocks.buildResultTemplatesManager).toHaveBeenCalledTimes(
|
|
165
|
-
1
|
|
166
|
-
);
|
|
167
|
-
expect(functionsMocks.buildResultTemplatesManager).toHaveBeenCalledWith(
|
|
168
|
-
exampleEngine
|
|
169
|
-
);
|
|
170
|
-
});
|
|
171
|
-
|
|
172
|
-
it('should emit the #quantic__registerresulttemplates custom event', async () => {
|
|
173
|
-
const jestHandler = jest.fn();
|
|
174
|
-
document.addEventListener(
|
|
175
|
-
'quantic__registerresulttemplates',
|
|
176
|
-
jestHandler
|
|
177
|
-
);
|
|
178
|
-
createTestComponent();
|
|
179
|
-
await flushPromises();
|
|
180
|
-
|
|
181
|
-
expect(jestHandler).toHaveBeenCalledTimes(1);
|
|
182
|
-
});
|
|
183
|
-
|
|
184
|
-
it('should unsubscribe from the result list, searchStatus and resultPerPage controllers when the component is destroyed', async () => {
|
|
185
|
-
const element = createTestComponent();
|
|
186
|
-
await flushPromises();
|
|
187
|
-
|
|
188
|
-
document.body.removeChild(element);
|
|
189
|
-
await flushPromises();
|
|
190
|
-
expect(functionsMocks.resultListUnsubscriber).toHaveBeenCalledTimes(1);
|
|
191
|
-
expect(
|
|
192
|
-
functionsMocks.searchStatusStateUnsubscriber
|
|
193
|
-
).toHaveBeenCalledTimes(1);
|
|
194
|
-
expect(functionsMocks.resultsPerPageUnsubscriber).toHaveBeenCalledTimes(
|
|
195
|
-
1
|
|
196
|
-
);
|
|
197
|
-
});
|
|
198
|
-
|
|
199
|
-
describe('when an initialization error occurs', () => {
|
|
200
|
-
beforeEach(() => {
|
|
201
|
-
mockErroneousHeadlessInitialization();
|
|
202
|
-
});
|
|
203
|
-
|
|
204
|
-
it('should display the initialization error component', async () => {
|
|
205
|
-
const element = createTestComponent();
|
|
206
|
-
await flushPromises();
|
|
207
|
-
|
|
208
|
-
const initializationError = element.shadowRoot.querySelector(
|
|
209
|
-
selectors.initializationError
|
|
210
|
-
);
|
|
211
|
-
|
|
212
|
-
expect(initializationError).not.toBeNull();
|
|
213
|
-
});
|
|
214
|
-
});
|
|
215
|
-
});
|
|
216
|
-
|
|
217
|
-
describe('when the component is loading', () => {
|
|
218
|
-
beforeEach(() => {
|
|
219
|
-
searchStatusState = {
|
|
220
|
-
...initialSearchStatusState,
|
|
221
|
-
isLoading: true,
|
|
222
|
-
hasError: false,
|
|
223
|
-
firstSearchExecuted: false,
|
|
224
|
-
};
|
|
225
|
-
resultsPerPageState = {
|
|
226
|
-
...initialResultsPerPageState,
|
|
227
|
-
numberOfResults: 10,
|
|
228
|
-
};
|
|
229
|
-
});
|
|
230
|
-
|
|
231
|
-
it('should display the loading placeholder', async () => {
|
|
232
|
-
const element = createTestComponent();
|
|
233
|
-
await flushPromises();
|
|
234
|
-
|
|
235
|
-
const placeholder = element.shadowRoot.querySelector(
|
|
236
|
-
selectors.placeholder
|
|
237
|
-
);
|
|
238
|
-
|
|
239
|
-
expect(placeholder).not.toBeNull();
|
|
240
|
-
expect(placeholder.numberOfRows).toBe(
|
|
241
|
-
resultsPerPageState.numberOfResults
|
|
242
|
-
);
|
|
243
|
-
});
|
|
244
|
-
|
|
245
|
-
describe('when the search status has an error', () => {
|
|
246
|
-
beforeEach(() => {
|
|
247
|
-
searchStatusState = {
|
|
248
|
-
...initialSearchStatusState,
|
|
249
|
-
isLoading: true,
|
|
250
|
-
hasError: true,
|
|
251
|
-
firstSearchExecuted: false,
|
|
252
|
-
};
|
|
253
|
-
});
|
|
254
|
-
|
|
255
|
-
it('should not display the loading placeholder', async () => {
|
|
256
|
-
const element = createTestComponent();
|
|
257
|
-
await flushPromises();
|
|
258
|
-
|
|
259
|
-
const placeholder = element.shadowRoot.querySelector(
|
|
260
|
-
selectors.placeholder
|
|
261
|
-
);
|
|
262
|
-
|
|
263
|
-
expect(placeholder).toBeNull();
|
|
264
|
-
});
|
|
265
|
-
});
|
|
266
|
-
});
|
|
267
|
-
|
|
268
|
-
describe('the #fieldsToInclude property', () => {
|
|
269
|
-
beforeEach(() => {
|
|
270
|
-
mockSuccessfulHeadlessInitialization();
|
|
271
|
-
prepareHeadlessState();
|
|
272
|
-
});
|
|
273
|
-
|
|
274
|
-
it('should correctly send the fields to include to the headless controller', async () => {
|
|
275
|
-
const fieldsToInclude = 'foo,bar,baz';
|
|
276
|
-
createTestComponent({fieldsToInclude});
|
|
277
|
-
await flushPromises();
|
|
278
|
-
|
|
279
|
-
expect(functionsMocks.buildResultList).toHaveBeenCalledWith(
|
|
280
|
-
exampleEngine,
|
|
281
|
-
{
|
|
282
|
-
options: {
|
|
283
|
-
fieldsToInclude: fieldsToInclude.split(','),
|
|
284
|
-
},
|
|
285
|
-
}
|
|
286
|
-
);
|
|
287
|
-
});
|
|
288
|
-
});
|
|
289
|
-
|
|
290
|
-
describe('rendering results', () => {
|
|
291
|
-
beforeEach(() => {
|
|
292
|
-
mockSuccessfulHeadlessInitialization();
|
|
293
|
-
prepareHeadlessState();
|
|
294
|
-
});
|
|
295
|
-
|
|
296
|
-
it('should render the results', async () => {
|
|
297
|
-
const mockSearchResponseId = 'mockSearchResponseId';
|
|
298
|
-
const fakeResults = [
|
|
299
|
-
{
|
|
300
|
-
uniqueId: 'foo',
|
|
301
|
-
title: 'Foo',
|
|
302
|
-
excerpt: 'Foo',
|
|
303
|
-
raw: {
|
|
304
|
-
foo: 'foo',
|
|
305
|
-
},
|
|
306
|
-
},
|
|
307
|
-
{
|
|
308
|
-
uniqueId: 'Bar',
|
|
309
|
-
title: 'Bar',
|
|
310
|
-
excerpt: 'Bar',
|
|
311
|
-
raw: {
|
|
312
|
-
foo: 'bar',
|
|
313
|
-
},
|
|
314
|
-
},
|
|
315
|
-
];
|
|
316
|
-
resultListState = {
|
|
317
|
-
...initialResultListState,
|
|
318
|
-
searchResponseId: mockSearchResponseId,
|
|
319
|
-
results: fakeResults,
|
|
320
|
-
};
|
|
321
|
-
|
|
322
|
-
const element = createTestComponent();
|
|
323
|
-
await flushPromises();
|
|
324
|
-
|
|
325
|
-
const results = element.shadowRoot.querySelectorAll(
|
|
326
|
-
selectors.quanticResult
|
|
327
|
-
);
|
|
328
|
-
expect(results.length).toBe(fakeResults.length);
|
|
329
|
-
results.forEach((resultElement, index) => {
|
|
330
|
-
expect(resultElement.engineId).toBe(exampleEngine.id);
|
|
331
|
-
const fakeResult = fakeResults[index];
|
|
332
|
-
expect(resultElement.result).toEqual({
|
|
333
|
-
...fakeResult,
|
|
334
|
-
keyResultList: `${mockSearchResponseId}_${fakeResult.uniqueId}`,
|
|
335
|
-
});
|
|
336
|
-
expect(resultElement.resultTemplateManager).toEqual(
|
|
337
|
-
functionsMocks.buildResultTemplatesManager()
|
|
338
|
-
);
|
|
339
|
-
});
|
|
340
|
-
});
|
|
341
|
-
});
|
|
342
|
-
});
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import {ResultListObject} from './pageObject';
|
|
2
|
-
import {quanticBase} from '../../../../../../playwright/fixtures/baseFixture';
|
|
3
|
-
import {
|
|
4
|
-
insightSearchRequestRegex,
|
|
5
|
-
searchRequestRegex,
|
|
6
|
-
} from '../../../../../../playwright/utils/requests';
|
|
7
|
-
import {InsightSetupObject} from '../../../../../../playwright/page-object/insightSetupObject';
|
|
8
|
-
import {useCaseEnum} from '../../../../../../playwright/utils/useCase';
|
|
9
|
-
import {SearchObject} from '../../../../../../playwright/page-object/searchObject';
|
|
10
|
-
|
|
11
|
-
const pageUrl = 's/quantic-result-list';
|
|
12
|
-
|
|
13
|
-
interface ResultListOptions {
|
|
14
|
-
fieldsToInclude: string;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
type QuanticResultListE2ESearchFixtures = {
|
|
18
|
-
resultList: ResultListObject;
|
|
19
|
-
search: SearchObject;
|
|
20
|
-
options: Partial<ResultListOptions>;
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
type QuanticResultListE2EInsightFixtures =
|
|
24
|
-
QuanticResultListE2ESearchFixtures & {
|
|
25
|
-
insightSetup: InsightSetupObject;
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
export const testSearch =
|
|
29
|
-
quanticBase.extend<QuanticResultListE2ESearchFixtures>({
|
|
30
|
-
options: {},
|
|
31
|
-
search: async ({page}, use) => {
|
|
32
|
-
await use(new SearchObject(page, searchRequestRegex));
|
|
33
|
-
},
|
|
34
|
-
resultList: async ({page, options, configuration, search}, use) => {
|
|
35
|
-
await search.mockSearchWithBaseResponse();
|
|
36
|
-
await page.goto(pageUrl);
|
|
37
|
-
configuration.configure(options);
|
|
38
|
-
await search.waitForSearchResponse();
|
|
39
|
-
await search.waitForSearchResultsVisible();
|
|
40
|
-
await use(new ResultListObject(page));
|
|
41
|
-
},
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
export const testInsight =
|
|
45
|
-
quanticBase.extend<QuanticResultListE2EInsightFixtures>({
|
|
46
|
-
options: {},
|
|
47
|
-
search: async ({page}, use) => {
|
|
48
|
-
await use(new SearchObject(page, insightSearchRequestRegex));
|
|
49
|
-
},
|
|
50
|
-
insightSetup: async ({page}, use) => {
|
|
51
|
-
await use(new InsightSetupObject(page));
|
|
52
|
-
},
|
|
53
|
-
resultList: async (
|
|
54
|
-
{page, options, search, configuration, insightSetup},
|
|
55
|
-
use
|
|
56
|
-
) => {
|
|
57
|
-
await search.mockSearchWithBaseResponse();
|
|
58
|
-
await page.goto(pageUrl);
|
|
59
|
-
configuration.configure({...options, useCase: useCaseEnum.insight});
|
|
60
|
-
await insightSetup.waitForInsightInterfaceInitialization();
|
|
61
|
-
await Promise.all([
|
|
62
|
-
search.waitForSearchResponse(),
|
|
63
|
-
search.performSearch(),
|
|
64
|
-
]);
|
|
65
|
-
await search.waitForSearchResultsVisible();
|
|
66
|
-
await use(new ResultListObject(page));
|
|
67
|
-
},
|
|
68
|
-
});
|
|
69
|
-
|
|
70
|
-
export {expect} from '@playwright/test';
|