@internetarchive/bookreader 5.0.0-42-a2 → 5.0.0-44-a1

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.
Files changed (72) hide show
  1. package/.github/workflows/node.js.yml +14 -14
  2. package/.github/workflows/npm-publish.yml +4 -4
  3. package/BookReader/BookReader.css +14 -15
  4. package/BookReader/BookReader.js +1 -1
  5. package/BookReader/BookReader.js.map +1 -1
  6. package/BookReader/ia-bookreader-bundle.js +87 -87
  7. package/BookReader/ia-bookreader-bundle.js.map +1 -1
  8. package/BookReader/icons/pause.svg +1 -1
  9. package/BookReader/icons/playback-speed.svg +1 -1
  10. package/BookReader/icons/read-aloud.svg +1 -1
  11. package/BookReader/images/BRicons.svg +2 -2
  12. package/BookReader/images/books_graphic.svg +1 -1
  13. package/BookReader/images/icon_book.svg +1 -1
  14. package/BookReader/images/icon_gear.svg +1 -1
  15. package/BookReader/images/icon_info.svg +1 -1
  16. package/BookReader/images/icon_playback-rate.svg +1 -1
  17. package/BookReader/images/icon_search_button.svg +1 -1
  18. package/BookReader/images/icon_share.svg +1 -1
  19. package/BookReader/images/icon_speaker.svg +1 -1
  20. package/BookReader/images/icon_speaker_open.svg +1 -1
  21. package/BookReader/images/marker_chap-off.svg +1 -1
  22. package/BookReader/images/marker_chap-on.svg +1 -1
  23. package/BookReader/images/marker_srch-on.svg +1 -1
  24. package/BookReader/jquery-1.10.1.js +1 -1
  25. package/BookReader/jquery-1.10.1.js.LICENSE.txt +6 -6
  26. package/BookReader/plugins/plugin.archive_analytics.js +1 -1
  27. package/BookReader/plugins/plugin.archive_analytics.js.map +1 -1
  28. package/BookReader/plugins/plugin.resume.js +1 -1
  29. package/BookReader/plugins/plugin.resume.js.map +1 -1
  30. package/BookReader/plugins/plugin.search.js +1 -1
  31. package/BookReader/plugins/plugin.search.js.map +1 -1
  32. package/BookReader/plugins/plugin.text_selection.js +1 -1
  33. package/BookReader/plugins/plugin.text_selection.js.map +1 -1
  34. package/BookReader/plugins/plugin.tts.js +1 -1
  35. package/BookReader/plugins/plugin.tts.js.map +1 -1
  36. package/BookReader/plugins/plugin.url.js +1 -1
  37. package/BookReader/plugins/plugin.url.js.map +1 -1
  38. package/BookReader/plugins/plugin.vendor-fullscreen.js +1 -1
  39. package/BookReader/plugins/plugin.vendor-fullscreen.js.map +1 -1
  40. package/BookReaderDemo/IADemoBr.js +30 -0
  41. package/BookReaderDemo/demo-internetarchive.html +3 -0
  42. package/CHANGELOG.md +9 -0
  43. package/babel.config.js +1 -1
  44. package/package.json +22 -27
  45. package/renovate.json +13 -4
  46. package/scripts/preversion.js +4 -1
  47. package/src/BookNavigator/book-navigator.js +4 -0
  48. package/src/BookNavigator/downloads/downloads-provider.js +14 -5
  49. package/src/BookNavigator/downloads/downloads.js +23 -1
  50. package/src/BookNavigator/search/a-search-result.js +4 -6
  51. package/src/css/_controls.scss +1 -2
  52. package/src/plugins/search/plugin.search.js +17 -4
  53. package/src/plugins/search/view.js +1 -3
  54. package/src/plugins/tts/plugin.tts.js +15 -3
  55. package/tests/{karma → jest}/BookNavigator/book-navigator.test.js +119 -104
  56. package/tests/{karma → jest}/BookNavigator/bookmarks/bookmark-button.test.js +13 -14
  57. package/tests/{karma → jest}/BookNavigator/bookmarks/bookmark-edit.test.js +25 -26
  58. package/tests/{karma → jest}/BookNavigator/bookmarks/bookmarks-list.test.js +41 -42
  59. package/tests/jest/BookNavigator/bookmarks/ia-bookmarks.test.js +45 -0
  60. package/tests/{karma → jest}/BookNavigator/downloads/downloads-provider.test.js +18 -18
  61. package/tests/{karma → jest}/BookNavigator/downloads/downloads.test.js +7 -8
  62. package/tests/{karma → jest}/BookNavigator/search/search-provider.test.js +29 -29
  63. package/tests/{karma → jest}/BookNavigator/search/search-results.test.js +57 -56
  64. package/tests/{karma → jest}/BookNavigator/sharing/sharing-provider.test.js +8 -8
  65. package/tests/jest/BookNavigator/visual-adjustments.test.js +200 -0
  66. package/tests/{karma → jest}/BookNavigator/volumes/volumes-provider.test.js +38 -38
  67. package/tests/{karma → jest}/BookNavigator/volumes/volumes.test.js +15 -16
  68. package/tests/jest/plugins/search/plugin.search.test.js +40 -23
  69. package/tests/jest/plugins/tts/AbstractTTSEngine.test.js +3 -3
  70. package/karma.conf.js +0 -23
  71. package/tests/karma/BookNavigator/bookmarks/ia-bookmarks.test.js +0 -57
  72. package/tests/karma/BookNavigator/visual-adjustments.test.js +0 -201
