@internetarchive/collection-browser 1.14.9-alpha1 → 1.14.9-alpha10
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 +154 -82
- package/dist/src/app-root.js.map +1 -1
- package/dist/src/collection-browser.d.ts +2 -2
- package/dist/src/collection-browser.js +23 -18
- package/dist/src/collection-browser.js.map +1 -1
- package/dist/src/collection-facets/facet-row.d.ts +30 -0
- package/dist/src/collection-facets/facet-row.js +245 -0
- package/dist/src/collection-facets/facet-row.js.map +1 -0
- package/dist/src/collection-facets/facets-template.d.ts +1 -4
- package/dist/src/collection-facets/facets-template.js +40 -182
- package/dist/src/collection-facets/facets-template.js.map +1 -1
- package/dist/src/models.d.ts +18 -2
- package/dist/src/models.js.map +1 -1
- package/dist/test/collection-browser.test.js +36 -4
- package/dist/test/collection-browser.test.js.map +1 -1
- package/dist/test/collection-facets/facet-row.test.d.ts +1 -0
- package/dist/test/collection-facets/facet-row.test.js +235 -0
- package/dist/test/collection-facets/facet-row.test.js.map +1 -0
- package/dist/test/collection-facets/facets-template.test.js +65 -96
- package/dist/test/collection-facets/facets-template.test.js.map +1 -1
- package/dist/test/collection-facets.test.js +39 -70
- package/dist/test/collection-facets.test.js.map +1 -1
- package/package.json +2 -2
- package/src/app-root.ts +159 -82
- package/src/collection-browser.ts +23 -20
- package/src/collection-facets/facet-row.ts +274 -0
- package/src/collection-facets/facets-template.ts +49 -196
- package/src/models.ts +18 -2
- package/test/collection-browser.test.ts +36 -4
- package/test/collection-facets/facet-row.test.ts +328 -0
- package/test/collection-facets/facets-template.test.ts +72 -110
- package/test/collection-facets.test.ts +69 -101
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
import { expect, fixture } from '@open-wc/testing';
|
|
2
|
+
import sinon from 'sinon';
|
|
3
|
+
import { html } from 'lit';
|
|
4
|
+
import '../../src/collection-facets/facet-row';
|
|
5
|
+
import { MockCollectionNameCache } from '../mocks/mock-collection-name-cache';
|
|
6
|
+
describe('Facet row', () => {
|
|
7
|
+
it('renders nothing if no bucket provided', async () => {
|
|
8
|
+
var _a;
|
|
9
|
+
const el = await fixture(html `<facet-row .facetType=${'subject'}></facet-row>`);
|
|
10
|
+
expect((_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.facet-row-container')).not.to.exist;
|
|
11
|
+
});
|
|
12
|
+
it('renders nothing if no facet type provided', async () => {
|
|
13
|
+
var _a;
|
|
14
|
+
const bucket = {
|
|
15
|
+
key: 'foo',
|
|
16
|
+
state: 'none',
|
|
17
|
+
count: 5,
|
|
18
|
+
};
|
|
19
|
+
const el = await fixture(html `<facet-row .bucket=${bucket}></facet-row>`);
|
|
20
|
+
expect((_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.facet-row-container')).not.to.exist;
|
|
21
|
+
});
|
|
22
|
+
it('renders provided bucket as facet row', async () => {
|
|
23
|
+
var _a, _b, _c, _d, _e;
|
|
24
|
+
const bucket = {
|
|
25
|
+
key: 'foo',
|
|
26
|
+
state: 'none',
|
|
27
|
+
count: 5,
|
|
28
|
+
};
|
|
29
|
+
const el = await fixture(html `<facet-row .facetType=${'subject'} .bucket=${bucket}></facet-row>`);
|
|
30
|
+
expect((_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.facet-row-container')).to.exist;
|
|
31
|
+
expect((_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelectorAll('input[type="checkbox"]')).to.have.length(2);
|
|
32
|
+
expect((_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelectorAll('label')).to.have.length(2);
|
|
33
|
+
expect((_e = (_d = el.shadowRoot) === null || _d === void 0 ? void 0 : _d.textContent) === null || _e === void 0 ? void 0 : _e.trim()).to.match(/^foo\s*5$/);
|
|
34
|
+
});
|
|
35
|
+
it('renders locale-appropriate facet count', async () => {
|
|
36
|
+
var _a;
|
|
37
|
+
const bucket = {
|
|
38
|
+
key: 'foo',
|
|
39
|
+
state: 'none',
|
|
40
|
+
count: 54321,
|
|
41
|
+
};
|
|
42
|
+
const el = await fixture(html `<facet-row .facetType=${'subject'} .bucket=${bucket}></facet-row>`);
|
|
43
|
+
const facetCount = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.facet-count');
|
|
44
|
+
expect(facetCount === null || facetCount === void 0 ? void 0 : facetCount.textContent).to.equal('54,321');
|
|
45
|
+
});
|
|
46
|
+
it('renders selected facets with checked checkbox', async () => {
|
|
47
|
+
var _a, _b, _c;
|
|
48
|
+
const bucket = {
|
|
49
|
+
key: 'foo',
|
|
50
|
+
state: 'selected',
|
|
51
|
+
count: 5,
|
|
52
|
+
};
|
|
53
|
+
const el = await fixture(html `<facet-row .facetType=${'subject'} .bucket=${bucket}></facet-row>`);
|
|
54
|
+
// "Positive" checkbox is checked; "Negative" checkbox is not checked
|
|
55
|
+
const selectCheckbox = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.select-facet-checkbox');
|
|
56
|
+
const hideCheckbox = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.hide-facet-checkbox');
|
|
57
|
+
expect(selectCheckbox === null || selectCheckbox === void 0 ? void 0 : selectCheckbox.checked).to.be.true;
|
|
58
|
+
expect(hideCheckbox === null || hideCheckbox === void 0 ? void 0 : hideCheckbox.checked).to.be.false;
|
|
59
|
+
// Eye icon is not in its active state
|
|
60
|
+
expect((_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('.hide-facet-icon')).to.exist.and.satisfy((icon) => !icon.classList.contains('active'));
|
|
61
|
+
});
|
|
62
|
+
it('renders hidden facets with closed eye icon', async () => {
|
|
63
|
+
var _a, _b, _c;
|
|
64
|
+
const bucket = {
|
|
65
|
+
key: 'foo',
|
|
66
|
+
state: 'hidden',
|
|
67
|
+
count: 5,
|
|
68
|
+
};
|
|
69
|
+
const el = await fixture(html `<facet-row .facetType=${'subject'} .bucket=${bucket}></facet-row>`);
|
|
70
|
+
// "Positive" checkbox is not checked; "Negative" checkbox is checked
|
|
71
|
+
const selectCheckbox = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.select-facet-checkbox');
|
|
72
|
+
const hideCheckbox = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.hide-facet-checkbox');
|
|
73
|
+
expect(selectCheckbox === null || selectCheckbox === void 0 ? void 0 : selectCheckbox.checked).to.be.false;
|
|
74
|
+
expect(hideCheckbox === null || hideCheckbox === void 0 ? void 0 : hideCheckbox.checked).to.be.true;
|
|
75
|
+
// Eye icon is in its "active" state
|
|
76
|
+
expect((_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('.hide-facet-icon')).to.exist.and.satisfy((icon) => icon.classList.contains('active'));
|
|
77
|
+
});
|
|
78
|
+
it('renders collection facets as links', async () => {
|
|
79
|
+
var _a, _b;
|
|
80
|
+
const collectionNameCache = new MockCollectionNameCache();
|
|
81
|
+
const bucket = {
|
|
82
|
+
key: 'foo',
|
|
83
|
+
state: 'none',
|
|
84
|
+
count: 5,
|
|
85
|
+
};
|
|
86
|
+
const el = await fixture(html `<facet-row
|
|
87
|
+
.facetType=${'collection'}
|
|
88
|
+
.bucket=${bucket}
|
|
89
|
+
.collectionNameCache=${collectionNameCache}
|
|
90
|
+
></facet-row>`);
|
|
91
|
+
const collectionName = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('async-collection-name');
|
|
92
|
+
expect(collectionName === null || collectionName === void 0 ? void 0 : collectionName.parentElement).to.be.instanceOf(HTMLAnchorElement);
|
|
93
|
+
expect((_b = collectionName === null || collectionName === void 0 ? void 0 : collectionName.parentElement) === null || _b === void 0 ? void 0 : _b.getAttribute('href')).to.equal('/details/foo');
|
|
94
|
+
});
|
|
95
|
+
it('does not render non-collection facets as links', async () => {
|
|
96
|
+
var _a;
|
|
97
|
+
const collectionNameCache = new MockCollectionNameCache();
|
|
98
|
+
const bucket = {
|
|
99
|
+
key: 'foo',
|
|
100
|
+
state: 'none',
|
|
101
|
+
count: 5,
|
|
102
|
+
};
|
|
103
|
+
const el = await fixture(html `<facet-row
|
|
104
|
+
.facetType=${'subject'}
|
|
105
|
+
.bucket=${bucket}
|
|
106
|
+
.collectionNameCache=${collectionNameCache}
|
|
107
|
+
></facet-row>`);
|
|
108
|
+
expect((_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('a:link')).not.to.exist;
|
|
109
|
+
});
|
|
110
|
+
it('emits event when facet checkbox is clicked', async () => {
|
|
111
|
+
var _a, _b;
|
|
112
|
+
const facetClickSpy = sinon.spy();
|
|
113
|
+
const bucket = {
|
|
114
|
+
key: 'foo',
|
|
115
|
+
state: 'none',
|
|
116
|
+
count: 5,
|
|
117
|
+
};
|
|
118
|
+
const el = await fixture(html `<facet-row
|
|
119
|
+
.facetType=${'subject'}
|
|
120
|
+
.bucket=${bucket}
|
|
121
|
+
@facetClick=${facetClickSpy}
|
|
122
|
+
></facet-row>`);
|
|
123
|
+
const positiveFacetCheck = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.select-facet-checkbox');
|
|
124
|
+
expect(positiveFacetCheck).to.exist;
|
|
125
|
+
positiveFacetCheck.click();
|
|
126
|
+
expect(facetClickSpy.callCount).to.equal(1);
|
|
127
|
+
expect((_b = facetClickSpy.lastCall.args[0]) === null || _b === void 0 ? void 0 : _b.detail).to.deep.equal({
|
|
128
|
+
facetType: 'subject',
|
|
129
|
+
bucket,
|
|
130
|
+
negative: false,
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
it('emits event when facet checkbox is unchecked', async () => {
|
|
134
|
+
var _a, _b;
|
|
135
|
+
const facetClickSpy = sinon.spy();
|
|
136
|
+
const bucket = {
|
|
137
|
+
key: 'foo',
|
|
138
|
+
state: 'selected',
|
|
139
|
+
count: 5,
|
|
140
|
+
};
|
|
141
|
+
const el = await fixture(html `<facet-row
|
|
142
|
+
.facetType=${'subject'}
|
|
143
|
+
.bucket=${bucket}
|
|
144
|
+
@facetClick=${facetClickSpy}
|
|
145
|
+
></facet-row>`);
|
|
146
|
+
const positiveFacetCheck = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.select-facet-checkbox');
|
|
147
|
+
expect(positiveFacetCheck).to.exist;
|
|
148
|
+
positiveFacetCheck.click();
|
|
149
|
+
expect(facetClickSpy.callCount).to.equal(1);
|
|
150
|
+
expect((_b = facetClickSpy.lastCall.args[0]) === null || _b === void 0 ? void 0 : _b.detail).to.deep.equal({
|
|
151
|
+
facetType: 'subject',
|
|
152
|
+
bucket,
|
|
153
|
+
negative: false,
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
it('emits event when facet negative icon is clicked', async () => {
|
|
157
|
+
var _a, _b;
|
|
158
|
+
const facetClickSpy = sinon.spy();
|
|
159
|
+
const bucket = {
|
|
160
|
+
key: 'foo',
|
|
161
|
+
state: 'none',
|
|
162
|
+
count: 5,
|
|
163
|
+
};
|
|
164
|
+
const el = await fixture(html `<facet-row
|
|
165
|
+
.facetType=${'subject'}
|
|
166
|
+
.bucket=${bucket}
|
|
167
|
+
@facetClick=${facetClickSpy}
|
|
168
|
+
></facet-row>`);
|
|
169
|
+
const negativeFacetIcon = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.hide-facet-icon');
|
|
170
|
+
expect(negativeFacetIcon).to.exist;
|
|
171
|
+
negativeFacetIcon.click();
|
|
172
|
+
expect(facetClickSpy.callCount).to.equal(1);
|
|
173
|
+
expect((_b = facetClickSpy.lastCall.args[0]) === null || _b === void 0 ? void 0 : _b.detail).to.deep.equal({
|
|
174
|
+
facetType: 'subject',
|
|
175
|
+
bucket,
|
|
176
|
+
negative: true,
|
|
177
|
+
});
|
|
178
|
+
});
|
|
179
|
+
it('emits event when facet negative icon is unchecked', async () => {
|
|
180
|
+
var _a, _b;
|
|
181
|
+
const facetClickSpy = sinon.spy();
|
|
182
|
+
const bucket = {
|
|
183
|
+
key: 'foo',
|
|
184
|
+
state: 'hidden',
|
|
185
|
+
count: 5,
|
|
186
|
+
};
|
|
187
|
+
const el = await fixture(html `<facet-row
|
|
188
|
+
.facetType=${'subject'}
|
|
189
|
+
.bucket=${bucket}
|
|
190
|
+
@facetClick=${facetClickSpy}
|
|
191
|
+
></facet-row>`);
|
|
192
|
+
const negativeFacetIcon = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.hide-facet-icon');
|
|
193
|
+
expect(negativeFacetIcon).to.exist;
|
|
194
|
+
negativeFacetIcon.click();
|
|
195
|
+
expect(facetClickSpy.callCount).to.equal(1);
|
|
196
|
+
expect((_b = facetClickSpy.lastCall.args[0]) === null || _b === void 0 ? void 0 : _b.detail).to.deep.equal({
|
|
197
|
+
facetType: 'subject',
|
|
198
|
+
bucket,
|
|
199
|
+
negative: true,
|
|
200
|
+
});
|
|
201
|
+
});
|
|
202
|
+
it('selects/deselects facet when label is clicked', async () => {
|
|
203
|
+
var _a, _b, _c;
|
|
204
|
+
const facetClickSpy = sinon.spy();
|
|
205
|
+
const bucket = {
|
|
206
|
+
key: 'foo',
|
|
207
|
+
state: 'none',
|
|
208
|
+
count: 5,
|
|
209
|
+
};
|
|
210
|
+
const el = await fixture(html `<facet-row
|
|
211
|
+
.facetType=${'subject'}
|
|
212
|
+
.bucket=${bucket}
|
|
213
|
+
@facetClick=${facetClickSpy}
|
|
214
|
+
></facet-row>`);
|
|
215
|
+
const facetLabel = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.facet-info-display');
|
|
216
|
+
expect(facetLabel).to.exist;
|
|
217
|
+
// Select facet by clicking label
|
|
218
|
+
facetLabel.click();
|
|
219
|
+
expect(facetClickSpy.callCount).to.equal(1);
|
|
220
|
+
expect((_b = facetClickSpy.lastCall.args[0]) === null || _b === void 0 ? void 0 : _b.detail).to.deep.equal({
|
|
221
|
+
facetType: 'subject',
|
|
222
|
+
bucket,
|
|
223
|
+
negative: false,
|
|
224
|
+
});
|
|
225
|
+
// Deselect facet by clicking label
|
|
226
|
+
facetLabel.click();
|
|
227
|
+
expect(facetClickSpy.callCount).to.equal(2);
|
|
228
|
+
expect((_c = facetClickSpy.lastCall.args[0]) === null || _c === void 0 ? void 0 : _c.detail).to.deep.equal({
|
|
229
|
+
facetType: 'subject',
|
|
230
|
+
bucket,
|
|
231
|
+
negative: false,
|
|
232
|
+
});
|
|
233
|
+
});
|
|
234
|
+
});
|
|
235
|
+
//# sourceMappingURL=facet-row.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"facet-row.test.js","sourceRoot":"","sources":["../../../test/collection-facets/facet-row.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect, fixture } from '@open-wc/testing';\nimport sinon from 'sinon';\nimport { html } from 'lit';\nimport type { FacetRow } from '../../src/collection-facets/facet-row';\nimport '../../src/collection-facets/facet-row';\nimport type { FacetState } from '../../src/models';\nimport { MockCollectionNameCache } from '../mocks/mock-collection-name-cache';\n\ndescribe('Facet row', () => {\n it('renders nothing if no bucket provided', async () => {\n const el = await fixture<FacetRow>(\n html`<facet-row .facetType=${'subject'}></facet-row>`\n );\n\n expect(el.shadowRoot?.querySelector('.facet-row-container')).not.to.exist;\n });\n\n it('renders nothing if no facet type provided', async () => {\n const bucket = {\n key: 'foo',\n state: 'none' as FacetState,\n count: 5,\n };\n\n const el = await fixture<FacetRow>(\n html`<facet-row .bucket=${bucket}></facet-row>`\n );\n\n expect(el.shadowRoot?.querySelector('.facet-row-container')).not.to.exist;\n });\n\n it('renders provided bucket as facet row', async () => {\n const bucket = {\n key: 'foo',\n state: 'none' as FacetState,\n count: 5,\n };\n\n const el = await fixture<FacetRow>(\n html`<facet-row .facetType=${'subject'} .bucket=${bucket}></facet-row>`\n );\n\n expect(el.shadowRoot?.querySelector('.facet-row-container')).to.exist;\n expect(\n el.shadowRoot?.querySelectorAll('input[type=\"checkbox\"]')\n ).to.have.length(2);\n expect(el.shadowRoot?.querySelectorAll('label')).to.have.length(2);\n\n expect(el.shadowRoot?.textContent?.trim()).to.match(/^foo\\s*5$/);\n });\n\n it('renders locale-appropriate facet count', async () => {\n const bucket = {\n key: 'foo',\n state: 'none' as FacetState,\n count: 54321,\n };\n\n const el = await fixture<FacetRow>(\n html`<facet-row .facetType=${'subject'} .bucket=${bucket}></facet-row>`\n );\n\n const facetCount = el.shadowRoot?.querySelector('.facet-count');\n expect(facetCount?.textContent).to.equal('54,321');\n });\n\n it('renders selected facets with checked checkbox', async () => {\n const bucket = {\n key: 'foo',\n state: 'selected' as FacetState,\n count: 5,\n };\n\n const el = await fixture<FacetRow>(\n html`<facet-row .facetType=${'subject'} .bucket=${bucket}></facet-row>`\n );\n\n // \"Positive\" checkbox is checked; \"Negative\" checkbox is not checked\n const selectCheckbox = el.shadowRoot?.querySelector(\n '.select-facet-checkbox'\n ) as HTMLInputElement;\n const hideCheckbox = el.shadowRoot?.querySelector(\n '.hide-facet-checkbox'\n ) as HTMLInputElement;\n expect(selectCheckbox?.checked).to.be.true;\n expect(hideCheckbox?.checked).to.be.false;\n\n // Eye icon is not in its active state\n expect(\n el.shadowRoot?.querySelector('.hide-facet-icon')\n ).to.exist.and.satisfy(\n (icon: HTMLElement) => !icon.classList.contains('active')\n );\n });\n\n it('renders hidden facets with closed eye icon', async () => {\n const bucket = {\n key: 'foo',\n state: 'hidden' as FacetState,\n count: 5,\n };\n\n const el = await fixture<FacetRow>(\n html`<facet-row .facetType=${'subject'} .bucket=${bucket}></facet-row>`\n );\n\n // \"Positive\" checkbox is not checked; \"Negative\" checkbox is checked\n const selectCheckbox = el.shadowRoot?.querySelector(\n '.select-facet-checkbox'\n ) as HTMLInputElement;\n const hideCheckbox = el.shadowRoot?.querySelector(\n '.hide-facet-checkbox'\n ) as HTMLInputElement;\n expect(selectCheckbox?.checked).to.be.false;\n expect(hideCheckbox?.checked).to.be.true;\n\n // Eye icon is in its \"active\" state\n expect(\n el.shadowRoot?.querySelector('.hide-facet-icon')\n ).to.exist.and.satisfy((icon: HTMLElement) =>\n icon.classList.contains('active')\n );\n });\n\n it('renders collection facets as links', async () => {\n const collectionNameCache = new MockCollectionNameCache();\n const bucket = {\n key: 'foo',\n state: 'none' as FacetState,\n count: 5,\n };\n\n const el = await fixture<FacetRow>(\n html`<facet-row\n .facetType=${'collection'}\n .bucket=${bucket}\n .collectionNameCache=${collectionNameCache}\n ></facet-row>`\n );\n\n const collectionName = el.shadowRoot?.querySelector(\n 'async-collection-name'\n );\n expect(collectionName?.parentElement).to.be.instanceOf(HTMLAnchorElement);\n expect(collectionName?.parentElement?.getAttribute('href')).to.equal(\n '/details/foo'\n );\n });\n\n it('does not render non-collection facets as links', async () => {\n const collectionNameCache = new MockCollectionNameCache();\n const bucket = {\n key: 'foo',\n state: 'none' as FacetState,\n count: 5,\n };\n\n const el = await fixture<FacetRow>(\n html`<facet-row\n .facetType=${'subject'}\n .bucket=${bucket}\n .collectionNameCache=${collectionNameCache}\n ></facet-row>`\n );\n\n expect(el.shadowRoot?.querySelector('a:link')).not.to.exist;\n });\n\n it('emits event when facet checkbox is clicked', async () => {\n const facetClickSpy = sinon.spy();\n const bucket = {\n key: 'foo',\n state: 'none' as FacetState,\n count: 5,\n };\n\n const el = await fixture<FacetRow>(\n html`<facet-row\n .facetType=${'subject'}\n .bucket=${bucket}\n @facetClick=${facetClickSpy}\n ></facet-row>`\n );\n\n const positiveFacetCheck = el.shadowRoot?.querySelector(\n '.select-facet-checkbox'\n ) as HTMLInputElement;\n expect(positiveFacetCheck).to.exist;\n positiveFacetCheck.click();\n\n expect(facetClickSpy.callCount).to.equal(1);\n expect(facetClickSpy.lastCall.args[0]?.detail).to.deep.equal({\n facetType: 'subject',\n bucket,\n negative: false,\n });\n });\n\n it('emits event when facet checkbox is unchecked', async () => {\n const facetClickSpy = sinon.spy();\n const bucket = {\n key: 'foo',\n state: 'selected' as FacetState,\n count: 5,\n };\n\n const el = await fixture<FacetRow>(\n html`<facet-row\n .facetType=${'subject'}\n .bucket=${bucket}\n @facetClick=${facetClickSpy}\n ></facet-row>`\n );\n\n const positiveFacetCheck = el.shadowRoot?.querySelector(\n '.select-facet-checkbox'\n ) as HTMLInputElement;\n expect(positiveFacetCheck).to.exist;\n positiveFacetCheck.click();\n\n expect(facetClickSpy.callCount).to.equal(1);\n expect(facetClickSpy.lastCall.args[0]?.detail).to.deep.equal({\n facetType: 'subject',\n bucket,\n negative: false,\n });\n });\n\n it('emits event when facet negative icon is clicked', async () => {\n const facetClickSpy = sinon.spy();\n const bucket = {\n key: 'foo',\n state: 'none' as FacetState,\n count: 5,\n };\n\n const el = await fixture<FacetRow>(\n html`<facet-row\n .facetType=${'subject'}\n .bucket=${bucket}\n @facetClick=${facetClickSpy}\n ></facet-row>`\n );\n\n const negativeFacetIcon = el.shadowRoot?.querySelector(\n '.hide-facet-icon'\n ) as HTMLLabelElement;\n expect(negativeFacetIcon).to.exist;\n negativeFacetIcon.click();\n\n expect(facetClickSpy.callCount).to.equal(1);\n expect(facetClickSpy.lastCall.args[0]?.detail).to.deep.equal({\n facetType: 'subject',\n bucket,\n negative: true,\n });\n });\n\n it('emits event when facet negative icon is unchecked', async () => {\n const facetClickSpy = sinon.spy();\n const bucket = {\n key: 'foo',\n state: 'hidden' as FacetState,\n count: 5,\n };\n\n const el = await fixture<FacetRow>(\n html`<facet-row\n .facetType=${'subject'}\n .bucket=${bucket}\n @facetClick=${facetClickSpy}\n ></facet-row>`\n );\n\n const negativeFacetIcon = el.shadowRoot?.querySelector(\n '.hide-facet-icon'\n ) as HTMLLabelElement;\n expect(negativeFacetIcon).to.exist;\n negativeFacetIcon.click();\n\n expect(facetClickSpy.callCount).to.equal(1);\n expect(facetClickSpy.lastCall.args[0]?.detail).to.deep.equal({\n facetType: 'subject',\n bucket,\n negative: true,\n });\n });\n\n it('selects/deselects facet when label is clicked', async () => {\n const facetClickSpy = sinon.spy();\n const bucket = {\n key: 'foo',\n state: 'none' as FacetState,\n count: 5,\n };\n\n const el = await fixture<FacetRow>(\n html`<facet-row\n .facetType=${'subject'}\n .bucket=${bucket}\n @facetClick=${facetClickSpy}\n ></facet-row>`\n );\n\n const facetLabel = el.shadowRoot?.querySelector(\n '.facet-info-display'\n ) as HTMLLabelElement;\n expect(facetLabel).to.exist;\n\n // Select facet by clicking label\n facetLabel.click();\n expect(facetClickSpy.callCount).to.equal(1);\n expect(facetClickSpy.lastCall.args[0]?.detail).to.deep.equal({\n facetType: 'subject',\n bucket,\n negative: false,\n });\n\n // Deselect facet by clicking label\n facetLabel.click();\n expect(facetClickSpy.callCount).to.equal(2);\n expect(facetClickSpy.lastCall.args[0]?.detail).to.deep.equal({\n facetType: 'subject',\n bucket,\n negative: false,\n });\n });\n});\n"]}
|
|
@@ -2,7 +2,6 @@ import { expect, fixture } from '@open-wc/testing';
|
|
|
2
2
|
import sinon from 'sinon';
|
|
3
3
|
import { html } from 'lit';
|
|
4
4
|
import '../../src/collection-facets/facets-template';
|
|
5
|
-
import { getDefaultSelectedFacets } from '../../src/models';
|
|
6
5
|
const facetGroup = {
|
|
7
6
|
title: 'Media Type',
|
|
8
7
|
key: 'mediatype',
|
|
@@ -19,7 +18,7 @@ describe('Render facets', () => {
|
|
|
19
18
|
var _a;
|
|
20
19
|
const el = await fixture(html `<facets-template .facetGroup=${facetGroup}></facets-template>`);
|
|
21
20
|
await el.updateComplete;
|
|
22
|
-
expect((_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('
|
|
21
|
+
expect((_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('facet-row')).to.exist;
|
|
23
22
|
});
|
|
24
23
|
it('facets render on page', async () => {
|
|
25
24
|
var _a;
|
|
@@ -27,7 +26,6 @@ describe('Render facets', () => {
|
|
|
27
26
|
.facetGroup=${facetGroup}
|
|
28
27
|
.renderOn=${'page'}
|
|
29
28
|
></facets-template>`);
|
|
30
|
-
await el.updateComplete;
|
|
31
29
|
expect((_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.facets-on-page')).to.exist;
|
|
32
30
|
});
|
|
33
31
|
it('facets render on modal', async () => {
|
|
@@ -36,120 +34,91 @@ describe('Render facets', () => {
|
|
|
36
34
|
.facetGroup=${facetGroup}
|
|
37
35
|
.renderOn=${'modal'}
|
|
38
36
|
></facets-template>`);
|
|
39
|
-
await el.updateComplete;
|
|
40
37
|
expect((_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.facets-on-modal')).to.exist;
|
|
41
38
|
});
|
|
42
|
-
it('
|
|
43
|
-
var _a, _b, _c, _d;
|
|
44
|
-
const el = await fixture(html `<facets-template .facetGroup=${facetGroup}></facets-template>`);
|
|
45
|
-
await el.updateComplete;
|
|
46
|
-
const facetInfo = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.facet-info-display');
|
|
47
|
-
expect((_b = facetInfo === null || facetInfo === void 0 ? void 0 : facetInfo.querySelector('.facet-title')) === null || _b === void 0 ? void 0 : _b.textContent).to.equal('audio');
|
|
48
|
-
expect((_d = (_c = facetInfo === null || facetInfo === void 0 ? void 0 : facetInfo.querySelector('.facet-count')) === null || _c === void 0 ? void 0 : _c.textContent) === null || _d === void 0 ? void 0 : _d.trim()).to.equal('1,001');
|
|
49
|
-
});
|
|
50
|
-
it('find the hidden facet item', async () => {
|
|
39
|
+
it('applies correct bucket values to facet row', async () => {
|
|
51
40
|
var _a;
|
|
52
|
-
const
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
.
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
expect(hiddenFacet === null || hiddenFacet === void 0 ? void 0 : hiddenFacet.getAttribute('title')).equal('Unhide mediatype: texts');
|
|
41
|
+
const el = await fixture(html `<facets-template .facetGroup=${facetGroup}></facets-template>`);
|
|
42
|
+
const facetRows = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelectorAll('facet-row');
|
|
43
|
+
expect(facetRows === null || facetRows === void 0 ? void 0 : facetRows.length).to.equal(facetGroup.buckets.length);
|
|
44
|
+
facetRows === null || facetRows === void 0 ? void 0 : facetRows.forEach((elmt, i) => {
|
|
45
|
+
const facetRow = elmt;
|
|
46
|
+
expect(facetRow).to.exist;
|
|
47
|
+
expect(facetRow.bucket).to.equal(facetGroup.buckets[i]);
|
|
48
|
+
expect(facetRow.facetType).to.equal(facetGroup.key);
|
|
49
|
+
});
|
|
62
50
|
});
|
|
63
|
-
it('
|
|
64
|
-
var _a;
|
|
65
|
-
const
|
|
66
|
-
|
|
51
|
+
it('emits facet click and change events when a facet is selected/deselected', async () => {
|
|
52
|
+
var _a, _b, _c, _d;
|
|
53
|
+
const facetClickSpy = sinon.spy();
|
|
54
|
+
const facetChangeSpy = sinon.spy();
|
|
67
55
|
const el = await fixture(html `<facets-template
|
|
68
56
|
.facetGroup=${facetGroup}
|
|
69
|
-
|
|
57
|
+
@facetClick=${facetClickSpy}
|
|
58
|
+
@selectedFacetsChanged=${facetChangeSpy}
|
|
70
59
|
></facets-template>`);
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
expect(
|
|
60
|
+
const facetRow = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('facet-row');
|
|
61
|
+
expect(facetRow).to.exist;
|
|
62
|
+
const facetSelectCheck = (_b = facetRow.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.select-facet-checkbox');
|
|
63
|
+
expect(facetSelectCheck).to.exist;
|
|
64
|
+
facetSelectCheck.click();
|
|
65
|
+
expect(facetClickSpy.callCount).to.equal(1);
|
|
66
|
+
expect(facetChangeSpy.callCount).to.equal(1);
|
|
67
|
+
expect((_c = facetRow.bucket) === null || _c === void 0 ? void 0 : _c.state).to.equal('selected');
|
|
68
|
+
facetSelectCheck.click();
|
|
69
|
+
expect(facetClickSpy.callCount).to.equal(2);
|
|
70
|
+
expect(facetChangeSpy.callCount).to.equal(2);
|
|
71
|
+
expect((_d = facetRow.bucket) === null || _d === void 0 ? void 0 : _d.state).to.equal('none');
|
|
75
72
|
});
|
|
76
|
-
it('emits
|
|
77
|
-
var _a, _b, _c, _d
|
|
73
|
+
it('emits facet click and change events when a facet is negated/un-negated', async () => {
|
|
74
|
+
var _a, _b, _c, _d;
|
|
78
75
|
const facetClickSpy = sinon.spy();
|
|
79
|
-
const
|
|
80
|
-
title: 'Media Type',
|
|
81
|
-
key: 'mediatype',
|
|
82
|
-
buckets: [
|
|
83
|
-
{ displayText: 'audio', key: 'audio', count: 42, state: 'none' },
|
|
84
|
-
],
|
|
85
|
-
};
|
|
86
|
-
const selectedFacets = getDefaultSelectedFacets();
|
|
76
|
+
const facetChangeSpy = sinon.spy();
|
|
87
77
|
const el = await fixture(html `<facets-template
|
|
88
|
-
.facetGroup=${
|
|
89
|
-
.selectedFacets=${selectedFacets}
|
|
78
|
+
.facetGroup=${facetGroup}
|
|
90
79
|
@facetClick=${facetClickSpy}
|
|
80
|
+
@selectedFacetsChanged=${facetChangeSpy}
|
|
91
81
|
></facets-template>`);
|
|
92
|
-
const
|
|
93
|
-
expect(
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
82
|
+
const facetRow = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('facet-row');
|
|
83
|
+
expect(facetRow).to.exist;
|
|
84
|
+
const facetNegateCheck = (_b = facetRow.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.hide-facet-checkbox');
|
|
85
|
+
expect(facetNegateCheck).to.exist;
|
|
86
|
+
facetNegateCheck.click();
|
|
97
87
|
expect(facetClickSpy.callCount).to.equal(1);
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
expect((_b = selectEvent === null || selectEvent === void 0 ? void 0 : selectEvent.detail) === null || _b === void 0 ? void 0 : _b.key).to.equal('mediatype');
|
|
102
|
-
expect((_c = selectEvent === null || selectEvent === void 0 ? void 0 : selectEvent.detail) === null || _c === void 0 ? void 0 : _c.state).to.equal('selected');
|
|
103
|
-
expect((_d = selectEvent === null || selectEvent === void 0 ? void 0 : selectEvent.detail) === null || _d === void 0 ? void 0 : _d.negative).to.be.false;
|
|
104
|
-
// Unselect it
|
|
105
|
-
checkbox.click();
|
|
106
|
-
await el.updateComplete;
|
|
88
|
+
expect(facetChangeSpy.callCount).to.equal(1);
|
|
89
|
+
expect((_c = facetRow.bucket) === null || _c === void 0 ? void 0 : _c.state).to.equal('hidden');
|
|
90
|
+
facetNegateCheck.click();
|
|
107
91
|
expect(facetClickSpy.callCount).to.equal(2);
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
expect(unselectEvent).to.exist;
|
|
111
|
-
expect((_e = unselectEvent === null || unselectEvent === void 0 ? void 0 : unselectEvent.detail) === null || _e === void 0 ? void 0 : _e.key).to.equal('mediatype');
|
|
112
|
-
expect((_f = unselectEvent === null || unselectEvent === void 0 ? void 0 : unselectEvent.detail) === null || _f === void 0 ? void 0 : _f.state).to.equal('none');
|
|
113
|
-
expect((_g = unselectEvent === null || unselectEvent === void 0 ? void 0 : unselectEvent.detail) === null || _g === void 0 ? void 0 : _g.negative).to.be.false;
|
|
92
|
+
expect(facetChangeSpy.callCount).to.equal(2);
|
|
93
|
+
expect((_d = facetRow.bucket) === null || _d === void 0 ? void 0 : _d.state).to.equal('none');
|
|
114
94
|
});
|
|
115
|
-
it('emits
|
|
116
|
-
var _a, _b, _c, _d
|
|
95
|
+
it('emits facet click and change events when a pre-selected facet is deselected', async () => {
|
|
96
|
+
var _a, _b, _c, _d;
|
|
117
97
|
const facetClickSpy = sinon.spy();
|
|
118
|
-
const
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
buckets:
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
};
|
|
125
|
-
const selectedFacets = getDefaultSelectedFacets();
|
|
98
|
+
const facetChangeSpy = sinon.spy();
|
|
99
|
+
const facetGroupWithSelection = { ...facetGroup };
|
|
100
|
+
facetGroupWithSelection.buckets = [
|
|
101
|
+
{ ...facetGroup.buckets[0], state: 'selected' },
|
|
102
|
+
...facetGroup.buckets.slice(1),
|
|
103
|
+
];
|
|
126
104
|
const el = await fixture(html `<facets-template
|
|
127
|
-
.facetGroup=${
|
|
128
|
-
.selectedFacets=${selectedFacets}
|
|
105
|
+
.facetGroup=${facetGroupWithSelection}
|
|
129
106
|
@facetClick=${facetClickSpy}
|
|
107
|
+
@selectedFacetsChanged=${facetChangeSpy}
|
|
130
108
|
></facets-template>`);
|
|
131
|
-
const
|
|
132
|
-
expect(
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
109
|
+
const facetRow = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('facet-row');
|
|
110
|
+
expect(facetRow).to.exist;
|
|
111
|
+
const facetSelectCheck = (_b = facetRow.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.select-facet-checkbox');
|
|
112
|
+
expect(facetSelectCheck).to.exist;
|
|
113
|
+
expect(facetSelectCheck.checked).to.be.true;
|
|
114
|
+
facetSelectCheck.click();
|
|
136
115
|
expect(facetClickSpy.callCount).to.equal(1);
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
expect((_b = selectEvent === null || selectEvent === void 0 ? void 0 : selectEvent.detail) === null || _b === void 0 ? void 0 : _b.key).to.equal('mediatype');
|
|
141
|
-
expect((_c = selectEvent === null || selectEvent === void 0 ? void 0 : selectEvent.detail) === null || _c === void 0 ? void 0 : _c.state).to.equal('hidden');
|
|
142
|
-
expect((_d = selectEvent === null || selectEvent === void 0 ? void 0 : selectEvent.detail) === null || _d === void 0 ? void 0 : _d.negative).to.be.true;
|
|
143
|
-
// Unselect it
|
|
144
|
-
checkbox.click();
|
|
145
|
-
await el.updateComplete;
|
|
116
|
+
expect(facetChangeSpy.callCount).to.equal(1);
|
|
117
|
+
expect((_c = facetRow.bucket) === null || _c === void 0 ? void 0 : _c.state).to.equal('none');
|
|
118
|
+
facetSelectCheck.click();
|
|
146
119
|
expect(facetClickSpy.callCount).to.equal(2);
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
expect(unselectEvent).to.exist;
|
|
150
|
-
expect((_e = unselectEvent === null || unselectEvent === void 0 ? void 0 : unselectEvent.detail) === null || _e === void 0 ? void 0 : _e.key).to.equal('mediatype');
|
|
151
|
-
expect((_f = unselectEvent === null || unselectEvent === void 0 ? void 0 : unselectEvent.detail) === null || _f === void 0 ? void 0 : _f.state).to.equal('none');
|
|
152
|
-
expect((_g = unselectEvent === null || unselectEvent === void 0 ? void 0 : unselectEvent.detail) === null || _g === void 0 ? void 0 : _g.negative).to.be.true;
|
|
120
|
+
expect(facetChangeSpy.callCount).to.equal(2);
|
|
121
|
+
expect((_d = facetRow.bucket) === null || _d === void 0 ? void 0 : _d.state).to.equal('selected');
|
|
153
122
|
});
|
|
154
123
|
});
|
|
155
124
|
//# sourceMappingURL=facets-template.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"facets-template.test.js","sourceRoot":"","sources":["../../../test/collection-facets/facets-template.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect, fixture } from '@open-wc/testing';\nimport sinon from 'sinon';\nimport { html } from 'lit';\nimport type { FacetsTemplate } from '../../src/collection-facets/facets-template';\nimport '../../src/collection-facets/facets-template';\nimport { getDefaultSelectedFacets, FacetEventDetails } from '../../src/models';\n\nconst facetGroup = {\n title: 'Media Type',\n key: 'mediatype',\n buckets: [\n { displayText: 'audio', key: 'audio', count: 1001, state: 'none' },\n { displayText: 'movies', key: 'movies', count: 901, state: 'none' },\n { displayText: 'texts', key: 'texts', count: 2101, state: 'none' },\n { displayText: 'data', key: 'data', count: 230, state: 'none' },\n { displayText: 'web', key: 'web', count: 453, state: 'none' },\n ],\n};\n\ndescribe('Render facets', () => {\n it('should render more facets template', async () => {\n const el = await fixture<FacetsTemplate>(\n html`<facets-template .facetGroup=${facetGroup}></facets-template>`\n );\n await el.updateComplete;\n\n expect(el.shadowRoot?.querySelector('.facet-row')).to.exist;\n });\n\n it('facets render on page', async () => {\n const el = await fixture<FacetsTemplate>(\n html`<facets-template\n .facetGroup=${facetGroup}\n .renderOn=${'page'}\n ></facets-template>`\n );\n await el.updateComplete;\n\n expect(el.shadowRoot?.querySelector('.facets-on-page')).to.exist;\n });\n\n it('facets render on modal', async () => {\n const el = await fixture<FacetsTemplate>(\n html`<facets-template\n .facetGroup=${facetGroup}\n .renderOn=${'modal'}\n ></facets-template>`\n );\n await el.updateComplete;\n\n expect(el.shadowRoot?.querySelector('.facets-on-modal')).to.exist;\n });\n\n it('find facet-title and facet-count for particular facet group', async () => {\n const el = await fixture<FacetsTemplate>(\n html`<facets-template .facetGroup=${facetGroup}></facets-template>`\n );\n await el.updateComplete;\n\n const facetInfo = el.shadowRoot?.querySelector('.facet-info-display');\n expect(facetInfo?.querySelector('.facet-title')?.textContent).to.equal(\n 'audio'\n );\n expect(\n facetInfo?.querySelector('.facet-count')?.textContent?.trim()\n ).to.equal('1,001');\n });\n\n it('find the hidden facet item', async () => {\n const selectedFacets = { ...facetGroup };\n selectedFacets.buckets[2].state = 'hidden'; // hide 'texts' mediatype\n\n const el = await fixture<FacetsTemplate>(\n html`<facets-template\n .facetGroup=${facetGroup}\n .selectedFacets=${selectedFacets}\n ></facets-template>`\n );\n await el.updateComplete;\n\n const hiddenFacet = el.shadowRoot?.querySelectorAll('.hide-facet-icon')[0];\n\n // check title attribute for 'texts' mediatype\n expect(hiddenFacet?.getAttribute('title')).equal('Unhide mediatype: texts');\n });\n\n it('find the selected facet item', async () => {\n const selectedFacets = { ...facetGroup };\n selectedFacets.buckets[1].state = 'selected'; // select 'movies' mediatype\n\n const el = await fixture<FacetsTemplate>(\n html`<facets-template\n .facetGroup=${facetGroup}\n .selectedFacets=${selectedFacets}\n ></facets-template>`\n );\n await el.updateComplete;\n\n const selectedFacet =\n el.shadowRoot?.querySelectorAll('.hide-facet-icon')[0];\n\n // check title attribute for 'movies' mediatype\n expect(selectedFacet?.getAttribute('title')).equal(\n 'Hide mediatype: movies'\n );\n });\n\n it('emits facetClick events for normal facets', async () => {\n const facetClickSpy = sinon.spy();\n const mediatypeGroup = {\n title: 'Media Type',\n key: 'mediatype',\n buckets: [\n { displayText: 'audio', key: 'audio', count: 42, state: 'none' },\n ],\n };\n const selectedFacets = getDefaultSelectedFacets();\n const el = await fixture<FacetsTemplate>(\n html`<facets-template\n .facetGroup=${mediatypeGroup}\n .selectedFacets=${selectedFacets}\n @facetClick=${facetClickSpy}\n ></facets-template>`\n );\n\n const checkbox = el.shadowRoot?.querySelector(\n '.select-facet-checkbox'\n ) as HTMLInputElement;\n expect(checkbox).to.exist;\n\n // Select it\n checkbox.click();\n await el.updateComplete;\n expect(facetClickSpy.callCount).to.equal(1);\n\n const selectEvent = facetClickSpy\n .args[0][0] as CustomEvent<FacetEventDetails>;\n expect(selectEvent).to.exist;\n expect(selectEvent?.detail?.key).to.equal('mediatype');\n expect(selectEvent?.detail?.state).to.equal('selected');\n expect(selectEvent?.detail?.negative).to.be.false;\n\n // Unselect it\n checkbox.click();\n await el.updateComplete;\n expect(facetClickSpy.callCount).to.equal(2);\n\n const unselectEvent = facetClickSpy\n .args[1][0] as CustomEvent<FacetEventDetails>;\n expect(unselectEvent).to.exist;\n expect(unselectEvent?.detail?.key).to.equal('mediatype');\n expect(unselectEvent?.detail?.state).to.equal('none');\n expect(unselectEvent?.detail?.negative).to.be.false;\n });\n\n it('emits facetClick events for negative facets', async () => {\n const facetClickSpy = sinon.spy();\n const mediatypeGroup = {\n title: 'Media Type',\n key: 'mediatype',\n buckets: [\n { displayText: 'audio', key: 'audio', count: 42, state: 'none' },\n ],\n };\n const selectedFacets = getDefaultSelectedFacets();\n const el = await fixture<FacetsTemplate>(\n html`<facets-template\n .facetGroup=${mediatypeGroup}\n .selectedFacets=${selectedFacets}\n @facetClick=${facetClickSpy}\n ></facets-template>`\n );\n\n const checkbox = el.shadowRoot?.querySelector(\n '.hide-facet-checkbox'\n ) as HTMLInputElement;\n expect(checkbox).to.exist;\n\n // Select it\n checkbox.click();\n await el.updateComplete;\n expect(facetClickSpy.callCount).to.equal(1);\n\n const selectEvent = facetClickSpy\n .args[0][0] as CustomEvent<FacetEventDetails>;\n expect(selectEvent).to.exist;\n expect(selectEvent?.detail?.key).to.equal('mediatype');\n expect(selectEvent?.detail?.state).to.equal('hidden');\n expect(selectEvent?.detail?.negative).to.be.true;\n\n // Unselect it\n checkbox.click();\n await el.updateComplete;\n expect(facetClickSpy.callCount).to.equal(2);\n\n const unselectEvent = facetClickSpy\n .args[1][0] as CustomEvent<FacetEventDetails>;\n expect(unselectEvent).to.exist;\n expect(unselectEvent?.detail?.key).to.equal('mediatype');\n expect(unselectEvent?.detail?.state).to.equal('none');\n expect(unselectEvent?.detail?.negative).to.be.true;\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"facets-template.test.js","sourceRoot":"","sources":["../../../test/collection-facets/facets-template.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect, fixture } from '@open-wc/testing';\nimport sinon from 'sinon';\nimport { html } from 'lit';\nimport type { FacetsTemplate } from '../../src/collection-facets/facets-template';\nimport '../../src/collection-facets/facets-template';\nimport type { FacetRow } from '../../src/collection-facets/facet-row';\nimport type { FacetGroup } from '../../src/models';\n\nconst facetGroup: FacetGroup = {\n title: 'Media Type',\n key: 'mediatype',\n buckets: [\n { displayText: 'audio', key: 'audio', count: 1001, state: 'none' },\n { displayText: 'movies', key: 'movies', count: 901, state: 'none' },\n { displayText: 'texts', key: 'texts', count: 2101, state: 'none' },\n { displayText: 'data', key: 'data', count: 230, state: 'none' },\n { displayText: 'web', key: 'web', count: 453, state: 'none' },\n ],\n};\n\ndescribe('Render facets', () => {\n it('should render more facets template', async () => {\n const el = await fixture<FacetsTemplate>(\n html`<facets-template .facetGroup=${facetGroup}></facets-template>`\n );\n await el.updateComplete;\n\n expect(el.shadowRoot?.querySelector('facet-row')).to.exist;\n });\n\n it('facets render on page', async () => {\n const el = await fixture<FacetsTemplate>(\n html`<facets-template\n .facetGroup=${facetGroup}\n .renderOn=${'page'}\n ></facets-template>`\n );\n\n expect(el.shadowRoot?.querySelector('.facets-on-page')).to.exist;\n });\n\n it('facets render on modal', async () => {\n const el = await fixture<FacetsTemplate>(\n html`<facets-template\n .facetGroup=${facetGroup}\n .renderOn=${'modal'}\n ></facets-template>`\n );\n\n expect(el.shadowRoot?.querySelector('.facets-on-modal')).to.exist;\n });\n\n it('applies correct bucket values to facet row', async () => {\n const el = await fixture<FacetsTemplate>(\n html`<facets-template .facetGroup=${facetGroup}></facets-template>`\n );\n\n const facetRows = el.shadowRoot?.querySelectorAll('facet-row');\n expect(facetRows?.length).to.equal(facetGroup.buckets.length);\n\n facetRows?.forEach((elmt, i) => {\n const facetRow = elmt as FacetRow;\n expect(facetRow).to.exist;\n expect(facetRow.bucket).to.equal(facetGroup.buckets[i]);\n expect(facetRow.facetType).to.equal(facetGroup.key);\n });\n });\n\n it('emits facet click and change events when a facet is selected/deselected', async () => {\n const facetClickSpy = sinon.spy();\n const facetChangeSpy = sinon.spy();\n const el = await fixture<FacetsTemplate>(\n html`<facets-template\n .facetGroup=${facetGroup}\n @facetClick=${facetClickSpy}\n @selectedFacetsChanged=${facetChangeSpy}\n ></facets-template>`\n );\n\n const facetRow = el.shadowRoot?.querySelector('facet-row') as FacetRow;\n expect(facetRow).to.exist;\n\n const facetSelectCheck = facetRow.shadowRoot?.querySelector(\n '.select-facet-checkbox'\n ) as HTMLInputElement;\n expect(facetSelectCheck).to.exist;\n\n facetSelectCheck.click();\n expect(facetClickSpy.callCount).to.equal(1);\n expect(facetChangeSpy.callCount).to.equal(1);\n expect(facetRow.bucket?.state).to.equal('selected');\n\n facetSelectCheck.click();\n expect(facetClickSpy.callCount).to.equal(2);\n expect(facetChangeSpy.callCount).to.equal(2);\n expect(facetRow.bucket?.state).to.equal('none');\n });\n\n it('emits facet click and change events when a facet is negated/un-negated', async () => {\n const facetClickSpy = sinon.spy();\n const facetChangeSpy = sinon.spy();\n const el = await fixture<FacetsTemplate>(\n html`<facets-template\n .facetGroup=${facetGroup}\n @facetClick=${facetClickSpy}\n @selectedFacetsChanged=${facetChangeSpy}\n ></facets-template>`\n );\n\n const facetRow = el.shadowRoot?.querySelector('facet-row') as FacetRow;\n expect(facetRow).to.exist;\n\n const facetNegateCheck = facetRow.shadowRoot?.querySelector(\n '.hide-facet-checkbox'\n ) as HTMLInputElement;\n expect(facetNegateCheck).to.exist;\n\n facetNegateCheck.click();\n expect(facetClickSpy.callCount).to.equal(1);\n expect(facetChangeSpy.callCount).to.equal(1);\n expect(facetRow.bucket?.state).to.equal('hidden');\n\n facetNegateCheck.click();\n expect(facetClickSpy.callCount).to.equal(2);\n expect(facetChangeSpy.callCount).to.equal(2);\n expect(facetRow.bucket?.state).to.equal('none');\n });\n\n it('emits facet click and change events when a pre-selected facet is deselected', async () => {\n const facetClickSpy = sinon.spy();\n const facetChangeSpy = sinon.spy();\n const facetGroupWithSelection = { ...facetGroup };\n facetGroupWithSelection.buckets = [\n { ...facetGroup.buckets[0], state: 'selected' },\n ...facetGroup.buckets.slice(1),\n ];\n\n const el = await fixture<FacetsTemplate>(\n html`<facets-template\n .facetGroup=${facetGroupWithSelection}\n @facetClick=${facetClickSpy}\n @selectedFacetsChanged=${facetChangeSpy}\n ></facets-template>`\n );\n\n const facetRow = el.shadowRoot?.querySelector('facet-row') as FacetRow;\n expect(facetRow).to.exist;\n\n const facetSelectCheck = facetRow.shadowRoot?.querySelector(\n '.select-facet-checkbox'\n ) as HTMLInputElement;\n expect(facetSelectCheck).to.exist;\n expect(facetSelectCheck.checked).to.be.true;\n\n facetSelectCheck.click();\n expect(facetClickSpy.callCount).to.equal(1);\n expect(facetChangeSpy.callCount).to.equal(1);\n expect(facetRow.bucket?.state).to.equal('none');\n\n facetSelectCheck.click();\n expect(facetClickSpy.callCount).to.equal(2);\n expect(facetChangeSpy.callCount).to.equal(2);\n expect(facetRow.bucket?.state).to.equal('selected');\n });\n});\n"]}
|