@internetarchive/collection-browser 0.3.2-alpha.4 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (218) hide show
  1. package/.editorconfig +29 -29
  2. package/.github/workflows/ci.yml +26 -26
  3. package/.github/workflows/gh-pages-main.yml +39 -39
  4. package/.github/workflows/npm-publish.yml +39 -39
  5. package/.github/workflows/pr-preview.yml +38 -38
  6. package/.husky/pre-commit +4 -4
  7. package/LICENSE +661 -661
  8. package/README.md +83 -83
  9. package/dist/index.d.ts +9 -9
  10. package/dist/index.js +9 -9
  11. package/dist/src/app-root.d.ts +43 -43
  12. package/dist/src/app-root.js +233 -233
  13. package/dist/src/assets/img/icons/arrow-left.d.ts +2 -2
  14. package/dist/src/assets/img/icons/arrow-left.js +2 -2
  15. package/dist/src/assets/img/icons/arrow-right.d.ts +2 -2
  16. package/dist/src/assets/img/icons/arrow-right.js +2 -2
  17. package/dist/src/assets/img/icons/chevron.d.ts +2 -2
  18. package/dist/src/assets/img/icons/chevron.js +2 -2
  19. package/dist/src/assets/img/icons/empty-query.d.ts +2 -2
  20. package/dist/src/assets/img/icons/empty-query.js +2 -2
  21. package/dist/src/assets/img/icons/eye-closed.d.ts +2 -2
  22. package/dist/src/assets/img/icons/eye-closed.js +2 -2
  23. package/dist/src/assets/img/icons/eye.d.ts +2 -2
  24. package/dist/src/assets/img/icons/eye.js +2 -2
  25. package/dist/src/assets/img/icons/favorite-filled.d.ts +1 -1
  26. package/dist/src/assets/img/icons/favorite-filled.js +2 -2
  27. package/dist/src/assets/img/icons/login-required.d.ts +1 -1
  28. package/dist/src/assets/img/icons/login-required.js +2 -2
  29. package/dist/src/assets/img/icons/mediatype/account.d.ts +1 -1
  30. package/dist/src/assets/img/icons/mediatype/account.js +2 -2
  31. package/dist/src/assets/img/icons/mediatype/audio.d.ts +1 -1
  32. package/dist/src/assets/img/icons/mediatype/audio.js +2 -2
  33. package/dist/src/assets/img/icons/mediatype/collection.d.ts +1 -1
  34. package/dist/src/assets/img/icons/mediatype/collection.js +2 -2
  35. package/dist/src/assets/img/icons/mediatype/data.d.ts +1 -1
  36. package/dist/src/assets/img/icons/mediatype/data.js +2 -2
  37. package/dist/src/assets/img/icons/mediatype/etree.d.ts +1 -1
  38. package/dist/src/assets/img/icons/mediatype/etree.js +2 -2
  39. package/dist/src/assets/img/icons/mediatype/film.d.ts +1 -1
  40. package/dist/src/assets/img/icons/mediatype/film.js +2 -2
  41. package/dist/src/assets/img/icons/mediatype/images.d.ts +1 -1
  42. package/dist/src/assets/img/icons/mediatype/images.js +2 -2
  43. package/dist/src/assets/img/icons/mediatype/radio.d.ts +1 -1
  44. package/dist/src/assets/img/icons/mediatype/radio.js +2 -2
  45. package/dist/src/assets/img/icons/mediatype/software.d.ts +1 -1
  46. package/dist/src/assets/img/icons/mediatype/software.js +2 -2
  47. package/dist/src/assets/img/icons/mediatype/texts.d.ts +1 -1
  48. package/dist/src/assets/img/icons/mediatype/texts.js +2 -2
  49. package/dist/src/assets/img/icons/mediatype/tv.d.ts +1 -1
  50. package/dist/src/assets/img/icons/mediatype/tv.js +2 -2
  51. package/dist/src/assets/img/icons/mediatype/video.d.ts +1 -1
  52. package/dist/src/assets/img/icons/mediatype/video.js +2 -2
  53. package/dist/src/assets/img/icons/mediatype/web.d.ts +1 -1
  54. package/dist/src/assets/img/icons/mediatype/web.js +2 -2
  55. package/dist/src/assets/img/icons/null-result.d.ts +2 -2
  56. package/dist/src/assets/img/icons/null-result.js +2 -2
  57. package/dist/src/assets/img/icons/restricted.d.ts +1 -1
  58. package/dist/src/assets/img/icons/restricted.js +2 -2
  59. package/dist/src/assets/img/icons/reviews.d.ts +1 -1
  60. package/dist/src/assets/img/icons/reviews.js +2 -2
  61. package/dist/src/assets/img/icons/upload.d.ts +1 -1
  62. package/dist/src/assets/img/icons/upload.js +2 -2
  63. package/dist/src/assets/img/icons/views.d.ts +1 -1
  64. package/dist/src/assets/img/icons/views.js +2 -2
  65. package/dist/src/circular-activity-indicator.d.ts +5 -5
  66. package/dist/src/circular-activity-indicator.js +17 -17
  67. package/dist/src/collection-browser.d.ts +247 -247
  68. package/dist/src/collection-browser.js +1419 -1418
  69. package/dist/src/collection-browser.js.map +1 -1
  70. package/dist/src/collection-facets/facets-template.d.ts +16 -16
  71. package/dist/src/collection-facets/facets-template.js +125 -125
  72. package/dist/src/collection-facets/more-facets-content.d.ts +74 -74
  73. package/dist/src/collection-facets/more-facets-content.js +330 -330
  74. package/dist/src/collection-facets/more-facets-pagination.d.ts +36 -36
  75. package/dist/src/collection-facets/more-facets-pagination.js +192 -192
  76. package/dist/src/collection-facets.d.ts +73 -73
  77. package/dist/src/collection-facets.js +507 -507
  78. package/dist/src/collection-facets.js.map +1 -1
  79. package/dist/src/empty-placeholder.d.ts +11 -11
  80. package/dist/src/empty-placeholder.js +42 -42
  81. package/dist/src/language-code-handler/language-code-handler.d.ts +37 -37
  82. package/dist/src/language-code-handler/language-code-handler.js +26 -26
  83. package/dist/src/language-code-handler/language-code-mapping.d.ts +1 -1
  84. package/dist/src/language-code-handler/language-code-mapping.js +562 -562
  85. package/dist/src/mediatype/mediatype-config.d.ts +3 -3
  86. package/dist/src/mediatype/mediatype-config.js +85 -85
  87. package/dist/src/models.d.ts +97 -97
  88. package/dist/src/models.js +100 -100
  89. package/dist/src/restoration-state-handler.d.ts +45 -45
  90. package/dist/src/restoration-state-handler.js +220 -220
  91. package/dist/src/sort-filter-bar/alpha-bar.d.ts +9 -9
  92. package/dist/src/sort-filter-bar/alpha-bar.js +41 -41
  93. package/dist/src/sort-filter-bar/img/compact.d.ts +1 -1
  94. package/dist/src/sort-filter-bar/img/compact.js +2 -2
  95. package/dist/src/sort-filter-bar/img/list.d.ts +1 -1
  96. package/dist/src/sort-filter-bar/img/list.js +2 -2
  97. package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -1
  98. package/dist/src/sort-filter-bar/img/sort-triangle.js +2 -2
  99. package/dist/src/sort-filter-bar/img/tile.d.ts +1 -1
  100. package/dist/src/sort-filter-bar/img/tile.js +2 -2
  101. package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +107 -107
  102. package/dist/src/sort-filter-bar/sort-filter-bar.js +423 -423
  103. package/dist/src/styles/item-image-styles.d.ts +8 -8
  104. package/dist/src/styles/item-image-styles.js +9 -9
  105. package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -5
  106. package/dist/src/tiles/collection-browser-loading-tile.js +15 -15
  107. package/dist/src/tiles/grid/account-tile.d.ts +8 -8
  108. package/dist/src/tiles/grid/account-tile.js +20 -20
  109. package/dist/src/tiles/grid/collection-tile.d.ts +7 -7
  110. package/dist/src/tiles/grid/collection-tile.js +23 -23
  111. package/dist/src/tiles/grid/item-tile.d.ts +24 -24
  112. package/dist/src/tiles/grid/item-tile.js +87 -87
  113. package/dist/src/tiles/grid/tile-stats.d.ts +10 -10
  114. package/dist/src/tiles/grid/tile-stats.js +35 -35
  115. package/dist/src/tiles/image-block.d.ts +17 -17
  116. package/dist/src/tiles/image-block.js +69 -73
  117. package/dist/src/tiles/image-block.js.map +1 -1
  118. package/dist/src/tiles/item-image.d.ts +31 -31
  119. package/dist/src/tiles/item-image.js +103 -103
  120. package/dist/src/tiles/list/account-label.d.ts +1 -1
  121. package/dist/src/tiles/list/account-label.js +6 -6
  122. package/dist/src/tiles/list/date-label.d.ts +1 -1
  123. package/dist/src/tiles/list/date-label.js +12 -12
  124. package/dist/src/tiles/list/tile-list-compact-header.d.ts +12 -12
  125. package/dist/src/tiles/list/tile-list-compact-header.js +41 -41
  126. package/dist/src/tiles/list/tile-list-compact.d.ts +20 -20
  127. package/dist/src/tiles/list/tile-list-compact.js +88 -87
  128. package/dist/src/tiles/list/tile-list-compact.js.map +1 -1
  129. package/dist/src/tiles/list/tile-list.d.ts +50 -50
  130. package/dist/src/tiles/list/tile-list.js +265 -264
  131. package/dist/src/tiles/list/tile-list.js.map +1 -1
  132. package/dist/src/tiles/mediatype-icon.d.ts +9 -9
  133. package/dist/src/tiles/mediatype-icon.js +47 -47
  134. package/dist/src/tiles/overlay/icon-overlay.d.ts +7 -7
  135. package/dist/src/tiles/overlay/icon-overlay.js +30 -31
  136. package/dist/src/tiles/overlay/icon-overlay.js.map +1 -1
  137. package/dist/src/tiles/overlay/text-overlay.d.ts +8 -8
  138. package/dist/src/tiles/overlay/text-overlay.js +31 -31
  139. package/dist/src/tiles/text-snippet-block.d.ts +29 -29
  140. package/dist/src/tiles/text-snippet-block.js +81 -81
  141. package/dist/src/tiles/tile-dispatcher.d.ts +36 -36
  142. package/dist/src/tiles/tile-dispatcher.js +128 -128
  143. package/dist/src/utils/analytics-events.d.ts +18 -18
  144. package/dist/src/utils/analytics-events.js +20 -20
  145. package/dist/src/utils/format-count.d.ts +7 -7
  146. package/dist/src/utils/format-count.js +76 -76
  147. package/dist/src/utils/format-date.d.ts +2 -2
  148. package/dist/src/utils/format-date.js +23 -23
  149. package/dist/test/collection-browser.test.d.ts +1 -1
  150. package/dist/test/collection-browser.test.js +333 -318
  151. package/dist/test/collection-browser.test.js.map +1 -1
  152. package/dist/test/collection-facets/facets-template.test.d.ts +1 -1
  153. package/dist/test/collection-facets/facets-template.test.js +62 -62
  154. package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -1
  155. package/dist/test/collection-facets/more-facets-content.test.js +91 -91
  156. package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -1
  157. package/dist/test/collection-facets/more-facets-pagination.test.js +117 -117
  158. package/dist/test/collection-facets.test.d.ts +2 -2
  159. package/dist/test/collection-facets.test.js +423 -423
  160. package/dist/test/collection-facets.test.js.map +1 -1
  161. package/dist/test/empty-placeholder.test.d.ts +1 -1
  162. package/dist/test/empty-placeholder.test.js +33 -33
  163. package/dist/test/icon-overlay.test.d.ts +1 -1
  164. package/dist/test/icon-overlay.test.js +24 -24
  165. package/dist/test/image-block.test.d.ts +1 -0
  166. package/dist/test/image-block.test.js +79 -0
  167. package/dist/test/image-block.test.js.map +1 -0
  168. package/dist/test/item-image.test.d.ts +1 -1
  169. package/dist/test/item-image.test.js +56 -56
  170. package/dist/test/mediatype-config.test.d.ts +1 -1
  171. package/dist/test/mediatype-config.test.js +16 -16
  172. package/dist/test/mocks/mock-analytics-handler.d.ts +10 -10
  173. package/dist/test/mocks/mock-analytics-handler.js +15 -15
  174. package/dist/test/mocks/mock-collection-name-cache.d.ts +7 -7
  175. package/dist/test/mocks/mock-collection-name-cache.js +13 -13
  176. package/dist/test/mocks/mock-search-responses.d.ts +5 -5
  177. package/dist/test/mocks/mock-search-responses.js +103 -103
  178. package/dist/test/mocks/mock-search-service.d.ts +13 -13
  179. package/dist/test/mocks/mock-search-service.js +25 -25
  180. package/dist/test/restoration-state-handler.test.d.ts +1 -1
  181. package/dist/test/restoration-state-handler.test.js +117 -117
  182. package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -1
  183. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +113 -113
  184. package/dist/test/text-overlay.test.d.ts +1 -1
  185. package/dist/test/text-overlay.test.js +41 -41
  186. package/dist/test/text-snippet-block.test.d.ts +1 -1
  187. package/dist/test/text-snippet-block.test.js +57 -57
  188. package/dist/test/tile-stats.test.d.ts +1 -1
  189. package/dist/test/tile-stats.test.js +33 -33
  190. package/dist/test/tiles/grid/item-tile.test.d.ts +1 -1
  191. package/dist/test/tiles/grid/item-tile.test.js +107 -107
  192. package/dist/test/tiles/list/tile-list-compact.test.d.ts +1 -0
  193. package/dist/test/tiles/list/tile-list-compact.test.js +31 -0
  194. package/dist/test/tiles/list/tile-list-compact.test.js.map +1 -0
  195. package/dist/test/tiles/list/tile-list.test.d.ts +1 -1
  196. package/dist/test/tiles/list/tile-list.test.js +36 -36
  197. package/dist/test/utils/format-count.test.d.ts +1 -1
  198. package/dist/test/utils/format-count.test.js +23 -23
  199. package/dist/test/utils/format-date.test.d.ts +1 -1
  200. package/dist/test/utils/format-date.test.js +17 -17
  201. package/index.html +24 -24
  202. package/local.archive.org.cert +86 -86
  203. package/local.archive.org.key +27 -27
  204. package/package.json +115 -115
  205. package/renovate.json +6 -6
  206. package/src/collection-browser.ts +1547 -1547
  207. package/src/collection-facets.ts +582 -582
  208. package/src/tiles/image-block.ts +7 -10
  209. package/src/tiles/list/tile-list-compact.ts +1 -0
  210. package/src/tiles/list/tile-list.ts +1 -0
  211. package/src/tiles/overlay/icon-overlay.ts +3 -4
  212. package/test/collection-browser.test.ts +24 -1
  213. package/test/collection-facets.test.ts +556 -556
  214. package/test/image-block.test.ts +86 -0
  215. package/test/tiles/list/tile-list-compact.test.ts +38 -0
  216. package/tsconfig.json +21 -21
  217. package/web-dev-server.config.mjs +30 -30
  218. package/web-test-runner.config.mjs +41 -41