@@ -1,10 +1,9 @@
1
1
  import {
2
2
  html,
3
3
  fixture,
4
- expect,
5
4
  oneEvent,
6
- } from '@open-wc/testing';
7
- import '../../../../src/BookNavigator/bookmarks/bookmark-edit.js';
5
+ } from '@open-wc/testing-helpers';
6
+ import '@/src/BookNavigator/bookmarks/bookmark-edit.js';
8
7
 
9
8
  const bookmarkColors = [{
10
9
  id: 0,
@@ -36,42 +35,42 @@ const bookmark = {
36
35
  };
37
36
 
38
37
  describe('<ia-bookmark-edit>', () => {
39
- it('sets default properties', async () => {
38
+ test('sets default properties', async () => {
40
39
  const el = await fixture(container(bookmark));
41
40
 
42
- expect(el.bookmark).to.equal(bookmark);
43
- expect(el.renderHeader).to.be.false;
41
+ expect(el.bookmark).toEqual(bookmark);
42
+ expect(el.renderHeader).toBeFalsy();
44
43
  });
45
44
 
46
- it('renders bookmark thumb and page number', async () => {
45
+ test('renders bookmark thumb and page number', async () => {
47
46
  const el = await fixture(container(bookmark));
48
47
 
49
- expect(el.shadowRoot.querySelector('img').getAttribute('src')).to.equal(bookmark.thumbnail);
50
- expect(el.shadowRoot.querySelector('h4').innerText).to.equal(`Page ${bookmark.page}`);
48
+ expect(el.shadowRoot.querySelector('img').getAttribute('src')).toEqual(bookmark.thumbnail);
49
+ expect(el.shadowRoot.querySelector('h4').textContent).toEqual(`Page ${bookmark.page}`);
51
50
  });
52
51
 
53
- it('renders an optional header section', async () => {
52
+ test('renders an optional header section', async () => {
54
53
  const el = await fixture(container(bookmark));
55
54
  el.renderHeader = true;
56
55
 
57
56
  await el.updateComplete;
58
57
 
59
- expect(el.shadowRoot.querySelector('header')).to.exist;
58
+ expect(el.shadowRoot.querySelector('header')).toBeDefined();
60
59
  });
61
60
 
62
- it('toggles rendering of the bookmark thumbnail and page number', async () => {
61
+ test('toggles rendering of the bookmark thumbnail and page number', async () => {
63
62
  const el = await fixture(container(bookmark));
64
- expect(el.shadowRoot.querySelector('img')).to.exist;
65
- expect(el.shadowRoot.querySelector('h4')).to.exist;
63
+ expect(el.shadowRoot.querySelector('img')).toBeDefined();
64
+ expect(el.shadowRoot.querySelector('h4')).toBeDefined();
66
65
 
67
66
  el.showBookmark = false;
68
67
  await el.updateComplete;
69
68
 
70
- expect(el.shadowRoot.querySelector('img')).to.not.exist;
71
- expect(el.shadowRoot.querySelector('h4')).to.not.exist;
69
+ expect(el.shadowRoot.querySelector('img')).toBe(null);
70
+ expect(el.shadowRoot.querySelector('h4')).toBe(null);
72
71
  });
73
72
 
74
- it('emits a custom event when the bookmark color is changed', async () => {
73
+ test('emits a custom event when the bookmark color is changed', async () => {
75
74
  const el = await fixture(container(bookmark));
76
75
 
77
76
  setTimeout(() => (
@@ -79,10 +78,10 @@ describe('<ia-bookmark-edit>', () => {
79
78
  ));
80
79
  const response = await oneEvent(el, 'bookmarkColorChanged');
81
80
 
82
- expect(response).to.exist;
81
+ expect(response).toBeDefined();
83
82
  });
84
83
 
85
- it('emits a custom event when the edit form is submitted', async () => {
84
+ test('emits a custom event when the edit form is submitted', async () => {
86
85
  const el = await fixture(container(bookmark));
87
86
 
88
87
  setTimeout(() => (
@@ -90,10 +89,10 @@ describe('<ia-bookmark-edit>', () => {
90
89
  ));
91
90
  const response = await oneEvent(el, 'saveBookmark');
92
91
 
93
- expect(response).to.exist;
92
+ expect(response).toBeDefined();
94
93
  });
95
94
 
96
- it('emits a custom event when the delete button is clicked', async () => {
95
+ test('emits a custom event when the delete button is clicked', async () => {
97
96
  const el = await fixture(container(bookmark));
98
97
 
99
98
  setTimeout(() => (
@@ -101,10 +100,10 @@ describe('<ia-bookmark-edit>', () => {
101
100
  ));
102
101
  const response = await oneEvent(el, 'deleteBookmark');
103
102
 
104
- expect(response).to.exist;
103
+ expect(response).toBeDefined();
105
104
  });
106
105
 
107
- it('updates bookmark color when a color input changed', async () => {
106
+ test('updates bookmark color when a color input changed', async () => {
108
107
  const el = await fixture(container(bookmark));
109
108
 
110
109
  setTimeout(() => (
@@ -112,10 +111,10 @@ describe('<ia-bookmark-edit>', () => {
112
111
  ));
113
112
  await oneEvent(el, 'bookmarkColorChanged');
114
113
 
115
- expect(el.bookmark.color).to.equal(2);
114
+ expect(el.bookmark.color).toEqual(2);
116
115
  });
117
116
 
118
- it('updates bookmark note when the note textarea changed', async () => {
117
+ test('updates bookmark note when the note textarea changed', async () => {
119
118
  const el = await fixture(container(bookmark));
120
119
  const textarea = el.shadowRoot.querySelector('textarea');
121
120
  const updatedNote = 'New note';
@@ -128,6 +127,6 @@ describe('<ia-bookmark-edit>', () => {
128
127
 
129
128
  await oneEvent(textarea, 'change');
130
129
 
131
- expect(el.bookmark.note).to.contain(updatedNote);
130
+ expect(el.bookmark.note).toContain(updatedNote);
132
131
  });
133
132
  });
@@ -1,10 +1,9 @@
1
1
  import {
2
2
  html,
3
3
  fixture,
4
- expect,
5
4
  oneEvent,
6
- } from '@open-wc/testing';
7
- import '../../../../src/BookNavigator/bookmarks/bookmarks-list.js';
5
+ } from '@open-wc/testing-helpers';
6
+ import '@/src/BookNavigator/bookmarks/bookmarks-list.js';
8
7
 
9
8
  const bookmarks = [{
10
9
  id: 1,
@@ -41,24 +40,24 @@ describe('<ia-bookmarks-list>', () => {
41
40
  it('sets default properties', async () => {
42
41
  const el = await fixture(container(bookmarks));
43
42
 
44
- expect(el.bookmarks).to.equal(bookmarks);
45
- expect(el.activeBookmarkID).to.be.undefined;
46
- expect(el.renderHeader).to.be.false;
43
+ expect(el.bookmarks).toEqual(bookmarks);
44
+ expect(el.activeBookmarkID).toBeUndefined();
45
+ expect(el.renderHeader).toBeFalsy();
47
46
  });
48
47
 
49
- it('renders bookmarks that contain page numbers', async () => {
48
+ test('renders bookmarks that contain page numbers', async () => {
50
49
  const el = await fixture(container(bookmarks));
51
50
 
52
- expect(el.shadowRoot.textContent).to.include(`Page ${bookmarks[0].page}`);
51
+ expect(el.shadowRoot.textContent).toContain(`Page ${bookmarks[0].page}`);
53
52
  });
54
53
 
55
- it('renders bookmarks that contain an optional note', async () => {
54
+ test('renders bookmarks that contain an optional note', async () => {
56
55
  const el = await fixture(container(bookmarks));
57
56
 
58
- expect(el.shadowRoot.innerHTML).to.include(bookmarks[1].note);
57
+ expect(el.shadowRoot.innerHTML).toContain(bookmarks[1].note);
59
58
  });
60
59
 
61
- it('emits a custom event when a bookmark is clicked', async () => {
60
+ test('emits a custom event when a bookmark is clicked', async () => {
62
61
  const el = await fixture(container(bookmarks));
63
62
 
64
63
  setTimeout(() => (
@@ -66,10 +65,10 @@ describe('<ia-bookmarks-list>', () => {
66
65
  ));
67
66
  const response = await oneEvent(el, 'bookmarkSelected');
68
67
 
69
- expect(response).to.exist;
68
+ expect(response).toBeDefined();
70
69
  });
71
70
 
72
- it('emits a custom event when an edit button is clicked', async () => {
71
+ test('emits a custom event when an edit button is clicked', async () => {
73
72
  const el = await fixture(container(bookmarks));
74
73
 
75
74
  setTimeout(() => (
@@ -77,10 +76,10 @@ describe('<ia-bookmarks-list>', () => {
77
76
  ));
78
77
  const response = await oneEvent(el, 'bookmarkEdited');
79
78
 
80
- expect(response).to.exist;
79
+ expect(response).toBeDefined();
81
80
  });
82
81
 
83
- it('emits a saveBookmark event', async () => {
82
+ test('emits a saveBookmark event', async () => {
84
83
  const el = await fixture(container(bookmarks));
85
84
 
86
85
  setTimeout(() => (
@@ -88,10 +87,10 @@ describe('<ia-bookmarks-list>', () => {
88
87
  ));
89
88
  const response = await oneEvent(el, 'saveBookmark');
90
89
 
91
- expect(response).to.exist;
90
+ expect(response).toBeDefined();
92
91
  });
93
92
 
94
- it('emits a deleteBookmark event', async () => {
93
+ test('emits a deleteBookmark event', async () => {
95
94
  const el = await fixture(container(bookmarks));
96
95
 
97
96
  setTimeout(() => (
@@ -99,10 +98,10 @@ describe('<ia-bookmarks-list>', () => {
99
98
  ));
100
99
  const response = await oneEvent(el, 'deleteBookmark');
101
100
 
102
- expect(response).to.exist;
101
+ expect(response).toBeDefined();
103
102
  });
104
103
 
105
- it('emits a bookmarkColorChanged event', async () => {
104
+ test('emits a bookmarkColorChanged event', async () => {
106
105
  const el = await fixture(container(bookmarks));
107
106
 
108
107
  setTimeout(() => (
@@ -110,18 +109,18 @@ describe('<ia-bookmarks-list>', () => {
110
109
  ));
111
110
  const response = await oneEvent(el, 'bookmarkColorChanged');
112
111
 
113
- expect(response).to.exist;
112
+ expect(response).toBeDefined();
114
113
  });
115
114
 
116
- it('sets editedBookmark when an edit button is clicked', async () => {
115
+ test('sets editedBookmark when an edit button is clicked', async () => {
117
116
  const el = await fixture(container(bookmarks));
118
117
  let prevState = el.editedBookmark;
119
118
 
120
119
  el.shadowRoot.querySelector('li button').click();
121
120
  await el.updateComplete;
122
121
 
123
- expect(el.editedBookmark).not.to.equal(prevState);
124
- expect(el.editedBookmark.page).to.equal(bookmarks[0].page);
122
+ expect(el.editedBookmark).not.toEqual(prevState);
123
+ expect(el.editedBookmark.page).toEqual(bookmarks[0].page);
125
124
 
126
125
  // When clicking the same edit button while in edit mode, should toggle
127
126
  // edit mode off and remove editedBookmark pointer
@@ -129,11 +128,11 @@ describe('<ia-bookmarks-list>', () => {
129
128
  el.shadowRoot.querySelector('li button').click();
130
129
  await el.updateComplete;
131
130
 
132
- expect(el.editedBookmark).not.to.equal(prevState);
133
- expect(el.editedBookmark.page).not.to.equal(bookmarks[0].page);
131
+ expect(el.editedBookmark).not.toEqual(prevState);
132
+ expect(el.editedBookmark.page).not.toEqual(bookmarks[0].page);
134
133
  });
135
134
 
136
- it('resets editedBookmark when saveBookmark callback called', async () => {
135
+ test('resets editedBookmark when saveBookmark callback called', async () => {
137
136
  const el = await fixture(container(bookmarks));
138
137
 
139
138
  [el.editedBookmark] = bookmarks;
@@ -141,11 +140,11 @@ describe('<ia-bookmarks-list>', () => {
141
140
  el.saveBookmark({ detail: { bookmark: bookmarks[0] } });
142
141
  await el.updateComplete;
143
142
 
144
- expect(el.editedBookmark).not.to.equal(bookmarks[0]);
145
- expect(el.editedBookmark).not.to.have.keys(['page', 'thumbnail', 'id']);
143
+ expect(el.editedBookmark).not.toEqual(bookmarks[0]);
144
+ expect(el.editedBookmark).not.toHaveProperty('page', 'thumbnail', 'id');
146
145
  });
147
146
 
148
- it('resets editedBookmark when deleteBookmark callback called', async () => {
147
+ test('resets editedBookmark when deleteBookmark callback called', async () => {
149
148
  const el = await fixture(container(bookmarks));
150
149
 
151
150
  [el.editedBookmark] = bookmarks;
@@ -153,33 +152,33 @@ describe('<ia-bookmarks-list>', () => {
153
152
  el.deleteBookmark({ detail: { id: bookmarks[0].id } });
154
153
  await el.updateComplete;
155
154
 
156
- expect(el.editedBookmark).not.to.equal(bookmarks[0]);
157
- expect(el.editedBookmark).not.to.have.keys(['page', 'thumbnail', 'id']);
155
+ expect(el.editedBookmark).not.toEqual(bookmarks[0]);
156
+ expect(el.editedBookmark).not.toHaveProperty('page', 'thumbnail', 'id');
158
157
  });
159
158
 
160
- it('renders the bookmarks count', async () => {
159
+ test('renders the bookmarks count', async () => {
161
160
  const el = await fixture(container([bookmarks[0]]));
162
161
  const bookmarksCount = await fixture(el.bookmarksCount);
163
162
 
164
- expect(bookmarksCount.textContent).to.include('(1)');
163
+ expect(bookmarksCount.textContent).toContain('(1)');
165
164
  });
166
165
 
167
- it('does not render the bookmarks count when no bookmarks present', async () => {
166
+ test('does not render the bookmarks count when no bookmarks present', async () => {
168
167
  const el = await fixture(container());
169
168
  el.renderHeader = true;
170
169
 
171
170
  await el.updateComplete;
172
171
 
173
- expect(el.shadowRoot.querySelector('header small')).not.to.exist;
172
+ expect(el.shadowRoot.querySelector('header small')).toBe(null);
174
173
  });
175
174
 
176
- it('renders an optional header section', async () => {
175
+ test('renders an optional header section', async () => {
177
176
  const el = await fixture(container(bookmarks));
178
177
  el.renderHeader = true;
179
178
 
180
179
  await el.updateComplete;
181
180
 
182
- expect(el.shadowRoot.querySelector('header')).to.exist;
181
+ expect(el.shadowRoot.querySelector('header')).toBeDefined();
183
182
  });
184
183
 
185
184
  // skipped:
@@ -192,7 +191,7 @@ describe('<ia-bookmarks-list>', () => {
192
191
  ));
193
192
  const response = await oneEvent(el, 'addBookmark');
194
193
 
195
- expect(response).to.exist;
194
+ expect(response).toBeDefined();
196
195
  });
197
196
 
198
197
  // skipped:
@@ -200,23 +199,23 @@ describe('<ia-bookmarks-list>', () => {
200
199
  xit('renders an optional add bookmark button', async () => {
201
200
  const el = await fixture(container(bookmarks));
202
201
 
203
- expect(el.shadowRoot.querySelector('.add-bookmark')).to.exist;
202
+ expect(el.shadowRoot.querySelector('.add-bookmark')).toBeDefined();
204
203
 
205
204
  el.renderAddBookmarkButton = false;
206
205
  await el.updateComplete;
207
206
 
208
- expect(el.shadowRoot.querySelector('.add-bookmark')).not.to.exist;
207
+ expect(el.shadowRoot.querySelector('.add-bookmark')).not.toBeDefined();
209
208
  });
210
209
 
211
210
  // skipped:
212
211
  // TypeError: Cannot read property 'getAttribute' of null
213
212
  xit('can toggle disable behavior of add bookmark button', async () => {
214
213
  const el = await fixture(container(bookmarks));
215
- expect(el.shadowRoot.querySelector('.add-bookmark').getAttribute('disabled')).to.be.null;
214
+ expect(el.shadowRoot.querySelector('.add-bookmark').getAttribute('disabled')).toBeNull();
216
215
 
217
216
  el.disableAddBookmarkButton = true;
218
217
  await el.updateComplete;
219
218
 
220
- expect(el.shadowRoot.querySelector('.add-bookmark').getAttribute('disabled')).to.equal('disabled');
219
+ expect(el.shadowRoot.querySelector('.add-bookmark').getAttribute('disabled')).toEqual('disabled');
221
220
  });
222
221
  });
@@ -0,0 +1,45 @@
1
+ import {
2
+ html,
3
+ fixtureSync,
4
+ fixtureCleanup,
5
+ } from '@open-wc/testing-helpers';
6
+ import '@/src/BookNavigator/bookmarks/ia-bookmarks.js';
7
+ import sinon from 'sinon';
8
+
9
+ afterEach(() => {
10
+ sinon.restore();
11
+ fixtureCleanup();
12
+ });
13
+
14
+ describe('<ia-bookmarks>', () => {
15
+ test('uses `setup` to start component', async () => {
16
+ const el = fixtureSync(html`<ia-bookmarks displayMode="bookmarks"></ia-bookmarks>`);
17
+ el.bookreader = {
18
+ bookId: 'foo',
19
+ $,
20
+ currentIndex: () => 0,
21
+ };
22
+ await el.updateComplete;
23
+ const fetchUserBookmarks = sinon.spy(el, 'fetchUserBookmarks');
24
+ const fetchBookmarks = sinon.stub(el, 'fetchBookmarks');
25
+
26
+ el.setup();
27
+ await el.updateComplete;
28
+
29
+ expect(fetchUserBookmarks.callCount).toEqual(1);
30
+ expect(fetchBookmarks.callCount).toEqual(1);
31
+ });
32
+
33
+ test('does not fetch user bookmarks if displayMode = login', async () => {
34
+ const el = fixtureSync(html`<ia-bookmarks displayMode="login"></ia-bookmarks>`);
35
+ await el.updateComplete;
36
+ const fetchSpy = sinon.spy(el, 'fetchUserBookmarks');
37
+ const fetchBookmarks = sinon.stub(el, 'fetchBookmarks');
38
+
39
+ el.setup();
40
+ await el.updateComplete;
41
+
42
+ expect(fetchSpy.callCount).toEqual(0);
43
+ expect(fetchBookmarks.callCount).toEqual(0);
44
+ });
45
+ });
@@ -1,6 +1,6 @@
1
- import { expect, fixtureCleanup, fixtureSync } from '@open-wc/testing';
1
+ import { fixtureCleanup, fixtureSync } from '@open-wc/testing-helpers';
2
2
  import sinon from 'sinon';
3
- import DownloadsProvider from '../../../../src/BookNavigator/downloads/downloads-provider';
3
+ import DownloadsProvider from '@/src/BookNavigator/downloads/downloads-provider';
4
4
 
5
5
  const downloadableTypes = [
6
6
  ["PDF", "//archive.org/download/theworksofplato01platiala/theworksofplato01platiala.pdf"],
@@ -29,39 +29,39 @@ afterEach(() => {
29
29
  });
30
30
 
31
31
  describe('Downloads Provider', () => {
32
- it('constructor - initial setup', () => {
32
+ test('constructor - initial setup', () => {
33
33
  const isBookProtected = false;
34
34
  const provider = new DownloadsProvider(isBookProtected);
35
35
 
36
- expect(provider.id).to.equal('downloads');
37
- expect(provider.icon).to.exist;
38
- expect(fixtureSync(provider.icon).tagName).to.equal('IA-ICON-DL');
39
- expect(provider.label).to.equal('Downloadable files');
40
- expect(provider.menuDetails).to.exist;
41
- expect(provider.component).to.exist;
36
+ expect(provider.id).toEqual('downloads');
37
+ expect(provider.icon).toBeDefined();
38
+ expect(fixtureSync(provider.icon).tagName).toEqual('IA-ICON-DL');
39
+ expect(provider.label).toEqual('Downloadable files');
40
+ expect(provider.menuDetails).toBeDefined();
41
+ expect(provider.component).toBeDefined();
42
42
 
43
43
  provider.update(downloadableTypes);
44
44
 
45
- expect(provider.isBookProtected).to.equal(false);
45
+ expect(provider.isBookProtected).toEqual(false);
46
46
 
47
- expect(provider.downloads[0].type).to.equals("PDF");
48
- expect(provider.downloads[1].type).to.equals("ePub");
47
+ expect(provider.downloads[0].type).toEqual("PDF");
48
+ expect(provider.downloads[1].type).toEqual("ePub");
49
49
 
50
- expect(provider.menuDetails).to.equal(`(${downloads.length} formats)`);
50
+ expect(provider.menuDetails).toEqual(`(${downloads.length} formats)`);
51
51
  });
52
52
 
53
- it('render view if book is protected', () => {
53
+ test('render view if book is protected', () => {
54
54
  const provider = new DownloadsProvider({
55
55
  bookreader: { options: { isProtected: true } }
56
56
  });
57
57
 
58
- expect(provider.isBookProtected).to.equal(true);
58
+ expect(provider.isBookProtected).toEqual(true);
59
59
 
60
60
  provider.update(downloadableTypes);
61
61
 
62
- expect(provider.downloads[0].type).to.equals("Encrypted Adobe PDF");
63
- expect(provider.downloads[1].type).to.equals("Encrypted Adobe ePub");
62
+ expect(provider.downloads[0].type).toEqual("Encrypted Adobe PDF");
63
+ expect(provider.downloads[1].type).toEqual("Encrypted Adobe ePub");
64
64
 
65
- expect(provider.downloads.length).to.equals(downloads.length);
65
+ expect(provider.downloads.length).toEqual(downloads.length);
66
66
  });
67
67
  });
@@ -1,11 +1,10 @@
1
1
  import {
2
2
  html,
3
3
  fixture,
4
- expect,
5
4
  fixtureCleanup,
6
- } from '@open-wc/testing';
5
+ } from '@open-wc/testing-helpers';
7
6
  import sinon from 'sinon';
8
- import '../../../../src/BookNavigator/downloads/downloads';
7
+ import '@/src/BookNavigator/downloads/downloads';
9
8
 
10
9
 
11
10
  const downloads = [
@@ -41,14 +40,14 @@ afterEach(() => {
41
40
  });
42
41
 
43
42
  describe('<ia-book-downloads>', () => {
44
- it('sets default properties', async () => {
43
+ test('sets default properties', async () => {
45
44
  const el = await fixture(container(downloads));
46
45
  await el.updateComplete;
47
46
 
48
- expect(el.downloads.length).to.equal(2);
49
- expect(el.shadowRoot.querySelector("ul").childElementCount).to.equal(2);
50
- expect(el.isBookProtected).to.equal(false);
47
+ expect(el.downloads.length).toEqual(2);
48
+ expect(el.shadowRoot.querySelector("ul").childElementCount).toEqual(2);
49
+ expect(el.isBookProtected).toEqual(false);
51
50
 
52
- expect(el.shadowRoot.querySelector("ul li a").textContent).to.include("Get PDF");
51
+ expect(el.shadowRoot.querySelector("ul li a").textContent).toContain("Get PDF");
53
52
  });
54
53
  });
@@ -1,6 +1,6 @@
1
- import { expect, fixtureCleanup, fixtureSync } from '@open-wc/testing';
1
+ import { fixtureCleanup, fixtureSync } from '@open-wc/testing-helpers';
2
2
  import sinon from 'sinon';
3
- import searchProvider from '../../../../src/BookNavigator/search/search-provider';
3
+ import searchProvider from '@/src/BookNavigator/search/search-provider';
4
4
 
5
5
  afterEach(() => {
6
6
  sinon.restore();
@@ -14,26 +14,26 @@ describe('Search Provider', () => {
14
14
  bookreader: {}
15
15
  });
16
16
 
17
- expect(provider.bookreader).to.exist;
18
- expect(provider.onProviderChange).to.exist;
19
- expect(provider.id).to.equal('search');
20
- expect(provider.icon).to.exist;
21
- expect(fixtureSync(provider.icon).tagName).to.equal('IA-ICON-SEARCH');
22
- expect(provider.label).to.equal('Search inside');
23
- expect(provider.menuDetails).to.exist;
24
- expect(provider.component).to.exist;
17
+ expect(provider.bookreader).toBeDefined();
18
+ expect(provider.onProviderChange).toBeDefined();
19
+ expect(provider.id).toEqual('search');
20
+ expect(provider.icon).toBeDefined();
21
+ expect(fixtureSync(provider.icon).tagName).toEqual('IA-ICON-SEARCH');
22
+ expect(provider.label).toEqual('Search inside');
23
+ expect(provider.menuDetails).toBeDefined();
24
+ expect(provider.component).toBeDefined();
25
25
  });
26
26
  describe('Search request life cycles', () => {
27
- it('Event: catches `BookReader:SearchStarted`', async() => {
27
+ test('Event: catches `BookReader:SearchStarted`', async() => {
28
28
  const provider = new searchProvider({
29
29
  onProviderChange: sinon.fake(),
30
30
  bookreader: {}
31
31
  });
32
32
  sinon.spy(provider, 'updateMenu');
33
33
  window.dispatchEvent(new CustomEvent('BookReader:SearchStarted', { detail: { props: { term: 'foo' }}}));
34
- expect(provider.updateMenu.callCount).to.equal(1);
34
+ expect(provider.updateMenu.callCount).toEqual(1);
35
35
  });
36
- it('Event: catches `BookReader:SearchCallback`', async() => {
36
+ test('Event: catches `BookReader:SearchCallback`', async() => {
37
37
  const provider = new searchProvider({
38
38
  onProviderChange: sinon.fake(),
39
39
  bookreader: {}
@@ -41,10 +41,10 @@ describe('Search Provider', () => {
41
41
  sinon.spy(provider, 'updateMenu');
42
42
  const brStub = {};
43
43
  window.dispatchEvent(new CustomEvent('BookReader:SearchCallback', { detail: { props: { instance: brStub, results: { matches: []} }}}));
44
- expect(provider.updateMenu.callCount).to.equal(1);
45
- expect(provider.bookreader).to.equal(brStub);
44
+ expect(provider.updateMenu.callCount).toEqual(1);
45
+ expect(provider.bookreader).toEqual(brStub);
46
46
  });
47
- it('Event: catches `BookReader:SearchCallbackEmpty`', async() => {
47
+ test('Event: catches `BookReader:SearchCallbackEmpty`', async() => {
48
48
  const provider = new searchProvider({
49
49
  onProviderChange: sinon.fake(),
50
50
  bookreader: {}
@@ -53,11 +53,11 @@ describe('Search Provider', () => {
53
53
  sinon.spy(provider, 'updateMenu');
54
54
  const brStub = {};
55
55
  window.dispatchEvent(new CustomEvent('BookReader:SearchCallbackEmpty', { detail: { props: { instance: brStub }}}));
56
- expect(provider.onSearchRequestError.getCall(0).args[1]).to.equal('noResults');
57
- expect(provider.updateMenu.callCount).to.equal(1);
58
- expect(provider.bookreader).to.equal(brStub);
56
+ expect(provider.onSearchRequestError.getCall(0).args[1]).toEqual('noResults');
57
+ expect(provider.updateMenu.callCount).toEqual(1);
58
+ expect(provider.bookreader).toEqual(brStub);
59
59
  });
60
- it('Event: catches `BookReader:SearchCallbackNotIndexed`', async() => {
60
+ test('Event: catches `BookReader:SearchCallbackNotIndexed`', async() => {
61
61
  const provider = new searchProvider({
62
62
  onProviderChange: sinon.fake(),
63
63
  bookreader: {}
@@ -66,11 +66,11 @@ describe('Search Provider', () => {
66
66
  sinon.spy(provider, 'onSearchRequestError');
67
67
  sinon.spy(provider, 'updateMenu');
68
68
  window.dispatchEvent(new CustomEvent('BookReader:SearchCallbackNotIndexed', { detail: { props: { instance: brStub }}}));
69
- expect(provider.onSearchRequestError.getCall(0).args[1]).to.equal('notIndexed');
70
- expect(provider.updateMenu.callCount).to.equal(1);
71
- expect(provider.bookreader).to.equal(brStub);
69
+ expect(provider.onSearchRequestError.getCall(0).args[1]).toEqual('notIndexed');
70
+ expect(provider.updateMenu.callCount).toEqual(1);
71
+ expect(provider.bookreader).toEqual(brStub);
72
72
  });
73
- it('Event: catches `BookReader:SearchCallbackError`', async() => {
73
+ test('Event: catches `BookReader:SearchCallbackError`', async() => {
74
74
  const provider = new searchProvider({
75
75
  onProviderChange: sinon.fake(),
76
76
  bookreader: {}
@@ -79,11 +79,11 @@ describe('Search Provider', () => {
79
79
  sinon.spy(provider, 'updateMenu');
80
80
  const brStub = {};
81
81
  window.dispatchEvent(new CustomEvent('BookReader:SearchCallbackError', { detail: { props: { instance: brStub }}}));
82
- expect(provider.onSearchRequestError.getCall(0).args[1]).to.equal(undefined);
83
- expect(provider.updateMenu.callCount).to.equal(1);
84
- expect(provider.bookreader).to.equal(brStub);
82
+ expect(provider.onSearchRequestError.getCall(0).args[1]).toEqual(undefined);
83
+ expect(provider.updateMenu.callCount).toEqual(1);
84
+ expect(provider.bookreader).toEqual(brStub);
85
85
  });
86
- it('Event: catches `component@resultSelected` - user clicks result in side panel - & turns page', async() => {
86
+ test('Event: catches `component@resultSelected` - user clicks result in side panel - & turns page', async() => {
87
87
  const provider = new searchProvider({
88
88
  onProviderChange: sinon.fake(),
89
89
  bookreader: {
@@ -100,7 +100,7 @@ describe('Search Provider', () => {
100
100
  { detail: searchResultStub })
101
101
  );
102
102
 
103
- expect(provider.bookreader._searchPluginGoToResult.callCount).to.equal(1);
103
+ expect(provider.bookreader._searchPluginGoToResult.callCount).toEqual(1);
104
104
  });
105
105
  });
106
106
  });