@internetarchive/collection-browser 0.3.1 → 0.3.2-alpha.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 (200) 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 +242 -236
  68. package/dist/src/collection-browser.js +1411 -1406
  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 -71
  77. package/dist/src/collection-facets.js +507 -496
  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 +73 -73
  117. package/dist/src/tiles/item-image.d.ts +31 -31
  118. package/dist/src/tiles/item-image.js +103 -103
  119. package/dist/src/tiles/list/account-label.d.ts +1 -1
  120. package/dist/src/tiles/list/account-label.js +6 -6
  121. package/dist/src/tiles/list/date-label.d.ts +1 -1
  122. package/dist/src/tiles/list/date-label.js +12 -12
  123. package/dist/src/tiles/list/tile-list-compact-header.d.ts +12 -12
  124. package/dist/src/tiles/list/tile-list-compact-header.js +41 -41
  125. package/dist/src/tiles/list/tile-list-compact.d.ts +20 -20
  126. package/dist/src/tiles/list/tile-list-compact.js +87 -87
  127. package/dist/src/tiles/list/tile-list.d.ts +50 -50
  128. package/dist/src/tiles/list/tile-list.js +264 -264
  129. package/dist/src/tiles/mediatype-icon.d.ts +9 -9
  130. package/dist/src/tiles/mediatype-icon.js +47 -47
  131. package/dist/src/tiles/overlay/icon-overlay.d.ts +7 -7
  132. package/dist/src/tiles/overlay/icon-overlay.js +31 -31
  133. package/dist/src/tiles/overlay/text-overlay.d.ts +8 -8
  134. package/dist/src/tiles/overlay/text-overlay.js +31 -31
  135. package/dist/src/tiles/text-snippet-block.d.ts +29 -29
  136. package/dist/src/tiles/text-snippet-block.js +81 -81
  137. package/dist/src/tiles/tile-dispatcher.d.ts +36 -36
  138. package/dist/src/tiles/tile-dispatcher.js +128 -128
  139. package/dist/src/utils/analytics-events.d.ts +18 -18
  140. package/dist/src/utils/analytics-events.js +20 -20
  141. package/dist/src/utils/format-count.d.ts +7 -7
  142. package/dist/src/utils/format-count.js +76 -76
  143. package/dist/src/utils/format-date.d.ts +2 -2
  144. package/dist/src/utils/format-date.js +23 -23
  145. package/dist/test/collection-browser.test.d.ts +1 -1
  146. package/dist/test/collection-browser.test.js +318 -318
  147. package/dist/test/collection-facets/facets-template.test.d.ts +1 -1
  148. package/dist/test/collection-facets/facets-template.test.js +62 -62
  149. package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -1
  150. package/dist/test/collection-facets/more-facets-content.test.js +91 -91
  151. package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -1
  152. package/dist/test/collection-facets/more-facets-pagination.test.js +117 -117
  153. package/dist/test/collection-facets.test.d.ts +2 -2
  154. package/dist/test/collection-facets.test.js +423 -387
  155. package/dist/test/collection-facets.test.js.map +1 -1
  156. package/dist/test/empty-placeholder.test.d.ts +1 -1
  157. package/dist/test/empty-placeholder.test.js +33 -33
  158. package/dist/test/icon-overlay.test.d.ts +1 -1
  159. package/dist/test/icon-overlay.test.js +24 -24
  160. package/dist/test/item-image.test.d.ts +1 -1
  161. package/dist/test/item-image.test.js +56 -56
  162. package/dist/test/mediatype-config.test.d.ts +1 -1
  163. package/dist/test/mediatype-config.test.js +16 -16
  164. package/dist/test/mocks/mock-analytics-handler.d.ts +10 -10
  165. package/dist/test/mocks/mock-analytics-handler.js +15 -15
  166. package/dist/test/mocks/mock-collection-name-cache.d.ts +7 -7
  167. package/dist/test/mocks/mock-collection-name-cache.js +13 -13
  168. package/dist/test/mocks/mock-search-responses.d.ts +5 -5
  169. package/dist/test/mocks/mock-search-responses.js +103 -103
  170. package/dist/test/mocks/mock-search-service.d.ts +13 -13
  171. package/dist/test/mocks/mock-search-service.js +25 -25
  172. package/dist/test/restoration-state-handler.test.d.ts +1 -1
  173. package/dist/test/restoration-state-handler.test.js +117 -117
  174. package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -1
  175. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +113 -113
  176. package/dist/test/text-overlay.test.d.ts +1 -1
  177. package/dist/test/text-overlay.test.js +41 -41
  178. package/dist/test/text-snippet-block.test.d.ts +1 -1
  179. package/dist/test/text-snippet-block.test.js +57 -57
  180. package/dist/test/tile-stats.test.d.ts +1 -1
  181. package/dist/test/tile-stats.test.js +33 -33
  182. package/dist/test/tiles/grid/item-tile.test.d.ts +1 -1
  183. package/dist/test/tiles/grid/item-tile.test.js +107 -107
  184. package/dist/test/tiles/list/tile-list.test.d.ts +1 -1
  185. package/dist/test/tiles/list/tile-list.test.js +36 -36
  186. package/dist/test/utils/format-count.test.d.ts +1 -1
  187. package/dist/test/utils/format-count.test.js +23 -23
  188. package/dist/test/utils/format-date.test.d.ts +1 -1
  189. package/dist/test/utils/format-date.test.js +17 -17
  190. package/index.html +24 -24
  191. package/local.archive.org.cert +86 -86
  192. package/local.archive.org.key +27 -27
  193. package/package.json +115 -115
  194. package/renovate.json +6 -6
  195. package/src/collection-browser.ts +1539 -1530
  196. package/src/collection-facets.ts +582 -569
  197. package/test/collection-facets.test.ts +556 -510
  198. package/tsconfig.json +21 -21
  199. package/web-dev-server.config.mjs +30 -30
  200. package/web-test-runner.config.mjs +41 -41
