@internetarchive/collection-browser 2.6.2-alpha.2 → 2.6.3

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/dist/index.d.ts CHANGED
@@ -10,3 +10,4 @@ export { AccountTile } from './src/tiles/grid/account-tile';
10
10
  export { ItemTile } from './src/tiles/grid/item-tile';
11
11
  export { TileList } from './src/tiles/list/tile-list';
12
12
  export { TileListCompact } from './src/tiles/list/tile-list-compact';
13
+ export { TileDispatcher } from './src/tiles/tile-dispatcher';
package/dist/index.js CHANGED
@@ -10,4 +10,5 @@ export { AccountTile } from './src/tiles/grid/account-tile';
10
10
  export { ItemTile } from './src/tiles/grid/item-tile';
11
11
  export { TileList } from './src/tiles/list/tile-list';
12
12
  export { TileListCompact } from './src/tiles/list/tile-list-compact';
13
+ export { TileDispatcher } from './src/tiles/tile-dispatcher';
13
14
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,2BAA2B,EAAE,MAAM,kDAAkD,CAAC;AAC/F,OAAO,EAAwC,MAAM,4DAA4D,CAAC;AAClH,OAAO,EAA+B,MAAM,kDAAkD,CAAC;AAC/F,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACtE,OAAO,EAAyB,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EAAE,4BAA4B,EAAE,MAAM,6CAA6C,CAAC;AAC3F,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC","sourcesContent":["export { CollectionBrowser } from './src/collection-browser';\nexport { CollectionBrowserDataSource } from './src/data-source/collection-browser-data-source';\nexport { CollectionBrowserDataSourceInterface } from './src/data-source/collection-browser-data-source-interface';\nexport { CollectionBrowserQueryState } from './src/data-source/collection-browser-query-state';\nexport { SortFilterBar } from './src/sort-filter-bar/sort-filter-bar';\nexport { CollectionDisplayMode, SortField, TileModel } from './src/models';\nexport { CollectionBrowserLoadingTile } from './src/tiles/collection-browser-loading-tile';\nexport { CollectionTile } from './src/tiles/grid/collection-tile';\nexport { AccountTile } from './src/tiles/grid/account-tile';\nexport { ItemTile } from './src/tiles/grid/item-tile';\nexport { TileList } from './src/tiles/list/tile-list';\nexport { TileListCompact } from './src/tiles/list/tile-list-compact';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,2BAA2B,EAAE,MAAM,kDAAkD,CAAC;AAC/F,OAAO,EAAwC,MAAM,4DAA4D,CAAC;AAClH,OAAO,EAA+B,MAAM,kDAAkD,CAAC;AAC/F,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACtE,OAAO,EAAyB,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EAAE,4BAA4B,EAAE,MAAM,6CAA6C,CAAC;AAC3F,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC","sourcesContent":["export { CollectionBrowser } from './src/collection-browser';\nexport { CollectionBrowserDataSource } from './src/data-source/collection-browser-data-source';\nexport { CollectionBrowserDataSourceInterface } from './src/data-source/collection-browser-data-source-interface';\nexport { CollectionBrowserQueryState } from './src/data-source/collection-browser-query-state';\nexport { SortFilterBar } from './src/sort-filter-bar/sort-filter-bar';\nexport { CollectionDisplayMode, SortField, TileModel } from './src/models';\nexport { CollectionBrowserLoadingTile } from './src/tiles/collection-browser-loading-tile';\nexport { CollectionTile } from './src/tiles/grid/collection-tile';\nexport { AccountTile } from './src/tiles/grid/account-tile';\nexport { ItemTile } from './src/tiles/grid/item-tile';\nexport { TileList } from './src/tiles/list/tile-list';\nexport { TileListCompact } from './src/tiles/list/tile-list-compact';\nexport { TileDispatcher } from './src/tiles/tile-dispatcher';\n"]}
@@ -789,7 +789,7 @@ describe('Collection Browser', () => {
789
789
  ></collection-browser>`);
790
790
  el.applyDefaultProfileSort();
791
791
  expect(el.defaultSortParam).to.deep.equal({
792
- field: SortField.weeklyview,
792
+ field: 'week',
793
793
  direction: 'desc',
794
794
  });
795
795
  });
@@ -1 +1 @@
1
- {"version":3,"file":"collection-browser.test.js","sourceRoot":"","sources":["../../test/collection-browser.test.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable import/no-duplicates */\nimport { aTimeout, expect, fixture } from '@open-wc/testing';\nimport { html } from 'lit';\nimport sinon from 'sinon';\nimport type { InfiniteScroller } from '@internetarchive/infinite-scroller';\nimport { FilterConstraint, SearchType } from '@internetarchive/search-service';\nimport type { HistogramDateRange } from '@internetarchive/histogram-date-range';\nimport type { CollectionBrowser } from '../src/collection-browser';\nimport '../src/collection-browser';\nimport {\n getDefaultSelectedFacets,\n FacetBucket,\n SelectedFacets,\n SortField,\n} from '../src/models';\nimport { MockSearchService } from './mocks/mock-search-service';\nimport { MockAnalyticsHandler } from './mocks/mock-analytics-handler';\nimport {\n analyticsActions,\n analyticsCategories,\n} from '../src/utils/analytics-events';\nimport type { TileDispatcher } from '../src/tiles/tile-dispatcher';\nimport type { CollectionFacets } from '../src/collection-facets';\nimport type { EmptyPlaceholder } from '../src/empty-placeholder';\nimport type { SortFilterBar } from '../src/sort-filter-bar/sort-filter-bar';\n\n/**\n * Wait for the next tick of the event loop.\n *\n * This is necessary in some of the tests because certain collection browser\n * updates take more than one tick to render (e.g., date picker & query changes).\n * These delays are non-ideal and should eventually be investigated and fixed,\n * but they are minor enough that waiting for the next tick is a reasonable\n * testing solution for now.\n */\nconst nextTick = () => aTimeout(0);\n\ndescribe('Collection Browser', () => {\n beforeEach(async () => {\n // Apparently query params set by one test can bleed into other tests.\n // Since collection browser restores its state from certain query params, we need\n // to clear these before each test to ensure they run in isolation from one another.\n const url = new URL(window.location.href);\n const { searchParams } = url;\n searchParams.delete('sin');\n searchParams.delete('sort');\n searchParams.delete('query');\n searchParams.delete('page');\n searchParams.delete('and[]');\n searchParams.delete('not[]');\n window.history.replaceState({}, '', url);\n });\n\n it('clears selected facets when requested', async () => {\n const selectedFacets = getDefaultSelectedFacets();\n selectedFacets.creator.foo = { count: 1, key: 'foo', state: 'selected' };\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser></collection-browser>`\n );\n\n el.selectedFacets = selectedFacets;\n await el.updateComplete;\n el.clearFilters(); // By default, sort is not cleared\n\n expect(el.selectedFacets).to.deep.equal(getDefaultSelectedFacets());\n });\n\n it('clears existing filters but not sort by default', async () => {\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser></collection-browser>`\n );\n\n el.selectedSort = 'title' as SortField;\n el.sortDirection = 'asc';\n await el.updateComplete;\n el.clearFilters(); // By default, sort is not cleared\n\n expect(el.selectedFacets).to.deep.equal(getDefaultSelectedFacets());\n expect(el.selectedSort).to.equal('title');\n expect(el.sortDirection).to.equal('asc');\n expect(el.sortParam).to.deep.equal({\n field: 'titleSorter',\n direction: 'asc',\n });\n expect(el.selectedCreatorFilter).to.be.null;\n expect(el.selectedTitleFilter).to.be.null;\n });\n\n it('clears existing filters for facets & sort via option', async () => {\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser></collection-browser>`\n );\n\n el.selectedSort = 'title' as SortField;\n await el.updateComplete;\n el.clearFilters({ sort: true }); // Sort is reset too due to the option\n\n expect(el.selectedFacets).to.deep.equal(getDefaultSelectedFacets());\n expect(el.selectedSort).to.equal(SortField.default);\n expect(el.sortDirection).to.be.null;\n expect(el.sortParam).to.be.null;\n expect(el.selectedCreatorFilter).to.be.null;\n expect(el.selectedTitleFilter).to.be.null;\n });\n\n it('filterBy creator with analytics', async () => {\n const mockAnalyticsHandler = new MockAnalyticsHandler();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .analyticsHandler=${mockAnalyticsHandler}>\n </collection-browser>`\n );\n\n el.searchContext = 'betaSearchService';\n el.selectedSort = 'creator' as SortField;\n el.sortDirection = 'asc';\n el.selectedCreatorFilter = 'A';\n await el.updateComplete;\n\n expect(mockAnalyticsHandler.callCategory).to.equal('betaSearchService');\n expect(mockAnalyticsHandler.callAction).to.equal('filterByCreator');\n expect(mockAnalyticsHandler.callLabel).to.equal('start-A');\n\n el.clearFilters();\n await el.updateComplete;\n\n expect(el.selectedTitleFilter).to.be.null;\n expect(mockAnalyticsHandler.callCategory).to.equal('betaSearchService');\n expect(mockAnalyticsHandler.callAction).to.equal('filterByCreator');\n expect(mockAnalyticsHandler.callLabel).to.equal('clear-A');\n });\n\n it('filterBy title with analytics', async () => {\n const mockAnalyticsHandler = new MockAnalyticsHandler();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .analyticsHandler=${mockAnalyticsHandler}>\n </collection-browser>`\n );\n\n el.searchContext = 'beta-search-service';\n el.selectedSort = 'title' as SortField;\n el.sortDirection = 'asc';\n el.selectedTitleFilter = 'A';\n await el.updateComplete;\n\n expect(mockAnalyticsHandler.callCategory).to.equal('beta-search-service');\n expect(mockAnalyticsHandler.callAction).to.equal('filterByTitle');\n expect(mockAnalyticsHandler.callLabel).to.equal('start-A');\n\n el.clearFilters();\n await el.updateComplete;\n\n expect(el.selectedTitleFilter).to.be.null;\n expect(mockAnalyticsHandler.callCategory).to.equal('beta-search-service');\n expect(mockAnalyticsHandler.callAction).to.equal('filterByTitle');\n expect(mockAnalyticsHandler.callLabel).to.equal('clear-A');\n });\n\n it('selected facets with analytics - not negative facets', async () => {\n const mockAnalyticsHandler = new MockAnalyticsHandler();\n const mediaTypeBucket = { count: 123, state: 'selected' } as FacetBucket;\n const mockedSelectedFacets: SelectedFacets = {\n subject: {},\n lending: {},\n mediatype: { data: mediaTypeBucket },\n language: {},\n creator: {},\n collection: {},\n year: {},\n };\n\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .analyticsHandler=${mockAnalyticsHandler}>\n </collection-browser>`\n );\n\n el.searchContext = 'search-service';\n el.selectedFacets = mockedSelectedFacets;\n await el.updateComplete;\n\n el.facetClickHandler(\n new CustomEvent('facetClick', {\n detail: {\n facetType: 'mediatype',\n bucket: {\n key: '',\n state: 'selected',\n count: 123,\n },\n negative: false,\n },\n })\n );\n expect(mockAnalyticsHandler.callCategory).to.equal('search-service');\n expect(mockAnalyticsHandler.callAction).to.equal('facetSelected');\n expect(mockAnalyticsHandler.callLabel).to.equal('mediatype');\n\n el.facetClickHandler(\n new CustomEvent('facetClick', {\n detail: {\n facetType: 'mediatype',\n bucket: {\n key: '',\n state: 'none',\n count: 123,\n },\n negative: false,\n },\n })\n );\n expect(el.selectedFacets).to.equal(mockedSelectedFacets);\n expect(mockAnalyticsHandler.callCategory).to.equal('search-service');\n expect(mockAnalyticsHandler.callAction).to.equal('facetDeselected');\n expect(mockAnalyticsHandler.callLabel).to.equal('mediatype');\n });\n\n it('selected facets with analytics - negative facets', async () => {\n const mockAnalyticsHandler = new MockAnalyticsHandler();\n const mediaTypeBucket = { count: 123, state: 'selected' } as FacetBucket;\n const mockedSelectedFacets: SelectedFacets = {\n subject: {},\n lending: {},\n mediatype: { data: mediaTypeBucket },\n language: {},\n creator: {},\n collection: {},\n year: {},\n };\n\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .analyticsHandler=${mockAnalyticsHandler}>\n </collection-browser>`\n );\n\n el.searchContext = 'beta-search-service';\n el.selectedFacets = mockedSelectedFacets;\n await el.updateComplete;\n\n el.facetClickHandler(\n new CustomEvent('facetClick', {\n detail: {\n facetType: 'mediatype',\n bucket: {\n key: '',\n state: 'hidden',\n count: 123,\n },\n negative: true,\n },\n })\n );\n expect(mockAnalyticsHandler.callCategory).to.equal('beta-search-service');\n expect(mockAnalyticsHandler.callAction).to.equal('facetNegativeSelected');\n expect(mockAnalyticsHandler.callLabel).to.equal('mediatype');\n\n el.facetClickHandler(\n new CustomEvent('facetClick', {\n detail: {\n facetType: 'mediatype',\n bucket: {\n key: '',\n state: 'none',\n count: 123,\n },\n negative: true,\n },\n })\n );\n expect(el.selectedFacets).to.equal(mockedSelectedFacets);\n expect(mockAnalyticsHandler.callCategory).to.equal('beta-search-service');\n expect(mockAnalyticsHandler.callAction).to.equal('facetNegativeDeselected');\n expect(mockAnalyticsHandler.callLabel).to.equal('mediatype');\n });\n\n it('should render with a sort bar, facets, and infinite scroller', async () => {\n const searchService = new MockSearchService();\n\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n el.baseQuery = 'hello';\n await el.updateComplete;\n await nextTick();\n\n const facets = el.shadowRoot?.querySelector('collection-facets');\n const sortBar = el.shadowRoot?.querySelector('sort-filter-bar');\n const infiniteScroller = el.shadowRoot?.querySelector('infinite-scroller');\n expect(facets, 'facets').to.exist;\n expect(sortBar, 'sort bar').to.exist;\n expect(infiniteScroller, 'infinite scroller').to.exist;\n });\n\n it('queries the search service when given a base query', async () => {\n const searchService = new MockSearchService();\n\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n el.baseQuery = 'collection:foo';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n expect(searchService.searchParams?.query).to.equal('collection:foo');\n expect(\n el.shadowRoot?.querySelector('#big-results-label')?.textContent\n ).to.contains('Results');\n });\n\n it('queries the search service with a metadata search', async () => {\n const searchService = new MockSearchService();\n\n const el = await fixture<CollectionBrowser>(\n html` <collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n el.searchType = SearchType.METADATA;\n await el.updateComplete;\n\n el.baseQuery = 'collection:foo';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n expect(searchService.searchParams?.query).to.equal('collection:foo');\n expect(searchService.searchType).to.equal(SearchType.METADATA);\n expect(\n el.shadowRoot?.querySelector('#big-results-label')?.textContent\n ).to.contains('Results');\n });\n\n it('can change search type', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n el.baseQuery = 'collection:foo';\n await el.updateComplete;\n\n el.searchType = SearchType.FULLTEXT;\n await el.updateComplete;\n await el.initialSearchComplete;\n\n expect(searchService.searchType).to.equal(SearchType.FULLTEXT);\n });\n\n it('queries the search service with a fulltext search', async () => {\n const searchService = new MockSearchService();\n\n const el = await fixture<CollectionBrowser>(\n html` <collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n el.searchType = SearchType.FULLTEXT;\n await el.updateComplete;\n\n el.baseQuery = 'collection:foo';\n await el.updateComplete;\n await nextTick();\n\n expect(searchService.searchParams?.query).to.equal('collection:foo');\n expect(searchService.searchType).to.equal(SearchType.FULLTEXT);\n expect(\n el.shadowRoot?.querySelector('#big-results-label')?.textContent\n ).to.contains('Results');\n });\n\n it('queries the search service with facets selected/negated', async () => {\n const searchService = new MockSearchService();\n const selectedFacets: SelectedFacets = {\n subject: {\n foo: {\n key: 'foo',\n count: 1,\n state: 'selected',\n },\n bar: {\n key: 'bar',\n count: 2,\n state: 'hidden',\n },\n },\n lending: {},\n mediatype: {},\n language: {\n en: {\n key: 'en',\n count: 1,\n state: 'selected',\n },\n },\n creator: {},\n collection: {},\n year: {},\n };\n\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n el.baseQuery = 'collection:foo';\n el.selectedFacets = selectedFacets;\n await el.updateComplete;\n await el.initialSearchComplete;\n\n expect(searchService.searchParams?.query).to.equal('collection:foo');\n expect(searchService.searchParams?.filters).to.deep.equal({\n subject: {\n foo: 'inc',\n bar: 'exc',\n },\n language: {\n en: 'inc',\n },\n });\n });\n\n it('fails gracefully if no search service provided', async () => {\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser></collection-browser>`\n );\n\n el.baseQuery = 'collection:foo';\n await el.updateComplete;\n\n // This shouldn't throw an error\n expect(el.dataSource.fetchPage(3)).to.exist;\n\n // Should continue showing the empty placeholder\n expect(el.shadowRoot?.querySelector('empty-placeholder')).to.exist;\n });\n\n it('restores search type from URL param', async () => {\n // Add a sin=TXT param to the URL\n const url = new URL(window.location.href);\n url.searchParams.append('sin', 'TXT');\n window.history.replaceState({}, '', url);\n\n const searchService = new MockSearchService();\n\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n expect(el.searchType).to.equal(SearchType.FULLTEXT);\n });\n\n it('can construct tile models with many fields present', async () => {\n const searchService = new MockSearchService();\n\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n el.baseQuery = 'many-fields';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n const cellTemplate = el.cellForIndex(0);\n expect(cellTemplate).to.exist;\n\n const cell = await fixture<TileDispatcher>(cellTemplate!);\n expect(cell).to.exist;\n });\n\n it('emits empty results event when search fetches no results', async () => {\n const searchService = new MockSearchService();\n const emptyResultsSpy = sinon.spy();\n\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n @emptyResults=${emptyResultsSpy}\n >\n </collection-browser>`\n );\n\n el.baseQuery = 'no-results';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n expect(emptyResultsSpy.callCount).to.equal(1);\n });\n\n it('applies loggedin flag to tile models if needed', async () => {\n const searchService = new MockSearchService();\n\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n el.baseQuery = 'loggedin';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n const cellTemplate = el.cellForIndex(0);\n expect(cellTemplate).to.exist;\n\n const cell = await fixture<TileDispatcher>(cellTemplate!);\n expect(cell).to.exist;\n\n expect(cell.model?.loginRequired).to.be.true;\n });\n\n it('applies no-preview flag to tile models if needed', async () => {\n const searchService = new MockSearchService();\n\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n el.baseQuery = 'no-preview';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n const cellTemplate = el.cellForIndex(0);\n expect(cellTemplate).to.exist;\n\n const cell = await fixture<TileDispatcher>(cellTemplate!);\n expect(cell).to.exist;\n\n expect(cell.model?.contentWarning).to.be.true;\n });\n\n it('both loggedin and no-preview flags can be set simultaneously', async () => {\n const searchService = new MockSearchService();\n\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n el.baseQuery = 'loggedin-no-preview';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n const cellTemplate = el.cellForIndex(0);\n expect(cellTemplate).to.exist;\n\n const cell = await fixture<TileDispatcher>(cellTemplate!);\n expect(cell).to.exist;\n\n expect(cell.model?.loginRequired).to.be.true;\n expect(cell.model?.contentWarning).to.be.true;\n });\n\n it('joins full description array into a single string with line breaks', async () => {\n const searchService = new MockSearchService();\n\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n // This query receives an array description like ['line1', 'line2']\n el.baseQuery = 'multi-line-description';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n const cellTemplate = el.cellForIndex(0);\n expect(cellTemplate).to.exist;\n\n const cell = await fixture<TileDispatcher>(cellTemplate!);\n expect(cell).to.exist;\n\n // Actual model description should be joined\n expect(cell.model?.description).to.equal('line1\\nline2');\n });\n\n it('can change search type', async () => {\n const searchService = new MockSearchService();\n\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n .searchType=${SearchType.METADATA}\n ></collection-browser>`\n );\n\n el.baseQuery = 'collection:foo';\n el.searchType = SearchType.FULLTEXT;\n await el.updateComplete;\n await el.initialSearchComplete;\n\n expect(searchService.searchParams?.query).to.equal('collection:foo');\n expect(searchService.searchType).to.equal(SearchType.FULLTEXT);\n });\n\n it('trims queries of leading/trailing whitespace', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n ></collection-browser>`\n );\n\n el.baseQuery = ' collection:foo ';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n expect(searchService.searchParams?.query).to.equal('collection:foo');\n });\n\n it('shows error message when error response received', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n ></collection-browser>`\n );\n\n el.baseQuery = 'error';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n const errorPlaceholder = el.shadowRoot?.querySelector(\n 'empty-placeholder'\n ) as EmptyPlaceholder;\n const errorDetails = errorPlaceholder?.shadowRoot?.querySelector(\n '.error-details'\n ) as HTMLParagraphElement;\n\n expect(errorDetails).to.exist;\n expect(errorDetails.textContent).to.contain('foo');\n });\n\n it('shows error message when error response received for a collection', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n ></collection-browser>`\n );\n\n el.withinCollection = 'error';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n const errorPlaceholder = el.shadowRoot?.querySelector(\n 'empty-placeholder'\n ) as EmptyPlaceholder;\n const errorDetails = errorPlaceholder?.shadowRoot?.querySelector(\n '.error-details'\n ) as HTMLParagraphElement;\n\n expect(errorDetails).to.exist;\n expect(errorDetails.textContent).to.contain('foo');\n });\n\n it('reports malformed response errors to Sentry', async () => {\n const sentrySpy = sinon.spy();\n (window as any).Sentry = { captureMessage: sentrySpy };\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n ></collection-browser>`\n );\n\n el.baseQuery = 'malformed';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n expect(sentrySpy.callCount).to.be.greaterThanOrEqual(1);\n });\n\n it('adds collection names to cache when present on response', async () => {\n const searchService = new MockSearchService();\n\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n el.baseQuery = 'collection-titles';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n expect(el.dataSource.collectionTitles.get('foo')).to.equal(\n 'Foo Collection'\n );\n expect(el.dataSource.collectionTitles.get('bar')).to.equal(\n 'Bar Collection'\n );\n expect(el.dataSource.collectionTitles.get('baz')).to.equal(\n 'Baz Collection'\n );\n expect(el.dataSource.collectionTitles.get('boop')).to.equal(\n 'Boop Collection'\n );\n });\n\n it('keeps search results from fetch if no change to query or sort param', async () => {\n const resultsSpy = sinon.spy();\n const searchService = new MockSearchService({\n asyncResponse: true,\n resultsSpy,\n });\n\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n el.baseQuery = 'with-sort';\n el.selectedSort = SortField.date;\n el.sortDirection = 'asc';\n await el.updateComplete;\n\n await el.dataSource.fetchPage(3);\n\n // If there is no change to the query or sort param during the fetch, the results\n // should be read.\n expect(resultsSpy.callCount).to.be.greaterThanOrEqual(1);\n });\n\n it('discards obsolete search results if sort params changed before arrival', async () => {\n const resultsSpy = sinon.spy();\n const searchService = new MockSearchService({\n asyncResponse: true,\n resultsSpy,\n });\n\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n el.baseQuery = 'with-sort';\n el.selectedSort = SortField.date;\n el.sortDirection = 'asc';\n await el.updateComplete;\n\n // We want to spy exclusively on the first set of results, not the second\n searchService.asyncResponse = false;\n searchService.resultsSpy = () => {};\n\n el.sortDirection = 'desc';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n // If the different sort param causes the results to be discarded,\n // the first results array should never be read.\n expect(resultsSpy.callCount).to.equal(0);\n });\n\n it('discards obsolete search results if sort param added before arrival', async () => {\n const resultsSpy = sinon.spy();\n const searchService = new MockSearchService({\n asyncResponse: true,\n resultsSpy,\n });\n\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n el.baseQuery = 'single-result';\n await el.updateComplete;\n\n // We want to spy exclusively on the first set of results, not the second\n searchService.asyncResponse = false;\n searchService.resultsSpy = () => {};\n\n el.selectedSort = SortField.date;\n el.sortDirection = 'asc';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n // If the different sort param causes the results to be discarded,\n // the first results array should never be read.\n expect(resultsSpy.callCount).to.equal(0);\n });\n\n it('discards obsolete search results if sort param cleared before arrival', async () => {\n const resultsSpy = sinon.spy();\n const searchService = new MockSearchService({\n asyncResponse: true,\n resultsSpy,\n });\n\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n el.baseQuery = 'with-sort';\n el.selectedSort = SortField.date;\n el.sortDirection = 'asc';\n await el.updateComplete;\n\n // We want to spy exclusively on the first set of results, not the second\n searchService.asyncResponse = false;\n searchService.resultsSpy = () => {};\n\n el.selectedSort = SortField.default;\n await el.updateComplete;\n await el.initialSearchComplete;\n\n // If the different sort param causes the results to be discarded,\n // the first results array should never be read.\n expect(resultsSpy.callCount).to.equal(0);\n });\n\n it('sets sort properties when user changes sort', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n expect(el.selectedSort).to.equal(SortField.default);\n\n el.baseQuery = 'foo';\n await el.updateComplete;\n await nextTick();\n\n const sortBar = el.shadowRoot?.querySelector(\n '#content-container sort-filter-bar'\n );\n const sortSelector = sortBar?.shadowRoot?.querySelector(\n '#desktop-sort-selector'\n );\n expect(sortSelector, 'sort bar').to.exist;\n\n // Click the title sorter\n [...(sortSelector?.children as HTMLCollection & Iterable<any>)] // tsc doesn't know children is iterable\n .find(child => child.textContent?.trim() === 'Title')\n ?.querySelector('button')\n ?.click();\n\n await el.updateComplete;\n\n expect(el.selectedSort).to.equal(SortField.title);\n });\n\n it('sets sort filter properties when user selects title filter', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n el.baseQuery = 'first-title';\n el.selectedSort = 'title' as SortField;\n el.sortDirection = 'asc';\n el.selectedTitleFilter = 'X';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n expect(searchService.searchParams?.query).to.equal('first-title');\n expect(searchService.searchParams?.filters?.firstTitle?.X).to.equal(\n FilterConstraint.INCLUDE\n );\n });\n\n it('sets sort filter properties when user selects creator filter', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n el.baseQuery = 'first-creator';\n el.selectedSort = 'creator' as SortField;\n el.sortDirection = 'asc';\n el.selectedCreatorFilter = 'X';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n expect(searchService.searchParams?.query).to.equal('first-creator');\n expect(searchService.searchParams?.filters?.firstCreator?.X).to.equal(\n FilterConstraint.INCLUDE\n );\n });\n\n it('sets sort filter properties simultaneous with facets and date range', async () => {\n const searchService = new MockSearchService();\n const selectedFacets: SelectedFacets = {\n collection: { foo: { key: 'foo', state: 'selected', count: 1 } },\n creator: {},\n language: {},\n lending: {},\n mediatype: {},\n subject: {},\n year: {},\n };\n\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n el.baseQuery = 'first-creator';\n el.selectedSort = 'creator' as SortField;\n el.selectedFacets = selectedFacets;\n el.minSelectedDate = '1950';\n el.maxSelectedDate = '1970';\n el.sortDirection = 'asc';\n el.selectedCreatorFilter = 'X';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n expect(searchService.searchParams?.query).to.equal('first-creator');\n expect(searchService.searchParams?.filters).to.deep.equal({\n collection: {\n foo: 'inc',\n },\n year: {\n '1950': 'gte',\n '1970': 'lte',\n },\n firstCreator: {\n X: 'inc',\n },\n });\n });\n\n it('resets letter filters when query changes', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n el.baseQuery = 'first-creator';\n el.selectedSort = 'creator' as SortField;\n el.sortDirection = 'asc';\n el.selectedCreatorFilter = 'X';\n await el.updateComplete;\n await nextTick();\n\n expect(searchService.searchParams?.query).to.equal('first-creator');\n expect(searchService.searchParams?.filters?.firstCreator?.X).to.equal(\n FilterConstraint.INCLUDE\n );\n\n el.baseQuery = 'collection:foo';\n await el.updateComplete;\n await nextTick();\n\n expect(searchService.searchParams?.query).to.equal('collection:foo');\n expect(searchService.searchParams?.filters?.firstCreator).not.to.exist;\n });\n\n it('sets date range query when date picker selection changed', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n .suppressPlaceholders=${true}\n >\n </collection-browser>`\n );\n\n el.baseQuery = 'years'; // Includes year_histogram aggregation in response\n el.showHistogramDatePicker = true;\n await el.updateComplete;\n\n const facets = el.shadowRoot?.querySelector(\n 'collection-facets'\n ) as CollectionFacets;\n await facets?.updateComplete;\n\n // Wait for the date picker to be rendered (which may take until the next tick)\n await nextTick();\n\n const histogram = facets?.shadowRoot?.querySelector(\n 'histogram-date-range'\n ) as HistogramDateRange;\n\n expect(histogram, 'histogram exists').to.exist;\n\n // Enter a new min date into the date picker\n const minDateInput = histogram.shadowRoot?.querySelector(\n '#date-min'\n ) as HTMLInputElement;\n\n const pressEnterEvent = new KeyboardEvent('keyup', {\n key: 'Enter',\n });\n\n minDateInput.value = '1960';\n minDateInput.dispatchEvent(pressEnterEvent);\n\n // Wait for the histogram's update delay\n await aTimeout(histogram.updateDelay + 50);\n\n // Ensure that the histogram change propagated to the collection browser's\n // date query correctly.\n await el.updateComplete;\n expect(el.minSelectedDate).to.equal('1960');\n expect(el.maxSelectedDate).to.equal('2000');\n });\n\n it('emits event when loading state changes', async () => {\n const spy = sinon.spy();\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n ></collection-browser>`\n );\n\n el.baseQuery = 'collection:foo';\n el.addEventListener('searchResultsLoadingChanged', spy);\n await el.updateComplete;\n await el.initialSearchComplete;\n\n // Should initially emit loading=true, then later emit loading=false\n expect(spy.callCount).to.equal(2);\n expect(spy.firstCall.firstArg?.detail?.loading).to.equal(true);\n expect(spy.secondCall.firstArg?.detail?.loading).to.equal(false);\n });\n\n it('collapses extra set of quotes around href field', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n .baseNavigationUrl=${''}\n ></collection-browser>`\n );\n\n el.baseQuery = 'extra-quoted-href';\n await el.updateComplete;\n await el.initialSearchComplete;\n await el.updateComplete;\n await aTimeout(50);\n\n const infiniteScroller = el.shadowRoot?.querySelector('infinite-scroller');\n expect(infiniteScroller).to.exist;\n\n const firstResult =\n infiniteScroller!.shadowRoot?.querySelector('tile-dispatcher');\n expect(firstResult).to.exist;\n\n // Original href q param starts/ends with %22%22, but should be collapsed to %22 before render\n expect(\n firstResult!.shadowRoot?.querySelector('a[href]')?.getAttribute('href')\n ).to.equal('/details/foo?q=%22quoted+query%22');\n });\n\n it('sets default sort from collection metadata', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n .baseNavigationUrl=${''}\n ></collection-browser>`\n );\n\n el.withinCollection = 'default-sort';\n await el.updateComplete;\n await el.initialSearchComplete;\n await el.updateComplete;\n await aTimeout(50);\n\n const sortBar = el.shadowRoot?.querySelector(\n 'sort-filter-bar'\n ) as SortFilterBar;\n expect(sortBar).to.exist;\n expect(sortBar.defaultSortField).to.equal(SortField.title);\n expect(sortBar.defaultSortDirection).to.equal('asc');\n expect(sortBar.selectedSort).to.equal(SortField.default);\n expect(sortBar.sortDirection).to.be.null;\n });\n\n it('sets default sort from collection metadata in \"-field\" format', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n .baseNavigationUrl=${''}\n ></collection-browser>`\n );\n\n el.withinCollection = 'default-sort-concise';\n await el.updateComplete;\n await el.initialSearchComplete;\n await el.updateComplete;\n await aTimeout(50);\n\n const sortBar = el.shadowRoot?.querySelector(\n 'sort-filter-bar'\n ) as SortFilterBar;\n expect(sortBar).to.exist;\n expect(sortBar.defaultSortField).to.equal(SortField.dateadded);\n expect(sortBar.defaultSortDirection).to.equal('desc');\n expect(sortBar.selectedSort).to.equal(SortField.default);\n expect(sortBar.sortDirection).to.be.null;\n });\n\n it('falls back to weekly views default sorting on profiles when tab not set', async () => {\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .withinProfile=${'@foobar'}\n ></collection-browser>`\n );\n\n el.applyDefaultProfileSort();\n expect(el.defaultSortParam).to.deep.equal({\n field: SortField.weeklyview,\n direction: 'desc',\n });\n });\n\n it('uses relevance sort as default when a query is set', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n .baseNavigationUrl=${''}\n ></collection-browser>`\n );\n\n el.withinCollection = 'default-sort';\n el.baseQuery = 'default-sort';\n await el.updateComplete;\n await el.initialSearchComplete;\n await el.updateComplete;\n await aTimeout(50);\n\n const sortBar = el.shadowRoot?.querySelector(\n 'sort-filter-bar'\n ) as SortFilterBar;\n expect(sortBar).to.exist;\n expect(sortBar.defaultSortField).to.equal(SortField.relevance);\n expect(sortBar.defaultSortDirection).to.be.null;\n expect(sortBar.selectedSort).to.equal(SortField.default);\n expect(sortBar.sortDirection).to.be.null;\n });\n\n it('uses date favorited sort as default when targeting fav- collection', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n .baseNavigationUrl=${''}\n ></collection-browser>`\n );\n\n el.withinCollection = 'fav-sort';\n await el.updateComplete;\n await el.initialSearchComplete;\n await el.updateComplete;\n await aTimeout(50);\n\n const sortBar = el.shadowRoot?.querySelector(\n 'sort-filter-bar'\n ) as SortFilterBar;\n expect(sortBar).to.exist;\n expect(sortBar.defaultSortField).to.equal(SortField.datefavorited);\n expect(sortBar.defaultSortDirection).to.equal('desc');\n expect(sortBar.selectedSort).to.equal(SortField.default);\n expect(sortBar.sortDirection).to.be.null;\n });\n\n it('scrolls to page', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n // Infinite scroller won't exist unless there's a base query.\n // First ensure that we don't throw errors when it doesn't exist.\n await el.goToPage(1);\n\n // And make sure it correctly calls scrollToCell when the\n // infinite scroller does exist.\n el.baseQuery = 'collection:foo';\n await el.updateComplete;\n await nextTick();\n\n const infiniteScroller = el.shadowRoot?.querySelector(\n 'infinite-scroller'\n ) as InfiniteScroller;\n expect(infiniteScroller).to.exist;\n\n const oldScrollToCell = infiniteScroller.scrollToCell;\n const spy = sinon.spy();\n infiniteScroller.scrollToCell = spy;\n\n await el.goToPage(1);\n expect(spy.callCount, 'scroll to page fires once').to.equal(1);\n\n infiniteScroller.scrollToCell = oldScrollToCell;\n });\n\n it('shows mobile facets in mobile view', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n .mobileBreakpoint=${9999}\n ></collection-browser>`\n );\n\n el.baseQuery = 'collection:foo';\n await el.updateComplete;\n\n const contentContainer = el.shadowRoot?.querySelector(\n '#content-container'\n ) as HTMLElement;\n\n el.handleResize({\n target: contentContainer,\n contentRect: contentContainer.getBoundingClientRect(),\n borderBoxSize: [],\n contentBoxSize: [],\n devicePixelContentBoxSize: [],\n });\n await el.updateComplete;\n\n const mobileFacets = el.shadowRoot?.querySelector(\n '#mobile-filter-collapse'\n );\n expect(mobileFacets).to.exist;\n });\n\n it('fires analytics when mobile facets toggled', async () => {\n const searchService = new MockSearchService();\n const analyticsHandler = new MockAnalyticsHandler();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n .analyticsHandler=${analyticsHandler}\n .searchContext=${'foobar-context'}\n .mobileBreakpoint=${9999}\n ></collection-browser>`\n );\n\n el.baseQuery = 'collection:foo';\n await el.updateComplete;\n\n const contentContainer = el.shadowRoot?.querySelector(\n '#content-container'\n ) as HTMLElement;\n\n el.handleResize({\n target: contentContainer,\n contentRect: contentContainer.getBoundingClientRect(),\n borderBoxSize: [],\n contentBoxSize: [],\n devicePixelContentBoxSize: [],\n });\n await el.updateComplete;\n\n const mobileFacets = el.shadowRoot?.querySelector(\n '#mobile-filter-collapse'\n ) as HTMLDetailsElement;\n expect(mobileFacets).to.exist;\n\n // We set up a Promise to wait for the 'toggle' event on the collapser,\n // which is what triggers the analytics.\n let facetsToggled = new Promise(resolve => {\n mobileFacets.addEventListener('toggle', resolve);\n });\n\n // Open the mobile facets accordion & check analytics\n const mobileFacetsHeader = mobileFacets.querySelector('summary');\n expect(mobileFacetsHeader).to.exist;\n mobileFacetsHeader!.click();\n await facetsToggled;\n expect(analyticsHandler.callCategory).to.equal('foobar-context');\n expect(analyticsHandler.callAction).to.equal(\n analyticsActions.mobileFacetsToggled\n );\n expect(analyticsHandler.callLabel).to.equal('open');\n\n // Close the mobile facets accordion & check analytics\n facetsToggled = new Promise(resolve => {\n mobileFacets.addEventListener('toggle', resolve);\n });\n mobileFacetsHeader!.click();\n await facetsToggled;\n expect(analyticsHandler.callCategory).to.equal('foobar-context');\n expect(analyticsHandler.callAction).to.equal(\n analyticsActions.mobileFacetsToggled\n );\n expect(analyticsHandler.callLabel).to.equal('closed');\n });\n\n it('sets parent collections to prop when searching a collection', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n .withinCollection=${'fake'}\n ></collection-browser>`\n );\n\n el.baseQuery = 'parent-collections';\n await el.updateComplete;\n await el.initialSearchComplete;\n await aTimeout(0);\n\n expect(el.dataSource.parentCollections).to.deep.equal(['foo', 'bar']);\n });\n\n it('refreshes when certain properties change - with some analytics event sampling', async () => {\n const mockAnalyticsHandler = new MockAnalyticsHandler();\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .analyticsHandler=${mockAnalyticsHandler}\n .searchService=${searchService}\n ></collection-browser>`\n );\n const infiniteScrollerRefreshSpy = sinon.spy();\n\n // Infinite scroller won't exist unless there's a base query\n el.baseQuery = 'collection:foo';\n await el.updateComplete;\n await nextTick();\n\n const infiniteScroller = el.shadowRoot?.querySelector('infinite-scroller');\n (infiniteScroller as InfiniteScroller).reload = infiniteScrollerRefreshSpy;\n expect(infiniteScrollerRefreshSpy.called).to.be.false;\n expect(infiniteScrollerRefreshSpy.callCount).to.equal(0);\n\n // testing: `loggedIn`\n el.loggedIn = true;\n await el.updateComplete;\n\n expect(infiniteScrollerRefreshSpy.called, 'Infinite Scroller Refresh').to.be\n .true;\n expect(\n infiniteScrollerRefreshSpy.callCount,\n 'Infinite Scroller Refresh call count'\n ).to.equal(1);\n\n el.loggedIn = false;\n await el.updateComplete;\n\n expect(\n infiniteScrollerRefreshSpy.callCount,\n '2nd Infinite Scroller Refresh'\n ).to.equal(2);\n\n // testing: `displayMode`\n el.displayMode = 'list-compact';\n el.searchContext = 'beta-search';\n await el.updateComplete;\n expect(\n infiniteScrollerRefreshSpy.callCount,\n '3rd Infinite Scroller Refresh'\n ).to.equal(3);\n\n expect(mockAnalyticsHandler.callCategory).to.equal('beta-search');\n expect(mockAnalyticsHandler.callAction).to.equal('displayMode');\n expect(mockAnalyticsHandler.callLabel).to.equal('list-compact');\n\n el.displayMode = 'list-detail';\n await el.updateComplete;\n expect(\n infiniteScrollerRefreshSpy.callCount,\n '4th Infinite Scroller Refresh'\n ).to.equal(4);\n\n expect(mockAnalyticsHandler.callCategory).to.equal('beta-search');\n expect(mockAnalyticsHandler.callAction).to.equal('displayMode');\n expect(mockAnalyticsHandler.callLabel).to.equal('list-detail');\n\n // testing: `baseNavigationUrl`\n el.baseNavigationUrl = 'https://funtestsite.com';\n await el.updateComplete;\n expect(\n infiniteScrollerRefreshSpy.callCount,\n '5th Infinite Scroller Refresh'\n ).to.equal(5);\n\n // testing: `baseImageUrl`\n el.baseImageUrl = 'https://funtestsiteforimages.com';\n await el.updateComplete;\n expect(\n infiniteScrollerRefreshSpy.callCount,\n '6th Infinite Scroller Refresh'\n ).to.equal(6);\n });\n\n it('query the search service for single result', async () => {\n const searchService = new MockSearchService();\n\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n el.baseQuery = 'single-result';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n expect(\n el.shadowRoot?.querySelector('#big-results-label')?.textContent\n ).to.contains('Result');\n });\n\n it('`searchContext` prop helps describe where component is being used', async () => {\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser></collection-browser>`\n );\n\n expect(el.searchContext).to.equal(analyticsCategories.default);\n\n el.searchContext = 'unicorn-search';\n await el.updateComplete;\n\n expect(el.searchContext).to.equal('unicorn-search');\n\n // property is reflected as attribute\n expect(el.getAttribute('searchcontext')).to.equal('unicorn-search');\n });\n\n it('respects the initial set of URL parameters for a general search', async () => {\n const url = new URL(window.location.href);\n const { searchParams } = url;\n searchParams.set('query', 'foo');\n searchParams.set('sin', 'TXT');\n searchParams.set('sort', 'title');\n searchParams.append('not[]', 'mediatype:\"data\"');\n searchParams.append('and[]', 'subject:\"baz\"');\n searchParams.append('and[]', 'firstTitle:X');\n searchParams.append('and[]', 'year:[2000 TO 2010]');\n window.history.replaceState({}, '', url);\n\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n await el.initialSearchComplete;\n await el.updateComplete;\n\n expect(el.baseQuery).to.equal('foo');\n expect(el.searchType).to.equal(SearchType.FULLTEXT);\n expect(el.selectedSort).to.equal(SortField.title);\n expect(el.selectedFacets?.mediatype?.data?.state).to.equal('hidden');\n expect(el.selectedFacets?.subject?.baz?.state).to.equal('selected');\n expect(el.selectedTitleFilter).to.equal('X');\n expect(el.minSelectedDate).to.equal('2000');\n expect(el.maxSelectedDate).to.equal('2010');\n });\n\n it('respects the initial set of URL parameters within a collection', async () => {\n const url = new URL(window.location.href);\n const { searchParams } = url;\n searchParams.set('query', 'foo');\n searchParams.set('sin', 'TXT');\n searchParams.set('sort', 'title');\n searchParams.append('not[]', 'mediatype:\"data\"');\n searchParams.append('and[]', 'subject:\"baz\"');\n searchParams.append('and[]', 'firstTitle:X');\n searchParams.append('and[]', 'year:[2000 TO 2010]');\n window.history.replaceState({}, '', url);\n\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n .withinCollection=${'foobar'}\n >\n </collection-browser>`\n );\n\n await el.initialSearchComplete;\n await el.updateComplete;\n\n expect(el.withinCollection).to.equal('foobar');\n expect(el.baseQuery).to.equal('foo');\n expect(el.searchType).to.equal(SearchType.FULLTEXT);\n expect(el.selectedSort).to.equal(SortField.title);\n expect(el.selectedFacets?.mediatype?.data?.state).to.equal('hidden');\n expect(el.selectedFacets?.subject?.baz?.state).to.equal('selected');\n expect(el.selectedTitleFilter).to.equal('X');\n expect(el.minSelectedDate).to.equal('2000');\n expect(el.maxSelectedDate).to.equal('2010');\n });\n\n it('respects the initial set of URL parameters within a profile page', async () => {\n const url = new URL(window.location.href);\n const { searchParams } = url;\n searchParams.set('query', 'foo');\n searchParams.append('not[]', 'mediatype:\"data\"');\n searchParams.append('and[]', 'subject:\"baz\"');\n searchParams.append('and[]', 'firstTitle:X');\n searchParams.append('and[]', 'year:[2000 TO 2010]');\n window.history.replaceState({}, '', url);\n\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n .withinProfile=${'@foobar'}\n .profileElement=${'uploads'}\n >\n </collection-browser>`\n );\n\n await el.initialSearchComplete;\n await el.updateComplete;\n\n expect(el.withinProfile).to.equal('@foobar');\n expect(el.profileElement).to.equal('uploads');\n expect(el.baseQuery).to.equal('foo');\n expect(el.searchType).to.equal(SearchType.METADATA);\n expect(el.selectedFacets?.mediatype?.data?.state).to.equal('hidden');\n expect(el.selectedFacets?.subject?.baz?.state).to.equal('selected');\n expect(el.selectedTitleFilter).to.equal('X');\n expect(el.minSelectedDate).to.equal('2000');\n expect(el.maxSelectedDate).to.equal('2010');\n });\n\n it('clears filters except sort when query changes for a general search', async () => {\n const url = new URL(window.location.href);\n const { searchParams } = url;\n searchParams.set('query', 'foo');\n searchParams.set('sin', 'TXT');\n searchParams.set('sort', 'title');\n searchParams.append('not[]', 'mediatype:\"data\"');\n searchParams.append('and[]', 'subject:\"baz\"');\n searchParams.append('and[]', 'firstTitle:X');\n searchParams.append('and[]', 'year:[2000 TO 2010]');\n window.history.replaceState({}, '', url);\n\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n await el.initialSearchComplete;\n await el.updateComplete;\n\n el.baseQuery = 'bar';\n await el.updateComplete;\n\n expect(el.baseQuery).to.equal('bar');\n expect(el.searchType).to.equal(SearchType.FULLTEXT);\n expect(el.selectedSort).to.equal(SortField.title);\n expect(el.selectedFacets?.mediatype?.data).not.to.exist;\n expect(el.selectedFacets?.subject?.baz).not.to.exist;\n expect(el.selectedTitleFilter).not.to.exist;\n expect(el.minSelectedDate).not.to.exist;\n expect(el.maxSelectedDate).not.to.exist;\n });\n\n it('clears filters except sort when query changes within a collection', async () => {\n const url = new URL(window.location.href);\n const { searchParams } = url;\n searchParams.set('query', 'foo');\n searchParams.set('sin', 'TXT');\n searchParams.set('sort', 'title');\n searchParams.append('not[]', 'mediatype:\"data\"');\n searchParams.append('and[]', 'subject:\"baz\"');\n searchParams.append('and[]', 'firstTitle:X');\n searchParams.append('and[]', 'year:[2000 TO 2010]');\n window.history.replaceState({}, '', url);\n\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n .withinCollection=${'foobar'}\n >\n </collection-browser>`\n );\n\n el.baseQuery = 'bar';\n await el.updateComplete;\n\n expect(el.withinCollection).to.equal('foobar');\n expect(el.baseQuery).to.equal('bar');\n expect(el.searchType).to.equal(SearchType.FULLTEXT);\n expect(el.selectedSort).to.equal(SortField.title);\n expect(el.selectedFacets?.mediatype?.data).not.to.exist;\n expect(el.selectedFacets?.subject?.baz).not.to.exist;\n expect(el.selectedTitleFilter).not.to.exist;\n expect(el.minSelectedDate).not.to.exist;\n expect(el.maxSelectedDate).not.to.exist;\n });\n\n it('clears filters *including* sort when target collection changes', async () => {\n const url = new URL(window.location.href);\n const { searchParams } = url;\n searchParams.set('query', 'foo');\n searchParams.set('sin', 'TXT');\n searchParams.set('sort', 'title');\n searchParams.append('not[]', 'mediatype:\"data\"');\n searchParams.append('and[]', 'subject:\"baz\"');\n searchParams.append('and[]', 'firstTitle:X');\n searchParams.append('and[]', 'year:[2000 TO 2010]');\n window.history.replaceState({}, '', url);\n\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n .withinCollection=${'foobar'}\n >\n </collection-browser>`\n );\n\n el.withinCollection = 'bar';\n await el.updateComplete;\n\n expect(el.withinCollection).to.equal('bar');\n expect(el.baseQuery).to.equal('foo');\n expect(el.searchType).to.equal(SearchType.FULLTEXT);\n expect(el.selectedSort).to.equal(SortField.default);\n expect(el.selectedFacets?.mediatype?.data).not.to.exist;\n expect(el.selectedFacets?.subject?.baz).not.to.exist;\n expect(el.selectedTitleFilter).not.to.exist;\n expect(el.minSelectedDate).not.to.exist;\n expect(el.maxSelectedDate).not.to.exist;\n });\n\n it('correctly retrieves web archive hits', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n .withinProfile=${'@foo'}\n .profileElement=${'web_archives'}\n >\n </collection-browser>`\n );\n\n el.baseQuery = 'web-archive';\n await el.updateComplete;\n await el.initialSearchComplete;\n await nextTick();\n\n console.log(\n '\\n\\n*****\\n\\n*****\\n\\n',\n el.dataSource.getAllPages(),\n '\\n\\n*****\\n\\n*****\\n\\n'\n );\n expect(el.dataSource.totalResults, 'total results').to.equal(1);\n expect(el.dataSource.getTileModelAt(0)?.title).to.equal(\n 'https://example.com'\n );\n expect(\n el.dataSource.getTileModelAt(0)?.captureDates?.length,\n 'capture dates'\n ).to.equal(1);\n });\n\n it('shows dropdown accordion in facet sidebar when opt-in strategy is specified', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n facetLoadStrategy=${'opt-in'}\n >\n </collection-browser>`\n );\n\n el.baseQuery = 'foo';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n const facetsDropdown = el.shadowRoot?.querySelector(\n '.desktop-facets-dropdown'\n );\n expect(facetsDropdown).to.exist;\n });\n\n it('shows temporarily unavailable message when facets suppressed', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n facetLoadStrategy=${'off'}\n >\n </collection-browser>`\n );\n\n el.baseQuery = 'foo';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n const facetsMsg = el.shadowRoot?.querySelector('.facets-message');\n expect(facetsMsg).to.exist;\n expect(facetsMsg?.textContent?.trim()).to.equal(\n 'Facets are temporarily unavailable.'\n );\n });\n\n it('shows manage bar interface instead of sort bar when in manage view', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n el.baseQuery = 'foo';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n el.isManageView = true;\n await el.updateComplete;\n\n expect(el.shadowRoot?.querySelector('manage-bar')).to.exist;\n expect(el.shadowRoot?.querySelector('sort-filter-bar')).not.to.exist;\n\n el.isManageView = false;\n await el.updateComplete;\n\n expect(el.shadowRoot?.querySelector('manage-bar')).not.to.exist;\n expect(el.shadowRoot?.querySelector('sort-filter-bar')).to.exist;\n });\n\n it('switches to grid display mode when manage view activated', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n .baseQuery=${'foo'}\n .displayMode=${'list-detail'}\n >\n </collection-browser>`\n );\n\n el.isManageView = true;\n await el.updateComplete;\n\n expect(el.displayMode).to.equal('grid');\n });\n\n it('can remove all checked tiles', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n .baseNavigationUrl=${''}\n >\n </collection-browser>`\n );\n\n el.baseQuery = 'foo';\n el.pageSize = 1; // To hit the edge case of a page break while offsetting tiles\n await el.updateComplete;\n await el.initialSearchComplete;\n\n el.isManageView = true;\n await el.updateComplete;\n\n const infiniteScroller = el.shadowRoot?.querySelector('infinite-scroller');\n expect(infiniteScroller).to.exist;\n\n let tiles =\n infiniteScroller!.shadowRoot?.querySelectorAll('tile-dispatcher');\n expect(tiles).to.exist;\n expect(tiles?.length).to.equal(2);\n\n const firstTile = tiles![0] as TileDispatcher;\n const firstTileLink = firstTile.shadowRoot?.querySelector(\n 'a[href]'\n ) as HTMLAnchorElement;\n expect(firstTile.model?.identifier).to.equal('foo');\n expect(firstTileLink).to.exist;\n\n // No effect if no tiles checked\n el.removeCheckedTiles();\n await el.updateComplete;\n tiles = infiniteScroller!.shadowRoot?.querySelectorAll('tile-dispatcher');\n expect(tiles).to.exist;\n expect(tiles?.length).to.equal(2);\n\n // Check the first tile\n firstTileLink!.click();\n expect(firstTile.model?.checked).to.be.true;\n\n // Remove checked tiles and verify that we only kept the second tile\n el.removeCheckedTiles();\n await el.updateComplete;\n expect(el?.dataSource?.size, 'data source count').to.equal(1);\n\n tiles = el.shadowRoot\n ?.querySelector('infinite-scroller')!\n .shadowRoot?.querySelectorAll('tile-dispatcher');\n expect(tiles).to.exist;\n expect(\n tiles!.length,\n 'tile count after `el.removeCheckedTiles()`'\n ).to.equal(1);\n });\n\n it('can check/uncheck all tiles', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n .baseNavigationUrl=${''}\n >\n </collection-browser>`\n );\n\n el.baseQuery = 'foo';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n el.isManageView = true;\n await el.updateComplete;\n\n expect(el.dataSource.checkedTileModels.length).to.equal(0);\n expect(el.dataSource.uncheckedTileModels.length).to.equal(2);\n\n el.dataSource.checkAllTiles();\n expect(el.dataSource.checkedTileModels.length).to.equal(2);\n expect(el.dataSource.uncheckedTileModels.length).to.equal(0);\n\n el.dataSource.uncheckAllTiles();\n expect(el.dataSource.checkedTileModels.length).to.equal(0);\n expect(el.dataSource.uncheckedTileModels.length).to.equal(2);\n });\n\n it('emits event when item removal requested', async () => {\n const spy = sinon.spy();\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n .baseNavigationUrl=${''}\n @itemRemovalRequested=${spy}\n >\n </collection-browser>`\n );\n\n el.baseQuery = 'foo';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n el.isManageView = true;\n await el.updateComplete;\n\n const infiniteScroller = el.shadowRoot?.querySelector('infinite-scroller');\n expect(infiniteScroller).to.exist;\n\n const tiles =\n infiniteScroller!.shadowRoot?.querySelectorAll('tile-dispatcher');\n expect(tiles).to.exist.and.have.length(2);\n\n const firstTile = tiles![0] as TileDispatcher;\n const firstTileLink = firstTile.shadowRoot?.querySelector(\n 'a[href]'\n ) as HTMLAnchorElement;\n expect(firstTile.model?.identifier).to.equal('foo');\n expect(firstTileLink).to.exist;\n\n // Check the first tile\n firstTileLink!.click();\n await el.updateComplete;\n\n const manageBar = el.shadowRoot?.querySelector('manage-bar');\n expect(manageBar).to.exist;\n\n // Emit remove event from manage bar\n manageBar!.dispatchEvent(new CustomEvent('removeItems'));\n\n await el.updateComplete;\n expect(spy.callCount).to.equal(1);\n expect(spy.args[0].length).to.equal(1);\n expect(spy.args[0][0]?.detail?.items?.[0]?.identifier).to.equal('foo');\n });\n\n it('disables manage view when manage bar cancelled', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n .baseNavigationUrl=${''}\n >\n </collection-browser>`\n );\n\n el.baseQuery = 'foo';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n el.isManageView = true;\n await el.updateComplete;\n\n const manageBar = el.shadowRoot?.querySelector('manage-bar');\n expect(manageBar).to.exist;\n\n // Emit remove event from manage bar\n manageBar!.dispatchEvent(new CustomEvent('cancel'));\n\n await el.updateComplete;\n expect(el.isManageView).to.be.false;\n });\n\n it('enable/disable manage view delete button when you selectAll/unselectAll', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n el.baseQuery = 'foo';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n el.isManageView = true;\n await el.updateComplete;\n\n const manageBar = el.shadowRoot?.querySelector('manage-bar');\n expect(manageBar).to.exist;\n\n // disable button exists\n expect(manageBar?.shadowRoot?.querySelector('.danger:disabled')).to.be\n .exist;\n\n // Emit remove event from manage bar\n manageBar!.dispatchEvent(new CustomEvent('selectAll'));\n await el.updateComplete;\n\n // disable button does not exists\n expect(manageBar?.shadowRoot?.querySelector('.danger:disabled')).to.be.not\n .exist;\n\n // Emit remove event from manage bar\n manageBar!.dispatchEvent(new CustomEvent('unselectAll'));\n await el.updateComplete;\n\n // disable button exists again\n expect(manageBar?.shadowRoot?.querySelector('.danger:disabled')).to.be\n .exist;\n });\n\n it('applies loans tab properties to sort bar', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .baseNavigationUrl=${''}\n .searchService=${searchService}\n .enableSortOptionsSlot=${true}\n >\n </collection-browser>`\n );\n\n el.baseQuery = 'collection:foo';\n await el.updateComplete;\n await aTimeout(10);\n\n const sortBar = el.shadowRoot?.querySelector(\n 'sort-filter-bar'\n ) as SortFilterBar;\n expect(sortBar?.enableSortOptionsSlot, 'show loans in sort bar').to.be.true;\n expect(el.enableSortOptionsSlot, 'collection browser is loans tab').to.be\n .true;\n\n const loansTabSlot = sortBar.querySelector('slot[name=\"sort-options\"]');\n expect(loansTabSlot).to.exist;\n });\n\n it('can suppress presence of result count', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n suppressResultCount\n ></collection-browser>`\n );\n\n el.baseQuery = 'collection:foo';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n const resultCount = el.shadowRoot?.querySelector('#results-total');\n expect(resultCount).not.to.exist;\n });\n\n it('can suppress presence of result tiles', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n suppressResultTiles\n ></collection-browser>`\n );\n\n el.baseQuery = 'collection:foo';\n await el.updateComplete;\n\n const infiniteScroller = el.shadowRoot?.querySelector('infinite-scroller');\n expect(infiniteScroller).not.to.exist;\n });\n});\n"]}
1
+ {"version":3,"file":"collection-browser.test.js","sourceRoot":"","sources":["../../test/collection-browser.test.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable import/no-duplicates */\nimport { aTimeout, expect, fixture } from '@open-wc/testing';\nimport { html } from 'lit';\nimport sinon from 'sinon';\nimport type { InfiniteScroller } from '@internetarchive/infinite-scroller';\nimport { FilterConstraint, SearchType } from '@internetarchive/search-service';\nimport type { HistogramDateRange } from '@internetarchive/histogram-date-range';\nimport type { CollectionBrowser } from '../src/collection-browser';\nimport '../src/collection-browser';\nimport {\n getDefaultSelectedFacets,\n FacetBucket,\n SelectedFacets,\n SortField,\n} from '../src/models';\nimport { MockSearchService } from './mocks/mock-search-service';\nimport { MockAnalyticsHandler } from './mocks/mock-analytics-handler';\nimport {\n analyticsActions,\n analyticsCategories,\n} from '../src/utils/analytics-events';\nimport type { TileDispatcher } from '../src/tiles/tile-dispatcher';\nimport type { CollectionFacets } from '../src/collection-facets';\nimport type { EmptyPlaceholder } from '../src/empty-placeholder';\nimport type { SortFilterBar } from '../src/sort-filter-bar/sort-filter-bar';\n\n/**\n * Wait for the next tick of the event loop.\n *\n * This is necessary in some of the tests because certain collection browser\n * updates take more than one tick to render (e.g., date picker & query changes).\n * These delays are non-ideal and should eventually be investigated and fixed,\n * but they are minor enough that waiting for the next tick is a reasonable\n * testing solution for now.\n */\nconst nextTick = () => aTimeout(0);\n\ndescribe('Collection Browser', () => {\n beforeEach(async () => {\n // Apparently query params set by one test can bleed into other tests.\n // Since collection browser restores its state from certain query params, we need\n // to clear these before each test to ensure they run in isolation from one another.\n const url = new URL(window.location.href);\n const { searchParams } = url;\n searchParams.delete('sin');\n searchParams.delete('sort');\n searchParams.delete('query');\n searchParams.delete('page');\n searchParams.delete('and[]');\n searchParams.delete('not[]');\n window.history.replaceState({}, '', url);\n });\n\n it('clears selected facets when requested', async () => {\n const selectedFacets = getDefaultSelectedFacets();\n selectedFacets.creator.foo = { count: 1, key: 'foo', state: 'selected' };\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser></collection-browser>`\n );\n\n el.selectedFacets = selectedFacets;\n await el.updateComplete;\n el.clearFilters(); // By default, sort is not cleared\n\n expect(el.selectedFacets).to.deep.equal(getDefaultSelectedFacets());\n });\n\n it('clears existing filters but not sort by default', async () => {\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser></collection-browser>`\n );\n\n el.selectedSort = 'title' as SortField;\n el.sortDirection = 'asc';\n await el.updateComplete;\n el.clearFilters(); // By default, sort is not cleared\n\n expect(el.selectedFacets).to.deep.equal(getDefaultSelectedFacets());\n expect(el.selectedSort).to.equal('title');\n expect(el.sortDirection).to.equal('asc');\n expect(el.sortParam).to.deep.equal({\n field: 'titleSorter',\n direction: 'asc',\n });\n expect(el.selectedCreatorFilter).to.be.null;\n expect(el.selectedTitleFilter).to.be.null;\n });\n\n it('clears existing filters for facets & sort via option', async () => {\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser></collection-browser>`\n );\n\n el.selectedSort = 'title' as SortField;\n await el.updateComplete;\n el.clearFilters({ sort: true }); // Sort is reset too due to the option\n\n expect(el.selectedFacets).to.deep.equal(getDefaultSelectedFacets());\n expect(el.selectedSort).to.equal(SortField.default);\n expect(el.sortDirection).to.be.null;\n expect(el.sortParam).to.be.null;\n expect(el.selectedCreatorFilter).to.be.null;\n expect(el.selectedTitleFilter).to.be.null;\n });\n\n it('filterBy creator with analytics', async () => {\n const mockAnalyticsHandler = new MockAnalyticsHandler();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .analyticsHandler=${mockAnalyticsHandler}>\n </collection-browser>`\n );\n\n el.searchContext = 'betaSearchService';\n el.selectedSort = 'creator' as SortField;\n el.sortDirection = 'asc';\n el.selectedCreatorFilter = 'A';\n await el.updateComplete;\n\n expect(mockAnalyticsHandler.callCategory).to.equal('betaSearchService');\n expect(mockAnalyticsHandler.callAction).to.equal('filterByCreator');\n expect(mockAnalyticsHandler.callLabel).to.equal('start-A');\n\n el.clearFilters();\n await el.updateComplete;\n\n expect(el.selectedTitleFilter).to.be.null;\n expect(mockAnalyticsHandler.callCategory).to.equal('betaSearchService');\n expect(mockAnalyticsHandler.callAction).to.equal('filterByCreator');\n expect(mockAnalyticsHandler.callLabel).to.equal('clear-A');\n });\n\n it('filterBy title with analytics', async () => {\n const mockAnalyticsHandler = new MockAnalyticsHandler();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .analyticsHandler=${mockAnalyticsHandler}>\n </collection-browser>`\n );\n\n el.searchContext = 'beta-search-service';\n el.selectedSort = 'title' as SortField;\n el.sortDirection = 'asc';\n el.selectedTitleFilter = 'A';\n await el.updateComplete;\n\n expect(mockAnalyticsHandler.callCategory).to.equal('beta-search-service');\n expect(mockAnalyticsHandler.callAction).to.equal('filterByTitle');\n expect(mockAnalyticsHandler.callLabel).to.equal('start-A');\n\n el.clearFilters();\n await el.updateComplete;\n\n expect(el.selectedTitleFilter).to.be.null;\n expect(mockAnalyticsHandler.callCategory).to.equal('beta-search-service');\n expect(mockAnalyticsHandler.callAction).to.equal('filterByTitle');\n expect(mockAnalyticsHandler.callLabel).to.equal('clear-A');\n });\n\n it('selected facets with analytics - not negative facets', async () => {\n const mockAnalyticsHandler = new MockAnalyticsHandler();\n const mediaTypeBucket = { count: 123, state: 'selected' } as FacetBucket;\n const mockedSelectedFacets: SelectedFacets = {\n subject: {},\n lending: {},\n mediatype: { data: mediaTypeBucket },\n language: {},\n creator: {},\n collection: {},\n year: {},\n };\n\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .analyticsHandler=${mockAnalyticsHandler}>\n </collection-browser>`\n );\n\n el.searchContext = 'search-service';\n el.selectedFacets = mockedSelectedFacets;\n await el.updateComplete;\n\n el.facetClickHandler(\n new CustomEvent('facetClick', {\n detail: {\n facetType: 'mediatype',\n bucket: {\n key: '',\n state: 'selected',\n count: 123,\n },\n negative: false,\n },\n })\n );\n expect(mockAnalyticsHandler.callCategory).to.equal('search-service');\n expect(mockAnalyticsHandler.callAction).to.equal('facetSelected');\n expect(mockAnalyticsHandler.callLabel).to.equal('mediatype');\n\n el.facetClickHandler(\n new CustomEvent('facetClick', {\n detail: {\n facetType: 'mediatype',\n bucket: {\n key: '',\n state: 'none',\n count: 123,\n },\n negative: false,\n },\n })\n );\n expect(el.selectedFacets).to.equal(mockedSelectedFacets);\n expect(mockAnalyticsHandler.callCategory).to.equal('search-service');\n expect(mockAnalyticsHandler.callAction).to.equal('facetDeselected');\n expect(mockAnalyticsHandler.callLabel).to.equal('mediatype');\n });\n\n it('selected facets with analytics - negative facets', async () => {\n const mockAnalyticsHandler = new MockAnalyticsHandler();\n const mediaTypeBucket = { count: 123, state: 'selected' } as FacetBucket;\n const mockedSelectedFacets: SelectedFacets = {\n subject: {},\n lending: {},\n mediatype: { data: mediaTypeBucket },\n language: {},\n creator: {},\n collection: {},\n year: {},\n };\n\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .analyticsHandler=${mockAnalyticsHandler}>\n </collection-browser>`\n );\n\n el.searchContext = 'beta-search-service';\n el.selectedFacets = mockedSelectedFacets;\n await el.updateComplete;\n\n el.facetClickHandler(\n new CustomEvent('facetClick', {\n detail: {\n facetType: 'mediatype',\n bucket: {\n key: '',\n state: 'hidden',\n count: 123,\n },\n negative: true,\n },\n })\n );\n expect(mockAnalyticsHandler.callCategory).to.equal('beta-search-service');\n expect(mockAnalyticsHandler.callAction).to.equal('facetNegativeSelected');\n expect(mockAnalyticsHandler.callLabel).to.equal('mediatype');\n\n el.facetClickHandler(\n new CustomEvent('facetClick', {\n detail: {\n facetType: 'mediatype',\n bucket: {\n key: '',\n state: 'none',\n count: 123,\n },\n negative: true,\n },\n })\n );\n expect(el.selectedFacets).to.equal(mockedSelectedFacets);\n expect(mockAnalyticsHandler.callCategory).to.equal('beta-search-service');\n expect(mockAnalyticsHandler.callAction).to.equal('facetNegativeDeselected');\n expect(mockAnalyticsHandler.callLabel).to.equal('mediatype');\n });\n\n it('should render with a sort bar, facets, and infinite scroller', async () => {\n const searchService = new MockSearchService();\n\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n el.baseQuery = 'hello';\n await el.updateComplete;\n await nextTick();\n\n const facets = el.shadowRoot?.querySelector('collection-facets');\n const sortBar = el.shadowRoot?.querySelector('sort-filter-bar');\n const infiniteScroller = el.shadowRoot?.querySelector('infinite-scroller');\n expect(facets, 'facets').to.exist;\n expect(sortBar, 'sort bar').to.exist;\n expect(infiniteScroller, 'infinite scroller').to.exist;\n });\n\n it('queries the search service when given a base query', async () => {\n const searchService = new MockSearchService();\n\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n el.baseQuery = 'collection:foo';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n expect(searchService.searchParams?.query).to.equal('collection:foo');\n expect(\n el.shadowRoot?.querySelector('#big-results-label')?.textContent\n ).to.contains('Results');\n });\n\n it('queries the search service with a metadata search', async () => {\n const searchService = new MockSearchService();\n\n const el = await fixture<CollectionBrowser>(\n html` <collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n el.searchType = SearchType.METADATA;\n await el.updateComplete;\n\n el.baseQuery = 'collection:foo';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n expect(searchService.searchParams?.query).to.equal('collection:foo');\n expect(searchService.searchType).to.equal(SearchType.METADATA);\n expect(\n el.shadowRoot?.querySelector('#big-results-label')?.textContent\n ).to.contains('Results');\n });\n\n it('can change search type', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n el.baseQuery = 'collection:foo';\n await el.updateComplete;\n\n el.searchType = SearchType.FULLTEXT;\n await el.updateComplete;\n await el.initialSearchComplete;\n\n expect(searchService.searchType).to.equal(SearchType.FULLTEXT);\n });\n\n it('queries the search service with a fulltext search', async () => {\n const searchService = new MockSearchService();\n\n const el = await fixture<CollectionBrowser>(\n html` <collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n el.searchType = SearchType.FULLTEXT;\n await el.updateComplete;\n\n el.baseQuery = 'collection:foo';\n await el.updateComplete;\n await nextTick();\n\n expect(searchService.searchParams?.query).to.equal('collection:foo');\n expect(searchService.searchType).to.equal(SearchType.FULLTEXT);\n expect(\n el.shadowRoot?.querySelector('#big-results-label')?.textContent\n ).to.contains('Results');\n });\n\n it('queries the search service with facets selected/negated', async () => {\n const searchService = new MockSearchService();\n const selectedFacets: SelectedFacets = {\n subject: {\n foo: {\n key: 'foo',\n count: 1,\n state: 'selected',\n },\n bar: {\n key: 'bar',\n count: 2,\n state: 'hidden',\n },\n },\n lending: {},\n mediatype: {},\n language: {\n en: {\n key: 'en',\n count: 1,\n state: 'selected',\n },\n },\n creator: {},\n collection: {},\n year: {},\n };\n\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n el.baseQuery = 'collection:foo';\n el.selectedFacets = selectedFacets;\n await el.updateComplete;\n await el.initialSearchComplete;\n\n expect(searchService.searchParams?.query).to.equal('collection:foo');\n expect(searchService.searchParams?.filters).to.deep.equal({\n subject: {\n foo: 'inc',\n bar: 'exc',\n },\n language: {\n en: 'inc',\n },\n });\n });\n\n it('fails gracefully if no search service provided', async () => {\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser></collection-browser>`\n );\n\n el.baseQuery = 'collection:foo';\n await el.updateComplete;\n\n // This shouldn't throw an error\n expect(el.dataSource.fetchPage(3)).to.exist;\n\n // Should continue showing the empty placeholder\n expect(el.shadowRoot?.querySelector('empty-placeholder')).to.exist;\n });\n\n it('restores search type from URL param', async () => {\n // Add a sin=TXT param to the URL\n const url = new URL(window.location.href);\n url.searchParams.append('sin', 'TXT');\n window.history.replaceState({}, '', url);\n\n const searchService = new MockSearchService();\n\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n expect(el.searchType).to.equal(SearchType.FULLTEXT);\n });\n\n it('can construct tile models with many fields present', async () => {\n const searchService = new MockSearchService();\n\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n el.baseQuery = 'many-fields';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n const cellTemplate = el.cellForIndex(0);\n expect(cellTemplate).to.exist;\n\n const cell = await fixture<TileDispatcher>(cellTemplate!);\n expect(cell).to.exist;\n });\n\n it('emits empty results event when search fetches no results', async () => {\n const searchService = new MockSearchService();\n const emptyResultsSpy = sinon.spy();\n\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n @emptyResults=${emptyResultsSpy}\n >\n </collection-browser>`\n );\n\n el.baseQuery = 'no-results';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n expect(emptyResultsSpy.callCount).to.equal(1);\n });\n\n it('applies loggedin flag to tile models if needed', async () => {\n const searchService = new MockSearchService();\n\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n el.baseQuery = 'loggedin';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n const cellTemplate = el.cellForIndex(0);\n expect(cellTemplate).to.exist;\n\n const cell = await fixture<TileDispatcher>(cellTemplate!);\n expect(cell).to.exist;\n\n expect(cell.model?.loginRequired).to.be.true;\n });\n\n it('applies no-preview flag to tile models if needed', async () => {\n const searchService = new MockSearchService();\n\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n el.baseQuery = 'no-preview';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n const cellTemplate = el.cellForIndex(0);\n expect(cellTemplate).to.exist;\n\n const cell = await fixture<TileDispatcher>(cellTemplate!);\n expect(cell).to.exist;\n\n expect(cell.model?.contentWarning).to.be.true;\n });\n\n it('both loggedin and no-preview flags can be set simultaneously', async () => {\n const searchService = new MockSearchService();\n\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n el.baseQuery = 'loggedin-no-preview';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n const cellTemplate = el.cellForIndex(0);\n expect(cellTemplate).to.exist;\n\n const cell = await fixture<TileDispatcher>(cellTemplate!);\n expect(cell).to.exist;\n\n expect(cell.model?.loginRequired).to.be.true;\n expect(cell.model?.contentWarning).to.be.true;\n });\n\n it('joins full description array into a single string with line breaks', async () => {\n const searchService = new MockSearchService();\n\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n // This query receives an array description like ['line1', 'line2']\n el.baseQuery = 'multi-line-description';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n const cellTemplate = el.cellForIndex(0);\n expect(cellTemplate).to.exist;\n\n const cell = await fixture<TileDispatcher>(cellTemplate!);\n expect(cell).to.exist;\n\n // Actual model description should be joined\n expect(cell.model?.description).to.equal('line1\\nline2');\n });\n\n it('can change search type', async () => {\n const searchService = new MockSearchService();\n\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n .searchType=${SearchType.METADATA}\n ></collection-browser>`\n );\n\n el.baseQuery = 'collection:foo';\n el.searchType = SearchType.FULLTEXT;\n await el.updateComplete;\n await el.initialSearchComplete;\n\n expect(searchService.searchParams?.query).to.equal('collection:foo');\n expect(searchService.searchType).to.equal(SearchType.FULLTEXT);\n });\n\n it('trims queries of leading/trailing whitespace', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n ></collection-browser>`\n );\n\n el.baseQuery = ' collection:foo ';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n expect(searchService.searchParams?.query).to.equal('collection:foo');\n });\n\n it('shows error message when error response received', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n ></collection-browser>`\n );\n\n el.baseQuery = 'error';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n const errorPlaceholder = el.shadowRoot?.querySelector(\n 'empty-placeholder'\n ) as EmptyPlaceholder;\n const errorDetails = errorPlaceholder?.shadowRoot?.querySelector(\n '.error-details'\n ) as HTMLParagraphElement;\n\n expect(errorDetails).to.exist;\n expect(errorDetails.textContent).to.contain('foo');\n });\n\n it('shows error message when error response received for a collection', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n ></collection-browser>`\n );\n\n el.withinCollection = 'error';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n const errorPlaceholder = el.shadowRoot?.querySelector(\n 'empty-placeholder'\n ) as EmptyPlaceholder;\n const errorDetails = errorPlaceholder?.shadowRoot?.querySelector(\n '.error-details'\n ) as HTMLParagraphElement;\n\n expect(errorDetails).to.exist;\n expect(errorDetails.textContent).to.contain('foo');\n });\n\n it('reports malformed response errors to Sentry', async () => {\n const sentrySpy = sinon.spy();\n (window as any).Sentry = { captureMessage: sentrySpy };\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n ></collection-browser>`\n );\n\n el.baseQuery = 'malformed';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n expect(sentrySpy.callCount).to.be.greaterThanOrEqual(1);\n });\n\n it('adds collection names to cache when present on response', async () => {\n const searchService = new MockSearchService();\n\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n el.baseQuery = 'collection-titles';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n expect(el.dataSource.collectionTitles.get('foo')).to.equal(\n 'Foo Collection'\n );\n expect(el.dataSource.collectionTitles.get('bar')).to.equal(\n 'Bar Collection'\n );\n expect(el.dataSource.collectionTitles.get('baz')).to.equal(\n 'Baz Collection'\n );\n expect(el.dataSource.collectionTitles.get('boop')).to.equal(\n 'Boop Collection'\n );\n });\n\n it('keeps search results from fetch if no change to query or sort param', async () => {\n const resultsSpy = sinon.spy();\n const searchService = new MockSearchService({\n asyncResponse: true,\n resultsSpy,\n });\n\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n el.baseQuery = 'with-sort';\n el.selectedSort = SortField.date;\n el.sortDirection = 'asc';\n await el.updateComplete;\n\n await el.dataSource.fetchPage(3);\n\n // If there is no change to the query or sort param during the fetch, the results\n // should be read.\n expect(resultsSpy.callCount).to.be.greaterThanOrEqual(1);\n });\n\n it('discards obsolete search results if sort params changed before arrival', async () => {\n const resultsSpy = sinon.spy();\n const searchService = new MockSearchService({\n asyncResponse: true,\n resultsSpy,\n });\n\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n el.baseQuery = 'with-sort';\n el.selectedSort = SortField.date;\n el.sortDirection = 'asc';\n await el.updateComplete;\n\n // We want to spy exclusively on the first set of results, not the second\n searchService.asyncResponse = false;\n searchService.resultsSpy = () => {};\n\n el.sortDirection = 'desc';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n // If the different sort param causes the results to be discarded,\n // the first results array should never be read.\n expect(resultsSpy.callCount).to.equal(0);\n });\n\n it('discards obsolete search results if sort param added before arrival', async () => {\n const resultsSpy = sinon.spy();\n const searchService = new MockSearchService({\n asyncResponse: true,\n resultsSpy,\n });\n\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n el.baseQuery = 'single-result';\n await el.updateComplete;\n\n // We want to spy exclusively on the first set of results, not the second\n searchService.asyncResponse = false;\n searchService.resultsSpy = () => {};\n\n el.selectedSort = SortField.date;\n el.sortDirection = 'asc';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n // If the different sort param causes the results to be discarded,\n // the first results array should never be read.\n expect(resultsSpy.callCount).to.equal(0);\n });\n\n it('discards obsolete search results if sort param cleared before arrival', async () => {\n const resultsSpy = sinon.spy();\n const searchService = new MockSearchService({\n asyncResponse: true,\n resultsSpy,\n });\n\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n el.baseQuery = 'with-sort';\n el.selectedSort = SortField.date;\n el.sortDirection = 'asc';\n await el.updateComplete;\n\n // We want to spy exclusively on the first set of results, not the second\n searchService.asyncResponse = false;\n searchService.resultsSpy = () => {};\n\n el.selectedSort = SortField.default;\n await el.updateComplete;\n await el.initialSearchComplete;\n\n // If the different sort param causes the results to be discarded,\n // the first results array should never be read.\n expect(resultsSpy.callCount).to.equal(0);\n });\n\n it('sets sort properties when user changes sort', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n expect(el.selectedSort).to.equal(SortField.default);\n\n el.baseQuery = 'foo';\n await el.updateComplete;\n await nextTick();\n\n const sortBar = el.shadowRoot?.querySelector(\n '#content-container sort-filter-bar'\n );\n const sortSelector = sortBar?.shadowRoot?.querySelector(\n '#desktop-sort-selector'\n );\n expect(sortSelector, 'sort bar').to.exist;\n\n // Click the title sorter\n [...(sortSelector?.children as HTMLCollection & Iterable<any>)] // tsc doesn't know children is iterable\n .find(child => child.textContent?.trim() === 'Title')\n ?.querySelector('button')\n ?.click();\n\n await el.updateComplete;\n\n expect(el.selectedSort).to.equal(SortField.title);\n });\n\n it('sets sort filter properties when user selects title filter', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n el.baseQuery = 'first-title';\n el.selectedSort = 'title' as SortField;\n el.sortDirection = 'asc';\n el.selectedTitleFilter = 'X';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n expect(searchService.searchParams?.query).to.equal('first-title');\n expect(searchService.searchParams?.filters?.firstTitle?.X).to.equal(\n FilterConstraint.INCLUDE\n );\n });\n\n it('sets sort filter properties when user selects creator filter', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n el.baseQuery = 'first-creator';\n el.selectedSort = 'creator' as SortField;\n el.sortDirection = 'asc';\n el.selectedCreatorFilter = 'X';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n expect(searchService.searchParams?.query).to.equal('first-creator');\n expect(searchService.searchParams?.filters?.firstCreator?.X).to.equal(\n FilterConstraint.INCLUDE\n );\n });\n\n it('sets sort filter properties simultaneous with facets and date range', async () => {\n const searchService = new MockSearchService();\n const selectedFacets: SelectedFacets = {\n collection: { foo: { key: 'foo', state: 'selected', count: 1 } },\n creator: {},\n language: {},\n lending: {},\n mediatype: {},\n subject: {},\n year: {},\n };\n\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n el.baseQuery = 'first-creator';\n el.selectedSort = 'creator' as SortField;\n el.selectedFacets = selectedFacets;\n el.minSelectedDate = '1950';\n el.maxSelectedDate = '1970';\n el.sortDirection = 'asc';\n el.selectedCreatorFilter = 'X';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n expect(searchService.searchParams?.query).to.equal('first-creator');\n expect(searchService.searchParams?.filters).to.deep.equal({\n collection: {\n foo: 'inc',\n },\n year: {\n '1950': 'gte',\n '1970': 'lte',\n },\n firstCreator: {\n X: 'inc',\n },\n });\n });\n\n it('resets letter filters when query changes', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n el.baseQuery = 'first-creator';\n el.selectedSort = 'creator' as SortField;\n el.sortDirection = 'asc';\n el.selectedCreatorFilter = 'X';\n await el.updateComplete;\n await nextTick();\n\n expect(searchService.searchParams?.query).to.equal('first-creator');\n expect(searchService.searchParams?.filters?.firstCreator?.X).to.equal(\n FilterConstraint.INCLUDE\n );\n\n el.baseQuery = 'collection:foo';\n await el.updateComplete;\n await nextTick();\n\n expect(searchService.searchParams?.query).to.equal('collection:foo');\n expect(searchService.searchParams?.filters?.firstCreator).not.to.exist;\n });\n\n it('sets date range query when date picker selection changed', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n .suppressPlaceholders=${true}\n >\n </collection-browser>`\n );\n\n el.baseQuery = 'years'; // Includes year_histogram aggregation in response\n el.showHistogramDatePicker = true;\n await el.updateComplete;\n\n const facets = el.shadowRoot?.querySelector(\n 'collection-facets'\n ) as CollectionFacets;\n await facets?.updateComplete;\n\n // Wait for the date picker to be rendered (which may take until the next tick)\n await nextTick();\n\n const histogram = facets?.shadowRoot?.querySelector(\n 'histogram-date-range'\n ) as HistogramDateRange;\n\n expect(histogram, 'histogram exists').to.exist;\n\n // Enter a new min date into the date picker\n const minDateInput = histogram.shadowRoot?.querySelector(\n '#date-min'\n ) as HTMLInputElement;\n\n const pressEnterEvent = new KeyboardEvent('keyup', {\n key: 'Enter',\n });\n\n minDateInput.value = '1960';\n minDateInput.dispatchEvent(pressEnterEvent);\n\n // Wait for the histogram's update delay\n await aTimeout(histogram.updateDelay + 50);\n\n // Ensure that the histogram change propagated to the collection browser's\n // date query correctly.\n await el.updateComplete;\n expect(el.minSelectedDate).to.equal('1960');\n expect(el.maxSelectedDate).to.equal('2000');\n });\n\n it('emits event when loading state changes', async () => {\n const spy = sinon.spy();\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n ></collection-browser>`\n );\n\n el.baseQuery = 'collection:foo';\n el.addEventListener('searchResultsLoadingChanged', spy);\n await el.updateComplete;\n await el.initialSearchComplete;\n\n // Should initially emit loading=true, then later emit loading=false\n expect(spy.callCount).to.equal(2);\n expect(spy.firstCall.firstArg?.detail?.loading).to.equal(true);\n expect(spy.secondCall.firstArg?.detail?.loading).to.equal(false);\n });\n\n it('collapses extra set of quotes around href field', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n .baseNavigationUrl=${''}\n ></collection-browser>`\n );\n\n el.baseQuery = 'extra-quoted-href';\n await el.updateComplete;\n await el.initialSearchComplete;\n await el.updateComplete;\n await aTimeout(50);\n\n const infiniteScroller = el.shadowRoot?.querySelector('infinite-scroller');\n expect(infiniteScroller).to.exist;\n\n const firstResult =\n infiniteScroller!.shadowRoot?.querySelector('tile-dispatcher');\n expect(firstResult).to.exist;\n\n // Original href q param starts/ends with %22%22, but should be collapsed to %22 before render\n expect(\n firstResult!.shadowRoot?.querySelector('a[href]')?.getAttribute('href')\n ).to.equal('/details/foo?q=%22quoted+query%22');\n });\n\n it('sets default sort from collection metadata', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n .baseNavigationUrl=${''}\n ></collection-browser>`\n );\n\n el.withinCollection = 'default-sort';\n await el.updateComplete;\n await el.initialSearchComplete;\n await el.updateComplete;\n await aTimeout(50);\n\n const sortBar = el.shadowRoot?.querySelector(\n 'sort-filter-bar'\n ) as SortFilterBar;\n expect(sortBar).to.exist;\n expect(sortBar.defaultSortField).to.equal(SortField.title);\n expect(sortBar.defaultSortDirection).to.equal('asc');\n expect(sortBar.selectedSort).to.equal(SortField.default);\n expect(sortBar.sortDirection).to.be.null;\n });\n\n it('sets default sort from collection metadata in \"-field\" format', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n .baseNavigationUrl=${''}\n ></collection-browser>`\n );\n\n el.withinCollection = 'default-sort-concise';\n await el.updateComplete;\n await el.initialSearchComplete;\n await el.updateComplete;\n await aTimeout(50);\n\n const sortBar = el.shadowRoot?.querySelector(\n 'sort-filter-bar'\n ) as SortFilterBar;\n expect(sortBar).to.exist;\n expect(sortBar.defaultSortField).to.equal(SortField.dateadded);\n expect(sortBar.defaultSortDirection).to.equal('desc');\n expect(sortBar.selectedSort).to.equal(SortField.default);\n expect(sortBar.sortDirection).to.be.null;\n });\n\n it('falls back to weekly views default sorting on profiles when tab not set', async () => {\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .withinProfile=${'@foobar'}\n ></collection-browser>`\n );\n\n el.applyDefaultProfileSort();\n expect(el.defaultSortParam).to.deep.equal({\n field: 'week',\n direction: 'desc',\n });\n });\n\n it('uses relevance sort as default when a query is set', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n .baseNavigationUrl=${''}\n ></collection-browser>`\n );\n\n el.withinCollection = 'default-sort';\n el.baseQuery = 'default-sort';\n await el.updateComplete;\n await el.initialSearchComplete;\n await el.updateComplete;\n await aTimeout(50);\n\n const sortBar = el.shadowRoot?.querySelector(\n 'sort-filter-bar'\n ) as SortFilterBar;\n expect(sortBar).to.exist;\n expect(sortBar.defaultSortField).to.equal(SortField.relevance);\n expect(sortBar.defaultSortDirection).to.be.null;\n expect(sortBar.selectedSort).to.equal(SortField.default);\n expect(sortBar.sortDirection).to.be.null;\n });\n\n it('uses date favorited sort as default when targeting fav- collection', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n .baseNavigationUrl=${''}\n ></collection-browser>`\n );\n\n el.withinCollection = 'fav-sort';\n await el.updateComplete;\n await el.initialSearchComplete;\n await el.updateComplete;\n await aTimeout(50);\n\n const sortBar = el.shadowRoot?.querySelector(\n 'sort-filter-bar'\n ) as SortFilterBar;\n expect(sortBar).to.exist;\n expect(sortBar.defaultSortField).to.equal(SortField.datefavorited);\n expect(sortBar.defaultSortDirection).to.equal('desc');\n expect(sortBar.selectedSort).to.equal(SortField.default);\n expect(sortBar.sortDirection).to.be.null;\n });\n\n it('scrolls to page', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n // Infinite scroller won't exist unless there's a base query.\n // First ensure that we don't throw errors when it doesn't exist.\n await el.goToPage(1);\n\n // And make sure it correctly calls scrollToCell when the\n // infinite scroller does exist.\n el.baseQuery = 'collection:foo';\n await el.updateComplete;\n await nextTick();\n\n const infiniteScroller = el.shadowRoot?.querySelector(\n 'infinite-scroller'\n ) as InfiniteScroller;\n expect(infiniteScroller).to.exist;\n\n const oldScrollToCell = infiniteScroller.scrollToCell;\n const spy = sinon.spy();\n infiniteScroller.scrollToCell = spy;\n\n await el.goToPage(1);\n expect(spy.callCount, 'scroll to page fires once').to.equal(1);\n\n infiniteScroller.scrollToCell = oldScrollToCell;\n });\n\n it('shows mobile facets in mobile view', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n .mobileBreakpoint=${9999}\n ></collection-browser>`\n );\n\n el.baseQuery = 'collection:foo';\n await el.updateComplete;\n\n const contentContainer = el.shadowRoot?.querySelector(\n '#content-container'\n ) as HTMLElement;\n\n el.handleResize({\n target: contentContainer,\n contentRect: contentContainer.getBoundingClientRect(),\n borderBoxSize: [],\n contentBoxSize: [],\n devicePixelContentBoxSize: [],\n });\n await el.updateComplete;\n\n const mobileFacets = el.shadowRoot?.querySelector(\n '#mobile-filter-collapse'\n );\n expect(mobileFacets).to.exist;\n });\n\n it('fires analytics when mobile facets toggled', async () => {\n const searchService = new MockSearchService();\n const analyticsHandler = new MockAnalyticsHandler();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n .analyticsHandler=${analyticsHandler}\n .searchContext=${'foobar-context'}\n .mobileBreakpoint=${9999}\n ></collection-browser>`\n );\n\n el.baseQuery = 'collection:foo';\n await el.updateComplete;\n\n const contentContainer = el.shadowRoot?.querySelector(\n '#content-container'\n ) as HTMLElement;\n\n el.handleResize({\n target: contentContainer,\n contentRect: contentContainer.getBoundingClientRect(),\n borderBoxSize: [],\n contentBoxSize: [],\n devicePixelContentBoxSize: [],\n });\n await el.updateComplete;\n\n const mobileFacets = el.shadowRoot?.querySelector(\n '#mobile-filter-collapse'\n ) as HTMLDetailsElement;\n expect(mobileFacets).to.exist;\n\n // We set up a Promise to wait for the 'toggle' event on the collapser,\n // which is what triggers the analytics.\n let facetsToggled = new Promise(resolve => {\n mobileFacets.addEventListener('toggle', resolve);\n });\n\n // Open the mobile facets accordion & check analytics\n const mobileFacetsHeader = mobileFacets.querySelector('summary');\n expect(mobileFacetsHeader).to.exist;\n mobileFacetsHeader!.click();\n await facetsToggled;\n expect(analyticsHandler.callCategory).to.equal('foobar-context');\n expect(analyticsHandler.callAction).to.equal(\n analyticsActions.mobileFacetsToggled\n );\n expect(analyticsHandler.callLabel).to.equal('open');\n\n // Close the mobile facets accordion & check analytics\n facetsToggled = new Promise(resolve => {\n mobileFacets.addEventListener('toggle', resolve);\n });\n mobileFacetsHeader!.click();\n await facetsToggled;\n expect(analyticsHandler.callCategory).to.equal('foobar-context');\n expect(analyticsHandler.callAction).to.equal(\n analyticsActions.mobileFacetsToggled\n );\n expect(analyticsHandler.callLabel).to.equal('closed');\n });\n\n it('sets parent collections to prop when searching a collection', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n .withinCollection=${'fake'}\n ></collection-browser>`\n );\n\n el.baseQuery = 'parent-collections';\n await el.updateComplete;\n await el.initialSearchComplete;\n await aTimeout(0);\n\n expect(el.dataSource.parentCollections).to.deep.equal(['foo', 'bar']);\n });\n\n it('refreshes when certain properties change - with some analytics event sampling', async () => {\n const mockAnalyticsHandler = new MockAnalyticsHandler();\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .analyticsHandler=${mockAnalyticsHandler}\n .searchService=${searchService}\n ></collection-browser>`\n );\n const infiniteScrollerRefreshSpy = sinon.spy();\n\n // Infinite scroller won't exist unless there's a base query\n el.baseQuery = 'collection:foo';\n await el.updateComplete;\n await nextTick();\n\n const infiniteScroller = el.shadowRoot?.querySelector('infinite-scroller');\n (infiniteScroller as InfiniteScroller).reload = infiniteScrollerRefreshSpy;\n expect(infiniteScrollerRefreshSpy.called).to.be.false;\n expect(infiniteScrollerRefreshSpy.callCount).to.equal(0);\n\n // testing: `loggedIn`\n el.loggedIn = true;\n await el.updateComplete;\n\n expect(infiniteScrollerRefreshSpy.called, 'Infinite Scroller Refresh').to.be\n .true;\n expect(\n infiniteScrollerRefreshSpy.callCount,\n 'Infinite Scroller Refresh call count'\n ).to.equal(1);\n\n el.loggedIn = false;\n await el.updateComplete;\n\n expect(\n infiniteScrollerRefreshSpy.callCount,\n '2nd Infinite Scroller Refresh'\n ).to.equal(2);\n\n // testing: `displayMode`\n el.displayMode = 'list-compact';\n el.searchContext = 'beta-search';\n await el.updateComplete;\n expect(\n infiniteScrollerRefreshSpy.callCount,\n '3rd Infinite Scroller Refresh'\n ).to.equal(3);\n\n expect(mockAnalyticsHandler.callCategory).to.equal('beta-search');\n expect(mockAnalyticsHandler.callAction).to.equal('displayMode');\n expect(mockAnalyticsHandler.callLabel).to.equal('list-compact');\n\n el.displayMode = 'list-detail';\n await el.updateComplete;\n expect(\n infiniteScrollerRefreshSpy.callCount,\n '4th Infinite Scroller Refresh'\n ).to.equal(4);\n\n expect(mockAnalyticsHandler.callCategory).to.equal('beta-search');\n expect(mockAnalyticsHandler.callAction).to.equal('displayMode');\n expect(mockAnalyticsHandler.callLabel).to.equal('list-detail');\n\n // testing: `baseNavigationUrl`\n el.baseNavigationUrl = 'https://funtestsite.com';\n await el.updateComplete;\n expect(\n infiniteScrollerRefreshSpy.callCount,\n '5th Infinite Scroller Refresh'\n ).to.equal(5);\n\n // testing: `baseImageUrl`\n el.baseImageUrl = 'https://funtestsiteforimages.com';\n await el.updateComplete;\n expect(\n infiniteScrollerRefreshSpy.callCount,\n '6th Infinite Scroller Refresh'\n ).to.equal(6);\n });\n\n it('query the search service for single result', async () => {\n const searchService = new MockSearchService();\n\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n el.baseQuery = 'single-result';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n expect(\n el.shadowRoot?.querySelector('#big-results-label')?.textContent\n ).to.contains('Result');\n });\n\n it('`searchContext` prop helps describe where component is being used', async () => {\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser></collection-browser>`\n );\n\n expect(el.searchContext).to.equal(analyticsCategories.default);\n\n el.searchContext = 'unicorn-search';\n await el.updateComplete;\n\n expect(el.searchContext).to.equal('unicorn-search');\n\n // property is reflected as attribute\n expect(el.getAttribute('searchcontext')).to.equal('unicorn-search');\n });\n\n it('respects the initial set of URL parameters for a general search', async () => {\n const url = new URL(window.location.href);\n const { searchParams } = url;\n searchParams.set('query', 'foo');\n searchParams.set('sin', 'TXT');\n searchParams.set('sort', 'title');\n searchParams.append('not[]', 'mediatype:\"data\"');\n searchParams.append('and[]', 'subject:\"baz\"');\n searchParams.append('and[]', 'firstTitle:X');\n searchParams.append('and[]', 'year:[2000 TO 2010]');\n window.history.replaceState({}, '', url);\n\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n await el.initialSearchComplete;\n await el.updateComplete;\n\n expect(el.baseQuery).to.equal('foo');\n expect(el.searchType).to.equal(SearchType.FULLTEXT);\n expect(el.selectedSort).to.equal(SortField.title);\n expect(el.selectedFacets?.mediatype?.data?.state).to.equal('hidden');\n expect(el.selectedFacets?.subject?.baz?.state).to.equal('selected');\n expect(el.selectedTitleFilter).to.equal('X');\n expect(el.minSelectedDate).to.equal('2000');\n expect(el.maxSelectedDate).to.equal('2010');\n });\n\n it('respects the initial set of URL parameters within a collection', async () => {\n const url = new URL(window.location.href);\n const { searchParams } = url;\n searchParams.set('query', 'foo');\n searchParams.set('sin', 'TXT');\n searchParams.set('sort', 'title');\n searchParams.append('not[]', 'mediatype:\"data\"');\n searchParams.append('and[]', 'subject:\"baz\"');\n searchParams.append('and[]', 'firstTitle:X');\n searchParams.append('and[]', 'year:[2000 TO 2010]');\n window.history.replaceState({}, '', url);\n\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n .withinCollection=${'foobar'}\n >\n </collection-browser>`\n );\n\n await el.initialSearchComplete;\n await el.updateComplete;\n\n expect(el.withinCollection).to.equal('foobar');\n expect(el.baseQuery).to.equal('foo');\n expect(el.searchType).to.equal(SearchType.FULLTEXT);\n expect(el.selectedSort).to.equal(SortField.title);\n expect(el.selectedFacets?.mediatype?.data?.state).to.equal('hidden');\n expect(el.selectedFacets?.subject?.baz?.state).to.equal('selected');\n expect(el.selectedTitleFilter).to.equal('X');\n expect(el.minSelectedDate).to.equal('2000');\n expect(el.maxSelectedDate).to.equal('2010');\n });\n\n it('respects the initial set of URL parameters within a profile page', async () => {\n const url = new URL(window.location.href);\n const { searchParams } = url;\n searchParams.set('query', 'foo');\n searchParams.append('not[]', 'mediatype:\"data\"');\n searchParams.append('and[]', 'subject:\"baz\"');\n searchParams.append('and[]', 'firstTitle:X');\n searchParams.append('and[]', 'year:[2000 TO 2010]');\n window.history.replaceState({}, '', url);\n\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n .withinProfile=${'@foobar'}\n .profileElement=${'uploads'}\n >\n </collection-browser>`\n );\n\n await el.initialSearchComplete;\n await el.updateComplete;\n\n expect(el.withinProfile).to.equal('@foobar');\n expect(el.profileElement).to.equal('uploads');\n expect(el.baseQuery).to.equal('foo');\n expect(el.searchType).to.equal(SearchType.METADATA);\n expect(el.selectedFacets?.mediatype?.data?.state).to.equal('hidden');\n expect(el.selectedFacets?.subject?.baz?.state).to.equal('selected');\n expect(el.selectedTitleFilter).to.equal('X');\n expect(el.minSelectedDate).to.equal('2000');\n expect(el.maxSelectedDate).to.equal('2010');\n });\n\n it('clears filters except sort when query changes for a general search', async () => {\n const url = new URL(window.location.href);\n const { searchParams } = url;\n searchParams.set('query', 'foo');\n searchParams.set('sin', 'TXT');\n searchParams.set('sort', 'title');\n searchParams.append('not[]', 'mediatype:\"data\"');\n searchParams.append('and[]', 'subject:\"baz\"');\n searchParams.append('and[]', 'firstTitle:X');\n searchParams.append('and[]', 'year:[2000 TO 2010]');\n window.history.replaceState({}, '', url);\n\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n await el.initialSearchComplete;\n await el.updateComplete;\n\n el.baseQuery = 'bar';\n await el.updateComplete;\n\n expect(el.baseQuery).to.equal('bar');\n expect(el.searchType).to.equal(SearchType.FULLTEXT);\n expect(el.selectedSort).to.equal(SortField.title);\n expect(el.selectedFacets?.mediatype?.data).not.to.exist;\n expect(el.selectedFacets?.subject?.baz).not.to.exist;\n expect(el.selectedTitleFilter).not.to.exist;\n expect(el.minSelectedDate).not.to.exist;\n expect(el.maxSelectedDate).not.to.exist;\n });\n\n it('clears filters except sort when query changes within a collection', async () => {\n const url = new URL(window.location.href);\n const { searchParams } = url;\n searchParams.set('query', 'foo');\n searchParams.set('sin', 'TXT');\n searchParams.set('sort', 'title');\n searchParams.append('not[]', 'mediatype:\"data\"');\n searchParams.append('and[]', 'subject:\"baz\"');\n searchParams.append('and[]', 'firstTitle:X');\n searchParams.append('and[]', 'year:[2000 TO 2010]');\n window.history.replaceState({}, '', url);\n\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n .withinCollection=${'foobar'}\n >\n </collection-browser>`\n );\n\n el.baseQuery = 'bar';\n await el.updateComplete;\n\n expect(el.withinCollection).to.equal('foobar');\n expect(el.baseQuery).to.equal('bar');\n expect(el.searchType).to.equal(SearchType.FULLTEXT);\n expect(el.selectedSort).to.equal(SortField.title);\n expect(el.selectedFacets?.mediatype?.data).not.to.exist;\n expect(el.selectedFacets?.subject?.baz).not.to.exist;\n expect(el.selectedTitleFilter).not.to.exist;\n expect(el.minSelectedDate).not.to.exist;\n expect(el.maxSelectedDate).not.to.exist;\n });\n\n it('clears filters *including* sort when target collection changes', async () => {\n const url = new URL(window.location.href);\n const { searchParams } = url;\n searchParams.set('query', 'foo');\n searchParams.set('sin', 'TXT');\n searchParams.set('sort', 'title');\n searchParams.append('not[]', 'mediatype:\"data\"');\n searchParams.append('and[]', 'subject:\"baz\"');\n searchParams.append('and[]', 'firstTitle:X');\n searchParams.append('and[]', 'year:[2000 TO 2010]');\n window.history.replaceState({}, '', url);\n\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n .withinCollection=${'foobar'}\n >\n </collection-browser>`\n );\n\n el.withinCollection = 'bar';\n await el.updateComplete;\n\n expect(el.withinCollection).to.equal('bar');\n expect(el.baseQuery).to.equal('foo');\n expect(el.searchType).to.equal(SearchType.FULLTEXT);\n expect(el.selectedSort).to.equal(SortField.default);\n expect(el.selectedFacets?.mediatype?.data).not.to.exist;\n expect(el.selectedFacets?.subject?.baz).not.to.exist;\n expect(el.selectedTitleFilter).not.to.exist;\n expect(el.minSelectedDate).not.to.exist;\n expect(el.maxSelectedDate).not.to.exist;\n });\n\n it('correctly retrieves web archive hits', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n .withinProfile=${'@foo'}\n .profileElement=${'web_archives'}\n >\n </collection-browser>`\n );\n\n el.baseQuery = 'web-archive';\n await el.updateComplete;\n await el.initialSearchComplete;\n await nextTick();\n\n console.log(\n '\\n\\n*****\\n\\n*****\\n\\n',\n el.dataSource.getAllPages(),\n '\\n\\n*****\\n\\n*****\\n\\n'\n );\n expect(el.dataSource.totalResults, 'total results').to.equal(1);\n expect(el.dataSource.getTileModelAt(0)?.title).to.equal(\n 'https://example.com'\n );\n expect(\n el.dataSource.getTileModelAt(0)?.captureDates?.length,\n 'capture dates'\n ).to.equal(1);\n });\n\n it('shows dropdown accordion in facet sidebar when opt-in strategy is specified', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n facetLoadStrategy=${'opt-in'}\n >\n </collection-browser>`\n );\n\n el.baseQuery = 'foo';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n const facetsDropdown = el.shadowRoot?.querySelector(\n '.desktop-facets-dropdown'\n );\n expect(facetsDropdown).to.exist;\n });\n\n it('shows temporarily unavailable message when facets suppressed', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n facetLoadStrategy=${'off'}\n >\n </collection-browser>`\n );\n\n el.baseQuery = 'foo';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n const facetsMsg = el.shadowRoot?.querySelector('.facets-message');\n expect(facetsMsg).to.exist;\n expect(facetsMsg?.textContent?.trim()).to.equal(\n 'Facets are temporarily unavailable.'\n );\n });\n\n it('shows manage bar interface instead of sort bar when in manage view', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n el.baseQuery = 'foo';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n el.isManageView = true;\n await el.updateComplete;\n\n expect(el.shadowRoot?.querySelector('manage-bar')).to.exist;\n expect(el.shadowRoot?.querySelector('sort-filter-bar')).not.to.exist;\n\n el.isManageView = false;\n await el.updateComplete;\n\n expect(el.shadowRoot?.querySelector('manage-bar')).not.to.exist;\n expect(el.shadowRoot?.querySelector('sort-filter-bar')).to.exist;\n });\n\n it('switches to grid display mode when manage view activated', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n .baseQuery=${'foo'}\n .displayMode=${'list-detail'}\n >\n </collection-browser>`\n );\n\n el.isManageView = true;\n await el.updateComplete;\n\n expect(el.displayMode).to.equal('grid');\n });\n\n it('can remove all checked tiles', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n .baseNavigationUrl=${''}\n >\n </collection-browser>`\n );\n\n el.baseQuery = 'foo';\n el.pageSize = 1; // To hit the edge case of a page break while offsetting tiles\n await el.updateComplete;\n await el.initialSearchComplete;\n\n el.isManageView = true;\n await el.updateComplete;\n\n const infiniteScroller = el.shadowRoot?.querySelector('infinite-scroller');\n expect(infiniteScroller).to.exist;\n\n let tiles =\n infiniteScroller!.shadowRoot?.querySelectorAll('tile-dispatcher');\n expect(tiles).to.exist;\n expect(tiles?.length).to.equal(2);\n\n const firstTile = tiles![0] as TileDispatcher;\n const firstTileLink = firstTile.shadowRoot?.querySelector(\n 'a[href]'\n ) as HTMLAnchorElement;\n expect(firstTile.model?.identifier).to.equal('foo');\n expect(firstTileLink).to.exist;\n\n // No effect if no tiles checked\n el.removeCheckedTiles();\n await el.updateComplete;\n tiles = infiniteScroller!.shadowRoot?.querySelectorAll('tile-dispatcher');\n expect(tiles).to.exist;\n expect(tiles?.length).to.equal(2);\n\n // Check the first tile\n firstTileLink!.click();\n expect(firstTile.model?.checked).to.be.true;\n\n // Remove checked tiles and verify that we only kept the second tile\n el.removeCheckedTiles();\n await el.updateComplete;\n expect(el?.dataSource?.size, 'data source count').to.equal(1);\n\n tiles = el.shadowRoot\n ?.querySelector('infinite-scroller')!\n .shadowRoot?.querySelectorAll('tile-dispatcher');\n expect(tiles).to.exist;\n expect(\n tiles!.length,\n 'tile count after `el.removeCheckedTiles()`'\n ).to.equal(1);\n });\n\n it('can check/uncheck all tiles', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n .baseNavigationUrl=${''}\n >\n </collection-browser>`\n );\n\n el.baseQuery = 'foo';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n el.isManageView = true;\n await el.updateComplete;\n\n expect(el.dataSource.checkedTileModels.length).to.equal(0);\n expect(el.dataSource.uncheckedTileModels.length).to.equal(2);\n\n el.dataSource.checkAllTiles();\n expect(el.dataSource.checkedTileModels.length).to.equal(2);\n expect(el.dataSource.uncheckedTileModels.length).to.equal(0);\n\n el.dataSource.uncheckAllTiles();\n expect(el.dataSource.checkedTileModels.length).to.equal(0);\n expect(el.dataSource.uncheckedTileModels.length).to.equal(2);\n });\n\n it('emits event when item removal requested', async () => {\n const spy = sinon.spy();\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n .baseNavigationUrl=${''}\n @itemRemovalRequested=${spy}\n >\n </collection-browser>`\n );\n\n el.baseQuery = 'foo';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n el.isManageView = true;\n await el.updateComplete;\n\n const infiniteScroller = el.shadowRoot?.querySelector('infinite-scroller');\n expect(infiniteScroller).to.exist;\n\n const tiles =\n infiniteScroller!.shadowRoot?.querySelectorAll('tile-dispatcher');\n expect(tiles).to.exist.and.have.length(2);\n\n const firstTile = tiles![0] as TileDispatcher;\n const firstTileLink = firstTile.shadowRoot?.querySelector(\n 'a[href]'\n ) as HTMLAnchorElement;\n expect(firstTile.model?.identifier).to.equal('foo');\n expect(firstTileLink).to.exist;\n\n // Check the first tile\n firstTileLink!.click();\n await el.updateComplete;\n\n const manageBar = el.shadowRoot?.querySelector('manage-bar');\n expect(manageBar).to.exist;\n\n // Emit remove event from manage bar\n manageBar!.dispatchEvent(new CustomEvent('removeItems'));\n\n await el.updateComplete;\n expect(spy.callCount).to.equal(1);\n expect(spy.args[0].length).to.equal(1);\n expect(spy.args[0][0]?.detail?.items?.[0]?.identifier).to.equal('foo');\n });\n\n it('disables manage view when manage bar cancelled', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n .baseNavigationUrl=${''}\n >\n </collection-browser>`\n );\n\n el.baseQuery = 'foo';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n el.isManageView = true;\n await el.updateComplete;\n\n const manageBar = el.shadowRoot?.querySelector('manage-bar');\n expect(manageBar).to.exist;\n\n // Emit remove event from manage bar\n manageBar!.dispatchEvent(new CustomEvent('cancel'));\n\n await el.updateComplete;\n expect(el.isManageView).to.be.false;\n });\n\n it('enable/disable manage view delete button when you selectAll/unselectAll', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser .searchService=${searchService}>\n </collection-browser>`\n );\n\n el.baseQuery = 'foo';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n el.isManageView = true;\n await el.updateComplete;\n\n const manageBar = el.shadowRoot?.querySelector('manage-bar');\n expect(manageBar).to.exist;\n\n // disable button exists\n expect(manageBar?.shadowRoot?.querySelector('.danger:disabled')).to.be\n .exist;\n\n // Emit remove event from manage bar\n manageBar!.dispatchEvent(new CustomEvent('selectAll'));\n await el.updateComplete;\n\n // disable button does not exists\n expect(manageBar?.shadowRoot?.querySelector('.danger:disabled')).to.be.not\n .exist;\n\n // Emit remove event from manage bar\n manageBar!.dispatchEvent(new CustomEvent('unselectAll'));\n await el.updateComplete;\n\n // disable button exists again\n expect(manageBar?.shadowRoot?.querySelector('.danger:disabled')).to.be\n .exist;\n });\n\n it('applies loans tab properties to sort bar', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .baseNavigationUrl=${''}\n .searchService=${searchService}\n .enableSortOptionsSlot=${true}\n >\n </collection-browser>`\n );\n\n el.baseQuery = 'collection:foo';\n await el.updateComplete;\n await aTimeout(10);\n\n const sortBar = el.shadowRoot?.querySelector(\n 'sort-filter-bar'\n ) as SortFilterBar;\n expect(sortBar?.enableSortOptionsSlot, 'show loans in sort bar').to.be.true;\n expect(el.enableSortOptionsSlot, 'collection browser is loans tab').to.be\n .true;\n\n const loansTabSlot = sortBar.querySelector('slot[name=\"sort-options\"]');\n expect(loansTabSlot).to.exist;\n });\n\n it('can suppress presence of result count', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n suppressResultCount\n ></collection-browser>`\n );\n\n el.baseQuery = 'collection:foo';\n await el.updateComplete;\n await el.initialSearchComplete;\n\n const resultCount = el.shadowRoot?.querySelector('#results-total');\n expect(resultCount).not.to.exist;\n });\n\n it('can suppress presence of result tiles', async () => {\n const searchService = new MockSearchService();\n const el = await fixture<CollectionBrowser>(\n html`<collection-browser\n .searchService=${searchService}\n suppressResultTiles\n ></collection-browser>`\n );\n\n el.baseQuery = 'collection:foo';\n await el.updateComplete;\n\n const infiniteScroller = el.shadowRoot?.querySelector('infinite-scroller');\n expect(infiniteScroller).not.to.exist;\n });\n});\n"]}
package/index.ts CHANGED
@@ -10,3 +10,4 @@ export { AccountTile } from './src/tiles/grid/account-tile';
10
10
  export { ItemTile } from './src/tiles/grid/item-tile';
11
11
  export { TileList } from './src/tiles/list/tile-list';
12
12
  export { TileListCompact } from './src/tiles/list/tile-list-compact';
13
+ export { TileDispatcher } from './src/tiles/tile-dispatcher';
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "The Internet Archive Collection Browser.",
4
4
  "license": "AGPL-3.0-only",
5
5
  "author": "Internet Archive",
6
- "version": "2.6.2-alpha.2",
6
+ "version": "2.6.3",
7
7
  "main": "dist/index.js",
8
8
  "module": "dist/index.js",
9
9
  "scripts": {
@@ -1111,7 +1111,7 @@ describe('Collection Browser', () => {
1111
1111
 
1112
1112
  el.applyDefaultProfileSort();
1113
1113
  expect(el.defaultSortParam).to.deep.equal({
1114
- field: SortField.weeklyview,
1114
+ field: 'week',
1115
1115
  direction: 'desc',
1116
1116
  });
1117
1117
  });