@atlaskit/media-test-helpers 30.1.1 → 30.1.2

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 (166) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/cjs/I18nWrapper.js +8 -24
  3. package/dist/cjs/MockGlobalImage.js +0 -16
  4. package/dist/cjs/authProvider.js +0 -18
  5. package/dist/cjs/await-error.js +0 -10
  6. package/dist/cjs/clipboardEventMocks.js +6 -39
  7. package/dist/cjs/createMouseEvent.js +4 -8
  8. package/dist/cjs/createTouchEvent.js +0 -2
  9. package/dist/cjs/docs-content-tabs.js +1 -14
  10. package/dist/cjs/example-mediaFeatureFlags.js +0 -7
  11. package/dist/cjs/exampleMediaItems.js +6 -7
  12. package/dist/cjs/fakeI18n.js +2 -4
  13. package/dist/cjs/fakeMediaClient.js +5 -18
  14. package/dist/cjs/featureFlagsWrapper/dropdown.js +12 -46
  15. package/dist/cjs/featureFlagsWrapper/helpers.js +0 -14
  16. package/dist/cjs/featureFlagsWrapper/index.js +5 -19
  17. package/dist/cjs/fileReader.js +0 -28
  18. package/dist/cjs/fileStateFactory/createFileState.js +9 -27
  19. package/dist/cjs/fileStateFactory/factory.js +7 -44
  20. package/dist/cjs/fileStateFactory/helpers.js +10 -23
  21. package/dist/cjs/fileStateFactory/index.js +0 -3
  22. package/dist/cjs/flushPromises.js +0 -2
  23. package/dist/cjs/getAuthFromContextProvider.js +0 -9
  24. package/dist/cjs/getJest.js +3 -5
  25. package/dist/cjs/globalEventEmitterListeners.js +0 -8
  26. package/dist/cjs/images.js +0 -6
  27. package/dist/cjs/index.js +0 -42
  28. package/dist/cjs/jestHelpers.js +0 -20
  29. package/dist/cjs/keyboardEventWithKeyCode.js +0 -18
  30. package/dist/cjs/mediaClientErrors.js +0 -11
  31. package/dist/cjs/mediaClientProvider.js +1 -17
  32. package/dist/cjs/mediaPickerAuthProvider.js +5 -21
  33. package/dist/cjs/mockCanvas.js +0 -4
  34. package/dist/cjs/mockData/handlers/copyWithToken.js +0 -14
  35. package/dist/cjs/mockData/handlers/getFile.js +0 -8
  36. package/dist/cjs/mockData/handlers/getFileImage.js +0 -9
  37. package/dist/cjs/mockData/handlers/index.js +0 -5
  38. package/dist/cjs/mockData/handlers/tenantAuth.js +0 -6
  39. package/dist/cjs/mockData/handlers/userCollectionFetch.js +0 -11
  40. package/dist/cjs/mockData/index.js +0 -9
  41. package/dist/cjs/mockData/matchers.js +0 -11
  42. package/dist/cjs/mockData/utils.js +10 -10
  43. package/dist/cjs/mockLoadImage.js +2 -14
  44. package/dist/cjs/mocks/database/chunk.js +0 -3
  45. package/dist/cjs/mocks/database/collection-item.js +14 -23
  46. package/dist/cjs/mocks/database/collection.js +0 -2
  47. package/dist/cjs/mocks/database/index.js +5 -23
  48. package/dist/cjs/mocks/database/upload.js +0 -6
  49. package/dist/cjs/mocks/fileAndDirectoriesUtils.js +12 -20
  50. package/dist/cjs/mocks/media-mock.js +14 -45
  51. package/dist/cjs/mocks/routers/api-router.js +78 -162
  52. package/dist/cjs/mocks/routers/index.js +0 -2
  53. package/dist/cjs/mocks/routers/media-playground-router.js +0 -3
  54. package/dist/cjs/mocks/websockets/index.js +0 -1
  55. package/dist/cjs/mocks/websockets/messages.js +0 -9
  56. package/dist/cjs/mocks/websockets/remote-upload-server.js +19 -45
  57. package/dist/cjs/mountWithIntlContext.js +9 -27
  58. package/dist/cjs/nextTick.js +0 -4
  59. package/dist/cjs/renderWithIntl.js +0 -6
  60. package/dist/cjs/story-list.js +4 -22
  61. package/dist/cjs/story-styles.js +0 -6
  62. package/dist/cjs/styled.js +0 -6
  63. package/dist/cjs/timeoutPromise.js +0 -1
  64. package/dist/cjs/ufoLogger.js +0 -7
  65. package/dist/cjs/utils/index.js +2 -11
  66. package/dist/cjs/utils/logging.js +11 -12
  67. package/dist/cjs/utils/mockData.js +5 -19
  68. package/dist/cjs/version.json +1 -1
  69. package/dist/cjs/waitUntil.js +2 -10
  70. package/dist/es2019/I18nWrapper.js +2 -4
  71. package/dist/es2019/MockGlobalImage.js +0 -3
  72. package/dist/es2019/authProvider.js +2 -5
  73. package/dist/es2019/clipboardEventMocks.js +12 -26
  74. package/dist/es2019/createMouseEvent.js +0 -2
  75. package/dist/es2019/docs-content-tabs.js +1 -3
  76. package/dist/es2019/example-mediaFeatureFlags.js +3 -2
  77. package/dist/es2019/exampleMediaItems.js +8 -3
  78. package/dist/es2019/fakeI18n.js +2 -1
  79. package/dist/es2019/fakeMediaClient.js +0 -1
  80. package/dist/es2019/featureFlagsWrapper/dropdown.js +0 -10
  81. package/dist/es2019/featureFlagsWrapper/helpers.js +2 -1
  82. package/dist/es2019/featureFlagsWrapper/index.js +2 -7
  83. package/dist/es2019/fileReader.js +0 -17
  84. package/dist/es2019/fileStateFactory/createFileState.js +6 -14
  85. package/dist/es2019/fileStateFactory/factory.js +4 -15
  86. package/dist/es2019/fileStateFactory/helpers.js +2 -7
  87. package/dist/es2019/getJest.js +3 -6
  88. package/dist/es2019/globalEventEmitterListeners.js +0 -3
  89. package/dist/es2019/images.js +2 -1
  90. package/dist/es2019/keyboardEventWithKeyCode.js +0 -5
  91. package/dist/es2019/mediaClientErrors.js +2 -1
  92. package/dist/es2019/mediaClientProvider.js +1 -1
  93. package/dist/es2019/mediaPickerAuthProvider.js +2 -5
  94. package/dist/es2019/mockData/handlers/copyWithToken.js +0 -2
  95. package/dist/es2019/mockData/handlers/getFile.js +0 -3
  96. package/dist/es2019/mockData/handlers/getFileImage.js +0 -3
  97. package/dist/es2019/mockData/handlers/tenantAuth.js +0 -2
  98. package/dist/es2019/mockData/handlers/userCollectionFetch.js +0 -2
  99. package/dist/es2019/mockData/index.js +0 -2
  100. package/dist/es2019/mockData/utils.js +10 -6
  101. package/dist/es2019/mockLoadImage.js +4 -2
  102. package/dist/es2019/mocks/database/index.js +0 -2
  103. package/dist/es2019/mocks/fileAndDirectoriesUtils.js +20 -14
  104. package/dist/es2019/mocks/media-mock.js +4 -16
  105. package/dist/es2019/mocks/routers/api-router.js +13 -45
  106. package/dist/es2019/mocks/websockets/remote-upload-server.js +11 -14
  107. package/dist/es2019/mountWithIntlContext.js +4 -4
  108. package/dist/es2019/story-list.js +0 -1
  109. package/dist/es2019/ufoLogger.js +0 -1
  110. package/dist/es2019/utils/index.js +0 -2
  111. package/dist/es2019/utils/logging.js +4 -4
  112. package/dist/es2019/utils/mockData.js +5 -3
  113. package/dist/es2019/version.json +1 -1
  114. package/dist/es2019/waitUntil.js +0 -1
  115. package/dist/esm/I18nWrapper.js +8 -12
  116. package/dist/esm/MockGlobalImage.js +0 -10
  117. package/dist/esm/authProvider.js +0 -10
  118. package/dist/esm/await-error.js +0 -6
  119. package/dist/esm/clipboardEventMocks.js +15 -39
  120. package/dist/esm/createMouseEvent.js +4 -6
  121. package/dist/esm/docs-content-tabs.js +2 -5
  122. package/dist/esm/example-mediaFeatureFlags.js +0 -3
  123. package/dist/esm/exampleMediaItems.js +8 -3
  124. package/dist/esm/fakeI18n.js +2 -1
  125. package/dist/esm/fakeMediaClient.js +5 -8
  126. package/dist/esm/featureFlagsWrapper/dropdown.js +12 -30
  127. package/dist/esm/featureFlagsWrapper/helpers.js +0 -3
  128. package/dist/esm/featureFlagsWrapper/index.js +5 -12
  129. package/dist/esm/fileReader.js +0 -28
  130. package/dist/esm/fileStateFactory/createFileState.js +9 -22
  131. package/dist/esm/fileStateFactory/factory.js +7 -41
  132. package/dist/esm/fileStateFactory/helpers.js +10 -18
  133. package/dist/esm/getAuthFromContextProvider.js +0 -3
  134. package/dist/esm/getJest.js +3 -3
  135. package/dist/esm/globalEventEmitterListeners.js +0 -3
  136. package/dist/esm/images.js +2 -1
  137. package/dist/esm/jestHelpers.js +0 -2
  138. package/dist/esm/keyboardEventWithKeyCode.js +0 -10
  139. package/dist/esm/mediaClientErrors.js +0 -3
  140. package/dist/esm/mediaClientProvider.js +1 -1
  141. package/dist/esm/mediaPickerAuthProvider.js +5 -12
  142. package/dist/esm/mockData/handlers/copyWithToken.js +0 -4
  143. package/dist/esm/mockData/handlers/getFile.js +0 -3
  144. package/dist/esm/mockData/handlers/getFileImage.js +0 -3
  145. package/dist/esm/mockData/handlers/tenantAuth.js +0 -2
  146. package/dist/esm/mockData/handlers/userCollectionFetch.js +0 -5
  147. package/dist/esm/mockData/index.js +0 -2
  148. package/dist/esm/mockData/utils.js +10 -6
  149. package/dist/esm/mockLoadImage.js +2 -4
  150. package/dist/esm/mocks/database/collection-item.js +14 -15
  151. package/dist/esm/mocks/database/index.js +5 -7
  152. package/dist/esm/mocks/fileAndDirectoriesUtils.js +12 -13
  153. package/dist/esm/mocks/media-mock.js +14 -26
  154. package/dist/esm/mocks/routers/api-router.js +78 -144
  155. package/dist/esm/mocks/websockets/remote-upload-server.js +19 -24
  156. package/dist/esm/mountWithIntlContext.js +9 -17
  157. package/dist/esm/story-list.js +4 -12
  158. package/dist/esm/story-styles.js +0 -2
  159. package/dist/esm/styled.js +0 -2
  160. package/dist/esm/ufoLogger.js +0 -4
  161. package/dist/esm/utils/index.js +2 -5
  162. package/dist/esm/utils/logging.js +11 -11
  163. package/dist/esm/utils/mockData.js +5 -3
  164. package/dist/esm/version.json +1 -1
  165. package/dist/esm/waitUntil.js +2 -6
  166. package/package.json +4 -4
