@dhis2/app-service-offline 3.8.0 → 3.9.1

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 (61) hide show
  1. package/build/cjs/__tests__/integration.test.js +37 -24
  2. package/build/cjs/index.js +18 -10
  3. package/build/cjs/lib/__tests__/clear-sensitive-caches.test.js +5 -1
  4. package/build/cjs/lib/__tests__/{online-status.test.js → network-status.test.js} +41 -20
  5. package/build/cjs/lib/__tests__/offline-provider.test.js +5 -1
  6. package/build/cjs/lib/__tests__/use-cacheable-section.test.js +77 -35
  7. package/build/cjs/lib/__tests__/{use-online-staus-message.test.js → use-online-status-message.test.js} +8 -5
  8. package/build/cjs/lib/cacheable-section-state.js +17 -13
  9. package/build/cjs/lib/cacheable-section.js +14 -12
  10. package/build/cjs/lib/clear-sensitive-caches.js +9 -5
  11. package/build/cjs/lib/dhis2-connection-status/dev-debug-log.js +26 -0
  12. package/build/cjs/lib/dhis2-connection-status/dhis2-connection-status.js +224 -0
  13. package/build/cjs/lib/dhis2-connection-status/dhis2-connection-status.test.js +841 -0
  14. package/build/cjs/lib/dhis2-connection-status/index.js +19 -0
  15. package/build/cjs/lib/dhis2-connection-status/is-ping-available.js +43 -0
  16. package/build/cjs/lib/dhis2-connection-status/is-ping-available.test.js +76 -0
  17. package/build/cjs/lib/dhis2-connection-status/smart-interval.js +211 -0
  18. package/build/cjs/lib/dhis2-connection-status/use-ping-query.js +21 -0
  19. package/build/cjs/lib/global-state-service.js +16 -11
  20. package/build/cjs/lib/{online-status.js → network-status.js} +8 -5
  21. package/build/cjs/lib/offline-interface.js +7 -4
  22. package/build/cjs/lib/offline-provider.js +9 -5
  23. package/build/cjs/lib/online-status-message.js +5 -4
  24. package/build/cjs/utils/render-counter.js +6 -4
  25. package/build/cjs/utils/test-mocks.js +17 -10
  26. package/build/es/__tests__/integration.test.js +37 -24
  27. package/build/es/index.js +5 -3
  28. package/build/es/lib/__tests__/clear-sensitive-caches.test.js +5 -1
  29. package/build/es/lib/__tests__/{online-status.test.js → network-status.test.js} +35 -14
  30. package/build/es/lib/__tests__/offline-provider.test.js +5 -1
  31. package/build/es/lib/__tests__/use-cacheable-section.test.js +77 -34
  32. package/build/es/lib/__tests__/{use-online-staus-message.test.js → use-online-status-message.test.js} +8 -5
  33. package/build/es/lib/cacheable-section-state.js +14 -10
  34. package/build/es/lib/cacheable-section.js +13 -11
  35. package/build/es/lib/clear-sensitive-caches.js +8 -4
  36. package/build/es/lib/dhis2-connection-status/dev-debug-log.js +20 -0
  37. package/build/es/lib/dhis2-connection-status/dhis2-connection-status.js +194 -0
  38. package/build/es/lib/dhis2-connection-status/dhis2-connection-status.test.js +831 -0
  39. package/build/es/lib/dhis2-connection-status/index.js +1 -0
  40. package/build/es/lib/dhis2-connection-status/is-ping-available.js +36 -0
  41. package/build/es/lib/dhis2-connection-status/is-ping-available.test.js +73 -0
  42. package/build/es/lib/dhis2-connection-status/smart-interval.js +199 -0
  43. package/build/es/lib/dhis2-connection-status/use-ping-query.js +12 -0
  44. package/build/es/lib/global-state-service.js +15 -10
  45. package/build/es/lib/{online-status.js → network-status.js} +7 -4
  46. package/build/es/lib/offline-interface.js +7 -4
  47. package/build/es/lib/offline-provider.js +8 -5
  48. package/build/es/lib/online-status-message.js +4 -3
  49. package/build/es/utils/render-counter.js +6 -4
  50. package/build/es/utils/test-mocks.js +16 -9
  51. package/build/types/index.d.ts +2 -1
  52. package/build/types/lib/dhis2-connection-status/dev-debug-log.d.ts +9 -0
  53. package/build/types/lib/dhis2-connection-status/dhis2-connection-status.d.ts +28 -0
  54. package/build/types/lib/dhis2-connection-status/index.d.ts +1 -0
  55. package/build/types/lib/dhis2-connection-status/is-ping-available.d.ts +14 -0
  56. package/build/types/lib/dhis2-connection-status/smart-interval.d.ts +18 -0
  57. package/build/types/lib/dhis2-connection-status/use-ping-query.d.ts +1 -0
  58. package/build/types/lib/{online-status.d.ts → network-status.d.ts} +3 -3
  59. package/build/types/types.d.ts +6 -0
  60. package/build/types/utils/test-mocks.d.ts +2 -0
  61. package/package.json +2 -2
