@internetarchive/bookreader 5.0.0-9-multiple-files → 5.0.0-90
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/.eslintrc.js +21 -19
- package/.github/workflows/node.js.yml +81 -7
- package/.github/workflows/npm-publish.yml +6 -20
- package/.testcaferc.js +10 -0
- package/BookReader/BookReader.css +505 -1442
- package/BookReader/BookReader.js +2 -21564
- package/BookReader/BookReader.js.LICENSE.txt +20 -20
- package/BookReader/BookReader.js.map +1 -1
- package/BookReader/ia-bookreader-bundle.js +1782 -0
- package/BookReader/ia-bookreader-bundle.js.LICENSE.txt +7 -0
- package/BookReader/ia-bookreader-bundle.js.map +1 -0
- package/BookReader/icons/1up.svg +1 -12
- package/BookReader/icons/2up.svg +1 -15
- package/BookReader/icons/advance.svg +3 -26
- package/BookReader/icons/chevron-right.svg +1 -1
- package/BookReader/icons/close-circle-dark.svg +1 -0
- package/BookReader/icons/close-circle.svg +1 -1
- package/BookReader/icons/fullscreen.svg +1 -17
- package/BookReader/icons/fullscreen_exit.svg +1 -17
- package/BookReader/icons/hamburger.svg +1 -15
- package/BookReader/icons/left-arrow.svg +1 -12
- package/BookReader/icons/magnify-minus.svg +1 -16
- package/BookReader/icons/magnify-plus.svg +1 -17
- package/BookReader/icons/magnify.svg +1 -15
- package/BookReader/icons/pause.svg +1 -23
- package/BookReader/icons/play.svg +1 -22
- package/BookReader/icons/playback-speed.svg +1 -34
- package/BookReader/icons/read-aloud.svg +1 -22
- package/BookReader/icons/review.svg +3 -22
- package/BookReader/icons/thumbnails.svg +1 -17
- package/BookReader/icons/voice.svg +1 -0
- package/BookReader/icons/volume-full.svg +1 -22
- package/BookReader/images/BRicons.svg +5 -94
- package/BookReader/images/books_graphic.svg +1 -177
- package/BookReader/images/icon_book.svg +1 -12
- package/BookReader/images/icon_bookmark.svg +1 -12
- package/BookReader/images/icon_gear.svg +1 -14
- package/BookReader/images/icon_hamburger.svg +1 -20
- package/BookReader/images/icon_home.svg +1 -21
- package/BookReader/images/icon_info.svg +1 -11
- package/BookReader/images/icon_one_page.svg +1 -8
- package/BookReader/images/icon_pause.svg +1 -1
- package/BookReader/images/icon_play.svg +1 -1
- package/BookReader/images/icon_playback-rate.svg +1 -15
- package/BookReader/images/icon_search_button.svg +1 -8
- package/BookReader/images/icon_share.svg +1 -9
- package/BookReader/images/icon_skip-ahead.svg +1 -6
- package/BookReader/images/icon_skip-back.svg +2 -13
- package/BookReader/images/icon_speaker.svg +1 -18
- package/BookReader/images/icon_speaker_open.svg +1 -10
- package/BookReader/images/icon_thumbnails.svg +1 -12
- package/BookReader/images/icon_toc.svg +1 -5
- package/BookReader/images/icon_two_pages.svg +1 -9
- package/BookReader/images/marker_chap-off.svg +1 -11
- package/BookReader/images/marker_chap-on.svg +1 -11
- package/BookReader/images/marker_srch-on.svg +1 -11
- package/BookReader/images/unviewable_page.png +0 -0
- package/BookReader/jquery-3.js +2 -0
- package/BookReader/jquery-3.js.LICENSE.txt +24 -0
- package/BookReader/plugins/plugin.archive_analytics.js +1 -172
- package/BookReader/plugins/plugin.archive_analytics.js.map +1 -1
- package/BookReader/plugins/plugin.autoplay.js +1 -165
- package/BookReader/plugins/plugin.autoplay.js.map +1 -1
- package/BookReader/plugins/plugin.chapters.js +22 -301
- package/BookReader/plugins/plugin.chapters.js.LICENSE.txt +1 -0
- package/BookReader/plugins/plugin.chapters.js.map +1 -1
- package/BookReader/plugins/plugin.iframe.js +1 -74
- package/BookReader/plugins/plugin.iframe.js.map +1 -1
- package/BookReader/plugins/plugin.iiif.js +2 -0
- package/BookReader/plugins/plugin.iiif.js.map +1 -0
- package/BookReader/plugins/plugin.resume.js +1 -368
- package/BookReader/plugins/plugin.resume.js.map +1 -1
- package/BookReader/plugins/plugin.search.js +2 -1420
- package/BookReader/plugins/plugin.search.js.LICENSE.txt +1 -0
- package/BookReader/plugins/plugin.search.js.map +1 -1
- package/BookReader/plugins/plugin.text_selection.js +2 -1080
- package/BookReader/plugins/plugin.text_selection.js.LICENSE.txt +1 -0
- package/BookReader/plugins/plugin.text_selection.js.map +1 -1
- package/BookReader/plugins/plugin.tts.js +2 -9193
- package/BookReader/plugins/plugin.tts.js.LICENSE.txt +2 -0
- package/BookReader/plugins/plugin.tts.js.map +1 -1
- package/BookReader/plugins/plugin.url.js +1 -269
- package/BookReader/plugins/plugin.url.js.map +1 -1
- package/BookReader/plugins/plugin.vendor-fullscreen.js +1 -379
- package/BookReader/plugins/plugin.vendor-fullscreen.js.map +1 -1
- package/BookReader/webcomponents-bundle.js +3 -0
- package/BookReader/webcomponents-bundle.js.LICENSE.txt +9 -0
- package/BookReader/webcomponents-bundle.js.map +1 -0
- package/BookReaderDemo/BookReaderDemo.css +18 -19
- package/BookReaderDemo/BookReaderJSAdvanced.js +0 -3
- package/BookReaderDemo/BookReaderJSSimple.js +1 -0
- package/BookReaderDemo/IADemoBr.js +144 -0
- package/BookReaderDemo/demo-advanced.html +2 -2
- package/BookReaderDemo/demo-embed-iframe-src.html +2 -1
- package/BookReaderDemo/demo-fullscreen-mobile.html +3 -5
- package/BookReaderDemo/demo-fullscreen.html +2 -4
- package/BookReaderDemo/demo-iiif.html +99 -12
- package/BookReaderDemo/demo-internetarchive.html +214 -18
- package/BookReaderDemo/demo-multiple.html +2 -1
- package/BookReaderDemo/demo-preview-pages.html +526 -525
- package/BookReaderDemo/demo-simple.html +2 -1
- package/BookReaderDemo/demo-vendor-fullscreen.html +2 -4
- package/BookReaderDemo/ia-multiple-volumes-manifest.js +170 -0
- package/BookReaderDemo/immersion-1up.html +2 -2
- package/BookReaderDemo/immersion-mode.html +2 -4
- package/BookReaderDemo/toggle_controls.html +3 -2
- package/BookReaderDemo/view_mode.html +2 -1
- package/BookReaderDemo/viewmode-cycle.html +2 -3
- package/CHANGELOG.md +595 -33
- package/README.md +14 -1
- package/babel.config.js +20 -0
- package/codecov.yml +6 -0
- package/index.html +5 -2
- package/jsconfig.json +19 -0
- package/netlify.toml +9 -0
- package/package.json +70 -62
- package/renovate.json +52 -0
- package/scripts/preversion.js +0 -1
- package/src/BookNavigator/assets/bookmark-colors.js +1 -1
- package/src/BookNavigator/assets/button-base.js +10 -2
- package/src/BookNavigator/assets/ia-logo.js +17 -0
- package/src/BookNavigator/assets/icon_checkmark.js +1 -1
- package/src/BookNavigator/assets/icon_close.js +1 -1
- package/src/BookNavigator/book-navigator.js +590 -0
- package/src/BookNavigator/bookmarks/bookmark-button.js +3 -2
- package/src/BookNavigator/bookmarks/bookmark-edit.js +3 -4
- package/src/BookNavigator/bookmarks/bookmarks-list.js +2 -3
- package/src/BookNavigator/bookmarks/bookmarks-loginCTA.js +4 -9
- package/src/BookNavigator/bookmarks/bookmarks-provider.js +27 -17
- package/src/BookNavigator/bookmarks/ia-bookmarks.js +116 -67
- package/src/BookNavigator/delete-modal-actions.js +1 -1
- package/src/BookNavigator/downloads/downloads-provider.js +36 -21
- package/src/BookNavigator/downloads/downloads.js +29 -25
- package/src/BookNavigator/search/search-provider.js +80 -28
- package/src/BookNavigator/search/search-results.js +29 -26
- package/src/BookNavigator/sharing.js +27 -0
- package/src/BookNavigator/viewable-files.js +95 -0
- package/src/BookNavigator/visual-adjustments/visual-adjustments-provider.js +13 -12
- package/src/BookNavigator/visual-adjustments/visual-adjustments.js +7 -7
- package/src/BookReader/BookModel.js +76 -41
- package/src/BookReader/DragScrollable.js +233 -0
- package/src/BookReader/ImageCache.js +48 -15
- package/src/BookReader/Mode1Up.js +56 -351
- package/src/BookReader/Mode1UpLit.js +388 -0
- package/src/BookReader/Mode2Up.js +73 -1318
- package/src/BookReader/Mode2UpLit.js +777 -0
- package/src/BookReader/ModeCoordinateSpace.js +29 -0
- package/src/BookReader/ModeSmoothZoom.js +312 -0
- package/src/BookReader/ModeThumb.js +19 -13
- package/src/BookReader/Navbar/Navbar.js +70 -54
- package/src/BookReader/PageContainer.js +116 -22
- package/src/BookReader/ReduceSet.js +3 -3
- package/src/BookReader/Toolbar/Toolbar.js +14 -41
- package/src/BookReader/events.js +2 -3
- package/src/BookReader/options.js +73 -15
- package/src/BookReader/utils/HTMLDimensionsCacher.js +44 -0
- package/src/BookReader/utils/ScrollClassAdder.js +31 -0
- package/src/BookReader/utils/SelectionObserver.js +45 -0
- package/src/BookReader/utils/classes.js +1 -1
- package/src/BookReader/utils.js +128 -13
- package/src/BookReader.js +562 -1078
- package/src/BookReaderPlugin.js +44 -0
- package/src/assets/icons/close-circle-dark.svg +1 -0
- package/src/assets/icons/magnify-minus.svg +3 -7
- package/src/assets/icons/magnify-plus.svg +3 -7
- package/src/assets/icons/voice.svg +1 -0
- package/src/assets/images/unviewable_page.png +0 -0
- package/src/css/BookReader.scss +1 -17
- package/src/css/_BRBookmarks.scss +1 -1
- package/src/css/_BRComponent.scss +1 -1
- package/src/css/_BRicon.scss +8 -2
- package/src/css/_BRmain.scss +33 -27
- package/src/css/_BRnav.scss +12 -42
- package/src/css/_BRpages.scss +170 -42
- package/src/css/_BRsearch.scss +68 -230
- package/src/css/_BRtoolbar.scss +5 -5
- package/src/css/_TextSelection.scss +87 -27
- package/src/css/_colorbox.scss +2 -2
- package/src/css/_controls.scss +24 -7
- package/src/css/_icons.scss +7 -1
- package/src/ia-bookreader/ia-bookreader.js +224 -0
- package/src/plugins/plugin.archive_analytics.js +84 -78
- package/src/plugins/plugin.autoplay.js +99 -104
- package/src/plugins/plugin.chapters.js +237 -191
- package/src/plugins/plugin.iframe.js +1 -1
- package/src/plugins/plugin.iiif.js +141 -0
- package/src/plugins/plugin.resume.js +53 -50
- package/src/plugins/plugin.text_selection.js +503 -175
- package/src/plugins/plugin.vendor-fullscreen.js +7 -7
- package/src/plugins/search/plugin.search.js +183 -121
- package/src/plugins/search/utils.js +43 -0
- package/src/plugins/search/view.js +67 -202
- package/src/plugins/tts/AbstractTTSEngine.js +75 -45
- package/src/plugins/tts/FestivalTTSEngine.js +21 -31
- package/src/plugins/tts/PageChunk.js +16 -23
- package/src/plugins/tts/PageChunkIterator.js +11 -17
- package/src/plugins/tts/WebTTSEngine.js +88 -72
- package/src/plugins/tts/plugin.tts.js +310 -350
- package/src/plugins/tts/utils.js +16 -26
- package/src/plugins/url/UrlPlugin.js +191 -0
- package/src/plugins/{plugin.url.js → url/plugin.url.js} +47 -18
- package/src/util/browserSniffing.js +22 -0
- package/src/util/docCookies.js +21 -2
- package/src/util/strings.js +1 -0
- package/tests/e2e/README.md +37 -0
- package/tests/e2e/autoplay.test.js +9 -6
- package/tests/e2e/base.test.js +8 -16
- package/tests/e2e/helpers/base.js +55 -50
- package/tests/e2e/helpers/debug.js +1 -1
- package/tests/e2e/helpers/mockSearch.js +19 -22
- package/tests/e2e/helpers/params.js +17 -0
- package/tests/e2e/helpers/rightToLeft.js +8 -14
- package/tests/e2e/helpers/search.js +73 -0
- package/tests/e2e/models/Navigation.js +20 -37
- package/tests/e2e/rightToLeft.test.js +4 -5
- package/tests/e2e/viewmode.test.js +40 -33
- package/tests/jest/BookNavigator/book-navigator.test.js +661 -0
- package/tests/jest/BookNavigator/bookmarks/bookmark-button.test.js +43 -0
- package/tests/{karma → jest}/BookNavigator/bookmarks/bookmark-edit.test.js +25 -26
- package/tests/{karma → jest}/BookNavigator/bookmarks/bookmarks-list.test.js +41 -42
- package/tests/jest/BookNavigator/bookmarks/ia-bookmarks.test.js +45 -0
- package/tests/jest/BookNavigator/downloads/downloads-provider.test.js +67 -0
- package/tests/jest/BookNavigator/downloads/downloads.test.js +53 -0
- package/tests/jest/BookNavigator/search/search-provider.test.js +167 -0
- package/tests/{karma/BookNavigator → jest/BookNavigator/search}/search-results.test.js +109 -60
- package/tests/jest/BookNavigator/sharing/sharing-provider.test.js +49 -0
- package/tests/jest/BookNavigator/viewable-files/viewable-files-provider.test.js +80 -0
- package/tests/jest/BookNavigator/visual-adjustments.test.js +200 -0
- package/tests/{BookReader → jest/BookReader}/BookModel.test.js +74 -14
- package/tests/jest/BookReader/BookReaderPublicFunctions.test.js +193 -0
- package/tests/{BookReader → jest/BookReader}/ImageCache.test.js +4 -4
- package/tests/jest/BookReader/Mode1UpLit.test.js +73 -0
- package/tests/jest/BookReader/Mode2Up.test.js +98 -0
- package/tests/jest/BookReader/Mode2UpLit.test.js +190 -0
- package/tests/jest/BookReader/ModeCoordinateSpace.test.js +16 -0
- package/tests/jest/BookReader/ModeSmoothZoom.test.js +218 -0
- package/tests/jest/BookReader/ModeThumb.test.js +71 -0
- package/tests/{BookReader → jest/BookReader}/Navbar/Navbar.test.js +42 -29
- package/tests/jest/BookReader/PageContainer.test.js +238 -0
- package/tests/{BookReader → jest/BookReader}/ReduceSet.test.js +1 -1
- package/tests/{BookReader → jest/BookReader}/Toolbar/Toolbar.test.js +3 -3
- package/tests/jest/BookReader/utils/HTMLDimensionsCacher.test.js +59 -0
- package/tests/jest/BookReader/utils/ScrollClassAdder.test.js +49 -0
- package/tests/jest/BookReader/utils/SelectionObserver.test.js +57 -0
- package/tests/{BookReader → jest/BookReader}/utils/classes.test.js +1 -1
- package/tests/jest/BookReader/utils.test.js +250 -0
- package/tests/jest/BookReader.keyboard.test.js +190 -0
- package/tests/{BookReader.options.test.js → jest/BookReader.options.test.js} +10 -2
- package/tests/{BookReader.test.js → jest/BookReader.test.js} +43 -53
- package/tests/jest/plugins/plugin.archive_analytics.test.js +20 -0
- package/tests/jest/plugins/plugin.autoplay.test.js +35 -0
- package/tests/jest/plugins/plugin.chapters.test.js +195 -0
- package/tests/{plugins → jest/plugins}/plugin.iframe.test.js +4 -4
- package/tests/{plugins → jest/plugins}/plugin.resume.test.js +22 -35
- package/tests/jest/plugins/plugin.text_selection.test.js +316 -0
- package/tests/{plugins → jest/plugins}/plugin.vendor-fullscreen.test.js +2 -2
- package/tests/{plugins → jest/plugins}/search/plugin.search.test.js +26 -47
- package/tests/{plugins → jest/plugins}/search/plugin.search.view.test.js +42 -9
- package/tests/jest/plugins/search/utils.js +25 -0
- package/tests/jest/plugins/search/utils.test.js +29 -0
- package/tests/{plugins → jest/plugins}/tts/AbstractTTSEngine.test.js +30 -10
- package/tests/{plugins → jest/plugins}/tts/FestivalTTSEngine.test.js +4 -4
- package/tests/{plugins → jest/plugins}/tts/PageChunk.test.js +1 -1
- package/tests/{plugins → jest/plugins}/tts/PageChunkIterator.test.js +3 -3
- package/tests/{plugins → jest/plugins}/tts/WebTTSEngine.test.js +47 -1
- package/tests/{plugins → jest/plugins}/tts/utils.test.js +1 -60
- package/tests/jest/plugins/url/UrlPlugin.test.js +198 -0
- package/tests/{plugins → jest/plugins/url}/plugin.url.test.js +57 -18
- package/tests/jest/setup.js +3 -0
- package/tests/{util → jest/util}/browserSniffing.test.js +1 -1
- package/tests/jest/util/docCookies.test.js +24 -0
- package/tests/{util → jest/util}/strings.test.js +1 -1
- package/tests/{utils.js → jest/utils.js} +38 -0
- package/webpack.config.js +16 -10
- package/.babelrc +0 -12
- package/.dependabot/config.yml +0 -6
- package/.testcaferc.json +0 -5
- package/BookReader/bookreader-component-bundle.js +0 -14330
- package/BookReader/bookreader-component-bundle.js.LICENSE.txt +0 -38
- package/BookReader/bookreader-component-bundle.js.map +0 -1
- package/BookReader/icons/sort-ascending.svg +0 -1
- package/BookReader/icons/sort-descending.svg +0 -1
- package/BookReader/jquery-1.10.1.js +0 -108
- package/BookReader/jquery-1.10.1.js.LICENSE.txt +0 -24
- package/BookReader/plugins/plugin.menu_toggle.js +0 -369
- package/BookReader/plugins/plugin.menu_toggle.js.map +0 -1
- package/BookReader/plugins/plugin.mobile_nav.js +0 -335
- package/BookReader/plugins/plugin.mobile_nav.js.map +0 -1
- package/BookReaderDemo/BookReaderJSAutoplay.js +0 -56
- package/BookReaderDemo/IIIFBookReader.js +0 -207
- package/BookReaderDemo/bookreader-template-bundle.js +0 -7178
- package/BookReaderDemo/demo-autoplay.html +0 -38
- package/BookReaderDemo/demo-iiif.js +0 -26
- package/BookReaderDemo/demo-plugin-menu-toggle.html +0 -34
- package/karma.conf.js +0 -23
- package/src/BookNavigator/BookModel.js +0 -14
- package/src/BookNavigator/BookNavigator.js +0 -452
- package/src/BookNavigator/assets/book-loader.js +0 -27
- package/src/BookNavigator/assets/icon_sort_ascending.js +0 -5
- package/src/BookNavigator/assets/icon_sort_descending.js +0 -5
- package/src/BookNavigator/br-fullscreen-mgr.js +0 -83
- package/src/BookNavigator/search/a-search-result.js +0 -55
- package/src/BookNavigator/volumes/volumes-provider.js +0 -108
- package/src/BookNavigator/volumes/volumes.js +0 -162
- package/src/BookReader/DebugConsole.js +0 -54
- package/src/BookReaderComponent/BookReaderComponent.js +0 -112
- package/src/ItemNavigator/ItemNavigator.js +0 -372
- package/src/ItemNavigator/providers/sharing.js +0 -29
- package/src/assets/icons/sort-ascending.svg +0 -1
- package/src/assets/icons/sort-descending.svg +0 -1
- package/src/css/_MobileNav.scss +0 -194
- package/src/dragscrollable-br.js +0 -261
- package/src/plugins/menu_toggle/plugin.menu_toggle.js +0 -324
- package/src/plugins/plugin.mobile_nav.js +0 -287
- package/tests/BookReader/BookReaderPublicFunctions.test.js +0 -171
- package/tests/BookReader/DebugConsole.test.js +0 -25
- package/tests/BookReader/Mode1Up.test.js +0 -164
- package/tests/BookReader/Mode2Up.test.js +0 -247
- package/tests/BookReader/PageContainer.test.js +0 -115
- package/tests/BookReader/utils.test.js +0 -109
- package/tests/e2e/helpers/desktopSearch.js +0 -72
- package/tests/e2e/helpers/mobileSearch.js +0 -85
- package/tests/e2e/ia-production/ia-prod-base.js +0 -17
- package/tests/karma/BookNavigator/book-navigator.test.js +0 -132
- package/tests/karma/BookNavigator/visual-adjustments.test.js +0 -201
- package/tests/karma/BookNavigator/volumes.test.js +0 -133
- package/tests/plugins/menu_toggle/plugin.menu_toggle.test.js +0 -68
- package/tests/plugins/plugin.archive_analytics.test.js +0 -23
- package/tests/plugins/plugin.autoplay.test.js +0 -52
- package/tests/plugins/plugin.chapters.test.js +0 -130
- package/tests/plugins/plugin.mobile_nav.test.js +0 -66
- package/tests/plugins/plugin.text_selection.test.js +0 -203
- package/tests/util/docCookies.test.js +0 -15
@@ -1,132 +0,0 @@
|
|
1
|
-
import {
|
2
|
-
html,
|
3
|
-
elementUpdated,
|
4
|
-
fixtureCleanup,
|
5
|
-
fixtureSync,
|
6
|
-
expect,
|
7
|
-
} from '@open-wc/testing';
|
8
|
-
import sinon from 'sinon';
|
9
|
-
|
10
|
-
import '../../../src/BookNavigator/BookNavigator.js';
|
11
|
-
import BRFullscreenMgr from '../../../src/BookNavigator/br-fullscreen-mgr.js';
|
12
|
-
|
13
|
-
const container = () => {
|
14
|
-
const item = {};
|
15
|
-
return html`
|
16
|
-
<book-navigator
|
17
|
-
.item=${item}
|
18
|
-
.baseHost
|
19
|
-
>
|
20
|
-
<div slot="bookreader">
|
21
|
-
<p class="visible-in-reader">now showing</p>
|
22
|
-
<div>
|
23
|
-
<p class="bunny">foo</p>
|
24
|
-
</
|
25
|
-
`;
|
26
|
-
}
|
27
|
-
|
28
|
-
beforeEach(() => {
|
29
|
-
const body = document.querySelector('body');
|
30
|
-
const brHook = document.createElement('div');
|
31
|
-
brHook.setAttribute('id', 'BookReader');
|
32
|
-
body.appendChild(brHook);
|
33
|
-
});
|
34
|
-
|
35
|
-
afterEach(() => {
|
36
|
-
window.br = null;
|
37
|
-
fixtureCleanup();
|
38
|
-
});
|
39
|
-
|
40
|
-
|
41
|
-
describe('<book-navigator>', () => {
|
42
|
-
describe('first update', () => {
|
43
|
-
it('binds global event listeners', async () => {
|
44
|
-
const el = fixtureSync(container());
|
45
|
-
const spy = sinon.spy(el, 'bindEventListeners');
|
46
|
-
await elementUpdated(el);
|
47
|
-
expect(spy.callCount).to.equal(1);
|
48
|
-
});
|
49
|
-
it('emits a BrBookNav:PostInit event', async () => {
|
50
|
-
let initEventFired = false;
|
51
|
-
window.addEventListener('BrBookNav:PostInit', (e) => {
|
52
|
-
initEventFired = true;
|
53
|
-
});
|
54
|
-
const el = fixtureSync(container());
|
55
|
-
const spy = sinon.spy(el, 'emitPostInit');
|
56
|
-
await elementUpdated(el);
|
57
|
-
|
58
|
-
expect(initEventFired).to.be.true;
|
59
|
-
expect(spy.callCount).to.equal(1);
|
60
|
-
});
|
61
|
-
});
|
62
|
-
|
63
|
-
it('handles global event: BookReader:PostInit', async () => {
|
64
|
-
const setTimeoutSpy = sinon.spy(window, 'setTimeout');
|
65
|
-
const brStub = {
|
66
|
-
resize: sinon.fake(),
|
67
|
-
currentIndex: sinon.fake(),
|
68
|
-
jumpToIndex: sinon.fake(),
|
69
|
-
el: '#BookReader'
|
70
|
-
};
|
71
|
-
|
72
|
-
const el = fixtureSync(container());
|
73
|
-
const initializeBookSubmenus = sinon.spy(el, 'initializeBookSubmenus');
|
74
|
-
|
75
|
-
await elementUpdated(el);
|
76
|
-
window.dispatchEvent(new CustomEvent('BookReader:PostInit', {
|
77
|
-
detail: { props: brStub }
|
78
|
-
}));
|
79
|
-
await elementUpdated(el);
|
80
|
-
|
81
|
-
expect(initializeBookSubmenus.callCount).to.equal(1);
|
82
|
-
expect(el.bookreader).to.equal(brStub); // sets bookreader
|
83
|
-
expect(el.bookReaderLoaded).to.be.true; // notes bookreader is loaded
|
84
|
-
expect(el.bookReaderCannotLoad).to.be.false;
|
85
|
-
expect(el.fullscreenMgr).to.an.instanceof(BRFullscreenMgr);
|
86
|
-
expect(el.brResizeObserver).to.an.instanceof(window.ResizeObserver);
|
87
|
-
expect(setTimeoutSpy.callCount).to.equal(1); // resizes at end
|
88
|
-
});
|
89
|
-
|
90
|
-
it('resizes bookreader when side menu toggles', async () => {
|
91
|
-
const el = fixtureSync(container());
|
92
|
-
const brStub = {
|
93
|
-
resize: sinon.fake(),
|
94
|
-
currentIndex: sinon.fake(),
|
95
|
-
jumpToIndex: sinon.fake()
|
96
|
-
}
|
97
|
-
el.bookreader = brStub;
|
98
|
-
await elementUpdated(el);
|
99
|
-
|
100
|
-
el.sideMenuOpen = true;
|
101
|
-
await elementUpdated(el);
|
102
|
-
|
103
|
-
expect(el.bookreader.resize.callCount).to.equal(1);
|
104
|
-
expect(el.bookreader.currentIndex.callCount).to.equal(1);
|
105
|
-
expect(el.bookreader.jumpToIndex.callCount).to.equal(1);
|
106
|
-
|
107
|
-
el.sideMenuOpen = false;
|
108
|
-
await elementUpdated(el);
|
109
|
-
|
110
|
-
expect(el.bookreader.resize.callCount).to.equal(2);
|
111
|
-
expect(el.bookreader.currentIndex.callCount).to.equal(2);
|
112
|
-
expect(el.bookreader.jumpToIndex.callCount).to.equal(2);
|
113
|
-
});
|
114
|
-
it('does not resize bookreader if animating', async () => {
|
115
|
-
const el = fixtureSync(container());
|
116
|
-
const brStub = {
|
117
|
-
animating: true, // <-- testing for this
|
118
|
-
resize: sinon.fake(),
|
119
|
-
currentIndex: sinon.fake(),
|
120
|
-
jumpToIndex: sinon.fake()
|
121
|
-
}
|
122
|
-
el.bookreader = brStub;
|
123
|
-
await elementUpdated(el);
|
124
|
-
|
125
|
-
el.sideMenuOpen = true;
|
126
|
-
await elementUpdated(el);
|
127
|
-
|
128
|
-
expect(el.bookreader.resize.callCount).to.equal(0);
|
129
|
-
expect(el.bookreader.currentIndex.callCount).to.equal(0);
|
130
|
-
expect(el.bookreader.jumpToIndex.callCount).to.equal(0);
|
131
|
-
});
|
132
|
-
});
|
@@ -1,201 +0,0 @@
|
|
1
|
-
import {
|
2
|
-
html,
|
3
|
-
fixture,
|
4
|
-
expect,
|
5
|
-
oneEvent,
|
6
|
-
} from '@open-wc/testing';
|
7
|
-
import sinon from 'sinon';
|
8
|
-
import { IABookVisualAdjustments } from '../../../src/BookNavigator/visual-adjustments/visual-adjustments.js';
|
9
|
-
|
10
|
-
const options = [{
|
11
|
-
id: 'contrast',
|
12
|
-
name: 'Adjust contrast',
|
13
|
-
active: true,
|
14
|
-
min: 0,
|
15
|
-
max: 150,
|
16
|
-
step: 1,
|
17
|
-
value: 100,
|
18
|
-
}, {
|
19
|
-
id: 'invert',
|
20
|
-
name: 'Invert colors',
|
21
|
-
active: false,
|
22
|
-
}, {
|
23
|
-
id: 'brightness',
|
24
|
-
name: 'Adjust brightness',
|
25
|
-
active: false,
|
26
|
-
value: 100,
|
27
|
-
}];
|
28
|
-
|
29
|
-
const container = (renderHeader = false) => (
|
30
|
-
html`<ia-book-visual-adjustments .options=${options} ?renderHeader=${renderHeader}></ia-book-visual-adjustments>`
|
31
|
-
);
|
32
|
-
|
33
|
-
describe('<ia-book-visual-adjustments>', () => {
|
34
|
-
afterEach(() => {
|
35
|
-
sinon.restore();
|
36
|
-
});
|
37
|
-
|
38
|
-
it('sets default properties', async () => {
|
39
|
-
const el = await fixture(container());
|
40
|
-
|
41
|
-
expect(el.options).to.exist;
|
42
|
-
expect(el.options.length).to.equal(options.length);
|
43
|
-
expect(el.renderHeader).to.exist;
|
44
|
-
expect(el.renderHeader).to.be.false;
|
45
|
-
expect(el.activeCount).to.exist;
|
46
|
-
expect(el.showZoomControls).to.be.true;
|
47
|
-
});
|
48
|
-
|
49
|
-
it('renders all properties of a visual adjustment option', async () => {
|
50
|
-
const el = await fixture(container());
|
51
|
-
|
52
|
-
await el.updateComplete;
|
53
|
-
|
54
|
-
const label = el.shadowRoot.querySelector('label');
|
55
|
-
const name = label.querySelector('.name');
|
56
|
-
const checkbox = label.querySelector('input');
|
57
|
-
expect(name.innerText).to.equal(options[0].name);
|
58
|
-
expect(checkbox.checked).to.equal(true);
|
59
|
-
});
|
60
|
-
|
61
|
-
it('can render header with active options count', async () => {
|
62
|
-
const renderHeader = true;
|
63
|
-
const el = await fixture(container(renderHeader));
|
64
|
-
expect(el.shadowRoot.querySelector('header p').innerText).to.include('1');
|
65
|
-
});
|
66
|
-
|
67
|
-
it('does not render active options count element when none are selected', async () => {
|
68
|
-
const el = await fixture(container());
|
69
|
-
|
70
|
-
el.options = [options[1]];
|
71
|
-
await el.updateComplete;
|
72
|
-
|
73
|
-
expect(el.shadowRoot.querySelector('header p')).not.to.exist;
|
74
|
-
});
|
75
|
-
|
76
|
-
it('changes option\'s active state when input changed', async () => {
|
77
|
-
const el = await fixture(container());
|
78
|
-
|
79
|
-
el.shadowRoot.querySelector('li input').dispatchEvent(new Event('change'));
|
80
|
-
await el.updateComplete;
|
81
|
-
|
82
|
-
expect(el.options[0].active).to.equal(false);
|
83
|
-
});
|
84
|
-
|
85
|
-
it('renders zoom in and out controls when enabled', async () => {
|
86
|
-
const el = await fixture(container());
|
87
|
-
|
88
|
-
expect(el.shadowRoot.querySelector('.zoom_out')).to.exist;
|
89
|
-
expect(el.shadowRoot.querySelector('.zoom_in')).to.exist;
|
90
|
-
});
|
91
|
-
|
92
|
-
it('does not render zoom controls when disabled', async () => {
|
93
|
-
const el = await fixture(container());
|
94
|
-
|
95
|
-
el.showZoomControls = false;
|
96
|
-
await el.updateComplete;
|
97
|
-
|
98
|
-
expect(el.shadowRoot.querySelector('.zoom_out')).not.to.exist;
|
99
|
-
expect(el.shadowRoot.querySelector('.zoom_in')).not.to.exist;
|
100
|
-
});
|
101
|
-
|
102
|
-
describe('Custom events', () => {
|
103
|
-
it('prepareEventDetails returns proper params', async () => {
|
104
|
-
const el = await fixture(container());
|
105
|
-
await el.updateComplete;
|
106
|
-
const params = el.prepareEventDetails();
|
107
|
-
|
108
|
-
expect(params.activeCount).to.exist;
|
109
|
-
expect(typeof (params.activeCount)).to.be.equal('number');
|
110
|
-
expect(params.changedOptionId).to.exist;
|
111
|
-
expect(typeof (params.changedOptionId)).to.be.equal('string');
|
112
|
-
expect(params.options).to.exist;
|
113
|
-
expect(params.options.length).to.exist;
|
114
|
-
expect(params.options.length).to.be.greaterThan(0);
|
115
|
-
});
|
116
|
-
it('emitOptionChangedEvent calls for the params', async () => {
|
117
|
-
IABookVisualAdjustments.prototype.prepareEventDetails = sinon.fake();
|
118
|
-
const el = await fixture(container());
|
119
|
-
await el.updateComplete;
|
120
|
-
|
121
|
-
expect(el.prepareEventDetails.callCount).to.equal(1);
|
122
|
-
});
|
123
|
-
it('triggers an emitOptionChangedEvent event at firstUpdate', async () => {
|
124
|
-
IABookVisualAdjustments.prototype.emitOptionChangedEvent = sinon.fake();
|
125
|
-
const el = await fixture(container());
|
126
|
-
|
127
|
-
expect(el.emitOptionChangedEvent.callCount).to.equal(1);
|
128
|
-
});
|
129
|
-
|
130
|
-
it('triggers an emitOptionChangedEvent event when a checkbox\'s change event fires', async () => {
|
131
|
-
IABookVisualAdjustments.prototype.emitOptionChangedEvent = sinon.fake();
|
132
|
-
const el = await fixture(container());
|
133
|
-
|
134
|
-
expect(el.emitOptionChangedEvent.callCount).to.equal(1); // firstUpdate fire
|
135
|
-
|
136
|
-
el.shadowRoot.querySelector('li input').dispatchEvent(new Event('change'));
|
137
|
-
expect(el.emitOptionChangedEvent.callCount).to.equal(2);
|
138
|
-
});
|
139
|
-
|
140
|
-
it('triggers an emitOptionChangedEvent event when a range\'s change event fires', async () => {
|
141
|
-
IABookVisualAdjustments.prototype.emitOptionChangedEvent = sinon.fake();
|
142
|
-
|
143
|
-
const el = await fixture(container());
|
144
|
-
expect(el.emitOptionChangedEvent.callCount).to.equal(1); // firstUpdate fire
|
145
|
-
|
146
|
-
el.shadowRoot.querySelector('[name="brightness_range"]').dispatchEvent(new Event('change'));
|
147
|
-
expect(el.emitOptionChangedEvent.callCount).to.equal(2);
|
148
|
-
});
|
149
|
-
|
150
|
-
it('emits a zoom out event when zoom out button clicked', async () => {
|
151
|
-
const el = await fixture(container());
|
152
|
-
|
153
|
-
setTimeout(() => (
|
154
|
-
el.shadowRoot.querySelector('.zoom_out').click()
|
155
|
-
));
|
156
|
-
const response = await oneEvent(el, 'visualAdjustmentZoomOut');
|
157
|
-
|
158
|
-
expect(response).to.exist;
|
159
|
-
});
|
160
|
-
|
161
|
-
it('emits a zoom in event when zoom in button clicked', async () => {
|
162
|
-
const el = await fixture(container());
|
163
|
-
|
164
|
-
setTimeout(() => (
|
165
|
-
el.shadowRoot.querySelector('.zoom_in').click()
|
166
|
-
));
|
167
|
-
const response = await oneEvent(el, 'visualAdjustmentZoomIn');
|
168
|
-
|
169
|
-
expect(response).to.exist;
|
170
|
-
});
|
171
|
-
});
|
172
|
-
|
173
|
-
it('sets range defaults when none supplied', async () => {
|
174
|
-
const el = await fixture(container());
|
175
|
-
const brightnessRange = el.shadowRoot.querySelector('[name="brightness_range"]');
|
176
|
-
|
177
|
-
expect(brightnessRange.getAttribute('min')).to.equal('0');
|
178
|
-
expect(brightnessRange.getAttribute('max')).to.equal('100');
|
179
|
-
expect(brightnessRange.getAttribute('step')).to.equal('1');
|
180
|
-
});
|
181
|
-
|
182
|
-
it('sets the updated range value on the options prop', async () => {
|
183
|
-
const el = await fixture(container());
|
184
|
-
const { id } = options[0];
|
185
|
-
const newValue = 120;
|
186
|
-
|
187
|
-
el.setRangeValue(id, newValue);
|
188
|
-
await el.updateComplete;
|
189
|
-
|
190
|
-
expect(el.options[0].value).to.equal(newValue);
|
191
|
-
});
|
192
|
-
|
193
|
-
it('triggers a setRangeValue event when a range\'s input event fires', async () => {
|
194
|
-
IABookVisualAdjustments.prototype.setRangeValue = sinon.fake();
|
195
|
-
|
196
|
-
const el = await fixture(container());
|
197
|
-
|
198
|
-
el.shadowRoot.querySelector('[name="brightness_range"]').dispatchEvent(new Event('input'));
|
199
|
-
expect(el.setRangeValue.callCount).to.equal(1);
|
200
|
-
});
|
201
|
-
});
|
@@ -1,133 +0,0 @@
|
|
1
|
-
import {
|
2
|
-
html,
|
3
|
-
fixture,
|
4
|
-
expect
|
5
|
-
} from '@open-wc/testing';
|
6
|
-
import sinon from 'sinon';
|
7
|
-
// import { Volumes } from '../../../src/BookNavigator/volumes/volumes.js';
|
8
|
-
|
9
|
-
const stub = {
|
10
|
-
"success": true,
|
11
|
-
"value": {
|
12
|
-
"identifier": "SubBookTest",
|
13
|
-
"mediatype": "texts",
|
14
|
-
"files": {
|
15
|
-
"by_url": {
|
16
|
-
"/details/SubBookTest": {
|
17
|
-
"url_path": "/details/SubBookTest",
|
18
|
-
"file_prefix": "book1/GPORFP",
|
19
|
-
"title": "book1/GPORFP.pdf",
|
20
|
-
"file_source": "/book1/GPORFP_jp2.zip"
|
21
|
-
},
|
22
|
-
"/details/SubBookTest/subdir/book2/brewster_kahle_internet_archive": {
|
23
|
-
"url_path": "/details/SubBookTest/subdir/book2/brewster_kahle_internet_archive",
|
24
|
-
"file_prefix": "subdir/book2/brewster_kahle_internet_archive",
|
25
|
-
"title": "subdir/book2/brewster_kahle_internet_archive.pdf",
|
26
|
-
"file_source": "/subdir/book2/brewster_kahle_internet_archive_jp2.zip"
|
27
|
-
},
|
28
|
-
"/details/SubBookTest/subdir/subsubdir/book3/Rfp008011ResponseInternetArchive-without-resume": {
|
29
|
-
"url_path": "/details/SubBookTest/subdir/subsubdir/book3/Rfp008011ResponseInternetArchive-without-resume",
|
30
|
-
"file_prefix": "subdir/subsubdir/book3/Rfp008011ResponseInternetArchive-without-resume",
|
31
|
-
"title": "subdir/subsubdir/book3/Rfp008011ResponseInternetArchive-without-resume.pdf",
|
32
|
-
"file_source": "/subdir/subsubdir/book3/Rfp008011ResponseInternetArchive-without-resume_jp2.zip"
|
33
|
-
}
|
34
|
-
},
|
35
|
-
"main_dir": "/2/items/SubBookTest"
|
36
|
-
}
|
37
|
-
}
|
38
|
-
};
|
39
|
-
|
40
|
-
|
41
|
-
const options = [{
|
42
|
-
id: 'contrast',
|
43
|
-
name: 'Adjust contrast',
|
44
|
-
active: true,
|
45
|
-
min: 0,
|
46
|
-
max: 150,
|
47
|
-
step: 1,
|
48
|
-
value: 100,
|
49
|
-
}, {
|
50
|
-
id: 'invert',
|
51
|
-
name: 'Invert colors',
|
52
|
-
active: false,
|
53
|
-
}, {
|
54
|
-
id: 'brightness',
|
55
|
-
name: 'Adjust brightness',
|
56
|
-
active: false,
|
57
|
-
value: 100,
|
58
|
-
}];
|
59
|
-
|
60
|
-
const container = (hostUrl = false) => (
|
61
|
-
html`<viewable-files .viewableFiles=${options}} .hostUrl="https://archive.org"></viewable-files>`
|
62
|
-
);
|
63
|
-
|
64
|
-
describe('<viewable-files>', () => {
|
65
|
-
afterEach(() => {
|
66
|
-
sinon.restore();
|
67
|
-
});
|
68
|
-
|
69
|
-
it('sets default properties', async () => {
|
70
|
-
const el = await fixture(container());
|
71
|
-
|
72
|
-
expect(el.options).to.exist;
|
73
|
-
expect(el.options.length).to.equal(options.length);
|
74
|
-
expect(el.renderHeader).to.exist;
|
75
|
-
expect(el.renderHeader).to.be.false;
|
76
|
-
expect(el.activeCount).to.exist;
|
77
|
-
expect(el.showZoomControls).to.be.true;
|
78
|
-
});
|
79
|
-
|
80
|
-
// it('renders all properties of a visual adjustment option', async () => {
|
81
|
-
// const el = await fixture(container());
|
82
|
-
|
83
|
-
// await el.updateComplete;
|
84
|
-
|
85
|
-
// const label = el.shadowRoot.querySelector('label');
|
86
|
-
// const name = label.querySelector('.name');
|
87
|
-
// const checkbox = label.querySelector('input');
|
88
|
-
// expect(name.innerText).to.equal(options[0].name);
|
89
|
-
// expect(checkbox.checked).to.equal(true);
|
90
|
-
// });
|
91
|
-
|
92
|
-
// it('can render header with active options count', async () => {
|
93
|
-
// const renderHeader = true;
|
94
|
-
// const el = await fixture(container(renderHeader));
|
95
|
-
// expect(el.shadowRoot.querySelector('header p').innerText).to.include('1');
|
96
|
-
// });
|
97
|
-
|
98
|
-
// it('does not render active options count element when none are selected', async () => {
|
99
|
-
// const el = await fixture(container());
|
100
|
-
|
101
|
-
// el.options = [options[1]];
|
102
|
-
// await el.updateComplete;
|
103
|
-
|
104
|
-
// expect(el.shadowRoot.querySelector('header p')).not.to.exist;
|
105
|
-
// });
|
106
|
-
|
107
|
-
// it('changes option\'s active state when input changed', async () => {
|
108
|
-
// const el = await fixture(container());
|
109
|
-
|
110
|
-
// el.shadowRoot.querySelector('li input').dispatchEvent(new Event('change'));
|
111
|
-
// await el.updateComplete;
|
112
|
-
|
113
|
-
// expect(el.options[0].active).to.equal(false);
|
114
|
-
// });
|
115
|
-
|
116
|
-
// it('renders zoom in and out controls when enabled', async () => {
|
117
|
-
// const el = await fixture(container());
|
118
|
-
|
119
|
-
// expect(el.shadowRoot.querySelector('.zoom_out')).to.exist;
|
120
|
-
// expect(el.shadowRoot.querySelector('.zoom_in')).to.exist;
|
121
|
-
// });
|
122
|
-
|
123
|
-
// it('does not render zoom controls when disabled', async () => {
|
124
|
-
// const el = await fixture(container());
|
125
|
-
|
126
|
-
// el.showZoomControls = false;
|
127
|
-
// await el.updateComplete;
|
128
|
-
|
129
|
-
// expect(el.shadowRoot.querySelector('.zoom_out')).not.to.exist;
|
130
|
-
// expect(el.shadowRoot.querySelector('.zoom_in')).not.to.exist;
|
131
|
-
// });
|
132
|
-
|
133
|
-
});
|
@@ -1,68 +0,0 @@
|
|
1
|
-
|
2
|
-
import BookReader from '../../../src/BookReader.js';
|
3
|
-
import '../../../src/plugins/menu_toggle/plugin.menu_toggle.js';
|
4
|
-
|
5
|
-
|
6
|
-
let br;
|
7
|
-
let hideFlag;
|
8
|
-
beforeAll(() => {
|
9
|
-
$.fx.off = true;
|
10
|
-
const OGSpeed = $.speed;
|
11
|
-
$.speed = function(_speed, easing, callback) {
|
12
|
-
return OGSpeed(0, easing, callback);
|
13
|
-
};
|
14
|
-
document.body.innerHTML = '<div id="BookReader">';
|
15
|
-
br = new BookReader();
|
16
|
-
br.init();
|
17
|
-
});
|
18
|
-
|
19
|
-
afterEach(() => {
|
20
|
-
$.fx.off = false;
|
21
|
-
jest.clearAllMocks();
|
22
|
-
});
|
23
|
-
|
24
|
-
describe('Plugin: Menu Toggle', () => {
|
25
|
-
test('has option flag', () => {
|
26
|
-
expect(BookReader.defaultOptions.enableMenuToggle).toEqual(true);
|
27
|
-
});
|
28
|
-
|
29
|
-
test('core code has animation consts', () => {
|
30
|
-
expect(BookReader.constNavAnimationDuration).toEqual(300);
|
31
|
-
expect(BookReader.constResizeAnimationDuration).toEqual(100);
|
32
|
-
})
|
33
|
-
|
34
|
-
test('core code has registered event: `navToggled`', () => {
|
35
|
-
expect(BookReader.eventNames.navToggled).toBeTruthy();
|
36
|
-
})
|
37
|
-
|
38
|
-
test('when bookreader loads, the menu shows', () => {
|
39
|
-
expect($('.BRfooter').hasClass('js-menu-hide')).toEqual(false);
|
40
|
-
expect($('.BRtoolbar').hasClass('js-menu-hide')).toEqual(false);
|
41
|
-
})
|
42
|
-
|
43
|
-
test('clicking on background hides the menu', () => {
|
44
|
-
expect($('.BRfooter').hasClass('js-menu-hide')).toEqual(false);
|
45
|
-
expect($('.BRtoolbar').hasClass('js-menu-hide')).toEqual(false);
|
46
|
-
$('.BRcontainer').click();
|
47
|
-
expect($('.BRfooter').hasClass('js-menu-hide')).toEqual(true);
|
48
|
-
expect($('.BRtoolbar').hasClass('js-menu-hide')).toEqual(true);
|
49
|
-
});
|
50
|
-
|
51
|
-
test('core function `setNavigationView` is called `hideNavigation` is called', () => {
|
52
|
-
br.setNavigationView = jest.fn((arg) => hideFlag = arg);
|
53
|
-
|
54
|
-
br.hideNavigation();
|
55
|
-
expect(br.setNavigationView).toHaveBeenCalled();
|
56
|
-
expect(hideFlag).toEqual(true);
|
57
|
-
});
|
58
|
-
|
59
|
-
test('core function `setNavigationView` is called `showNavigation` is called', () => {
|
60
|
-
br.setNavigationView = jest.fn((arg) => hideFlag = arg);
|
61
|
-
br.navigationIsVisible = jest.fn(() => false);
|
62
|
-
|
63
|
-
br.showNavigation();
|
64
|
-
expect(br.setNavigationView).toHaveBeenCalled();
|
65
|
-
expect(br.navigationIsVisible).toHaveBeenCalled();
|
66
|
-
expect(hideFlag).toEqual(undefined);
|
67
|
-
});
|
68
|
-
});
|
@@ -1,23 +0,0 @@
|
|
1
|
-
import sinon from 'sinon';
|
2
|
-
import BookReader from '../../src/BookReader.js';
|
3
|
-
import '../../src/plugins/plugin.archive_analytics.js';
|
4
|
-
|
5
|
-
describe('archiveAnalyticsSendEvent', () => {
|
6
|
-
const sendEvent = BookReader.prototype.archiveAnalyticsSendEvent;
|
7
|
-
|
8
|
-
test('logs if debug set to true', () => {
|
9
|
-
const stub = sinon.stub(console, 'log');
|
10
|
-
const FAKE_BR = { options: { enableArchiveAnalytics: true, debugArchiveAnaltyics: true }};
|
11
|
-
sendEvent.call(FAKE_BR);
|
12
|
-
expect(stub.callCount).toBe(1);
|
13
|
-
stub.restore();
|
14
|
-
});
|
15
|
-
|
16
|
-
test('Does not error if window.archive_analytics is undefined', () => {
|
17
|
-
const spy = sinon.spy(sendEvent);
|
18
|
-
const FAKE_BR = { options: { enableArchiveAnalytics: true }};
|
19
|
-
spy.call(FAKE_BR);
|
20
|
-
expect(spy.threw()).toBe(false);
|
21
|
-
});
|
22
|
-
});
|
23
|
-
|
@@ -1,52 +0,0 @@
|
|
1
|
-
|
2
|
-
import BookReader from '../../src/BookReader.js';
|
3
|
-
import '../../src/plugins/plugin.autoplay.js';
|
4
|
-
|
5
|
-
|
6
|
-
let br;
|
7
|
-
beforeEach(() => {
|
8
|
-
document.body.innerHTML = '<div id="BookReader">';
|
9
|
-
br = new BookReader();
|
10
|
-
br.init();
|
11
|
-
});
|
12
|
-
|
13
|
-
afterEach(() => {
|
14
|
-
jest.clearAllMocks();
|
15
|
-
});
|
16
|
-
|
17
|
-
describe('Plugin: Menu Toggle', () => {
|
18
|
-
test('has option flag', () => {
|
19
|
-
expect(BookReader.defaultOptions.enableAutoPlayPlugin).toEqual(true);
|
20
|
-
});
|
21
|
-
test('has added BR property: auto', () => {
|
22
|
-
expect(br).toHaveProperty('auto');
|
23
|
-
expect(br.auto).toEqual(false);
|
24
|
-
});
|
25
|
-
test('has added BR property: autoTimer', () => {
|
26
|
-
expect(br).toHaveProperty('autoTimer');
|
27
|
-
expect(br.autoTimer).toEqual(null);
|
28
|
-
});
|
29
|
-
test('has added BR property: flipDelay', () => {
|
30
|
-
expect(br).toHaveProperty('flipDelay');
|
31
|
-
expect(br.flipDelay).toBeTruthy();
|
32
|
-
expect(br.flipDelay).toBeGreaterThan(1);
|
33
|
-
});
|
34
|
-
test('autoplay does not start when BookReaderInitializes', () => {
|
35
|
-
br.autoToggle = jest.fn();
|
36
|
-
br.init();
|
37
|
-
expect(br.autoToggle).toHaveBeenCalledTimes(0);
|
38
|
-
});
|
39
|
-
test('autoplay will run without `flipSpeed` parameters', () => {
|
40
|
-
const initialAutoTimer = br.autoTimer;
|
41
|
-
br.flipFwdToIndex = jest.fn();
|
42
|
-
br.autoStop = jest.fn();
|
43
|
-
br.init();
|
44
|
-
br.autoToggle();
|
45
|
-
// internally referenced functions that fire
|
46
|
-
expect(br.flipFwdToIndex).toHaveBeenCalledTimes(1);
|
47
|
-
|
48
|
-
expect(initialAutoTimer).toBeFalsy();
|
49
|
-
// br.autoTimer changes when autoToggle turns on
|
50
|
-
expect(br.autoTimer).toBeTruthy();
|
51
|
-
});
|
52
|
-
});
|