@@ -5,17 +5,16 @@ export const defaultFileDetails = {
5
5
  mimeType: 'image/png',
6
6
  name: 'file-name.png',
7
7
  size: 1
8
- }; // min inclusive / max exclusive
8
+ };
9
9
 
10
+ // min inclusive / max exclusive
10
11
  function random(min = 0, max = 10000) {
11
12
  min = Math.ceil(min);
12
13
  max = Math.floor(max) - 1;
13
14
  const result = Math.floor(Math.random() * (max - min + 1)) + min;
14
15
  return result;
15
16
  }
16
-
17
17
  const getRandomElem = arr => arr[Math.floor(Math.random() * arr.length)];
18
-
19
18
  export const createIdentifier = ({
20
19
  collectionName = `collection-${random()}`,
21
20
  occurrenceKey = `occurrence-${random()}`
@@ -25,12 +24,10 @@ export const createIdentifier = ({
25
24
  collectionName,
26
25
  occurrenceKey
27
26
  });
28
-
29
27
  const generateFileName = extension => {
30
28
  const fileNames = ['quick-and-dirty', 'quality-time', 'down-for-the-count', 'hard-pill-to-swallow', 'between-a-rock-and-a-hard-place', 'fish-out-of-water', 'top-drawer', 'like-father-like-son', 'mountain-out-of-a-molehill', 'under-your-nose', 'a-chip-on-your-shoulder', 'hit-below-the-belt'];
31
29
  return `${getRandomElem(fileNames)}.${extension}`;
32
30
  };
33
-
34
31
  const mediaTypesDetails = {
35
32
  image: {
36
33
  ext: 'png',
@@ -58,7 +55,6 @@ const mediaTypesDetails = {
58
55
  }
59
56
  };
60
57
  const mediaTypes = Object.keys(mediaTypesDetails);
61
-
62
58
  const generateMediaTypeDetails = mediaType => {
63
59
  const {
64
60
  mimeType,
@@ -69,7 +65,6 @@ const generateMediaTypeDetails = mediaType => {
69
65
  name: generateFileName(ext)
70
66
  };
71
67
  };
72
-
73
68
  export const createFileDetails = (id, mediaType = getRandomElem(mediaTypes)) => {
74
69
  const {
75
70
  mimeType,
@@ -1,15 +1,12 @@
1
1
  // Mock the bare minimum of jest used within `media-test-helpers`.
2
2
  // Ideally this is not required in the future when functions are no longer used in Examples
3
3
  // as they should only be used in unit tests.
4
+
4
5
  const mockStub = () => Object.assign(() => {}, {
5
6
  mockReturnValue(value) {},
6
-
7
7
  mockImplementation(value) {},
8
-
9
8
  mockResolvedValue(value) {}
10
-
11
9
  });
12
-
13
10
  const mockJest = () => {
14
11
  // eslint-disable-next-line no-console
15
12
  console.warn('Using mock jest. Please remove references to media-test-helpers in non-test code.');
@@ -20,7 +17,7 @@ const mockJest = () => {
20
17
  requireActual: () => {},
21
18
  doMock: () => {}
22
19
  };
23
- }; // ED-15806 Required as some examples currently use test modules and complain about not having `jest`.
24
-
20
+ };
25
21
 
22
+ // ED-15806 Required as some examples currently use test modules and complain about not having `jest`.
26
23
  export default (() => typeof jest === 'undefined' ? mockJest() : jest);
@@ -1,19 +1,16 @@
1
1
  import { globalMediaEventEmitter } from '@atlaskit/media-client';
2
-
3
2
  const fileAddedListener = fileState => {
4
3
  // eslint-disable-next-line no-console
5
4
  console.log('file-added -> globalMediaEventEmitter', {
6
5
  fileState
7
6
  });
8
7
  };
9
-
10
8
  const attachmentViewedListener = payload => {
11
9
  // eslint-disable-next-line no-console
12
10
  console.log('media-viewed -> globalMediaEventEmitter', {
13
11
  payload
14
12
  });
15
13
  };
16
-
17
14
  export const addGlobalEventEmitterListeners = () => {
18
15
  globalMediaEventEmitter.off('file-added', fileAddedListener);
19
16
  globalMediaEventEmitter.off('media-viewed', attachmentViewedListener);
@@ -2,6 +2,7 @@ export { tallImage } from './dataURIs/tallImageURI';
2
2
  export { smallImage } from './dataURIs/smallImageURI';
3
3
  export { smallTransparentImage } from './dataURIs/smallTransparentImageURI';
4
4
  export { wideImage } from './dataURIs/wideImageURI';
5
- export { wideTransparentImage } from './dataURIs/wideTransparentImageURI'; // image urls
5
+ export { wideTransparentImage } from './dataURIs/wideTransparentImageURI';
6
6
 
7
+ // image urls
7
8
  export const remoteImage = 'https://mediaviewer-examples.s3-ap-southeast-2.amazonaws.com/image/image.jpg';
@@ -1,16 +1,11 @@
1
1
  import * as exenv from 'exenv';
2
-
3
2
  class FakeKeyboardEvent {
4
3
  constructor(_, __) {}
5
-
6
4
  }
7
-
8
5
  class KeyboardEventWithKeyCode extends (exenv.canUseDOM ? KeyboardEvent : Object) {
9
6
  constructor(type, options) {
10
7
  super(type, options);
11
8
  }
12
-
13
9
  }
14
-
15
10
  const Class = exenv.canUseDOM ? KeyboardEventWithKeyCode : FakeKeyboardEvent;
16
11
  export default Class;
@@ -1,5 +1,6 @@
1
1
  import { RequestError, PollingError, MediaStoreError } from '@atlaskit/media-client';
2
- export const createRateLimitedError = (metadata = {}) => new RequestError('serverRateLimited', { ...metadata,
2
+ export const createRateLimitedError = (metadata = {}) => new RequestError('serverRateLimited', {
3
+ ...metadata,
3
4
  statusCode: 429
4
5
  });
5
6
  export const createPollingMaxAttemptsError = (attempts = 1) => new PollingError('pollingMaxAttemptsExceeded', attempts);
@@ -11,13 +11,13 @@ export const defaultParams = {
11
11
  const defaultAuthParameter = {
12
12
  authType: 'client'
13
13
  };
14
+
14
15
  /**
15
16
  * Creates and returns `MediaClient` (from `media-client`) based on the data provided in parameter object.
16
17
  *
17
18
  * @param {AuthParameter} authParameter specifies serviceName and whatever auth should be done with clientId or asapIssuer
18
19
  * @returns {Context}
19
20
  */
20
-
21
21
  export const createStorybookMediaClient = (authParameter = defaultAuthParameter) => {
22
22
  return new MediaClient(createStorybookMediaClientConfig(authParameter));
23
23
  };
@@ -20,7 +20,6 @@ const accessUrns = {
20
20
  'urn:filestore:file:*': ['read', 'update']
21
21
  }
22
22
  };
23
-
24
23
  const requestAuthProvider = async (authEnvironment, collectionName, env = 'dev') => {
25
24
  const url = `https://media-playground.${env}.atl-paas.net/token/tenant?environment=${authEnvironment}`;
26
25
  const body = JSON.stringify({
@@ -33,20 +32,18 @@ const requestAuthProvider = async (authEnvironment, collectionName, env = 'dev')
33
32
  method: 'POST',
34
33
  body,
35
34
  headers
36
- }); // We leverage the fact, that our internal /toke/tenant API returns data in the same format as Auth
35
+ });
37
36
 
37
+ // We leverage the fact, that our internal /toke/tenant API returns data in the same format as Auth
38
38
  return response.json();
39
39
  };
40
-
41
40
  export const mediaPickerAuthProvider = (authEnvironment = 'asap', env) => context => {
42
41
  const collectionName = context && context.collectionName || defaultCollectionName;
43
42
  authEnvironment = authEnvironment === 'asap' ? 'asap' : '';
44
43
  const cacheKey = `${collectionName}:${authEnvironment}`;
45
-
46
44
  if (!cachedAuths[cacheKey]) {
47
45
  cachedAuths[cacheKey] = requestAuthProvider(authEnvironment, collectionName, env);
48
46
  }
49
-
50
47
  return cachedAuths[cacheKey];
51
48
  };
52
49
  export const defaultMediaPickerAuthProvider = () => () => {
@@ -29,7 +29,6 @@ export const copyWithToken = context => (req, res) => {
29
29
  }));
30
30
  const availableFiles = [...context().userContext.collection];
31
31
  const matchingDataItem = data.reduce((ret, dataItem) => exactMatch(req, dataItem) ? dataItem : ret, undefined);
32
-
33
32
  if (matchingDataItem) {
34
33
  const intFile = {
35
34
  id: uuid.v4(),
@@ -117,6 +116,5 @@ export const copyWithToken = context => (req, res) => {
117
116
  fillInResponse(res, resdata);
118
117
  return res;
119
118
  }
120
-
121
119
  return undefined;
122
120
  };
@@ -13,13 +13,11 @@ export const getFile = context => (req, res) => {
13
13
  },
14
14
  body: null
15
15
  });
16
-
17
16
  const availableFiles = [...context().userContext.collection, ...context().tenantContext.collection];
18
17
  const userData = context().userContext.collection.map(requestDataTemplate(context().userContext.collectionName));
19
18
  const tenantData = context().tenantContext.collection.map(requestDataTemplate(context().tenantContext.collectionName));
20
19
  const data = [...tenantData, ...userData];
21
20
  const matchingDataItem = data.reduce((ret, dataItem) => exactMatch(req, dataItem) ? dataItem : ret, undefined);
22
-
23
21
  if (matchingDataItem) {
24
22
  const fileId = (/\/file\/(.*)/.exec(req.url().path || '') || [])[1];
25
23
  const resdata = {
@@ -90,6 +88,5 @@ export const getFile = context => (req, res) => {
90
88
  fillInResponse(res, resdata);
91
89
  return res;
92
90
  }
93
-
94
91
  return undefined;
95
92
  };
@@ -14,12 +14,10 @@ export const getFileImage = context => (req, res) => {
14
14
  },
15
15
  body: null
16
16
  });
17
-
18
17
  const userData = context().userContext.collection.map(requestDataTemplate(context().userContext.collectionName));
19
18
  const tenantData = context().tenantContext.collection.map(requestDataTemplate(context().tenantContext.collectionName));
20
19
  const data = [...userData, ...tenantData];
21
20
  const matchingDataItem = data.reduce((ret, dataItem) => exactMatch(req, dataItem) ? dataItem : ret, undefined);
22
-
23
21
  if (matchingDataItem) {
24
22
  const resdata = {
25
23
  status: 200,
@@ -50,6 +48,5 @@ export const getFileImage = context => (req, res) => {
50
48
  fillInResponse(res, resdata);
51
49
  return res;
52
50
  }
53
-
54
51
  return undefined;
55
52
  };
@@ -38,7 +38,6 @@ export const tenantAuth = context => (req, res) => {
38
38
  },
39
39
  body: null
40
40
  };
41
-
42
41
  if (exactMatch(req, data1) || exactMatch(req, data2)) {
43
42
  const clientId = '5a9812fc-d029-4a39-8a46-d3cc36eed7ab';
44
43
  const token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI2NTUzNjI6YjllMGUwYjUtYzYzOS00ZmNiLTk2ZjItMDZmZTZhZTc5NGJlIiwiYWNjZXNzIjp7InVybjpmaWxlc3RvcmU6Y29sbGVjdGlvbjpNZWRpYVNlcnZpY2VzU2FtcGxlIjpbInJlYWQiLCJpbnNlcnQiXSwidXJuOmZpbGVzdG9yZTpjaHVuazoqIjpbImNyZWF0ZSIsInJlYWQiXSwidXJuOmZpbGVzdG9yZTp1cGxvYWQiOlsiY3JlYXRlIl0sInVybjpmaWxlc3RvcmU6dXBsb2FkOioiOlsicmVhZCIsInVwZGF0ZSJdfSwibmJmIjoxNTE5MDkwMDc2LCJleHAiOjE1MTkwOTM2NzYsImlhdCI6MTUxOTA5MDEzNiwiaXNzIjoiNWE5ODEyZmMtZDAyOS00YTM5LThhNDYtZDNjYzM2ZWVkN2FiIn0.7Qr_rZfVLFEBgi5u0xPhjDRCxml75MxDObAhHSnadL4';
@@ -68,6 +67,5 @@ export const tenantAuth = context => (req, res) => {
68
67
  fillInResponse(res, resdata);
69
68
  return res;
70
69
  }
71
-
72
70
  return undefined;
73
71
  };
@@ -17,7 +17,6 @@ export const userCollectionFetch = context => (req, res) => {
17
17
  },
18
18
  body: null
19
19
  };
20
-
21
20
  if (exactMatch(req, data)) {
22
21
  const resdata = {
23
22
  status: 200,
@@ -49,6 +48,5 @@ export const userCollectionFetch = context => (req, res) => {
49
48
  fillInResponse(res, resdata);
50
49
  return res;
51
50
  }
52
-
53
51
  return undefined;
54
52
  };
@@ -14,7 +14,6 @@ export class MockContext {
14
14
  collection: [],
15
15
  collectionName: RECENTS_COLLECTION
16
16
  });
17
-
18
17
  _defineProperty(this, "tenantContext", {
19
18
  auth: {
20
19
  clientId: '',
@@ -25,5 +24,4 @@ export class MockContext {
25
24
  collectionName: 'MediaServicesSample'
26
25
  });
27
26
  }
28
-
29
27
  }
@@ -1,18 +1,22 @@
1
1
  export const dataURItoBlob = dataURI => {
2
2
  // convert base64 to raw binary data held in a string
3
- const byteString = atob(dataURI.split(',')[1]); // separate out the mime component
3
+ const byteString = atob(dataURI.split(',')[1]);
4
4
 
5
- const mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0]; // write the bytes of the string to an ArrayBuffer
5
+ // separate out the mime component
6
+ const mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];
6
7
 
7
- const ab = new ArrayBuffer(byteString.length); // create a view into the buffer
8
+ // write the bytes of the string to an ArrayBuffer
9
+ const ab = new ArrayBuffer(byteString.length);
8
10
 
9
- const ia = new Uint8Array(ab); // set the bytes of the buffer to the correct values
11
+ // create a view into the buffer
12
+ const ia = new Uint8Array(ab);
10
13
 
14
+ // set the bytes of the buffer to the correct values
11
15
  for (let i = 0; i < byteString.length; i++) {
12
16
  ia[i] = byteString.charCodeAt(i);
13
- } // write the ArrayBuffer to a blob, and you're done
14
-
17
+ }
15
18
 
