@internetarchive/ia-book-actions 0.0.14 → 0.0.15-event1

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@internetarchive/ia-book-actions",
3
- "version": "0.0.14",
3
+ "version": "0.0.15-event1",
4
4
  "description": "Bookreader actions for borrowable book",
5
5
  "author": "Internet Archive",
6
6
  "license": "AGPL-3.0-only",
@@ -13,9 +13,9 @@
13
13
  "start": "web-dev-server",
14
14
  "lint": "eslint --ext .js,.html . --ignore-path .gitignore && prettier \"**/*.js\" --check --ignore-path .gitignore",
15
15
  "format": "eslint --ext .js,.html . --fix --ignore-path .gitignore && prettier \"**/*.js\" --write --ignore-path .gitignore",
16
- "test": "yarn run lint && web-test-runner --coverage",
17
- "test:fast": "web-test-runner --coverage",
18
- "test:watch": "web-test-runner --watch"
16
+ "test": "yarn run lint && yarn test:fast",
17
+ "test:fast": "web-test-runner --coverage --playwright --browsers chromium firefox webkit",
18
+ "test:watch": "web-test-runner --watch --playwright --browsers chromium firefox webkit"
19
19
  },
20
20
  "dependencies": {
21
21
  "@internetarchive/ia-icons": "^1.2.2",
@@ -33,7 +33,8 @@
33
33
  "@open-wc/testing": "^2.0.0",
34
34
  "@web/dev-server": "^0.1.1",
35
35
  "@web/dev-server-esbuild": "^0.2.16",
36
- "@web/test-runner": "^0.11.5",
36
+ "@web/test-runner": "^0.11.7",
37
+ "@web/test-runner-playwright": "^0.8.8",
37
38
  "eslint": "^7.32.0",
38
39
  "eslint-config-prettier": "^6.11.0",
39
40
  "eslint-plugin-import": "^2.22.1",
@@ -13,6 +13,10 @@ import GetLendingActions from './core/services/get-lending-actions.js';
13
13
  import { mobileContainerWidth } from './core/config/constants.js';
14
14
  import { LoanTokenPoller } from './core/services/loan-token-poller.js';
15
15
 
16
+ export const events = {
17
+ browseExpired: 'IABookReader:BrowsingHasExpired',
18
+ };
19
+
16
20
  export default class IABookActions extends LitElement {
17
21
  static get properties() {
18
22
  return {
@@ -162,6 +166,15 @@ export default class IABookActions extends LitElement {
162
166
  this.lendingStatus?.browsingExpired;
163
167
  if (hasExpired) {
164
168
  this.tokenPoller?.disconnectedInterval();
169
+ /** Global event - always fire */
170
+ console.log("BROWSE EXPIRED - DISPATCHING: ", events.browseExpired);
171
+ this.dispatchEvent(
172
+ new Event(events.browseExpired, {
173
+ bubbles: true,
174
+ cancelable: false,
175
+ composed: true,
176
+ })
177
+ );
165
178
  return;
166
179
  }
167
180
 
@@ -257,12 +257,10 @@ describe('Browsing expired status', () => {
257
257
  expect(el.primaryActions[0].text).to.equal('Borrow again');
258
258
  });
259
259
 
260
- it('Expiring book cancels interval', async () => {
260
+ it('Expiring book cancels interval & emits event', async () => {
261
261
  const baseStatus = {
262
262
  is_lendable: true,
263
263
  user_has_browsed: false,
264
- browseHasExpired: false,
265
- secondsLeftOnLoan: 1,
266
264
  };
267
265
  const el = await fixture(
268
266
  container({
@@ -270,6 +268,13 @@ describe('Browsing expired status', () => {
270
268
  lendingStatus: baseStatus,
271
269
  })
272
270
  );
271
+
272
+ let eventReceived = false;
273
+ const listener = () => {
274
+ eventReceived = true;
275
+ };
276
+ el.addEventListener('IABookReader:BrowsingHasExpired', listener);
277
+
273
278
  const browsingStatus = { ...baseStatus, user_has_browsed: true };
274
279
  el.lendingStatus = browsingStatus;
275
280
  await el.updateComplete;
@@ -283,6 +288,7 @@ describe('Browsing expired status', () => {
283
288
  await el.updateComplete;
284
289
  await aTimeout(1500); // wait for 1.5 sec
285
290
 
291
+ expect(eventReceived).to.equal(true);
286
292
  expect(el.primaryTitle).contains('Your loan has expired.');
287
293
  expect(el.primaryActions[0].text).to.equal('Borrow again');
288
294
  expect(el.tokenPoller.loanTokenInterval).to.equal(undefined);