@internetarchive/collection-browser 0.2.20 → 0.2.22-rc1
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 +34 -4
- 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 +4 -0
- package/dist/src/collection-browser.js +24 -11
- package/dist/src/collection-browser.js.map +1 -1
- package/dist/src/collection-facets/facets-template.d.ts +16 -0
- package/dist/src/collection-facets/facets-template.js +266 -0
- package/dist/src/collection-facets/facets-template.js.map +1 -0
- package/dist/src/collection-facets/facets-util.d.ts +10 -0
- package/dist/src/collection-facets/facets-util.js +20 -0
- package/dist/src/collection-facets/facets-util.js.map +1 -0
- package/dist/src/collection-facets/more-facets-content.d.ts +83 -0
- package/dist/src/collection-facets/more-facets-content.js +475 -0
- package/dist/src/collection-facets/more-facets-content.js.map +1 -0
- package/dist/src/collection-facets/more-facets-pagination.d.ts +36 -0
- package/dist/src/collection-facets/more-facets-pagination.js +267 -0
- package/dist/src/collection-facets/more-facets-pagination.js.map +1 -0
- package/dist/src/collection-facets.d.ts +19 -5
- package/dist/src/collection-facets.js +138 -239
- package/dist/src/collection-facets.js.map +1 -1
- package/dist/src/models.d.ts +4 -1
- package/dist/src/models.js +24 -0
- package/dist/src/models.js.map +1 -1
- package/dist/src/restoration-state-handler.js +5 -6
- package/dist/src/restoration-state-handler.js.map +1 -1
- package/dist/src/tiles/collection-browser-loading-tile.js +2 -5
- package/dist/src/tiles/collection-browser-loading-tile.js.map +1 -1
- package/dist/test/collection-browser.test.js +29 -12
- package/dist/test/collection-browser.test.js.map +1 -1
- package/dist/test/collection-facets/facets-template.test.d.ts +1 -0
- package/dist/test/collection-facets/facets-template.test.js +75 -0
- package/dist/test/collection-facets/facets-template.test.js.map +1 -0
- package/dist/test/collection-facets/facets-util.test.d.ts +1 -0
- package/dist/test/collection-facets/facets-util.test.js +13 -0
- package/dist/test/collection-facets/facets-util.test.js.map +1 -0
- package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -0
- package/dist/test/collection-facets/more-facets-content.test.js +104 -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 +133 -0
- package/dist/test/collection-facets/more-facets-pagination.test.js.map +1 -0
- package/dist/test/collection-facets.test.d.ts +1 -0
- package/dist/test/collection-facets.test.js +98 -33
- package/dist/test/collection-facets.test.js.map +1 -1
- package/package.json +11 -4
- package/src/app-root.ts +34 -4
- 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 +22 -11
- package/src/collection-facets/facets-template.ts +284 -0
- package/src/collection-facets/facets-util.ts +22 -0
- package/src/collection-facets/more-facets-content.ts +529 -0
- package/src/collection-facets/more-facets-pagination.ts +297 -0
- package/src/collection-facets.ts +175 -261
- package/src/models.ts +28 -1
- package/src/restoration-state-handler.ts +7 -6
- package/src/tiles/collection-browser-loading-tile.ts +2 -5
- package/test/collection-browser.test.ts +37 -12
- package/test/collection-facets/facets-template.test.ts +103 -0
- package/test/collection-facets/facets-util.test.ts +18 -0
- package/test/collection-facets/more-facets-content.test.ts +146 -0
- package/test/collection-facets/more-facets-pagination.test.ts +202 -0
- package/test/collection-facets.test.ts +127 -44
|
@@ -1,11 +1,34 @@
|
|
|
1
1
|
/* eslint-disable import/no-duplicates */
|
|
2
2
|
import { expect, fixture } from '@open-wc/testing';
|
|
3
|
+
import sinon from 'sinon';
|
|
3
4
|
import { html } from 'lit';
|
|
4
5
|
import type { Aggregation } from '@internetarchive/search-service';
|
|
6
|
+
import {
|
|
7
|
+
ModalManager,
|
|
8
|
+
ModalManagerInterface,
|
|
9
|
+
} from '@internetarchive/modal-manager';
|
|
5
10
|
import type { CollectionFacets } from '../src/collection-facets';
|
|
11
|
+
import '@internetarchive/modal-manager';
|
|
6
12
|
import '../src/collection-facets';
|
|
13
|
+
import type { FacetOption } from '../src/models';
|
|
7
14
|
|
|
8
15
|
describe('Collection Facets', () => {
|
|
16
|
+
it('has loader', async () => {
|
|
17
|
+
const el = await fixture<CollectionFacets>(
|
|
18
|
+
html`<collection-facets ?facetsLoading=${true}></collection-facets>`
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
expect(
|
|
22
|
+
el.shadowRoot?.querySelector('#container')?.classList.contains('loading')
|
|
23
|
+
).to.be.true;
|
|
24
|
+
|
|
25
|
+
el.facetsLoading = false;
|
|
26
|
+
await el.updateComplete;
|
|
27
|
+
|
|
28
|
+
expect(
|
|
29
|
+
el.shadowRoot?.querySelector('#container')?.classList.contains('loading')
|
|
30
|
+
).to.be.false;
|
|
31
|
+
});
|
|
9
32
|
it('renders aggregations as facets', async () => {
|
|
10
33
|
const el = await fixture<CollectionFacets>(
|
|
11
34
|
html`<collection-facets></collection-facets>`
|
|
@@ -24,15 +47,16 @@ describe('Collection Facets', () => {
|
|
|
24
47
|
|
|
25
48
|
el.aggregations = aggs;
|
|
26
49
|
await el.updateComplete;
|
|
27
|
-
|
|
28
50
|
const facetGroups = el.shadowRoot?.querySelectorAll('.facet-group');
|
|
29
51
|
expect(facetGroups?.length).to.equal(1);
|
|
30
52
|
|
|
31
53
|
const titleFacetGroup = facetGroups?.[0];
|
|
32
54
|
const facetGroupHeader = titleFacetGroup?.querySelector('h1');
|
|
33
55
|
expect(facetGroupHeader?.textContent?.trim()).to.equal('Subject');
|
|
34
|
-
|
|
35
|
-
|
|
56
|
+
const titleFacetRow = titleFacetGroup
|
|
57
|
+
?.querySelector('facets-template')
|
|
58
|
+
?.shadowRoot?.querySelector('.facet-row');
|
|
59
|
+
console.log(titleFacetGroup?.querySelector('facets-template'));
|
|
36
60
|
expect(titleFacetRow?.textContent?.trim()).to.satisfy((text: string) =>
|
|
37
61
|
/^foo\s*5$/.test(text)
|
|
38
62
|
);
|
|
@@ -88,9 +112,9 @@ describe('Collection Facets', () => {
|
|
|
88
112
|
el.aggregations = aggs;
|
|
89
113
|
await el.updateComplete;
|
|
90
114
|
|
|
91
|
-
const collectionName = el.shadowRoot
|
|
92
|
-
'
|
|
93
|
-
|
|
115
|
+
const collectionName = el.shadowRoot
|
|
116
|
+
?.querySelector('facets-template')
|
|
117
|
+
?.shadowRoot?.querySelector('async-collection-name');
|
|
94
118
|
expect(collectionName?.parentElement).to.be.instanceOf(HTMLAnchorElement);
|
|
95
119
|
expect(collectionName?.parentElement?.getAttribute('href')).to.equal(
|
|
96
120
|
'/details/foo'
|
|
@@ -116,48 +140,107 @@ describe('Collection Facets', () => {
|
|
|
116
140
|
el.aggregations = aggs;
|
|
117
141
|
await el.updateComplete;
|
|
118
142
|
|
|
119
|
-
const collectionName = el.shadowRoot
|
|
120
|
-
'
|
|
121
|
-
|
|
143
|
+
const collectionName = el.shadowRoot
|
|
144
|
+
?.querySelector('facets-template')
|
|
145
|
+
?.shadowRoot?.querySelector('async-collection-name');
|
|
122
146
|
expect(collectionName?.parentElement).to.not.be.instanceOf(
|
|
123
147
|
HTMLAnchorElement
|
|
124
148
|
);
|
|
125
149
|
});
|
|
126
150
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
'.
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
151
|
+
describe('More Facets', () => {
|
|
152
|
+
it('Does not render < allowedFacetCount', async () => {
|
|
153
|
+
const el = await fixture<CollectionFacets>(
|
|
154
|
+
html`<collection-facets></collection-facets>`
|
|
155
|
+
);
|
|
156
|
+
|
|
157
|
+
const aggs: Record<string, Aggregation> = {
|
|
158
|
+
'user_aggs__terms__field:subjectSorter__size:1': {
|
|
159
|
+
buckets: [
|
|
160
|
+
{
|
|
161
|
+
key: 'foo',
|
|
162
|
+
doc_count: 5,
|
|
163
|
+
},
|
|
164
|
+
],
|
|
165
|
+
},
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
el.aggregations = aggs;
|
|
169
|
+
await el.updateComplete;
|
|
170
|
+
|
|
171
|
+
const moreLink = el.shadowRoot?.querySelector('.more-link');
|
|
172
|
+
expect(moreLink).to.be.null;
|
|
173
|
+
});
|
|
174
|
+
it('Render More Facets', async () => {
|
|
175
|
+
const el = await fixture<CollectionFacets>(
|
|
176
|
+
html`<collection-facets
|
|
177
|
+
.modalManager=${new ModalManager()}
|
|
178
|
+
></collection-facets>`
|
|
179
|
+
);
|
|
180
|
+
|
|
181
|
+
const aggs: Record<string, Aggregation> = {
|
|
182
|
+
'user_aggs__terms__field:subjectSorter__size:1': {
|
|
183
|
+
buckets: [
|
|
184
|
+
{
|
|
185
|
+
key: 'foo',
|
|
186
|
+
doc_count: 5,
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
key: 'fi',
|
|
190
|
+
doc_count: 5,
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
key: 'fum',
|
|
194
|
+
doc_count: 5,
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
key: 'flee',
|
|
198
|
+
doc_count: 5,
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
key: 'wheee',
|
|
202
|
+
doc_count: 5,
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
key: 'whooo',
|
|
206
|
+
doc_count: 5,
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
key: 'boop',
|
|
210
|
+
doc_count: 5,
|
|
211
|
+
},
|
|
212
|
+
],
|
|
213
|
+
},
|
|
214
|
+
};
|
|
215
|
+
|
|
216
|
+
el.aggregations = aggs;
|
|
217
|
+
await el.updateComplete;
|
|
218
|
+
|
|
219
|
+
let eventCaught = false;
|
|
220
|
+
let eventFacet = '';
|
|
221
|
+
el.addEventListener('showMoreFacets', e => {
|
|
222
|
+
eventFacet = (e as CustomEvent).detail;
|
|
223
|
+
eventCaught = true;
|
|
224
|
+
});
|
|
225
|
+
|
|
226
|
+
const moreLink = el.shadowRoot?.querySelector(
|
|
227
|
+
'.more-link'
|
|
228
|
+
) as HTMLButtonElement;
|
|
229
|
+
expect(moreLink).to.exist; // has link
|
|
230
|
+
|
|
231
|
+
const showModalSpy = sinon.spy(
|
|
232
|
+
el.modalManager as ModalManagerInterface,
|
|
233
|
+
'showModal'
|
|
234
|
+
);
|
|
235
|
+
// let's pop up modal
|
|
236
|
+
moreLink?.click();
|
|
237
|
+
await el.updateComplete;
|
|
238
|
+
|
|
239
|
+
expect(showModalSpy.callCount).to.equal(1);
|
|
240
|
+
expect(el.modalManager?.classList.contains('more-search-facets')).to.be
|
|
241
|
+
.true;
|
|
242
|
+
expect(eventCaught).to.be.true;
|
|
243
|
+
expect(eventFacet).to.equal('subject' as FacetOption);
|
|
244
|
+
});
|
|
162
245
|
});
|
|
163
246
|
});
|