19
+ // write the ArrayBuffer to a blob, and you're done
16
20
  const blob = new Blob([ab], {
17
21
  type: mimeString
18
22
  });
@@ -1,10 +1,12 @@
1
1
  import getJest from './getJest';
2
2
  const jest = getJest();
3
3
  let getOrientationMock;
4
- let loadImageMock; // so that jest doesn't hoist mock of media-ui and replaces actual module on every import of media-test-helpers
4
+ let loadImageMock;
5
5
 
6
+ // so that jest doesn't hoist mock of media-ui and replaces actual module on every import of media-test-helpers
6
7
  export const loadImageMockSetup = () => {
7
- jest.doMock('@atlaskit/media-ui', () => ({ ...jest.requireActual('@atlaskit/media-ui'),
8
+ jest.doMock('@atlaskit/media-ui', () => ({
9
+ ...jest.requireActual('@atlaskit/media-ui'),
8
10
  getOrientation: jest.fn(() => getOrientationMock),
9
11
  loadImage: jest.fn(() => loadImageMock)
10
12
  }));
@@ -27,7 +27,6 @@ export function createDatabase(collections = {}) {
27
27
  database.register('collection', createCollection);
28
28
  database.register('upload', createUpload);
29
29
  database.register('chunk', createChunk);
30
-
31
30
  if (Object.keys(collections).length > 0) {
32
31
  Object.keys(collections).forEach(collectionName => {
33
32
  database.push('collection', {
@@ -62,6 +61,5 @@ export function createDatabase(collections = {}) {
62
61
  createdAt: Date.now()
63
62
  });
64
63
  }
65
-
66
64
  return database;
67
65
  }
@@ -2,33 +2,40 @@
2
2
  * Some utilities and types around this API -
3
3
  * https://developer.mozilla.org/en-US/docs/Web/API/File_and_Directory_Entries_API/Introduction
4
4
  */
5
+
5
6
  // These APIs are experimental, so such not defined in TS core libraries.
7
+
6
8
  // Based on https://developer.mozilla.org/en-US/docs/Web/API/FileSystemEntry
9
+
7
10
  // Based on https://developer.mozilla.org/en-US/docs/Web/API/FileSystemEntry
11
+
8
12
  // Based on https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry
13
+
9
14
  // Represents https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryReader
10
- const createDataTransferItem = webkitGetAsEntryResult => ( // Using DataTransferItem constructor is illegal
15
+
16
+ const createDataTransferItem = webkitGetAsEntryResult => (
17
+ // Using DataTransferItem constructor is illegal
11
18
  {
12
19
  getAsFile: () => null,
13
-
14
20
  getAsString() {
15
21
  return '';
16
22
  },
17
-
18
23
  kind: 'file',
19
24
  type: '',
20
25
  // @ts-expect-error
21
26
  webkitGetAsEntry: () => webkitGetAsEntryResult
22
27
  });
23
-
24
- const createFileList = filesArray => ( // Using FileList constructor is illegal
25
- { ...filesArray,
28
+ const createFileList = filesArray => (
29
+ // Using FileList constructor is illegal
30
+ {
31
+ ...filesArray,
26
32
  length: filesArray.length,
27
33
  item: index => filesArray[index]
28
34
  });
29
-
30
- const createDataTransferItemList = itemsArray => ( // Using DataTransferItemList constructor is illegal
31
- { ...itemsArray,
35
+ const createDataTransferItemList = itemsArray => (
36
+ // Using DataTransferItemList constructor is illegal
37
+ {
38
+ ...itemsArray,
32
39
  length: itemsArray.length,
33
40
  add: () => null,
34
41
  clear: () => null,
@@ -36,10 +43,10 @@ const createDataTransferItemList = itemsArray => ( // Using DataTransferItemList
36
43
  item: index => itemsArray[index],
37
44
  remove: () => null
38
45
  });
39
-
40
46
  const createDataTransfer = (files, items) => {
41
- const dataTransfer = new DataTransfer(); // Since `files` and `items` are readonly - this is the only way assigning these values
47
+ const dataTransfer = new DataTransfer();
42
48
 
49
+ // Since `files` and `items` are readonly - this is the only way assigning these values
43
50
  Object.defineProperty(dataTransfer, 'files', {
44
51
  value: files
45
52
  });
@@ -48,7 +55,6 @@ const createDataTransfer = (files, items) => {
48
55
  });
49
56
  return dataTransfer;
50
57
  };
51
-
52
58
  export const createFileSystemFileEntry = (name, fullPath, imageFile) => ({
53
59
  isDirectory: false,
54
60
  isFile: true,
@@ -73,8 +79,8 @@ export const createDropEventWithFiles = (fileSystemEntry, files) => {
73
79
  const fileList = createFileList(files);
74
80
  const dataTransferItemList = createDataTransferItemList([dataTransferItem]);
75
81
  const dataTransfer = createDataTransfer(fileList, dataTransferItemList);
76
- const event = new DragEvent('drop'); // Way around assigning readonly value
77
-
82
+ const event = new DragEvent('drop');
83
+ // Way around assigning readonly value
78
84
  Object.defineProperty(event, 'dataTransfer', {
79
85
  value: dataTransfer
80
86
  });
@@ -17,32 +17,24 @@ const fileName = 'image.png';
17
17
  export class MediaMock {
18
18
  constructor(collections) {
19
19
  _defineProperty(this, "server", new Server());
20
-
21
20
  _defineProperty(this, "routers", []);
22
-
23
21
  _defineProperty(this, "dbs", []);
24
-
25
22
  _defineProperty(this, "websockets", []);
26
-
27
23
  this.collections = collections;
28
24
  }
29
-
30
25
  enable(config = {}) {
31
26
  const {
32
27
  isSlowServer,
33
28
  urlsReturnErrorsTo,
34
29
  mockRemoteUploadActivity
35
30
  } = config;
36
-
37
31
  if (!exenv.canUseDOM) {
38
32
  return;
39
33
  }
40
-
41
34
  this.routers = [createMediaPlaygroundRouter(), createApiRouter(isSlowServer, urlsReturnErrorsTo)];
42
35
  const database = createDatabase(this.collections);
43
36
  this.dbs = [database];
44
37
  [...this.routers, ...this.dbs].forEach(this.server.use.bind(this.server));
45
-
46
38
  if (mockRemoteUploadActivity) {
47
39
  const wsServer = new RemoteUploadActivityServer({
48
40
  database,
@@ -51,12 +43,10 @@ export class MediaMock {
51
43
  wsServer.start();
52
44
  this.websockets = [wsServer];
53
45
  }
54
-
55
46
  if (window) {
56
47
  window.mediaMockControlsBackdoor = mediaMockControlsBackdoor;
57
48
  }
58
49
  }
59
-
60
50
  disable() {
61
51
  [...this.routers, ...this.dbs].forEach(this.server.remove.bind(this.server));
62
52
  this.routers.forEach(router => router.reset());
@@ -66,7 +56,6 @@ export class MediaMock {
66
56
  this.websockets.forEach(ws => ws.stop());
67
57
  this.websockets = [];
68
58
  }
69
-
70
59
  }
71
60
  export function generateFilesFromTestData(files) {
72
61
  return files.map(file => {
@@ -100,33 +89,32 @@ const mediaMockControlsBackdoor = {
100
89
  mediaMock.disable();
101
90
  mediaMock.enable(config);
102
91
  },
103
-
104
92
  /**
105
93
  * Used to simulate the dragging of a folder (which contains a singular image) into the editor
106
94
  * Library used for folder uploads: https://github.com/zzarcon/flat-files
107
95
  */
108
96
  uploadFolderFromDrag: () => {
109
- const fileSystemFileEntry = createFileSystemFileEntry(fileName, `folder_one/folder_two/${fileName}`, imageFile); // Represents a folder that contains a file
97
+ const fileSystemFileEntry = createFileSystemFileEntry(fileName, `folder_one/folder_two/${fileName}`, imageFile);
110
98
 
99
+ // Represents a folder that contains a file
111
100
  const directoryEntryContainingFile = createFileSystemDirectoryEntry(fileName, `folder_one/folder_two/`, [fileSystemFileEntry]);
112
101
  const event = createDropEventWithFiles(directoryEntryContainingFile, [imageFile]);
113
102
  document.body.dispatchEvent(event);
114
103
  document.body.querySelector('.fabric-editor-popup-scroll-parent').dispatchEvent(event);
115
104
  },
116
-
117
105
  /**
118
106
  * Used to simulate the dragging of a folder, which contains a folder (which contains multiple images)
119
107
  **/
120
108
  uploadFolderContainingFolderFromDrag: () => {
121
109
  const fileSystemFileEntry = createFileSystemFileEntry(fileName, `folder_one/folder_two/${fileName}`, imageFile);
122
- const directoryEntryContainingFiles = createFileSystemDirectoryEntry(fileName, `folder_one/folder_two/`, [fileSystemFileEntry, fileSystemFileEntry, fileSystemFileEntry, fileSystemFileEntry]); // Represents a folder that contains a folder
110
+ const directoryEntryContainingFiles = createFileSystemDirectoryEntry(fileName, `folder_one/folder_two/`, [fileSystemFileEntry, fileSystemFileEntry, fileSystemFileEntry, fileSystemFileEntry]);
123
111
 
112
+ // Represents a folder that contains a folder
124
113
  const directoryEntry = createFileSystemDirectoryEntry(fileName, `folder_one/`, [directoryEntryContainingFiles]);
125
114
  const event = createDropEventWithFiles(directoryEntry, [imageFile, imageFile, imageFile, imageFile]);
126
115
  document.body.dispatchEvent(event);
127
116
  document.body.querySelector('.fabric-editor-popup-scroll-parent').dispatchEvent(event);
128
117
  },
129
-
130
118
  /**
131
119
  * Used to simulate the dragging of an image into the editor
132
120
  * In the future we should consider using a general approach to uploading files as mentioned here: