@internetarchive/collection-browser 0.3.5 → 0.3.7-alpha.1
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/.editorconfig +29 -29
- package/.github/workflows/ci.yml +26 -26
- package/.github/workflows/gh-pages-main.yml +39 -39
- package/.github/workflows/npm-publish.yml +39 -39
- package/.github/workflows/pr-preview.yml +38 -38
- package/.husky/pre-commit +4 -4
- package/LICENSE +661 -661
- package/README.md +83 -83
- package/dist/index.d.ts +9 -9
- package/dist/index.js +9 -9
- package/dist/src/app-root.d.ts +47 -47
- package/dist/src/app-root.js +247 -247
- package/dist/src/assets/img/icons/arrow-left.d.ts +2 -2
- package/dist/src/assets/img/icons/arrow-left.js +2 -2
- package/dist/src/assets/img/icons/arrow-right.d.ts +2 -2
- package/dist/src/assets/img/icons/arrow-right.js +2 -2
- package/dist/src/assets/img/icons/chevron.d.ts +2 -2
- package/dist/src/assets/img/icons/chevron.js +2 -2
- package/dist/src/assets/img/icons/empty-query.d.ts +2 -2
- package/dist/src/assets/img/icons/empty-query.js +2 -2
- package/dist/src/assets/img/icons/eye-closed.d.ts +2 -2
- package/dist/src/assets/img/icons/eye-closed.js +2 -2
- package/dist/src/assets/img/icons/eye.d.ts +2 -2
- package/dist/src/assets/img/icons/eye.js +2 -2
- package/dist/src/assets/img/icons/favorite-filled.d.ts +1 -1
- package/dist/src/assets/img/icons/favorite-filled.js +2 -2
- package/dist/src/assets/img/icons/login-required.d.ts +1 -1
- package/dist/src/assets/img/icons/login-required.js +2 -2
- package/dist/src/assets/img/icons/mediatype/account.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/account.js +2 -2
- package/dist/src/assets/img/icons/mediatype/audio.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/audio.js +2 -2
- package/dist/src/assets/img/icons/mediatype/collection.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/collection.js +2 -2
- package/dist/src/assets/img/icons/mediatype/data.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/data.js +2 -2
- package/dist/src/assets/img/icons/mediatype/etree.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/etree.js +2 -2
- package/dist/src/assets/img/icons/mediatype/film.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/film.js +2 -2
- package/dist/src/assets/img/icons/mediatype/images.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/images.js +2 -2
- package/dist/src/assets/img/icons/mediatype/radio.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/radio.js +2 -2
- package/dist/src/assets/img/icons/mediatype/software.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/software.js +2 -2
- package/dist/src/assets/img/icons/mediatype/texts.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/texts.js +2 -2
- package/dist/src/assets/img/icons/mediatype/tv.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/tv.js +2 -2
- package/dist/src/assets/img/icons/mediatype/video.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/video.js +2 -2
- package/dist/src/assets/img/icons/mediatype/web.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/web.js +2 -2
- package/dist/src/assets/img/icons/null-result.d.ts +2 -2
- package/dist/src/assets/img/icons/null-result.js +2 -2
- package/dist/src/assets/img/icons/restricted.d.ts +1 -1
- package/dist/src/assets/img/icons/restricted.js +2 -2
- package/dist/src/assets/img/icons/reviews.d.ts +1 -1
- package/dist/src/assets/img/icons/reviews.js +2 -2
- package/dist/src/assets/img/icons/upload.d.ts +1 -1
- package/dist/src/assets/img/icons/upload.js +2 -2
- package/dist/src/assets/img/icons/views.d.ts +1 -1
- package/dist/src/assets/img/icons/views.js +2 -2
- package/dist/src/circular-activity-indicator.d.ts +5 -5
- package/dist/src/circular-activity-indicator.js +17 -17
- package/dist/src/collection-browser.d.ts +246 -246
- package/dist/src/collection-browser.js +1031 -1031
- package/dist/src/collection-facets/facet-tombstone-row.d.ts +5 -5
- package/dist/src/collection-facets/facet-tombstone-row.js +15 -15
- package/dist/src/collection-facets/facets-template.d.ts +16 -16
- package/dist/src/collection-facets/facets-template.js +125 -125
- package/dist/src/collection-facets/more-facets-content.d.ts +76 -76
- package/dist/src/collection-facets/more-facets-content.js +353 -353
- package/dist/src/collection-facets/more-facets-pagination.d.ts +36 -36
- package/dist/src/collection-facets/more-facets-pagination.js +192 -192
- package/dist/src/collection-facets.d.ts +77 -77
- package/dist/src/collection-facets.js +388 -389
- package/dist/src/collection-facets.js.map +1 -1
- package/dist/src/empty-placeholder.d.ts +11 -11
- package/dist/src/empty-placeholder.js +42 -42
- package/dist/src/language-code-handler/language-code-handler.d.ts +37 -37
- package/dist/src/language-code-handler/language-code-handler.js +26 -26
- package/dist/src/language-code-handler/language-code-mapping.d.ts +1 -1
- package/dist/src/language-code-handler/language-code-mapping.js +562 -562
- package/dist/src/mediatype/mediatype-config.d.ts +3 -3
- package/dist/src/mediatype/mediatype-config.js +85 -85
- package/dist/src/models.d.ts +103 -103
- package/dist/src/models.js +117 -117
- package/dist/src/restoration-state-handler.d.ts +46 -46
- package/dist/src/restoration-state-handler.js +230 -230
- package/dist/src/sort-filter-bar/alpha-bar.d.ts +9 -9
- package/dist/src/sort-filter-bar/alpha-bar.js +41 -41
- package/dist/src/sort-filter-bar/img/compact.d.ts +1 -1
- package/dist/src/sort-filter-bar/img/compact.js +2 -2
- package/dist/src/sort-filter-bar/img/list.d.ts +1 -1
- package/dist/src/sort-filter-bar/img/list.js +2 -2
- package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -1
- package/dist/src/sort-filter-bar/img/sort-triangle.js +2 -2
- package/dist/src/sort-filter-bar/img/tile.d.ts +1 -1
- package/dist/src/sort-filter-bar/img/tile.js +2 -2
- package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +107 -107
- package/dist/src/sort-filter-bar/sort-filter-bar.js +423 -423
- package/dist/src/styles/item-image-styles.d.ts +8 -8
- package/dist/src/styles/item-image-styles.js +9 -9
- package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -5
- package/dist/src/tiles/collection-browser-loading-tile.js +15 -15
- package/dist/src/tiles/grid/account-tile.d.ts +8 -8
- package/dist/src/tiles/grid/account-tile.js +20 -20
- package/dist/src/tiles/grid/collection-tile.d.ts +7 -7
- package/dist/src/tiles/grid/collection-tile.js +23 -23
- package/dist/src/tiles/grid/item-tile.d.ts +24 -24
- package/dist/src/tiles/grid/item-tile.js +87 -87
- package/dist/src/tiles/grid/tile-stats.d.ts +10 -10
- package/dist/src/tiles/grid/tile-stats.js +40 -40
- package/dist/src/tiles/image-block.d.ts +17 -17
- package/dist/src/tiles/image-block.js +69 -69
- package/dist/src/tiles/item-image.d.ts +31 -31
- package/dist/src/tiles/item-image.js +103 -103
- package/dist/src/tiles/list/account-label.d.ts +1 -1
- package/dist/src/tiles/list/account-label.js +6 -6
- package/dist/src/tiles/list/date-label.d.ts +1 -1
- package/dist/src/tiles/list/date-label.js +12 -12
- package/dist/src/tiles/list/tile-list-compact-header.d.ts +12 -12
- package/dist/src/tiles/list/tile-list-compact-header.js +41 -41
- package/dist/src/tiles/list/tile-list-compact.d.ts +21 -21
- package/dist/src/tiles/list/tile-list-compact.js +93 -93
- package/dist/src/tiles/list/tile-list.d.ts +50 -50
- package/dist/src/tiles/list/tile-list.js +271 -271
- package/dist/src/tiles/mediatype-icon.d.ts +9 -9
- package/dist/src/tiles/mediatype-icon.js +47 -47
- package/dist/src/tiles/overlay/icon-overlay.d.ts +7 -7
- package/dist/src/tiles/overlay/icon-overlay.js +30 -30
- package/dist/src/tiles/overlay/text-overlay.d.ts +8 -8
- package/dist/src/tiles/overlay/text-overlay.js +31 -31
- package/dist/src/tiles/text-snippet-block.d.ts +29 -29
- package/dist/src/tiles/text-snippet-block.js +81 -81
- package/dist/src/tiles/tile-dispatcher.d.ts +36 -36
- package/dist/src/tiles/tile-dispatcher.js +128 -128
- package/dist/src/utils/analytics-events.d.ts +22 -22
- package/dist/src/utils/analytics-events.js +24 -24
- package/dist/src/utils/format-count.d.ts +7 -7
- package/dist/src/utils/format-count.js +76 -76
- package/dist/src/utils/format-date.d.ts +2 -2
- package/dist/src/utils/format-date.js +23 -23
- package/dist/test/collection-browser.test.d.ts +1 -1
- package/dist/test/collection-browser.test.js +444 -444
- package/dist/test/collection-facets/facets-template.test.d.ts +1 -1
- package/dist/test/collection-facets/facets-template.test.js +62 -62
- package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -1
- package/dist/test/collection-facets/more-facets-content.test.js +114 -114
- package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -1
- package/dist/test/collection-facets/more-facets-pagination.test.js +117 -117
- package/dist/test/collection-facets.test.d.ts +2 -2
- package/dist/test/collection-facets.test.js +544 -498
- package/dist/test/collection-facets.test.js.map +1 -1
- package/dist/test/empty-placeholder.test.d.ts +1 -1
- package/dist/test/empty-placeholder.test.js +33 -33
- package/dist/test/icon-overlay.test.d.ts +1 -1
- package/dist/test/icon-overlay.test.js +24 -24
- package/dist/test/image-block.test.d.ts +1 -1
- package/dist/test/image-block.test.js +48 -48
- package/dist/test/item-image.test.d.ts +1 -1
- package/dist/test/item-image.test.js +56 -56
- package/dist/test/mediatype-config.test.d.ts +1 -1
- package/dist/test/mediatype-config.test.js +16 -16
- package/dist/test/mocks/mock-analytics-handler.d.ts +10 -10
- package/dist/test/mocks/mock-analytics-handler.js +15 -15
- package/dist/test/mocks/mock-collection-name-cache.d.ts +7 -7
- package/dist/test/mocks/mock-collection-name-cache.js +13 -13
- package/dist/test/mocks/mock-search-responses.d.ts +8 -8
- package/dist/test/mocks/mock-search-responses.js +198 -198
- package/dist/test/mocks/mock-search-service.d.ts +13 -13
- package/dist/test/mocks/mock-search-service.js +32 -32
- package/dist/test/restoration-state-handler.test.d.ts +1 -1
- package/dist/test/restoration-state-handler.test.js +126 -126
- package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -1
- package/dist/test/sort-filter-bar/sort-filter-bar.test.js +113 -113
- package/dist/test/text-overlay.test.d.ts +1 -1
- package/dist/test/text-overlay.test.js +41 -41
- package/dist/test/text-snippet-block.test.d.ts +1 -1
- package/dist/test/text-snippet-block.test.js +57 -57
- package/dist/test/tile-stats.test.d.ts +1 -1
- package/dist/test/tile-stats.test.js +33 -33
- package/dist/test/tiles/grid/item-tile.test.d.ts +1 -1
- package/dist/test/tiles/grid/item-tile.test.js +107 -107
- package/dist/test/tiles/list/tile-list-compact.test.d.ts +1 -1
- package/dist/test/tiles/list/tile-list-compact.test.js +92 -92
- package/dist/test/tiles/list/tile-list.test.d.ts +1 -1
- package/dist/test/tiles/list/tile-list.test.js +67 -67
- package/dist/test/utils/format-count.test.d.ts +1 -1
- package/dist/test/utils/format-count.test.js +23 -23
- package/dist/test/utils/format-date.test.d.ts +1 -1
- package/dist/test/utils/format-date.test.js +17 -17
- package/index.html +24 -24
- package/local.archive.org.cert +86 -86
- package/local.archive.org.key +27 -27
- package/package.json +2 -2
- package/renovate.json +6 -6
- package/src/collection-facets.ts +2 -3
- package/test/collection-facets.test.ts +67 -0
- package/tsconfig.json +21 -21
- package/web-dev-server.config.mjs +30 -30
- package/web-test-runner.config.mjs +41 -41
|
@@ -1,482 +1,482 @@
|
|
|
1
|
-
/* eslint-disable import/no-duplicates */
|
|
2
|
-
import { expect, fixture } from '@open-wc/testing';
|
|
3
|
-
import { html } from 'lit';
|
|
4
|
-
import sinon from 'sinon';
|
|
5
|
-
import { SearchType } from '@internetarchive/search-service';
|
|
6
|
-
import '../src/collection-browser';
|
|
7
|
-
import { defaultSelectedFacets, SortField, } from '../src/models';
|
|
8
|
-
import { MockSearchService } from './mocks/mock-search-service';
|
|
9
|
-
import { MockCollectionNameCache } from './mocks/mock-collection-name-cache';
|
|
10
|
-
import { MockAnalyticsHandler } from './mocks/mock-analytics-handler';
|
|
11
|
-
import { analyticsCategories } from '../src/utils/analytics-events';
|
|
12
|
-
describe('Collection Browser', () => {
|
|
13
|
-
beforeEach(async () => {
|
|
14
|
-
// Apparently query params set by one test can bleed into other tests.
|
|
15
|
-
// Since collection browser restores its state from certain query params, we need
|
|
16
|
-
// to clear these before each test to ensure they run in isolation from one another.
|
|
17
|
-
const url = new URL(window.location.href);
|
|
18
|
-
const { searchParams } = url;
|
|
19
|
-
searchParams.delete('sin');
|
|
20
|
-
searchParams.delete('sort');
|
|
21
|
-
searchParams.delete('query');
|
|
22
|
-
searchParams.delete('page');
|
|
23
|
-
searchParams.delete('and[]');
|
|
24
|
-
searchParams.delete('not[]');
|
|
25
|
-
window.history.replaceState({}, '', url);
|
|
26
|
-
});
|
|
27
|
-
it('clear existing filter for facets & sort-bar', async () => {
|
|
28
|
-
const el = await fixture(html `<collection-browser></collection-browser>`);
|
|
29
|
-
el.selectedSort = 'title';
|
|
30
|
-
await el.updateComplete;
|
|
31
|
-
el.clearFilters();
|
|
32
|
-
expect(el.selectedFacets).to.equal(defaultSelectedFacets);
|
|
33
|
-
expect(el.selectedSort).to.equal('relevance');
|
|
34
|
-
expect(el.sortDirection).to.null;
|
|
35
|
-
expect(el.sortParam).to.null;
|
|
36
|
-
expect(el.selectedCreatorFilter).to.null;
|
|
37
|
-
expect(el.selectedTitleFilter).to.null;
|
|
38
|
-
});
|
|
39
|
-
it('filterBy creator with analytics', async () => {
|
|
40
|
-
const mockAnalyticsHandler = new MockAnalyticsHandler();
|
|
1
|
+
/* eslint-disable import/no-duplicates */
|
|
2
|
+
import { expect, fixture } from '@open-wc/testing';
|
|
3
|
+
import { html } from 'lit';
|
|
4
|
+
import sinon from 'sinon';
|
|
5
|
+
import { SearchType } from '@internetarchive/search-service';
|
|
6
|
+
import '../src/collection-browser';
|
|
7
|
+
import { defaultSelectedFacets, SortField, } from '../src/models';
|
|
8
|
+
import { MockSearchService } from './mocks/mock-search-service';
|
|
9
|
+
import { MockCollectionNameCache } from './mocks/mock-collection-name-cache';
|
|
10
|
+
import { MockAnalyticsHandler } from './mocks/mock-analytics-handler';
|
|
11
|
+
import { analyticsCategories } from '../src/utils/analytics-events';
|
|
12
|
+
describe('Collection Browser', () => {
|
|
13
|
+
beforeEach(async () => {
|
|
14
|
+
// Apparently query params set by one test can bleed into other tests.
|
|
15
|
+
// Since collection browser restores its state from certain query params, we need
|
|
16
|
+
// to clear these before each test to ensure they run in isolation from one another.
|
|
17
|
+
const url = new URL(window.location.href);
|
|
18
|
+
const { searchParams } = url;
|
|
19
|
+
searchParams.delete('sin');
|
|
20
|
+
searchParams.delete('sort');
|
|
21
|
+
searchParams.delete('query');
|
|
22
|
+
searchParams.delete('page');
|
|
23
|
+
searchParams.delete('and[]');
|
|
24
|
+
searchParams.delete('not[]');
|
|
25
|
+
window.history.replaceState({}, '', url);
|
|
26
|
+
});
|
|
27
|
+
it('clear existing filter for facets & sort-bar', async () => {
|
|
28
|
+
const el = await fixture(html `<collection-browser></collection-browser>`);
|
|
29
|
+
el.selectedSort = 'title';
|
|
30
|
+
await el.updateComplete;
|
|
31
|
+
el.clearFilters();
|
|
32
|
+
expect(el.selectedFacets).to.equal(defaultSelectedFacets);
|
|
33
|
+
expect(el.selectedSort).to.equal('relevance');
|
|
34
|
+
expect(el.sortDirection).to.null;
|
|
35
|
+
expect(el.sortParam).to.null;
|
|
36
|
+
expect(el.selectedCreatorFilter).to.null;
|
|
37
|
+
expect(el.selectedTitleFilter).to.null;
|
|
38
|
+
});
|
|
39
|
+
it('filterBy creator with analytics', async () => {
|
|
40
|
+
const mockAnalyticsHandler = new MockAnalyticsHandler();
|
|
41
41
|
const el = await fixture(html `<collection-browser .analyticsHandler=${mockAnalyticsHandler}>
|
|
42
|
-
</collection-browser>`);
|
|
43
|
-
el.searchContext = 'betaSearchService';
|
|
44
|
-
el.selectedCreatorFilter = 'A';
|
|
45
|
-
await el.updateComplete;
|
|
46
|
-
expect(mockAnalyticsHandler.callCategory).to.equal('betaSearchService');
|
|
47
|
-
expect(mockAnalyticsHandler.callAction).to.equal('filterByCreator');
|
|
48
|
-
expect(mockAnalyticsHandler.callLabel).to.equal('start-A');
|
|
49
|
-
el.clearFilters();
|
|
50
|
-
await el.updateComplete;
|
|
51
|
-
expect(el.selectedTitleFilter).to.null;
|
|
52
|
-
expect(mockAnalyticsHandler.callCategory).to.equal('betaSearchService');
|
|
53
|
-
expect(mockAnalyticsHandler.callAction).to.equal('filterByCreator');
|
|
54
|
-
expect(mockAnalyticsHandler.callLabel).to.equal('clear-A');
|
|
55
|
-
});
|
|
56
|
-
it('filterBy title with analytics', async () => {
|
|
57
|
-
const mockAnalyticsHandler = new MockAnalyticsHandler();
|
|
42
|
+
</collection-browser>`);
|
|
43
|
+
el.searchContext = 'betaSearchService';
|
|
44
|
+
el.selectedCreatorFilter = 'A';
|
|
45
|
+
await el.updateComplete;
|
|
46
|
+
expect(mockAnalyticsHandler.callCategory).to.equal('betaSearchService');
|
|
47
|
+
expect(mockAnalyticsHandler.callAction).to.equal('filterByCreator');
|
|
48
|
+
expect(mockAnalyticsHandler.callLabel).to.equal('start-A');
|
|
49
|
+
el.clearFilters();
|
|
50
|
+
await el.updateComplete;
|
|
51
|
+
expect(el.selectedTitleFilter).to.null;
|
|
52
|
+
expect(mockAnalyticsHandler.callCategory).to.equal('betaSearchService');
|
|
53
|
+
expect(mockAnalyticsHandler.callAction).to.equal('filterByCreator');
|
|
54
|
+
expect(mockAnalyticsHandler.callLabel).to.equal('clear-A');
|
|
55
|
+
});
|
|
56
|
+
it('filterBy title with analytics', async () => {
|
|
57
|
+
const mockAnalyticsHandler = new MockAnalyticsHandler();
|
|
58
58
|
const el = await fixture(html `<collection-browser .analyticsHandler=${mockAnalyticsHandler}>
|
|
59
|
-
</collection-browser>`);
|
|
60
|
-
el.searchContext = 'beta-search-service';
|
|
61
|
-
el.selectedSort = 'title';
|
|
62
|
-
el.selectedTitleFilter = 'A';
|
|
63
|
-
await el.updateComplete;
|
|
64
|
-
expect(mockAnalyticsHandler.callCategory).to.equal('beta-search-service');
|
|
65
|
-
expect(mockAnalyticsHandler.callAction).to.equal('filterByTitle');
|
|
66
|
-
expect(mockAnalyticsHandler.callLabel).to.equal('start-A');
|
|
67
|
-
el.clearFilters();
|
|
68
|
-
await el.updateComplete;
|
|
69
|
-
expect(el.selectedTitleFilter).to.null;
|
|
70
|
-
expect(mockAnalyticsHandler.callCategory).to.equal('beta-search-service');
|
|
71
|
-
expect(mockAnalyticsHandler.callAction).to.equal('filterByTitle');
|
|
72
|
-
expect(mockAnalyticsHandler.callLabel).to.equal('clear-A');
|
|
73
|
-
});
|
|
74
|
-
it('selected facets with analytics - not negative facets', async () => {
|
|
75
|
-
const mockAnalyticsHandler = new MockAnalyticsHandler();
|
|
76
|
-
const mediaTypeBucket = { count: 123, state: 'selected' };
|
|
77
|
-
const mockedSelectedFacets = {
|
|
78
|
-
subject: {},
|
|
79
|
-
lending: {},
|
|
80
|
-
mediatype: { data: mediaTypeBucket },
|
|
81
|
-
language: {},
|
|
82
|
-
creator: {},
|
|
83
|
-
collection: {},
|
|
84
|
-
year: {},
|
|
85
|
-
};
|
|
59
|
+
</collection-browser>`);
|
|
60
|
+
el.searchContext = 'beta-search-service';
|
|
61
|
+
el.selectedSort = 'title';
|
|
62
|
+
el.selectedTitleFilter = 'A';
|
|
63
|
+
await el.updateComplete;
|
|
64
|
+
expect(mockAnalyticsHandler.callCategory).to.equal('beta-search-service');
|
|
65
|
+
expect(mockAnalyticsHandler.callAction).to.equal('filterByTitle');
|
|
66
|
+
expect(mockAnalyticsHandler.callLabel).to.equal('start-A');
|
|
67
|
+
el.clearFilters();
|
|
68
|
+
await el.updateComplete;
|
|
69
|
+
expect(el.selectedTitleFilter).to.null;
|
|
70
|
+
expect(mockAnalyticsHandler.callCategory).to.equal('beta-search-service');
|
|
71
|
+
expect(mockAnalyticsHandler.callAction).to.equal('filterByTitle');
|
|
72
|
+
expect(mockAnalyticsHandler.callLabel).to.equal('clear-A');
|
|
73
|
+
});
|
|
74
|
+
it('selected facets with analytics - not negative facets', async () => {
|
|
75
|
+
const mockAnalyticsHandler = new MockAnalyticsHandler();
|
|
76
|
+
const mediaTypeBucket = { count: 123, state: 'selected' };
|
|
77
|
+
const mockedSelectedFacets = {
|
|
78
|
+
subject: {},
|
|
79
|
+
lending: {},
|
|
80
|
+
mediatype: { data: mediaTypeBucket },
|
|
81
|
+
language: {},
|
|
82
|
+
creator: {},
|
|
83
|
+
collection: {},
|
|
84
|
+
year: {},
|
|
85
|
+
};
|
|
86
86
|
const el = await fixture(html `<collection-browser .analyticsHandler=${mockAnalyticsHandler}>
|
|
87
|
-
</collection-browser>`);
|
|
88
|
-
el.searchContext = 'search-service';
|
|
89
|
-
el.selectedFacets = mockedSelectedFacets;
|
|
90
|
-
await el.updateComplete;
|
|
91
|
-
el.facetClickHandler('mediatype', true, false);
|
|
92
|
-
expect(mockAnalyticsHandler.callCategory).to.equal('search-service');
|
|
93
|
-
expect(mockAnalyticsHandler.callAction).to.equal('facetSelected');
|
|
94
|
-
expect(mockAnalyticsHandler.callLabel).to.equal('mediatype');
|
|
95
|
-
el.facetClickHandler('mediatype', false, false);
|
|
96
|
-
expect(el.selectedFacets).to.equal(mockedSelectedFacets);
|
|
97
|
-
expect(mockAnalyticsHandler.callCategory).to.equal('search-service');
|
|
98
|
-
expect(mockAnalyticsHandler.callAction).to.equal('facetDeselected');
|
|
99
|
-
expect(mockAnalyticsHandler.callLabel).to.equal('mediatype');
|
|
100
|
-
});
|
|
101
|
-
it('selected facets with analytics - negative facets', async () => {
|
|
102
|
-
const mockAnalyticsHandler = new MockAnalyticsHandler();
|
|
103
|
-
const mediaTypeBucket = { count: 123, state: 'selected' };
|
|
104
|
-
const mockedSelectedFacets = {
|
|
105
|
-
subject: {},
|
|
106
|
-
lending: {},
|
|
107
|
-
mediatype: { data: mediaTypeBucket },
|
|
108
|
-
language: {},
|
|
109
|
-
creator: {},
|
|
110
|
-
collection: {},
|
|
111
|
-
year: {},
|
|
112
|
-
};
|
|
87
|
+
</collection-browser>`);
|
|
88
|
+
el.searchContext = 'search-service';
|
|
89
|
+
el.selectedFacets = mockedSelectedFacets;
|
|
90
|
+
await el.updateComplete;
|
|
91
|
+
el.facetClickHandler('mediatype', true, false);
|
|
92
|
+
expect(mockAnalyticsHandler.callCategory).to.equal('search-service');
|
|
93
|
+
expect(mockAnalyticsHandler.callAction).to.equal('facetSelected');
|
|
94
|
+
expect(mockAnalyticsHandler.callLabel).to.equal('mediatype');
|
|
95
|
+
el.facetClickHandler('mediatype', false, false);
|
|
96
|
+
expect(el.selectedFacets).to.equal(mockedSelectedFacets);
|
|
97
|
+
expect(mockAnalyticsHandler.callCategory).to.equal('search-service');
|
|
98
|
+
expect(mockAnalyticsHandler.callAction).to.equal('facetDeselected');
|
|
99
|
+
expect(mockAnalyticsHandler.callLabel).to.equal('mediatype');
|
|
100
|
+
});
|
|
101
|
+
it('selected facets with analytics - negative facets', async () => {
|
|
102
|
+
const mockAnalyticsHandler = new MockAnalyticsHandler();
|
|
103
|
+
const mediaTypeBucket = { count: 123, state: 'selected' };
|
|
104
|
+
const mockedSelectedFacets = {
|
|
105
|
+
subject: {},
|
|
106
|
+
lending: {},
|
|
107
|
+
mediatype: { data: mediaTypeBucket },
|
|
108
|
+
language: {},
|
|
109
|
+
creator: {},
|
|
110
|
+
collection: {},
|
|
111
|
+
year: {},
|
|
112
|
+
};
|
|
113
113
|
const el = await fixture(html `<collection-browser .analyticsHandler=${mockAnalyticsHandler}>
|
|
114
|
-
</collection-browser>`);
|
|
115
|
-
el.searchContext = 'beta-search-service';
|
|
116
|
-
el.selectedFacets = mockedSelectedFacets;
|
|
117
|
-
await el.updateComplete;
|
|
118
|
-
el.facetClickHandler('mediatype', true, true);
|
|
119
|
-
expect(mockAnalyticsHandler.callCategory).to.equal('beta-search-service');
|
|
120
|
-
expect(mockAnalyticsHandler.callAction).to.equal('facetNegativeSelected');
|
|
121
|
-
expect(mockAnalyticsHandler.callLabel).to.equal('mediatype');
|
|
122
|
-
el.facetClickHandler('mediatype', false, true);
|
|
123
|
-
expect(el.selectedFacets).to.equal(mockedSelectedFacets);
|
|
124
|
-
expect(mockAnalyticsHandler.callCategory).to.equal('beta-search-service');
|
|
125
|
-
expect(mockAnalyticsHandler.callAction).to.equal('facetNegativeDeselected');
|
|
126
|
-
expect(mockAnalyticsHandler.callLabel).to.equal('mediatype');
|
|
127
|
-
});
|
|
128
|
-
it('should render with a sort bar, facets, and infinite scroller', async () => {
|
|
129
|
-
var _a, _b, _c;
|
|
130
|
-
const searchService = new MockSearchService();
|
|
114
|
+
</collection-browser>`);
|
|
115
|
+
el.searchContext = 'beta-search-service';
|
|
116
|
+
el.selectedFacets = mockedSelectedFacets;
|
|
117
|
+
await el.updateComplete;
|
|
118
|
+
el.facetClickHandler('mediatype', true, true);
|
|
119
|
+
expect(mockAnalyticsHandler.callCategory).to.equal('beta-search-service');
|
|
120
|
+
expect(mockAnalyticsHandler.callAction).to.equal('facetNegativeSelected');
|
|
121
|
+
expect(mockAnalyticsHandler.callLabel).to.equal('mediatype');
|
|
122
|
+
el.facetClickHandler('mediatype', false, true);
|
|
123
|
+
expect(el.selectedFacets).to.equal(mockedSelectedFacets);
|
|
124
|
+
expect(mockAnalyticsHandler.callCategory).to.equal('beta-search-service');
|
|
125
|
+
expect(mockAnalyticsHandler.callAction).to.equal('facetNegativeDeselected');
|
|
126
|
+
expect(mockAnalyticsHandler.callLabel).to.equal('mediatype');
|
|
127
|
+
});
|
|
128
|
+
it('should render with a sort bar, facets, and infinite scroller', async () => {
|
|
129
|
+
var _a, _b, _c;
|
|
130
|
+
const searchService = new MockSearchService();
|
|
131
131
|
const el = await fixture(html `<collection-browser .searchService=${searchService}>
|
|
132
|
-
</collection-browser>`);
|
|
133
|
-
el.baseQuery = 'hello';
|
|
134
|
-
await el.updateComplete;
|
|
135
|
-
const facets = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('collection-facets');
|
|
136
|
-
const sortBar = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('sort-filter-bar');
|
|
137
|
-
const infiniteScroller = (_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('infinite-scroller');
|
|
138
|
-
expect(facets).to.exist;
|
|
139
|
-
expect(sortBar).to.exist;
|
|
140
|
-
expect(infiniteScroller).to.exist;
|
|
141
|
-
});
|
|
142
|
-
it('queries the search service when given a base query', async () => {
|
|
143
|
-
var _a, _b, _c;
|
|
144
|
-
const searchService = new MockSearchService();
|
|
132
|
+
</collection-browser>`);
|
|
133
|
+
el.baseQuery = 'hello';
|
|
134
|
+
await el.updateComplete;
|
|
135
|
+
const facets = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('collection-facets');
|
|
136
|
+
const sortBar = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('sort-filter-bar');
|
|
137
|
+
const infiniteScroller = (_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('infinite-scroller');
|
|
138
|
+
expect(facets).to.exist;
|
|
139
|
+
expect(sortBar).to.exist;
|
|
140
|
+
expect(infiniteScroller).to.exist;
|
|
141
|
+
});
|
|
142
|
+
it('queries the search service when given a base query', async () => {
|
|
143
|
+
var _a, _b, _c;
|
|
144
|
+
const searchService = new MockSearchService();
|
|
145
145
|
const el = await fixture(html `<collection-browser .searchService=${searchService}>
|
|
146
|
-
</collection-browser>`);
|
|
147
|
-
el.baseQuery = 'collection:foo';
|
|
148
|
-
await el.updateComplete;
|
|
149
|
-
expect((_a = searchService.searchParams) === null || _a === void 0 ? void 0 : _a.query).to.equal('collection:foo');
|
|
150
|
-
expect((_c = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#big-results-label')) === null || _c === void 0 ? void 0 : _c.textContent).to.contains('Results');
|
|
151
|
-
});
|
|
152
|
-
it('queries the search service with a metadata search', async () => {
|
|
153
|
-
var _a, _b, _c;
|
|
154
|
-
const searchService = new MockSearchService();
|
|
146
|
+
</collection-browser>`);
|
|
147
|
+
el.baseQuery = 'collection:foo';
|
|
148
|
+
await el.updateComplete;
|
|
149
|
+
expect((_a = searchService.searchParams) === null || _a === void 0 ? void 0 : _a.query).to.equal('collection:foo');
|
|
150
|
+
expect((_c = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#big-results-label')) === null || _c === void 0 ? void 0 : _c.textContent).to.contains('Results');
|
|
151
|
+
});
|
|
152
|
+
it('queries the search service with a metadata search', async () => {
|
|
153
|
+
var _a, _b, _c;
|
|
154
|
+
const searchService = new MockSearchService();
|
|
155
155
|
const el = await fixture(html ` <collection-browser
|
|
156
156
|
.searchService=${searchService}
|
|
157
157
|
.searchType=${SearchType.METADATA}
|
|
158
158
|
>
|
|
159
|
-
</collection-browser>`);
|
|
160
|
-
el.baseQuery = 'collection:foo';
|
|
161
|
-
await el.updateComplete;
|
|
162
|
-
expect((_a = searchService.searchParams) === null || _a === void 0 ? void 0 : _a.query).to.equal('collection:foo');
|
|
163
|
-
expect(searchService.searchType).to.equal(SearchType.METADATA);
|
|
164
|
-
expect((_c = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#big-results-label')) === null || _c === void 0 ? void 0 : _c.textContent).to.contains('Results');
|
|
165
|
-
});
|
|
166
|
-
it('queries the search service with a fulltext search', async () => {
|
|
167
|
-
var _a, _b, _c;
|
|
168
|
-
const searchService = new MockSearchService();
|
|
159
|
+
</collection-browser>`);
|
|
160
|
+
el.baseQuery = 'collection:foo';
|
|
161
|
+
await el.updateComplete;
|
|
162
|
+
expect((_a = searchService.searchParams) === null || _a === void 0 ? void 0 : _a.query).to.equal('collection:foo');
|
|
163
|
+
expect(searchService.searchType).to.equal(SearchType.METADATA);
|
|
164
|
+
expect((_c = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#big-results-label')) === null || _c === void 0 ? void 0 : _c.textContent).to.contains('Results');
|
|
165
|
+
});
|
|
166
|
+
it('queries the search service with a fulltext search', async () => {
|
|
167
|
+
var _a, _b, _c;
|
|
168
|
+
const searchService = new MockSearchService();
|
|
169
169
|
const el = await fixture(html ` <collection-browser
|
|
170
170
|
.searchService=${searchService}
|
|
171
171
|
.searchType=${SearchType.FULLTEXT}
|
|
172
172
|
>
|
|
173
|
-
</collection-browser>`);
|
|
174
|
-
el.baseQuery = 'collection:foo';
|
|
175
|
-
await el.updateComplete;
|
|
176
|
-
expect((_a = searchService.searchParams) === null || _a === void 0 ? void 0 : _a.query).to.equal('collection:foo');
|
|
177
|
-
expect(searchService.searchType).to.equal(SearchType.FULLTEXT);
|
|
178
|
-
expect((_c = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#big-results-label')) === null || _c === void 0 ? void 0 : _c.textContent).to.contains('Results');
|
|
179
|
-
});
|
|
180
|
-
it('queries the search service with facets selected/negated', async () => {
|
|
181
|
-
var _a;
|
|
182
|
-
const searchService = new MockSearchService();
|
|
183
|
-
const selectedFacets = {
|
|
184
|
-
subject: {
|
|
185
|
-
foo: {
|
|
186
|
-
key: 'foo',
|
|
187
|
-
count: 1,
|
|
188
|
-
state: 'selected',
|
|
189
|
-
},
|
|
190
|
-
bar: {
|
|
191
|
-
key: 'bar',
|
|
192
|
-
count: 2,
|
|
193
|
-
state: 'hidden',
|
|
194
|
-
},
|
|
195
|
-
},
|
|
196
|
-
lending: {},
|
|
197
|
-
mediatype: {},
|
|
198
|
-
language: {
|
|
199
|
-
en: {
|
|
200
|
-
key: 'en',
|
|
201
|
-
count: 1,
|
|
202
|
-
state: 'selected',
|
|
203
|
-
},
|
|
204
|
-
},
|
|
205
|
-
creator: {},
|
|
206
|
-
collection: {},
|
|
207
|
-
year: {},
|
|
208
|
-
};
|
|
173
|
+
</collection-browser>`);
|
|
174
|
+
el.baseQuery = 'collection:foo';
|
|
175
|
+
await el.updateComplete;
|
|
176
|
+
expect((_a = searchService.searchParams) === null || _a === void 0 ? void 0 : _a.query).to.equal('collection:foo');
|
|
177
|
+
expect(searchService.searchType).to.equal(SearchType.FULLTEXT);
|
|
178
|
+
expect((_c = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#big-results-label')) === null || _c === void 0 ? void 0 : _c.textContent).to.contains('Results');
|
|
179
|
+
});
|
|
180
|
+
it('queries the search service with facets selected/negated', async () => {
|
|
181
|
+
var _a;
|
|
182
|
+
const searchService = new MockSearchService();
|
|
183
|
+
const selectedFacets = {
|
|
184
|
+
subject: {
|
|
185
|
+
foo: {
|
|
186
|
+
key: 'foo',
|
|
187
|
+
count: 1,
|
|
188
|
+
state: 'selected',
|
|
189
|
+
},
|
|
190
|
+
bar: {
|
|
191
|
+
key: 'bar',
|
|
192
|
+
count: 2,
|
|
193
|
+
state: 'hidden',
|
|
194
|
+
},
|
|
195
|
+
},
|
|
196
|
+
lending: {},
|
|
197
|
+
mediatype: {},
|
|
198
|
+
language: {
|
|
199
|
+
en: {
|
|
200
|
+
key: 'en',
|
|
201
|
+
count: 1,
|
|
202
|
+
state: 'selected',
|
|
203
|
+
},
|
|
204
|
+
},
|
|
205
|
+
creator: {},
|
|
206
|
+
collection: {},
|
|
207
|
+
year: {},
|
|
208
|
+
};
|
|
209
209
|
const el = await fixture(html `<collection-browser .searchService=${searchService}>
|
|
210
|
-
</collection-browser>`);
|
|
211
|
-
el.baseQuery = 'collection:foo';
|
|
212
|
-
el.selectedFacets = selectedFacets;
|
|
213
|
-
await el.updateComplete;
|
|
214
|
-
expect((_a = searchService.searchParams) === null || _a === void 0 ? void 0 : _a.query).to.equal('collection:foo AND (subject:("foo" OR -"bar") AND language:("en"))');
|
|
215
|
-
});
|
|
216
|
-
it('fails gracefully if no search service provided', async () => {
|
|
217
|
-
var _a;
|
|
218
|
-
const el = await fixture(html `<collection-browser></collection-browser>`);
|
|
219
|
-
el.baseQuery = 'collection:foo';
|
|
220
|
-
await el.updateComplete;
|
|
221
|
-
// This shouldn't throw an error
|
|
222
|
-
expect(el.fetchPage(2)).to.exist;
|
|
223
|
-
// Should continue showing the empty placeholder
|
|
224
|
-
expect((_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('empty-placeholder')).to.exist;
|
|
225
|
-
});
|
|
226
|
-
it('restores search type from URL param', async () => {
|
|
227
|
-
// Add a sin=TXT param to the URL
|
|
228
|
-
const url = new URL(window.location.href);
|
|
229
|
-
url.searchParams.append('sin', 'TXT');
|
|
230
|
-
window.history.replaceState({}, '', url);
|
|
231
|
-
const searchService = new MockSearchService();
|
|
210
|
+
</collection-browser>`);
|
|
211
|
+
el.baseQuery = 'collection:foo';
|
|
212
|
+
el.selectedFacets = selectedFacets;
|
|
213
|
+
await el.updateComplete;
|
|
214
|
+
expect((_a = searchService.searchParams) === null || _a === void 0 ? void 0 : _a.query).to.equal('collection:foo AND (subject:("foo" OR -"bar") AND language:("en"))');
|
|
215
|
+
});
|
|
216
|
+
it('fails gracefully if no search service provided', async () => {
|
|
217
|
+
var _a;
|
|
218
|
+
const el = await fixture(html `<collection-browser></collection-browser>`);
|
|
219
|
+
el.baseQuery = 'collection:foo';
|
|
220
|
+
await el.updateComplete;
|
|
221
|
+
// This shouldn't throw an error
|
|
222
|
+
expect(el.fetchPage(2)).to.exist;
|
|
223
|
+
// Should continue showing the empty placeholder
|
|
224
|
+
expect((_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('empty-placeholder')).to.exist;
|
|
225
|
+
});
|
|
226
|
+
it('restores search type from URL param', async () => {
|
|
227
|
+
// Add a sin=TXT param to the URL
|
|
228
|
+
const url = new URL(window.location.href);
|
|
229
|
+
url.searchParams.append('sin', 'TXT');
|
|
230
|
+
window.history.replaceState({}, '', url);
|
|
231
|
+
const searchService = new MockSearchService();
|
|
232
232
|
const el = await fixture(html `<collection-browser .searchService=${searchService}>
|
|
233
|
-
</collection-browser>`);
|
|
234
|
-
expect(el.searchType).to.equal(SearchType.FULLTEXT);
|
|
235
|
-
});
|
|
236
|
-
it('applies loggedin flag to tile models if needed', async () => {
|
|
237
|
-
var _a;
|
|
238
|
-
const searchService = new MockSearchService();
|
|
233
|
+
</collection-browser>`);
|
|
234
|
+
expect(el.searchType).to.equal(SearchType.FULLTEXT);
|
|
235
|
+
});
|
|
236
|
+
it('applies loggedin flag to tile models if needed', async () => {
|
|
237
|
+
var _a;
|
|
238
|
+
const searchService = new MockSearchService();
|
|
239
239
|
const el = await fixture(html `<collection-browser .searchService=${searchService}>
|
|
240
|
-
</collection-browser>`);
|
|
241
|
-
el.baseQuery = 'loggedin';
|
|
242
|
-
await el.updateComplete;
|
|
243
|
-
const cellTemplate = el.cellForIndex(0);
|
|
244
|
-
expect(cellTemplate).to.exist;
|
|
245
|
-
const cell = await fixture(cellTemplate);
|
|
246
|
-
expect(cell).to.exist;
|
|
247
|
-
expect((_a = cell.model) === null || _a === void 0 ? void 0 : _a.loginRequired).to.be.true;
|
|
248
|
-
});
|
|
249
|
-
it('applies no-preview flag to tile models if needed', async () => {
|
|
250
|
-
var _a;
|
|
251
|
-
const searchService = new MockSearchService();
|
|
240
|
+
</collection-browser>`);
|
|
241
|
+
el.baseQuery = 'loggedin';
|
|
242
|
+
await el.updateComplete;
|
|
243
|
+
const cellTemplate = el.cellForIndex(0);
|
|
244
|
+
expect(cellTemplate).to.exist;
|
|
245
|
+
const cell = await fixture(cellTemplate);
|
|
246
|
+
expect(cell).to.exist;
|
|
247
|
+
expect((_a = cell.model) === null || _a === void 0 ? void 0 : _a.loginRequired).to.be.true;
|
|
248
|
+
});
|
|
249
|
+
it('applies no-preview flag to tile models if needed', async () => {
|
|
250
|
+
var _a;
|
|
251
|
+
const searchService = new MockSearchService();
|
|
252
252
|
const el = await fixture(html `<collection-browser .searchService=${searchService}>
|
|
253
|
-
</collection-browser>`);
|
|
254
|
-
el.baseQuery = 'no-preview';
|
|
255
|
-
await el.updateComplete;
|
|
256
|
-
const cellTemplate = el.cellForIndex(0);
|
|
257
|
-
expect(cellTemplate).to.exist;
|
|
258
|
-
const cell = await fixture(cellTemplate);
|
|
259
|
-
expect(cell).to.exist;
|
|
260
|
-
expect((_a = cell.model) === null || _a === void 0 ? void 0 : _a.contentWarning).to.be.true;
|
|
261
|
-
});
|
|
262
|
-
it('both loggedin and no-preview flags can be set simultaneously', async () => {
|
|
263
|
-
var _a, _b;
|
|
264
|
-
const searchService = new MockSearchService();
|
|
253
|
+
</collection-browser>`);
|
|
254
|
+
el.baseQuery = 'no-preview';
|
|
255
|
+
await el.updateComplete;
|
|
256
|
+
const cellTemplate = el.cellForIndex(0);
|
|
257
|
+
expect(cellTemplate).to.exist;
|
|
258
|
+
const cell = await fixture(cellTemplate);
|
|
259
|
+
expect(cell).to.exist;
|
|
260
|
+
expect((_a = cell.model) === null || _a === void 0 ? void 0 : _a.contentWarning).to.be.true;
|
|
261
|
+
});
|
|
262
|
+
it('both loggedin and no-preview flags can be set simultaneously', async () => {
|
|
263
|
+
var _a, _b;
|
|
264
|
+
const searchService = new MockSearchService();
|
|
265
265
|
const el = await fixture(html `<collection-browser .searchService=${searchService}>
|
|
266
|
-
</collection-browser>`);
|
|
267
|
-
el.baseQuery = 'loggedin-no-preview';
|
|
268
|
-
await el.updateComplete;
|
|
269
|
-
const cellTemplate = el.cellForIndex(0);
|
|
270
|
-
expect(cellTemplate).to.exist;
|
|
271
|
-
const cell = await fixture(cellTemplate);
|
|
272
|
-
expect(cell).to.exist;
|
|
273
|
-
expect((_a = cell.model) === null || _a === void 0 ? void 0 : _a.loginRequired).to.be.true;
|
|
274
|
-
expect((_b = cell.model) === null || _b === void 0 ? void 0 : _b.contentWarning).to.be.true;
|
|
275
|
-
});
|
|
276
|
-
it('can search on demand if only search type has changed', async () => {
|
|
277
|
-
const searchService = new MockSearchService();
|
|
266
|
+
</collection-browser>`);
|
|
267
|
+
el.baseQuery = 'loggedin-no-preview';
|
|
268
|
+
await el.updateComplete;
|
|
269
|
+
const cellTemplate = el.cellForIndex(0);
|
|
270
|
+
expect(cellTemplate).to.exist;
|
|
271
|
+
const cell = await fixture(cellTemplate);
|
|
272
|
+
expect(cell).to.exist;
|
|
273
|
+
expect((_a = cell.model) === null || _a === void 0 ? void 0 : _a.loginRequired).to.be.true;
|
|
274
|
+
expect((_b = cell.model) === null || _b === void 0 ? void 0 : _b.contentWarning).to.be.true;
|
|
275
|
+
});
|
|
276
|
+
it('can search on demand if only search type has changed', async () => {
|
|
277
|
+
const searchService = new MockSearchService();
|
|
278
278
|
const el = await fixture(html `<collection-browser
|
|
279
279
|
.searchService=${searchService}
|
|
280
280
|
.searchType=${SearchType.METADATA}
|
|
281
|
-
></collection-browser>`);
|
|
282
|
-
el.baseQuery = 'collection:foo';
|
|
283
|
-
await el.updateComplete;
|
|
284
|
-
el.searchType = SearchType.FULLTEXT;
|
|
285
|
-
await el.updateComplete;
|
|
286
|
-
// Haven't performed the search yet
|
|
287
|
-
expect(searchService.searchType).to.equal(SearchType.METADATA);
|
|
288
|
-
el.requestSearch();
|
|
289
|
-
expect(searchService.searchType).to.equal(SearchType.FULLTEXT);
|
|
290
|
-
});
|
|
291
|
-
it('queries for collection names after a fetch', async () => {
|
|
292
|
-
const searchService = new MockSearchService();
|
|
293
|
-
const collectionNameCache = new MockCollectionNameCache();
|
|
281
|
+
></collection-browser>`);
|
|
282
|
+
el.baseQuery = 'collection:foo';
|
|
283
|
+
await el.updateComplete;
|
|
284
|
+
el.searchType = SearchType.FULLTEXT;
|
|
285
|
+
await el.updateComplete;
|
|
286
|
+
// Haven't performed the search yet
|
|
287
|
+
expect(searchService.searchType).to.equal(SearchType.METADATA);
|
|
288
|
+
el.requestSearch();
|
|
289
|
+
expect(searchService.searchType).to.equal(SearchType.FULLTEXT);
|
|
290
|
+
});
|
|
291
|
+
it('queries for collection names after a fetch', async () => {
|
|
292
|
+
const searchService = new MockSearchService();
|
|
293
|
+
const collectionNameCache = new MockCollectionNameCache();
|
|
294
294
|
const el = await fixture(html `<collection-browser
|
|
295
295
|
.searchService=${searchService}
|
|
296
296
|
.collectionNameCache=${collectionNameCache}
|
|
297
297
|
>
|
|
298
|
-
</collection-browser>`);
|
|
299
|
-
el.baseQuery = 'collection:foo';
|
|
300
|
-
await el.updateComplete;
|
|
301
|
-
expect(collectionNameCache.preloadIdentifiersRequested).to.deep.equal([
|
|
302
|
-
'foo',
|
|
303
|
-
'bar',
|
|
304
|
-
'baz',
|
|
305
|
-
'boop',
|
|
306
|
-
]);
|
|
307
|
-
});
|
|
308
|
-
it('keeps search results from fetch if no change to query or sort param', async () => {
|
|
309
|
-
const resultsSpy = sinon.spy();
|
|
310
|
-
const searchService = new MockSearchService({
|
|
311
|
-
asyncResponse: true,
|
|
312
|
-
resultsSpy,
|
|
313
|
-
});
|
|
298
|
+
</collection-browser>`);
|
|
299
|
+
el.baseQuery = 'collection:foo';
|
|
300
|
+
await el.updateComplete;
|
|
301
|
+
expect(collectionNameCache.preloadIdentifiersRequested).to.deep.equal([
|
|
302
|
+
'foo',
|
|
303
|
+
'bar',
|
|
304
|
+
'baz',
|
|
305
|
+
'boop',
|
|
306
|
+
]);
|
|
307
|
+
});
|
|
308
|
+
it('keeps search results from fetch if no change to query or sort param', async () => {
|
|
309
|
+
const resultsSpy = sinon.spy();
|
|
310
|
+
const searchService = new MockSearchService({
|
|
311
|
+
asyncResponse: true,
|
|
312
|
+
resultsSpy,
|
|
313
|
+
});
|
|
314
314
|
const el = await fixture(html `<collection-browser .searchService=${searchService}>
|
|
315
|
-
</collection-browser>`);
|
|
316
|
-
el.baseQuery = 'with-sort';
|
|
317
|
-
el.sortParam = { field: 'foo', direction: 'asc' };
|
|
318
|
-
await el.updateComplete;
|
|
319
|
-
await el.fetchPage(2);
|
|
320
|
-
// If there is no change to the query or sort param during the fetch, the results
|
|
321
|
-
// should be read.
|
|
322
|
-
expect(resultsSpy.callCount).to.be.greaterThanOrEqual(1);
|
|
323
|
-
});
|
|
324
|
-
it('discards obsolete search results if sort params changed before arrival', async () => {
|
|
325
|
-
const resultsSpy = sinon.spy();
|
|
326
|
-
const searchService = new MockSearchService({
|
|
327
|
-
asyncResponse: true,
|
|
328
|
-
resultsSpy,
|
|
329
|
-
});
|
|
315
|
+
</collection-browser>`);
|
|
316
|
+
el.baseQuery = 'with-sort';
|
|
317
|
+
el.sortParam = { field: 'foo', direction: 'asc' };
|
|
318
|
+
await el.updateComplete;
|
|
319
|
+
await el.fetchPage(2);
|
|
320
|
+
// If there is no change to the query or sort param during the fetch, the results
|
|
321
|
+
// should be read.
|
|
322
|
+
expect(resultsSpy.callCount).to.be.greaterThanOrEqual(1);
|
|
323
|
+
});
|
|
324
|
+
it('discards obsolete search results if sort params changed before arrival', async () => {
|
|
325
|
+
const resultsSpy = sinon.spy();
|
|
326
|
+
const searchService = new MockSearchService({
|
|
327
|
+
asyncResponse: true,
|
|
328
|
+
resultsSpy,
|
|
329
|
+
});
|
|
330
330
|
const el = await fixture(html `<collection-browser .searchService=${searchService}>
|
|
331
|
-
</collection-browser>`);
|
|
332
|
-
el.baseQuery = 'with-sort';
|
|
333
|
-
el.sortParam = { field: 'foo', direction: 'asc' };
|
|
334
|
-
await el.updateComplete;
|
|
335
|
-
const fetchPromise = el.fetchPage(2);
|
|
336
|
-
el.sortParam = { field: 'foo', direction: 'desc' };
|
|
337
|
-
await fetchPromise;
|
|
338
|
-
// If the different sort param causes the results to be discarded,
|
|
339
|
-
// the results array should never be read.
|
|
340
|
-
expect(resultsSpy.callCount).to.equal(0);
|
|
341
|
-
});
|
|
342
|
-
it('discards obsolete search results if sort param added before arrival', async () => {
|
|
343
|
-
const resultsSpy = sinon.spy();
|
|
344
|
-
const searchService = new MockSearchService({
|
|
345
|
-
asyncResponse: true,
|
|
346
|
-
resultsSpy,
|
|
347
|
-
});
|
|
331
|
+
</collection-browser>`);
|
|
332
|
+
el.baseQuery = 'with-sort';
|
|
333
|
+
el.sortParam = { field: 'foo', direction: 'asc' };
|
|
334
|
+
await el.updateComplete;
|
|
335
|
+
const fetchPromise = el.fetchPage(2);
|
|
336
|
+
el.sortParam = { field: 'foo', direction: 'desc' };
|
|
337
|
+
await fetchPromise;
|
|
338
|
+
// If the different sort param causes the results to be discarded,
|
|
339
|
+
// the results array should never be read.
|
|
340
|
+
expect(resultsSpy.callCount).to.equal(0);
|
|
341
|
+
});
|
|
342
|
+
it('discards obsolete search results if sort param added before arrival', async () => {
|
|
343
|
+
const resultsSpy = sinon.spy();
|
|
344
|
+
const searchService = new MockSearchService({
|
|
345
|
+
asyncResponse: true,
|
|
346
|
+
resultsSpy,
|
|
347
|
+
});
|
|
348
348
|
const el = await fixture(html `<collection-browser .searchService=${searchService}>
|
|
349
|
-
</collection-browser>`);
|
|
350
|
-
el.baseQuery = 'single-result';
|
|
351
|
-
await el.updateComplete;
|
|
352
|
-
const fetchPromise = el.fetchPage(2);
|
|
353
|
-
el.sortParam = { field: 'foo', direction: 'asc' };
|
|
354
|
-
await fetchPromise;
|
|
355
|
-
// If the different sort param causes the results to be discarded,
|
|
356
|
-
// the results array should never be read.
|
|
357
|
-
expect(resultsSpy.callCount).to.equal(0);
|
|
358
|
-
});
|
|
359
|
-
it('discards obsolete search results if sort param cleared before arrival', async () => {
|
|
360
|
-
const resultsSpy = sinon.spy();
|
|
361
|
-
const searchService = new MockSearchService({
|
|
362
|
-
asyncResponse: true,
|
|
363
|
-
resultsSpy,
|
|
364
|
-
});
|
|
349
|
+
</collection-browser>`);
|
|
350
|
+
el.baseQuery = 'single-result';
|
|
351
|
+
await el.updateComplete;
|
|
352
|
+
const fetchPromise = el.fetchPage(2);
|
|
353
|
+
el.sortParam = { field: 'foo', direction: 'asc' };
|
|
354
|
+
await fetchPromise;
|
|
355
|
+
// If the different sort param causes the results to be discarded,
|
|
356
|
+
// the results array should never be read.
|
|
357
|
+
expect(resultsSpy.callCount).to.equal(0);
|
|
358
|
+
});
|
|
359
|
+
it('discards obsolete search results if sort param cleared before arrival', async () => {
|
|
360
|
+
const resultsSpy = sinon.spy();
|
|
361
|
+
const searchService = new MockSearchService({
|
|
362
|
+
asyncResponse: true,
|
|
363
|
+
resultsSpy,
|
|
364
|
+
});
|
|
365
365
|
const el = await fixture(html `<collection-browser .searchService=${searchService}>
|
|
366
|
-
</collection-browser>`);
|
|
367
|
-
el.baseQuery = 'with-sort';
|
|
368
|
-
await el.updateComplete;
|
|
369
|
-
const fetchPromise = el.fetchPage(2);
|
|
370
|
-
el.sortParam = null;
|
|
371
|
-
await fetchPromise;
|
|
372
|
-
// If the different sort param causes the results to be discarded,
|
|
373
|
-
// the results array should never be read.
|
|
374
|
-
expect(resultsSpy.callCount).to.equal(0);
|
|
375
|
-
});
|
|
376
|
-
it('sets sort properties when user changes sort', async () => {
|
|
377
|
-
var _a, _b, _c, _d;
|
|
378
|
-
const searchService = new MockSearchService();
|
|
366
|
+
</collection-browser>`);
|
|
367
|
+
el.baseQuery = 'with-sort';
|
|
368
|
+
await el.updateComplete;
|
|
369
|
+
const fetchPromise = el.fetchPage(2);
|
|
370
|
+
el.sortParam = null;
|
|
371
|
+
await fetchPromise;
|
|
372
|
+
// If the different sort param causes the results to be discarded,
|
|
373
|
+
// the results array should never be read.
|
|
374
|
+
expect(resultsSpy.callCount).to.equal(0);
|
|
375
|
+
});
|
|
376
|
+
it('sets sort properties when user changes sort', async () => {
|
|
377
|
+
var _a, _b, _c, _d;
|
|
378
|
+
const searchService = new MockSearchService();
|
|
379
379
|
const el = await fixture(html `<collection-browser .searchService=${searchService}>
|
|
380
|
-
</collection-browser>`);
|
|
381
|
-
expect(el.selectedSort).to.equal(SortField.relevance);
|
|
382
|
-
el.baseQuery = 'foo';
|
|
383
|
-
await el.updateComplete;
|
|
384
|
-
const sortBar = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('sort-filter-bar');
|
|
385
|
-
const sortSelector = (_b = sortBar === null || sortBar === void 0 ? void 0 : sortBar.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#desktop-sort-selector');
|
|
386
|
-
expect(sortSelector).to.exist;
|
|
387
|
-
// Click the title sorter
|
|
388
|
-
(_d = (_c = [...sortSelector === null || sortSelector === void 0 ? void 0 : sortSelector.children] // tsc doesn't know children is iterable
|
|
389
|
-
.find(child => { var _a; return ((_a = child.textContent) === null || _a === void 0 ? void 0 : _a.trim()) === 'Title'; })) === null || _c === void 0 ? void 0 : _c.querySelector('a[href]')) === null || _d === void 0 ? void 0 : _d.click();
|
|
390
|
-
await el.updateComplete;
|
|
391
|
-
expect(el.selectedSort).to.equal(SortField.title);
|
|
392
|
-
});
|
|
393
|
-
it('scrolls to page', async () => {
|
|
394
|
-
var _a;
|
|
395
|
-
const searchService = new MockSearchService();
|
|
380
|
+
</collection-browser>`);
|
|
381
|
+
expect(el.selectedSort).to.equal(SortField.relevance);
|
|
382
|
+
el.baseQuery = 'foo';
|
|
383
|
+
await el.updateComplete;
|
|
384
|
+
const sortBar = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('sort-filter-bar');
|
|
385
|
+
const sortSelector = (_b = sortBar === null || sortBar === void 0 ? void 0 : sortBar.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#desktop-sort-selector');
|
|
386
|
+
expect(sortSelector).to.exist;
|
|
387
|
+
// Click the title sorter
|
|
388
|
+
(_d = (_c = [...sortSelector === null || sortSelector === void 0 ? void 0 : sortSelector.children] // tsc doesn't know children is iterable
|
|
389
|
+
.find(child => { var _a; return ((_a = child.textContent) === null || _a === void 0 ? void 0 : _a.trim()) === 'Title'; })) === null || _c === void 0 ? void 0 : _c.querySelector('a[href]')) === null || _d === void 0 ? void 0 : _d.click();
|
|
390
|
+
await el.updateComplete;
|
|
391
|
+
expect(el.selectedSort).to.equal(SortField.title);
|
|
392
|
+
});
|
|
393
|
+
it('scrolls to page', async () => {
|
|
394
|
+
var _a;
|
|
395
|
+
const searchService = new MockSearchService();
|
|
396
396
|
const el = await fixture(html `<collection-browser .searchService=${searchService}>
|
|
397
|
-
</collection-browser>`);
|
|
398
|
-
// Infinite scroller won't exist unless there's a base query
|
|
399
|
-
el.baseQuery = 'collection:foo';
|
|
400
|
-
await el.updateComplete;
|
|
401
|
-
const infiniteScroller = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('infinite-scroller');
|
|
402
|
-
expect(infiniteScroller).to.exist;
|
|
403
|
-
const oldScrollToCell = infiniteScroller.scrollToCell;
|
|
404
|
-
const spy = sinon.spy();
|
|
405
|
-
infiniteScroller.scrollToCell = spy;
|
|
406
|
-
el.goToPage(1);
|
|
407
|
-
// Give it a second to scroll
|
|
408
|
-
await new Promise(res => {
|
|
409
|
-
setTimeout(res, 1000);
|
|
410
|
-
});
|
|
411
|
-
expect(spy.callCount).to.equal(1);
|
|
412
|
-
infiniteScroller.scrollToCell = oldScrollToCell;
|
|
413
|
-
});
|
|
414
|
-
it('refreshes when certain properties change - with some analytics event sampling', async () => {
|
|
415
|
-
var _a;
|
|
416
|
-
const mockAnalyticsHandler = new MockAnalyticsHandler();
|
|
417
|
-
const searchService = new MockSearchService();
|
|
418
|
-
const collectionNameCache = new MockCollectionNameCache();
|
|
397
|
+
</collection-browser>`);
|
|
398
|
+
// Infinite scroller won't exist unless there's a base query
|
|
399
|
+
el.baseQuery = 'collection:foo';
|
|
400
|
+
await el.updateComplete;
|
|
401
|
+
const infiniteScroller = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('infinite-scroller');
|
|
402
|
+
expect(infiniteScroller).to.exist;
|
|
403
|
+
const oldScrollToCell = infiniteScroller.scrollToCell;
|
|
404
|
+
const spy = sinon.spy();
|
|
405
|
+
infiniteScroller.scrollToCell = spy;
|
|
406
|
+
el.goToPage(1);
|
|
407
|
+
// Give it a second to scroll
|
|
408
|
+
await new Promise(res => {
|
|
409
|
+
setTimeout(res, 1000);
|
|
410
|
+
});
|
|
411
|
+
expect(spy.callCount).to.equal(1);
|
|
412
|
+
infiniteScroller.scrollToCell = oldScrollToCell;
|
|
413
|
+
});
|
|
414
|
+
it('refreshes when certain properties change - with some analytics event sampling', async () => {
|
|
415
|
+
var _a;
|
|
416
|
+
const mockAnalyticsHandler = new MockAnalyticsHandler();
|
|
417
|
+
const searchService = new MockSearchService();
|
|
418
|
+
const collectionNameCache = new MockCollectionNameCache();
|
|
419
419
|
const el = await fixture(html `<collection-browser
|
|
420
420
|
.analyticsHandler=${mockAnalyticsHandler}
|
|
421
421
|
.searchService=${searchService}
|
|
422
422
|
.collectionNameCache=${collectionNameCache}
|
|
423
|
-
></collection-browser>`);
|
|
424
|
-
const infiniteScrollerRefreshSpy = sinon.spy();
|
|
425
|
-
// Infinite scroller won't exist unless there's a base query
|
|
426
|
-
el.baseQuery = 'collection:foo';
|
|
427
|
-
await el.updateComplete;
|
|
428
|
-
const infiniteScroller = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('infinite-scroller');
|
|
429
|
-
infiniteScroller.reload = infiniteScrollerRefreshSpy;
|
|
430
|
-
expect(infiniteScrollerRefreshSpy.called).to.be.false;
|
|
431
|
-
expect(infiniteScrollerRefreshSpy.callCount).to.equal(0);
|
|
432
|
-
// testing: `loggedIn`
|
|
433
|
-
el.loggedIn = true;
|
|
434
|
-
await el.updateComplete;
|
|
435
|
-
expect(infiniteScrollerRefreshSpy.called).to.be.true;
|
|
436
|
-
expect(infiniteScrollerRefreshSpy.callCount).to.equal(1);
|
|
437
|
-
el.loggedIn = false;
|
|
438
|
-
await el.updateComplete;
|
|
439
|
-
expect(infiniteScrollerRefreshSpy.callCount).to.equal(2);
|
|
440
|
-
// testing: `displayMode`
|
|
441
|
-
el.displayMode = 'list-compact';
|
|
442
|
-
el.searchContext = 'beta-search';
|
|
443
|
-
await el.updateComplete;
|
|
444
|
-
expect(infiniteScrollerRefreshSpy.callCount).to.equal(3);
|
|
445
|
-
expect(mockAnalyticsHandler.callCategory).to.equal('beta-search');
|
|
446
|
-
expect(mockAnalyticsHandler.callAction).to.equal('displayMode');
|
|
447
|
-
expect(mockAnalyticsHandler.callLabel).to.equal('list-compact');
|
|
448
|
-
el.displayMode = 'list-detail';
|
|
449
|
-
await el.updateComplete;
|
|
450
|
-
expect(infiniteScrollerRefreshSpy.callCount).to.equal(4);
|
|
451
|
-
expect(mockAnalyticsHandler.callCategory).to.equal('beta-search');
|
|
452
|
-
expect(mockAnalyticsHandler.callAction).to.equal('displayMode');
|
|
453
|
-
expect(mockAnalyticsHandler.callLabel).to.equal('list-detail');
|
|
454
|
-
// testing: `baseNavigationUrl`
|
|
455
|
-
el.baseNavigationUrl = 'https://funtestsite.com';
|
|
456
|
-
await el.updateComplete;
|
|
457
|
-
expect(infiniteScrollerRefreshSpy.callCount).to.equal(5);
|
|
458
|
-
// testing: `baseImageUrl`
|
|
459
|
-
el.baseImageUrl = 'https://funtestsiteforimages.com';
|
|
460
|
-
await el.updateComplete;
|
|
461
|
-
expect(infiniteScrollerRefreshSpy.callCount).to.equal(6);
|
|
462
|
-
});
|
|
463
|
-
it('query the search service for single result', async () => {
|
|
464
|
-
var _a, _b;
|
|
465
|
-
const searchService = new MockSearchService();
|
|
423
|
+
></collection-browser>`);
|
|
424
|
+
const infiniteScrollerRefreshSpy = sinon.spy();
|
|
425
|
+
// Infinite scroller won't exist unless there's a base query
|
|
426
|
+
el.baseQuery = 'collection:foo';
|
|
427
|
+
await el.updateComplete;
|
|
428
|
+
const infiniteScroller = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('infinite-scroller');
|
|
429
|
+
infiniteScroller.reload = infiniteScrollerRefreshSpy;
|
|
430
|
+
expect(infiniteScrollerRefreshSpy.called).to.be.false;
|
|
431
|
+
expect(infiniteScrollerRefreshSpy.callCount).to.equal(0);
|
|
432
|
+
// testing: `loggedIn`
|
|
433
|
+
el.loggedIn = true;
|
|
434
|
+
await el.updateComplete;
|
|
435
|
+
expect(infiniteScrollerRefreshSpy.called).to.be.true;
|
|
436
|
+
expect(infiniteScrollerRefreshSpy.callCount).to.equal(1);
|
|
437
|
+
el.loggedIn = false;
|
|
438
|
+
await el.updateComplete;
|
|
439
|
+
expect(infiniteScrollerRefreshSpy.callCount).to.equal(2);
|
|
440
|
+
// testing: `displayMode`
|
|
441
|
+
el.displayMode = 'list-compact';
|
|
442
|
+
el.searchContext = 'beta-search';
|
|
443
|
+
await el.updateComplete;
|
|
444
|
+
expect(infiniteScrollerRefreshSpy.callCount).to.equal(3);
|
|
445
|
+
expect(mockAnalyticsHandler.callCategory).to.equal('beta-search');
|
|
446
|
+
expect(mockAnalyticsHandler.callAction).to.equal('displayMode');
|
|
447
|
+
expect(mockAnalyticsHandler.callLabel).to.equal('list-compact');
|
|
448
|
+
el.displayMode = 'list-detail';
|
|
449
|
+
await el.updateComplete;
|
|
450
|
+
expect(infiniteScrollerRefreshSpy.callCount).to.equal(4);
|
|
451
|
+
expect(mockAnalyticsHandler.callCategory).to.equal('beta-search');
|
|
452
|
+
expect(mockAnalyticsHandler.callAction).to.equal('displayMode');
|
|
453
|
+
expect(mockAnalyticsHandler.callLabel).to.equal('list-detail');
|
|
454
|
+
// testing: `baseNavigationUrl`
|
|
455
|
+
el.baseNavigationUrl = 'https://funtestsite.com';
|
|
456
|
+
await el.updateComplete;
|
|
457
|
+
expect(infiniteScrollerRefreshSpy.callCount).to.equal(5);
|
|
458
|
+
// testing: `baseImageUrl`
|
|
459
|
+
el.baseImageUrl = 'https://funtestsiteforimages.com';
|
|
460
|
+
await el.updateComplete;
|
|
461
|
+
expect(infiniteScrollerRefreshSpy.callCount).to.equal(6);
|
|
462
|
+
});
|
|
463
|
+
it('query the search service for single result', async () => {
|
|
464
|
+
var _a, _b;
|
|
465
|
+
const searchService = new MockSearchService();
|
|
466
466
|
const el = await fixture(html `<collection-browser .searchService=${searchService}>
|
|
467
|
-
</collection-browser>`);
|
|
468
|
-
el.baseQuery = 'single-result';
|
|
469
|
-
await el.updateComplete;
|
|
470
|
-
expect((_b = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#big-results-label')) === null || _b === void 0 ? void 0 : _b.textContent).to.contains('Result');
|
|
471
|
-
});
|
|
472
|
-
it('`searchContext` prop helps describe where component is being used', async () => {
|
|
473
|
-
const el = await fixture(html `<collection-browser></collection-browser>`);
|
|
474
|
-
expect(el.searchContext).to.equal(analyticsCategories.default);
|
|
475
|
-
el.searchContext = 'unicorn-search';
|
|
476
|
-
await el.updateComplete;
|
|
477
|
-
expect(el.searchContext).to.equal('unicorn-search');
|
|
478
|
-
// property is reflected as attribute
|
|
479
|
-
expect(el.getAttribute('searchcontext')).to.equal('unicorn-search');
|
|
480
|
-
});
|
|
481
|
-
});
|
|
467
|
+
</collection-browser>`);
|
|
468
|
+
el.baseQuery = 'single-result';
|
|
469
|
+
await el.updateComplete;
|
|
470
|
+
expect((_b = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#big-results-label')) === null || _b === void 0 ? void 0 : _b.textContent).to.contains('Result');
|
|
471
|
+
});
|
|
472
|
+
it('`searchContext` prop helps describe where component is being used', async () => {
|
|
473
|
+
const el = await fixture(html `<collection-browser></collection-browser>`);
|
|
474
|
+
expect(el.searchContext).to.equal(analyticsCategories.default);
|
|
475
|
+
el.searchContext = 'unicorn-search';
|
|
476
|
+
await el.updateComplete;
|
|
477
|
+
expect(el.searchContext).to.equal('unicorn-search');
|
|
478
|
+
// property is reflected as attribute
|
|
479
|
+
expect(el.getAttribute('searchcontext')).to.equal('unicorn-search');
|
|
480
|
+
});
|
|
481
|
+
});
|
|
482
482
|
//# sourceMappingURL=collection-browser.test.js.map
|