orc-shared 5.10.0-dev.2 → 5.10.0-dev.21

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 (186) hide show
  1. package/dist/actions/metadata.js +30 -11
  2. package/dist/actions/requestsApi.js +10 -1
  3. package/dist/components/AppFrame/About.js +136 -100
  4. package/dist/components/AppFrame/Anchor.js +45 -21
  5. package/dist/components/AppFrame/AppFrame.js +53 -31
  6. package/dist/components/AppFrame/Help.js +35 -15
  7. package/dist/components/AppFrame/MenuItem.js +148 -114
  8. package/dist/components/AppFrame/Preferences.js +136 -97
  9. package/dist/components/AppFrame/Sidebar.js +51 -28
  10. package/dist/components/AppFrame/Topbar.js +61 -36
  11. package/dist/components/ColumnWrapper.js +28 -5
  12. package/dist/components/Culture.js +33 -14
  13. package/dist/components/DropMenu/Menu.js +79 -45
  14. package/dist/components/DropMenu/index.js +34 -29
  15. package/dist/components/Form/Combination.js +45 -16
  16. package/dist/components/Form/Field.js +57 -38
  17. package/dist/components/Form/FieldElements.js +0 -11
  18. package/dist/components/Form/Fieldset.js +47 -19
  19. package/dist/components/Form/Form.js +22 -9
  20. package/dist/components/Form/FormElement.js +40 -7
  21. package/dist/components/Form/Inputs/Button.js +63 -18
  22. package/dist/components/Form/Inputs/ReadOnly.js +50 -27
  23. package/dist/components/{AppFrame/ApplicationSelector/Header.js → Form/Inputs/Selector.js} +30 -31
  24. package/dist/components/Form/Inputs/Text.js +20 -37
  25. package/dist/components/Form/Inputs/Toggles.js +39 -40
  26. package/dist/components/Form/Inputs/index.js +2 -13
  27. package/dist/components/MaterialUI/DataDisplay/PredefinedElements/Placeholder.js +31 -11
  28. package/dist/components/MaterialUI/DataDisplay/PredefinedElements/SectionToolbar.js +89 -0
  29. package/dist/components/MaterialUI/DataDisplay/Table.js +109 -18
  30. package/dist/components/MaterialUI/DataDisplay/TableProps.js +5 -1
  31. package/dist/components/MaterialUI/DataDisplay/TableWithInMemoryPaging.js +198 -0
  32. package/dist/components/MaterialUI/DataDisplay/TooltippedElements/MultipleLinesText.js +4 -1
  33. package/dist/components/MaterialUI/Inputs/DatePicker.js +14 -14
  34. package/dist/components/MaterialUI/Inputs/PredefinedElements/SearchControl.js +1 -0
  35. package/dist/components/MaterialUI/Inputs/Select.js +2 -0
  36. package/dist/components/MaterialUI/Inputs/SelectProps.js +2 -0
  37. package/dist/components/MaterialUI/Inputs/Switch.js +17 -1
  38. package/dist/components/MaterialUI/Inputs/SwitchProps.js +2 -0
  39. package/dist/components/MaterialUI/Inputs/TimePicker.js +14 -21
  40. package/dist/components/MaterialUI/hocs/withDeferredTooltip.js +3 -1
  41. package/dist/components/MaterialUI/muiThemes.js +2 -1
  42. package/dist/components/Provision.js +1 -1
  43. package/dist/constants.js +2 -1
  44. package/dist/content/iconsSheet.svg +740 -116
  45. package/dist/hocs/withScrollBox.js +27 -12
  46. package/dist/hooks/useDaysAndMonthsLocalization.js +77 -0
  47. package/dist/hooks/useInMemoryPaging.js +135 -0
  48. package/dist/hooks/useMultipleFieldEditState.js +12 -3
  49. package/dist/reducers/metadata.js +6 -0
  50. package/dist/schemas/metadata.js +9 -1
  51. package/dist/selectors/locale.js +1 -0
  52. package/dist/selectors/metadata.js +14 -11
  53. package/dist/sharedMessages.js +184 -0
  54. package/dist/utils/ListHelper.js +271 -0
  55. package/dist/utils/comparisonHelper.js +185 -0
  56. package/dist/utils/propertyBagHelper.js +3 -1
  57. package/dist/utils/timezoneHelper.js +18 -31
  58. package/package.json +4 -3
  59. package/src/actions/metadata.js +11 -0
  60. package/src/actions/metadata.test.js +27 -0
  61. package/src/actions/requestsApi.js +6 -0
  62. package/src/components/AppFrame/About.js +97 -117
  63. package/src/components/AppFrame/About.test.js +128 -90
  64. package/src/components/AppFrame/Anchor.js +34 -36
  65. package/src/components/AppFrame/Anchor.test.js +5 -68
  66. package/src/components/AppFrame/AppFrame.js +31 -40
  67. package/src/components/AppFrame/AppFrame.test.js +424 -445
  68. package/src/components/AppFrame/Help.js +23 -20
  69. package/src/components/AppFrame/Help.test.js +3 -3
  70. package/src/components/AppFrame/MenuItem.js +106 -126
  71. package/src/components/AppFrame/MenuItem.test.js +78 -169
  72. package/src/components/AppFrame/Preferences.js +110 -98
  73. package/src/components/AppFrame/Preferences.test.js +115 -219
  74. package/src/components/AppFrame/Sidebar.js +39 -41
  75. package/src/components/AppFrame/Sidebar.test.js +88 -168
  76. package/src/components/AppFrame/Topbar.js +59 -52
  77. package/src/components/AppFrame/Topbar.test.js +31 -39
  78. package/src/components/ColumnWrapper.js +18 -9
  79. package/src/components/Culture.js +20 -10
  80. package/src/components/Culture.test.js +27 -16
  81. package/src/components/DropMenu/DropMenu.test.js +185 -224
  82. package/src/components/DropMenu/Menu.js +73 -80
  83. package/src/components/DropMenu/Menu.test.js +35 -86
  84. package/src/components/DropMenu/index.js +19 -15
  85. package/src/components/Form/Combination.js +35 -28
  86. package/src/components/Form/Combination.test.js +6 -19
  87. package/src/components/Form/Field.js +53 -66
  88. package/src/components/Form/Field.test.js +29 -51
  89. package/src/components/Form/FieldElements.js +0 -14
  90. package/src/components/Form/FieldElements.test.js +104 -111
  91. package/src/components/Form/Fieldset.js +42 -37
  92. package/src/components/Form/Fieldset.test.js +14 -7
  93. package/src/components/Form/Form.js +11 -7
  94. package/src/components/Form/Form.test.js +75 -56
  95. package/src/components/Form/FormElement.js +24 -16
  96. package/src/components/Form/InputField.test.js +24 -30
  97. package/src/components/Form/Inputs/Button.js +58 -14
  98. package/src/components/Form/Inputs/Button.test.js +32 -7
  99. package/src/components/Form/Inputs/Inputs.test.js +0 -7
  100. package/src/components/Form/Inputs/ReadOnly.js +34 -28
  101. package/src/components/Form/Inputs/ReadOnly.test.js +45 -7
  102. package/src/components/Form/Inputs/Selector.js +22 -0
  103. package/src/components/Form/Inputs/Selector.test.js +105 -0
  104. package/src/components/Form/Inputs/Text.js +15 -44
  105. package/src/components/Form/Inputs/Text.test.js +20 -29
  106. package/src/components/Form/Inputs/Toggles.js +27 -26
  107. package/src/components/Form/Inputs/Toggles.test.js +22 -28
  108. package/src/components/Form/Inputs/index.js +4 -15
  109. package/src/components/MaterialUI/DataDisplay/PredefinedElements/InformationItem.test.js +1 -4
  110. package/src/components/MaterialUI/DataDisplay/PredefinedElements/Placeholder.js +32 -6
  111. package/src/components/MaterialUI/DataDisplay/PredefinedElements/Placeholder.test.js +3 -1
  112. package/src/components/MaterialUI/DataDisplay/PredefinedElements/SectionToolbar.js +39 -0
  113. package/src/components/MaterialUI/DataDisplay/Table.js +190 -114
  114. package/src/components/MaterialUI/DataDisplay/Table.test.js +246 -1
  115. package/src/components/MaterialUI/DataDisplay/TableProps.js +4 -0
  116. package/src/components/MaterialUI/DataDisplay/TableProps.test.js +2 -0
  117. package/src/components/MaterialUI/DataDisplay/TableWithInMemoryPaging.js +145 -0
  118. package/src/components/MaterialUI/DataDisplay/TableWithInMemoryPaging.test.js +457 -0
  119. package/src/components/MaterialUI/DataDisplay/TooltippedElements/MultipleLinesText.js +5 -1
  120. package/src/components/MaterialUI/DataDisplay/TooltippedElements/MultipleLinesText.test.js +7 -1
  121. package/src/components/MaterialUI/Inputs/DatePicker.js +19 -20
  122. package/src/components/MaterialUI/Inputs/DatePicker.test.js +11 -6
  123. package/src/components/MaterialUI/Inputs/PredefinedElements/SearchControl.js +1 -0
  124. package/src/components/MaterialUI/Inputs/Select.js +2 -0
  125. package/src/components/MaterialUI/Inputs/SelectProps.js +2 -0
  126. package/src/components/MaterialUI/Inputs/SelectProps.test.js +2 -0
  127. package/src/components/MaterialUI/Inputs/Switch.js +22 -1
  128. package/src/components/MaterialUI/Inputs/Switch.test.js +23 -0
  129. package/src/components/MaterialUI/Inputs/SwitchProps.js +2 -0
  130. package/src/components/MaterialUI/Inputs/SwitchProps.test.js +2 -0
  131. package/src/components/MaterialUI/Inputs/TimePicker.js +10 -19
  132. package/src/components/MaterialUI/Inputs/TimePicker.test.js +278 -117
  133. package/src/components/MaterialUI/hocs/withDeferredTooltip.js +4 -1
  134. package/src/components/MaterialUI/hocs/withDeferredTooltip.test.js +27 -0
  135. package/src/components/MaterialUI/muiThemes.js +1 -0
  136. package/src/components/Navigation/Bar.test.js +92 -87
  137. package/src/components/Provision.js +1 -1
  138. package/src/components/TaskDetailsModal.test.js +1 -3
  139. package/src/constants.js +1 -0
  140. package/src/content/iconsSheet.svg +740 -116
  141. package/src/hocs/withScrollBox.js +32 -19
  142. package/src/hocs/withScrollBox.test.js +15 -3
  143. package/src/hooks/useDaysAndMonthsLocalization.js +79 -0
  144. package/src/hooks/useDaysAndMonthsLocalization.test.js +107 -0
  145. package/src/hooks/useInMemoryPaging.js +78 -0
  146. package/src/hooks/useInMemoryPaging.test.js +515 -0
  147. package/src/hooks/useMultipleFieldEditState.js +11 -4
  148. package/src/hooks/useMultipleFieldEditState.test.js +49 -1
  149. package/src/reducers/metadata.js +6 -1
  150. package/src/reducers/metadata.test.js +31 -0
  151. package/src/requests +1 -0
  152. package/src/schemas/metadata.js +3 -0
  153. package/src/selectors/locale.js +1 -1
  154. package/src/selectors/metadata.js +12 -9
  155. package/src/selectors/metadata.test.js +92 -11
  156. package/src/sharedMessages.js +184 -0
  157. package/src/timezones.json +883 -0
  158. package/src/translations/en-US.json +46 -0
  159. package/src/translations/fr-CA.json +46 -0
  160. package/src/utils/ListHelper.js +203 -0
  161. package/src/utils/ListHelper.test.js +710 -0
  162. package/src/utils/comparisonHelper.js +135 -0
  163. package/src/utils/comparisonHelper.test.js +334 -0
  164. package/src/utils/propertyBagHelper.js +2 -0
  165. package/src/utils/propertyBagHelper.test.js +6 -0
  166. package/src/utils/timezoneHelper.js +10 -135
  167. package/src/utils/timezoneHelper.test.js +7 -7
  168. package/dist/components/Form/FieldList.js +0 -270
  169. package/dist/components/Form/Inputs/FieldButtons.js +0 -66
  170. package/dist/components/Form/Inputs/Number.js +0 -117
  171. package/dist/components/Form/Inputs/SmallButton.js +0 -91
  172. package/dist/components/Form/Inputs/Time.js +0 -86
  173. package/dist/components/Form/Inputs/Translation.js +0 -169
  174. package/src/components/AppFrame/ApplicationSelector/Header.js +0 -34
  175. package/src/components/AppFrame/ApplicationSelector/Header.test.js +0 -23
  176. package/src/components/Form/FieldList.js +0 -210
  177. package/src/components/Form/FieldList.test.js +0 -558
  178. package/src/components/Form/Inputs/FieldButtons.js +0 -90
  179. package/src/components/Form/Inputs/Number.js +0 -60
  180. package/src/components/Form/Inputs/Number.test.js +0 -435
  181. package/src/components/Form/Inputs/SmallButton.js +0 -37
  182. package/src/components/Form/Inputs/SmallButton.test.js +0 -65
  183. package/src/components/Form/Inputs/Time.js +0 -32
  184. package/src/components/Form/Inputs/Time.test.js +0 -41
  185. package/src/components/Form/Inputs/Translation.js +0 -93
  186. package/src/components/Form/Inputs/Translation.test.js +0 -204
@@ -1,29 +1,21 @@
1
1
  import React from "react";
2
2
  import Immutable from "immutable";
3
- import { ThemeProvider } from "styled-components";
4
3
  import { RSAA } from "redux-api-middleware";
5
- import { Provider } from "react-redux";
6
- import { MemoryRouter } from "react-router-dom";
7
4
  import sinon from "sinon";
8
5
  import { Ignore } from "unexpected-reaction";
9
6
  import { mount, simulate } from "unexpected-reaction";
10
7
  import { mount as enzymeMount } from "enzyme";
11
- import { getStyledClassSelector } from "../../utils/testUtils";
12
- import I18n from "../I18n";
8
+ import { TestWrapper, extractMessages } from "../../utils/testUtils";
13
9
  import {
14
10
  GET_APPLICATIONS_REQUEST,
15
11
  GET_APPLICATIONS_SUCCESS,
16
12
  GET_APPLICATIONS_FAILURE,
17
13
  } from "../../actions/applications";
18
14
  import { ScopeBar, Bar as BarWrapper } from "../Scope";
19
- import AppFrame, { Base, ViewPort } from "./AppFrame";
15
+ import AppFrame from "./AppFrame";
20
16
  import ApplicationSelector from "./ApplicationSelector";
21
- import { Wrapper as MenuWrapper } from "../DropMenu";
22
- import { Wrapper, AppBox, AppLabel, AppLogo } from "./Topbar";
23
- import { Bar as SideBar, MenuToggle, Logo } from "./Sidebar";
24
- import { BlockWithA } from "./MenuItem";
25
- import { HelpLink } from "./Help";
26
- import { About } from "./About";
17
+ import { MenuToggle, Logo } from "./Sidebar";
18
+ import { ABOUT_NAME } from "./About";
27
19
  import {
28
20
  GET_VERSION_INFO_FAILURE,
29
21
  GET_VERSION_INFO_REQUEST,
@@ -33,6 +25,9 @@ import LoadingScreen from "../MaterialUI/Feedback/loadingScreen";
33
25
  import ActionModal from "../MaterialUI/DataDisplay/PredefinedElements/ActionModal";
34
26
  import sharedMessages from "../../sharedMessages";
35
27
  import Button from "@material-ui/core/Button";
28
+ import Preferences from "./Preferences";
29
+
30
+ const messages = extractMessages(sharedMessages);
36
31
 
37
32
  jest.mock("../../utils/buildUrl", () => {
38
33
  const modExport = {};
@@ -213,7 +208,7 @@ describe("AppFrame", () => {
213
208
  },
214
209
  settings: { defaultScope: "myScope", defaultApp: "12" },
215
210
  versionInfo: { version: "4.2", defaultHelpUrl: "help_url", moduleHelpUrls: [] },
216
- view: { scopeSelector: { filter: "1" }, __prefsDialog: { show: false } },
211
+ view: { scopeSelector: { filter: "1" }, __prefsDialog: { show: false }, [ABOUT_NAME]: { show: true } },
217
212
  toasts: { queue: [] },
218
213
  requests: {
219
214
  actives: Immutable.Map(),
@@ -242,53 +237,52 @@ describe("AppFrame", () => {
242
237
  ];
243
238
  props.children = [<TestComp1 key="1" />, <TestComp2 key="2" />, <TestComp3 key="3" />];
244
239
  expect(
245
- <Provider store={store}>
246
- <MemoryRouter initialEntries={["/Foo/bar"]}>
247
- <ThemeProvider theme={{}}>
248
- <I18n>
249
- <AppFrame {...props} />
250
- </I18n>
251
- </ThemeProvider>
252
- </MemoryRouter>
253
- </Provider>,
240
+ <TestWrapper
241
+ provider={{ store }}
242
+ stylesProvider
243
+ muiThemeProvider
244
+ intlProvider={{ messages }}
245
+ memoryRouter={{ initialEntries: ["/Foo/bar"] }}
246
+ >
247
+ <AppFrame {...props} />
248
+ </TestWrapper>,
254
249
  "when mounted",
255
250
  "to satisfy",
256
- <Provider store={store}>
257
- <ThemeProvider theme={{}}>
258
- <MemoryRouter initialEntries={["/Foo/bar"]}>
259
- <Base>
260
- <Wrapper>
261
- <AppBox>
262
- <ApplicationSelector {...props} />
263
- <AppLabel>
264
- <AppLogo />
265
- Marketing Legacy
266
- </AppLabel>
267
- </AppBox>
268
- <MenuWrapper>
269
- <Ignore />
270
- </MenuWrapper>
271
- <HelpLink>Help</HelpLink>
272
- </Wrapper>
273
- <SideBar>
274
- <MenuToggle />
275
- <Ignore />
276
- <Ignore />
277
- <Ignore />
278
- <Logo />
279
- </SideBar>
280
- <ViewPort>
281
- <ScopeBar name="Test 1" />
282
- <TestComp1 key="1" />
283
- <TestComp2 key="2" />
284
- <TestComp3 key="3" />
285
- </ViewPort>
286
- <About messages={props.aboutMessages} />
287
- <LoadingScreen />
288
- </Base>
289
- </MemoryRouter>
290
- </ThemeProvider>
291
- </Provider>,
251
+ <TestWrapper
252
+ provider={{ store }}
253
+ stylesProvider
254
+ muiThemeProvider
255
+ intlProvider={{ messages }}
256
+ memoryRouter={{ initialEntries: ["/Foo/bar"] }}
257
+ >
258
+ <div>
259
+ <div>
260
+ <div>
261
+ <ApplicationSelector {...props} />
262
+ <div>
263
+ <img />
264
+ Marketing Legacy
265
+ </div>
266
+ </div>
267
+ <Ignore />
268
+ <a>Help</a>
269
+ </div>
270
+ <div>
271
+ <MenuToggle />
272
+ <Ignore />
273
+ <Ignore />
274
+ <Ignore />
275
+ <Logo />
276
+ </div>
277
+ <div>
278
+ <ScopeBar name="Test 1" />
279
+ <TestComp1 key="1" />
280
+ <TestComp2 key="2" />
281
+ <TestComp3 key="3" />
282
+ </div>
283
+ <LoadingScreen />
284
+ </div>
285
+ </TestWrapper>,
292
286
  );
293
287
 
294
288
  expect(document.title, "to equal", "Marketing Legacy");
@@ -298,50 +292,49 @@ describe("AppFrame", () => {
298
292
  props.modules = undefined;
299
293
  props.children = [<TestComp1 key="1" />, <TestComp2 key="2" />, <TestComp3 key="3" />];
300
294
  expect(
301
- <Provider store={store}>
302
- <MemoryRouter initialEntries={["/Foo/bar"]}>
303
- <ThemeProvider theme={{}}>
304
- <I18n>
305
- <AppFrame {...props} />
306
- </I18n>
307
- </ThemeProvider>
308
- </MemoryRouter>
309
- </Provider>,
295
+ <TestWrapper
296
+ provider={{ store }}
297
+ stylesProvider
298
+ muiThemeProvider
299
+ intlProvider={{ messages }}
300
+ memoryRouter={{ initialEntries: ["/Foo/bar"] }}
301
+ >
302
+ <AppFrame {...props} />
303
+ </TestWrapper>,
310
304
  "when mounted",
311
305
  "to satisfy",
312
- <Provider store={store}>
313
- <ThemeProvider theme={{}}>
314
- <MemoryRouter initialEntries={["/Foo/bar"]}>
315
- <Base>
316
- <Wrapper>
317
- <AppBox>
318
- <ApplicationSelector {...props} />
319
- <AppLabel>
320
- <AppLogo />
321
- Marketing Legacy
322
- </AppLabel>
323
- </AppBox>
324
- <MenuWrapper>
325
- <Ignore />
326
- </MenuWrapper>
327
- <HelpLink>Help</HelpLink>
328
- </Wrapper>
329
- <SideBar>
330
- <MenuToggle />
331
- <Logo />
332
- </SideBar>
333
- <ViewPort>
334
- <ScopeBar name="Test 1" />
335
- <TestComp1 key="1" />
336
- <TestComp2 key="2" />
337
- <TestComp3 key="3" />
338
- </ViewPort>
339
- <About messages={props.aboutMessages} />
340
- <LoadingScreen />
341
- </Base>
342
- </MemoryRouter>
343
- </ThemeProvider>
344
- </Provider>,
306
+ <TestWrapper
307
+ provider={{ store }}
308
+ stylesProvider
309
+ muiThemeProvider
310
+ intlProvider={{ messages }}
311
+ memoryRouter={{ initialEntries: ["/Foo/bar"] }}
312
+ >
313
+ <div>
314
+ <div>
315
+ <div>
316
+ <ApplicationSelector {...props} />
317
+ <div>
318
+ <img />
319
+ Marketing Legacy
320
+ </div>
321
+ </div>
322
+ <Ignore />
323
+ <a>Help</a>
324
+ </div>
325
+ <div>
326
+ <MenuToggle />
327
+ <Logo />
328
+ </div>
329
+ <div>
330
+ <ScopeBar name="Test 1" />
331
+ <TestComp1 key="1" />
332
+ <TestComp2 key="2" />
333
+ <TestComp3 key="3" />
334
+ </div>
335
+ <LoadingScreen />
336
+ </div>
337
+ </TestWrapper>,
345
338
  );
346
339
 
347
340
  expect(document.title, "to equal", "Marketing Legacy");
@@ -355,52 +348,51 @@ describe("AppFrame", () => {
355
348
  ];
356
349
  props.children = [<TestComp1 key="1" />, <TestComp2 key="2" />, <TestComp3 key="3" />];
357
350
  expect(
358
- <Provider store={store}>
359
- <MemoryRouter initialEntries={["/Foo/bar"]}>
360
- <ThemeProvider theme={{}}>
361
- <I18n>
362
- <AppFrame {...props} applicationId="other" />
363
- </I18n>
364
- </ThemeProvider>
365
- </MemoryRouter>
366
- </Provider>,
351
+ <TestWrapper
352
+ provider={{ store }}
353
+ stylesProvider
354
+ muiThemeProvider
355
+ intlProvider={{ messages }}
356
+ memoryRouter={{ initialEntries: ["/Foo/bar"] }}
357
+ >
358
+ <AppFrame {...props} applicationId="other" />
359
+ </TestWrapper>,
367
360
  "when mounted",
368
361
  "to satisfy",
369
- <Provider store={store}>
370
- <ThemeProvider theme={{}}>
371
- <MemoryRouter initialEntries={["/Foo/bar"]}>
372
- <Base>
373
- <Wrapper>
374
- <AppBox>
375
- <ApplicationSelector {...props} />
376
- <AppLabel>
377
- <AppLogo />
378
- </AppLabel>
379
- </AppBox>
380
- <MenuWrapper>
381
- <Ignore />
382
- </MenuWrapper>
383
- <HelpLink>Help</HelpLink>
384
- </Wrapper>
385
- <SideBar>
386
- <MenuToggle />
387
- <Ignore />
388
- <Ignore />
389
- <Ignore />
390
- <Logo />
391
- </SideBar>
392
- <ViewPort>
393
- <ScopeBar name="Test 1" />
394
- <TestComp1 key="1" />
395
- <TestComp2 key="2" />
396
- <TestComp3 key="3" />
397
- </ViewPort>
398
- <About messages={props.aboutMessages} />
399
- <LoadingScreen />
400
- </Base>
401
- </MemoryRouter>
402
- </ThemeProvider>
403
- </Provider>,
362
+ <TestWrapper
363
+ provider={{ store }}
364
+ stylesProvider
365
+ muiThemeProvider
366
+ intlProvider={{ messages }}
367
+ memoryRouter={{ initialEntries: ["/Foo/bar"] }}
368
+ >
369
+ <div>
370
+ <div>
371
+ <div>
372
+ <ApplicationSelector {...props} />
373
+ <div>
374
+ <img />
375
+ </div>
376
+ </div>
377
+ <Ignore />
378
+ <a>Help</a>
379
+ </div>
380
+ <div>
381
+ <MenuToggle />
382
+ <Ignore />
383
+ <Ignore />
384
+ <Ignore />
385
+ <Logo />
386
+ </div>
387
+ <div>
388
+ <ScopeBar name="Test 1" />
389
+ <TestComp1 key="1" />
390
+ <TestComp2 key="2" />
391
+ <TestComp3 key="3" />
392
+ </div>
393
+ <LoadingScreen />
394
+ </div>
395
+ </TestWrapper>,
404
396
  );
405
397
 
406
398
  expect(document.title, "to equal", "other");
@@ -415,52 +407,51 @@ describe("AppFrame", () => {
415
407
  props.children = [<TestComp1 key="1" />, <TestComp2 key="2" />, <TestComp3 key="3" />];
416
408
  state = state.setIn(["applications", "list"], Immutable.fromJS([]));
417
409
  expect(
418
- <Provider store={store}>
419
- <MemoryRouter initialEntries={["/Foo/bar"]}>
420
- <ThemeProvider theme={{}}>
421
- <I18n>
422
- <AppFrame {...props} applicationId="other" />
423
- </I18n>
424
- </ThemeProvider>
425
- </MemoryRouter>
426
- </Provider>,
410
+ <TestWrapper
411
+ provider={{ store }}
412
+ stylesProvider
413
+ muiThemeProvider
414
+ intlProvider={{ messages }}
415
+ memoryRouter={{ initialEntries: ["/Foo/bar"] }}
416
+ >
417
+ <AppFrame {...props} applicationId="other" />
418
+ </TestWrapper>,
427
419
  "when mounted",
428
420
  "to satisfy",
429
- <Provider store={store}>
430
- <ThemeProvider theme={{}}>
431
- <MemoryRouter initialEntries={["/Foo/bar"]}>
432
- <Base>
433
- <Wrapper>
434
- <AppBox>
435
- <ApplicationSelector {...props} />
436
- <AppLabel>
437
- <AppLogo />
438
- </AppLabel>
439
- </AppBox>
440
- <MenuWrapper>
441
- <Ignore />
442
- </MenuWrapper>
443
- <HelpLink>Help</HelpLink>
444
- </Wrapper>
445
- <SideBar>
446
- <MenuToggle />
447
- <Ignore />
448
- <Ignore />
449
- <Ignore />
450
- <Logo />
451
- </SideBar>
452
- <ViewPort>
453
- <ScopeBar name="Test 1" />
454
- <TestComp1 key="1" />
455
- <TestComp2 key="2" />
456
- <TestComp3 key="3" />
457
- </ViewPort>
458
- <About messages={props.aboutMessages} />
459
- <LoadingScreen />
460
- </Base>
461
- </MemoryRouter>
462
- </ThemeProvider>
463
- </Provider>,
421
+ <TestWrapper
422
+ provider={{ store }}
423
+ stylesProvider
424
+ muiThemeProvider
425
+ intlProvider={{ messages }}
426
+ memoryRouter={{ initialEntries: ["/Foo/bar"] }}
427
+ >
428
+ <div>
429
+ <div>
430
+ <div>
431
+ <ApplicationSelector {...props} />
432
+ <div>
433
+ <img />
434
+ </div>
435
+ </div>
436
+ <Ignore />
437
+ <a>Help</a>
438
+ </div>
439
+ <div>
440
+ <MenuToggle />
441
+ <Ignore />
442
+ <Ignore />
443
+ <Ignore />
444
+ <Logo />
445
+ </div>
446
+ <div>
447
+ <ScopeBar name="Test 1" />
448
+ <TestComp1 key="1" />
449
+ <TestComp2 key="2" />
450
+ <TestComp3 key="3" />
451
+ </div>
452
+ <LoadingScreen />
453
+ </div>
454
+ </TestWrapper>,
464
455
  );
465
456
 
466
457
  expect(document.title, "to equal", "other");
@@ -474,52 +465,52 @@ describe("AppFrame", () => {
474
465
  ];
475
466
  props.children = [<TestComp1 key="1" />, <TestComp2 key="2" />, <TestComp3 key="3" />];
476
467
  return expect(
477
- <Provider store={store}>
478
- <MemoryRouter initialEntries={["/Foo/bar"]}>
479
- <ThemeProvider theme={{}}>
480
- <I18n>
481
- <AppFrame noScope {...props} />
482
- </I18n>
483
- </ThemeProvider>
484
- </MemoryRouter>
485
- </Provider>,
468
+ <TestWrapper
469
+ provider={{ store }}
470
+ stylesProvider
471
+ muiThemeProvider
472
+ intlProvider={{ messages }}
473
+ memoryRouter={{ initialEntries: ["/Foo/bar"] }}
474
+ >
475
+ <AppFrame noScope {...props} />
476
+ </TestWrapper>,
486
477
  "when mounted",
487
478
  "to satisfy",
488
- <Provider store={store}>
489
- <ThemeProvider theme={{}}>
490
- <MemoryRouter initialEntries={["/Foo/bar"]}>
491
- <Base>
492
- <Wrapper>
493
- <AppBox>
494
- <ApplicationSelector {...props} />
495
- <AppLabel>
496
- <AppLogo />
497
- Marketing Legacy
498
- </AppLabel>
499
- </AppBox>
500
- <MenuWrapper>
501
- <Ignore />
502
- </MenuWrapper>
503
- <HelpLink>Help</HelpLink>
504
- </Wrapper>
505
- <SideBar>
506
- <MenuToggle />
507
- <Ignore />
508
- <Ignore />
509
- <Ignore />
510
- <Logo />
511
- </SideBar>
512
- <ViewPort>
513
- <BarWrapper />
514
- <TestComp1 />
515
- <TestComp2 />
516
- <TestComp3 />
517
- </ViewPort>
518
- <LoadingScreen />
519
- </Base>
520
- </MemoryRouter>
521
- </ThemeProvider>
522
- </Provider>,
479
+ <TestWrapper
480
+ provider={{ store }}
481
+ stylesProvider
482
+ muiThemeProvider
483
+ intlProvider={{ messages }}
484
+ memoryRouter={{ initialEntries: ["/Foo/bar"] }}
485
+ >
486
+ <div>
487
+ <div>
488
+ <div>
489
+ <ApplicationSelector {...props} />
490
+ <div>
491
+ <img />
492
+ Marketing Legacy
493
+ </div>
494
+ </div>
495
+ <Ignore />
496
+ <a>Help</a>
497
+ </div>
498
+ <div>
499
+ <MenuToggle />
500
+ <Ignore />
501
+ <Ignore />
502
+ <Ignore />
503
+ <Logo />
504
+ </div>
505
+ <div>
506
+ <BarWrapper />
507
+ <TestComp1 />
508
+ <TestComp2 />
509
+ <TestComp3 />
510
+ </div>
511
+ <LoadingScreen />
512
+ </div>
513
+ </TestWrapper>,
523
514
  );
524
515
  });
525
516
 
@@ -532,166 +523,184 @@ describe("AppFrame", () => {
532
523
  ];
533
524
  props.children = [<TestComp1 key="1" />, <TestComp2 key="2" />, <TestComp3 key="3" />];
534
525
  return expect(
535
- <Provider store={store}>
536
- <MemoryRouter initialEntries={["/Foo/bar"]}>
537
- <ThemeProvider theme={{}}>
538
- <I18n>
539
- <AppFrame {...props} />
540
- </I18n>
541
- </ThemeProvider>
542
- </MemoryRouter>
543
- </Provider>,
526
+ <TestWrapper
527
+ provider={{ store }}
528
+ stylesProvider
529
+ muiThemeProvider
530
+ intlProvider={{ messages }}
531
+ memoryRouter={{ initialEntries: ["/Foo/bar"] }}
532
+ >
533
+ <AppFrame {...props} />
534
+ </TestWrapper>,
544
535
  "when mounted",
545
536
  "to satisfy",
546
- <Provider store={store}>
547
- <ThemeProvider theme={{}}>
548
- <MemoryRouter initialEntries={["/Foo/bar"]}>
549
- <Base preferencesOpen={true}>
550
- <Ignore />
551
- <Ignore />
552
- <Ignore />
553
- <Ignore />
554
- </Base>
555
- </MemoryRouter>
556
- </ThemeProvider>
557
- </Provider>,
537
+ <TestWrapper
538
+ provider={{ store }}
539
+ stylesProvider
540
+ muiThemeProvider
541
+ intlProvider={{ messages }}
542
+ memoryRouter={{ initialEntries: ["/Foo/bar"] }}
543
+ >
544
+ <div>
545
+ <Ignore />
546
+ <Ignore />
547
+ <Ignore />
548
+ <Ignore />
549
+ </div>
550
+ </TestWrapper>,
558
551
  );
559
552
  });
560
553
 
561
554
  it("provides open flag, toggle and reset functions", () => {
562
555
  const element = mount(
563
- <Provider store={store}>
564
- <ThemeProvider theme={{}}>
565
- <MemoryRouter initialEntries={["/Foo/bar"]}>
566
- <I18n>
567
- <AppFrame {...props} />
568
- </I18n>
569
- </MemoryRouter>
570
- </ThemeProvider>
571
- </Provider>,
556
+ <TestWrapper
557
+ provider={{ store }}
558
+ stylesProvider
559
+ muiThemeProvider
560
+ intlProvider={{ messages }}
561
+ memoryRouter={{ initialEntries: ["/Foo/bar"] }}
562
+ >
563
+ <AppFrame {...props} />
564
+ </TestWrapper>,
572
565
  );
573
566
  simulate(element, {
574
567
  type: "click",
575
- target: getStyledClassSelector(BlockWithA),
568
+ target: "#sidebarMenuToggle",
576
569
  });
577
570
  expect(
578
571
  element,
579
572
  "to satisfy",
580
- <Provider store={store}>
581
- <ThemeProvider theme={{}}>
582
- <Base>
583
- <Wrapper>
584
- <Ignore />
585
- <Ignore />
586
- <Ignore />
587
- </Wrapper>
588
- <SideBar open>
589
- <MenuToggle open />
590
- <Logo />
591
- </SideBar>
592
- <ViewPort open>
593
- <Ignore />
594
- </ViewPort>
595
- <LoadingScreen />
596
- </Base>
597
- </ThemeProvider>
598
- </Provider>,
573
+ <TestWrapper
574
+ provider={{ store }}
575
+ stylesProvider
576
+ muiThemeProvider
577
+ intlProvider={{ messages }}
578
+ memoryRouter={{ initialEntries: ["/Foo/bar"] }}
579
+ >
580
+ <div>
581
+ <div>
582
+ <Ignore />
583
+ <Ignore />
584
+ <Ignore />
585
+ </div>
586
+ <div>
587
+ <MenuToggle open />
588
+ <Logo />
589
+ </div>
590
+ <div>
591
+ <Ignore />
592
+ </div>
593
+ <LoadingScreen />
594
+ </div>
595
+ </TestWrapper>,
599
596
  );
600
597
  simulate(element, {
601
598
  type: "click",
602
- target: getStyledClassSelector(Wrapper),
599
+ target: '[data-test-id="wrapper"]',
603
600
  });
604
601
  expect(
605
602
  element,
606
603
  "to satisfy",
607
- <Provider store={store}>
608
- <ThemeProvider theme={{}}>
609
- <Base>
610
- <Wrapper>
611
- <Ignore />
612
- <Ignore />
613
- <Ignore />
614
- </Wrapper>
615
- <SideBar>
616
- <MenuToggle />
617
- <Logo />
618
- </SideBar>
619
- <ViewPort>
620
- <Ignore />
621
- </ViewPort>
622
- <LoadingScreen />
623
- </Base>
624
- </ThemeProvider>
625
- </Provider>,
604
+ <TestWrapper
605
+ provider={{ store }}
606
+ stylesProvider
607
+ muiThemeProvider
608
+ intlProvider={{ messages }}
609
+ memoryRouter={{ initialEntries: ["/Foo/bar"] }}
610
+ >
611
+ <div>
612
+ <div>
613
+ <Ignore />
614
+ <Ignore />
615
+ <Ignore />
616
+ </div>
617
+ <div>
618
+ <MenuToggle />
619
+ <Logo />
620
+ </div>
621
+ <div>
622
+ <Ignore />
623
+ </div>
624
+ <LoadingScreen />
625
+ </div>
626
+ </TestWrapper>,
626
627
  );
627
628
  simulate(element, {
628
629
  type: "click",
629
- target: getStyledClassSelector(BlockWithA),
630
+ target: "#sidebarMenuToggle",
630
631
  });
631
632
  expect(
632
633
  element,
633
634
  "to satisfy",
634
- <Provider store={store}>
635
- <ThemeProvider theme={{}}>
636
- <Base>
637
- <Wrapper>
638
- <Ignore />
639
- <Ignore />
640
- <Ignore />
641
- </Wrapper>
642
- <SideBar open>
643
- <MenuToggle open />
644
- <Logo />
645
- </SideBar>
646
- <ViewPort open>
647
- <Ignore />
648
- </ViewPort>
649
- <LoadingScreen />
650
- </Base>
651
- </ThemeProvider>
652
- </Provider>,
635
+ <TestWrapper
636
+ provider={{ store }}
637
+ stylesProvider
638
+ muiThemeProvider
639
+ intlProvider={{ messages }}
640
+ memoryRouter={{ initialEntries: ["/Foo/bar"] }}
641
+ >
642
+ <div>
643
+ <div>
644
+ <Ignore />
645
+ <Ignore />
646
+ <Ignore />
647
+ </div>
648
+ <div>
649
+ <MenuToggle open />
650
+ <Logo />
651
+ </div>
652
+ <div>
653
+ <Ignore />
654
+ </div>
655
+ <LoadingScreen />
656
+ </div>
657
+ </TestWrapper>,
653
658
  );
654
659
  simulate(element, {
655
660
  type: "click",
656
- target: getStyledClassSelector(ViewPort),
661
+ target: '[data-test-id="viewport"]',
657
662
  });
658
663
  expect(
659
664
  element,
660
665
  "to satisfy",
661
- <Provider store={store}>
662
- <ThemeProvider theme={{}}>
663
- <Base>
664
- <Wrapper>
665
- <Ignore />
666
- <Ignore />
667
- <Ignore />
668
- </Wrapper>
669
- <SideBar>
670
- <MenuToggle />
671
- <Logo />
672
- </SideBar>
673
- <ViewPort>
674
- <Ignore />
675
- </ViewPort>
676
- <LoadingScreen />
677
- </Base>
678
- </ThemeProvider>
679
- </Provider>,
666
+ <TestWrapper
667
+ provider={{ store }}
668
+ stylesProvider
669
+ muiThemeProvider
670
+ intlProvider={{ messages }}
671
+ memoryRouter={{ initialEntries: ["/Foo/bar"] }}
672
+ >
673
+ <div>
674
+ <div>
675
+ <Ignore />
676
+ <Ignore />
677
+ <Ignore />
678
+ </div>
679
+ <div>
680
+ <MenuToggle />
681
+ <Logo />
682
+ </div>
683
+ <div>
684
+ <Ignore />
685
+ </div>
686
+ <LoadingScreen />
687
+ </div>
688
+ </TestWrapper>,
680
689
  );
681
690
  });
682
691
 
683
692
  it("loads applications if not found", () => {
684
693
  state = state.setIn(["applications", "list"], Immutable.List());
685
694
  return expect(
686
- <Provider store={store}>
687
- <ThemeProvider theme={{}}>
688
- <MemoryRouter initialEntries={["/Foo/bar"]}>
689
- <I18n>
690
- <AppFrame {...props} />
691
- </I18n>
692
- </MemoryRouter>
693
- </ThemeProvider>
694
- </Provider>,
695
+ <TestWrapper
696
+ provider={{ store }}
697
+ stylesProvider
698
+ muiThemeProvider
699
+ intlProvider={{ messages }}
700
+ memoryRouter={{ initialEntries: ["/Foo/bar"] }}
701
+ >
702
+ <AppFrame {...props} />
703
+ </TestWrapper>,
695
704
  "when mounted",
696
705
  "to be truthy",
697
706
  ).then(() =>
@@ -714,15 +723,15 @@ describe("AppFrame", () => {
714
723
  it("loads version info if no help url yet", () => {
715
724
  state = state.setIn(["versionInfo", "defaultHelpUrl"], null);
716
725
  return expect(
717
- <Provider store={store}>
718
- <ThemeProvider theme={{}}>
719
- <MemoryRouter initialEntries={["/Foo/bar"]}>
720
- <I18n>
721
- <AppFrame {...props} />
722
- </I18n>
723
- </MemoryRouter>
724
- </ThemeProvider>
725
- </Provider>,
726
+ <TestWrapper
727
+ provider={{ store }}
728
+ stylesProvider
729
+ muiThemeProvider
730
+ intlProvider={{ messages }}
731
+ memoryRouter={{ initialEntries: ["/Foo/bar"] }}
732
+ >
733
+ <AppFrame {...props} />
734
+ </TestWrapper>,
726
735
  "when mounted",
727
736
  "to be truthy",
728
737
  ).then(() =>
@@ -760,56 +769,54 @@ describe("AppFrame", () => {
760
769
  const actions = [{ label: sharedMessages.refresh, handler: refreshCallback, isPrimary: true }];
761
770
 
762
771
  expect(
763
- <Provider store={store}>
764
- <MemoryRouter initialEntries={["/Foo/bar"]}>
765
- <ThemeProvider theme={{}}>
766
- <I18n>
767
- <AppFrame {...props} />
768
- </I18n>
769
- </ThemeProvider>
770
- </MemoryRouter>
771
- </Provider>,
772
+ <TestWrapper
773
+ provider={{ store }}
774
+ stylesProvider
775
+ muiThemeProvider
776
+ intlProvider={{ messages }}
777
+ memoryRouter={{ initialEntries: ["/Foo/bar"] }}
778
+ >
779
+ <AppFrame {...props} />
780
+ </TestWrapper>,
772
781
  "when mounted",
773
782
  "to satisfy",
774
- <Provider store={store}>
775
- <ThemeProvider theme={{}}>
776
- <I18n>
777
- <MemoryRouter initialEntries={["/Foo/bar"]}>
778
- <Base>
779
- <ActionModal open={true} title={title} message={message} actions={actions} />
780
- <Wrapper>
781
- <AppBox>
782
- <ApplicationSelector {...props} />
783
- <AppLabel>
784
- <AppLogo />
785
- Marketing Legacy
786
- </AppLabel>
787
- </AppBox>
788
- <MenuWrapper>
789
- <Ignore />
790
- </MenuWrapper>
791
- <HelpLink>Help</HelpLink>
792
- </Wrapper>
793
- <SideBar>
794
- <MenuToggle />
795
- <Ignore />
796
- <Ignore />
797
- <Ignore />
798
- <Logo />
799
- </SideBar>
800
- <ViewPort>
801
- <ScopeBar name="Test 1" />
802
- <TestComp1 key="1" />
803
- <TestComp2 key="2" />
804
- <TestComp3 key="3" />
805
- </ViewPort>
806
- <About messages={props.aboutMessages} />
807
- <LoadingScreen />
808
- </Base>
809
- </MemoryRouter>
810
- </I18n>
811
- </ThemeProvider>
812
- </Provider>,
783
+ <TestWrapper
784
+ provider={{ store }}
785
+ stylesProvider
786
+ muiThemeProvider
787
+ intlProvider={{ messages }}
788
+ memoryRouter={{ initialEntries: ["/Foo/bar"] }}
789
+ >
790
+ <div>
791
+ <ActionModal open={true} title={title} message={message} actions={actions} />
792
+ <div>
793
+ <div>
794
+ <ApplicationSelector {...props} />
795
+ <div>
796
+ <img />
797
+ Marketing Legacy
798
+ </div>
799
+ </div>
800
+ <Ignore />
801
+ <a>Help</a>
802
+ </div>
803
+ <div>
804
+ <MenuToggle />
805
+ <Ignore />
806
+ <Ignore />
807
+ <Ignore />
808
+ <Logo />
809
+ </div>
810
+ <div>
811
+ <ScopeBar name="Test 1" />
812
+ <TestComp1 key="1" />
813
+ <TestComp2 key="2" />
814
+ <TestComp3 key="3" />
815
+ </div>
816
+ <LoadingScreen />
817
+ <Preferences />
818
+ </div>
819
+ </TestWrapper>,
813
820
  );
814
821
  });
815
822
 
@@ -824,15 +831,15 @@ describe("AppFrame", () => {
824
831
  props.children = [<TestComp1 key="1" />, <TestComp2 key="2" />, <TestComp3 key="3" />];
825
832
 
826
833
  const component = (
827
- <Provider store={store}>
828
- <MemoryRouter initialEntries={["/Foo/bar"]}>
829
- <ThemeProvider theme={{}}>
830
- <I18n>
831
- <AppFrame {...props} />
832
- </I18n>
833
- </ThemeProvider>
834
- </MemoryRouter>
835
- </Provider>
834
+ <TestWrapper
835
+ provider={{ store }}
836
+ stylesProvider
837
+ muiThemeProvider
838
+ intlProvider={{ messages }}
839
+ memoryRouter={{ initialEntries: ["/Foo/bar"] }}
840
+ >
841
+ <AppFrame {...props} />
842
+ </TestWrapper>
836
843
  );
837
844
 
838
845
  const mountedComponent = enzymeMount(component);
@@ -846,31 +853,3 @@ describe("AppFrame", () => {
846
853
  expect(locationReloadSpy, "was called");
847
854
  });
848
855
  });
849
-
850
- describe("ViewPort", () => {
851
- it("does not translate when closed", () =>
852
- expect(<ViewPort />, "when mounted", "to have style rules satisfying", "to contain", "width: calc(100% - 50px)"));
853
-
854
- it("translates to the side when open", () =>
855
- expect(
856
- <ViewPort open />,
857
- "when mounted",
858
- "to have style rules satisfying",
859
- "to contain",
860
- "width: calc(100% - 200px);",
861
- ));
862
- });
863
-
864
- describe("Base", () => {
865
- it("pointer-events should be to default when preferences is hidden", () =>
866
- expect(<Base />, "when mounted", "to have style rules satisfying", "not to contain", "pointer-events: none;"));
867
-
868
- it("pointer-events should be none when preferences is shown", () =>
869
- expect(
870
- <Base preferencesOpen={true} />,
871
- "when mounted",
872
- "to have style rules satisfying",
873
- "to contain",
874
- "pointer-events: none;",
875
- ));
876
- });