@@ -22,10 +22,11 @@ const renderCounts = {};
22
22
 
23
23
  const identity = arg => arg;
24
24
 
25
- const TestControls = ({
26
- id,
27
- makeRecordingHandler = identity
28
- }) => {
25
+ const TestControls = (_ref) => {
26
+ let {
27
+ id,
28
+ makeRecordingHandler = identity
29
+ } = _ref;
29
30
  const {
30
31
  startRecording,
31
32
  remove,
@@ -34,37 +35,40 @@ const TestControls = ({
34
35
  recordingState
35
36
  } = (0, _cacheableSection.useCacheableSection)(id);
36
37
  return /*#__PURE__*/_react2.default.createElement(_react2.default.Fragment, null, /*#__PURE__*/_react2.default.createElement(_renderCounter.RenderCounter, {
37
- id: "controls-rc-".concat(id),
38
+ id: `controls-rc-${id}`,
38
39
  countsObj: renderCounts
39
40
  }), /*#__PURE__*/_react2.default.createElement("button", {
40
- "data-testid": "start-recording-".concat(id),
41
+ "data-testid": `start-recording-${id}`,
41
42
  onClick: makeRecordingHandler(startRecording)
42
43
  }), /*#__PURE__*/_react2.default.createElement("button", {
43
- "data-testid": "remove-".concat(id),
44
+ "data-testid": `remove-${id}`,
44
45
  onClick: () => {
45
46
  remove();
46
47
  }
47
48
  }), /*#__PURE__*/_react2.default.createElement("div", {
48
- "data-testid": "is-cached-".concat(id)
49
+ "data-testid": `is-cached-${id}`
49
50
  }, isCached ? 'yes' : 'no'), /*#__PURE__*/_react2.default.createElement("div", {
50
- "data-testid": "last-updated-".concat(id)
51
+ "data-testid": `last-updated-${id}`
51
52
  }, lastUpdated || 'never'), /*#__PURE__*/_react2.default.createElement("div", {
52
- "data-testid": "recording-state-".concat(id)
53
+ "data-testid": `recording-state-${id}`
53
54
  }, recordingState));
54
55
  };
55
56
 
56
- const TestSection = ({
57
- id,
58
- children
59
- }) => /*#__PURE__*/_react2.default.createElement(_cacheableSection.CacheableSection, {
60
- id: id,
61
- loadingMask: /*#__PURE__*/_react2.default.createElement("div", {
62
- "data-testid": "loading-mask-".concat(id)
63
- })
64
- }, /*#__PURE__*/_react2.default.createElement(_renderCounter.RenderCounter, {
65
- id: "section-rc-".concat(id),
66
- countsObj: renderCounts
67
- }), children);
57
+ const TestSection = (_ref2) => {
58
+ let {
59
+ id,
60
+ children
61
+ } = _ref2;
62
+ return /*#__PURE__*/_react2.default.createElement(_cacheableSection.CacheableSection, {
63
+ id: id,
64
+ loadingMask: /*#__PURE__*/_react2.default.createElement("div", {
65
+ "data-testid": `loading-mask-${id}`
66
+ })
67
+ }, /*#__PURE__*/_react2.default.createElement(_renderCounter.RenderCounter, {
68
+ id: `section-rc-${id}`,
69
+ countsObj: renderCounts
70
+ }), children);
71
+ };
68
72
 
69
73
  const TestSingleSection = props => {
70
74
  // Props are spread so they can be overwritten
@@ -82,9 +86,13 @@ const originalError = console.error;
82
86
  beforeEach(() => {
83
87
  // This is done before each because the 'recording error' test uses its own
84
88
  // spy on console.error
85
- jest.spyOn(console, 'error').mockImplementation((...args) => {
89
+ jest.spyOn(console, 'error').mockImplementation(function () {
86
90
  const pattern = /Warning: An update to .* inside a test was not wrapped in act/;
87
91
 
92
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
93
+ args[_key] = arguments[_key];
94
+ }
95
+
88
96
  if (typeof args[0] === 'string' && pattern.test(args[0])) {
89
97
  return;
90
98
  }
@@ -150,9 +158,14 @@ describe('Coordination between useCacheableSection and CacheableSection', () =>
150
158
  });
151
159
  it('handles a recording that encounters an error', async done => {
152
160
  // Suppress the expected error from console (in addition to 'act' warning)
153
- jest.spyOn(console, 'error').mockImplementation((...args) => {
161
+ jest.spyOn(console, 'error').mockImplementation(function () {
154
162
  const actPattern = /Warning: An update to .* inside a test was not wrapped in act/;
155
163
  const errPattern = /Error during recording/;
164
+
165
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
166
+ args[_key2] = arguments[_key2];
167
+ }
168
+
156
169
  const matchesPattern = actPattern.test(args[0]) || errPattern.test(args[0]);
157
170
 
158
171
  if (typeof args[0] === 'string' && matchesPattern) {
@@ -3,16 +3,22 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ Object.defineProperty(exports, "CacheableSection", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _cacheableSection.CacheableSection;
10
+ }
11
+ });
6
12
  Object.defineProperty(exports, "OfflineProvider", {
7
13
  enumerable: true,
8
14
  get: function () {
9
15
  return _offlineProvider.OfflineProvider;
10
16
  }
11
17
  });
12
- Object.defineProperty(exports, "CacheableSection", {
18
+ Object.defineProperty(exports, "clearSensitiveCaches", {
13
19
  enumerable: true,
14
20
  get: function () {
15
- return _cacheableSection.CacheableSection;
21
+ return _clearSensitiveCaches.clearSensitiveCaches;
16
22
  }
17
23
  });
18
24
  Object.defineProperty(exports, "useCacheableSection", {
@@ -27,22 +33,22 @@ Object.defineProperty(exports, "useCachedSections", {
27
33
  return _cacheableSectionState.useCachedSections;
28
34
  }
29
35
  });
30
- Object.defineProperty(exports, "useOnlineStatus", {
36
+ Object.defineProperty(exports, "useDhis2ConnectionStatus", {
31
37
  enumerable: true,
32
38
  get: function () {
33
- return _onlineStatus.useOnlineStatus;
39
+ return _dhis2ConnectionStatus.useDhis2ConnectionStatus;
34
40
  }
35
41
  });
36
- Object.defineProperty(exports, "useOnlineStatusMessage", {
42
+ Object.defineProperty(exports, "useOnlineStatus", {
37
43
  enumerable: true,
38
44
  get: function () {
39
- return _onlineStatusMessage.useOnlineStatusMessage;
45
+ return _networkStatus.useNetworkStatus;
40
46
  }
41
47
  });
42
- Object.defineProperty(exports, "clearSensitiveCaches", {
48
+ Object.defineProperty(exports, "useOnlineStatusMessage", {
43
49
  enumerable: true,
44
50
  get: function () {
45
- return _clearSensitiveCaches.clearSensitiveCaches;
51
+ return _onlineStatusMessage.useOnlineStatusMessage;
46
52
  }
47
53
  });
48
54
 
@@ -52,8 +58,10 @@ var _cacheableSection = require("./lib/cacheable-section");
52
58
 
53
59
  var _cacheableSectionState = require("./lib/cacheable-section-state");
54
60
 
55
- var _onlineStatus = require("./lib/online-status");
61
+ var _networkStatus = require("./lib/network-status");
56
62
 
57
63
  var _onlineStatusMessage = require("./lib/online-status-message");
58
64
 
59
- var _clearSensitiveCaches = require("./lib/clear-sensitive-caches");
65
+ var _clearSensitiveCaches = require("./lib/clear-sensitive-caches");
66
+
67
+ var _dhis2ConnectionStatus = require("./lib/dhis2-connection-status");
@@ -34,9 +34,13 @@ afterEach(() => {
34
34
 
35
35
  const originalDebug = console.debug;
36
36
  beforeAll(() => {
37
- jest.spyOn(console, 'debug').mockImplementation((...args) => {
37
+ jest.spyOn(console, 'debug').mockImplementation(function () {
38
38
  const pattern = /Clearing sensitive caches/;
39
39
 
40
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
41
+ args[_key] = arguments[_key];
42
+ }
43
+
40
44
  if (typeof args[0] === 'string' && pattern.test(args[0])) {
41
45
  return;
42
46
  }
@@ -6,7 +6,7 @@ var _reactHooks = require("@testing-library/react-hooks");
6
6
 
7
7
  var _react2 = _interopRequireDefault(require("react"));
8
8
 
9
- var _onlineStatus = require("../online-status");
9
+ var _networkStatus = require("../network-status");
10
10
 
11
11
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
12
 
@@ -27,7 +27,7 @@ describe('initalizes to navigator.onLine value', () => {
27
27
  jest.spyOn(navigator, 'onLine', 'get').mockReturnValueOnce(true);
28
28
  const {
29
29
  result
30
- } = (0, _reactHooks.renderHook)(() => (0, _onlineStatus.useOnlineStatus)());
30
+ } = (0, _reactHooks.renderHook)(() => (0, _networkStatus.useNetworkStatus)());
31
31
  expect(result.current.online).toBe(true);
32
32
  expect(result.current.offline).toBe(false);
33
33
  });
@@ -35,7 +35,7 @@ describe('initalizes to navigator.onLine value', () => {
35
35
  jest.spyOn(navigator, 'onLine', 'get').mockReturnValueOnce(false);
36
36
  const {
37
37
  result
38
- } = (0, _reactHooks.renderHook)(() => (0, _onlineStatus.useOnlineStatus)());
38
+ } = (0, _reactHooks.renderHook)(() => (0, _networkStatus.useNetworkStatus)());
39
39
  expect(result.current.online).toBe(false);
40
40
  expect(result.current.offline).toBe(true);
41
41
  });
@@ -49,7 +49,9 @@ describe('state changes in response to browser "online" and "offline" events', (
49
49
  const {
50
50
  result,
51
51
  waitForNextUpdate
52
- } = (0, _reactHooks.renderHook)((...args) => (0, _onlineStatus.useOnlineStatus)(...args), {
52
+ } = (0, _reactHooks.renderHook)(function () {
53
+ return (0, _networkStatus.useNetworkStatus)(...arguments);
54
+ }, {
53
55
  initialProps: {
54
56
  debounceDelay: 50
55
57
  }
@@ -72,7 +74,9 @@ describe('state changes in response to browser "online" and "offline" events', (
72
74
  const {
73
75
  result,
74
76
  waitForNextUpdate
75
- } = (0, _reactHooks.renderHook)((...args) => (0, _onlineStatus.useOnlineStatus)(...args), {
77
+ } = (0, _reactHooks.renderHook)(function () {
78
+ return (0, _networkStatus.useNetworkStatus)(...arguments);
79
+ }, {
76
80
  initialProps: {
77
81
  debounceDelay: 50
78
82
  }
@@ -97,7 +101,7 @@ describe('debouncing state changes', () => {
97
101
  const {
98
102
  result,
99
103
  waitForNextUpdate
100
- } = (0, _reactHooks.renderHook)(() => (0, _onlineStatus.useOnlineStatus)());
104
+ } = (0, _reactHooks.renderHook)(() => (0, _networkStatus.useNetworkStatus)());
101
105
  await (0, _reactHooks.act)(async () => {
102
106
  // Multiple events in succession
103
107
  events.offline(new Event('offline'));
@@ -120,7 +124,9 @@ describe('debouncing state changes', () => {
120
124
  const {
121
125
  result,
122
126
  waitForNextUpdate
123
- } = (0, _reactHooks.renderHook)((...args) => (0, _onlineStatus.useOnlineStatus)(...args), {
127
+ } = (0, _reactHooks.renderHook)(function () {
128
+ return (0, _networkStatus.useNetworkStatus)(...arguments);
129
+ }, {
124
130
  initialProps: {
125
131
  debounceDelay: 50
126
132
  }
@@ -146,7 +152,9 @@ describe('debouncing state changes', () => {
146
152
  const {
147
153
  result,
148
154
  waitForNextUpdate
149
- } = (0, _reactHooks.renderHook)((...args) => (0, _onlineStatus.useOnlineStatus)(...args), {
155
+ } = (0, _reactHooks.renderHook)(function () {
156
+ return (0, _networkStatus.useNetworkStatus)(...arguments);
157
+ }, {
150
158
  initialProps: {
151
159
  debounceDelay: 0
152
160
  }
@@ -173,7 +181,9 @@ describe('debouncing state changes', () => {
173
181
  result,
174
182
  waitForNextUpdate,
175
183
  rerender
176
- } = (0, _reactHooks.renderHook)((...args) => (0, _onlineStatus.useOnlineStatus)(...args), {
184
+ } = (0, _reactHooks.renderHook)(function () {
185
+ return (0, _networkStatus.useNetworkStatus)(...arguments);
186
+ }, {
177
187
  initialProps: {
178
188
  debounceDelay: 150
179
189
  }
@@ -217,7 +227,7 @@ describe('debouncing state changes', () => {
217
227
  const TestComponent = () => {
218
228
  const {
219
229
  online
220
- } = (0, _onlineStatus.useOnlineStatus)({
230
+ } = (0, _networkStatus.useNetworkStatus)({
221
231
  debounceDelay: 50
222
232
  });
223
233
  return /*#__PURE__*/_react2.default.createElement("div", {
@@ -250,12 +260,13 @@ describe('debouncing state changes', () => {
250
260
  const events = {};
251
261
  window.addEventListener = jest.fn((event, cb) => events[event] = cb);
252
262
 
253
- const TestComponent = ({
254
- options
255
- }) => {
263
+ const TestComponent = (_ref) => {
264
+ let {
265
+ options
266
+ } = _ref;
256
267
  const {
257
268
  online
258
- } = (0, _onlineStatus.useOnlineStatus)(options);
269
+ } = (0, _networkStatus.useNetworkStatus)(options);
259
270
  return /*#__PURE__*/_react2.default.createElement("div", {
260
271
  "data-testid": "status"
261
272
  }, online ? 'on' : 'off');
@@ -297,7 +308,7 @@ describe('debouncing state changes', () => {
297
308
  const TestComponent = () => {
298
309
  const {
299
310
  online
300
- } = (0, _onlineStatus.useOnlineStatus)({
311
+ } = (0, _networkStatus.useNetworkStatus)({
301
312
  debounceDelay: 100
302
313
  });
303
314
  return /*#__PURE__*/_react2.default.createElement("div", {
@@ -348,7 +359,9 @@ describe('it updates the lastOnline value in local storage', () => {
348
359
  const {
349
360
  result,
350
361
  waitForNextUpdate
351
- } = (0, _reactHooks.renderHook)((...args) => (0, _onlineStatus.useOnlineStatus)(...args), {
362
+ } = (0, _reactHooks.renderHook)(function () {
363
+ return (0, _networkStatus.useNetworkStatus)(...arguments);
364
+ }, {
352
365
  initialProps: {
353
366
  debounceDelay: 0
354
367
  }
@@ -381,7 +394,9 @@ describe('it updates the lastOnline value in local storage', () => {
381
394
  window.addEventListener = jest.fn((event, cb) => events[event] = cb);
382
395
  const {
383
396
  result
384
- } = (0, _reactHooks.renderHook)((...args) => (0, _onlineStatus.useOnlineStatus)(...args), {
397
+ } = (0, _reactHooks.renderHook)(function () {
398
+ return (0, _networkStatus.useNetworkStatus)(...arguments);
399
+ }, {
385
400
  initialProps: {
386
401
  debounceDelay: 0
387
402
  }
@@ -399,7 +414,9 @@ describe('it updates the lastOnline value in local storage', () => {
399
414
  window.addEventListener = jest.fn((event, cb) => events[event] = cb);
400
415
  const {
401
416
  result
402
- } = (0, _reactHooks.renderHook)((...args) => (0, _onlineStatus.useOnlineStatus)(...args), {
417
+ } = (0, _reactHooks.renderHook)(function () {
418
+ return (0, _networkStatus.useNetworkStatus)(...arguments);
419
+ }, {
403
420
  initialProps: {
404
421
  debounceDelay: 0
405
422
  }
@@ -424,7 +441,9 @@ describe('it updates the lastOnline value in local storage', () => {
424
441
  const {
425
442
  result,
426
443
  waitForNextUpdate
427
- } = (0, _reactHooks.renderHook)((...args) => (0, _onlineStatus.useOnlineStatus)(...args), {
444
+ } = (0, _reactHooks.renderHook)(function () {
445
+ return (0, _networkStatus.useNetworkStatus)(...arguments);
446
+ }, {
428
447
  initialProps: {
429
448
  debounceDelay: 0
430
449
  }
@@ -452,7 +471,9 @@ describe('it updates the lastOnline value in local storage', () => {
452
471
  const {
453
472
  result,
454
473
  waitForNextUpdate
455
- } = (0, _reactHooks.renderHook)((...args) => (0, _onlineStatus.useOnlineStatus)(...args), {
474
+ } = (0, _reactHooks.renderHook)(function () {
475
+ return (0, _networkStatus.useNetworkStatus)(...arguments);
476
+ }, {
456
477
  initialProps: {
457
478
  debounceDelay: 0
458
479
  }
@@ -17,9 +17,13 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
17
17
  // Suppress 'act' warning for these tests
18
18
  const originalError = console.error;
19
19
  beforeEach(() => {
20
- jest.spyOn(console, 'error').mockImplementation((...args) => {
20
+ jest.spyOn(console, 'error').mockImplementation(function () {
21
21
  const pattern = /Warning: An update to .* inside a test was not wrapped in act/;
22
22
 
23
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
24
+ args[_key] = arguments[_key];
25
+ }
26
+
23
27
  if (typeof args[0] === 'string' && pattern.test(args[0])) {
24
28
  return;
25
29
  }
@@ -1,7 +1,5 @@
1
1
  "use strict";
2
2
 
3
- var _appServiceAlerts = require("@dhis2/app-service-alerts");
4
-
5
3
  var _reactHooks = require("@testing-library/react-hooks");
6
4
 
7
5
  var _react = _interopRequireDefault(require("react"));
@@ -17,9 +15,13 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
17
15
  // Suppress 'act' warning for these tests
18
16
  const originalError = console.error;
19
17
  beforeEach(() => {
20
- jest.spyOn(console, 'error').mockImplementation((...args) => {
18
+ jest.spyOn(console, 'error').mockImplementation(function () {
21
19
  const pattern = /Warning: An update to .* inside a test was not wrapped in act/;
22
20
 
21
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
22
+ args[_key] = arguments[_key];
23
+ }
24
+
23
25
  if (typeof args[0] === 'string' && pattern.test(args[0])) {
24
26
  return;
25
27
  }
@@ -33,14 +35,19 @@ afterEach(() => {
33
35
  console.error.mockRestore();
34
36
  });
35
37
  it('renders in the default state initially', () => {
38
+ const wrapper = (_ref) => {
39
+ let {
40
+ children
41
+ } = _ref;
42
+ return /*#__PURE__*/_react.default.createElement(_offlineProvider.OfflineProvider, {
43
+ offlineInterface: _testMocks.mockOfflineInterface
44
+ }, children);
45
+ };
46
+
36
47
  const {
37
48
  result
38
49
  } = (0, _reactHooks.renderHook)(() => (0, _cacheableSection.useCacheableSection)('one'), {
39
- wrapper: ({
40
- children
41
- }) => /*#__PURE__*/_react.default.createElement(_appServiceAlerts.AlertsProvider, null, /*#__PURE__*/_react.default.createElement(_offlineProvider.OfflineProvider, {
42
- offlineInterface: _testMocks.mockOfflineInterface
43
- }, children))
50
+ wrapper
44
51
  });
45
52
  expect(result.current.recordingState).toBe('default');
46
53
  expect(result.current.isCached).toBe(false);
@@ -54,15 +61,21 @@ it('handles a successful recording', async done => {
54
61
  lastUpdated: new Date()
55
62
  }])
56
63
  };
64
+
65
+ const wrapper = (_ref2) => {
66
+ let {
67
+ children
68
+ } = _ref2;
69
+ return /*#__PURE__*/_react.default.createElement(_offlineProvider.OfflineProvider, {
70
+ offlineInterface: testOfflineInterface
71
+ }, children);
72
+ };
73
+
57
74
  const {
58
75
  result,
59
76
  waitFor
60
77
  } = (0, _reactHooks.renderHook)(() => (0, _cacheableSection.useCacheableSection)(sectionId), {
61
- wrapper: ({
62
- children
63
- }) => /*#__PURE__*/_react.default.createElement(_appServiceAlerts.AlertsProvider, null, /*#__PURE__*/_react.default.createElement(_offlineProvider.OfflineProvider, {
64
- offlineInterface: testOfflineInterface
65
- }, children))
78
+ wrapper
66
79
  });
67
80
 
68
81
  const assertRecordingStarted = () => {
@@ -101,9 +114,14 @@ it('handles a successful recording', async done => {
101
114
  });
102
115
  it('handles a recording that encounters an error', async done => {
103
116
  // Suppress the expected error from console (in addition to 'act' warning)
104
- jest.spyOn(console, 'error').mockImplementation((...args) => {
117
+ jest.spyOn(console, 'error').mockImplementation(function () {
105
118
  const actPattern = /Warning: An update to .* inside a test was not wrapped in act/;
106
119
  const errPattern = /Error during recording/;
120
+
121
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
122
+ args[_key2] = arguments[_key2];
123
+ }
124
+
107
125
  const matchesPattern = actPattern.test(args[0]) || errPattern.test(args[0]);
108
126
 
109
127
  if (typeof args[0] === 'string' && matchesPattern) {
@@ -115,14 +133,20 @@ it('handles a recording that encounters an error', async done => {
115
133
  const testOfflineInterface = { ..._testMocks.mockOfflineInterface,
116
134
  startRecording: _testMocks.errorRecordingMock
117
135
  };
136
+
137
+ const wrapper = (_ref3) => {
138
+ let {
139
+ children
140
+ } = _ref3;
141
+ return /*#__PURE__*/_react.default.createElement(_offlineProvider.OfflineProvider, {
142
+ offlineInterface: testOfflineInterface
143
+ }, children);
144
+ };
145
+
118
146
  const {
119
147
  result
120
148
  } = (0, _reactHooks.renderHook)(() => (0, _cacheableSection.useCacheableSection)('one'), {
121
- wrapper: ({
122
- children
123
- }) => /*#__PURE__*/_react.default.createElement(_appServiceAlerts.AlertsProvider, null, /*#__PURE__*/_react.default.createElement(_offlineProvider.OfflineProvider, {
124
- offlineInterface: testOfflineInterface
125
- }, children))
149
+ wrapper
126
150
  });
127
151
 
128
152
  const assertRecordingStarted = () => {
@@ -155,14 +179,20 @@ it('handles an error starting the recording', async () => {
155
179
  const testOfflineInterface = { ..._testMocks.mockOfflineInterface,
156
180
  startRecording: _testMocks.failedMessageRecordingMock
157
181
  };
182
+
183
+ const wrapper = (_ref4) => {
184
+ let {
185
+ children
186
+ } = _ref4;
187
+ return /*#__PURE__*/_react.default.createElement(_offlineProvider.OfflineProvider, {
188
+ offlineInterface: testOfflineInterface
189
+ }, children);
190
+ };
191
+
158
192
  const {
159
193
  result
160
194
  } = (0, _reactHooks.renderHook)(() => (0, _cacheableSection.useCacheableSection)('err'), {
161
- wrapper: ({
162
- children
163
- }) => /*#__PURE__*/_react.default.createElement(_appServiceAlerts.AlertsProvider, null, /*#__PURE__*/_react.default.createElement(_offlineProvider.OfflineProvider, {
164
- offlineInterface: testOfflineInterface
165
- }, children))
195
+ wrapper
166
196
  });
167
197
  await expect(result.current.startRecording()).rejects.toThrow('Failed message' // from failedMessageRecordingMock
168
198
  );
@@ -175,15 +205,21 @@ it('handles remove and updates sections', async () => {
175
205
  lastUpdated: new Date()
176
206
  }]).mockResolvedValueOnce([])
177
207
  };
208
+
209
+ const wrapper = (_ref5) => {
210
+ let {
211
+ children
212
+ } = _ref5;
213
+ return /*#__PURE__*/_react.default.createElement(_offlineProvider.OfflineProvider, {
214
+ offlineInterface: testOfflineInterface
215
+ }, children);
216
+ };
217
+
178
218
  const {
179
219
  result,
180
220
  waitFor
181
221
  } = (0, _reactHooks.renderHook)(() => (0, _cacheableSection.useCacheableSection)(sectionId), {
182
- wrapper: ({
183
- children
184
- }) => /*#__PURE__*/_react.default.createElement(_appServiceAlerts.AlertsProvider, null, /*#__PURE__*/_react.default.createElement(_offlineProvider.OfflineProvider, {
185
- offlineInterface: testOfflineInterface
186
- }, children))
222
+ wrapper
187
223
  }); // Wait for state to sync with indexedDB
188
224
 
189
225
  await waitFor(() => result.current.isCached === true);
@@ -205,16 +241,22 @@ it('handles a change in ID', async () => {
205
241
  lastUpdated: new Date()
206
242
  }])
207
243
  };
244
+
245
+ const wrapper = (_ref6) => {
246
+ let {
247
+ children
248
+ } = _ref6;
249
+ return /*#__PURE__*/_react.default.createElement(_offlineProvider.OfflineProvider, {
250
+ offlineInterface: testOfflineInterface
251
+ }, children);
252
+ };
253
+
208
254
  const {
209
255
  result,
210
256
  waitFor,
211
257
  rerender
212
- } = (0, _reactHooks.renderHook)((...args) => (0, _cacheableSection.useCacheableSection)(...args), {
213
- wrapper: ({
214
- children
215
- }) => /*#__PURE__*/_react.default.createElement(_appServiceAlerts.AlertsProvider, null, /*#__PURE__*/_react.default.createElement(_offlineProvider.OfflineProvider, {
216
- offlineInterface: testOfflineInterface
217
- }, children)),
258
+ } = (0, _reactHooks.renderHook)(id => (0, _cacheableSection.useCacheableSection)(id), {
259
+ wrapper,
218
260
  initialProps: 'id-one'
219
261
  }); // Wait for state to sync with indexedDB
220
262
 
@@ -14,11 +14,14 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
14
14
 
15
15
  describe('useOnlineStatusMessage', () => {
16
16
  it('should allow the online status to be updated ', () => {
17
- const wrapper = ({
18
- children
19
- }) => /*#__PURE__*/_react.default.createElement(_offlineProvider.OfflineProvider, {
20
- offlineInterface: _testMocks.mockOfflineInterface
21
- }, children);
17
+ const wrapper = (_ref) => {
18
+ let {
19
+ children
20
+ } = _ref;
21
+ return /*#__PURE__*/_react.default.createElement(_offlineProvider.OfflineProvider, {
22
+ offlineInterface: _testMocks.mockOfflineInterface
23
+ }, children);
24
+ };
22
25
 
23
26
  const {
24
27
  result
@@ -3,11 +3,11 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.createCacheableSectionStore = createCacheableSectionStore;
7
6
  exports.CacheableSectionProvider = CacheableSectionProvider;
8
- exports.useRecordingState = useRecordingState;
9
- exports.useCachedSections = useCachedSections;
7
+ exports.createCacheableSectionStore = createCacheableSectionStore;
10
8
  exports.useCachedSection = useCachedSection;
9
+ exports.useCachedSections = useCachedSections;
10
+ exports.useRecordingState = useRecordingState;
11
11
 
12
12
  var _propTypes = _interopRequireDefault(require("prop-types"));
13
13
 
@@ -27,14 +27,17 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
27
27
  * @returns {Object} An object of sections, keyed by ID
28
28
  */
29
29
  function getSectionsById(sectionsArray) {
30
- return sectionsArray.reduce((result, {
31
- sectionId,
32
- lastUpdated
33
- }) => ({ ...result,
34
- [sectionId]: {
30
+ return sectionsArray.reduce((result, _ref) => {
31
+ let {
32
+ sectionId,
35
33
  lastUpdated
36
- }
37
- }), {});
34
+ } = _ref;
35
+ return { ...result,
36
+ [sectionId]: {
37
+ lastUpdated
38
+ }
39
+ };
40
+ }, {});
38
41
  }
39
42
  /**
40
43
  * Create a store for Cacheable Section state.
@@ -73,9 +76,10 @@ function useConst(factory) {
73
76
  */
74
77
 
75
78
 
76
- function CacheableSectionProvider({
77
- children
78
- }) {
79
+ function CacheableSectionProvider(_ref2) {
80
+ let {
81
+ children
82
+ } = _ref2;
79
83
  const offlineInterface = (0, _offlineInterface.useOfflineInterface)();
80
84
  const store = useConst(createCacheableSectionStore); // On load, get sections and add to store
81
85