@internetarchive/bookreader 5.0.0-44-a6 → 5.0.0-45
Sign up to get free protection for your applications and to get access to all the features.
- package/BookReader/BookReader.js +1 -1
- package/BookReader/BookReader.js.map +1 -1
- package/BookReader/ia-bookreader-bundle.js +1 -1
- package/BookReader/ia-bookreader-bundle.js.map +1 -1
- package/BookReader/plugins/plugin.url.js +1 -1
- package/BookReader/plugins/plugin.url.js.map +1 -1
- package/CHANGELOG.md +7 -2
- package/package.json +1 -1
- package/src/BookNavigator/search/search-provider.js +7 -7
- package/src/plugins/url/UrlPlugin.js +0 -1
- package/tests/jest/BookNavigator/search/search-provider.test.js +61 -0
- package/tests/jest/BookNavigator/search/search-results.test.js +13 -0
@@ -102,5 +102,66 @@ describe('Search Provider', () => {
|
|
102
102
|
|
103
103
|
expect(provider.bookreader._searchPluginGoToResult.callCount).toEqual(1);
|
104
104
|
});
|
105
|
+
test('update url when search is cancelled or input cleared', async() => {
|
106
|
+
const urlPluginMock = {
|
107
|
+
pullFromAddressBar: sinon.fake(),
|
108
|
+
removeUrlParam: sinon.fake()
|
109
|
+
};
|
110
|
+
const provider = new searchProvider({
|
111
|
+
onProviderChange: sinon.fake(),
|
112
|
+
bookreader: {
|
113
|
+
leafNumToIndex: sinon.fake(),
|
114
|
+
_searchPluginGoToResult: sinon.fake(),
|
115
|
+
urlPlugin: urlPluginMock
|
116
|
+
}
|
117
|
+
});
|
118
|
+
|
119
|
+
provider.onSearchCanceled();
|
120
|
+
await provider.updateComplete;
|
121
|
+
|
122
|
+
expect(urlPluginMock.pullFromAddressBar.callCount).toEqual(1);
|
123
|
+
expect(urlPluginMock.removeUrlParam.callCount).toEqual(1);
|
124
|
+
|
125
|
+
provider.onSearchCanceled();
|
126
|
+
await provider.updateComplete;
|
127
|
+
|
128
|
+
expect(urlPluginMock.pullFromAddressBar.callCount).toEqual(2);
|
129
|
+
expect(urlPluginMock.removeUrlParam.callCount).toEqual(2);
|
130
|
+
});
|
131
|
+
it('updateSearchInUrl', async () => {
|
132
|
+
let fieldToSet;
|
133
|
+
let valueOfFieldToSet;
|
134
|
+
let setUrlParamCalled = false;
|
135
|
+
const urlPluginMock = {
|
136
|
+
pullFromAddressBar: sinon.fake(),
|
137
|
+
removeUrlParam: sinon.fake(),
|
138
|
+
setUrlParam: (field, val) => {
|
139
|
+
fieldToSet = field;
|
140
|
+
valueOfFieldToSet = val;
|
141
|
+
setUrlParamCalled = true;
|
142
|
+
}
|
143
|
+
};
|
144
|
+
const provider = new searchProvider({
|
145
|
+
onProviderChange: sinon.fake(),
|
146
|
+
bookreader: {
|
147
|
+
leafNumToIndex: sinon.fake(),
|
148
|
+
_searchPluginGoToResult: sinon.fake(),
|
149
|
+
urlPlugin: urlPluginMock,
|
150
|
+
search: sinon.fake()
|
151
|
+
}
|
152
|
+
});
|
153
|
+
|
154
|
+
const searchInitiatedEvent = new CustomEvent('bookSearchInitiated', { detail: { query: 'foobar' } });
|
155
|
+
// set initial seachState with a query
|
156
|
+
provider.onBookSearchInitiated(searchInitiatedEvent);
|
157
|
+
await provider.updateComplete;
|
158
|
+
// checking this fn:
|
159
|
+
provider.updateSearchInUrl();
|
160
|
+
await provider.updateComplete;
|
161
|
+
|
162
|
+
expect(fieldToSet).toEqual('q');
|
163
|
+
expect(valueOfFieldToSet).toEqual('foobar');
|
164
|
+
expect(setUrlParamCalled).toBe(true);
|
165
|
+
});
|
105
166
|
});
|
106
167
|
});
|
@@ -236,4 +236,17 @@ describe('<ia-book-search-results>', () => {
|
|
236
236
|
|
237
237
|
expect(response).toBeDefined();
|
238
238
|
});
|
239
|
+
it('cancels search when input is cleared', async () => {
|
240
|
+
const el = await fixture(container(results));
|
241
|
+
|
242
|
+
el.cancelSearch = sinon.fake();
|
243
|
+
await el.updateComplete;
|
244
|
+
|
245
|
+
const searchInput = el.shadowRoot.querySelector('[name="query"]');
|
246
|
+
|
247
|
+
searchInput.value = '';
|
248
|
+
searchInput.dispatchEvent(new Event('search'));
|
249
|
+
|
250
|
+
expect(el.cancelSearch.callCount).toEqual(1);
|
251
|
+
});
|
239
252
|
});
|