@internetarchive/collection-browser 4.7.1-alpha-webdev9189.0 → 4.8.1-webdev-9227.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -0
- package/dist/src/app-root.js +0 -2
- package/dist/src/app-root.js.map +1 -1
- package/dist/src/assets/img/icons/check.d.ts +2 -0
- package/dist/src/assets/img/icons/check.js +5 -0
- package/dist/src/assets/img/icons/check.js.map +1 -0
- package/dist/src/collection-browser.d.ts +2 -1
- package/dist/src/collection-browser.js +5 -27
- package/dist/src/collection-browser.js.map +1 -1
- package/dist/src/collection-facets/facet-row-template.d.ts +38 -0
- package/dist/src/collection-facets/facet-row-template.js +200 -0
- package/dist/src/collection-facets/facet-row-template.js.map +1 -0
- package/dist/src/collection-facets/facet-row.js +11 -186
- package/dist/src/collection-facets/facet-row.js.map +1 -1
- package/dist/src/collection-facets/models.d.ts +7 -2
- package/dist/src/collection-facets/models.js +7 -2
- package/dist/src/collection-facets/models.js.map +1 -1
- package/dist/src/collection-facets/more-facets-content.d.ts +87 -21
- package/dist/src/collection-facets/more-facets-content.js +479 -201
- package/dist/src/collection-facets/more-facets-content.js.map +1 -1
- package/dist/src/collection-facets/more-facets-scroller.d.ts +85 -0
- package/dist/src/collection-facets/more-facets-scroller.js +429 -0
- package/dist/src/collection-facets/more-facets-scroller.js.map +1 -0
- package/dist/src/collection-facets/page-window.d.ts +73 -0
- package/dist/src/collection-facets/page-window.js +202 -0
- package/dist/src/collection-facets/page-window.js.map +1 -0
- package/dist/src/collection-facets/toggle-switch.js +1 -0
- package/dist/src/collection-facets/toggle-switch.js.map +1 -1
- package/dist/src/collection-facets.js +3 -2
- package/dist/src/collection-facets.js.map +1 -1
- package/dist/src/empty-placeholder.d.ts +7 -7
- package/dist/src/empty-placeholder.js +29 -15
- package/dist/src/empty-placeholder.js.map +1 -1
- package/dist/src/expanded-date-picker.js +3 -2
- package/dist/src/expanded-date-picker.js.map +1 -1
- package/dist/src/locales/es.d.ts +94 -0
- package/dist/src/locales/es.js +109 -0
- package/dist/src/locales/es.js.map +1 -0
- package/dist/src/manage/manage-bar.d.ts +3 -2
- package/dist/src/manage/manage-bar.js +6 -7
- package/dist/src/manage/manage-bar.js.map +1 -1
- package/dist/src/manage/remove-items-modal-content.js +3 -2
- package/dist/src/manage/remove-items-modal-content.js.map +1 -1
- package/dist/src/models.d.ts +4 -0
- package/dist/src/models.js +22 -2
- package/dist/src/models.js.map +1 -1
- package/dist/src/sort-filter-bar/sort-filter-bar.js +3 -3
- package/dist/src/sort-filter-bar/sort-filter-bar.js.map +1 -1
- package/dist/src/tiles/grid/account-tile.js +3 -2
- package/dist/src/tiles/grid/account-tile.js.map +1 -1
- package/dist/src/tiles/grid/collection-tile.js +3 -2
- package/dist/src/tiles/grid/collection-tile.js.map +1 -1
- package/dist/src/tiles/grid/item-tile.js +3 -2
- package/dist/src/tiles/grid/item-tile.js.map +1 -1
- package/dist/src/tiles/grid/tile-stats.js +3 -2
- package/dist/src/tiles/grid/tile-stats.js.map +1 -1
- package/dist/src/tiles/list/tile-list-compact-header.js +3 -2
- package/dist/src/tiles/list/tile-list-compact-header.js.map +1 -1
- package/dist/src/tiles/list/tile-list-compact.js +3 -1
- package/dist/src/tiles/list/tile-list-compact.js.map +1 -1
- package/dist/src/tiles/list/tile-list.js +3 -2
- package/dist/src/tiles/list/tile-list.js.map +1 -1
- package/dist/src/tiles/overlay/text-overlay.js +3 -1
- package/dist/src/tiles/overlay/text-overlay.js.map +1 -1
- package/dist/src/tiles/review-block.js +3 -2
- package/dist/src/tiles/review-block.js.map +1 -1
- package/dist/src/tiles/tile-dispatcher.d.ts +2 -1
- package/dist/src/tiles/tile-dispatcher.js +5 -4
- package/dist/src/tiles/tile-dispatcher.js.map +1 -1
- package/dist/src/utils/log.d.ts +1 -4
- package/dist/src/utils/normalize-filter-text.d.ts +28 -0
- package/dist/src/utils/normalize-filter-text.js +35 -0
- package/dist/src/utils/normalize-filter-text.js.map +1 -0
- package/locales/es.d.ts +1 -0
- package/locales/es.js +1 -0
- package/package.json +15 -1
- package/.editorconfig +0 -29
- package/.github/workflows/ci.yml +0 -29
- package/.github/workflows/gh-pages-main.yml +0 -41
- package/.github/workflows/npm-publish.yml +0 -42
- package/.github/workflows/pr-preview.yml +0 -40
- package/.husky/pre-commit +0 -1
- package/.prettierignore +0 -1
- package/dist/src/collection-facets/more-facets-pagination.d.ts +0 -36
- package/dist/src/collection-facets/more-facets-pagination.js +0 -260
- package/dist/src/collection-facets/more-facets-pagination.js.map +0 -1
- package/dist/test/collection-browser.test.d.ts +0 -1
- package/dist/test/collection-browser.test.js +0 -1849
- package/dist/test/collection-browser.test.js.map +0 -1
- package/dist/test/collection-facets/facet-row.test.d.ts +0 -1
- package/dist/test/collection-facets/facet-row.test.js +0 -291
- package/dist/test/collection-facets/facet-row.test.js.map +0 -1
- package/dist/test/collection-facets/facets-template.test.d.ts +0 -1
- package/dist/test/collection-facets/facets-template.test.js +0 -95
- package/dist/test/collection-facets/facets-template.test.js.map +0 -1
- package/dist/test/collection-facets/more-facets-content.test.d.ts +0 -1
- package/dist/test/collection-facets/more-facets-content.test.js +0 -159
- package/dist/test/collection-facets/more-facets-content.test.js.map +0 -1
- package/dist/test/collection-facets/more-facets-pagination.test.d.ts +0 -1
- package/dist/test/collection-facets/more-facets-pagination.test.js +0 -126
- package/dist/test/collection-facets/more-facets-pagination.test.js.map +0 -1
- package/dist/test/collection-facets/toggle-switch.test.d.ts +0 -1
- package/dist/test/collection-facets/toggle-switch.test.js +0 -99
- package/dist/test/collection-facets/toggle-switch.test.js.map +0 -1
- package/dist/test/collection-facets.test.d.ts +0 -2
- package/dist/test/collection-facets.test.js +0 -728
- package/dist/test/collection-facets.test.js.map +0 -1
- package/dist/test/data-source/collection-browser-data-source.test.d.ts +0 -1
- package/dist/test/data-source/collection-browser-data-source.test.js +0 -154
- package/dist/test/data-source/collection-browser-data-source.test.js.map +0 -1
- package/dist/test/empty-placeholder.test.d.ts +0 -1
- package/dist/test/empty-placeholder.test.js +0 -57
- package/dist/test/empty-placeholder.test.js.map +0 -1
- package/dist/test/expanded-date-picker.test.d.ts +0 -1
- package/dist/test/expanded-date-picker.test.js +0 -124
- package/dist/test/expanded-date-picker.test.js.map +0 -1
- package/dist/test/icon-overlay.test.d.ts +0 -1
- package/dist/test/icon-overlay.test.js +0 -31
- package/dist/test/icon-overlay.test.js.map +0 -1
- package/dist/test/image-block.test.d.ts +0 -1
- package/dist/test/image-block.test.js +0 -208
- package/dist/test/image-block.test.js.map +0 -1
- package/dist/test/item-image.test.d.ts +0 -1
- package/dist/test/item-image.test.js +0 -187
- package/dist/test/item-image.test.js.map +0 -1
- package/dist/test/manage/manage-bar.test.d.ts +0 -3
- package/dist/test/manage/manage-bar.test.js +0 -216
- package/dist/test/manage/manage-bar.test.js.map +0 -1
- package/dist/test/manage/remove-items-modal-content.test.d.ts +0 -1
- package/dist/test/manage/remove-items-modal-content.test.js +0 -60
- package/dist/test/manage/remove-items-modal-content.test.js.map +0 -1
- package/dist/test/mediatype-config.test.d.ts +0 -1
- package/dist/test/mediatype-config.test.js +0 -11
- package/dist/test/mediatype-config.test.js.map +0 -1
- package/dist/test/mocks/mock-analytics-handler.d.ts +0 -10
- package/dist/test/mocks/mock-analytics-handler.js +0 -16
- package/dist/test/mocks/mock-analytics-handler.js.map +0 -1
- package/dist/test/mocks/mock-search-responses.d.ts +0 -31
- package/dist/test/mocks/mock-search-responses.js +0 -1241
- package/dist/test/mocks/mock-search-responses.js.map +0 -1
- package/dist/test/mocks/mock-search-service.d.ts +0 -16
- package/dist/test/mocks/mock-search-service.js +0 -64
- package/dist/test/mocks/mock-search-service.js.map +0 -1
- package/dist/test/restoration-state-handler.test.d.ts +0 -1
- package/dist/test/restoration-state-handler.test.js +0 -335
- package/dist/test/restoration-state-handler.test.js.map +0 -1
- package/dist/test/review-block.test.d.ts +0 -1
- package/dist/test/review-block.test.js +0 -46
- package/dist/test/review-block.test.js.map +0 -1
- package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.d.ts +0 -1
- package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js +0 -12
- package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js.map +0 -1
- package/dist/test/sort-filter-bar/alpha-bar.test.d.ts +0 -1
- package/dist/test/sort-filter-bar/alpha-bar.test.js +0 -68
- package/dist/test/sort-filter-bar/alpha-bar.test.js.map +0 -1
- package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +0 -1
- package/dist/test/sort-filter-bar/sort-filter-bar.test.js +0 -326
- package/dist/test/sort-filter-bar/sort-filter-bar.test.js.map +0 -1
- package/dist/test/text-overlay.test.d.ts +0 -1
- package/dist/test/text-overlay.test.js +0 -43
- package/dist/test/text-overlay.test.js.map +0 -1
- package/dist/test/text-snippet-block.test.d.ts +0 -1
- package/dist/test/text-snippet-block.test.js +0 -58
- package/dist/test/text-snippet-block.test.js.map +0 -1
- package/dist/test/tile-stats.test.d.ts +0 -1
- package/dist/test/tile-stats.test.js +0 -167
- package/dist/test/tile-stats.test.js.map +0 -1
- package/dist/test/tiles/grid/account-tile.test.d.ts +0 -1
- package/dist/test/tiles/grid/account-tile.test.js +0 -96
- package/dist/test/tiles/grid/account-tile.test.js.map +0 -1
- package/dist/test/tiles/grid/collection-tile.test.d.ts +0 -1
- package/dist/test/tiles/grid/collection-tile.test.js +0 -90
- package/dist/test/tiles/grid/collection-tile.test.js.map +0 -1
- package/dist/test/tiles/grid/item-tile.test.d.ts +0 -1
- package/dist/test/tiles/grid/item-tile.test.js +0 -400
- package/dist/test/tiles/grid/item-tile.test.js.map +0 -1
- package/dist/test/tiles/grid/search-tile.test.d.ts +0 -1
- package/dist/test/tiles/grid/search-tile.test.js +0 -62
- package/dist/test/tiles/grid/search-tile.test.js.map +0 -1
- package/dist/test/tiles/hover/hover-pane-controller.test.d.ts +0 -1
- package/dist/test/tiles/hover/hover-pane-controller.test.js +0 -351
- package/dist/test/tiles/hover/hover-pane-controller.test.js.map +0 -1
- package/dist/test/tiles/hover/tile-hover-pane.test.d.ts +0 -1
- package/dist/test/tiles/hover/tile-hover-pane.test.js +0 -53
- package/dist/test/tiles/hover/tile-hover-pane.test.js.map +0 -1
- package/dist/test/tiles/list/tile-list-compact-header.test.d.ts +0 -1
- package/dist/test/tiles/list/tile-list-compact-header.test.js +0 -36
- package/dist/test/tiles/list/tile-list-compact-header.test.js.map +0 -1
- package/dist/test/tiles/list/tile-list-compact.test.d.ts +0 -1
- package/dist/test/tiles/list/tile-list-compact.test.js +0 -237
- package/dist/test/tiles/list/tile-list-compact.test.js.map +0 -1
- package/dist/test/tiles/list/tile-list.test.d.ts +0 -1
- package/dist/test/tiles/list/tile-list.test.js +0 -460
- package/dist/test/tiles/list/tile-list.test.js.map +0 -1
- package/dist/test/tiles/tile-dispatcher.test.d.ts +0 -1
- package/dist/test/tiles/tile-dispatcher.test.js +0 -246
- package/dist/test/tiles/tile-dispatcher.test.js.map +0 -1
- package/dist/test/tiles/tile-display-value-provider.test.d.ts +0 -1
- package/dist/test/tiles/tile-display-value-provider.test.js +0 -142
- package/dist/test/tiles/tile-display-value-provider.test.js.map +0 -1
- package/dist/test/tiles/tile-mediatype-icon.test.d.ts +0 -1
- package/dist/test/tiles/tile-mediatype-icon.test.js +0 -133
- package/dist/test/tiles/tile-mediatype-icon.test.js.map +0 -1
- package/dist/test/utils/array-equals.test.d.ts +0 -1
- package/dist/test/utils/array-equals.test.js +0 -27
- package/dist/test/utils/array-equals.test.js.map +0 -1
- package/dist/test/utils/format-count.test.d.ts +0 -1
- package/dist/test/utils/format-count.test.js +0 -24
- package/dist/test/utils/format-count.test.js.map +0 -1
- package/dist/test/utils/format-date.test.d.ts +0 -1
- package/dist/test/utils/format-date.test.js +0 -61
- package/dist/test/utils/format-date.test.js.map +0 -1
- package/dist/test/utils/format-unit-size.test.d.ts +0 -1
- package/dist/test/utils/format-unit-size.test.js +0 -18
- package/dist/test/utils/format-unit-size.test.js.map +0 -1
- package/dist/test/utils/local-date-from-utc.test.d.ts +0 -1
- package/dist/test/utils/local-date-from-utc.test.js +0 -27
- package/dist/test/utils/local-date-from-utc.test.js.map +0 -1
- package/eslint.config.mjs +0 -53
- package/index.html +0 -24
- package/index.ts +0 -29
- package/local.archive.org.cert +0 -86
- package/local.archive.org.key +0 -27
- package/pnpm-workspace.yaml +0 -30
- package/renovate.json +0 -6
- package/src/app-root.ts +0 -1284
- package/src/assets/img/icons/arrow-left.ts +0 -10
- package/src/assets/img/icons/arrow-right.ts +0 -10
- package/src/assets/img/icons/chevron.ts +0 -4
- package/src/assets/img/icons/close-circle-dark.ts +0 -5
- package/src/assets/img/icons/contract.ts +0 -9
- package/src/assets/img/icons/empty-query.ts +0 -5
- package/src/assets/img/icons/expand.ts +0 -9
- package/src/assets/img/icons/eye-closed.ts +0 -5
- package/src/assets/img/icons/eye.ts +0 -5
- package/src/assets/img/icons/favorite-filled.ts +0 -10
- package/src/assets/img/icons/favorite-unfilled.ts +0 -9
- package/src/assets/img/icons/filter.ts +0 -10
- package/src/assets/img/icons/login-required.ts +0 -18
- package/src/assets/img/icons/mediatype/account.ts +0 -14
- package/src/assets/img/icons/mediatype/audio.ts +0 -14
- package/src/assets/img/icons/mediatype/collection.ts +0 -12
- package/src/assets/img/icons/mediatype/data.ts +0 -15
- package/src/assets/img/icons/mediatype/etree.ts +0 -14
- package/src/assets/img/icons/mediatype/film.ts +0 -14
- package/src/assets/img/icons/mediatype/images.ts +0 -13
- package/src/assets/img/icons/mediatype/radio.ts +0 -15
- package/src/assets/img/icons/mediatype/search.ts +0 -14
- package/src/assets/img/icons/mediatype/software.ts +0 -13
- package/src/assets/img/icons/mediatype/texts.ts +0 -13
- package/src/assets/img/icons/mediatype/tv-commercial.ts +0 -12
- package/src/assets/img/icons/mediatype/tv-fact-check.ts +0 -12
- package/src/assets/img/icons/mediatype/tv-quote.ts +0 -12
- package/src/assets/img/icons/mediatype/tv.ts +0 -14
- package/src/assets/img/icons/mediatype/video.ts +0 -14
- package/src/assets/img/icons/mediatype/web.ts +0 -13
- package/src/assets/img/icons/null-result.ts +0 -5
- package/src/assets/img/icons/quote.ts +0 -7
- package/src/assets/img/icons/restricted.ts +0 -13
- package/src/assets/img/icons/reviews.ts +0 -11
- package/src/assets/img/icons/upload.ts +0 -12
- package/src/assets/img/icons/views.ts +0 -11
- package/src/circular-activity-indicator.ts +0 -64
- package/src/collection-browser.ts +0 -3187
- package/src/collection-facets/facet-row.ts +0 -309
- package/src/collection-facets/facet-tombstone-row.ts +0 -40
- package/src/collection-facets/facets-template.ts +0 -85
- package/src/collection-facets/models.ts +0 -10
- package/src/collection-facets/more-facets-content.ts +0 -644
- package/src/collection-facets/more-facets-pagination.ts +0 -294
- package/src/collection-facets/smart-facets/dedupe.ts +0 -44
- package/src/collection-facets/smart-facets/heuristics/browser-language/browser-language-heuristic.ts +0 -27
- package/src/collection-facets/smart-facets/heuristics/index.ts +0 -3
- package/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-heuristic.ts +0 -17
- package/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-map.ts +0 -70
- package/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-entity-map.ts +0 -79
- package/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-heuristic.ts +0 -93
- package/src/collection-facets/smart-facets/models.ts +0 -36
- package/src/collection-facets/smart-facets/smart-facet-bar.ts +0 -437
- package/src/collection-facets/smart-facets/smart-facet-button.ts +0 -145
- package/src/collection-facets/smart-facets/smart-facet-dropdown.ts +0 -185
- package/src/collection-facets/smart-facets/smart-facet-equals.ts +0 -16
- package/src/collection-facets/smart-facets/smart-facet-heuristics.ts +0 -26
- package/src/collection-facets/toggle-switch.ts +0 -174
- package/src/collection-facets.ts +0 -1013
- package/src/data-source/collection-browser-data-source-interface.ts +0 -351
- package/src/data-source/collection-browser-data-source.ts +0 -1474
- package/src/data-source/collection-browser-query-state.ts +0 -60
- package/src/data-source/models.ts +0 -56
- package/src/empty-placeholder.ts +0 -192
- package/src/expanded-date-picker.ts +0 -191
- package/src/language-code-handler/language-code-handler.ts +0 -64
- package/src/language-code-handler/language-code-mapping.ts +0 -564
- package/src/manage/manage-bar.ts +0 -276
- package/src/manage/remove-items-modal-content.ts +0 -102
- package/src/mediatype/mediatype-config.ts +0 -146
- package/src/models.ts +0 -895
- package/src/restoration-state-handler.ts +0 -550
- package/src/sort-filter-bar/alpha-bar-tooltip.ts +0 -53
- package/src/sort-filter-bar/alpha-bar.ts +0 -252
- package/src/sort-filter-bar/img/compact.ts +0 -5
- package/src/sort-filter-bar/img/list.ts +0 -5
- package/src/sort-filter-bar/img/sort-toggle-disabled.ts +0 -15
- package/src/sort-filter-bar/img/sort-toggle-down.ts +0 -17
- package/src/sort-filter-bar/img/sort-toggle-up.ts +0 -17
- package/src/sort-filter-bar/img/sort-triangle.ts +0 -5
- package/src/sort-filter-bar/img/tile.ts +0 -5
- package/src/sort-filter-bar/sort-filter-bar.ts +0 -734
- package/src/styles/ia-button.ts +0 -139
- package/src/styles/item-image-styles.ts +0 -124
- package/src/styles/sr-only.ts +0 -18
- package/src/styles/tile-action-styles.ts +0 -59
- package/src/tiles/base-tile-component.ts +0 -124
- package/src/tiles/collection-browser-loading-tile.ts +0 -26
- package/src/tiles/grid/account-tile.ts +0 -113
- package/src/tiles/grid/collection-tile.ts +0 -184
- package/src/tiles/grid/item-tile.ts +0 -347
- package/src/tiles/grid/search-tile.ts +0 -90
- package/src/tiles/grid/styles/tile-grid-shared-styles.ts +0 -130
- package/src/tiles/grid/tile-stats.ts +0 -211
- package/src/tiles/hover/hover-pane-controller.ts +0 -638
- package/src/tiles/hover/tile-hover-pane.ts +0 -184
- package/src/tiles/image-block.ts +0 -162
- package/src/tiles/item-image.ts +0 -214
- package/src/tiles/list/tile-list-compact-header.ts +0 -112
- package/src/tiles/list/tile-list-compact.ts +0 -278
- package/src/tiles/list/tile-list.ts +0 -718
- package/src/tiles/models.ts +0 -21
- package/src/tiles/overlay/icon-overlay.ts +0 -57
- package/src/tiles/overlay/text-overlay.ts +0 -79
- package/src/tiles/review-block.ts +0 -130
- package/src/tiles/text-snippet-block.ts +0 -132
- package/src/tiles/tile-dispatcher.ts +0 -637
- package/src/tiles/tile-display-value-provider.ts +0 -133
- package/src/tiles/tile-mediatype-icon.ts +0 -133
- package/src/utils/analytics-events.ts +0 -29
- package/src/utils/array-equals.ts +0 -8
- package/src/utils/collapse-repeated-quotes.ts +0 -13
- package/src/utils/date-filter-field.ts +0 -11
- package/src/utils/facet-utils.ts +0 -183
- package/src/utils/format-count.ts +0 -95
- package/src/utils/format-date.ts +0 -62
- package/src/utils/format-unit-size.ts +0 -43
- package/src/utils/local-date-from-utc.ts +0 -15
- package/src/utils/log.ts +0 -14
- package/src/utils/resolve-mediatype.ts +0 -26
- package/src/utils/sha1.ts +0 -9
- package/test/collection-browser.test.ts +0 -2694
- package/test/collection-facets/facet-row.test.ts +0 -421
- package/test/collection-facets/facets-template.test.ts +0 -139
- package/test/collection-facets/more-facets-content.test.ts +0 -231
- package/test/collection-facets/more-facets-pagination.test.ts +0 -201
- package/test/collection-facets/toggle-switch.test.ts +0 -164
- package/test/collection-facets.test.ts +0 -928
- package/test/data-source/collection-browser-data-source.test.ts +0 -193
- package/test/empty-placeholder.test.ts +0 -88
- package/test/expanded-date-picker.test.ts +0 -201
- package/test/icon-overlay.test.ts +0 -38
- package/test/image-block.test.ts +0 -247
- package/test/item-image.test.ts +0 -220
- package/test/manage/manage-bar.test.ts +0 -347
- package/test/manage/remove-items-modal-content.test.ts +0 -81
- package/test/mediatype-config.test.ts +0 -11
- package/test/mocks/mock-analytics-handler.ts +0 -30
- package/test/mocks/mock-search-responses.ts +0 -1364
- package/test/mocks/mock-search-service.ts +0 -134
- package/test/restoration-state-handler.test.ts +0 -480
- package/test/review-block.test.ts +0 -62
- package/test/sort-filter-bar/alpha-bar-tooltip.test.ts +0 -17
- package/test/sort-filter-bar/alpha-bar.test.ts +0 -101
- package/test/sort-filter-bar/sort-filter-bar.test.ts +0 -472
- package/test/text-overlay.test.ts +0 -55
- package/test/text-snippet-block.test.ts +0 -85
- package/test/tile-stats.test.ts +0 -191
- package/test/tiles/grid/account-tile.test.ts +0 -121
- package/test/tiles/grid/collection-tile.test.ts +0 -114
- package/test/tiles/grid/item-tile.test.ts +0 -520
- package/test/tiles/grid/search-tile.test.ts +0 -75
- package/test/tiles/hover/hover-pane-controller.test.ts +0 -482
- package/test/tiles/hover/tile-hover-pane.test.ts +0 -80
- package/test/tiles/list/tile-list-compact-header.test.ts +0 -43
- package/test/tiles/list/tile-list-compact.test.ts +0 -282
- package/test/tiles/list/tile-list.test.ts +0 -576
- package/test/tiles/tile-dispatcher.test.ts +0 -320
- package/test/tiles/tile-display-value-provider.test.ts +0 -172
- package/test/tiles/tile-mediatype-icon.test.ts +0 -160
- package/test/utils/array-equals.test.ts +0 -31
- package/test/utils/format-count.test.ts +0 -32
- package/test/utils/format-date.test.ts +0 -89
- package/test/utils/format-unit-size.test.ts +0 -21
- package/test/utils/local-date-from-utc.test.ts +0 -37
- package/tsconfig.json +0 -25
- package/types/dompurify.d.ts +0 -1
- package/vite.config.ts +0 -29
- package/web-dev-server.config.mjs +0 -30
- package/web-test-runner.config.mjs +0 -52
|
@@ -1,291 +0,0 @@
|
|
|
1
|
-
import { expect, fixture } from '@open-wc/testing';
|
|
2
|
-
import sinon from 'sinon';
|
|
3
|
-
import { html } from 'lit';
|
|
4
|
-
import '../../src/collection-facets/facet-row';
|
|
5
|
-
describe('Facet row', () => {
|
|
6
|
-
it('renders nothing if no bucket provided', async () => {
|
|
7
|
-
const el = await fixture(html `<facet-row .facetType=${'subject'}></facet-row>`);
|
|
8
|
-
expect(el.shadowRoot?.querySelector('.facet-row-container')).not.to.exist;
|
|
9
|
-
});
|
|
10
|
-
it('renders nothing if no facet type provided', async () => {
|
|
11
|
-
const bucket = {
|
|
12
|
-
key: 'foo',
|
|
13
|
-
state: 'none',
|
|
14
|
-
count: 5,
|
|
15
|
-
};
|
|
16
|
-
const el = await fixture(html `<facet-row .bucket=${bucket}></facet-row>`);
|
|
17
|
-
expect(el.shadowRoot?.querySelector('.facet-row-container')).not.to.exist;
|
|
18
|
-
});
|
|
19
|
-
it('renders provided bucket as facet row', async () => {
|
|
20
|
-
const bucket = {
|
|
21
|
-
key: 'foo',
|
|
22
|
-
state: 'none',
|
|
23
|
-
count: 5,
|
|
24
|
-
};
|
|
25
|
-
const el = await fixture(html `<facet-row .facetType=${'subject'} .bucket=${bucket}></facet-row>`);
|
|
26
|
-
expect(el.shadowRoot?.querySelector('.facet-row-container')).to.exist;
|
|
27
|
-
expect(el.shadowRoot?.querySelectorAll('input[type="checkbox"]')).to.have.length(2);
|
|
28
|
-
expect(el.shadowRoot?.querySelectorAll('label')).to.have.length(2);
|
|
29
|
-
const labelText = el.shadowRoot?.querySelector('.facet-info-display');
|
|
30
|
-
expect(labelText?.textContent?.trim()).to.match(/^foo\s*5$/);
|
|
31
|
-
});
|
|
32
|
-
it('renders locale-appropriate facet count', async () => {
|
|
33
|
-
const bucket = {
|
|
34
|
-
key: 'foo',
|
|
35
|
-
state: 'none',
|
|
36
|
-
count: 54321,
|
|
37
|
-
};
|
|
38
|
-
const el = await fixture(html `<facet-row .facetType=${'subject'} .bucket=${bucket}></facet-row>`);
|
|
39
|
-
const facetCount = el.shadowRoot?.querySelector('.facet-count');
|
|
40
|
-
expect(facetCount?.textContent).to.equal('54,321');
|
|
41
|
-
});
|
|
42
|
-
it('renders selected facets with checked checkbox', async () => {
|
|
43
|
-
const bucket = {
|
|
44
|
-
key: 'foo',
|
|
45
|
-
state: 'selected',
|
|
46
|
-
count: 5,
|
|
47
|
-
};
|
|
48
|
-
const el = await fixture(html `<facet-row .facetType=${'subject'} .bucket=${bucket}></facet-row>`);
|
|
49
|
-
// "Positive" checkbox is checked; "Negative" checkbox is not checked
|
|
50
|
-
const selectCheckbox = el.shadowRoot?.querySelector('.select-facet-checkbox');
|
|
51
|
-
const hideCheckbox = el.shadowRoot?.querySelector('.hide-facet-checkbox');
|
|
52
|
-
expect(selectCheckbox?.checked).to.be.true;
|
|
53
|
-
expect(hideCheckbox?.checked).to.be.false;
|
|
54
|
-
// Eye icon is not in its active state
|
|
55
|
-
expect(el.shadowRoot?.querySelector('.hide-facet-icon')).to.exist.and.satisfy((icon) => !icon.classList.contains('active'));
|
|
56
|
-
});
|
|
57
|
-
it('renders hidden facets with closed eye icon', async () => {
|
|
58
|
-
const bucket = {
|
|
59
|
-
key: 'foo',
|
|
60
|
-
state: 'hidden',
|
|
61
|
-
count: 5,
|
|
62
|
-
};
|
|
63
|
-
const el = await fixture(html `<facet-row .facetType=${'subject'} .bucket=${bucket}></facet-row>`);
|
|
64
|
-
// "Positive" checkbox is not checked; "Negative" checkbox is checked
|
|
65
|
-
const selectCheckbox = el.shadowRoot?.querySelector('.select-facet-checkbox');
|
|
66
|
-
const hideCheckbox = el.shadowRoot?.querySelector('.hide-facet-checkbox');
|
|
67
|
-
expect(selectCheckbox?.checked).to.be.false;
|
|
68
|
-
expect(hideCheckbox?.checked).to.be.true;
|
|
69
|
-
// Eye icon is in its "active" state
|
|
70
|
-
expect(el.shadowRoot?.querySelector('.hide-facet-icon')).to.exist.and.satisfy((icon) => icon.classList.contains('active'));
|
|
71
|
-
});
|
|
72
|
-
it('omits hide button when property is specified (and facet state is not hidden)', async () => {
|
|
73
|
-
const bucket = {
|
|
74
|
-
key: 'foo',
|
|
75
|
-
state: 'none',
|
|
76
|
-
count: 5,
|
|
77
|
-
};
|
|
78
|
-
const el = await fixture(html `<facet-row
|
|
79
|
-
.facetType=${'subject'}
|
|
80
|
-
.bucket=${bucket}
|
|
81
|
-
omitHideButton
|
|
82
|
-
></facet-row>`);
|
|
83
|
-
// Hide button's container is hidden
|
|
84
|
-
expect(el.shadowRoot
|
|
85
|
-
?.querySelector('.hide-facet-container')
|
|
86
|
-
?.hasAttribute('hidden')).to.be.true;
|
|
87
|
-
});
|
|
88
|
-
it('does not omit hide button when facet state is hidden, even if property specified', async () => {
|
|
89
|
-
const bucket = {
|
|
90
|
-
key: 'foo',
|
|
91
|
-
state: 'hidden',
|
|
92
|
-
count: 5,
|
|
93
|
-
};
|
|
94
|
-
const el = await fixture(html `<facet-row
|
|
95
|
-
.facetType=${'subject'}
|
|
96
|
-
.bucket=${bucket}
|
|
97
|
-
omitHideButton
|
|
98
|
-
></facet-row>`);
|
|
99
|
-
// Hide button's container is NOT hidden (i.e., we SHOW the hide button like normal)
|
|
100
|
-
expect(el.shadowRoot
|
|
101
|
-
?.querySelector('.hide-facet-container')
|
|
102
|
-
?.hasAttribute('hidden')).to.be.false;
|
|
103
|
-
});
|
|
104
|
-
it('renders correct accessible label for unchecked negative facets', async () => {
|
|
105
|
-
const bucket = {
|
|
106
|
-
key: 'foo',
|
|
107
|
-
state: 'none',
|
|
108
|
-
count: 5,
|
|
109
|
-
};
|
|
110
|
-
const el = await fixture(html `<facet-row .facetType=${'subject'} .bucket=${bucket}></facet-row>`);
|
|
111
|
-
const hideFacetLabel = el.shadowRoot?.querySelector('.hide-facet-icon');
|
|
112
|
-
expect(hideFacetLabel?.textContent?.trim()).to.match(/^Hide subject: foo$/);
|
|
113
|
-
});
|
|
114
|
-
it('renders correct accessible label for checked negative facets', async () => {
|
|
115
|
-
const bucket = {
|
|
116
|
-
key: 'foo',
|
|
117
|
-
state: 'hidden',
|
|
118
|
-
count: 5,
|
|
119
|
-
};
|
|
120
|
-
const el = await fixture(html `<facet-row .facetType=${'subject'} .bucket=${bucket}></facet-row>`);
|
|
121
|
-
const hideFacetLabel = el.shadowRoot?.querySelector('.hide-facet-icon');
|
|
122
|
-
expect(hideFacetLabel?.textContent?.trim()).to.match(/^Unhide subject: foo$/);
|
|
123
|
-
});
|
|
124
|
-
it('renders collection facets as links', async () => {
|
|
125
|
-
const bucket = {
|
|
126
|
-
key: 'foo',
|
|
127
|
-
state: 'none',
|
|
128
|
-
count: 5,
|
|
129
|
-
};
|
|
130
|
-
const el = await fixture(html `<facet-row
|
|
131
|
-
.facetType=${'collection'}
|
|
132
|
-
.bucket=${bucket}
|
|
133
|
-
></facet-row>`);
|
|
134
|
-
const collectionName = el.shadowRoot?.querySelector('.facet-title > a:link');
|
|
135
|
-
expect(collectionName).to.exist;
|
|
136
|
-
expect(collectionName?.getAttribute('href')).to.equal('/details/foo');
|
|
137
|
-
});
|
|
138
|
-
it('does not render non-collection facets as links', async () => {
|
|
139
|
-
const bucket = {
|
|
140
|
-
key: 'foo',
|
|
141
|
-
state: 'none',
|
|
142
|
-
count: 5,
|
|
143
|
-
};
|
|
144
|
-
const el = await fixture(html `<facet-row .facetType=${'subject'} .bucket=${bucket}></facet-row>`);
|
|
145
|
-
expect(el.shadowRoot?.querySelector('a:link')).not.to.exist;
|
|
146
|
-
});
|
|
147
|
-
it('emits event when facet checkbox is clicked', async () => {
|
|
148
|
-
const facetClickSpy = sinon.spy();
|
|
149
|
-
const bucket = {
|
|
150
|
-
key: 'foo',
|
|
151
|
-
state: 'none',
|
|
152
|
-
count: 5,
|
|
153
|
-
};
|
|
154
|
-
const el = await fixture(html `<facet-row
|
|
155
|
-
.facetType=${'subject'}
|
|
156
|
-
.bucket=${bucket}
|
|
157
|
-
@facetClick=${facetClickSpy}
|
|
158
|
-
></facet-row>`);
|
|
159
|
-
const positiveFacetCheck = el.shadowRoot?.querySelector('.select-facet-checkbox');
|
|
160
|
-
expect(positiveFacetCheck).to.exist;
|
|
161
|
-
positiveFacetCheck.click();
|
|
162
|
-
expect(facetClickSpy.callCount).to.equal(1);
|
|
163
|
-
expect(facetClickSpy.lastCall.args[0]?.detail).to.deep.equal({
|
|
164
|
-
facetType: 'subject',
|
|
165
|
-
bucket: {
|
|
166
|
-
key: 'foo',
|
|
167
|
-
state: 'selected',
|
|
168
|
-
count: 5,
|
|
169
|
-
},
|
|
170
|
-
negative: false,
|
|
171
|
-
});
|
|
172
|
-
});
|
|
173
|
-
it('emits event when facet checkbox is unchecked', async () => {
|
|
174
|
-
const facetClickSpy = sinon.spy();
|
|
175
|
-
const bucket = {
|
|
176
|
-
key: 'foo',
|
|
177
|
-
state: 'selected',
|
|
178
|
-
count: 5,
|
|
179
|
-
};
|
|
180
|
-
const el = await fixture(html `<facet-row
|
|
181
|
-
.facetType=${'subject'}
|
|
182
|
-
.bucket=${bucket}
|
|
183
|
-
@facetClick=${facetClickSpy}
|
|
184
|
-
></facet-row>`);
|
|
185
|
-
const positiveFacetCheck = el.shadowRoot?.querySelector('.select-facet-checkbox');
|
|
186
|
-
expect(positiveFacetCheck).to.exist;
|
|
187
|
-
positiveFacetCheck.click();
|
|
188
|
-
expect(facetClickSpy.callCount).to.equal(1);
|
|
189
|
-
expect(facetClickSpy.lastCall.args[0]?.detail).to.deep.equal({
|
|
190
|
-
facetType: 'subject',
|
|
191
|
-
bucket: {
|
|
192
|
-
key: 'foo',
|
|
193
|
-
state: 'none',
|
|
194
|
-
count: 5,
|
|
195
|
-
},
|
|
196
|
-
negative: false,
|
|
197
|
-
});
|
|
198
|
-
});
|
|
199
|
-
it('emits event when facet negative icon is clicked', async () => {
|
|
200
|
-
const facetClickSpy = sinon.spy();
|
|
201
|
-
const bucket = {
|
|
202
|
-
key: 'foo',
|
|
203
|
-
state: 'none',
|
|
204
|
-
count: 5,
|
|
205
|
-
};
|
|
206
|
-
const el = await fixture(html `<facet-row
|
|
207
|
-
.facetType=${'subject'}
|
|
208
|
-
.bucket=${bucket}
|
|
209
|
-
@facetClick=${facetClickSpy}
|
|
210
|
-
></facet-row>`);
|
|
211
|
-
const negativeFacetIcon = el.shadowRoot?.querySelector('.hide-facet-icon');
|
|
212
|
-
expect(negativeFacetIcon).to.exist;
|
|
213
|
-
negativeFacetIcon.click();
|
|
214
|
-
expect(facetClickSpy.callCount).to.equal(1);
|
|
215
|
-
expect(facetClickSpy.lastCall.args[0]?.detail).to.deep.equal({
|
|
216
|
-
facetType: 'subject',
|
|
217
|
-
bucket: {
|
|
218
|
-
key: 'foo',
|
|
219
|
-
state: 'hidden',
|
|
220
|
-
count: 5,
|
|
221
|
-
},
|
|
222
|
-
negative: true,
|
|
223
|
-
});
|
|
224
|
-
});
|
|
225
|
-
it('emits event when facet negative icon is unchecked', async () => {
|
|
226
|
-
const facetClickSpy = sinon.spy();
|
|
227
|
-
const bucket = {
|
|
228
|
-
key: 'foo',
|
|
229
|
-
state: 'hidden',
|
|
230
|
-
count: 5,
|
|
231
|
-
};
|
|
232
|
-
const el = await fixture(html `<facet-row
|
|
233
|
-
.facetType=${'subject'}
|
|
234
|
-
.bucket=${bucket}
|
|
235
|
-
@facetClick=${facetClickSpy}
|
|
236
|
-
></facet-row>`);
|
|
237
|
-
const negativeFacetIcon = el.shadowRoot?.querySelector('.hide-facet-icon');
|
|
238
|
-
expect(negativeFacetIcon).to.exist;
|
|
239
|
-
negativeFacetIcon.click();
|
|
240
|
-
expect(facetClickSpy.callCount).to.equal(1);
|
|
241
|
-
expect(facetClickSpy.lastCall.args[0]?.detail).to.deep.equal({
|
|
242
|
-
facetType: 'subject',
|
|
243
|
-
bucket: {
|
|
244
|
-
key: 'foo',
|
|
245
|
-
state: 'none',
|
|
246
|
-
count: 5,
|
|
247
|
-
},
|
|
248
|
-
negative: true,
|
|
249
|
-
});
|
|
250
|
-
});
|
|
251
|
-
it('selects/deselects facet when label is clicked', async () => {
|
|
252
|
-
const facetClickSpy = sinon.spy();
|
|
253
|
-
const bucket = {
|
|
254
|
-
key: 'foo',
|
|
255
|
-
state: 'none',
|
|
256
|
-
count: 5,
|
|
257
|
-
};
|
|
258
|
-
const el = await fixture(html `<facet-row
|
|
259
|
-
.facetType=${'subject'}
|
|
260
|
-
.bucket=${bucket}
|
|
261
|
-
@facetClick=${facetClickSpy}
|
|
262
|
-
></facet-row>`);
|
|
263
|
-
const facetLabel = el.shadowRoot?.querySelector('.facet-info-display');
|
|
264
|
-
expect(facetLabel).to.exist;
|
|
265
|
-
// Select facet by clicking label
|
|
266
|
-
facetLabel.click();
|
|
267
|
-
expect(facetClickSpy.callCount).to.equal(1);
|
|
268
|
-
expect(facetClickSpy.lastCall.args[0]?.detail).to.deep.equal({
|
|
269
|
-
facetType: 'subject',
|
|
270
|
-
bucket: {
|
|
271
|
-
key: 'foo',
|
|
272
|
-
state: 'selected',
|
|
273
|
-
count: 5,
|
|
274
|
-
},
|
|
275
|
-
negative: false,
|
|
276
|
-
});
|
|
277
|
-
// Deselect facet by clicking label
|
|
278
|
-
facetLabel.click();
|
|
279
|
-
expect(facetClickSpy.callCount).to.equal(2);
|
|
280
|
-
expect(facetClickSpy.lastCall.args[0]?.detail).to.deep.equal({
|
|
281
|
-
facetType: 'subject',
|
|
282
|
-
bucket: {
|
|
283
|
-
key: 'foo',
|
|
284
|
-
state: 'none',
|
|
285
|
-
count: 5,
|
|
286
|
-
},
|
|
287
|
-
negative: false,
|
|
288
|
-
});
|
|
289
|
-
});
|
|
290
|
-
});
|
|
291
|
-
//# sourceMappingURL=facet-row.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"facet-row.test.js","sourceRoot":"","sources":["../../../test/collection-facets/facet-row.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect, fixture } from '@open-wc/testing';\nimport sinon from 'sinon';\nimport { html } from 'lit';\nimport type { FacetRow } from '../../src/collection-facets/facet-row';\nimport '../../src/collection-facets/facet-row';\nimport type { FacetState } from '../../src/models';\n\ndescribe('Facet row', () => {\n it('renders nothing if no bucket provided', async () => {\n const el = await fixture<FacetRow>(\n html`<facet-row .facetType=${'subject'}></facet-row>`,\n );\n\n expect(el.shadowRoot?.querySelector('.facet-row-container')).not.to.exist;\n });\n\n it('renders nothing if no facet type provided', async () => {\n const bucket = {\n key: 'foo',\n state: 'none' as FacetState,\n count: 5,\n };\n\n const el = await fixture<FacetRow>(\n html`<facet-row .bucket=${bucket}></facet-row>`,\n );\n\n expect(el.shadowRoot?.querySelector('.facet-row-container')).not.to.exist;\n });\n\n it('renders provided bucket as facet row', async () => {\n const bucket = {\n key: 'foo',\n state: 'none' as FacetState,\n count: 5,\n };\n\n const el = await fixture<FacetRow>(\n html`<facet-row .facetType=${'subject'} .bucket=${bucket}></facet-row>`,\n );\n\n expect(el.shadowRoot?.querySelector('.facet-row-container')).to.exist;\n expect(\n el.shadowRoot?.querySelectorAll('input[type=\"checkbox\"]'),\n ).to.have.length(2);\n expect(el.shadowRoot?.querySelectorAll('label')).to.have.length(2);\n\n const labelText = el.shadowRoot?.querySelector('.facet-info-display');\n expect(labelText?.textContent?.trim()).to.match(/^foo\\s*5$/);\n });\n\n it('renders locale-appropriate facet count', async () => {\n const bucket = {\n key: 'foo',\n state: 'none' as FacetState,\n count: 54321,\n };\n\n const el = await fixture<FacetRow>(\n html`<facet-row .facetType=${'subject'} .bucket=${bucket}></facet-row>`,\n );\n\n const facetCount = el.shadowRoot?.querySelector('.facet-count');\n expect(facetCount?.textContent).to.equal('54,321');\n });\n\n it('renders selected facets with checked checkbox', async () => {\n const bucket = {\n key: 'foo',\n state: 'selected' as FacetState,\n count: 5,\n };\n\n const el = await fixture<FacetRow>(\n html`<facet-row .facetType=${'subject'} .bucket=${bucket}></facet-row>`,\n );\n\n // \"Positive\" checkbox is checked; \"Negative\" checkbox is not checked\n const selectCheckbox = el.shadowRoot?.querySelector(\n '.select-facet-checkbox',\n ) as HTMLInputElement;\n const hideCheckbox = el.shadowRoot?.querySelector(\n '.hide-facet-checkbox',\n ) as HTMLInputElement;\n expect(selectCheckbox?.checked).to.be.true;\n expect(hideCheckbox?.checked).to.be.false;\n\n // Eye icon is not in its active state\n expect(\n el.shadowRoot?.querySelector('.hide-facet-icon'),\n ).to.exist.and.satisfy(\n (icon: HTMLElement) => !icon.classList.contains('active'),\n );\n });\n\n it('renders hidden facets with closed eye icon', async () => {\n const bucket = {\n key: 'foo',\n state: 'hidden' as FacetState,\n count: 5,\n };\n\n const el = await fixture<FacetRow>(\n html`<facet-row .facetType=${'subject'} .bucket=${bucket}></facet-row>`,\n );\n\n // \"Positive\" checkbox is not checked; \"Negative\" checkbox is checked\n const selectCheckbox = el.shadowRoot?.querySelector(\n '.select-facet-checkbox',\n ) as HTMLInputElement;\n const hideCheckbox = el.shadowRoot?.querySelector(\n '.hide-facet-checkbox',\n ) as HTMLInputElement;\n expect(selectCheckbox?.checked).to.be.false;\n expect(hideCheckbox?.checked).to.be.true;\n\n // Eye icon is in its \"active\" state\n expect(\n el.shadowRoot?.querySelector('.hide-facet-icon'),\n ).to.exist.and.satisfy((icon: HTMLElement) =>\n icon.classList.contains('active'),\n );\n });\n\n it('omits hide button when property is specified (and facet state is not hidden)', async () => {\n const bucket = {\n key: 'foo',\n state: 'none' as FacetState,\n count: 5,\n };\n\n const el = await fixture<FacetRow>(\n html`<facet-row\n .facetType=${'subject'}\n .bucket=${bucket}\n omitHideButton\n ></facet-row>`,\n );\n\n // Hide button's container is hidden\n expect(\n el.shadowRoot\n ?.querySelector('.hide-facet-container')\n ?.hasAttribute('hidden'),\n ).to.be.true;\n });\n\n it('does not omit hide button when facet state is hidden, even if property specified', async () => {\n const bucket = {\n key: 'foo',\n state: 'hidden' as FacetState,\n count: 5,\n };\n\n const el = await fixture<FacetRow>(\n html`<facet-row\n .facetType=${'subject'}\n .bucket=${bucket}\n omitHideButton\n ></facet-row>`,\n );\n\n // Hide button's container is NOT hidden (i.e., we SHOW the hide button like normal)\n expect(\n el.shadowRoot\n ?.querySelector('.hide-facet-container')\n ?.hasAttribute('hidden'),\n ).to.be.false;\n });\n\n it('renders correct accessible label for unchecked negative facets', async () => {\n const bucket = {\n key: 'foo',\n state: 'none' as FacetState,\n count: 5,\n };\n\n const el = await fixture<FacetRow>(\n html`<facet-row .facetType=${'subject'} .bucket=${bucket}></facet-row>`,\n );\n\n const hideFacetLabel = el.shadowRoot?.querySelector('.hide-facet-icon');\n expect(hideFacetLabel?.textContent?.trim()).to.match(/^Hide subject: foo$/);\n });\n\n it('renders correct accessible label for checked negative facets', async () => {\n const bucket = {\n key: 'foo',\n state: 'hidden' as FacetState,\n count: 5,\n };\n\n const el = await fixture<FacetRow>(\n html`<facet-row .facetType=${'subject'} .bucket=${bucket}></facet-row>`,\n );\n\n const hideFacetLabel = el.shadowRoot?.querySelector('.hide-facet-icon');\n expect(hideFacetLabel?.textContent?.trim()).to.match(\n /^Unhide subject: foo$/,\n );\n });\n\n it('renders collection facets as links', async () => {\n const bucket = {\n key: 'foo',\n state: 'none' as FacetState,\n count: 5,\n };\n\n const el = await fixture<FacetRow>(\n html`<facet-row\n .facetType=${'collection'}\n .bucket=${bucket}\n ></facet-row>`,\n );\n\n const collectionName = el.shadowRoot?.querySelector(\n '.facet-title > a:link',\n );\n expect(collectionName).to.exist;\n expect(collectionName?.getAttribute('href')).to.equal('/details/foo');\n });\n\n it('does not render non-collection facets as links', async () => {\n const bucket = {\n key: 'foo',\n state: 'none' as FacetState,\n count: 5,\n };\n\n const el = await fixture<FacetRow>(\n html`<facet-row .facetType=${'subject'} .bucket=${bucket}></facet-row>`,\n );\n\n expect(el.shadowRoot?.querySelector('a:link')).not.to.exist;\n });\n\n it('emits event when facet checkbox is clicked', async () => {\n const facetClickSpy = sinon.spy();\n const bucket = {\n key: 'foo',\n state: 'none' as FacetState,\n count: 5,\n };\n\n const el = await fixture<FacetRow>(\n html`<facet-row\n .facetType=${'subject'}\n .bucket=${bucket}\n @facetClick=${facetClickSpy}\n ></facet-row>`,\n );\n\n const positiveFacetCheck = el.shadowRoot?.querySelector(\n '.select-facet-checkbox',\n ) as HTMLInputElement;\n expect(positiveFacetCheck).to.exist;\n positiveFacetCheck.click();\n\n expect(facetClickSpy.callCount).to.equal(1);\n expect(facetClickSpy.lastCall.args[0]?.detail).to.deep.equal({\n facetType: 'subject',\n bucket: {\n key: 'foo',\n state: 'selected',\n count: 5,\n },\n negative: false,\n });\n });\n\n it('emits event when facet checkbox is unchecked', async () => {\n const facetClickSpy = sinon.spy();\n const bucket = {\n key: 'foo',\n state: 'selected' as FacetState,\n count: 5,\n };\n\n const el = await fixture<FacetRow>(\n html`<facet-row\n .facetType=${'subject'}\n .bucket=${bucket}\n @facetClick=${facetClickSpy}\n ></facet-row>`,\n );\n\n const positiveFacetCheck = el.shadowRoot?.querySelector(\n '.select-facet-checkbox',\n ) as HTMLInputElement;\n expect(positiveFacetCheck).to.exist;\n positiveFacetCheck.click();\n\n expect(facetClickSpy.callCount).to.equal(1);\n expect(facetClickSpy.lastCall.args[0]?.detail).to.deep.equal({\n facetType: 'subject',\n bucket: {\n key: 'foo',\n state: 'none',\n count: 5,\n },\n negative: false,\n });\n });\n\n it('emits event when facet negative icon is clicked', async () => {\n const facetClickSpy = sinon.spy();\n const bucket = {\n key: 'foo',\n state: 'none' as FacetState,\n count: 5,\n };\n\n const el = await fixture<FacetRow>(\n html`<facet-row\n .facetType=${'subject'}\n .bucket=${bucket}\n @facetClick=${facetClickSpy}\n ></facet-row>`,\n );\n\n const negativeFacetIcon = el.shadowRoot?.querySelector(\n '.hide-facet-icon',\n ) as HTMLLabelElement;\n expect(negativeFacetIcon).to.exist;\n negativeFacetIcon.click();\n\n expect(facetClickSpy.callCount).to.equal(1);\n expect(facetClickSpy.lastCall.args[0]?.detail).to.deep.equal({\n facetType: 'subject',\n bucket: {\n key: 'foo',\n state: 'hidden',\n count: 5,\n },\n negative: true,\n });\n });\n\n it('emits event when facet negative icon is unchecked', async () => {\n const facetClickSpy = sinon.spy();\n const bucket = {\n key: 'foo',\n state: 'hidden' as FacetState,\n count: 5,\n };\n\n const el = await fixture<FacetRow>(\n html`<facet-row\n .facetType=${'subject'}\n .bucket=${bucket}\n @facetClick=${facetClickSpy}\n ></facet-row>`,\n );\n\n const negativeFacetIcon = el.shadowRoot?.querySelector(\n '.hide-facet-icon',\n ) as HTMLLabelElement;\n expect(negativeFacetIcon).to.exist;\n negativeFacetIcon.click();\n\n expect(facetClickSpy.callCount).to.equal(1);\n expect(facetClickSpy.lastCall.args[0]?.detail).to.deep.equal({\n facetType: 'subject',\n bucket: {\n key: 'foo',\n state: 'none',\n count: 5,\n },\n negative: true,\n });\n });\n\n it('selects/deselects facet when label is clicked', async () => {\n const facetClickSpy = sinon.spy();\n const bucket = {\n key: 'foo',\n state: 'none' as FacetState,\n count: 5,\n };\n\n const el = await fixture<FacetRow>(\n html`<facet-row\n .facetType=${'subject'}\n .bucket=${bucket}\n @facetClick=${facetClickSpy}\n ></facet-row>`,\n );\n\n const facetLabel = el.shadowRoot?.querySelector(\n '.facet-info-display',\n ) as HTMLLabelElement;\n expect(facetLabel).to.exist;\n\n // Select facet by clicking label\n facetLabel.click();\n expect(facetClickSpy.callCount).to.equal(1);\n expect(facetClickSpy.lastCall.args[0]?.detail).to.deep.equal({\n facetType: 'subject',\n bucket: {\n key: 'foo',\n state: 'selected',\n count: 5,\n },\n negative: false,\n });\n\n // Deselect facet by clicking label\n facetLabel.click();\n expect(facetClickSpy.callCount).to.equal(2);\n expect(facetClickSpy.lastCall.args[0]?.detail).to.deep.equal({\n facetType: 'subject',\n bucket: {\n key: 'foo',\n state: 'none',\n count: 5,\n },\n negative: false,\n });\n });\n});\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import '../../src/collection-facets/facets-template';
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
import { expect, fixture } from '@open-wc/testing';
|
|
2
|
-
import sinon from 'sinon';
|
|
3
|
-
import { html } from 'lit';
|
|
4
|
-
import '../../src/collection-facets/facets-template';
|
|
5
|
-
const facetGroup = {
|
|
6
|
-
title: 'Media Type',
|
|
7
|
-
key: 'mediatype',
|
|
8
|
-
buckets: [
|
|
9
|
-
{ displayText: 'audio', key: 'audio', count: 1001, state: 'none' },
|
|
10
|
-
{ displayText: 'movies', key: 'movies', count: 901, state: 'none' },
|
|
11
|
-
{ displayText: 'texts', key: 'texts', count: 2101, state: 'none' },
|
|
12
|
-
{ displayText: 'data', key: 'data', count: 230, state: 'none' },
|
|
13
|
-
{ displayText: 'web', key: 'web', count: 453, state: 'none' },
|
|
14
|
-
],
|
|
15
|
-
};
|
|
16
|
-
describe('Render facets', () => {
|
|
17
|
-
it('should render more facets template', async () => {
|
|
18
|
-
const el = await fixture(html `<facets-template .facetGroup=${facetGroup}></facets-template>`);
|
|
19
|
-
await el.updateComplete;
|
|
20
|
-
expect(el.shadowRoot?.querySelector('facet-row')).to.exist;
|
|
21
|
-
});
|
|
22
|
-
it('facets template renders facet rows', async () => {
|
|
23
|
-
const el = await fixture(html `<facets-template .facetGroup=${facetGroup}></facets-template>`);
|
|
24
|
-
expect(el.shadowRoot?.querySelector('.facet-rows')).to.exist;
|
|
25
|
-
});
|
|
26
|
-
it('applies correct bucket values to facet row', async () => {
|
|
27
|
-
const el = await fixture(html `<facets-template .facetGroup=${facetGroup}></facets-template>`);
|
|
28
|
-
const facetRows = el.shadowRoot?.querySelectorAll('facet-row');
|
|
29
|
-
expect(facetRows?.length).to.equal(facetGroup.buckets.length);
|
|
30
|
-
facetRows?.forEach((elmt, i) => {
|
|
31
|
-
const facetRow = elmt;
|
|
32
|
-
expect(facetRow).to.exist;
|
|
33
|
-
expect(facetRow.bucket).to.equal(facetGroup.buckets[i]);
|
|
34
|
-
expect(facetRow.facetType).to.equal(facetGroup.key);
|
|
35
|
-
});
|
|
36
|
-
});
|
|
37
|
-
it('emits facet click event when a facet is selected/deselected', async () => {
|
|
38
|
-
const facetClickSpy = sinon.spy();
|
|
39
|
-
const el = await fixture(html `<facets-template
|
|
40
|
-
.facetGroup=${facetGroup}
|
|
41
|
-
@facetClick=${facetClickSpy}
|
|
42
|
-
></facets-template>`);
|
|
43
|
-
const facetRow = el.shadowRoot?.querySelector('facet-row');
|
|
44
|
-
expect(facetRow).to.exist;
|
|
45
|
-
const facetSelectCheck = facetRow.shadowRoot?.querySelector('.select-facet-checkbox');
|
|
46
|
-
expect(facetSelectCheck).to.exist;
|
|
47
|
-
facetSelectCheck.click();
|
|
48
|
-
expect(facetClickSpy.callCount).to.equal(1);
|
|
49
|
-
expect(facetRow.bucket?.state).to.equal('selected');
|
|
50
|
-
facetSelectCheck.click();
|
|
51
|
-
expect(facetClickSpy.callCount).to.equal(2);
|
|
52
|
-
expect(facetRow.bucket?.state).to.equal('none');
|
|
53
|
-
});
|
|
54
|
-
it('emits facet click event when a facet is negated/un-negated', async () => {
|
|
55
|
-
const facetClickSpy = sinon.spy();
|
|
56
|
-
const el = await fixture(html `<facets-template
|
|
57
|
-
.facetGroup=${facetGroup}
|
|
58
|
-
@facetClick=${facetClickSpy}
|
|
59
|
-
></facets-template>`);
|
|
60
|
-
const facetRow = el.shadowRoot?.querySelector('facet-row');
|
|
61
|
-
expect(facetRow).to.exist;
|
|
62
|
-
const facetNegateCheck = facetRow.shadowRoot?.querySelector('.hide-facet-checkbox');
|
|
63
|
-
expect(facetNegateCheck).to.exist;
|
|
64
|
-
facetNegateCheck.click();
|
|
65
|
-
expect(facetClickSpy.callCount).to.equal(1);
|
|
66
|
-
expect(facetRow.bucket?.state).to.equal('hidden');
|
|
67
|
-
facetNegateCheck.click();
|
|
68
|
-
expect(facetClickSpy.callCount).to.equal(2);
|
|
69
|
-
expect(facetRow.bucket?.state).to.equal('none');
|
|
70
|
-
});
|
|
71
|
-
it('emits facet click event when a pre-selected facet is deselected', async () => {
|
|
72
|
-
const facetClickSpy = sinon.spy();
|
|
73
|
-
const facetGroupWithSelection = { ...facetGroup };
|
|
74
|
-
facetGroupWithSelection.buckets = [
|
|
75
|
-
{ ...facetGroup.buckets[0], state: 'selected' },
|
|
76
|
-
...facetGroup.buckets.slice(1),
|
|
77
|
-
];
|
|
78
|
-
const el = await fixture(html `<facets-template
|
|
79
|
-
.facetGroup=${facetGroupWithSelection}
|
|
80
|
-
@facetClick=${facetClickSpy}
|
|
81
|
-
></facets-template>`);
|
|
82
|
-
const facetRow = el.shadowRoot?.querySelector('facet-row');
|
|
83
|
-
expect(facetRow).to.exist;
|
|
84
|
-
const facetSelectCheck = facetRow.shadowRoot?.querySelector('.select-facet-checkbox');
|
|
85
|
-
expect(facetSelectCheck).to.exist;
|
|
86
|
-
expect(facetSelectCheck.checked).to.be.true;
|
|
87
|
-
facetSelectCheck.click();
|
|
88
|
-
expect(facetClickSpy.callCount).to.equal(1);
|
|
89
|
-
expect(facetRow.bucket?.state).to.equal('none');
|
|
90
|
-
facetSelectCheck.click();
|
|
91
|
-
expect(facetClickSpy.callCount).to.equal(2);
|
|
92
|
-
expect(facetRow.bucket?.state).to.equal('selected');
|
|
93
|
-
});
|
|
94
|
-
});
|
|
95
|
-
//# sourceMappingURL=facets-template.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"facets-template.test.js","sourceRoot":"","sources":["../../../test/collection-facets/facets-template.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAE3B,OAAO,6CAA6C,CAAC;AAIrD,MAAM,UAAU,GAAe;IAC7B,KAAK,EAAE,YAAY;IACnB,GAAG,EAAE,WAAW;IAChB,OAAO,EAAE;QACP,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;QAClE,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE;QACnE,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;QAClE,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE;QAC/D,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE;KAC9D;CACF,CAAC;AAEF,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,EAAE,GAAG,MAAM,OAAO,CACtB,IAAI,CAAA,gCAAgC,UAAU,qBAAqB,CACpE,CAAC;QACF,MAAM,EAAE,CAAC,cAAc,CAAC;QAExB,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,EAAE,GAAG,MAAM,OAAO,CACtB,IAAI,CAAA,gCAAgC,UAAU,qBAAqB,CACpE,CAAC;QAEF,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,EAAE,GAAG,MAAM,OAAO,CACtB,IAAI,CAAA,gCAAgC,UAAU,qBAAqB,CACpE,CAAC;QAEF,MAAM,SAAS,GAAG,EAAE,CAAC,UAAU,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAC/D,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE9D,SAAS,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YAC7B,MAAM,QAAQ,GAAG,IAAgB,CAAC;YAClC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YAC1B,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YACxD,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QAC3E,MAAM,aAAa,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,EAAE,GAAG,MAAM,OAAO,CACtB,IAAI,CAAA;sBACY,UAAU;sBACV,aAAa;0BACT,CACrB,CAAC;QAEF,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,EAAE,aAAa,CAAC,WAAW,CAAa,CAAC;QACvE,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAE1B,MAAM,gBAAgB,GAAG,QAAQ,CAAC,UAAU,EAAE,aAAa,CACzD,wBAAwB,CACL,CAAC;QACtB,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAElC,gBAAgB,CAAC,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAEpD,gBAAgB,CAAC,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;QAC1E,MAAM,aAAa,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,EAAE,GAAG,MAAM,OAAO,CACtB,IAAI,CAAA;sBACY,UAAU;sBACV,aAAa;0BACT,CACrB,CAAC;QAEF,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,EAAE,aAAa,CAAC,WAAW,CAAa,CAAC;QACvE,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAE1B,MAAM,gBAAgB,GAAG,QAAQ,CAAC,UAAU,EAAE,aAAa,CACzD,sBAAsB,CACH,CAAC;QACtB,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAElC,gBAAgB,CAAC,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAElD,gBAAgB,CAAC,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;QAC/E,MAAM,aAAa,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,uBAAuB,GAAG,EAAE,GAAG,UAAU,EAAE,CAAC;QAClD,uBAAuB,CAAC,OAAO,GAAG;YAChC,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE;YAC/C,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;SAC/B,CAAC;QAEF,MAAM,EAAE,GAAG,MAAM,OAAO,CACtB,IAAI,CAAA;sBACY,uBAAuB;sBACvB,aAAa;0BACT,CACrB,CAAC;QAEF,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,EAAE,aAAa,CAAC,WAAW,CAAa,CAAC;QACvE,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAE1B,MAAM,gBAAgB,GAAG,QAAQ,CAAC,UAAU,EAAE,aAAa,CACzD,wBAAwB,CACL,CAAC;QACtB,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAClC,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAE5C,gBAAgB,CAAC,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAEhD,gBAAgB,CAAC,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { expect, fixture } from '@open-wc/testing';\nimport sinon from 'sinon';\nimport { html } from 'lit';\nimport type { FacetsTemplate } from '../../src/collection-facets/facets-template';\nimport '../../src/collection-facets/facets-template';\nimport type { FacetRow } from '../../src/collection-facets/facet-row';\nimport type { FacetGroup } from '../../src/models';\n\nconst facetGroup: FacetGroup = {\n title: 'Media Type',\n key: 'mediatype',\n buckets: [\n { displayText: 'audio', key: 'audio', count: 1001, state: 'none' },\n { displayText: 'movies', key: 'movies', count: 901, state: 'none' },\n { displayText: 'texts', key: 'texts', count: 2101, state: 'none' },\n { displayText: 'data', key: 'data', count: 230, state: 'none' },\n { displayText: 'web', key: 'web', count: 453, state: 'none' },\n ],\n};\n\ndescribe('Render facets', () => {\n it('should render more facets template', async () => {\n const el = await fixture<FacetsTemplate>(\n html`<facets-template .facetGroup=${facetGroup}></facets-template>`,\n );\n await el.updateComplete;\n\n expect(el.shadowRoot?.querySelector('facet-row')).to.exist;\n });\n\n it('facets template renders facet rows', async () => {\n const el = await fixture<FacetsTemplate>(\n html`<facets-template .facetGroup=${facetGroup}></facets-template>`,\n );\n\n expect(el.shadowRoot?.querySelector('.facet-rows')).to.exist;\n });\n\n it('applies correct bucket values to facet row', async () => {\n const el = await fixture<FacetsTemplate>(\n html`<facets-template .facetGroup=${facetGroup}></facets-template>`,\n );\n\n const facetRows = el.shadowRoot?.querySelectorAll('facet-row');\n expect(facetRows?.length).to.equal(facetGroup.buckets.length);\n\n facetRows?.forEach((elmt, i) => {\n const facetRow = elmt as FacetRow;\n expect(facetRow).to.exist;\n expect(facetRow.bucket).to.equal(facetGroup.buckets[i]);\n expect(facetRow.facetType).to.equal(facetGroup.key);\n });\n });\n\n it('emits facet click event when a facet is selected/deselected', async () => {\n const facetClickSpy = sinon.spy();\n const el = await fixture<FacetsTemplate>(\n html`<facets-template\n .facetGroup=${facetGroup}\n @facetClick=${facetClickSpy}\n ></facets-template>`,\n );\n\n const facetRow = el.shadowRoot?.querySelector('facet-row') as FacetRow;\n expect(facetRow).to.exist;\n\n const facetSelectCheck = facetRow.shadowRoot?.querySelector(\n '.select-facet-checkbox',\n ) as HTMLInputElement;\n expect(facetSelectCheck).to.exist;\n\n facetSelectCheck.click();\n expect(facetClickSpy.callCount).to.equal(1);\n expect(facetRow.bucket?.state).to.equal('selected');\n\n facetSelectCheck.click();\n expect(facetClickSpy.callCount).to.equal(2);\n expect(facetRow.bucket?.state).to.equal('none');\n });\n\n it('emits facet click event when a facet is negated/un-negated', async () => {\n const facetClickSpy = sinon.spy();\n const el = await fixture<FacetsTemplate>(\n html`<facets-template\n .facetGroup=${facetGroup}\n @facetClick=${facetClickSpy}\n ></facets-template>`,\n );\n\n const facetRow = el.shadowRoot?.querySelector('facet-row') as FacetRow;\n expect(facetRow).to.exist;\n\n const facetNegateCheck = facetRow.shadowRoot?.querySelector(\n '.hide-facet-checkbox',\n ) as HTMLInputElement;\n expect(facetNegateCheck).to.exist;\n\n facetNegateCheck.click();\n expect(facetClickSpy.callCount).to.equal(1);\n expect(facetRow.bucket?.state).to.equal('hidden');\n\n facetNegateCheck.click();\n expect(facetClickSpy.callCount).to.equal(2);\n expect(facetRow.bucket?.state).to.equal('none');\n });\n\n it('emits facet click event when a pre-selected facet is deselected', async () => {\n const facetClickSpy = sinon.spy();\n const facetGroupWithSelection = { ...facetGroup };\n facetGroupWithSelection.buckets = [\n { ...facetGroup.buckets[0], state: 'selected' },\n ...facetGroup.buckets.slice(1),\n ];\n\n const el = await fixture<FacetsTemplate>(\n html`<facets-template\n .facetGroup=${facetGroupWithSelection}\n @facetClick=${facetClickSpy}\n ></facets-template>`,\n );\n\n const facetRow = el.shadowRoot?.querySelector('facet-row') as FacetRow;\n expect(facetRow).to.exist;\n\n const facetSelectCheck = facetRow.shadowRoot?.querySelector(\n '.select-facet-checkbox',\n ) as HTMLInputElement;\n expect(facetSelectCheck).to.exist;\n expect(facetSelectCheck.checked).to.be.true;\n\n facetSelectCheck.click();\n expect(facetClickSpy.callCount).to.equal(1);\n expect(facetRow.bucket?.state).to.equal('none');\n\n facetSelectCheck.click();\n expect(facetClickSpy.callCount).to.equal(2);\n expect(facetRow.bucket?.state).to.equal('selected');\n });\n});\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import '../../src/collection-facets/more-facets-content';
|
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
import { aTimeout, expect, fixture } from '@open-wc/testing';
|
|
2
|
-
import { html } from 'lit';
|
|
3
|
-
import '../../src/collection-facets/more-facets-content';
|
|
4
|
-
import { MockSearchService } from '../mocks/mock-search-service';
|
|
5
|
-
import { MockAnalyticsHandler } from '../mocks/mock-analytics-handler';
|
|
6
|
-
const selectedFacetsGroup = {
|
|
7
|
-
title: 'Media Type',
|
|
8
|
-
key: 'mediatype',
|
|
9
|
-
buckets: [
|
|
10
|
-
{ displayText: 'audio', key: 'audio', count: 1001, state: 'none' },
|
|
11
|
-
{ displayText: 'movies', key: 'movies', count: 901, state: 'none' },
|
|
12
|
-
{ displayText: 'texts', key: 'texts', count: 2101, state: 'none' },
|
|
13
|
-
{ displayText: 'data', key: 'data', count: 230, state: 'none' },
|
|
14
|
-
{ displayText: 'web', key: 'web', count: 453, state: 'none' },
|
|
15
|
-
],
|
|
16
|
-
};
|
|
17
|
-
const yearSelectedFacets = {
|
|
18
|
-
mediatype: {},
|
|
19
|
-
lending: {},
|
|
20
|
-
year: {
|
|
21
|
-
'2000': { key: '2000', count: 5, state: 'selected' },
|
|
22
|
-
},
|
|
23
|
-
subject: {},
|
|
24
|
-
collection: {},
|
|
25
|
-
creator: {},
|
|
26
|
-
language: {},
|
|
27
|
-
};
|
|
28
|
-
describe('More facets content', () => {
|
|
29
|
-
it('should render more facets template', async () => {
|
|
30
|
-
const el = await fixture(html `<more-facets-content></more-facets-content>`);
|
|
31
|
-
el.facetsLoading = false;
|
|
32
|
-
await el.updateComplete;
|
|
33
|
-
expect(el.shadowRoot?.querySelector('.facets-content')).to.exist;
|
|
34
|
-
});
|
|
35
|
-
it('should render more facets loader template', async () => {
|
|
36
|
-
const el = await fixture(html `<more-facets-content></more-facets-content>`);
|
|
37
|
-
el.facetsLoading = true;
|
|
38
|
-
await el.updateComplete;
|
|
39
|
-
expect(el.shadowRoot?.querySelector('.facets-loader')).to.exist;
|
|
40
|
-
});
|
|
41
|
-
it('should render pagination for more facets', async () => {
|
|
42
|
-
const searchService = new MockSearchService();
|
|
43
|
-
const el = await fixture(html `<more-facets-content
|
|
44
|
-
.searchService=${searchService}
|
|
45
|
-
></more-facets-content>`);
|
|
46
|
-
el.facetKey = 'year';
|
|
47
|
-
el.query = 'more-facets'; // Produces a response with 40+ aggregations for multiple pages
|
|
48
|
-
await el.updateComplete;
|
|
49
|
-
await aTimeout(50); // Give it a moment to perform the (mock) search query after the initial update
|
|
50
|
-
expect(el.shadowRoot?.querySelectorAll('more-facets-pagination')).to.exist;
|
|
51
|
-
});
|
|
52
|
-
it('query for more facets content using search service', async () => {
|
|
53
|
-
const searchService = new MockSearchService();
|
|
54
|
-
const el = await fixture(html `<more-facets-content
|
|
55
|
-
.searchService=${searchService}
|
|
56
|
-
></more-facets-content>`);
|
|
57
|
-
el.facetKey = 'collection';
|
|
58
|
-
el.query = 'collection-aggregations';
|
|
59
|
-
await el.updateComplete;
|
|
60
|
-
expect(searchService.searchParams?.query).to.equal('collection-aggregations');
|
|
61
|
-
});
|
|
62
|
-
it('queries for more facets using search service within a collection (no query)', async () => {
|
|
63
|
-
const searchService = new MockSearchService();
|
|
64
|
-
const el = await fixture(html `<more-facets-content
|
|
65
|
-
.searchService=${searchService}
|
|
66
|
-
.pageSpecifierParams=${{
|
|
67
|
-
pageType: 'collection_details',
|
|
68
|
-
pageTarget: 'foobar',
|
|
69
|
-
}}
|
|
70
|
-
></more-facets-content>`);
|
|
71
|
-
el.facetKey = 'subject';
|
|
72
|
-
await el.updateComplete;
|
|
73
|
-
expect(searchService.searchParams?.query).to.be.empty;
|
|
74
|
-
expect(searchService.searchParams?.pageTarget).to.equal('foobar');
|
|
75
|
-
});
|
|
76
|
-
it('queries for more facets using search service within a collection (with query)', async () => {
|
|
77
|
-
const searchService = new MockSearchService();
|
|
78
|
-
const el = await fixture(html `<more-facets-content
|
|
79
|
-
.searchService=${searchService}
|
|
80
|
-
.pageSpecifierParams=${{
|
|
81
|
-
pageType: 'collection_details',
|
|
82
|
-
pageTarget: 'foobar',
|
|
83
|
-
}}
|
|
84
|
-
></more-facets-content>`);
|
|
85
|
-
el.facetKey = 'subject';
|
|
86
|
-
el.query = 'title:hello';
|
|
87
|
-
await el.updateComplete;
|
|
88
|
-
expect(searchService.searchParams?.query).to.equal('title:hello');
|
|
89
|
-
expect(searchService.searchParams?.pageTarget).to.equal('foobar');
|
|
90
|
-
});
|
|
91
|
-
it('filter raw selectedFacets object', async () => {
|
|
92
|
-
const searchService = new MockSearchService();
|
|
93
|
-
const el = await fixture(html `<more-facets-content
|
|
94
|
-
.searchService=${searchService}
|
|
95
|
-
.selectedFacets=${selectedFacetsGroup}
|
|
96
|
-
></more-facets-content>`);
|
|
97
|
-
el.facetKey = 'collection';
|
|
98
|
-
el.query = 'title:hello';
|
|
99
|
-
await el.updateComplete;
|
|
100
|
-
expect(searchService.searchParams?.query).to.equal('title:hello');
|
|
101
|
-
});
|
|
102
|
-
it('combines selectedFacets and aggregationFacets and renders on modal', async () => {
|
|
103
|
-
const searchService = new MockSearchService();
|
|
104
|
-
const el = await fixture(html `<more-facets-content
|
|
105
|
-
.facetKey=${'year'}
|
|
106
|
-
.query=${'more-facets'}
|
|
107
|
-
.searchService=${searchService}
|
|
108
|
-
.selectedFacets=${yearSelectedFacets}
|
|
109
|
-
></more-facets-content>`);
|
|
110
|
-
const facetsTemplate = el.shadowRoot?.querySelector('facets-template');
|
|
111
|
-
expect(facetsTemplate).to.exist;
|
|
112
|
-
const { facetGroup } = facetsTemplate;
|
|
113
|
-
expect(facetGroup?.key).to.equal('year');
|
|
114
|
-
expect(facetGroup?.title).to.equal('Year');
|
|
115
|
-
// First bucket is the one that was included in the selected facets
|
|
116
|
-
const firstBucket = facetGroup?.buckets[0];
|
|
117
|
-
expect(firstBucket?.key).to.equal('2000');
|
|
118
|
-
expect(firstBucket?.count).to.equal(5);
|
|
119
|
-
// Second bucket is the most recent year, since year facets default to descending order of year
|
|
120
|
-
const secondBucket = facetGroup?.buckets[1];
|
|
121
|
-
expect(secondBucket?.key).to.equal('2024');
|
|
122
|
-
expect(secondBucket?.count).to.equal(5);
|
|
123
|
-
});
|
|
124
|
-
it('cancel button clicked event', async () => {
|
|
125
|
-
const searchService = new MockSearchService();
|
|
126
|
-
const mockAnalyticsHandler = new MockAnalyticsHandler();
|
|
127
|
-
const el = await fixture(html `<more-facets-content
|
|
128
|
-
.facetKey=${'collection'}
|
|
129
|
-
.query=${'collection-aggregations'}
|
|
130
|
-
.searchService=${searchService}
|
|
131
|
-
.analyticsHandler=${mockAnalyticsHandler}
|
|
132
|
-
></more-facets-content>`);
|
|
133
|
-
// select cancel button
|
|
134
|
-
const cancelButton = el.shadowRoot?.querySelector('.footer > .btn-cancel');
|
|
135
|
-
expect(cancelButton).to.exist;
|
|
136
|
-
cancelButton?.click();
|
|
137
|
-
expect(mockAnalyticsHandler.callCategory).to.equal('collection-browser');
|
|
138
|
-
expect(mockAnalyticsHandler.callAction).to.equal('closeMoreFacetsModal');
|
|
139
|
-
expect(mockAnalyticsHandler.callLabel).to.equal('collection');
|
|
140
|
-
});
|
|
141
|
-
it('facet apply button clicked event', async () => {
|
|
142
|
-
const searchService = new MockSearchService();
|
|
143
|
-
const mockAnalyticsHandler = new MockAnalyticsHandler();
|
|
144
|
-
const el = await fixture(html `<more-facets-content
|
|
145
|
-
.facetKey=${'collection'}
|
|
146
|
-
.query=${'collection-aggregations'}
|
|
147
|
-
.searchService=${searchService}
|
|
148
|
-
.analyticsHandler=${mockAnalyticsHandler}
|
|
149
|
-
></more-facets-content>`);
|
|
150
|
-
// select submit button
|
|
151
|
-
const submitButton = el.shadowRoot?.querySelector('.footer > .btn-submit');
|
|
152
|
-
expect(submitButton).to.exist;
|
|
153
|
-
submitButton?.click();
|
|
154
|
-
expect(mockAnalyticsHandler.callCategory).to.equal('collection-browser');
|
|
155
|
-
expect(mockAnalyticsHandler.callAction).to.equal('applyMoreFacetsModal');
|
|
156
|
-
expect(mockAnalyticsHandler.callLabel).to.equal('collection');
|
|
157
|
-
});
|
|
158
|
-
});
|
|
159
|
-
//# sourceMappingURL=more-facets-content.test.js.map
|