@@ -1,345 +1,360 @@
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
- it('clear existing filter for facets & sort-bar', async () => {
14
- const el = await fixture(html `<collection-browser></collection-browser>`);
15
- el.selectedSort = 'title';
16
- await el.updateComplete;
17
- el.clearFilters();
18
- expect(el.selectedFacets).to.equal(defaultSelectedFacets);
19
- expect(el.selectedSort).to.equal('relevance');
20
- expect(el.sortDirection).to.null;
21
- expect(el.sortParam).to.null;
22
- expect(el.selectedCreatorFilter).to.null;
23
- expect(el.selectedTitleFilter).to.null;
24
- });
25
- it('filterBy creator with analytics', async () => {
26
- 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
+ it('clear existing filter for facets & sort-bar', async () => {
14
+ const el = await fixture(html `<collection-browser></collection-browser>`);
15
+ el.selectedSort = 'title';
16
+ await el.updateComplete;
17
+ el.clearFilters();
18
+ expect(el.selectedFacets).to.equal(defaultSelectedFacets);
19
+ expect(el.selectedSort).to.equal('relevance');
20
+ expect(el.sortDirection).to.null;
21
+ expect(el.sortParam).to.null;
22
+ expect(el.selectedCreatorFilter).to.null;
23
+ expect(el.selectedTitleFilter).to.null;
24
+ });
25
+ it('filterBy creator with analytics', async () => {
26
+ const mockAnalyticsHandler = new MockAnalyticsHandler();
27
27
  const el = await fixture(html `<collection-browser .analyticsHandler=${mockAnalyticsHandler}>
28
- </collection-browser>`);
29
- el.searchContext = 'betaSearchService';
30
- el.selectedCreatorFilter = 'A';
31
- await el.updateComplete;
32
- expect(mockAnalyticsHandler.callCategory).to.equal('betaSearchService');
33
- expect(mockAnalyticsHandler.callAction).to.equal('filterByCreator');
34
- expect(mockAnalyticsHandler.callLabel).to.equal('start-A');
35
- el.clearFilters();
36
- await el.updateComplete;
37
- expect(el.selectedTitleFilter).to.null;
38
- expect(mockAnalyticsHandler.callCategory).to.equal('betaSearchService');
39
- expect(mockAnalyticsHandler.callAction).to.equal('filterByCreator');
40
- expect(mockAnalyticsHandler.callLabel).to.equal('clear-A');
41
- });
42
- it('filterBy title with analytics', async () => {
43
- const mockAnalyticsHandler = new MockAnalyticsHandler();
28
+ </collection-browser>`);
29
+ el.searchContext = 'betaSearchService';
30
+ el.selectedCreatorFilter = 'A';
31
+ await el.updateComplete;
32
+ expect(mockAnalyticsHandler.callCategory).to.equal('betaSearchService');
33
+ expect(mockAnalyticsHandler.callAction).to.equal('filterByCreator');
34
+ expect(mockAnalyticsHandler.callLabel).to.equal('start-A');
35
+ el.clearFilters();
36
+ await el.updateComplete;
37
+ expect(el.selectedTitleFilter).to.null;
38
+ expect(mockAnalyticsHandler.callCategory).to.equal('betaSearchService');
39
+ expect(mockAnalyticsHandler.callAction).to.equal('filterByCreator');
40
+ expect(mockAnalyticsHandler.callLabel).to.equal('clear-A');
41
+ });
42
+ it('filterBy title with analytics', async () => {
43
+ const mockAnalyticsHandler = new MockAnalyticsHandler();
44
44
  const el = await fixture(html `<collection-browser .analyticsHandler=${mockAnalyticsHandler}>
45
- </collection-browser>`);
46
- el.searchContext = 'beta-search-service';
47
- el.selectedSort = 'title';
48
- el.selectedTitleFilter = 'A';
49
- await el.updateComplete;
50
- expect(mockAnalyticsHandler.callCategory).to.equal('beta-search-service');
51
- expect(mockAnalyticsHandler.callAction).to.equal('filterByTitle');
52
- expect(mockAnalyticsHandler.callLabel).to.equal('start-A');
53
- el.clearFilters();
54
- await el.updateComplete;
55
- expect(el.selectedTitleFilter).to.null;
56
- expect(mockAnalyticsHandler.callCategory).to.equal('beta-search-service');
57
- expect(mockAnalyticsHandler.callAction).to.equal('filterByTitle');
58
- expect(mockAnalyticsHandler.callLabel).to.equal('clear-A');
59
- });
60
- it('selected facets with analytics - not negative facets', async () => {
61
- const mockAnalyticsHandler = new MockAnalyticsHandler();
62
- const mediaTypeBucket = { count: 123, state: 'selected' };
63
- const mockedSelectedFacets = {
64
- subject: {},
65
- lending: {},
66
- mediatype: { data: mediaTypeBucket },
67
- language: {},
68
- creator: {},
69
- collection: {},
70
- year: {},
71
- };
45
+ </collection-browser>`);
46
+ el.searchContext = 'beta-search-service';
47
+ el.selectedSort = 'title';
48
+ el.selectedTitleFilter = 'A';
49
+ await el.updateComplete;
50
+ expect(mockAnalyticsHandler.callCategory).to.equal('beta-search-service');
51
+ expect(mockAnalyticsHandler.callAction).to.equal('filterByTitle');
52
+ expect(mockAnalyticsHandler.callLabel).to.equal('start-A');
53
+ el.clearFilters();
54
+ await el.updateComplete;
55
+ expect(el.selectedTitleFilter).to.null;
56
+ expect(mockAnalyticsHandler.callCategory).to.equal('beta-search-service');
57
+ expect(mockAnalyticsHandler.callAction).to.equal('filterByTitle');
58
+ expect(mockAnalyticsHandler.callLabel).to.equal('clear-A');
59
+ });
60
+ it('selected facets with analytics - not negative facets', async () => {
61
+ const mockAnalyticsHandler = new MockAnalyticsHandler();
62
+ const mediaTypeBucket = { count: 123, state: 'selected' };
63
+ const mockedSelectedFacets = {
64
+ subject: {},
65
+ lending: {},
66
+ mediatype: { data: mediaTypeBucket },
67
+ language: {},
68
+ creator: {},
69
+ collection: {},
70
+ year: {},
71
+ };
72
72
  const el = await fixture(html `<collection-browser .analyticsHandler=${mockAnalyticsHandler}>
73
- </collection-browser>`);
74
- el.searchContext = 'search-service';
75
- el.selectedFacets = mockedSelectedFacets;
76
- await el.updateComplete;
77
- el.facetClickHandler('mediatype', true, false);
78
- expect(mockAnalyticsHandler.callCategory).to.equal('search-service');
79
- expect(mockAnalyticsHandler.callAction).to.equal('facetSelected');
80
- expect(mockAnalyticsHandler.callLabel).to.equal('mediatype');
81
- el.facetClickHandler('mediatype', false, false);
82
- expect(el.selectedFacets).to.equal(mockedSelectedFacets);
83
- expect(mockAnalyticsHandler.callCategory).to.equal('search-service');
84
- expect(mockAnalyticsHandler.callAction).to.equal('facetDeselected');
85
- expect(mockAnalyticsHandler.callLabel).to.equal('mediatype');
86
- });
87
- it('selected facets with analytics - negative facets', async () => {
88
- const mockAnalyticsHandler = new MockAnalyticsHandler();
89
- const mediaTypeBucket = { count: 123, state: 'selected' };
90
- const mockedSelectedFacets = {
91
- subject: {},
92
- lending: {},
93
- mediatype: { data: mediaTypeBucket },
94
- language: {},
95
- creator: {},
96
- collection: {},
97
- year: {},
98
- };
73
+ </collection-browser>`);
74
+ el.searchContext = 'search-service';
75
+ el.selectedFacets = mockedSelectedFacets;
76
+ await el.updateComplete;
77
+ el.facetClickHandler('mediatype', true, false);
78
+ expect(mockAnalyticsHandler.callCategory).to.equal('search-service');
79
+ expect(mockAnalyticsHandler.callAction).to.equal('facetSelected');
80
+ expect(mockAnalyticsHandler.callLabel).to.equal('mediatype');
81
+ el.facetClickHandler('mediatype', false, false);
82
+ expect(el.selectedFacets).to.equal(mockedSelectedFacets);
83
+ expect(mockAnalyticsHandler.callCategory).to.equal('search-service');
84
+ expect(mockAnalyticsHandler.callAction).to.equal('facetDeselected');
85
+ expect(mockAnalyticsHandler.callLabel).to.equal('mediatype');
86
+ });
87
+ it('selected facets with analytics - negative facets', async () => {
88
+ const mockAnalyticsHandler = new MockAnalyticsHandler();
89
+ const mediaTypeBucket = { count: 123, state: 'selected' };
90
+ const mockedSelectedFacets = {
91
+ subject: {},
92
+ lending: {},
93
+ mediatype: { data: mediaTypeBucket },
94
+ language: {},
95
+ creator: {},
96
+ collection: {},
97
+ year: {},
98
+ };
99
99
  const el = await fixture(html `<collection-browser .analyticsHandler=${mockAnalyticsHandler}>
100
- </collection-browser>`);
101
- el.searchContext = 'beta-search-service';
102
- el.selectedFacets = mockedSelectedFacets;
103
- await el.updateComplete;
104
- el.facetClickHandler('mediatype', true, true);
105
- expect(mockAnalyticsHandler.callCategory).to.equal('beta-search-service');
106
- expect(mockAnalyticsHandler.callAction).to.equal('facetNegativeSelected');
107
- expect(mockAnalyticsHandler.callLabel).to.equal('mediatype');
108
- el.facetClickHandler('mediatype', false, true);
109
- expect(el.selectedFacets).to.equal(mockedSelectedFacets);
110
- expect(mockAnalyticsHandler.callCategory).to.equal('beta-search-service');
111
- expect(mockAnalyticsHandler.callAction).to.equal('facetNegativeDeselected');
112
- expect(mockAnalyticsHandler.callLabel).to.equal('mediatype');
113
- });
114
- it('should render with a sort bar, facets, and infinite scroller', async () => {
115
- var _a, _b, _c;
116
- const el = await fixture(html `<collection-browser></collection-browser>`);
117
- el.baseQuery = 'hello';
118
- await el.updateComplete;
119
- const facets = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('collection-facets');
120
- const sortBar = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('sort-filter-bar');
121
- const infiniteScroller = (_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('infinite-scroller');
122
- expect(facets).to.exist;
123
- expect(sortBar).to.exist;
124
- expect(infiniteScroller).to.exist;
125
- });
126
- it('queries the search service when given a base query', async () => {
127
- var _a, _b, _c;
128
- const searchService = new MockSearchService();
100
+ </collection-browser>`);
101
+ el.searchContext = 'beta-search-service';
102
+ el.selectedFacets = mockedSelectedFacets;
103
+ await el.updateComplete;
104
+ el.facetClickHandler('mediatype', true, true);
105
+ expect(mockAnalyticsHandler.callCategory).to.equal('beta-search-service');
106
+ expect(mockAnalyticsHandler.callAction).to.equal('facetNegativeSelected');
107
+ expect(mockAnalyticsHandler.callLabel).to.equal('mediatype');
108
+ el.facetClickHandler('mediatype', false, true);
109
+ expect(el.selectedFacets).to.equal(mockedSelectedFacets);
110
+ expect(mockAnalyticsHandler.callCategory).to.equal('beta-search-service');
111
+ expect(mockAnalyticsHandler.callAction).to.equal('facetNegativeDeselected');
112
+ expect(mockAnalyticsHandler.callLabel).to.equal('mediatype');
113
+ });
114
+ it('should render with a sort bar, facets, and infinite scroller', async () => {
115
+ var _a, _b, _c;
116
+ const el = await fixture(html `<collection-browser></collection-browser>`);
117
+ el.baseQuery = 'hello';
118
+ await el.updateComplete;
119
+ const facets = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('collection-facets');
120
+ const sortBar = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('sort-filter-bar');
121
+ const infiniteScroller = (_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('infinite-scroller');
122
+ expect(facets).to.exist;
123
+ expect(sortBar).to.exist;
124
+ expect(infiniteScroller).to.exist;
125
+ });
126
+ it('queries the search service when given a base query', async () => {
127
+ var _a, _b, _c;
128
+ const searchService = new MockSearchService();
129
129
  const el = await fixture(html `<collection-browser .searchService=${searchService}>
130
- </collection-browser>`);
131
- el.baseQuery = 'collection:foo';
132
- await el.updateComplete;
133
- expect((_a = searchService.searchParams) === null || _a === void 0 ? void 0 : _a.query).to.equal('collection:foo');
134
- 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');
135
- });
136
- it('queries the search service with a metadata search', async () => {
137
- var _a, _b, _c;
138
- const searchService = new MockSearchService();
130
+ </collection-browser>`);
131
+ el.baseQuery = 'collection:foo';
132
+ await el.updateComplete;
133
+ expect((_a = searchService.searchParams) === null || _a === void 0 ? void 0 : _a.query).to.equal('collection:foo');
134
+ 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');
135
+ });
136
+ it('queries the search service with a metadata search', async () => {
137
+ var _a, _b, _c;
138
+ const searchService = new MockSearchService();
139
139
  const el = await fixture(html ` <collection-browser
140
140
  .searchService=${searchService}
141
141
  .searchType=${SearchType.METADATA}
142
142
  >
143
- </collection-browser>`);
144
- el.baseQuery = 'collection:foo';
145
- await el.updateComplete;
146
- expect((_a = searchService.searchParams) === null || _a === void 0 ? void 0 : _a.query).to.equal('collection:foo');
147
- expect(searchService.searchType).to.equal(SearchType.METADATA);
148
- 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');
149
- });
150
- it('queries the search service with a fulltext search', async () => {
151
- var _a, _b, _c;
152
- const searchService = new MockSearchService();
143
+ </collection-browser>`);
144
+ el.baseQuery = 'collection:foo';
145
+ await el.updateComplete;
146
+ expect((_a = searchService.searchParams) === null || _a === void 0 ? void 0 : _a.query).to.equal('collection:foo');
147
+ expect(searchService.searchType).to.equal(SearchType.METADATA);
148
+ 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');
149
+ });
150
+ it('queries the search service with a fulltext search', async () => {
151
+ var _a, _b, _c;
152
+ const searchService = new MockSearchService();
153
153
  const el = await fixture(html ` <collection-browser
154
154
  .searchService=${searchService}
155
155
  .searchType=${SearchType.FULLTEXT}
156
156
  >
157
- </collection-browser>`);
158
- el.baseQuery = 'collection:foo';
159
- await el.updateComplete;
160
- expect((_a = searchService.searchParams) === null || _a === void 0 ? void 0 : _a.query).to.equal('collection:foo');
161
- expect(searchService.searchType).to.equal(SearchType.FULLTEXT);
162
- 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');
163
- });
164
- it('queries for collection names after a fetch', async () => {
165
- const searchService = new MockSearchService();
166
- const collectionNameCache = new MockCollectionNameCache();
157
+ </collection-browser>`);
158
+ el.baseQuery = 'collection:foo';
159
+ await el.updateComplete;
160
+ expect((_a = searchService.searchParams) === null || _a === void 0 ? void 0 : _a.query).to.equal('collection:foo');
161
+ expect(searchService.searchType).to.equal(SearchType.FULLTEXT);
162
+ 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');
163
+ });
164
+ it('can search on demand if only search type has changed', async () => {
165
+ const searchService = new MockSearchService();
166
+ const el = await fixture(html `<collection-browser
167
+ .searchService=${searchService}
168
+ .searchType=${SearchType.METADATA}
169
+ ></collection-browser>`);
170
+ el.baseQuery = 'collection:foo';
171
+ await el.updateComplete;
172
+ el.searchType = SearchType.FULLTEXT;
173
+ await el.updateComplete;
174
+ // Haven't performed the search yet
175
+ expect(searchService.searchType).to.equal(SearchType.METADATA);
176
+ el.requestSearch();
177
+ expect(searchService.searchType).to.equal(SearchType.FULLTEXT);
178
+ });
179
+ it('queries for collection names after a fetch', async () => {
180
+ const searchService = new MockSearchService();
181
+ const collectionNameCache = new MockCollectionNameCache();
167
182
  const el = await fixture(html `<collection-browser
168
183
  .searchService=${searchService}
169
184
  .collectionNameCache=${collectionNameCache}
170
185
  >
171
- </collection-browser>`);
172
- el.baseQuery = 'blahblah';
173
- await el.updateComplete;
174
- expect(collectionNameCache.preloadIdentifiersRequested).to.deep.equal([
175
- 'foo',
176
- 'bar',
177
- 'baz',
178
- 'boop',
179
- ]);
180
- });
181
- it('keeps search results from fetch if no change to query or sort param', async () => {
182
- const resultsSpy = sinon.spy();
183
- const searchService = new MockSearchService({
184
- asyncResponse: true,
185
- resultsSpy,
186
- });
186
+ </collection-browser>`);
187
+ el.baseQuery = 'collection:foo';
188
+ await el.updateComplete;
189
+ expect(collectionNameCache.preloadIdentifiersRequested).to.deep.equal([
190
+ 'foo',
191
+ 'bar',
192
+ 'baz',
193
+ 'boop',
194
+ ]);
195
+ });
196
+ it('keeps search results from fetch if no change to query or sort param', async () => {
197
+ const resultsSpy = sinon.spy();
198
+ const searchService = new MockSearchService({
199
+ asyncResponse: true,
200
+ resultsSpy,
201
+ });
187
202
  const el = await fixture(html `<collection-browser .searchService=${searchService}>
188
- </collection-browser>`);
189
- el.baseQuery = 'with-sort';
190
- el.sortParam = { field: 'foo', direction: 'asc' };
191
- await el.updateComplete;
192
- await el.fetchPage(2);
193
- // If there is no change to the query or sort param during the fetch, the results
194
- // should be read.
195
- expect(resultsSpy.callCount).to.be.greaterThanOrEqual(1);
196
- });
197
- it('discards obsolete search results if sort params changed before arrival', async () => {
198
- const resultsSpy = sinon.spy();
199
- const searchService = new MockSearchService({
200
- asyncResponse: true,
201
- resultsSpy,
202
- });
203
+ </collection-browser>`);
204
+ el.baseQuery = 'with-sort';
205
+ el.sortParam = { field: 'foo', direction: 'asc' };
206
+ await el.updateComplete;
207
+ await el.fetchPage(2);
208
+ // If there is no change to the query or sort param during the fetch, the results
209
+ // should be read.
210
+ expect(resultsSpy.callCount).to.be.greaterThanOrEqual(1);
211
+ });
212
+ it('discards obsolete search results if sort params changed before arrival', async () => {
213
+ const resultsSpy = sinon.spy();
214
+ const searchService = new MockSearchService({
215
+ asyncResponse: true,
216
+ resultsSpy,
217
+ });
203
218
  const el = await fixture(html `<collection-browser .searchService=${searchService}>
204
- </collection-browser>`);
205
- el.baseQuery = 'with-sort';
206
- el.sortParam = { field: 'foo', direction: 'asc' };
207
- await el.updateComplete;
208
- const fetchPromise = el.fetchPage(2);
209
- el.sortParam = { field: 'foo', direction: 'desc' };
210
- await fetchPromise;
211
- // If the different sort param causes the results to be discarded,
212
- // the results array should never be read.
213
- expect(resultsSpy.callCount).to.equal(0);
214
- });
215
- it('discards obsolete search results if sort param added before arrival', async () => {
216
- const resultsSpy = sinon.spy();
217
- const searchService = new MockSearchService({
218
- asyncResponse: true,
219
- resultsSpy,
220
- });
219
+ </collection-browser>`);
220
+ el.baseQuery = 'with-sort';
221
+ el.sortParam = { field: 'foo', direction: 'asc' };
222
+ await el.updateComplete;
223
+ const fetchPromise = el.fetchPage(2);
224
+ el.sortParam = { field: 'foo', direction: 'desc' };
225
+ await fetchPromise;
226
+ // If the different sort param causes the results to be discarded,
227
+ // the results array should never be read.
228
+ expect(resultsSpy.callCount).to.equal(0);
229
+ });
230
+ it('discards obsolete search results if sort param added before arrival', async () => {
231
+ const resultsSpy = sinon.spy();
232
+ const searchService = new MockSearchService({
233
+ asyncResponse: true,
234
+ resultsSpy,
235
+ });
221
236
  const el = await fixture(html `<collection-browser .searchService=${searchService}>
222
- </collection-browser>`);
223
- el.baseQuery = 'single-result';
224
- await el.updateComplete;
225
- const fetchPromise = el.fetchPage(2);
226
- el.sortParam = { field: 'foo', direction: 'asc' };
227
- await fetchPromise;
228
- // If the different sort param causes the results to be discarded,
229
- // the results array should never be read.
230
- expect(resultsSpy.callCount).to.equal(0);
231
- });
232
- it('discards obsolete search results if sort param cleared before arrival', async () => {
233
- const resultsSpy = sinon.spy();
234
- const searchService = new MockSearchService({
235
- asyncResponse: true,
236
- resultsSpy,
237
- });
237
+ </collection-browser>`);
238
+ el.baseQuery = 'single-result';
239
+ await el.updateComplete;
240
+ const fetchPromise = el.fetchPage(2);
241
+ el.sortParam = { field: 'foo', direction: 'asc' };
242
+ await fetchPromise;
243
+ // If the different sort param causes the results to be discarded,
244
+ // the results array should never be read.
245
+ expect(resultsSpy.callCount).to.equal(0);
246
+ });
247
+ it('discards obsolete search results if sort param cleared before arrival', async () => {
248
+ const resultsSpy = sinon.spy();
249
+ const searchService = new MockSearchService({
250
+ asyncResponse: true,
251
+ resultsSpy,
252
+ });
238
253
  const el = await fixture(html `<collection-browser .searchService=${searchService}>
239
- </collection-browser>`);
240
- el.baseQuery = 'with-sort';
241
- await el.updateComplete;
242
- const fetchPromise = el.fetchPage(2);
243
- el.sortParam = null;
244
- await fetchPromise;
245
- // If the different sort param causes the results to be discarded,
246
- // the results array should never be read.
247
- expect(resultsSpy.callCount).to.equal(0);
248
- });
249
- it('sets sort properties when user changes sort', async () => {
250
- var _a, _b, _c, _d;
251
- const el = await fixture(html `<collection-browser></collection-browser>`);
252
- expect(el.selectedSort).to.equal(SortField.relevance);
253
- el.baseQuery = 'foo';
254
- await el.updateComplete;
255
- const sortBar = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('sort-filter-bar');
256
- const sortSelector = (_b = sortBar === null || sortBar === void 0 ? void 0 : sortBar.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#desktop-sort-selector');
257
- expect(sortSelector).to.exist;
258
- // Click the title sorter
259
- (_d = (_c = [...sortSelector === null || sortSelector === void 0 ? void 0 : sortSelector.children] // tsc doesn't know children is iterable
260
- .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();
261
- await el.updateComplete;
262
- expect(el.selectedSort).to.equal(SortField.title);
263
- });
264
- it('scrolls to page', async () => {
265
- var _a;
266
- const el = await fixture(html `<collection-browser></collection-browser>`);
267
- const infiniteScroller = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('infinite-scroller');
268
- expect(infiniteScroller).to.exist;
269
- const oldScrollToCell = infiniteScroller.scrollToCell;
270
- const spy = sinon.spy();
271
- infiniteScroller.scrollToCell = spy;
272
- el.goToPage(1);
273
- // Give it a second to scroll
274
- await new Promise(res => {
275
- setTimeout(res, 1000);
276
- });
277
- expect(spy.callCount).to.equal(1);
278
- infiniteScroller.scrollToCell = oldScrollToCell;
279
- });
280
- it('refreshes when certain properties change - with some analytics event sampling', async () => {
281
- var _a;
282
- const mockAnalyticsHandler = new MockAnalyticsHandler();
283
- const searchService = new MockSearchService();
284
- const collectionNameCache = new MockCollectionNameCache();
254
+ </collection-browser>`);
255
+ el.baseQuery = 'with-sort';
256
+ await el.updateComplete;
257
+ const fetchPromise = el.fetchPage(2);
258
+ el.sortParam = null;
259
+ await fetchPromise;
260
+ // If the different sort param causes the results to be discarded,
261
+ // the results array should never be read.
262
+ expect(resultsSpy.callCount).to.equal(0);
263
+ });
264
+ it('sets sort properties when user changes sort', async () => {
265
+ var _a, _b, _c, _d;
266
+ const el = await fixture(html `<collection-browser></collection-browser>`);
267
+ expect(el.selectedSort).to.equal(SortField.relevance);
268
+ el.baseQuery = 'foo';
269
+ await el.updateComplete;
270
+ const sortBar = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('sort-filter-bar');
271
+ const sortSelector = (_b = sortBar === null || sortBar === void 0 ? void 0 : sortBar.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#desktop-sort-selector');
272
+ expect(sortSelector).to.exist;
273
+ // Click the title sorter
274
+ (_d = (_c = [...sortSelector === null || sortSelector === void 0 ? void 0 : sortSelector.children] // tsc doesn't know children is iterable
275
+ .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();
276
+ await el.updateComplete;
277
+ expect(el.selectedSort).to.equal(SortField.title);
278
+ });
279
+ it('scrolls to page', async () => {
280
+ var _a;
281
+ const el = await fixture(html `<collection-browser></collection-browser>`);
282
+ const infiniteScroller = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('infinite-scroller');
283
+ expect(infiniteScroller).to.exist;
284
+ const oldScrollToCell = infiniteScroller.scrollToCell;
285
+ const spy = sinon.spy();
286
+ infiniteScroller.scrollToCell = spy;
287
+ el.goToPage(1);
288
+ // Give it a second to scroll
289
+ await new Promise(res => {
290
+ setTimeout(res, 1000);
291
+ });
292
+ expect(spy.callCount).to.equal(1);
293
+ infiniteScroller.scrollToCell = oldScrollToCell;
294
+ });
295
+ it('refreshes when certain properties change - with some analytics event sampling', async () => {
296
+ var _a;
297
+ const mockAnalyticsHandler = new MockAnalyticsHandler();
298
+ const searchService = new MockSearchService();
299
+ const collectionNameCache = new MockCollectionNameCache();
285
300
  const el = await fixture(html `<collection-browser
286
301
  .analyticsHandler=${mockAnalyticsHandler}
287
302
  .searchService=${searchService}
288
303
  .collectionNameCache=${collectionNameCache}
289
- ></collection-browser>`);
290
- const infiniteScrollerRefreshSpy = sinon.spy();
291
- const infiniteScroller = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('infinite-scroller');
292
- infiniteScroller.reload = infiniteScrollerRefreshSpy;
293
- expect(infiniteScrollerRefreshSpy.called).to.be.false;
294
- expect(infiniteScrollerRefreshSpy.callCount).to.equal(0);
295
- // testing: `loggedIn`
296
- el.loggedIn = true;
297
- await el.updateComplete;
298
- expect(infiniteScrollerRefreshSpy.called).to.be.true;
299
- expect(infiniteScrollerRefreshSpy.callCount).to.equal(1);
300
- el.loggedIn = false;
301
- await el.updateComplete;
302
- expect(infiniteScrollerRefreshSpy.callCount).to.equal(2);
303
- // testing: `displayMode`
304
- el.displayMode = 'list-compact';
305
- el.searchContext = 'beta-search';
306
- await el.updateComplete;
307
- expect(infiniteScrollerRefreshSpy.callCount).to.equal(3);
308
- expect(mockAnalyticsHandler.callCategory).to.equal('beta-search');
309
- expect(mockAnalyticsHandler.callAction).to.equal('displayMode');
310
- expect(mockAnalyticsHandler.callLabel).to.equal('list-compact');
311
- el.displayMode = 'list-detail';
312
- await el.updateComplete;
313
- expect(infiniteScrollerRefreshSpy.callCount).to.equal(4);
314
- expect(mockAnalyticsHandler.callCategory).to.equal('beta-search');
315
- expect(mockAnalyticsHandler.callAction).to.equal('displayMode');
316
- expect(mockAnalyticsHandler.callLabel).to.equal('list-detail');
317
- // testing: `baseNavigationUrl`
318
- el.baseNavigationUrl = 'https://funtestsite.com';
319
- await el.updateComplete;
320
- expect(infiniteScrollerRefreshSpy.callCount).to.equal(5);
321
- // testing: `baseImageUrl`
322
- el.baseImageUrl = 'https://funtestsiteforimages.com';
323
- await el.updateComplete;
324
- expect(infiniteScrollerRefreshSpy.callCount).to.equal(6);
325
- });
326
- it('query the search service for single result', async () => {
327
- var _a, _b;
328
- const searchService = new MockSearchService();
304
+ ></collection-browser>`);
305
+ const infiniteScrollerRefreshSpy = sinon.spy();
306
+ const infiniteScroller = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('infinite-scroller');
307
+ infiniteScroller.reload = infiniteScrollerRefreshSpy;
308
+ expect(infiniteScrollerRefreshSpy.called).to.be.false;
309
+ expect(infiniteScrollerRefreshSpy.callCount).to.equal(0);
310
+ // testing: `loggedIn`
311
+ el.loggedIn = true;
312
+ await el.updateComplete;
313
+ expect(infiniteScrollerRefreshSpy.called).to.be.true;
314
+ expect(infiniteScrollerRefreshSpy.callCount).to.equal(1);
315
+ el.loggedIn = false;
316
+ await el.updateComplete;
317
+ expect(infiniteScrollerRefreshSpy.callCount).to.equal(2);
318
+ // testing: `displayMode`
319
+ el.displayMode = 'list-compact';
320
+ el.searchContext = 'beta-search';
321
+ await el.updateComplete;
322
+ expect(infiniteScrollerRefreshSpy.callCount).to.equal(3);
323
+ expect(mockAnalyticsHandler.callCategory).to.equal('beta-search');
324
+ expect(mockAnalyticsHandler.callAction).to.equal('displayMode');
325
+ expect(mockAnalyticsHandler.callLabel).to.equal('list-compact');
326
+ el.displayMode = 'list-detail';
327
+ await el.updateComplete;
328
+ expect(infiniteScrollerRefreshSpy.callCount).to.equal(4);
329
+ expect(mockAnalyticsHandler.callCategory).to.equal('beta-search');
330
+ expect(mockAnalyticsHandler.callAction).to.equal('displayMode');
331
+ expect(mockAnalyticsHandler.callLabel).to.equal('list-detail');
332
+ // testing: `baseNavigationUrl`
333
+ el.baseNavigationUrl = 'https://funtestsite.com';
334
+ await el.updateComplete;
335
+ expect(infiniteScrollerRefreshSpy.callCount).to.equal(5);
336
+ // testing: `baseImageUrl`
337
+ el.baseImageUrl = 'https://funtestsiteforimages.com';
338
+ await el.updateComplete;
339
+ expect(infiniteScrollerRefreshSpy.callCount).to.equal(6);
340
+ });
341
+ it('query the search service for single result', async () => {
342
+ var _a, _b;
343
+ const searchService = new MockSearchService();
329
344
  const el = await fixture(html `<collection-browser .searchService=${searchService}>
330
- </collection-browser>`);
331
- el.baseQuery = 'single-result';
332
- await el.updateComplete;
333
- 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');
334
- });
335
- it('`searchContext` prop helps describe where component is being used', async () => {
336
- const el = await fixture(html `<collection-browser></collection-browser>`);
337
- expect(el.searchContext).to.equal(analyticsCategories.default);
338
- el.searchContext = 'unicorn-search';
339
- await el.updateComplete;
340
- expect(el.searchContext).to.equal('unicorn-search');
341
- // property is reflected as attribute
342
- expect(el.getAttribute('searchcontext')).to.equal('unicorn-search');
343
- });
344
- });
345
+ </collection-browser>`);
346
+ el.baseQuery = 'single-result';
347
+ await el.updateComplete;
348
+ 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');
349
+ });
350
+ it('`searchContext` prop helps describe where component is being used', async () => {
351
+ const el = await fixture(html `<collection-browser></collection-browser>`);
352
+ expect(el.searchContext).to.equal(analyticsCategories.default);
353
+ el.searchContext = 'unicorn-search';
354
+ await el.updateComplete;
355
+ expect(el.searchContext).to.equal('unicorn-search');
356
+ // property is reflected as attribute
357
+ expect(el.getAttribute('searchcontext')).to.equal('unicorn-search');
358
+ });
359
+ });
345
360
  //# sourceMappingURL=collection-browser.test.js.map