@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,424 +1,424 @@
1
- /* eslint-disable import/no-duplicates */
2
- import { expect, fixture } from '@open-wc/testing';
3
- import sinon from 'sinon';
4
- import { html } from 'lit';
5
- import { Aggregation } from '@internetarchive/search-service';
6
- import { ModalManager, } from '@internetarchive/modal-manager';
7
- import '@internetarchive/modal-manager';
8
- import '../src/collection-facets';
9
- import { LanguageCodeHandler, } from '../src/language-code-handler/language-code-handler';
10
- describe('Collection Facets', () => {
11
- it('has loader', async () => {
12
- var _a, _b, _c, _d;
13
- const el = await fixture(html `<collection-facets ?facetsLoading=${true}></collection-facets>`);
14
- expect((_b = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#container')) === null || _b === void 0 ? void 0 : _b.classList.contains('loading')).to.be.true;
15
- el.facetsLoading = false;
16
- await el.updateComplete;
17
- expect((_d = (_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('#container')) === null || _d === void 0 ? void 0 : _d.classList.contains('loading')).to.be.false;
18
- });
19
- it('renders aggregations as facets', async () => {
20
- var _a, _b, _c, _d, _e;
21
- const el = await fixture(html `<collection-facets></collection-facets>`);
22
- const aggs = {
23
- subject: new Aggregation({
24
- buckets: [
25
- {
26
- key: 'foo',
27
- doc_count: 5,
28
- },
29
- ],
30
- }),
31
- };
32
- el.aggregations = aggs;
33
- await el.updateComplete;
34
- const facetGroups = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelectorAll('.facet-group');
35
- expect(facetGroups === null || facetGroups === void 0 ? void 0 : facetGroups.length).to.equal(1);
36
- const titleFacetGroup = facetGroups === null || facetGroups === void 0 ? void 0 : facetGroups[0];
37
- const facetGroupHeader = titleFacetGroup === null || titleFacetGroup === void 0 ? void 0 : titleFacetGroup.querySelector('h1');
38
- expect((_b = facetGroupHeader === null || facetGroupHeader === void 0 ? void 0 : facetGroupHeader.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.equal('Subject');
39
- const titleFacetRow = (_d = (_c = titleFacetGroup === null || titleFacetGroup === void 0 ? void 0 : titleFacetGroup.querySelector('facets-template')) === null || _c === void 0 ? void 0 : _c.shadowRoot) === null || _d === void 0 ? void 0 : _d.querySelector('.facet-row');
40
- console.log(titleFacetGroup === null || titleFacetGroup === void 0 ? void 0 : titleFacetGroup.querySelector('facets-template'));
41
- expect((_e = titleFacetRow === null || titleFacetRow === void 0 ? void 0 : titleFacetRow.textContent) === null || _e === void 0 ? void 0 : _e.trim()).to.satisfy((text) => /^foo\s*5$/.test(text));
42
- });
43
- it('renders multiple aggregation types', async () => {
44
- var _a;
45
- const el = await fixture(html `<collection-facets></collection-facets>`);
46
- const aggs = {
47
- subject: new Aggregation({
48
- buckets: [
49
- {
50
- key: 'foo',
51
- doc_count: 5,
52
- },
53
- ],
54
- }),
55
- mediatype: new Aggregation({
56
- buckets: [
57
- {
58
- key: 'bar',
59
- doc_count: 10,
60
- },
61
- ],
62
- }),
63
- };
64
- el.aggregations = aggs;
65
- await el.updateComplete;
66
- const facetGroups = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelectorAll('.facet-group');
67
- expect(facetGroups === null || facetGroups === void 0 ? void 0 : facetGroups.length).to.equal(2);
68
- });
69
- it('renders collection facets as links', async () => {
70
- var _a, _b, _c, _d;
71
- const el = await fixture(html `<collection-facets></collection-facets>`);
72
- const aggs = {
73
- collection: new Aggregation({
74
- buckets: [
75
- {
76
- key: 'foo',
77
- doc_count: 5,
78
- },
79
- ],
80
- }),
81
- };
82
- el.aggregations = aggs;
83
- await el.updateComplete;
84
- const collectionName = (_c = (_b = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('facets-template')) === null || _b === void 0 ? void 0 : _b.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('async-collection-name');
85
- expect(collectionName === null || collectionName === void 0 ? void 0 : collectionName.parentElement).to.be.instanceOf(HTMLAnchorElement);
86
- expect((_d = collectionName === null || collectionName === void 0 ? void 0 : collectionName.parentElement) === null || _d === void 0 ? void 0 : _d.getAttribute('href')).to.equal('/details/foo');
87
- });
88
- it('renders non-collection facets without links', async () => {
89
- var _a, _b, _c;
90
- const el = await fixture(html `<collection-facets></collection-facets>`);
91
- const aggs = {
92
- subject: new Aggregation({
93
- buckets: [
94
- {
95
- key: 'foo',
96
- doc_count: 5,
97
- },
98
- ],
99
- }),
100
- };
101
- el.aggregations = aggs;
102
- await el.updateComplete;
103
- const collectionName = (_c = (_b = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('facets-template')) === null || _b === void 0 ? void 0 : _b.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('async-collection-name');
104
- expect(collectionName === null || collectionName === void 0 ? void 0 : collectionName.parentElement).to.not.be.instanceOf(HTMLAnchorElement);
105
- });
106
- it('renders language facets with their human-readable names', async () => {
107
- var _a, _b, _c;
108
- const el = await fixture(html `<collection-facets></collection-facets>`);
109
- const languageCodeHandler = new LanguageCodeHandler();
110
- const aggs = {
111
- language: new Aggregation({
112
- buckets: [
113
- {
114
- key: 'English',
115
- doc_count: 3,
116
- },
117
- ],
118
- }),
119
- };
120
- el.languageCodeHandler = languageCodeHandler;
121
- el.aggregations = aggs;
122
- await el.updateComplete;
123
- const facetsTemplate = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('facets-template');
124
- const languageTitle = (_b = facetsTemplate === null || facetsTemplate === void 0 ? void 0 : facetsTemplate.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.facet-title');
125
- expect((_c = languageTitle === null || languageTitle === void 0 ? void 0 : languageTitle.textContent) === null || _c === void 0 ? void 0 : _c.trim()).to.equal('English');
126
- });
127
- it('renders selected/negative language facets with human-readable names', async () => {
128
- var _a, _b, _c;
129
- const el = await fixture(html `<collection-facets></collection-facets>`);
130
- const languageCodeHandler = new LanguageCodeHandler();
131
- const selectedFacets = {
132
- subject: {},
133
- lending: {},
134
- mediatype: {},
135
- language: {
136
- en: {
137
- key: 'en',
138
- count: 5,
139
- state: 'selected',
140
- },
141
- },
142
- creator: {},
143
- collection: {},
144
- year: {},
145
- };
146
- el.languageCodeHandler = languageCodeHandler;
147
- el.selectedFacets = selectedFacets;
148
- await el.updateComplete;
149
- const facetsTemplate = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('facets-template');
150
- const languageTitle = (_b = facetsTemplate === null || facetsTemplate === void 0 ? void 0 : facetsTemplate.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.facet-title');
151
- expect((_c = languageTitle === null || languageTitle === void 0 ? void 0 : languageTitle.textContent) === null || _c === void 0 ? void 0 : _c.trim()).to.equal('English');
152
- });
153
- it('renders lending facets with human-readable names', async () => {
154
- var _a, _b, _c, _d, _e;
155
- const el = await fixture(html `<collection-facets></collection-facets>`);
156
- const aggs = {
157
- lending: new Aggregation({
158
- buckets: [
159
- {
160
- key: 'is_lendable',
161
- doc_count: 3,
162
- },
163
- {
164
- key: 'available_to_borrow',
165
- doc_count: 2,
166
- },
167
- {
168
- key: 'is_readable',
169
- doc_count: 1,
170
- },
171
- ],
172
- }),
173
- };
174
- el.aggregations = aggs;
175
- await el.updateComplete;
176
- const facetsTemplate = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('facets-template');
177
- const lendingTitles = (_b = facetsTemplate === null || facetsTemplate === void 0 ? void 0 : facetsTemplate.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelectorAll('.facet-title');
178
- expect(lendingTitles === null || lendingTitles === void 0 ? void 0 : lendingTitles.length).to.equal(3);
179
- expect((_c = lendingTitles === null || lendingTitles === void 0 ? void 0 : lendingTitles.item(0).textContent) === null || _c === void 0 ? void 0 : _c.trim()).to.equal('Lending Library');
180
- expect((_d = lendingTitles === null || lendingTitles === void 0 ? void 0 : lendingTitles.item(1).textContent) === null || _d === void 0 ? void 0 : _d.trim()).to.equal('Borrow 14 Days');
181
- expect((_e = lendingTitles === null || lendingTitles === void 0 ? void 0 : lendingTitles.item(2).textContent) === null || _e === void 0 ? void 0 : _e.trim()).to.equal('Always Available');
182
- });
183
- it('renders selected/negative lending facets with human-readable names', async () => {
184
- var _a, _b, _c, _d, _e;
185
- const el = await fixture(html `<collection-facets></collection-facets>`);
186
- const selectedFacets = {
187
- subject: {},
188
- lending: {
189
- is_lendable: {
190
- key: 'is_lendable',
191
- count: 5,
192
- state: 'selected',
193
- },
194
- available_to_borrow: {
195
- key: 'available_to_borrow',
196
- count: 4,
197
- state: 'selected',
198
- },
199
- is_readable: {
200
- key: 'is_readable',
201
- count: 3,
202
- state: 'hidden',
203
- },
204
- },
205
- mediatype: {},
206
- language: {},
207
- creator: {},
208
- collection: {},
209
- year: {},
210
- };
211
- el.selectedFacets = selectedFacets;
212
- await el.updateComplete;
213
- const facetsTemplate = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('facets-template');
214
- const lendingTitles = (_b = facetsTemplate === null || facetsTemplate === void 0 ? void 0 : facetsTemplate.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelectorAll('.facet-title');
215
- expect(lendingTitles === null || lendingTitles === void 0 ? void 0 : lendingTitles.length).to.equal(3);
216
- expect((_c = lendingTitles === null || lendingTitles === void 0 ? void 0 : lendingTitles.item(0).textContent) === null || _c === void 0 ? void 0 : _c.trim()).to.equal('Lending Library');
217
- expect((_d = lendingTitles === null || lendingTitles === void 0 ? void 0 : lendingTitles.item(1).textContent) === null || _d === void 0 ? void 0 : _d.trim()).to.equal('Borrow 14 Days');
218
- expect((_e = lendingTitles === null || lendingTitles === void 0 ? void 0 : lendingTitles.item(2).textContent) === null || _e === void 0 ? void 0 : _e.trim()).to.equal('Always Available');
219
- });
220
- it('only renders lending facets for is_lendable, available_to_borrow, and is_readable', async () => {
221
- var _a, _b, _c, _d, _e;
222
- const el = await fixture(html `<collection-facets></collection-facets>`);
223
- const aggs = {
224
- lending: new Aggregation({
225
- buckets: [
226
- {
227
- key: 'is_lendable',
228
- doc_count: 5,
229
- },
230
- {
231
- key: 'is_borrowable',
232
- doc_count: 4,
233
- },
234
- {
235
- key: 'available_to_borrow',
236
- doc_count: 5,
237
- },
238
- {
239
- key: 'is_browsable',
240
- doc_count: 4,
241
- },
242
- {
243
- key: 'available_to_browse',
244
- doc_count: 5,
245
- },
246
- {
247
- key: 'is_readable',
248
- doc_count: 4,
249
- },
250
- {
251
- key: 'available_to_waitlist',
252
- doc_count: 5,
253
- },
254
- ],
255
- }),
256
- };
257
- el.aggregations = aggs;
258
- await el.updateComplete;
259
- const facetsTemplate = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('facets-template');
260
- const lendingTitles = (_b = facetsTemplate === null || facetsTemplate === void 0 ? void 0 : facetsTemplate.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelectorAll('.facet-title');
261
- expect(lendingTitles === null || lendingTitles === void 0 ? void 0 : lendingTitles.length).to.equal(3);
262
- expect((_c = lendingTitles === null || lendingTitles === void 0 ? void 0 : lendingTitles.item(0).textContent) === null || _c === void 0 ? void 0 : _c.trim()).to.equal('Lending Library');
263
- expect((_d = lendingTitles === null || lendingTitles === void 0 ? void 0 : lendingTitles.item(1).textContent) === null || _d === void 0 ? void 0 : _d.trim()).to.equal('Borrow 14 Days');
264
- expect((_e = lendingTitles === null || lendingTitles === void 0 ? void 0 : lendingTitles.item(2).textContent) === null || _e === void 0 ? void 0 : _e.trim()).to.equal('Always Available');
265
- });
266
- it('does not render a More... link for lending facets', async () => {
267
- var _a;
268
- const el = await fixture(html `<collection-facets></collection-facets>`);
269
- const aggs = {
270
- lending: new Aggregation({
271
- buckets: [
272
- {
273
- key: 'is_lendable',
274
- doc_count: 5,
275
- },
276
- {
277
- key: 'is_borrowable',
278
- doc_count: 4,
279
- },
280
- {
281
- key: 'available_to_borrow',
282
- doc_count: 5,
283
- },
284
- {
285
- key: 'is_browsable',
286
- doc_count: 4,
287
- },
288
- {
289
- key: 'available_to_browse',
290
- doc_count: 5,
291
- },
292
- {
293
- key: 'is_readable',
294
- doc_count: 4,
295
- },
296
- {
297
- key: 'available_to_waitlist',
298
- doc_count: 5,
299
- },
300
- ],
301
- }),
302
- };
303
- el.aggregations = aggs;
304
- await el.updateComplete;
305
- const moreLink = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.more-link');
306
- expect(moreLink).not.to.exist;
307
- });
308
- describe('More Facets', () => {
309
- it('Does not render < allowedFacetCount', async () => {
310
- var _a;
311
- const el = await fixture(html `<collection-facets></collection-facets>`);
312
- const aggs = {
313
- subject: new Aggregation({
314
- buckets: [
315
- {
316
- key: 'foo',
317
- doc_count: 5,
318
- },
319
- ],
320
- }),
321
- };
322
- el.aggregations = aggs;
323
- await el.updateComplete;
324
- const moreLink = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.more-link');
325
- expect(moreLink).to.be.null;
326
- });
327
- it('renders sorting icons', async () => {
328
- var _a;
329
- const el = await fixture(html `<collection-facets></collection-facets>`);
330
- const aggs = {
331
- subject: new Aggregation({
332
- buckets: [
333
- {
334
- key: 'foo',
335
- doc_count: 5,
336
- },
337
- ],
338
- }),
339
- };
340
- el.aggregations = aggs;
341
- await el.updateComplete;
342
- const sortingIcon = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.sorting-icon');
343
- expect(sortingIcon).to.exist;
344
- });
345
- it('does not render sorting icon for lending facets', async () => {
346
- var _a;
347
- const el = await fixture(html `<collection-facets></collection-facets>`);
348
- const aggs = {
349
- lending: new Aggregation({
350
- buckets: [
351
- {
352
- key: 'is_readable',
353
- doc_count: 5,
354
- },
355
- ],
356
- }),
357
- };
358
- el.aggregations = aggs;
359
- await el.updateComplete;
360
- const sortingIcon = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.sorting-icon');
361
- expect(sortingIcon).not.to.exist;
362
- });
363
- it('Render More Facets', async () => {
364
- var _a, _b;
365
- const el = await fixture(html `<collection-facets
366
- .modalManager=${new ModalManager()}
367
- ></collection-facets>`);
368
- const aggs = {
369
- subject: new Aggregation({
370
- buckets: [
371
- {
372
- key: 'foo',
373
- doc_count: 5,
374
- },
375
- {
376
- key: 'fi',
377
- doc_count: 5,
378
- },
379
- {
380
- key: 'fum',
381
- doc_count: 5,
382
- },
383
- {
384
- key: 'flee',
385
- doc_count: 5,
386
- },
387
- {
388
- key: 'wheee',
389
- doc_count: 5,
390
- },
391
- {
392
- key: 'whooo',
393
- doc_count: 5,
394
- },
395
- {
396
- key: 'boop',
397
- doc_count: 5,
398
- },
399
- ],
400
- }),
401
- };
402
- el.aggregations = aggs;
403
- await el.updateComplete;
404
- let eventCaught = false;
405
- let eventFacet = '';
406
- el.addEventListener('showMoreFacets', e => {
407
- eventFacet = e.detail;
408
- eventCaught = true;
409
- });
410
- const moreLink = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.more-link');
411
- expect(moreLink).to.exist; // has link
412
- const showModalSpy = sinon.spy(el.modalManager, 'showModal');
413
- // let's pop up modal
414
- moreLink === null || moreLink === void 0 ? void 0 : moreLink.click();
415
- await el.updateComplete;
416
- expect(showModalSpy.callCount).to.equal(1);
417
- expect((_b = el.modalManager) === null || _b === void 0 ? void 0 : _b.classList.contains('more-search-facets')).to.be
418
- .true;
419
- expect(eventCaught).to.be.true;
420
- expect(eventFacet).to.equal('subject');
421
- });
422
- });
423
- });
1
+ /* eslint-disable import/no-duplicates */
2
+ import { expect, fixture } from '@open-wc/testing';
3
+ import sinon from 'sinon';
4
+ import { html } from 'lit';
5
+ import { Aggregation } from '@internetarchive/search-service';
6
+ import { ModalManager, } from '@internetarchive/modal-manager';
7
+ import '@internetarchive/modal-manager';
8
+ import '../src/collection-facets';
9
+ import { LanguageCodeHandler, } from '../src/language-code-handler/language-code-handler';
10
+ describe('Collection Facets', () => {
11
+ it('has loader', async () => {
12
+ var _a, _b, _c, _d;
13
+ const el = await fixture(html `<collection-facets ?facetsLoading=${true}></collection-facets>`);
14
+ expect((_b = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#container')) === null || _b === void 0 ? void 0 : _b.classList.contains('loading')).to.be.true;
15
+ el.facetsLoading = false;
16
+ await el.updateComplete;
17
+ expect((_d = (_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('#container')) === null || _d === void 0 ? void 0 : _d.classList.contains('loading')).to.be.false;
18
+ });
19
+ it('renders aggregations as facets', async () => {
20
+ var _a, _b, _c, _d, _e;
21
+ const el = await fixture(html `<collection-facets></collection-facets>`);
22
+ const aggs = {
23
+ subject: new Aggregation({
24
+ buckets: [
25
+ {
26
+ key: 'foo',
27
+ doc_count: 5,
28
+ },
29
+ ],
30
+ }),
31
+ };
32
+ el.aggregations = aggs;
33
+ await el.updateComplete;
34
+ const facetGroups = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelectorAll('.facet-group');
35
+ expect(facetGroups === null || facetGroups === void 0 ? void 0 : facetGroups.length).to.equal(1);
36
+ const titleFacetGroup = facetGroups === null || facetGroups === void 0 ? void 0 : facetGroups[0];
37
+ const facetGroupHeader = titleFacetGroup === null || titleFacetGroup === void 0 ? void 0 : titleFacetGroup.querySelector('h1');
38
+ expect((_b = facetGroupHeader === null || facetGroupHeader === void 0 ? void 0 : facetGroupHeader.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.equal('Subject');
39
+ const titleFacetRow = (_d = (_c = titleFacetGroup === null || titleFacetGroup === void 0 ? void 0 : titleFacetGroup.querySelector('facets-template')) === null || _c === void 0 ? void 0 : _c.shadowRoot) === null || _d === void 0 ? void 0 : _d.querySelector('.facet-row');
40
+ console.log(titleFacetGroup === null || titleFacetGroup === void 0 ? void 0 : titleFacetGroup.querySelector('facets-template'));
41
+ expect((_e = titleFacetRow === null || titleFacetRow === void 0 ? void 0 : titleFacetRow.textContent) === null || _e === void 0 ? void 0 : _e.trim()).to.satisfy((text) => /^foo\s*5$/.test(text));
42
+ });
43
+ it('renders multiple aggregation types', async () => {
44
+ var _a;
45
+ const el = await fixture(html `<collection-facets></collection-facets>`);
46
+ const aggs = {
47
+ subject: new Aggregation({
48
+ buckets: [
49
+ {
50
+ key: 'foo',
51
+ doc_count: 5,
52
+ },
53
+ ],
54
+ }),
55
+ mediatype: new Aggregation({
56
+ buckets: [
57
+ {
58
+ key: 'bar',
59
+ doc_count: 10,
60
+ },
61
+ ],
62
+ }),
63
+ };
64
+ el.aggregations = aggs;
65
+ await el.updateComplete;
66
+ const facetGroups = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelectorAll('.facet-group');
67
+ expect(facetGroups === null || facetGroups === void 0 ? void 0 : facetGroups.length).to.equal(2);
68
+ });
69
+ it('renders collection facets as links', async () => {
70
+ var _a, _b, _c, _d;
71
+ const el = await fixture(html `<collection-facets></collection-facets>`);
72
+ const aggs = {
73
+ collection: new Aggregation({
74
+ buckets: [
75
+ {
76
+ key: 'foo',
77
+ doc_count: 5,
78
+ },
79
+ ],
80
+ }),
81
+ };
82
+ el.aggregations = aggs;
83
+ await el.updateComplete;
84
+ const collectionName = (_c = (_b = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('facets-template')) === null || _b === void 0 ? void 0 : _b.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('async-collection-name');
85
+ expect(collectionName === null || collectionName === void 0 ? void 0 : collectionName.parentElement).to.be.instanceOf(HTMLAnchorElement);
86
+ expect((_d = collectionName === null || collectionName === void 0 ? void 0 : collectionName.parentElement) === null || _d === void 0 ? void 0 : _d.getAttribute('href')).to.equal('/details/foo');
87
+ });
88
+ it('renders non-collection facets without links', async () => {
89
+ var _a, _b, _c;
90
+ const el = await fixture(html `<collection-facets></collection-facets>`);
91
+ const aggs = {
92
+ subject: new Aggregation({
93
+ buckets: [
94
+ {
95
+ key: 'foo',
96
+ doc_count: 5,
97
+ },
98
+ ],
99
+ }),
100
+ };
101
+ el.aggregations = aggs;
102
+ await el.updateComplete;
103
+ const collectionName = (_c = (_b = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('facets-template')) === null || _b === void 0 ? void 0 : _b.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('async-collection-name');
104
+ expect(collectionName === null || collectionName === void 0 ? void 0 : collectionName.parentElement).to.not.be.instanceOf(HTMLAnchorElement);
105
+ });
106
+ it('renders language facets with their human-readable names', async () => {
107
+ var _a, _b, _c;
108
+ const el = await fixture(html `<collection-facets></collection-facets>`);
109
+ const languageCodeHandler = new LanguageCodeHandler();
110
+ const aggs = {
111
+ language: new Aggregation({
112
+ buckets: [
113
+ {
114
+ key: 'English',
115
+ doc_count: 3,
116
+ },
117
+ ],
118
+ }),
119
+ };
120
+ el.languageCodeHandler = languageCodeHandler;
121
+ el.aggregations = aggs;
122
+ await el.updateComplete;
123
+ const facetsTemplate = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('facets-template');
124
+ const languageTitle = (_b = facetsTemplate === null || facetsTemplate === void 0 ? void 0 : facetsTemplate.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.facet-title');
125
+ expect((_c = languageTitle === null || languageTitle === void 0 ? void 0 : languageTitle.textContent) === null || _c === void 0 ? void 0 : _c.trim()).to.equal('English');
126
+ });
127
+ it('renders selected/negative language facets with human-readable names', async () => {
128
+ var _a, _b, _c;
129
+ const el = await fixture(html `<collection-facets></collection-facets>`);
130
+ const languageCodeHandler = new LanguageCodeHandler();
131
+ const selectedFacets = {
132
+ subject: {},
133
+ lending: {},
134
+ mediatype: {},
135
+ language: {
136
+ en: {
137
+ key: 'en',
138
+ count: 5,
139
+ state: 'selected',
140
+ },
141
+ },
142
+ creator: {},
143
+ collection: {},
144
+ year: {},
145
+ };
146
+ el.languageCodeHandler = languageCodeHandler;
147
+ el.selectedFacets = selectedFacets;
148
+ await el.updateComplete;
149
+ const facetsTemplate = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('facets-template');
150
+ const languageTitle = (_b = facetsTemplate === null || facetsTemplate === void 0 ? void 0 : facetsTemplate.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.facet-title');
151
+ expect((_c = languageTitle === null || languageTitle === void 0 ? void 0 : languageTitle.textContent) === null || _c === void 0 ? void 0 : _c.trim()).to.equal('English');
152
+ });
153
+ it('renders lending facets with human-readable names', async () => {
154
+ var _a, _b, _c, _d, _e;
155
+ const el = await fixture(html `<collection-facets></collection-facets>`);
156
+ const aggs = {
157
+ lending: new Aggregation({
158
+ buckets: [
159
+ {
160
+ key: 'is_lendable',
161
+ doc_count: 3,
162
+ },
163
+ {
164
+ key: 'available_to_borrow',
165
+ doc_count: 2,
166
+ },
167
+ {
168
+ key: 'is_readable',
169
+ doc_count: 1,
170
+ },
171
+ ],
172
+ }),
173
+ };
174
+ el.aggregations = aggs;
175
+ await el.updateComplete;
176
+ const facetsTemplate = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('facets-template');
177
+ const lendingTitles = (_b = facetsTemplate === null || facetsTemplate === void 0 ? void 0 : facetsTemplate.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelectorAll('.facet-title');
178
+ expect(lendingTitles === null || lendingTitles === void 0 ? void 0 : lendingTitles.length).to.equal(3);
179
+ expect((_c = lendingTitles === null || lendingTitles === void 0 ? void 0 : lendingTitles.item(0).textContent) === null || _c === void 0 ? void 0 : _c.trim()).to.equal('Lending Library');
180
+ expect((_d = lendingTitles === null || lendingTitles === void 0 ? void 0 : lendingTitles.item(1).textContent) === null || _d === void 0 ? void 0 : _d.trim()).to.equal('Borrow 14 Days');
181
+ expect((_e = lendingTitles === null || lendingTitles === void 0 ? void 0 : lendingTitles.item(2).textContent) === null || _e === void 0 ? void 0 : _e.trim()).to.equal('Always Available');
182
+ });
183
+ it('renders selected/negative lending facets with human-readable names', async () => {
184
+ var _a, _b, _c, _d, _e;
185
+ const el = await fixture(html `<collection-facets></collection-facets>`);
186
+ const selectedFacets = {
187
+ subject: {},
188
+ lending: {
189
+ is_lendable: {
190
+ key: 'is_lendable',
191
+ count: 5,
192
+ state: 'selected',
193
+ },
194
+ available_to_borrow: {
195
+ key: 'available_to_borrow',
196
+ count: 4,
197
+ state: 'selected',
198
+ },
199
+ is_readable: {
200
+ key: 'is_readable',
201
+ count: 3,
202
+ state: 'hidden',
203
+ },
204
+ },
205
+ mediatype: {},
206
+ language: {},
207
+ creator: {},
208
+ collection: {},
209
+ year: {},
210
+ };
211
+ el.selectedFacets = selectedFacets;
212
+ await el.updateComplete;
213
+ const facetsTemplate = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('facets-template');
214
+ const lendingTitles = (_b = facetsTemplate === null || facetsTemplate === void 0 ? void 0 : facetsTemplate.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelectorAll('.facet-title');
215
+ expect(lendingTitles === null || lendingTitles === void 0 ? void 0 : lendingTitles.length).to.equal(3);
216
+ expect((_c = lendingTitles === null || lendingTitles === void 0 ? void 0 : lendingTitles.item(0).textContent) === null || _c === void 0 ? void 0 : _c.trim()).to.equal('Lending Library');
217
+ expect((_d = lendingTitles === null || lendingTitles === void 0 ? void 0 : lendingTitles.item(1).textContent) === null || _d === void 0 ? void 0 : _d.trim()).to.equal('Borrow 14 Days');
218
+ expect((_e = lendingTitles === null || lendingTitles === void 0 ? void 0 : lendingTitles.item(2).textContent) === null || _e === void 0 ? void 0 : _e.trim()).to.equal('Always Available');
219
+ });
220
+ it('only renders lending facets for is_lendable, available_to_borrow, and is_readable', async () => {
221
+ var _a, _b, _c, _d, _e;
222
+ const el = await fixture(html `<collection-facets></collection-facets>`);
223
+ const aggs = {
224
+ lending: new Aggregation({
225
+ buckets: [
226
+ {
227
+ key: 'is_lendable',
228
+ doc_count: 5,
229
+ },
230
+ {
231
+ key: 'is_borrowable',
232
+ doc_count: 4,
233
+ },
234
+ {
235
+ key: 'available_to_borrow',
236
+ doc_count: 5,
237
+ },
238
+ {
239
+ key: 'is_browsable',
240
+ doc_count: 4,
241
+ },
242
+ {
243
+ key: 'available_to_browse',
244
+ doc_count: 5,
245
+ },
246
+ {
247
+ key: 'is_readable',
248
+ doc_count: 4,
249
+ },
250
+ {
251
+ key: 'available_to_waitlist',
252
+ doc_count: 5,
253
+ },
254
+ ],
255
+ }),
256
+ };
257
+ el.aggregations = aggs;
258
+ await el.updateComplete;
259
+ const facetsTemplate = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('facets-template');
260
+ const lendingTitles = (_b = facetsTemplate === null || facetsTemplate === void 0 ? void 0 : facetsTemplate.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelectorAll('.facet-title');
261
+ expect(lendingTitles === null || lendingTitles === void 0 ? void 0 : lendingTitles.length).to.equal(3);
262
+ expect((_c = lendingTitles === null || lendingTitles === void 0 ? void 0 : lendingTitles.item(0).textContent) === null || _c === void 0 ? void 0 : _c.trim()).to.equal('Lending Library');
263
+ expect((_d = lendingTitles === null || lendingTitles === void 0 ? void 0 : lendingTitles.item(1).textContent) === null || _d === void 0 ? void 0 : _d.trim()).to.equal('Borrow 14 Days');
264
+ expect((_e = lendingTitles === null || lendingTitles === void 0 ? void 0 : lendingTitles.item(2).textContent) === null || _e === void 0 ? void 0 : _e.trim()).to.equal('Always Available');
265
+ });
266
+ it('does not render a More... link for lending facets', async () => {
267
+ var _a;
268
+ const el = await fixture(html `<collection-facets></collection-facets>`);
269
+ const aggs = {
270
+ lending: new Aggregation({
271
+ buckets: [
272
+ {
273
+ key: 'is_lendable',
274
+ doc_count: 5,
275
+ },
276
+ {
277
+ key: 'is_borrowable',
278
+ doc_count: 4,
279
+ },
280
+ {
281
+ key: 'available_to_borrow',
282
+ doc_count: 5,
283
+ },
284
+ {
285
+ key: 'is_browsable',
286
+ doc_count: 4,
287
+ },
288
+ {
289
+ key: 'available_to_browse',
290
+ doc_count: 5,
291
+ },
292
+ {
293
+ key: 'is_readable',
294
+ doc_count: 4,
295
+ },
296
+ {
297
+ key: 'available_to_waitlist',
298
+ doc_count: 5,
299
+ },
300
+ ],
301
+ }),
302
+ };
303
+ el.aggregations = aggs;
304
+ await el.updateComplete;
305
+ const moreLink = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.more-link');
306
+ expect(moreLink).not.to.exist;
307
+ });
308
+ describe('More Facets', () => {
309
+ it('Does not render < allowedFacetCount', async () => {
310
+ var _a;
311
+ const el = await fixture(html `<collection-facets></collection-facets>`);
312
+ const aggs = {
313
+ subject: new Aggregation({
314
+ buckets: [
315
+ {
316
+ key: 'foo',
317
+ doc_count: 5,
318
+ },
319
+ ],
320
+ }),
321
+ };
322
+ el.aggregations = aggs;
323
+ await el.updateComplete;
324
+ const moreLink = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.more-link');
325
+ expect(moreLink).to.be.null;
326
+ });
327
+ it('renders sorting icons', async () => {
328
+ var _a;
329
+ const el = await fixture(html `<collection-facets></collection-facets>`);
330
+ const aggs = {
331
+ subject: new Aggregation({
332
+ buckets: [
333
+ {
334
+ key: 'foo',
335
+ doc_count: 5,
336
+ },
337
+ ],
338
+ }),
339
+ };
340
+ el.aggregations = aggs;
341
+ await el.updateComplete;
342
+ const sortingIcon = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.sorting-icon');
343
+ expect(sortingIcon).to.exist;
344
+ });
345
+ it('does not render sorting icon for lending facets', async () => {
346
+ var _a;
347
+ const el = await fixture(html `<collection-facets></collection-facets>`);
348
+ const aggs = {
349
+ lending: new Aggregation({
350
+ buckets: [
351
+ {
352
+ key: 'is_readable',
353
+ doc_count: 5,
354
+ },
355
+ ],
356
+ }),
357
+ };
358
+ el.aggregations = aggs;
359
+ await el.updateComplete;
360
+ const sortingIcon = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.sorting-icon');
361
+ expect(sortingIcon).not.to.exist;
362
+ });
363
+ it('Render More Facets', async () => {
364
+ var _a, _b;
365
+ const el = await fixture(html `<collection-facets
366
+ .modalManager=${new ModalManager()}
367
+ ></collection-facets>`);
368
+ const aggs = {
369
+ subject: new Aggregation({
370
+ buckets: [
371
+ {
372
+ key: 'foo',
373
+ doc_count: 5,
374
+ },
375
+ {
376
+ key: 'fi',
377
+ doc_count: 5,
378
+ },
379
+ {
380
+ key: 'fum',
381
+ doc_count: 5,
382
+ },
383
+ {
384
+ key: 'flee',
385
+ doc_count: 5,
386
+ },
387
+ {
388
+ key: 'wheee',
389
+ doc_count: 5,
390
+ },
391
+ {
392
+ key: 'whooo',
393
+ doc_count: 5,
394
+ },
395
+ {
396
+ key: 'boop',
397
+ doc_count: 5,
398
+ },
399
+ ],
400
+ }),
401
+ };
402
+ el.aggregations = aggs;
403
+ await el.updateComplete;
404
+ let eventCaught = false;
405
+ let eventFacet = '';
406
+ el.addEventListener('showMoreFacets', e => {
407
+ eventFacet = e.detail;
408
+ eventCaught = true;
409
+ });
410
+ const moreLink = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.more-link');
411
+ expect(moreLink).to.exist; // has link
412
+ const showModalSpy = sinon.spy(el.modalManager, 'showModal');
413
+ // let's pop up modal
414
+ moreLink === null || moreLink === void 0 ? void 0 : moreLink.click();
415
+ await el.updateComplete;
416
+ expect(showModalSpy.callCount).to.equal(1);
417
+ expect((_b = el.modalManager) === null || _b === void 0 ? void 0 : _b.classList.contains('more-search-facets')).to.be
418
+ .true;
419
+ expect(eventCaught).to.be.true;
420
+ expect(eventFacet).to.equal('subject');
421
+ });
422
+ });
423
+ });
424
424
  //# sourceMappingURL=collection-facets.test.js.map