@@ -1 +1 @@
1
- {"version":3,"file":"collection-facets.test.js","sourceRoot":"","sources":["../../test/collection-facets.test.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable import/no-duplicates */\nimport { expect, fixture } from '@open-wc/testing';\nimport sinon from 'sinon';\nimport { html } from 'lit';\nimport { Aggregation } from '@internetarchive/search-service';\nimport {\n ModalManager,\n ModalManagerInterface,\n} from '@internetarchive/modal-manager';\nimport type { CollectionFacets } from '../src/collection-facets';\nimport '@internetarchive/modal-manager';\nimport '../src/collection-facets';\nimport type { FacetOption, SelectedFacets } from '../src/models';\nimport {\n LanguageCodeHandler,\n LanguageCodeHandlerInterface,\n} from '../src/language-code-handler/language-code-handler';\n\ndescribe('Collection Facets', () => {\n it('has loader', async () => {\n const el = await fixture<CollectionFacets>(\n html`<collection-facets ?facetsLoading=${true}></collection-facets>`\n );\n\n expect(\n el.shadowRoot?.querySelector('#container')?.classList.contains('loading')\n ).to.be.true;\n\n el.facetsLoading = false;\n await el.updateComplete;\n\n expect(\n el.shadowRoot?.querySelector('#container')?.classList.contains('loading')\n ).to.be.false;\n });\n it('renders aggregations as facets', async () => {\n const el = await fixture<CollectionFacets>(\n html`<collection-facets></collection-facets>`\n );\n\n const aggs: Record<string, Aggregation> = {\n subject: new Aggregation({\n buckets: [\n {\n key: 'foo',\n doc_count: 5,\n },\n ],\n }),\n };\n\n el.aggregations = aggs;\n await el.updateComplete;\n const facetGroups = el.shadowRoot?.querySelectorAll('.facet-group');\n expect(facetGroups?.length).to.equal(1);\n\n const titleFacetGroup = facetGroups?.[0];\n const facetGroupHeader = titleFacetGroup?.querySelector('h1');\n expect(facetGroupHeader?.textContent?.trim()).to.equal('Subject');\n const titleFacetRow = titleFacetGroup\n ?.querySelector('facets-template')\n ?.shadowRoot?.querySelector('.facet-row');\n console.log(titleFacetGroup?.querySelector('facets-template'));\n expect(titleFacetRow?.textContent?.trim()).to.satisfy((text: string) =>\n /^foo\\s*5$/.test(text)\n );\n });\n\n it('renders multiple aggregation types', async () => {\n const el = await fixture<CollectionFacets>(\n html`<collection-facets></collection-facets>`\n );\n\n const aggs: Record<string, Aggregation> = {\n subject: new Aggregation({\n buckets: [\n {\n key: 'foo',\n doc_count: 5,\n },\n ],\n }),\n mediatype: new Aggregation({\n buckets: [\n {\n key: 'bar',\n doc_count: 10,\n },\n ],\n }),\n };\n\n el.aggregations = aggs;\n await el.updateComplete;\n\n const facetGroups = el.shadowRoot?.querySelectorAll('.facet-group');\n expect(facetGroups?.length).to.equal(2);\n });\n\n it('renders collection facets as links', async () => {\n const el = await fixture<CollectionFacets>(\n html`<collection-facets></collection-facets>`\n );\n\n const aggs: Record<string, Aggregation> = {\n collection: new Aggregation({\n buckets: [\n {\n key: 'foo',\n doc_count: 5,\n },\n ],\n }),\n };\n\n el.aggregations = aggs;\n await el.updateComplete;\n\n const collectionName = el.shadowRoot\n ?.querySelector('facets-template')\n ?.shadowRoot?.querySelector('async-collection-name');\n expect(collectionName?.parentElement).to.be.instanceOf(HTMLAnchorElement);\n expect(collectionName?.parentElement?.getAttribute('href')).to.equal(\n '/details/foo'\n );\n });\n\n it('renders non-collection facets without links', async () => {\n const el = await fixture<CollectionFacets>(\n html`<collection-facets></collection-facets>`\n );\n\n const aggs: Record<string, Aggregation> = {\n subject: new Aggregation({\n buckets: [\n {\n key: 'foo',\n doc_count: 5,\n },\n ],\n }),\n };\n\n el.aggregations = aggs;\n await el.updateComplete;\n\n const collectionName = el.shadowRoot\n ?.querySelector('facets-template')\n ?.shadowRoot?.querySelector('async-collection-name');\n expect(collectionName?.parentElement).to.not.be.instanceOf(\n HTMLAnchorElement\n );\n });\n\n it('renders language facets with their human-readable names', async () => {\n const el = await fixture<CollectionFacets>(\n html`<collection-facets></collection-facets>`\n );\n\n const languageCodeHandler: LanguageCodeHandlerInterface =\n new LanguageCodeHandler();\n\n const aggs: Record<string, Aggregation> = {\n language: new Aggregation({\n buckets: [\n {\n key: 'English',\n doc_count: 3,\n },\n ],\n }),\n };\n\n el.languageCodeHandler = languageCodeHandler;\n el.aggregations = aggs;\n await el.updateComplete;\n\n const facetsTemplate = el.shadowRoot?.querySelector('facets-template');\n const languageTitle =\n facetsTemplate?.shadowRoot?.querySelector('.facet-title');\n expect(languageTitle?.textContent?.trim()).to.equal('English');\n });\n\n it('renders selected/negative language facets with human-readable names', async () => {\n const el = await fixture<CollectionFacets>(\n html`<collection-facets></collection-facets>`\n );\n\n const languageCodeHandler: LanguageCodeHandlerInterface =\n new LanguageCodeHandler();\n\n const selectedFacets: SelectedFacets = {\n subject: {},\n lending: {},\n mediatype: {},\n language: {\n en: {\n key: 'en',\n count: 5,\n state: 'selected',\n },\n },\n creator: {},\n collection: {},\n year: {},\n };\n\n el.languageCodeHandler = languageCodeHandler;\n el.selectedFacets = selectedFacets;\n await el.updateComplete;\n\n const facetsTemplate = el.shadowRoot?.querySelector('facets-template');\n const languageTitle =\n facetsTemplate?.shadowRoot?.querySelector('.facet-title');\n expect(languageTitle?.textContent?.trim()).to.equal('English');\n });\n\n it('renders lending facets with human-readable names', async () => {\n const el = await fixture<CollectionFacets>(\n html`<collection-facets></collection-facets>`\n );\n\n const aggs: Record<string, Aggregation> = {\n lending: new Aggregation({\n buckets: [\n {\n key: 'is_lendable',\n doc_count: 3,\n },\n {\n key: 'available_to_borrow',\n doc_count: 2,\n },\n {\n key: 'is_readable',\n doc_count: 1,\n },\n ],\n }),\n };\n\n el.aggregations = aggs;\n await el.updateComplete;\n\n const facetsTemplate = el.shadowRoot?.querySelector('facets-template');\n const lendingTitles =\n facetsTemplate?.shadowRoot?.querySelectorAll('.facet-title');\n expect(lendingTitles?.length).to.equal(3);\n expect(lendingTitles?.item(0).textContent?.trim()).to.equal(\n 'Lending Library'\n );\n expect(lendingTitles?.item(1).textContent?.trim()).to.equal(\n 'Borrow 14 Days'\n );\n expect(lendingTitles?.item(2).textContent?.trim()).to.equal(\n 'Always Available'\n );\n });\n\n it('renders selected/negative lending facets with human-readable names', async () => {\n const el = await fixture<CollectionFacets>(\n html`<collection-facets></collection-facets>`\n );\n\n const selectedFacets: SelectedFacets = {\n subject: {},\n lending: {\n is_lendable: {\n key: 'is_lendable',\n count: 5,\n state: 'selected',\n },\n available_to_borrow: {\n key: 'available_to_borrow',\n count: 4,\n state: 'selected',\n },\n is_readable: {\n key: 'is_readable',\n count: 3,\n state: 'hidden',\n },\n },\n mediatype: {},\n language: {},\n creator: {},\n collection: {},\n year: {},\n };\n\n el.selectedFacets = selectedFacets;\n await el.updateComplete;\n\n const facetsTemplate = el.shadowRoot?.querySelector('facets-template');\n const lendingTitles =\n facetsTemplate?.shadowRoot?.querySelectorAll('.facet-title');\n expect(lendingTitles?.length).to.equal(3);\n expect(lendingTitles?.item(0).textContent?.trim()).to.equal(\n 'Lending Library'\n );\n expect(lendingTitles?.item(1).textContent?.trim()).to.equal(\n 'Borrow 14 Days'\n );\n expect(lendingTitles?.item(2).textContent?.trim()).to.equal(\n 'Always Available'\n );\n });\n\n it('only renders lending facets for is_lendable, available_to_borrow, and is_readable', async () => {\n const el = await fixture<CollectionFacets>(\n html`<collection-facets></collection-facets>`\n );\n\n const aggs: Record<string, Aggregation> = {\n lending: new Aggregation({\n buckets: [\n {\n key: 'is_lendable',\n doc_count: 5,\n },\n {\n key: 'is_borrowable',\n doc_count: 4,\n },\n {\n key: 'available_to_borrow',\n doc_count: 5,\n },\n {\n key: 'is_browsable',\n doc_count: 4,\n },\n {\n key: 'available_to_browse',\n doc_count: 5,\n },\n {\n key: 'is_readable',\n doc_count: 4,\n },\n {\n key: 'available_to_waitlist',\n doc_count: 5,\n },\n ],\n }),\n };\n\n el.aggregations = aggs;\n await el.updateComplete;\n\n const facetsTemplate = el.shadowRoot?.querySelector('facets-template');\n const lendingTitles =\n facetsTemplate?.shadowRoot?.querySelectorAll('.facet-title');\n expect(lendingTitles?.length).to.equal(3);\n expect(lendingTitles?.item(0).textContent?.trim()).to.equal(\n 'Lending Library'\n );\n expect(lendingTitles?.item(1).textContent?.trim()).to.equal(\n 'Borrow 14 Days'\n );\n expect(lendingTitles?.item(2).textContent?.trim()).to.equal(\n 'Always Available'\n );\n });\n\n it('does not render a More... link for lending facets', async () => {\n const el = await fixture<CollectionFacets>(\n html`<collection-facets></collection-facets>`\n );\n\n const aggs: Record<string, Aggregation> = {\n lending: new Aggregation({\n buckets: [\n {\n key: 'is_lendable',\n doc_count: 5,\n },\n {\n key: 'is_borrowable',\n doc_count: 4,\n },\n {\n key: 'available_to_borrow',\n doc_count: 5,\n },\n {\n key: 'is_browsable',\n doc_count: 4,\n },\n {\n key: 'available_to_browse',\n doc_count: 5,\n },\n {\n key: 'is_readable',\n doc_count: 4,\n },\n {\n key: 'available_to_waitlist',\n doc_count: 5,\n },\n ],\n }),\n };\n\n el.aggregations = aggs;\n await el.updateComplete;\n\n const moreLink = el.shadowRoot?.querySelector('.more-link');\n expect(moreLink).not.to.exist;\n });\n\n describe('More Facets', () => {\n it('Does not render < allowedFacetCount', async () => {\n const el = await fixture<CollectionFacets>(\n html`<collection-facets></collection-facets>`\n );\n\n const aggs: Record<string, Aggregation> = {\n subject: new Aggregation({\n buckets: [\n {\n key: 'foo',\n doc_count: 5,\n },\n ],\n }),\n };\n\n el.aggregations = aggs;\n await el.updateComplete;\n\n const moreLink = el.shadowRoot?.querySelector('.more-link');\n expect(moreLink).to.be.null;\n });\n\n it('Render More Facets', async () => {\n const el = await fixture<CollectionFacets>(\n html`<collection-facets\n .modalManager=${new ModalManager()}\n ></collection-facets>`\n );\n\n const aggs: Record<string, Aggregation> = {\n subject: new Aggregation({\n buckets: [\n {\n key: 'foo',\n doc_count: 5,\n },\n {\n key: 'fi',\n doc_count: 5,\n },\n {\n key: 'fum',\n doc_count: 5,\n },\n {\n key: 'flee',\n doc_count: 5,\n },\n {\n key: 'wheee',\n doc_count: 5,\n },\n {\n key: 'whooo',\n doc_count: 5,\n },\n {\n key: 'boop',\n doc_count: 5,\n },\n ],\n }),\n };\n\n el.aggregations = aggs;\n await el.updateComplete;\n\n let eventCaught = false;\n let eventFacet = '';\n el.addEventListener('showMoreFacets', e => {\n eventFacet = (e as CustomEvent).detail;\n eventCaught = true;\n });\n\n const moreLink = el.shadowRoot?.querySelector(\n '.more-link'\n ) as HTMLButtonElement;\n expect(moreLink).to.exist; // has link\n\n const showModalSpy = sinon.spy(\n el.modalManager as ModalManagerInterface,\n 'showModal'\n );\n // let's pop up modal\n moreLink?.click();\n await el.updateComplete;\n\n expect(showModalSpy.callCount).to.equal(1);\n expect(el.modalManager?.classList.contains('more-search-facets')).to.be\n .true;\n expect(eventCaught).to.be.true;\n expect(eventFacet).to.equal('subject' as FacetOption);\n });\n });\n});\n"]}
1
+ {"version":3,"file":"collection-facets.test.js","sourceRoot":"","sources":["../../test/collection-facets.test.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable import/no-duplicates */\r\nimport { expect, fixture } from '@open-wc/testing';\r\nimport sinon from 'sinon';\r\nimport { html } from 'lit';\r\nimport { Aggregation } from '@internetarchive/search-service';\r\nimport {\r\n ModalManager,\r\n ModalManagerInterface,\r\n} from '@internetarchive/modal-manager';\r\nimport type { CollectionFacets } from '../src/collection-facets';\r\nimport '@internetarchive/modal-manager';\r\nimport '../src/collection-facets';\r\nimport type { FacetOption, SelectedFacets } from '../src/models';\r\nimport {\r\n LanguageCodeHandler,\r\n LanguageCodeHandlerInterface,\r\n} from '../src/language-code-handler/language-code-handler';\r\n\r\ndescribe('Collection Facets', () => {\r\n it('has loader', async () => {\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets ?facetsLoading=${true}></collection-facets>`\r\n );\r\n\r\n expect(\r\n el.shadowRoot?.querySelector('#container')?.classList.contains('loading')\r\n ).to.be.true;\r\n\r\n el.facetsLoading = false;\r\n await el.updateComplete;\r\n\r\n expect(\r\n el.shadowRoot?.querySelector('#container')?.classList.contains('loading')\r\n ).to.be.false;\r\n });\r\n it('renders aggregations as facets', async () => {\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets></collection-facets>`\r\n );\r\n\r\n const aggs: Record<string, Aggregation> = {\r\n subject: new Aggregation({\r\n buckets: [\r\n {\r\n key: 'foo',\r\n doc_count: 5,\r\n },\r\n ],\r\n }),\r\n };\r\n\r\n el.aggregations = aggs;\r\n await el.updateComplete;\r\n const facetGroups = el.shadowRoot?.querySelectorAll('.facet-group');\r\n expect(facetGroups?.length).to.equal(1);\r\n\r\n const titleFacetGroup = facetGroups?.[0];\r\n const facetGroupHeader = titleFacetGroup?.querySelector('h1');\r\n expect(facetGroupHeader?.textContent?.trim()).to.equal('Subject');\r\n const titleFacetRow = titleFacetGroup\r\n ?.querySelector('facets-template')\r\n ?.shadowRoot?.querySelector('.facet-row');\r\n console.log(titleFacetGroup?.querySelector('facets-template'));\r\n expect(titleFacetRow?.textContent?.trim()).to.satisfy((text: string) =>\r\n /^foo\\s*5$/.test(text)\r\n );\r\n });\r\n\r\n it('renders multiple aggregation types', async () => {\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets></collection-facets>`\r\n );\r\n\r\n const aggs: Record<string, Aggregation> = {\r\n subject: new Aggregation({\r\n buckets: [\r\n {\r\n key: 'foo',\r\n doc_count: 5,\r\n },\r\n ],\r\n }),\r\n mediatype: new Aggregation({\r\n buckets: [\r\n {\r\n key: 'bar',\r\n doc_count: 10,\r\n },\r\n ],\r\n }),\r\n };\r\n\r\n el.aggregations = aggs;\r\n await el.updateComplete;\r\n\r\n const facetGroups = el.shadowRoot?.querySelectorAll('.facet-group');\r\n expect(facetGroups?.length).to.equal(2);\r\n });\r\n\r\n it('renders collection facets as links', async () => {\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets></collection-facets>`\r\n );\r\n\r\n const aggs: Record<string, Aggregation> = {\r\n collection: new Aggregation({\r\n buckets: [\r\n {\r\n key: 'foo',\r\n doc_count: 5,\r\n },\r\n ],\r\n }),\r\n };\r\n\r\n el.aggregations = aggs;\r\n await el.updateComplete;\r\n\r\n const collectionName = el.shadowRoot\r\n ?.querySelector('facets-template')\r\n ?.shadowRoot?.querySelector('async-collection-name');\r\n expect(collectionName?.parentElement).to.be.instanceOf(HTMLAnchorElement);\r\n expect(collectionName?.parentElement?.getAttribute('href')).to.equal(\r\n '/details/foo'\r\n );\r\n });\r\n\r\n it('renders non-collection facets without links', async () => {\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets></collection-facets>`\r\n );\r\n\r\n const aggs: Record<string, Aggregation> = {\r\n subject: new Aggregation({\r\n buckets: [\r\n {\r\n key: 'foo',\r\n doc_count: 5,\r\n },\r\n ],\r\n }),\r\n };\r\n\r\n el.aggregations = aggs;\r\n await el.updateComplete;\r\n\r\n const collectionName = el.shadowRoot\r\n ?.querySelector('facets-template')\r\n ?.shadowRoot?.querySelector('async-collection-name');\r\n expect(collectionName?.parentElement).to.not.be.instanceOf(\r\n HTMLAnchorElement\r\n );\r\n });\r\n\r\n it('renders language facets with their human-readable names', async () => {\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets></collection-facets>`\r\n );\r\n\r\n const languageCodeHandler: LanguageCodeHandlerInterface =\r\n new LanguageCodeHandler();\r\n\r\n const aggs: Record<string, Aggregation> = {\r\n language: new Aggregation({\r\n buckets: [\r\n {\r\n key: 'English',\r\n doc_count: 3,\r\n },\r\n ],\r\n }),\r\n };\r\n\r\n el.languageCodeHandler = languageCodeHandler;\r\n el.aggregations = aggs;\r\n await el.updateComplete;\r\n\r\n const facetsTemplate = el.shadowRoot?.querySelector('facets-template');\r\n const languageTitle =\r\n facetsTemplate?.shadowRoot?.querySelector('.facet-title');\r\n expect(languageTitle?.textContent?.trim()).to.equal('English');\r\n });\r\n\r\n it('renders selected/negative language facets with human-readable names', async () => {\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets></collection-facets>`\r\n );\r\n\r\n const languageCodeHandler: LanguageCodeHandlerInterface =\r\n new LanguageCodeHandler();\r\n\r\n const selectedFacets: SelectedFacets = {\r\n subject: {},\r\n lending: {},\r\n mediatype: {},\r\n language: {\r\n en: {\r\n key: 'en',\r\n count: 5,\r\n state: 'selected',\r\n },\r\n },\r\n creator: {},\r\n collection: {},\r\n year: {},\r\n };\r\n\r\n el.languageCodeHandler = languageCodeHandler;\r\n el.selectedFacets = selectedFacets;\r\n await el.updateComplete;\r\n\r\n const facetsTemplate = el.shadowRoot?.querySelector('facets-template');\r\n const languageTitle =\r\n facetsTemplate?.shadowRoot?.querySelector('.facet-title');\r\n expect(languageTitle?.textContent?.trim()).to.equal('English');\r\n });\r\n\r\n it('renders lending facets with human-readable names', async () => {\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets></collection-facets>`\r\n );\r\n\r\n const aggs: Record<string, Aggregation> = {\r\n lending: new Aggregation({\r\n buckets: [\r\n {\r\n key: 'is_lendable',\r\n doc_count: 3,\r\n },\r\n {\r\n key: 'available_to_borrow',\r\n doc_count: 2,\r\n },\r\n {\r\n key: 'is_readable',\r\n doc_count: 1,\r\n },\r\n ],\r\n }),\r\n };\r\n\r\n el.aggregations = aggs;\r\n await el.updateComplete;\r\n\r\n const facetsTemplate = el.shadowRoot?.querySelector('facets-template');\r\n const lendingTitles =\r\n facetsTemplate?.shadowRoot?.querySelectorAll('.facet-title');\r\n expect(lendingTitles?.length).to.equal(3);\r\n expect(lendingTitles?.item(0).textContent?.trim()).to.equal(\r\n 'Lending Library'\r\n );\r\n expect(lendingTitles?.item(1).textContent?.trim()).to.equal(\r\n 'Borrow 14 Days'\r\n );\r\n expect(lendingTitles?.item(2).textContent?.trim()).to.equal(\r\n 'Always Available'\r\n );\r\n });\r\n\r\n it('renders selected/negative lending facets with human-readable names', async () => {\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets></collection-facets>`\r\n );\r\n\r\n const selectedFacets: SelectedFacets = {\r\n subject: {},\r\n lending: {\r\n is_lendable: {\r\n key: 'is_lendable',\r\n count: 5,\r\n state: 'selected',\r\n },\r\n available_to_borrow: {\r\n key: 'available_to_borrow',\r\n count: 4,\r\n state: 'selected',\r\n },\r\n is_readable: {\r\n key: 'is_readable',\r\n count: 3,\r\n state: 'hidden',\r\n },\r\n },\r\n mediatype: {},\r\n language: {},\r\n creator: {},\r\n collection: {},\r\n year: {},\r\n };\r\n\r\n el.selectedFacets = selectedFacets;\r\n await el.updateComplete;\r\n\r\n const facetsTemplate = el.shadowRoot?.querySelector('facets-template');\r\n const lendingTitles =\r\n facetsTemplate?.shadowRoot?.querySelectorAll('.facet-title');\r\n expect(lendingTitles?.length).to.equal(3);\r\n expect(lendingTitles?.item(0).textContent?.trim()).to.equal(\r\n 'Lending Library'\r\n );\r\n expect(lendingTitles?.item(1).textContent?.trim()).to.equal(\r\n 'Borrow 14 Days'\r\n );\r\n expect(lendingTitles?.item(2).textContent?.trim()).to.equal(\r\n 'Always Available'\r\n );\r\n });\r\n\r\n it('only renders lending facets for is_lendable, available_to_borrow, and is_readable', async () => {\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets></collection-facets>`\r\n );\r\n\r\n const aggs: Record<string, Aggregation> = {\r\n lending: new Aggregation({\r\n buckets: [\r\n {\r\n key: 'is_lendable',\r\n doc_count: 5,\r\n },\r\n {\r\n key: 'is_borrowable',\r\n doc_count: 4,\r\n },\r\n {\r\n key: 'available_to_borrow',\r\n doc_count: 5,\r\n },\r\n {\r\n key: 'is_browsable',\r\n doc_count: 4,\r\n },\r\n {\r\n key: 'available_to_browse',\r\n doc_count: 5,\r\n },\r\n {\r\n key: 'is_readable',\r\n doc_count: 4,\r\n },\r\n {\r\n key: 'available_to_waitlist',\r\n doc_count: 5,\r\n },\r\n ],\r\n }),\r\n };\r\n\r\n el.aggregations = aggs;\r\n await el.updateComplete;\r\n\r\n const facetsTemplate = el.shadowRoot?.querySelector('facets-template');\r\n const lendingTitles =\r\n facetsTemplate?.shadowRoot?.querySelectorAll('.facet-title');\r\n expect(lendingTitles?.length).to.equal(3);\r\n expect(lendingTitles?.item(0).textContent?.trim()).to.equal(\r\n 'Lending Library'\r\n );\r\n expect(lendingTitles?.item(1).textContent?.trim()).to.equal(\r\n 'Borrow 14 Days'\r\n );\r\n expect(lendingTitles?.item(2).textContent?.trim()).to.equal(\r\n 'Always Available'\r\n );\r\n });\r\n\r\n it('does not render a More... link for lending facets', async () => {\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets></collection-facets>`\r\n );\r\n\r\n const aggs: Record<string, Aggregation> = {\r\n lending: new Aggregation({\r\n buckets: [\r\n {\r\n key: 'is_lendable',\r\n doc_count: 5,\r\n },\r\n {\r\n key: 'is_borrowable',\r\n doc_count: 4,\r\n },\r\n {\r\n key: 'available_to_borrow',\r\n doc_count: 5,\r\n },\r\n {\r\n key: 'is_browsable',\r\n doc_count: 4,\r\n },\r\n {\r\n key: 'available_to_browse',\r\n doc_count: 5,\r\n },\r\n {\r\n key: 'is_readable',\r\n doc_count: 4,\r\n },\r\n {\r\n key: 'available_to_waitlist',\r\n doc_count: 5,\r\n },\r\n ],\r\n }),\r\n };\r\n\r\n el.aggregations = aggs;\r\n await el.updateComplete;\r\n\r\n const moreLink = el.shadowRoot?.querySelector('.more-link');\r\n expect(moreLink).not.to.exist;\r\n });\r\n\r\n describe('More Facets', () => {\r\n it('Does not render < allowedFacetCount', async () => {\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets></collection-facets>`\r\n );\r\n\r\n const aggs: Record<string, Aggregation> = {\r\n subject: new Aggregation({\r\n buckets: [\r\n {\r\n key: 'foo',\r\n doc_count: 5,\r\n },\r\n ],\r\n }),\r\n };\r\n\r\n el.aggregations = aggs;\r\n await el.updateComplete;\r\n\r\n const moreLink = el.shadowRoot?.querySelector('.more-link');\r\n expect(moreLink).to.be.null;\r\n });\r\n\r\n it('renders sorting icons', async () => {\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets></collection-facets>`\r\n );\r\n\r\n const aggs: Record<string, Aggregation> = {\r\n subject: new Aggregation({\r\n buckets: [\r\n {\r\n key: 'foo',\r\n doc_count: 5,\r\n },\r\n ],\r\n }),\r\n };\r\n\r\n el.aggregations = aggs;\r\n await el.updateComplete;\r\n\r\n const sortingIcon = el.shadowRoot?.querySelector('.sorting-icon');\r\n expect(sortingIcon).to.exist;\r\n });\r\n\r\n it('does not render sorting icon for lending facets', async () => {\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets></collection-facets>`\r\n );\r\n\r\n const aggs: Record<string, Aggregation> = {\r\n lending: new Aggregation({\r\n buckets: [\r\n {\r\n key: 'is_readable',\r\n doc_count: 5,\r\n },\r\n ],\r\n }),\r\n };\r\n\r\n el.aggregations = aggs;\r\n await el.updateComplete;\r\n\r\n const sortingIcon = el.shadowRoot?.querySelector('.sorting-icon');\r\n expect(sortingIcon).not.to.exist;\r\n });\r\n\r\n it('Render More Facets', async () => {\r\n const el = await fixture<CollectionFacets>(\r\n html`<collection-facets\r\n .modalManager=${new ModalManager()}\r\n ></collection-facets>`\r\n );\r\n\r\n const aggs: Record<string, Aggregation> = {\r\n subject: new Aggregation({\r\n buckets: [\r\n {\r\n key: 'foo',\r\n doc_count: 5,\r\n },\r\n {\r\n key: 'fi',\r\n doc_count: 5,\r\n },\r\n {\r\n key: 'fum',\r\n doc_count: 5,\r\n },\r\n {\r\n key: 'flee',\r\n doc_count: 5,\r\n },\r\n {\r\n key: 'wheee',\r\n doc_count: 5,\r\n },\r\n {\r\n key: 'whooo',\r\n doc_count: 5,\r\n },\r\n {\r\n key: 'boop',\r\n doc_count: 5,\r\n },\r\n ],\r\n }),\r\n };\r\n\r\n el.aggregations = aggs;\r\n await el.updateComplete;\r\n\r\n let eventCaught = false;\r\n let eventFacet = '';\r\n el.addEventListener('showMoreFacets', e => {\r\n eventFacet = (e as CustomEvent).detail;\r\n eventCaught = true;\r\n });\r\n\r\n const moreLink = el.shadowRoot?.querySelector(\r\n '.more-link'\r\n ) as HTMLButtonElement;\r\n expect(moreLink).to.exist; // has link\r\n\r\n const showModalSpy = sinon.spy(\r\n el.modalManager as ModalManagerInterface,\r\n 'showModal'\r\n );\r\n // let's pop up modal\r\n moreLink?.click();\r\n await el.updateComplete;\r\n\r\n expect(showModalSpy.callCount).to.equal(1);\r\n expect(el.modalManager?.classList.contains('more-search-facets')).to.be\r\n .true;\r\n expect(eventCaught).to.be.true;\r\n expect(eventFacet).to.equal('subject' as FacetOption);\r\n });\r\n });\r\n});\r\n"]}
@@ -1 +1 @@
1
- import '../src/empty-placeholder';
1
+ import '../src/empty-placeholder';
@@ -1,34 +1,34 @@
1
- /* eslint-disable import/no-duplicates */
2
- import { expect, fixture } from '@open-wc/testing';
3
- import { html } from 'lit';
4
- import '../src/empty-placeholder';
5
- describe('Empty Placeholder', () => {
6
- it('should render with empty-query placeholder', async () => {
7
- var _a, _b, _c;
8
- const el = await fixture(html `<empty-placeholder></empty-placeholder>`);
9
- el.placeholderType = 'empty-query';
10
- await el.updateComplete;
11
- expect((_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.empty-query')).to.exist;
12
- expect((_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.null-result')).to.not.exist;
13
- expect((_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('infinite-scroller')).to.not.exist;
14
- });
15
- it('should render with null-result placeholder', async () => {
16
- var _a, _b, _c;
17
- const el = await fixture(html `<empty-placeholder></empty-placeholder>`);
18
- el.placeholderType = 'null-result';
19
- await el.updateComplete;
20
- expect((_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.null-result')).to.exist;
21
- expect((_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.empty-query')).to.not.exist;
22
- expect((_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('collection-facets')).to.not.exist;
23
- });
24
- it('should not render any empty placeholder', async () => {
25
- var _a, _b, _c;
26
- const el = await fixture(html `<empty-placeholder></empty-placeholder>`);
27
- el.placeholderType = null;
28
- await el.updateComplete;
29
- expect((_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.empty-query')).to.not.exist;
30
- expect((_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.null-result')).to.not.exist;
31
- expect((_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('collection-facets')).to.not.exist;
32
- });
33
- });
1
+ /* eslint-disable import/no-duplicates */
2
+ import { expect, fixture } from '@open-wc/testing';
3
+ import { html } from 'lit';
4
+ import '../src/empty-placeholder';
5
+ describe('Empty Placeholder', () => {
6
+ it('should render with empty-query placeholder', async () => {
7
+ var _a, _b, _c;
8
+ const el = await fixture(html `<empty-placeholder></empty-placeholder>`);
9
+ el.placeholderType = 'empty-query';
10
+ await el.updateComplete;
11
+ expect((_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.empty-query')).to.exist;
12
+ expect((_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.null-result')).to.not.exist;
13
+ expect((_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('infinite-scroller')).to.not.exist;
14
+ });
15
+ it('should render with null-result placeholder', async () => {
16
+ var _a, _b, _c;
17
+ const el = await fixture(html `<empty-placeholder></empty-placeholder>`);
18
+ el.placeholderType = 'null-result';
19
+ await el.updateComplete;
20
+ expect((_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.null-result')).to.exist;
21
+ expect((_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.empty-query')).to.not.exist;
22
+ expect((_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('collection-facets')).to.not.exist;
23
+ });
24
+ it('should not render any empty placeholder', async () => {
25
+ var _a, _b, _c;
26
+ const el = await fixture(html `<empty-placeholder></empty-placeholder>`);
27
+ el.placeholderType = null;
28
+ await el.updateComplete;
29
+ expect((_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.empty-query')).to.not.exist;
30
+ expect((_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.null-result')).to.not.exist;
31
+ expect((_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('collection-facets')).to.not.exist;
32
+ });
33
+ });
34
34
  //# sourceMappingURL=empty-placeholder.test.js.map
@@ -1 +1 @@
1
- import '../src/tiles/overlay/icon-overlay';
1
+ import '../src/tiles/overlay/icon-overlay';
@@ -1,31 +1,31 @@
1
- /* eslint-disable import/no-duplicates */
2
- import { expect, fixture } from '@open-wc/testing';
3
- import { html } from 'lit';
4
- import '../src/tiles/overlay/icon-overlay';
5
- describe('Icon Overlay component', () => {
6
- it('should render component if loggedIn required', async () => {
7
- var _a, _b, _c;
1
+ /* eslint-disable import/no-duplicates */
2
+ import { expect, fixture } from '@open-wc/testing';
3
+ import { html } from 'lit';
4
+ import '../src/tiles/overlay/icon-overlay';
5
+ describe('Icon Overlay component', () => {
6
+ it('should render component if loggedIn required', async () => {
7
+ var _a, _b, _c;
8
8
  const el = await fixture(html `
9
9
  <icon-overlay .loggedIn=${false} .loginRequired=${true}> </icon-overlay>
10
- `);
11
- const svgTitle = (_c = (_b = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('svg')) === null || _b === void 0 ? void 0 : _b.querySelector('title')) === null || _c === void 0 ? void 0 : _c.textContent;
12
- expect(svgTitle).to.equal('Log in to view this item');
13
- });
14
- it('should render component if content warning', async () => {
15
- var _a, _b, _c;
10
+ `);
11
+ const svgTitle = (_c = (_b = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('svg')) === null || _b === void 0 ? void 0 : _b.querySelector('title')) === null || _c === void 0 ? void 0 : _c.textContent;
12
+ expect(svgTitle).to.equal('Log in to view this item');
13
+ });
14
+ it('should render component if content warning', async () => {
15
+ var _a, _b, _c;
16
16
  const el = await fixture(html `
17
17
  <icon-overlay .loggedIn=${false} .loginRequired=${false}> </icon-overlay>
18
- `);
19
- const svgTitle = (_c = (_b = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('svg')) === null || _b === void 0 ? void 0 : _b.querySelector('title')) === null || _c === void 0 ? void 0 : _c.textContent;
20
- expect(svgTitle).to.equal('Content may be inappropriate');
21
- });
22
- it('should render component if content warning', async () => {
23
- var _a, _b, _c;
18
+ `);
19
+ const svgTitle = (_c = (_b = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('svg')) === null || _b === void 0 ? void 0 : _b.querySelector('title')) === null || _c === void 0 ? void 0 : _c.textContent;
20
+ expect(svgTitle).to.equal('Content may be inappropriate');
21
+ });
22
+ it('should render component if content warning', async () => {
23
+ var _a, _b, _c;
24
24
  const el = await fixture(html `
25
25
  <icon-overlay .loggedIn=${true} .loginRequired=${true}> </icon-overlay>
26
- `);
27
- const svgTitle = (_c = (_b = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('svg')) === null || _b === void 0 ? void 0 : _b.querySelector('title')) === null || _c === void 0 ? void 0 : _c.textContent;
28
- expect(svgTitle).to.equal('Content may be inappropriate');
29
- });
30
- });
26
+ `);
27
+ const svgTitle = (_c = (_b = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('svg')) === null || _b === void 0 ? void 0 : _b.querySelector('title')) === null || _c === void 0 ? void 0 : _c.textContent;
28
+ expect(svgTitle).to.equal('Content may be inappropriate');
29
+ });
30
+ });
31
31
  //# sourceMappingURL=icon-overlay.test.js.map
@@ -1 +1 @@
1
- import '../src/tiles/item-image';
1
+ import '../src/tiles/item-image';
@@ -1,39 +1,39 @@
1
- /* eslint-disable import/no-duplicates */
2
- import { expect, fixture } from '@open-wc/testing';
3
- import { html } from 'lit';
4
- import '../src/tiles/item-image';
5
- const baseImageUrl = 'https://archive.org';
6
- const testBookModel = {
7
- collections: [],
8
- commentCount: 0,
9
- creators: [],
10
- favCount: 0,
11
- identifier: '18730130BloomfieldRecordCompleteIssue',
12
- itemCount: 0,
13
- mediatype: 'texts',
14
- subjects: [],
15
- title: 'Sample Waveform',
16
- viewCount: 0,
17
- loginRequired: false,
18
- contentWarning: false,
19
- };
20
- const testAudioModel = {
21
- collections: [],
22
- commentCount: 0,
23
- creators: [],
24
- favCount: 0,
25
- identifier: 'dwd2015-01-24',
26
- itemCount: 0,
27
- mediatype: 'audio',
28
- subjects: [],
29
- title: 'Sample Waveform',
30
- viewCount: 0,
31
- loginRequired: false,
32
- contentWarning: false,
33
- };
34
- describe('ItemImage component', () => {
35
- it('should render initial component', async () => {
36
- var _a, _b;
1
+ /* eslint-disable import/no-duplicates */
2
+ import { expect, fixture } from '@open-wc/testing';
3
+ import { html } from 'lit';
4
+ import '../src/tiles/item-image';
5
+ const baseImageUrl = 'https://archive.org';
6
+ const testBookModel = {
7
+ collections: [],
8
+ commentCount: 0,
9
+ creators: [],
10
+ favCount: 0,
11
+ identifier: '18730130BloomfieldRecordCompleteIssue',
12
+ itemCount: 0,
13
+ mediatype: 'texts',
14
+ subjects: [],
15
+ title: 'Sample Waveform',
16
+ viewCount: 0,
17
+ loginRequired: false,
18
+ contentWarning: false,
19
+ };
20
+ const testAudioModel = {
21
+ collections: [],
22
+ commentCount: 0,
23
+ creators: [],
24
+ favCount: 0,
25
+ identifier: 'dwd2015-01-24',
26
+ itemCount: 0,
27
+ mediatype: 'audio',
28
+ subjects: [],
29
+ title: 'Sample Waveform',
30
+ viewCount: 0,
31
+ loginRequired: false,
32
+ contentWarning: false,
33
+ };
34
+ describe('ItemImage component', () => {
35
+ it('should render initial component', async () => {
36
+ var _a, _b;
37
37
  const el = await fixture(html `
38
38
  <item-image
39
39
  .isListTile=${false}
@@ -42,14 +42,14 @@ describe('ItemImage component', () => {
42
42
  .baseImageUrl=${baseImageUrl}
43
43
  >
44
44
  </item-image>
45
- `);
46
- const dropShadow = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.drop-shadow');
47
- const imgClassName = (_b = dropShadow === null || dropShadow === void 0 ? void 0 : dropShadow.querySelector('img')) === null || _b === void 0 ? void 0 : _b.className;
48
- expect(dropShadow).to.exist;
49
- expect(imgClassName).to.eql(' contain ');
50
- });
51
- it('should render component if mediatype is waveform', async () => {
52
- var _a;
45
+ `);
46
+ const dropShadow = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.drop-shadow');
47
+ const imgClassName = (_b = dropShadow === null || dropShadow === void 0 ? void 0 : dropShadow.querySelector('img')) === null || _b === void 0 ? void 0 : _b.className;
48
+ expect(dropShadow).to.exist;
49
+ expect(imgClassName).to.eql(' contain ');
50
+ });
51
+ it('should render component if mediatype is waveform', async () => {
52
+ var _a;
53
53
  const el = await fixture(html `
54
54
  <item-image
55
55
  .isListTile=${false}
@@ -58,16 +58,16 @@ describe('ItemImage component', () => {
58
58
  .baseImageUrl=${baseImageUrl}
59
59
  >
60
60
  </item-image>
61
- `);
62
- const dropShadow = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.drop-shadow');
63
- const image = dropShadow === null || dropShadow === void 0 ? void 0 : dropShadow.querySelector('img');
64
- expect(dropShadow).to.exist;
65
- expect(image).to.exist;
66
- // simulate image onLoad event check if image className is waveform
67
- setTimeout(() => {
68
- const imgClassName = image === null || image === void 0 ? void 0 : image.className;
69
- expect(imgClassName).to.eql(' waveform ');
70
- }, 1000);
71
- });
72
- });
61
+ `);
62
+ const dropShadow = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.drop-shadow');
63
+ const image = dropShadow === null || dropShadow === void 0 ? void 0 : dropShadow.querySelector('img');
64
+ expect(dropShadow).to.exist;
65
+ expect(image).to.exist;
66
+ // simulate image onLoad event check if image className is waveform
67
+ setTimeout(() => {
68
+ const imgClassName = image === null || image === void 0 ? void 0 : image.className;
69
+ expect(imgClassName).to.eql(' waveform ');
70
+ }, 1000);
71
+ });
72
+ });
73
73
  //# sourceMappingURL=item-image.test.js.map
@@ -1 +1 @@
1
- export {};
1
+ export {};
@@ -1,17 +1,17 @@
1
- import { expect } from '@open-wc/testing';
2
- import { mediatypeConfig } from '../src/mediatype/mediatype-config';
3
- describe('mediatypeConfig', () => {
4
- it('returns undefined', () => {
5
- expect(mediatypeConfig['']).to.equal(undefined);
6
- expect(mediatypeConfig.test).to.equal(undefined);
7
- expect(mediatypeConfig.media).to.equal(undefined);
8
- expect(mediatypeConfig.testing).to.equal(undefined);
9
- });
10
- it('returns audio', () => {
11
- expect(mediatypeConfig.audio).to.exist;
12
- expect(mediatypeConfig.audio.color).to.exist;
13
- expect(mediatypeConfig.audio.icon).to.exist;
14
- expect(mediatypeConfig.audio.text).to.exist;
15
- });
16
- });
1
+ import { expect } from '@open-wc/testing';
2
+ import { mediatypeConfig } from '../src/mediatype/mediatype-config';
3
+ describe('mediatypeConfig', () => {
4
+ it('returns undefined', () => {
5
+ expect(mediatypeConfig['']).to.equal(undefined);
6
+ expect(mediatypeConfig.test).to.equal(undefined);
7
+ expect(mediatypeConfig.media).to.equal(undefined);
8
+ expect(mediatypeConfig.testing).to.equal(undefined);
9
+ });
10
+ it('returns audio', () => {
11
+ expect(mediatypeConfig.audio).to.exist;
12
+ expect(mediatypeConfig.audio.color).to.exist;
13
+ expect(mediatypeConfig.audio.icon).to.exist;
14
+ expect(mediatypeConfig.audio.text).to.exist;
15
+ });
16
+ });
17
17
  //# sourceMappingURL=mediatype-config.test.js.map
@@ -1,10 +1,10 @@
1
- import type { AnalyticsEvent, AnalyticsManagerInterface } from '@internetarchive/analytics-manager';
2
- export declare class MockAnalyticsHandler implements AnalyticsManagerInterface {
3
- callCategory?: string;
4
- callAction?: string;
5
- callLabel?: string;
6
- callEventConfiguration?: object;
7
- sendPing(): void;
8
- sendEvent(options: AnalyticsEvent): void;
9
- sendEventNoSampling(options: AnalyticsEvent): void;
10
- }
1
+ import type { AnalyticsEvent, AnalyticsManagerInterface } from '@internetarchive/analytics-manager';
2
+ export declare class MockAnalyticsHandler implements AnalyticsManagerInterface {
3
+ callCategory?: string;
4
+ callAction?: string;
5
+ callLabel?: string;
6
+ callEventConfiguration?: object;
7
+ sendPing(): void;
8
+ sendEvent(options: AnalyticsEvent): void;
9
+ sendEventNoSampling(options: AnalyticsEvent): void;
10
+ }
@@ -1,16 +1,16 @@
1
- export class MockAnalyticsHandler {
2
- sendPing() { }
3
- sendEvent(options) {
4
- this.callCategory = options.category;
5
- this.callAction = options.action;
6
- this.callLabel = options.label;
7
- this.callEventConfiguration = options.eventConfiguration;
8
- }
9
- sendEventNoSampling(options) {
10
- this.callCategory = options.category;
11
- this.callAction = options.action;
12
- this.callLabel = options.label;
13
- this.callEventConfiguration = options.eventConfiguration;
14
- }
15
- }
1
+ export class MockAnalyticsHandler {
2
+ sendPing() { }
3
+ sendEvent(options) {
4
+ this.callCategory = options.category;
5
+ this.callAction = options.action;
6
+ this.callLabel = options.label;
7
+ this.callEventConfiguration = options.eventConfiguration;
8
+ }
9
+ sendEventNoSampling(options) {
10
+ this.callCategory = options.category;
11
+ this.callAction = options.action;
12
+ this.callLabel = options.label;
13
+ this.callEventConfiguration = options.eventConfiguration;
14
+ }
15
+ }
16
16
  //# sourceMappingURL=mock-analytics-handler.js.map
@@ -1,7 +1,7 @@
1
- import type { CollectionNameCacheInterface } from '@internetarchive/collection-name-cache';
2
- export declare class MockCollectionNameCache implements CollectionNameCacheInterface {
3
- collectionNamesRequested: string[];
4
- preloadIdentifiersRequested: string[];
5
- collectionNameFor(identifier: string): Promise<string | null>;
6
- preloadIdentifiers(identifiers: string[]): Promise<void>;
7
- }
1
+ import type { CollectionNameCacheInterface } from '@internetarchive/collection-name-cache';
2
+ export declare class MockCollectionNameCache implements CollectionNameCacheInterface {
3
+ collectionNamesRequested: string[];
4
+ preloadIdentifiersRequested: string[];
5
+ collectionNameFor(identifier: string): Promise<string | null>;
6
+ preloadIdentifiers(identifiers: string[]): Promise<void>;
7
+ }
@@ -1,14 +1,14 @@
1
- export class MockCollectionNameCache {
2
- constructor() {
3
- this.collectionNamesRequested = [];
4
- this.preloadIdentifiersRequested = [];
5
- }
6
- async collectionNameFor(identifier) {
7
- this.collectionNamesRequested.push(identifier);
8
- return `${identifier}-name`;
9
- }
10
- async preloadIdentifiers(identifiers) {
11
- this.preloadIdentifiersRequested = identifiers;
12
- }
13
- }
1
+ export class MockCollectionNameCache {
2
+ constructor() {
3
+ this.collectionNamesRequested = [];
4
+ this.preloadIdentifiersRequested = [];
5
+ }
6
+ async collectionNameFor(identifier) {
7
+ this.collectionNamesRequested.push(identifier);
8
+ return `${identifier}-name`;
9
+ }
10
+ async preloadIdentifiers(identifiers) {
11
+ this.preloadIdentifiersRequested = identifiers;
12
+ }
13
+ }
14
14
  //# sourceMappingURL=mock-collection-name-cache.js.map
@@ -1,5 +1,5 @@
1
- import type { Result } from '@internetarchive/result-type';
2
- import { SearchResponse, SearchServiceError } from '@internetarchive/search-service';
3
- export declare const mockSuccessSingleResult: Result<SearchResponse, SearchServiceError>;
4
- export declare const getMockSuccessSingleResultWithSort: (resultsSpy: Function) => Result<SearchResponse, SearchServiceError>;
5
- export declare const mockSuccessMultipleResults: Result<SearchResponse, SearchServiceError>;
1
+ import type { Result } from '@internetarchive/result-type';
2
+ import { SearchResponse, SearchServiceError } from '@internetarchive/search-service';
3
+ export declare const mockSuccessSingleResult: Result<SearchResponse, SearchServiceError>;
4
+ export declare const getMockSuccessSingleResultWithSort: (resultsSpy: Function) => Result<SearchResponse, SearchServiceError>;
5
+ export declare const mockSuccessMultipleResults: Result<SearchResponse, SearchServiceError>;