@internetarchive/collection-browser 0.2.15-0 → 0.2.16-alpha1
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/src/app-root.d.ts +1 -0
- package/dist/src/app-root.js +29 -2
- package/dist/src/app-root.js.map +1 -1
- package/dist/src/assets/img/icons/arrow-left.d.ts +2 -0
- package/dist/src/assets/img/icons/arrow-left.js +10 -0
- package/dist/src/assets/img/icons/arrow-left.js.map +1 -0
- package/dist/src/assets/img/icons/arrow-right.d.ts +2 -0
- package/dist/src/assets/img/icons/arrow-right.js +10 -0
- package/dist/src/assets/img/icons/arrow-right.js.map +1 -0
- package/dist/src/collection-browser.d.ts +2 -0
- package/dist/src/collection-browser.js +9 -13
- package/dist/src/collection-browser.js.map +1 -1
- package/dist/src/collection-facets/more-facets-content.d.ts +56 -0
- package/dist/src/collection-facets/more-facets-content.js +374 -0
- package/dist/src/collection-facets/more-facets-content.js.map +1 -0
- package/dist/src/collection-facets/more-facets-pagination.d.ts +27 -0
- package/dist/src/collection-facets/more-facets-pagination.js +193 -0
- package/dist/src/collection-facets/more-facets-pagination.js.map +1 -0
- package/dist/src/collection-facets.d.ts +19 -2
- package/dist/src/collection-facets.js +102 -0
- package/dist/src/collection-facets.js.map +1 -1
- package/dist/src/models.d.ts +3 -2
- package/dist/src/models.js +8 -4
- package/dist/src/models.js.map +1 -1
- package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +23 -1
- package/dist/src/sort-filter-bar/sort-filter-bar.js +96 -12
- package/dist/src/sort-filter-bar/sort-filter-bar.js.map +1 -1
- package/dist/test/collection-browser.test.js +35 -0
- package/dist/test/collection-browser.test.js.map +1 -1
- package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -0
- package/dist/test/collection-facets/more-facets-content.test.js +75 -0
- package/dist/test/collection-facets/more-facets-content.test.js.map +1 -0
- package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -0
- package/dist/test/collection-facets/more-facets-pagination.test.js +38 -0
- package/dist/test/collection-facets/more-facets-pagination.test.js.map +1 -0
- package/dist/test/mocks/mock-search-responses.js +13 -0
- package/dist/test/mocks/mock-search-responses.js.map +1 -1
- package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -0
- package/dist/test/sort-filter-bar/sort-filter-bar.test.js +122 -0
- package/dist/test/sort-filter-bar/sort-filter-bar.test.js.map +1 -0
- package/package.json +3 -1
- package/src/app-root.ts +29 -2
- package/src/assets/img/icons/arrow-left.ts +10 -0
- package/src/assets/img/icons/arrow-right.ts +10 -0
- package/src/collection-browser.ts +8 -13
- package/src/collection-facets/more-facets-content.ts +393 -0
- package/src/collection-facets/more-facets-pagination.ts +201 -0
- package/src/collection-facets.ts +117 -1
- package/src/models.ts +9 -4
- package/src/sort-filter-bar/sort-filter-bar.ts +98 -12
- package/test/collection-browser.test.ts +43 -0
- package/test/collection-facets/more-facets-content.test.ts +113 -0
- package/test/collection-facets/more-facets-pagination.test.ts +70 -0
- package/test/mocks/mock-search-responses.ts +13 -0
- package/test/sort-filter-bar/sort-filter-bar.test.ts +187 -0
|
@@ -21,6 +21,19 @@ export const mockSuccessResponse: Result<SearchResponse, SearchServiceError> = {
|
|
|
21
21
|
}),
|
|
22
22
|
],
|
|
23
23
|
start: 0,
|
|
24
|
+
aggregations: {
|
|
25
|
+
'user_aggs__terms__field:mediatypeSorter__size:100': {
|
|
26
|
+
buckets: [
|
|
27
|
+
{ key: 'audio', doc_count: 121 },
|
|
28
|
+
{ key: 'movies', doc_count: 2195 },
|
|
29
|
+
{ key: 'texts', doc_count: 1392 },
|
|
30
|
+
{ key: 'data', doc_count: 605 },
|
|
31
|
+
{ key: 'web', doc_count: 301 },
|
|
32
|
+
{ key: 'collection', doc_count: 167 },
|
|
33
|
+
{ key: 'account', doc_count: 167 },
|
|
34
|
+
],
|
|
35
|
+
},
|
|
36
|
+
},
|
|
24
37
|
},
|
|
25
38
|
responseHeader: {
|
|
26
39
|
status: 0,
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
/* eslint-disable import/no-duplicates */
|
|
2
|
+
import { expect, fixture } from '@open-wc/testing';
|
|
3
|
+
import { html } from 'lit';
|
|
4
|
+
import type { SortFilterBar } from '../../src/sort-filter-bar/sort-filter-bar';
|
|
5
|
+
import type { SortField } from '../../src/models';
|
|
6
|
+
|
|
7
|
+
import '../../src/sort-filter-bar/sort-filter-bar';
|
|
8
|
+
|
|
9
|
+
describe('Sort direction buttons', () => {
|
|
10
|
+
it('should render sort direction button', async () => {
|
|
11
|
+
const el = await fixture<SortFilterBar>(html`
|
|
12
|
+
<sort-filter-bar> </sort-filter-bar>
|
|
13
|
+
`);
|
|
14
|
+
|
|
15
|
+
el.sortDirection = 'asc'; // selected sort
|
|
16
|
+
await el.updateComplete;
|
|
17
|
+
|
|
18
|
+
const sortDirectionButtonList = el.shadowRoot?.querySelector(
|
|
19
|
+
'#sort-direction-selector'
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
const sortByAscButton = sortDirectionButtonList?.querySelector(
|
|
23
|
+
'#sort-ascending-btn'
|
|
24
|
+
);
|
|
25
|
+
expect(sortByAscButton).to.exist;
|
|
26
|
+
// ascending order button is selected
|
|
27
|
+
expect(sortByAscButton?.getAttribute('class')).to.equal(
|
|
28
|
+
'sort-button selected'
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
const sortByDescButton = sortDirectionButtonList?.querySelector(
|
|
32
|
+
'#sort-descending-btn'
|
|
33
|
+
);
|
|
34
|
+
expect(sortByDescButton).to.exist;
|
|
35
|
+
// descending order button is not selected
|
|
36
|
+
expect(sortByDescButton?.getAttribute('class')).to.not.equal(
|
|
37
|
+
'sort-button selected'
|
|
38
|
+
);
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
describe('Sort selector default buttons', async () => {
|
|
43
|
+
const el = await fixture<SortFilterBar>(html`
|
|
44
|
+
<sort-filter-bar> </sort-filter-bar>
|
|
45
|
+
`);
|
|
46
|
+
const sortSelectorContainer = el.shadowRoot?.querySelector(
|
|
47
|
+
'#desktop-sort-selector'
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
it('should render sort-by label', async () => {
|
|
51
|
+
expect(sortSelectorContainer?.children.item(0)?.textContent).to.equal(
|
|
52
|
+
'Sort By'
|
|
53
|
+
);
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
it('should render default relevance-sort selector', async () => {
|
|
57
|
+
const defaultSortSelector = sortSelectorContainer?.children
|
|
58
|
+
.item(1)
|
|
59
|
+
?.querySelector('a');
|
|
60
|
+
expect(defaultSortSelector?.textContent).to.contain('Relevance');
|
|
61
|
+
expect(defaultSortSelector?.getAttribute('class')).to.equal('selected');
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
it('should render default view-sort selector', async () => {
|
|
65
|
+
const defaultSortSelector = sortSelectorContainer?.children
|
|
66
|
+
.item(2)
|
|
67
|
+
?.querySelector('a');
|
|
68
|
+
expect(defaultSortSelector?.textContent).to.contain('Weekly Views');
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
it('should render active view-sort selectors', async () => {
|
|
72
|
+
el.selectedSort = 'alltimeview' as SortField;
|
|
73
|
+
await el.updateComplete;
|
|
74
|
+
|
|
75
|
+
const defaultSortSelector =
|
|
76
|
+
sortSelectorContainer?.querySelector('a.selected');
|
|
77
|
+
expect(defaultSortSelector?.textContent).to.contain('All-time Views');
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
it('should render default title-sort selector', async () => {
|
|
81
|
+
const defaultSortSelector = sortSelectorContainer?.children
|
|
82
|
+
.item(3)
|
|
83
|
+
?.querySelector('a');
|
|
84
|
+
expect(defaultSortSelector?.textContent).to.contain('Title');
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
it('should render default date-sort selector', async () => {
|
|
88
|
+
const defaultSortSelector = sortSelectorContainer?.children
|
|
89
|
+
.item(4)
|
|
90
|
+
?.querySelector('a');
|
|
91
|
+
expect(defaultSortSelector?.textContent).to.contain('Date Published');
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
it('should render active date-sort selectors', async () => {
|
|
95
|
+
el.selectedSort = 'datereviewed' as SortField;
|
|
96
|
+
await el.updateComplete;
|
|
97
|
+
|
|
98
|
+
const defaultSortSelector =
|
|
99
|
+
sortSelectorContainer?.querySelector('a.selected');
|
|
100
|
+
expect(defaultSortSelector?.textContent).to.contain('Date Reviewed');
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
it('should render default creator-sort selector', async () => {
|
|
104
|
+
const defaultSortSelector = sortSelectorContainer?.children
|
|
105
|
+
.item(5)
|
|
106
|
+
?.querySelector('a');
|
|
107
|
+
expect(defaultSortSelector?.textContent).to.contain('Creator');
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
it('click event on view-sort selector', async () => {
|
|
111
|
+
const defaultSortSelector = sortSelectorContainer?.children
|
|
112
|
+
.item(2)
|
|
113
|
+
?.querySelector('a');
|
|
114
|
+
|
|
115
|
+
await defaultSortSelector?.click();
|
|
116
|
+
expect(el.selectedSort).to.equal('weeklyview');
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
it('click event on title selector', async () => {
|
|
120
|
+
const defaultSortSelector = sortSelectorContainer?.children
|
|
121
|
+
.item(3)
|
|
122
|
+
?.querySelector('a');
|
|
123
|
+
|
|
124
|
+
await defaultSortSelector?.click();
|
|
125
|
+
expect(el.selectedSort).to.equal('title');
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
it('click event on date-sort selector', async () => {
|
|
129
|
+
const defaultSortSelector = sortSelectorContainer?.children
|
|
130
|
+
.item(4)
|
|
131
|
+
?.querySelector('a');
|
|
132
|
+
|
|
133
|
+
await defaultSortSelector?.click();
|
|
134
|
+
expect(el.selectedSort).to.equal('date');
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
it('click event on creator selector', async () => {
|
|
138
|
+
const defaultSortSelector = sortSelectorContainer?.children
|
|
139
|
+
.item(5)
|
|
140
|
+
?.querySelector('a');
|
|
141
|
+
|
|
142
|
+
await defaultSortSelector?.click();
|
|
143
|
+
expect(el.selectedSort).to.equal('creator');
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
describe('Display mode/style buttons', () => {
|
|
148
|
+
it('should render all display mode buttons', async () => {
|
|
149
|
+
const el = await fixture<SortFilterBar>(html`
|
|
150
|
+
<sort-filter-bar> </sort-filter-bar>
|
|
151
|
+
`);
|
|
152
|
+
|
|
153
|
+
const displayModeButtonList = el.shadowRoot
|
|
154
|
+
?.querySelector('#display-style-selector')
|
|
155
|
+
?.querySelector('ul');
|
|
156
|
+
|
|
157
|
+
const gridButton = displayModeButtonList?.children
|
|
158
|
+
.item(0)
|
|
159
|
+
?.querySelector('#grid-button');
|
|
160
|
+
expect(gridButton).to.exist;
|
|
161
|
+
|
|
162
|
+
const detailListButton = displayModeButtonList?.children
|
|
163
|
+
.item(1)
|
|
164
|
+
?.querySelector('#list-detail-button');
|
|
165
|
+
expect(detailListButton).to.exist;
|
|
166
|
+
|
|
167
|
+
const compactListButton = displayModeButtonList?.children
|
|
168
|
+
.item(2)
|
|
169
|
+
?.querySelector('#list-compact-button');
|
|
170
|
+
expect(compactListButton).to.exist;
|
|
171
|
+
});
|
|
172
|
+
|
|
173
|
+
it('should active current display mode', async () => {
|
|
174
|
+
const el = await fixture<SortFilterBar>(html`
|
|
175
|
+
<sort-filter-bar> </sort-filter-bar>
|
|
176
|
+
`);
|
|
177
|
+
|
|
178
|
+
el.displayMode = 'grid';
|
|
179
|
+
await el.updateComplete;
|
|
180
|
+
|
|
181
|
+
const displayModeTitle = el.shadowRoot
|
|
182
|
+
?.querySelector('#display-style-selector')
|
|
183
|
+
?.querySelector('button.active')
|
|
184
|
+
?.getAttribute('title');
|
|
185
|
+
expect(displayModeTitle).to.equal('Tile view');
|
|
186
|
+
});
|
|
187
|
+
});
|