@finsemble/finsemble-ui 6.6.1 → 7.0.0-beta.3

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 (262) hide show
  1. package/package.json +18 -32
  2. package/react/assets/css/button.css +1 -1
  3. package/react/assets/css/favorites.css +0 -47
  4. package/react/assets/css/finsemble.css +3 -0
  5. package/react/assets/css/linkerWindow.css +13 -1
  6. package/react/assets/css/menus.css +2 -2
  7. package/react/assets/css/notificationsCenter.css +32 -1
  8. package/react/assets/css/shared/common.css +40 -0
  9. package/react/assets/css/userPreferences.css +17 -12
  10. package/react/assets/css/windowTitleBar.css +7 -0
  11. package/react/assets/icons/server.svg +26 -0
  12. package/react/components/common/ButtonIcon.js +1 -1
  13. package/react/components/common/ButtonIcon.js.map +1 -1
  14. package/react/components/common/ButtonRow.js +2 -2
  15. package/react/components/common/ButtonRow.js.map +1 -1
  16. package/react/components/common/Checkbox.js +1 -1
  17. package/react/components/common/Checkbox.js.map +1 -1
  18. package/react/components/common/ColorPicker.js +16 -15
  19. package/react/components/common/ColorPicker.js.map +1 -1
  20. package/react/components/common/ErrorBoundary.d.ts +16 -0
  21. package/react/components/common/ErrorBoundary.js +22 -0
  22. package/react/components/common/ErrorBoundary.js.map +1 -0
  23. package/react/components/common/FinsembleIcon.d.ts +3 -2
  24. package/react/components/common/FinsembleIcon.js +10 -3
  25. package/react/components/common/FinsembleIcon.js.map +1 -1
  26. package/react/components/common/FinsembleLink.d.ts +6 -0
  27. package/react/components/common/FinsembleLink.js +12 -0
  28. package/react/components/common/FinsembleLink.js.map +1 -0
  29. package/react/components/common/FinsembleToggle.d.ts +1 -2
  30. package/react/components/common/FinsembleToggle.js +2 -6
  31. package/react/components/common/FinsembleToggle.js.map +1 -1
  32. package/react/components/common/FinsembleToggleButtonBar.d.ts +13 -0
  33. package/react/components/common/FinsembleToggleButtonBar.js +44 -0
  34. package/react/components/common/FinsembleToggleButtonBar.js.map +1 -0
  35. package/react/components/common/InputTable.d.ts +3 -3
  36. package/react/components/common/InputTable.js +13 -13
  37. package/react/components/common/InputTable.js.map +1 -1
  38. package/react/components/common/Tab.js +33 -5
  39. package/react/components/common/Tab.js.map +1 -1
  40. package/react/components/common/css/FinsembleToggle.css +22 -0
  41. package/react/components/common/css/application-edit-page.css +10 -2
  42. package/react/components/common/css/tab.css +8 -8
  43. package/react/components/common/css/time-select.css +1 -1
  44. package/react/components/common/css/toggle.css +2 -10
  45. package/react/components/common/helpers.js +6 -1
  46. package/react/components/common/helpers.js.map +1 -1
  47. package/react/components/common/stories/ColorPicker.stories.js +6 -11
  48. package/react/components/common/stories/ColorPicker.stories.js.map +1 -1
  49. package/react/components/common/stories/FinsembleToggle.stories.d.ts +1 -2
  50. package/react/components/common/stories/FinsembleToggle.stories.js +0 -7
  51. package/react/components/common/stories/FinsembleToggle.stories.js.map +1 -1
  52. package/react/components/common/stories/FinsembleToggleButtonBar.stories.d.ts +14 -0
  53. package/react/components/common/stories/FinsembleToggleButtonBar.stories.js +97 -0
  54. package/react/components/common/stories/FinsembleToggleButtonBar.stories.js.map +1 -0
  55. package/react/components/common/stories/InputTable.stories.d.ts +4 -3
  56. package/react/components/common/stories/InputTable.stories.js +18 -8
  57. package/react/components/common/stories/InputTable.stories.js.map +1 -1
  58. package/react/components/common/tests/ButtonRow.spec.js +5 -0
  59. package/react/components/common/tests/ButtonRow.spec.js.map +1 -1
  60. package/react/components/common/tests/FinsembleToggle.spec.js +1 -6
  61. package/react/components/common/tests/FinsembleToggle.spec.js.map +1 -1
  62. package/react/components/common/tests/FinsembleToggleButtonBar.spec.d.ts +1 -0
  63. package/react/components/common/tests/FinsembleToggleButtonBar.spec.js +40 -0
  64. package/react/components/common/tests/FinsembleToggleButtonBar.spec.js.map +1 -0
  65. package/react/components/common/tests/InputTable.spec.js +3 -3
  66. package/react/components/common/tests/InputTable.spec.js.map +1 -1
  67. package/react/components/favorites/FavoriteMaker.js +1 -1
  68. package/react/components/favorites/FavoriteMaker.js.map +1 -1
  69. package/react/components/fdc3Resolver/ResolverContainer.js +4 -7
  70. package/react/components/fdc3Resolver/ResolverContainer.js.map +1 -1
  71. package/react/components/icon/Icon.d.ts +1 -1
  72. package/react/components/icon/Icon.js +8 -1
  73. package/react/components/icon/Icon.js.map +1 -1
  74. package/react/components/legacyControls/FinsembleDnDContext.js +7 -7
  75. package/react/components/legacyControls/FinsembleDnDContext.js.map +1 -1
  76. package/react/components/linker/remoteRedux.js +1 -0
  77. package/react/components/linker/remoteRedux.js.map +1 -1
  78. package/react/components/menu/MenuItem.js +1 -1
  79. package/react/components/menu/MenuItem.js.map +1 -1
  80. package/react/components/menu/MenuPortal.js +12 -21
  81. package/react/components/menu/MenuPortal.js.map +1 -1
  82. package/react/components/menu/MenuToggle.js +1 -1
  83. package/react/components/menu/MenuToggle.js.map +1 -1
  84. package/react/components/menu/keyboardNavigation.d.ts +1 -22
  85. package/react/components/menu/keyboardNavigation.js +110 -160
  86. package/react/components/menu/keyboardNavigation.js.map +1 -1
  87. package/react/components/notifications/components/drawer/DrawerControls.js +39 -25
  88. package/react/components/notifications/components/drawer/DrawerControls.js.map +1 -1
  89. package/react/components/notifications/components/notificationsCenter/NotificationsCenter.js +19 -6
  90. package/react/components/notifications/components/notificationsCenter/NotificationsCenter.js.map +1 -1
  91. package/react/components/notifications/components/shared/CheckButton.js +19 -8
  92. package/react/components/notifications/components/shared/CheckButton.js.map +1 -1
  93. package/react/components/notifications/components/shared/NotificationCardShell.js +2 -1
  94. package/react/components/notifications/components/shared/NotificationCardShell.js.map +1 -1
  95. package/react/components/notifications/components/shared/notificationCard/NotificationCardBodyShell.js +2 -1
  96. package/react/components/notifications/components/shared/notificationCard/NotificationCardBodyShell.js.map +1 -1
  97. package/react/components/notifications/components/shared/notificationCard/NotificationCardHeaderShell.js +2 -1
  98. package/react/components/notifications/components/shared/notificationCard/NotificationCardHeaderShell.js.map +1 -1
  99. package/react/components/notifications/components/views/CardView.js +5 -3
  100. package/react/components/notifications/components/views/CardView.js.map +1 -1
  101. package/react/components/notifications/components/views/ListView.js +3 -1
  102. package/react/components/notifications/components/views/ListView.js.map +1 -1
  103. package/react/components/notifications/types.d.ts +3 -0
  104. package/react/components/notifications/types.js.map +1 -1
  105. package/react/components/processMonitor/ProcessMonitor.js +4 -1
  106. package/react/components/processMonitor/ProcessMonitor.js.map +1 -1
  107. package/react/components/processMonitor/components/ProcessStatistics.js +1 -3
  108. package/react/components/processMonitor/components/ProcessStatistics.js.map +1 -1
  109. package/react/components/processMonitor/helpers.js +4 -3
  110. package/react/components/processMonitor/helpers.js.map +1 -1
  111. package/react/components/processMonitor/helpers.spec.js +7 -3
  112. package/react/components/processMonitor/helpers.spec.js.map +1 -1
  113. package/react/components/sdd/AddApp.d.ts +4 -3
  114. package/react/components/sdd/AddApp.js +132 -30
  115. package/react/components/sdd/AddApp.js.map +1 -1
  116. package/react/components/sdd/AppEditAccess.d.ts +4 -3
  117. package/react/components/sdd/AppEditAccess.js.map +1 -1
  118. package/react/components/sdd/AppEditPage.d.ts +4 -3
  119. package/react/components/sdd/AppEditPage.js +141 -116
  120. package/react/components/sdd/AppEditPage.js.map +1 -1
  121. package/react/components/sdd/Appearance.d.ts +2 -1
  122. package/react/components/sdd/Appearance.js +15 -7
  123. package/react/components/sdd/Appearance.js.map +1 -1
  124. package/react/components/sdd/Application.d.ts +5 -4
  125. package/react/components/sdd/Application.js +61 -42
  126. package/react/components/sdd/Application.js.map +1 -1
  127. package/react/components/sdd/Applications.d.ts +12 -11
  128. package/react/components/sdd/Applications.js +23 -4
  129. package/react/components/sdd/Applications.js.map +1 -1
  130. package/react/components/sdd/Authentication.js +1 -6
  131. package/react/components/sdd/Authentication.js.map +1 -1
  132. package/react/components/sdd/AuthenticationProviderConfig.js +5 -3
  133. package/react/components/sdd/AuthenticationProviderConfig.js.map +1 -1
  134. package/react/components/sdd/EditPreload.d.ts +4 -3
  135. package/react/components/sdd/EditPreload.js +39 -22
  136. package/react/components/sdd/EditPreload.js.map +1 -1
  137. package/react/components/sdd/Export.d.ts +7 -6
  138. package/react/components/sdd/Export.js +3 -2
  139. package/react/components/sdd/Export.js.map +1 -1
  140. package/react/components/sdd/GettingStarted.js +3 -3
  141. package/react/components/sdd/GettingStarted.js.map +1 -1
  142. package/react/components/sdd/Navigation.js +28 -4
  143. package/react/components/sdd/Navigation.js.map +1 -1
  144. package/react/components/sdd/OptionalSettingsView.d.ts +6 -5
  145. package/react/components/sdd/OptionalSettingsView.js +2 -10
  146. package/react/components/sdd/OptionalSettingsView.js.map +1 -1
  147. package/react/components/sdd/ProjectErrors.js +1 -1
  148. package/react/components/sdd/ProjectErrors.js.map +1 -1
  149. package/react/components/sdd/Publish.js +2 -2
  150. package/react/components/sdd/Publish.js.map +1 -1
  151. package/react/components/sdd/SmartDesktopDesigner.d.ts +17 -16
  152. package/react/components/sdd/SmartDesktopDesigner.js +37 -34
  153. package/react/components/sdd/SmartDesktopDesigner.js.map +1 -1
  154. package/react/components/sdd/ThemePage.js +8 -5
  155. package/react/components/sdd/ThemePage.js.map +1 -1
  156. package/react/components/sdd/Themes.d.ts +2 -1
  157. package/react/components/sdd/Themes.js +2 -2
  158. package/react/components/sdd/Themes.js.map +1 -1
  159. package/react/components/sdd/Toolbar.d.ts +5 -4
  160. package/react/components/sdd/Toolbar.js +11 -9
  161. package/react/components/sdd/Toolbar.js.map +1 -1
  162. package/react/components/sdd/common/setPreloadDefaults.d.ts +1 -1
  163. package/react/components/sdd/common/setPreloadDefaults.js +5 -4
  164. package/react/components/sdd/common/setPreloadDefaults.js.map +1 -1
  165. package/react/components/sdd/common/views.js +7 -4
  166. package/react/components/sdd/common/views.js.map +1 -1
  167. package/react/components/sdd/css/addApp.css +52 -0
  168. package/react/components/sdd/css/applications.css +4 -24
  169. package/react/components/sdd/css/nav.css +3 -3
  170. package/react/components/sdd/fixtures/authenticationProps.js +15 -1
  171. package/react/components/sdd/fixtures/authenticationProps.js.map +1 -1
  172. package/react/components/sdd/fixtures/preloads.js +14 -12
  173. package/react/components/sdd/fixtures/preloads.js.map +1 -1
  174. package/react/components/sdd/smartDesktopClient.d.ts +163 -0
  175. package/react/components/sdd/smartDesktopClient.js +573 -0
  176. package/react/components/sdd/smartDesktopClient.js.map +1 -0
  177. package/react/components/sdd/smartDesktopClient.spec.d.ts +1 -0
  178. package/react/components/sdd/smartDesktopClient.spec.js +61 -0
  179. package/react/components/sdd/smartDesktopClient.spec.js.map +1 -0
  180. package/react/components/sdd/stories/AddApp.stories.d.ts +10 -0
  181. package/react/components/sdd/stories/AddApp.stories.js +18 -0
  182. package/react/components/sdd/stories/AddApp.stories.js.map +1 -0
  183. package/react/components/sdd/stories/AppEditPage.stories.d.ts +2 -0
  184. package/react/components/sdd/stories/AppEditPage.stories.js +2 -0
  185. package/react/components/sdd/stories/AppEditPage.stories.js.map +1 -1
  186. package/react/components/sdd/stories/Appearance.stories.d.ts +1 -1
  187. package/react/components/sdd/stories/Appearance.stories.js +1 -0
  188. package/react/components/sdd/stories/Appearance.stories.js.map +1 -1
  189. package/react/components/sdd/stories/Authentication.stories.js +2 -16
  190. package/react/components/sdd/stories/Authentication.stories.js.map +1 -1
  191. package/react/components/sdd/stories/OptionalSettingsView.stories.js +1 -1
  192. package/react/components/sdd/stories/OptionalSettingsView.stories.js.map +1 -1
  193. package/react/components/sdd/stories/SmartDesktopDesigner.stories.d.ts +1 -1
  194. package/react/components/sdd/stories/SmartDesktopDesigner.stories.js +3 -0
  195. package/react/components/sdd/stories/SmartDesktopDesigner.stories.js.map +1 -1
  196. package/react/components/sdd/stories/Themes.stories.d.ts +1 -1
  197. package/react/components/sdd/stories/Themes.stories.js +1 -0
  198. package/react/components/sdd/stories/Themes.stories.js.map +1 -1
  199. package/react/components/sdd/tests/AddApp.spec.d.ts +1 -0
  200. package/react/components/sdd/tests/AddApp.spec.js +96 -0
  201. package/react/components/sdd/tests/AddApp.spec.js.map +1 -0
  202. package/react/components/sdd/tests/AppEditPage.spec.js +92 -23
  203. package/react/components/sdd/tests/AppEditPage.spec.js.map +1 -1
  204. package/react/components/sdd/tests/Application.spec.js +411 -24
  205. package/react/components/sdd/tests/Application.spec.js.map +1 -1
  206. package/react/components/sdd/tests/Applications.spec.js +1 -45
  207. package/react/components/sdd/tests/Applications.spec.js.map +1 -1
  208. package/react/components/sdd/tests/Authentication.spec.js +1 -1
  209. package/react/components/sdd/tests/Authentication.spec.js.map +1 -1
  210. package/react/components/sdd/tests/EditPreload.spec.js +50 -7
  211. package/react/components/sdd/tests/EditPreload.spec.js.map +1 -1
  212. package/react/components/sdd/tests/Navigation.spec.js +2 -2
  213. package/react/components/sdd/tests/Navigation.spec.js.map +1 -1
  214. package/react/components/sdd/tests/OptionalSettingsView.spec.js +235 -0
  215. package/react/components/sdd/tests/OptionalSettingsView.spec.js.map +1 -1
  216. package/react/components/sdd/tests/ProjectErrors.spec.js +1 -1
  217. package/react/components/sdd/tests/ProjectErrors.spec.js.map +1 -1
  218. package/react/components/sdd/tests/SmartDesktopDesigner.spec.js +2 -2
  219. package/react/components/sdd/tests/SmartDesktopDesigner.spec.js.map +1 -1
  220. package/react/components/search/Search.js +1 -1
  221. package/react/components/search/Search.js.map +1 -1
  222. package/react/components/shared/DefaultDropdownButton.js +12 -1
  223. package/react/components/shared/DefaultDropdownButton.js.map +1 -1
  224. package/react/components/shared/tests/DefaultDropdownButton.spec.js +12 -0
  225. package/react/components/shared/tests/DefaultDropdownButton.spec.js.map +1 -1
  226. package/react/components/smartDesktopDesigner/SmartDesktopDesigner.d.ts +1 -16
  227. package/react/components/smartDesktopDesigner/SmartDesktopDesigner.js +0 -4
  228. package/react/components/smartDesktopDesigner/SmartDesktopDesigner.js.map +1 -1
  229. package/react/components/toolbar/DragHandle.stories.js.map +1 -1
  230. package/react/components/toolbar/ToolbarIcon.js +2 -2
  231. package/react/components/toolbar/ToolbarIcon.js.map +1 -1
  232. package/react/components/toolbar/ToolbarSection.d.ts +1 -9
  233. package/react/components/toolbar/ToolbarSection.js +3 -7
  234. package/react/components/toolbar/ToolbarSection.js.map +1 -1
  235. package/react/components/toolbar/advancedAppLauncher/stores/StoreActions.js +1 -1
  236. package/react/components/toolbar/advancedAppLauncher/stores/StoreActions.js.map +1 -1
  237. package/react/components/toolbar/dashbar/Dashbar.js +21 -12
  238. package/react/components/toolbar/dashbar/Dashbar.js.map +1 -1
  239. package/react/components/toolbar/workspaceManagementMenu/components/Workspace.js +1 -1
  240. package/react/components/toolbar/workspaceManagementMenu/components/Workspace.js.map +1 -1
  241. package/react/components/userPreferences/components/ContentSection.js +1 -1
  242. package/react/components/userPreferences/components/ContentSection.js.map +1 -1
  243. package/react/components/userPreferences/components/content/notificationViews/NotificationsPreferencesHome.js +4 -3
  244. package/react/components/userPreferences/components/content/notificationViews/NotificationsPreferencesHome.js.map +1 -1
  245. package/react/components/userPreferences/components/general/ScheduledClose.js +12 -3
  246. package/react/components/userPreferences/components/general/ScheduledClose.js.map +1 -1
  247. package/react/components/userPreferences/components/workspaces/WorkspaceButton.js +1 -1
  248. package/react/components/userPreferences/components/workspaces/WorkspaceButton.js.map +1 -1
  249. package/react/components/windowTitleBar/WindowTitleBarShell.d.ts +17 -2
  250. package/react/components/windowTitleBar/WindowTitleBarShell.js +160 -6
  251. package/react/components/windowTitleBar/WindowTitleBarShell.js.map +1 -1
  252. package/react/components/windowTitleBar/components/left/LinkerButton.js +7 -1
  253. package/react/components/windowTitleBar/components/left/LinkerButton.js.map +1 -1
  254. package/react/components/windowTitleBar/components/windowTitle.js +10 -2
  255. package/react/components/windowTitleBar/components/windowTitle.js.map +1 -1
  256. package/react/components/windowTitleBar/stores/windowTitleBarStore.js +11 -1
  257. package/react/components/windowTitleBar/stores/windowTitleBarStore.js.map +1 -1
  258. package/react/reducers/rootReducer.d.ts +2 -2
  259. package/react/store.d.ts +4 -4
  260. package/react/tsconfig.tsbuildinfo +1 -0
  261. package/react/types/smartDesktopDesignerTypes.d.ts +3 -0
  262. package/react/types/smartDesktopDesignerTypes.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Authentication.spec.js","sourceRoot":"","sources":["../../../../src/components/sdd/tests/Authentication.spec.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { mount } from \"enzyme\";\nimport { describe, it } from \"mocha\";\nimport { expect } from \"chai\";\nimport { Page as Authentication } from \"../stories/Authentication.stories\";\nimport { AuthenticationProps } from \"../Authentication\";\nimport { waitTick } from \"../sdd_helpers\";\nimport { accessibilityAssessor } from \"./a11y_helper\";\n\ndescribe(\"<Authentication/>\", () => {\n\tit(\"should pass accessibility scans (Page)\", async () => {\n\t\tconst wrapper = mount(\n\t\t\t<Authentication\n\t\t\t\t{...{\n\t\t\t\t\t...(Authentication.args as AuthenticationProps),\n\t\t\t\t}}\n\t\t\t/>\n\t\t);\n\n\t\texpect(await accessibilityAssessor(wrapper)).to.be.true;\n\t});\n\tit(\"should allow adding auth settings\", async () => {\n\t\tconst wrapper = mount(\n\t\t\t<Authentication\n\t\t\t\t{...{\n\t\t\t\t\t...(Authentication.args as AuthenticationProps),\n\t\t\t\t}}\n\t\t\t/>\n\t\t);\n\n\t\twrapper\n\t\t\t.find(\".auth-setup-select-provider\")\n\t\t\t.at(0)\n\t\t\t.simulate(\"change\", {\n\t\t\t\ttarget: {\n\t\t\t\t\tvalue: \"Custom\",\n\t\t\t\t},\n\t\t\t});\n\n\t\tawait waitTick();\n\n\t\twrapper.update();\n\n\t\texpect(wrapper.find(\".auth-setup-provider\").length).to.equal(1);\n\n\t\tconst inputs = [\n\t\t\t{\n\t\t\t\tselector: \".auth-setup-provider .auth-setup-clientid input\",\n\t\t\t\tvalue: \"clientidTest\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tselector: \".auth-setup-provider .auth-setup-endpoint-url input\",\n\t\t\t\tvalue: \"http://test.com\",\n\t\t\t},\n\t\t];\n\n\t\tinputs.forEach((input) => {\n\t\t\texpect(wrapper.find(input.selector).length, `Find ${input.selector}`).to.be.greaterThan(0);\n\n\t\t\twrapper\n\t\t\t\t.find(input.selector)\n\t\t\t\t.at(0)\n\t\t\t\t.simulate(\"change\", {\n\t\t\t\t\ttarget: {\n\t\t\t\t\t\tvalue: input.value,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t});\n\n\t\tawait waitTick();\n\n\t\twrapper.update();\n\n\t\tinputs.forEach((input) => {\n\t\t\texpect(wrapper.find(input.selector).at(0).prop(\"value\")).to.equal(input.value);\n\t\t\texpect(wrapper.find(input.selector).at(0).prop(\"aria-invalid\")).to.be.false;\n\t\t});\n\t});\n\n\tit(\"toggling advanced options should not clear inputs\", async () => {\n\t\tconst arbitrary_value = \"my test\";\n\n\t\tconst wrapper = mount(\n\t\t\t<Authentication\n\t\t\t\t{...{\n\t\t\t\t\t...(Authentication.args as AuthenticationProps),\n\t\t\t\t}}\n\t\t\t/>\n\t\t);\n\n\t\twrapper\n\t\t\t.find(\".auth-setup-select-provider\")\n\t\t\t.at(0)\n\t\t\t.simulate(\"change\", {\n\t\t\t\ttarget: {\n\t\t\t\t\tvalue: \"Custom\",\n\t\t\t\t},\n\t\t\t});\n\n\t\tawait waitTick();\n\n\t\twrapper.update();\n\n\t\t// Assign an arbitrary value to \"Client ID\"\n\t\twrapper.find(\".auth-setup-clientid input\").simulate(\"change\", {\n\t\t\ttarget: {\n\t\t\t\tvalue: arbitrary_value,\n\t\t\t},\n\t\t});\n\t\tawait waitTick();\n\n\t\t// Toggle the Advanced Options\n\t\twrapper.find(\".auth-setup-toggle-mode button\").simulate(\"click\");\n\n\t\t// Confirm that \"Client ID\" didn't change\n\t\texpect(wrapper.find(\".auth-setup-clientid input\").prop(\"value\"), `Confirm that \"Client ID\" didn't change`).to.equal(\n\t\t\tarbitrary_value\n\t\t);\n\n\t\t// Test accessibility of expanded options while we're at it\n\t\texpect(await accessibilityAssessor(wrapper), \"Accessibility scan\").to.be.true;\n\t});\n\n\tit(\"should allow saving valid endpoint URL\", async () => {\n\t\tconst arbitrary_value = \"http://cosaic.io\";\n\n\t\tconst wrapper = mount(\n\t\t\t<Authentication\n\t\t\t\t{...{\n\t\t\t\t\t...(Authentication.args as AuthenticationProps),\n\t\t\t\t}}\n\t\t\t/>\n\t\t);\n\n\t\t// Assign an arbitrary value to \"Client ID\"\n\t\twrapper.find(\".auth-setup-endpoint-url input\").simulate(\"change\", {\n\t\t\ttarget: {\n\t\t\t\tvalue: arbitrary_value,\n\t\t\t},\n\t\t});\n\n\t\tawait waitTick();\n\n\t\texpect(wrapper.find(\".auth-setup-actions button\").at(0).prop(\"disabled\")).to.be.false;\n\t});\n\n\tit(\"should not allow saving empty endpoint URL\", async () => {\n\t\tconst arbitrary_value = \"\";\n\n\t\tconst wrapper = mount(\n\t\t\t<Authentication\n\t\t\t\t{...{\n\t\t\t\t\t...(Authentication.args as AuthenticationProps),\n\t\t\t\t}}\n\t\t\t/>\n\t\t);\n\n\t\t// Assign an arbitrary value to \"Client ID\"\n\t\twrapper.find(\".auth-setup-endpoint-url input\").simulate(\"change\", {\n\t\t\ttarget: {\n\t\t\t\tvalue: arbitrary_value,\n\t\t\t},\n\t\t});\n\n\t\tawait waitTick();\n\n\t\texpect(wrapper.find(\".auth-setup-actions button\").at(0).prop(\"disabled\")).to.be.true;\n\t});\n\n\tit(\"should not allow saving invalid endpoint URL\", async () => {\n\t\tconst arbitrary_value = \"\";\n\n\t\tconst wrapper = mount(\n\t\t\t<Authentication\n\t\t\t\t{...{\n\t\t\t\t\t...(Authentication.args as AuthenticationProps),\n\t\t\t\t}}\n\t\t\t/>\n\t\t);\n\n\t\t// Assign an arbitrary value to \"Client ID\"\n\t\twrapper.find(\".auth-setup-endpoint-url input\").simulate(\"change\", {\n\t\t\ttarget: {\n\t\t\t\tvalue: arbitrary_value,\n\t\t\t},\n\t\t});\n\n\t\tawait waitTick();\n\n\t\texpect(wrapper.find(\".auth-setup-actions button\").at(0).prop(\"disabled\")).to.be.true;\n\t});\n});\n"]}
1
+ {"version":3,"file":"Authentication.spec.js","sourceRoot":"","sources":["../../../../src/components/sdd/tests/Authentication.spec.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,EAAE,IAAI,IAAI,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAE3E,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEtD,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACvD,MAAM,OAAO,GAAG,KAAK,CACpB,oBAAC,cAAc,sCAET,cAAc,CAAC,IAA4B,GAE/C,CACF,CAAC;QAEF,MAAM,CAAC,MAAM,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IACzD,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,OAAO,GAAG,KAAK,CACpB,oBAAC,cAAc,sCAET,cAAc,CAAC,IAA4B,GAE/C,CACF,CAAC;QAEF,OAAO;aACL,IAAI,CAAC,6BAA6B,CAAC;aACnC,EAAE,CAAC,CAAC,CAAC;aACL,QAAQ,CAAC,QAAQ,EAAE;YACnB,MAAM,EAAE;gBACP,KAAK,EAAE,QAAQ;aACf;SACD,CAAC,CAAC;QAEJ,MAAM,QAAQ,EAAE,CAAC;QAEjB,OAAO,CAAC,MAAM,EAAE,CAAC;QAEjB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAEhE,MAAM,MAAM,GAAG;YACd;gBACC,QAAQ,EAAE,iDAAiD;gBAC3D,KAAK,EAAE,cAAc;aACrB;YACD;gBACC,QAAQ,EAAE,qDAAqD;gBAC/D,KAAK,EAAE,iBAAiB;aACxB;SACD,CAAC;QAEF,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACxB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,QAAQ,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAE3F,OAAO;iBACL,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;iBACpB,EAAE,CAAC,CAAC,CAAC;iBACL,QAAQ,CAAC,QAAQ,EAAE;gBACnB,MAAM,EAAE;oBACP,KAAK,EAAE,KAAK,CAAC,KAAK;iBAClB;aACD,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,EAAE,CAAC;QAEjB,OAAO,CAAC,MAAM,EAAE,CAAC;QAEjB,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACxB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC/E,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QAC7E,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QAClE,MAAM,eAAe,GAAG,SAAS,CAAC;QAElC,MAAM,OAAO,GAAG,KAAK,CACpB,oBAAC,cAAc,sCAET,cAAc,CAAC,IAA4B,GAE/C,CACF,CAAC;QAEF,OAAO;aACL,IAAI,CAAC,6BAA6B,CAAC;aACnC,EAAE,CAAC,CAAC,CAAC;aACL,QAAQ,CAAC,QAAQ,EAAE;YACnB,MAAM,EAAE;gBACP,KAAK,EAAE,QAAQ;aACf;SACD,CAAC,CAAC;QAEJ,MAAM,QAAQ,EAAE,CAAC;QAEjB,OAAO,CAAC,MAAM,EAAE,CAAC;QAGjB,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE;YAC7D,MAAM,EAAE;gBACP,KAAK,EAAE,eAAe;aACtB;SACD,CAAC,CAAC;QACH,MAAM,QAAQ,EAAE,CAAC;QAGjB,OAAO,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAG7E,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,wCAAwC,CAAC,CAAC,EAAE,CAAC,KAAK,CAClH,eAAe,CACf,CAAC;QAGF,MAAM,CAAC,MAAM,qBAAqB,CAAC,OAAO,CAAC,EAAE,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC/E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACvD,MAAM,eAAe,GAAG,kBAAkB,CAAC;QAE3C,MAAM,OAAO,GAAG,KAAK,CACpB,oBAAC,cAAc,sCAET,cAAc,CAAC,IAA4B,GAE/C,CACF,CAAC;QAGF,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE;YACjE,MAAM,EAAE;gBACP,KAAK,EAAE,eAAe;aACtB;SACD,CAAC,CAAC;QAEH,MAAM,QAAQ,EAAE,CAAC;QAEjB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IACvF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,eAAe,GAAG,EAAE,CAAC;QAE3B,MAAM,OAAO,GAAG,KAAK,CACpB,oBAAC,cAAc,sCAET,cAAc,CAAC,IAA4B,GAE/C,CACF,CAAC;QAGF,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE;YACjE,MAAM,EAAE;gBACP,KAAK,EAAE,eAAe;aACtB;SACD,CAAC,CAAC;QAEH,MAAM,QAAQ,EAAE,CAAC;QAEjB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IACtF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,eAAe,GAAG,EAAE,CAAC;QAE3B,MAAM,OAAO,GAAG,KAAK,CACpB,oBAAC,cAAc,sCAET,cAAc,CAAC,IAA4B,GAE/C,CACF,CAAC;QAGF,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE;YACjE,MAAM,EAAE;gBACP,KAAK,EAAE,eAAe;aACtB;SACD,CAAC,CAAC;QAEH,MAAM,QAAQ,EAAE,CAAC;QAEjB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IACtF,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["import * as React from \"react\";\nimport { mount } from \"enzyme\";\nimport { describe, it } from \"mocha\";\nimport { expect } from \"chai\";\nimport { Page as Authentication } from \"../stories/Authentication.stories\";\nimport { AuthenticationProps } from \"../Authentication\";\nimport { waitTick } from \"../sdd_helpers\";\nimport { accessibilityAssessor } from \"./a11y_helper\";\n\ndescribe(\"<Authentication/>\", () => {\n\tit(\"should pass accessibility scans (Page)\", async () => {\n\t\tconst wrapper = mount(\n\t\t\t<Authentication\n\t\t\t\t{...{\n\t\t\t\t\t...(Authentication.args as AuthenticationProps),\n\t\t\t\t}}\n\t\t\t/>\n\t\t);\n\n\t\texpect(await accessibilityAssessor(wrapper)).to.be.true;\n\t});\n\tit(\"should allow adding auth settings\", async () => {\n\t\tconst wrapper = mount(\n\t\t\t<Authentication\n\t\t\t\t{...{\n\t\t\t\t\t...(Authentication.args as AuthenticationProps),\n\t\t\t\t}}\n\t\t\t/>\n\t\t);\n\n\t\twrapper\n\t\t\t.find(\".auth-setup-select-provider\")\n\t\t\t.at(0)\n\t\t\t.simulate(\"change\", {\n\t\t\t\ttarget: {\n\t\t\t\t\tvalue: \"Custom\",\n\t\t\t\t},\n\t\t\t});\n\n\t\tawait waitTick();\n\n\t\twrapper.update();\n\n\t\texpect(wrapper.find(\".auth-setup-provider\").length).to.equal(1);\n\n\t\tconst inputs = [\n\t\t\t{\n\t\t\t\tselector: \".auth-setup-provider .auth-setup-clientid input\",\n\t\t\t\tvalue: \"clientidTest\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tselector: \".auth-setup-provider .auth-setup-endpoint-url input\",\n\t\t\t\tvalue: \"http://test.com\",\n\t\t\t},\n\t\t];\n\n\t\tinputs.forEach((input) => {\n\t\t\texpect(wrapper.find(input.selector).length, `Find ${input.selector}`).to.be.greaterThan(0);\n\n\t\t\twrapper\n\t\t\t\t.find(input.selector)\n\t\t\t\t.at(0)\n\t\t\t\t.simulate(\"change\", {\n\t\t\t\t\ttarget: {\n\t\t\t\t\t\tvalue: input.value,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t});\n\n\t\tawait waitTick();\n\n\t\twrapper.update();\n\n\t\tinputs.forEach((input) => {\n\t\t\texpect(wrapper.find(input.selector).at(0).prop(\"value\")).to.equal(input.value);\n\t\t\texpect(wrapper.find(input.selector).at(0).prop(\"aria-invalid\")).to.be.false;\n\t\t});\n\t});\n\n\tit(\"toggling advanced options should not clear inputs\", async () => {\n\t\tconst arbitrary_value = \"my test\";\n\n\t\tconst wrapper = mount(\n\t\t\t<Authentication\n\t\t\t\t{...{\n\t\t\t\t\t...(Authentication.args as AuthenticationProps),\n\t\t\t\t}}\n\t\t\t/>\n\t\t);\n\n\t\twrapper\n\t\t\t.find(\".auth-setup-select-provider\")\n\t\t\t.at(0)\n\t\t\t.simulate(\"change\", {\n\t\t\t\ttarget: {\n\t\t\t\t\tvalue: \"Custom\",\n\t\t\t\t},\n\t\t\t});\n\n\t\tawait waitTick();\n\n\t\twrapper.update();\n\n\t\t// Assign an arbitrary value to \"Client ID\"\n\t\twrapper.find(\".auth-setup-clientid input\").simulate(\"change\", {\n\t\t\ttarget: {\n\t\t\t\tvalue: arbitrary_value,\n\t\t\t},\n\t\t});\n\t\tawait waitTick();\n\n\t\t// Toggle the Advanced Options\n\t\twrapper.find(\"#accordion-control-authentication-advanced\").simulate(\"click\");\n\n\t\t// Confirm that \"Client ID\" didn't change\n\t\texpect(wrapper.find(\".auth-setup-clientid input\").prop(\"value\"), `Confirm that \"Client ID\" didn't change`).to.equal(\n\t\t\tarbitrary_value\n\t\t);\n\n\t\t// Test accessibility of expanded options while we're at it\n\t\texpect(await accessibilityAssessor(wrapper), \"Accessibility scan\").to.be.true;\n\t});\n\n\tit(\"should allow saving valid endpoint URL\", async () => {\n\t\tconst arbitrary_value = \"http://cosaic.io\";\n\n\t\tconst wrapper = mount(\n\t\t\t<Authentication\n\t\t\t\t{...{\n\t\t\t\t\t...(Authentication.args as AuthenticationProps),\n\t\t\t\t}}\n\t\t\t/>\n\t\t);\n\n\t\t// Assign an arbitrary value to \"Client ID\"\n\t\twrapper.find(\".auth-setup-endpoint-url input\").simulate(\"change\", {\n\t\t\ttarget: {\n\t\t\t\tvalue: arbitrary_value,\n\t\t\t},\n\t\t});\n\n\t\tawait waitTick();\n\n\t\texpect(wrapper.find(\".auth-setup-actions button\").at(0).prop(\"disabled\")).to.be.false;\n\t});\n\n\tit(\"should not allow saving empty endpoint URL\", async () => {\n\t\tconst arbitrary_value = \"\";\n\n\t\tconst wrapper = mount(\n\t\t\t<Authentication\n\t\t\t\t{...{\n\t\t\t\t\t...(Authentication.args as AuthenticationProps),\n\t\t\t\t}}\n\t\t\t/>\n\t\t);\n\n\t\t// Assign an arbitrary value to \"Client ID\"\n\t\twrapper.find(\".auth-setup-endpoint-url input\").simulate(\"change\", {\n\t\t\ttarget: {\n\t\t\t\tvalue: arbitrary_value,\n\t\t\t},\n\t\t});\n\n\t\tawait waitTick();\n\n\t\texpect(wrapper.find(\".auth-setup-actions button\").at(0).prop(\"disabled\")).to.be.true;\n\t});\n\n\tit(\"should not allow saving invalid endpoint URL\", async () => {\n\t\tconst arbitrary_value = \"\";\n\n\t\tconst wrapper = mount(\n\t\t\t<Authentication\n\t\t\t\t{...{\n\t\t\t\t\t...(Authentication.args as AuthenticationProps),\n\t\t\t\t}}\n\t\t\t/>\n\t\t);\n\n\t\t// Assign an arbitrary value to \"Client ID\"\n\t\twrapper.find(\".auth-setup-endpoint-url input\").simulate(\"change\", {\n\t\t\ttarget: {\n\t\t\t\tvalue: arbitrary_value,\n\t\t\t},\n\t\t});\n\n\t\tawait waitTick();\n\n\t\texpect(wrapper.find(\".auth-setup-actions button\").at(0).prop(\"disabled\")).to.be.true;\n\t});\n});\n"]}
@@ -1,15 +1,10 @@
1
1
  import * as React from "react";
2
2
  import { mount } from "enzyme";
3
- import { describe, it, afterEach } from "mocha";
3
+ import { describe, it } from "mocha";
4
4
  import { expect } from "chai";
5
5
  import { Default } from "../stories/OptionalSettingsView.stories";
6
- import sinon from "sinon";
7
- import addons, { mockChannel } from "@storybook/addons";
8
- addons.setChannel(mockChannel());
6
+ import { waitTick } from "../sdd_helpers";
9
7
  describe("<EditPreload/>", () => {
10
- afterEach(() => {
11
- sinon.restore();
12
- });
13
8
  it("should have initial state", () => {
14
9
  const wrapper = mount(React.createElement(Default, Object.assign({}, Default.args)));
15
10
  wrapper.find(".button-container-primary button").simulate("click");
@@ -55,5 +50,53 @@ describe("<EditPreload/>", () => {
55
50
  expect(wrapper.find(".preload-edit-actions button").last().prop("disabled"), "Save button no longer disabled").to.be
56
51
  .false;
57
52
  });
53
+ it("check that radio buttons are unique", async () => {
54
+ const wrapper = mount(React.createElement(Default, Object.assign({}, Default.args)));
55
+ wrapper.find(".button-container-primary button").simulate("click");
56
+ const name = "preload-usage";
57
+ const numberOfButtons = 3;
58
+ const locator = `input[type='radio'][name='${name}']`;
59
+ for (let i = 0; i < numberOfButtons; i++) {
60
+ wrapper.find(locator).at(i).simulate("change");
61
+ for (let j = 0; j < numberOfButtons; j++) {
62
+ expect(wrapper.find(locator).at(j).prop("checked"), `When radio #${i + 1} is clicked, is radio #${j + 1} checked?`).to.equal(i === j);
63
+ }
64
+ }
65
+ });
66
+ it("should not show any error messages by default (Editing)", async () => {
67
+ const wrapper = mount(React.createElement(Default, Object.assign({}, Default.args)));
68
+ await waitTick();
69
+ wrapper.update();
70
+ wrapper.find(".app-list-row").at(1).simulate("click");
71
+ expect(wrapper.find("[aria-invalid='true']").length, "No invalid fields by default").to.equal(0);
72
+ expect(wrapper.find(".invalid-message").length, "No error messages by default").to.equal(0);
73
+ expect(wrapper.find("button").last().prop("disabled"), "Save button is enabled").to.be.false;
74
+ });
75
+ it("should not show any error messages by default (Adding)", async () => {
76
+ const wrapper = mount(React.createElement(Default, Object.assign({}, Default.args)));
77
+ wrapper.find(".button-container-primary button").simulate("click");
78
+ expect(wrapper.find("[aria-invalid='true']").length, "No invalid fields by default").to.equal(0);
79
+ expect(wrapper.find(".invalid-message").length, "No error messages by default").to.equal(0);
80
+ expect(wrapper.find("button").last().prop("disabled"), "Save button is disabled").to.be.true;
81
+ });
82
+ it("Trying to name an app with invalid characters causes error messages (Adding)", async () => {
83
+ const wrapper = mount(React.createElement(Default, Object.assign({}, Default.args)));
84
+ wrapper.find(".button-container-primary button").simulate("click");
85
+ wrapper.find("#preload-alias").simulate("change", {
86
+ target: {
87
+ value: "what!?",
88
+ },
89
+ });
90
+ wrapper.find("#preload-url").simulate("change", {
91
+ target: {
92
+ value: "http://www.example.com/preload.js",
93
+ },
94
+ });
95
+ await waitTick();
96
+ expect(wrapper.find("#preload-alias").prop("aria-invalid"), "Name is marked as invalid").to.be.true;
97
+ expect(wrapper.find("#preload-alias-error-message").exists(), "There's an error message after alias").to.be.true;
98
+ expect(wrapper.find("#preload-alias-error-message").text(), "The exact error message after alias").to.equal("Name can only use letters, numbers, and dashes.");
99
+ expect(wrapper.find("button").last().prop("disabled"), "Save button is disabled").to.be.true;
100
+ });
58
101
  });
59
102
  //# sourceMappingURL=EditPreload.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EditPreload.spec.js","sourceRoot":"","sources":["../../../../src/components/sdd/tests/EditPreload.spec.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { mount } from \"enzyme\";\nimport { describe, it, afterEach } from \"mocha\";\nimport { expect } from \"chai\";\nimport { OptionalSettingsViewProps } from \"../OptionalSettingsView\";\nimport { Default } from \"../stories/OptionalSettingsView.stories\";\n\n// For testing user interactions (like click events):\nimport sinon from \"sinon\";\n// Necessary to allow sinon to work with mocked actions (which are shown in the Actions panel in Storybook)\nimport addons, { mockChannel } from \"@storybook/addons\";\naddons.setChannel(mockChannel());\n\ndescribe(\"<EditPreload/>\", () => {\n\t// Used to clear after each interactive test using sinon\n\tafterEach(() => {\n\t\tsinon.restore();\n\t});\n\n\tit(\"should have initial state\", () => {\n\t\tconst wrapper = mount(<Default {...(Default.args as OptionalSettingsViewProps)} />);\n\t\t// Click the \"Add\" button\n\t\twrapper.find(\".button-container-primary button\").simulate(\"click\");\n\n\t\texpect(wrapper.find(\"h2\").exists(), \"The heading exists\").to.be.true;\n\t\texpect(wrapper.find(\"h2\").text(), \"The heading text\").to.equal(\"Untitled preload\");\n\t\tconst buttons = wrapper.find(\".preload-edit-actions button\");\n\t\texpect(buttons, \"No remove button\").to.have.lengthOf(2);\n\t\texpect(buttons.last().text(), \"Has save button\").to.equal(\"Save\");\n\t\texpect(buttons.last().prop(\"disabled\"), \"Save button is disabled\").to.be.true;\n\t\texpect(wrapper.find({ value: \"none\" }).prop(\"checked\"), \"Selected apps is selected\").to.be.true;\n\t\texpect(wrapper.find(\".emperorOption input[checked]\"), \"No checked apps\").to.have.lengthOf(0);\n\t});\n\n\tit('should hide and show app list based on \"Load for\" value ', async () => {\n\t\tconst wrapper = mount(<Default {...(Default.args as OptionalSettingsViewProps)} />);\n\t\t// Click the \"Add\" button\n\t\twrapper.find(\".button-container-primary button\").simulate(\"click\");\n\n\t\texpect(wrapper.find(\".emperorSelectContainer\").exists(), \"App select should be shown\").to.be.true;\n\n\t\twrapper\n\t\t\t.find(\"input[name='preload-usage']\")\n\t\t\t.first()\n\t\t\t.simulate(\"change\", {\n\t\t\t\ttarget: {\n\t\t\t\t\tchecked: true,\n\t\t\t\t},\n\t\t\t});\n\t\texpect(wrapper.find(\".emperorSelectContainer\").exists(), \"App select should not be shown\").to.be.false;\n\t});\n\n\tit(\"should change the alias\", async () => {\n\t\tconst wrapper = mount(<Default {...(Default.args as OptionalSettingsViewProps)} />);\n\t\t// Click the \"Add\" button\n\t\twrapper.find(\".button-container-primary button\").simulate(\"click\");\n\n\t\texpect(wrapper.find(\"h2\").text(), \"The heading text\").to.equal(\"Untitled preload\");\n\t\texpect(wrapper.find(\".preload-edit-actions button\").last().prop(\"disabled\"), \"Save button is disabled\").to.be.true;\n\t\twrapper.find(\"#preload-alias\").simulate(\"change\", {\n\t\t\ttarget: {\n\t\t\t\tvalue: \"test-alias\",\n\t\t\t},\n\t\t});\n\n\t\texpect(wrapper.find(\"h2\").text(), \"The heading text\").to.equal(\"test-alias\");\n\n\t\twrapper.find(\"#preload-url\").simulate(\"change\", {\n\t\t\ttarget: {\n\t\t\t\tvalue: \"http://www.example.com/preload.js\",\n\t\t\t},\n\t\t});\n\n\t\texpect(wrapper.find(\".preload-edit-actions button\").last().prop(\"disabled\"), \"Save button no longer disabled\").to.be\n\t\t\t.false;\n\t});\n});\n"]}
1
+ {"version":3,"file":"EditPreload.spec.js","sourceRoot":"","sources":["../../../../src/components/sdd/tests/EditPreload.spec.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { mount } from \"enzyme\";\nimport { describe, it } from \"mocha\";\nimport { expect } from \"chai\";\nimport { OptionalSettingsViewProps } from \"../OptionalSettingsView\";\nimport { Default } from \"../stories/OptionalSettingsView.stories\";\nimport { waitTick } from \"../sdd_helpers\";\n\ndescribe(\"<EditPreload/>\", () => {\n\tit(\"should have initial state\", () => {\n\t\tconst wrapper = mount(<Default {...(Default.args as OptionalSettingsViewProps)} />);\n\t\t// Click the \"Add\" button\n\t\twrapper.find(\".button-container-primary button\").simulate(\"click\");\n\n\t\texpect(wrapper.find(\"h2\").exists(), \"The heading exists\").to.be.true;\n\t\texpect(wrapper.find(\"h2\").text(), \"The heading text\").to.equal(\"Untitled preload\");\n\t\tconst buttons = wrapper.find(\".preload-edit-actions button\");\n\t\texpect(buttons, \"No remove button\").to.have.lengthOf(2);\n\t\texpect(buttons.last().text(), \"Has save button\").to.equal(\"Save\");\n\t\texpect(buttons.last().prop(\"disabled\"), \"Save button is disabled\").to.be.true;\n\t\texpect(wrapper.find({ value: \"none\" }).prop(\"checked\"), \"Selected apps is selected\").to.be.true;\n\t\texpect(wrapper.find(\".emperorOption input[checked]\"), \"No checked apps\").to.have.lengthOf(0);\n\t});\n\n\tit('should hide and show app list based on \"Load for\" value ', async () => {\n\t\tconst wrapper = mount(<Default {...(Default.args as OptionalSettingsViewProps)} />);\n\t\t// Click the \"Add\" button\n\t\twrapper.find(\".button-container-primary button\").simulate(\"click\");\n\n\t\texpect(wrapper.find(\".emperorSelectContainer\").exists(), \"App select should be shown\").to.be.true;\n\n\t\twrapper\n\t\t\t.find(\"input[name='preload-usage']\")\n\t\t\t.first()\n\t\t\t.simulate(\"change\", {\n\t\t\t\ttarget: {\n\t\t\t\t\tchecked: true,\n\t\t\t\t},\n\t\t\t});\n\t\texpect(wrapper.find(\".emperorSelectContainer\").exists(), \"App select should not be shown\").to.be.false;\n\t});\n\n\tit(\"should change the alias\", async () => {\n\t\tconst wrapper = mount(<Default {...(Default.args as OptionalSettingsViewProps)} />);\n\t\t// Click the \"Add\" button\n\t\twrapper.find(\".button-container-primary button\").simulate(\"click\");\n\n\t\texpect(wrapper.find(\"h2\").text(), \"The heading text\").to.equal(\"Untitled preload\");\n\t\texpect(wrapper.find(\".preload-edit-actions button\").last().prop(\"disabled\"), \"Save button is disabled\").to.be.true;\n\t\twrapper.find(\"#preload-alias\").simulate(\"change\", {\n\t\t\ttarget: {\n\t\t\t\tvalue: \"test-alias\",\n\t\t\t},\n\t\t});\n\n\t\texpect(wrapper.find(\"h2\").text(), \"The heading text\").to.equal(\"test-alias\");\n\n\t\twrapper.find(\"#preload-url\").simulate(\"change\", {\n\t\t\ttarget: {\n\t\t\t\tvalue: \"http://www.example.com/preload.js\",\n\t\t\t},\n\t\t});\n\n\t\texpect(wrapper.find(\".preload-edit-actions button\").last().prop(\"disabled\"), \"Save button no longer disabled\").to.be\n\t\t\t.false;\n\t});\n\n\tit(\"check that radio buttons are unique\", async () => {\n\t\tconst wrapper = mount(<Default {...(Default.args as OptionalSettingsViewProps)} />);\n\t\t// Click the \"Add\" button\n\t\twrapper.find(\".button-container-primary button\").simulate(\"click\");\n\n\t\tconst name = \"preload-usage\";\n\t\tconst numberOfButtons = 3;\n\t\tconst locator = `input[type='radio'][name='${name}']`;\n\n\t\tfor (let i = 0; i < numberOfButtons; i++) {\n\t\t\twrapper.find(locator).at(i).simulate(\"change\");\n\n\t\t\tfor (let j = 0; j < numberOfButtons; j++) {\n\t\t\t\texpect(\n\t\t\t\t\twrapper.find(locator).at(j).prop(\"checked\"),\n\t\t\t\t\t`When radio #${i + 1} is clicked, is radio #${j + 1} checked?`\n\t\t\t\t).to.equal(i === j);\n\t\t\t}\n\t\t}\n\t});\n\n\tit(\"should not show any error messages by default (Editing)\", async () => {\n\t\tconst wrapper = mount(<Default {...(Default.args as OptionalSettingsViewProps)} />);\n\t\tawait waitTick();\n\t\twrapper.update();\n\n\t\twrapper.find(\".app-list-row\").at(1).simulate(\"click\");\n\n\t\texpect(wrapper.find(\"[aria-invalid='true']\").length, \"No invalid fields by default\").to.equal(0);\n\t\texpect(wrapper.find(\".invalid-message\").length, \"No error messages by default\").to.equal(0);\n\t\texpect(wrapper.find(\"button\").last().prop(\"disabled\"), \"Save button is enabled\").to.be.false;\n\t});\n\tit(\"should not show any error messages by default (Adding)\", async () => {\n\t\tconst wrapper = mount(<Default {...(Default.args as OptionalSettingsViewProps)} />);\n\t\t// Click the \"Add\" button\n\t\twrapper.find(\".button-container-primary button\").simulate(\"click\");\n\n\t\texpect(wrapper.find(\"[aria-invalid='true']\").length, \"No invalid fields by default\").to.equal(0);\n\t\texpect(wrapper.find(\".invalid-message\").length, \"No error messages by default\").to.equal(0);\n\t\texpect(wrapper.find(\"button\").last().prop(\"disabled\"), \"Save button is disabled\").to.be.true;\n\t});\n\tit(\"Trying to name an app with invalid characters causes error messages (Adding)\", async () => {\n\t\tconst wrapper = mount(<Default {...(Default.args as OptionalSettingsViewProps)} />);\n\t\t// Click the \"Add\" button\n\t\twrapper.find(\".button-container-primary button\").simulate(\"click\");\n\n\t\twrapper.find(\"#preload-alias\").simulate(\"change\", {\n\t\t\ttarget: {\n\t\t\t\tvalue: \"what!?\",\n\t\t\t},\n\t\t});\n\t\twrapper.find(\"#preload-url\").simulate(\"change\", {\n\t\t\ttarget: {\n\t\t\t\tvalue: \"http://www.example.com/preload.js\",\n\t\t\t},\n\t\t});\n\t\tawait waitTick();\n\n\t\texpect(wrapper.find(\"#preload-alias\").prop(\"aria-invalid\"), \"Name is marked as invalid\").to.be.true;\n\n\t\texpect(wrapper.find(\"#preload-alias-error-message\").exists(), \"There's an error message after alias\").to.be.true;\n\t\texpect(wrapper.find(\"#preload-alias-error-message\").text(), \"The exact error message after alias\").to.equal(\n\t\t\t\"Name can only use letters, numbers, and dashes.\"\n\t\t);\n\n\t\texpect(wrapper.find(\"button\").last().prop(\"disabled\"), \"Save button is disabled\").to.be.true;\n\t});\n});\n\n/*\nOther tests to write...\n\nAdding an app: \n\ttype reused name - see invalid + msg, disabled save button\n\tinvalid url - see invalid + msg, disabled save button\n */\n"]}
@@ -8,7 +8,7 @@ describe("<Navigation/>", () => {
8
8
  it("should have first tab selected by default", async () => {
9
9
  const wrapper = mount(React.createElement(DefaultNavigation, Object.assign({}, Object.assign({}, DefaultNavigation.args))));
10
10
  wrapper.find(NAV_ITEM).forEach((item, index) => {
11
- expect(item.hasClass("active"), "Has active class").to.equal(index === 0);
11
+ expect(item.prop("aria-selected"), "is selected").to.equal(index === 0);
12
12
  });
13
13
  });
14
14
  it("should change to selected tab", async () => {
@@ -17,7 +17,7 @@ describe("<Navigation/>", () => {
17
17
  navItems.forEach((navItem, clickedIndex) => {
18
18
  navItem.simulate("click");
19
19
  navItem.forEach((item, index) => {
20
- expect(item.hasClass("active"), "Has active class").to.equal(index === clickedIndex);
20
+ expect(item.prop("aria-selected"), "is selected").to.equal(index === clickedIndex);
21
21
  });
22
22
  });
23
23
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Navigation.spec.js","sourceRoot":"","sources":["../../../../src/components/sdd/tests/Navigation.spec.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,MAAM,QAAQ,GAAG,WAAW,CAAC;AAE7B,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,OAAO,GAAG,KAAK,CAAC,oBAAC,iBAAiB,sCAAW,iBAAiB,CAAC,IAAwB,GAAM,CAAC,CAAC;QAErG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAC9C,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC9C,MAAM,OAAO,GAAG,KAAK,CAAC,oBAAC,iBAAiB,sCAAW,iBAAiB,CAAC,IAAwB,GAAM,CAAC,CAAC;QAErG,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAExC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE;YAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAE1B,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBAC/B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,YAAY,CAAC,CAAC;YACtF,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["import * as React from \"react\";\nimport { mount } from \"enzyme\";\nimport { describe, it } from \"mocha\";\nimport { expect } from \"chai\";\nimport { NavigationProps } from \"../Navigation\";\nimport { DefaultNavigation } from \"../stories/Navigation.stories\";\n\nconst NAV_ITEM = \".nav-item\";\n\ndescribe(\"<Navigation/>\", () => {\n\tit(\"should have first tab selected by default\", async () => {\n\t\tconst wrapper = mount(<DefaultNavigation {...{ ...(DefaultNavigation.args as NavigationProps) }} />);\n\n\t\twrapper.find(NAV_ITEM).forEach((item, index) => {\n\t\t\texpect(item.hasClass(\"active\"), \"Has active class\").to.equal(index === 0);\n\t\t});\n\t});\n\n\tit(\"should change to selected tab\", async () => {\n\t\tconst wrapper = mount(<DefaultNavigation {...{ ...(DefaultNavigation.args as NavigationProps) }} />);\n\n\t\tconst navItems = wrapper.find(NAV_ITEM);\n\n\t\tnavItems.forEach((navItem, clickedIndex) => {\n\t\t\tnavItem.simulate(\"click\");\n\n\t\t\tnavItem.forEach((item, index) => {\n\t\t\t\texpect(item.hasClass(\"active\"), \"Has active class\").to.equal(index === clickedIndex);\n\t\t\t});\n\t\t});\n\t});\n});\n"]}
1
+ {"version":3,"file":"Navigation.spec.js","sourceRoot":"","sources":["../../../../src/components/sdd/tests/Navigation.spec.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,MAAM,QAAQ,GAAG,WAAW,CAAC;AAE7B,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,OAAO,GAAG,KAAK,CAAC,oBAAC,iBAAiB,sCAAW,iBAAiB,CAAC,IAAwB,GAAM,CAAC,CAAC;QAErG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAC9C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC9C,MAAM,OAAO,GAAG,KAAK,CAAC,oBAAC,iBAAiB,sCAAW,iBAAiB,CAAC,IAAwB,GAAM,CAAC,CAAC;QAErG,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAExC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE;YAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAE1B,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBAC/B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,YAAY,CAAC,CAAC;YACpF,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["import * as React from \"react\";\nimport { mount } from \"enzyme\";\nimport { describe, it } from \"mocha\";\nimport { expect } from \"chai\";\nimport { NavigationProps } from \"../Navigation\";\nimport { DefaultNavigation } from \"../stories/Navigation.stories\";\n\nconst NAV_ITEM = \".nav-item\";\n\ndescribe(\"<Navigation/>\", () => {\n\tit(\"should have first tab selected by default\", async () => {\n\t\tconst wrapper = mount(<DefaultNavigation {...{ ...(DefaultNavigation.args as NavigationProps) }} />);\n\n\t\twrapper.find(NAV_ITEM).forEach((item, index) => {\n\t\t\texpect(item.prop(\"aria-selected\"), \"is selected\").to.equal(index === 0);\n\t\t});\n\t});\n\n\tit(\"should change to selected tab\", async () => {\n\t\tconst wrapper = mount(<DefaultNavigation {...{ ...(DefaultNavigation.args as NavigationProps) }} />);\n\n\t\tconst navItems = wrapper.find(NAV_ITEM);\n\n\t\tnavItems.forEach((navItem, clickedIndex) => {\n\t\t\tnavItem.simulate(\"click\");\n\n\t\t\tnavItem.forEach((item, index) => {\n\t\t\t\texpect(item.prop(\"aria-selected\"), \"is selected\").to.equal(index === clickedIndex);\n\t\t\t});\n\t\t});\n\t});\n});\n"]}
@@ -4,7 +4,14 @@ import { describe, it } from "mocha";
4
4
  import { expect } from "chai";
5
5
  import { Default, Empty } from "../stories/OptionalSettingsView.stories";
6
6
  import { accessibilityAssessor } from "./a11y_helper";
7
+ import { waitTick } from "../sdd_helpers";
8
+ import sinon from "sinon";
9
+ import addons, { mockChannel } from "@storybook/addons";
10
+ addons.setChannel(mockChannel());
7
11
  describe("<OptionalSettingsView/>", () => {
12
+ afterEach(() => {
13
+ sinon.restore();
14
+ });
8
15
  it("should pass accessibility scans", async () => {
9
16
  const wrapper = mount(React.createElement(Default, Object.assign({}, Default.args)));
10
17
  expect(await accessibilityAssessor(wrapper)).to.be.true;
@@ -18,5 +25,233 @@ describe("<OptionalSettingsView/>", () => {
18
25
  expect(wrapper.find(".app-list-empty").text(), "Empty message text").to.contain("to add preloads");
19
26
  expect(wrapper.find(".app-list-empty.no-dropzone").exists(), "Empty message has no dropzone styling").to.be.true;
20
27
  });
28
+ it("should show preload aliases if there are registered preloads", async () => {
29
+ const wrapper = mount(React.createElement(Default, Object.assign({}, Default.args)));
30
+ await waitTick();
31
+ wrapper.update();
32
+ const names = wrapper.find(".app-name");
33
+ expect(names.length, "There are 2 names listed").to.equal(2);
34
+ const names_as_text = names.map((elem) => elem.text());
35
+ expect(names_as_text).includes("native-overrides");
36
+ expect(names_as_text).includes("zoom");
37
+ const delete_buttons = wrapper.find(".button-container-icon.icon-delete");
38
+ expect(delete_buttons.length, "There are also 2 delete buttons").to.equal(2);
39
+ });
40
+ describe("Check app config updates", async () => {
41
+ it("Removing a preload", async () => {
42
+ var _a, _b;
43
+ const buttonSpy = sinon.spy(Default.args, "updateApp");
44
+ const wrapper = mount(React.createElement(Default, Object.assign({}, Default.args)));
45
+ await waitTick();
46
+ wrapper.update();
47
+ expect(wrapper.find(".app-list-row .app-name").at(1).text(), "First item name").to.equal("zoom");
48
+ wrapper.find(".app-list-row").at(1).simulate("click");
49
+ await waitTick();
50
+ wrapper.update();
51
+ wrapper.find(".emperorOption [type='checkbox']").at(0).simulate("change");
52
+ wrapper.find(".app-actions-right-wrapper .button-container-secondary button").simulate("click");
53
+ await waitTick();
54
+ expect(buttonSpy.args.length, "Expect updateApp to be called once, because only one app was updated").to.equal(1);
55
+ const [updatedAppId, updatedAppConfig] = buttonSpy.args[0];
56
+ expect(updatedAppId, "Which app was added").to.equal("Example Charts App");
57
+ expect((_b = (_a = updatedAppConfig.manifest) === null || _a === void 0 ? void 0 : _a.component) === null || _b === void 0 ? void 0 : _b.preload, "what should preload config for this app look like now").to.not.include("zoom");
58
+ });
59
+ it("Adding a preload", async () => {
60
+ var _a, _b;
61
+ const buttonSpy = sinon.spy(Default.args, "updateApp");
62
+ const wrapper = mount(React.createElement(Default, Object.assign({}, Default.args)));
63
+ await waitTick();
64
+ wrapper.update();
65
+ wrapper.find(".app-list-row").at(1).simulate("click");
66
+ await waitTick();
67
+ wrapper.update();
68
+ wrapper.find(".emperorOption [type='checkbox']").at(0).simulate("change");
69
+ wrapper.find(".app-actions-right-wrapper .button-container-secondary button").simulate("click");
70
+ await waitTick();
71
+ expect(buttonSpy.args.length, "Expect updateApp to be called once, because only one app was updated").to.equal(1);
72
+ const [updatedAppId, updatedAppConfig] = buttonSpy.args[0];
73
+ expect(updatedAppId, "Which app was added").to.equal("Example Charts App");
74
+ expect((_b = (_a = updatedAppConfig.manifest) === null || _a === void 0 ? void 0 : _a.component) === null || _b === void 0 ? void 0 : _b.preload, "what should preload config for this app look like now").to.include("zoom");
75
+ });
76
+ it("Renaming a preload", async () => {
77
+ var _a, _b, _c, _d;
78
+ const buttonSpy = sinon.spy(Default.args, "updateApp");
79
+ const wrapper = mount(React.createElement(Default, Object.assign({}, Default.args)));
80
+ await waitTick();
81
+ wrapper.update();
82
+ wrapper.find(".app-list-row").at(1).simulate("click");
83
+ await waitTick();
84
+ wrapper.update();
85
+ wrapper.find("#preload-alias").simulate("change", {
86
+ target: {
87
+ value: "zoom2",
88
+ },
89
+ });
90
+ wrapper.find(".app-actions-right-wrapper .button-container-secondary button").simulate("click");
91
+ await waitTick();
92
+ expect(buttonSpy.args.length, "Expect updateApp to be called once, because only one app was updated").to.equal(1);
93
+ const [updatedAppId, updatedAppConfig] = buttonSpy.args[0];
94
+ expect(updatedAppId, "Which app was added").to.equal("Example Charts App");
95
+ expect((_b = (_a = updatedAppConfig.manifest) === null || _a === void 0 ? void 0 : _a.component) === null || _b === void 0 ? void 0 : _b.preload, "what should preload config for this app look like now").to.include("zoom2");
96
+ expect((_d = (_c = updatedAppConfig.manifest) === null || _c === void 0 ? void 0 : _c.component) === null || _d === void 0 ? void 0 : _d.preload, "what should preload config for this app look like now").to.not.include("zoom");
97
+ });
98
+ it("Unchanged preload (for apps that do and don't have the preload added", async () => {
99
+ const buttonSpy = sinon.spy(Default.args, "updateApp");
100
+ const wrapper = mount(React.createElement(Default, Object.assign({}, Default.args)));
101
+ await waitTick();
102
+ wrapper.update();
103
+ wrapper.find(".app-list-row").at(1).simulate("click");
104
+ await waitTick();
105
+ wrapper.update();
106
+ wrapper.find(".app-actions-right-wrapper .button-container-secondary button").simulate("click");
107
+ await waitTick();
108
+ expect(buttonSpy.args.length, "Expect updateApp to not be called").to.equal(0);
109
+ });
110
+ it("Renaming + adding a preload", async () => {
111
+ var _a, _b, _c, _d;
112
+ const buttonSpy = sinon.spy(Default.args, "updateApp");
113
+ const wrapper = mount(React.createElement(Default, Object.assign({}, Default.args)));
114
+ await waitTick();
115
+ wrapper.update();
116
+ wrapper.find(".app-list-row").at(0).simulate("click");
117
+ await waitTick();
118
+ wrapper.update();
119
+ wrapper.find("#preload-alias").simulate("change", {
120
+ target: {
121
+ value: "native-overrides2",
122
+ },
123
+ });
124
+ wrapper.find(".emperorOption [type='checkbox']").at(0).simulate("change");
125
+ expect(wrapper.find(".emperorOption [type='checkbox']").at(0).prop("checked")).to.be.true;
126
+ wrapper.find(".app-actions-right-wrapper .button-container-secondary button").simulate("click");
127
+ await waitTick();
128
+ expect(buttonSpy.args.length, "Expect updateApp to be called once, because only one app was updated").to.equal(1);
129
+ const [updatedAppId, updatedAppConfig] = buttonSpy.args[0];
130
+ expect(updatedAppId, "Which app was added").to.equal("Example Charts App");
131
+ expect((_b = (_a = updatedAppConfig.manifest) === null || _a === void 0 ? void 0 : _a.component) === null || _b === void 0 ? void 0 : _b.preload, "what should preload config for this app look like now").to.include("native-overrides2");
132
+ expect((_d = (_c = updatedAppConfig.manifest) === null || _c === void 0 ? void 0 : _c.component) === null || _d === void 0 ? void 0 : _d.preload, "what should preload config for this app look like now").to.not.include("native-overrides");
133
+ });
134
+ it("Renaming + removing a preload", async () => {
135
+ var _a, _b, _c, _d;
136
+ const buttonSpy = sinon.spy(Default.args, "updateApp");
137
+ const wrapper = mount(React.createElement(Default, Object.assign({}, Default.args)));
138
+ await waitTick();
139
+ wrapper.update();
140
+ wrapper.find(".app-list-row").at(0).simulate("click");
141
+ await waitTick();
142
+ wrapper.update();
143
+ wrapper.find("#preload-alias").simulate("change", {
144
+ target: {
145
+ value: "native-overrides3",
146
+ },
147
+ });
148
+ wrapper.find(".emperorOption [type='checkbox']").at(0).simulate("change");
149
+ expect(wrapper.find(".emperorOption [type='checkbox']").at(0).prop("checked")).to.be.false;
150
+ wrapper.find(".app-actions-right-wrapper .button-container-secondary button").simulate("click");
151
+ await waitTick();
152
+ expect(buttonSpy.args.length, "Expect updateApp to be called once, because only one app was updated").to.equal(1);
153
+ const [updatedAppId, updatedAppConfig] = buttonSpy.args[0];
154
+ expect(updatedAppId, "Which app was added").to.equal("Example Charts App");
155
+ expect((_b = (_a = updatedAppConfig.manifest) === null || _a === void 0 ? void 0 : _a.component) === null || _b === void 0 ? void 0 : _b.preload, "what should preload config for this app look like now").to.not.include("native-overrides2");
156
+ expect((_d = (_c = updatedAppConfig.manifest) === null || _c === void 0 ? void 0 : _c.component) === null || _d === void 0 ? void 0 : _d.preload, "what should preload config for this app look like now").to.not.include("native-overrides3");
157
+ });
158
+ });
159
+ describe("Check submitted values", async () => {
160
+ it("Adding a new preload", async () => {
161
+ const savePreloadSpy = sinon.spy(Default.args, "savePreload");
162
+ const wrapper = mount(React.createElement(Default, Object.assign({}, Default.args)));
163
+ await waitTick();
164
+ wrapper.update();
165
+ wrapper.find(".button-container-primary button").simulate("click");
166
+ await waitTick();
167
+ wrapper.update();
168
+ wrapper.find("#preload-alias").simulate("change", {
169
+ target: {
170
+ value: "test",
171
+ },
172
+ });
173
+ wrapper.find("#preload-url").simulate("change", {
174
+ target: {
175
+ value: "https://assets.finsemble.com/preloads/testPreload.js",
176
+ },
177
+ });
178
+ wrapper.find("input[name='preload-usage'][value='all']").simulate("change", {
179
+ target: {
180
+ value: "all",
181
+ },
182
+ });
183
+ wrapper.find(".app-actions-right-wrapper .button-container-secondary button").simulate("click");
184
+ await waitTick();
185
+ expect(savePreloadSpy.calledOnce).to.be.true;
186
+ const [oldAlias, newAlias, details] = savePreloadSpy.args[0];
187
+ expect(oldAlias, "No previous alias when it's a new preload").to.be.empty;
188
+ expect(newAlias, "alias is the same as name").to.equal("test");
189
+ expect(details, "Passed along details").to.deep.equal({
190
+ url: "https://assets.finsemble.com/preloads/testPreload.js",
191
+ autoload: "all",
192
+ });
193
+ });
194
+ it("Modifying a preload's URL", async () => {
195
+ const savePreloadSpy = sinon.spy(Default.args, "savePreload");
196
+ const wrapper = mount(React.createElement(Default, Object.assign({}, Default.args)));
197
+ await waitTick();
198
+ wrapper.update();
199
+ expect(wrapper.find(".app-list-row .app-name").at(1).text(), "First item name").to.equal("test");
200
+ wrapper.find(".app-list-row").at(1).simulate("click");
201
+ wrapper.find("#preload-url").simulate("change", {
202
+ target: {
203
+ value: "http://assets.finsemble.com/preloads/testPreload.js",
204
+ },
205
+ });
206
+ wrapper.find(".app-actions-right-wrapper .button-container-secondary button").simulate("click");
207
+ await waitTick();
208
+ expect(savePreloadSpy.calledOnce).to.be.true;
209
+ const [oldAlias, newAlias, details] = savePreloadSpy.args[0];
210
+ expect(oldAlias, "alias is the same as name").to.equal("test");
211
+ expect(newAlias, "alias is the same as name").to.equal("test");
212
+ expect(details, "Passed along details").to.deep.equal({
213
+ url: "http://assets.finsemble.com/preloads/testPreload.js",
214
+ autoload: "all",
215
+ });
216
+ });
217
+ it("Rename a value", async () => {
218
+ const savePreloadSpy = sinon.spy(Default.args, "savePreload");
219
+ const wrapper = mount(React.createElement(Default, Object.assign({}, Default.args)));
220
+ await waitTick();
221
+ wrapper.update();
222
+ expect(wrapper.find(".app-list-row .app-name").at(1).text(), "First item name").to.equal("test");
223
+ wrapper.find(".app-list-row").at(1).simulate("click");
224
+ wrapper.find("#preload-alias").simulate("change", {
225
+ target: {
226
+ value: "test2",
227
+ },
228
+ });
229
+ wrapper.find(".app-actions-right-wrapper .button-container-secondary button").simulate("click");
230
+ await waitTick();
231
+ expect(savePreloadSpy.calledOnce).to.be.true;
232
+ const [oldAlias, newAlias, details] = savePreloadSpy.args[0];
233
+ expect(oldAlias, "alias is the same as name").to.equal("test");
234
+ expect(newAlias, "alias is the same as name").to.equal("test2");
235
+ expect(details, "Passed along details").to.deep.equal({
236
+ url: "http://assets.finsemble.com/preloads/testPreload.js",
237
+ autoload: "all",
238
+ });
239
+ });
240
+ it("Delete preload from the Preload edit page", async () => {
241
+ const savePreloadSpy = sinon.spy(Default.args, "savePreload");
242
+ const deletePreloadSpy = sinon.spy(Default.args, "deletePreload");
243
+ const wrapper = mount(React.createElement(Default, Object.assign({}, Default.args)));
244
+ await waitTick();
245
+ wrapper.update();
246
+ expect(wrapper.find(".app-list-row .app-name").at(1).text(), "First item name").to.equal("test2");
247
+ wrapper.find(".app-list-row").at(1).simulate("click");
248
+ wrapper.find(".button-container-danger button").simulate("click");
249
+ await waitTick();
250
+ expect(savePreloadSpy.calledOnce).to.be.false;
251
+ expect(deletePreloadSpy.calledOnce).to.be.true;
252
+ const [alias] = deletePreloadSpy.args[0];
253
+ expect(alias, "alias of deleted app").to.equal("test2");
254
+ });
255
+ });
21
256
  });
22
257
  //# sourceMappingURL=OptionalSettingsView.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"OptionalSettingsView.spec.js","sourceRoot":"","sources":["../../../../src/components/sdd/tests/OptionalSettingsView.spec.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEtD,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACxC,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,OAAO,GAAG,KAAK,CAAC,oBAAC,OAAO,oBAAM,OAAO,CAAC,IAAkC,EAAI,CAAC,CAAC;QACpF,MAAM,CAAC,MAAM,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,OAAO,GAAG,KAAK,CAAC,oBAAC,KAAK,oBAAM,KAAK,CAAC,IAAkC,EAAI,CAAC,CAAC;QAEhF,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACxD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAE3D,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,EAAE,EAAE,sBAAsB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACpF,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,IAAI,EAAE,EAAE,oBAAoB,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACnG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,MAAM,EAAE,EAAE,uCAAuC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAClH,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["import * as React from \"react\";\nimport { mount } from \"enzyme\";\nimport { describe, it } from \"mocha\";\nimport { expect } from \"chai\";\nimport { OptionalSettingsViewProps } from \"../OptionalSettingsView\";\nimport { Default, Empty } from \"../stories/OptionalSettingsView.stories\";\n\n// For running accessibility scans\nimport { accessibilityAssessor } from \"./a11y_helper\";\n\ndescribe(\"<OptionalSettingsView/>\", () => {\n\tit(\"should pass accessibility scans\", async () => {\n\t\tconst wrapper = mount(<Default {...(Default.args as OptionalSettingsViewProps)} />);\n\t\texpect(await accessibilityAssessor(wrapper)).to.be.true;\n\t});\n\n\tit(\"should be empty when there are no preloads\", async () => {\n\t\tconst wrapper = mount(<Empty {...(Empty.args as OptionalSettingsViewProps)} />);\n\n\t\tconst button = wrapper.find(\"button\").last();\n\t\texpect(button.exists(), \"The button exists\").to.be.true;\n\t\texpect(button.text(), \"The button's text\").to.equal(\"Add\");\n\n\t\texpect(wrapper.find(\".app-list-empty\").exists(), \"Empty message exists\").to.be.true;\n\t\texpect(wrapper.find(\".app-list-empty\").text(), \"Empty message text\").to.contain(\"to add preloads\");\n\t\texpect(wrapper.find(\".app-list-empty.no-dropzone\").exists(), \"Empty message has no dropzone styling\").to.be.true;\n\t});\n});\n\n/*\nDisplays preloads\n default \"Load for\" is \"Selected apps\"\nAdd a preload - it displays in a list\nRename a preload - it displays in the list\nDelete a preload - its removed from the list\n\nUsage - radio buttons - make sure each button is unique\n\nCheck submitted values: new, modify URL, rename, delete\n\nAfter saving a preload with non-default values, and re-opening the preload, the saved values are present\n\nUpdate app config:\n\tunchanged no preload\n\tunchanged with preload\n\tadding a preload\n\tremoving a preload\n\trenaming a preload\n\trenaming+adding preload\n\trenaming+removing preload\n*/\n"]}
1
+ {"version":3,"file":"OptionalSettingsView.spec.js","sourceRoot":"","sources":["../../../../src/components/sdd/tests/OptionalSettingsView.spec.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { mount } from \"enzyme\";\nimport { describe, it } from \"mocha\";\nimport { expect } from \"chai\";\nimport { OptionalSettingsViewProps } from \"../OptionalSettingsView\";\nimport { Default, Empty } from \"../stories/OptionalSettingsView.stories\";\n\n// For running accessibility scans\nimport { accessibilityAssessor } from \"./a11y_helper\";\nimport { waitTick } from \"../sdd_helpers\";\n\n// For testing user interactions (like click events):\nimport sinon from \"sinon\";\n// Necessary to allow sinon to work with mocked actions (which are shown in the Actions panel in Storybook)\nimport addons, { mockChannel } from \"@storybook/addons\";\naddons.setChannel(mockChannel());\n\ndescribe(\"<OptionalSettingsView/>\", () => {\n\t// Used to clear after each interactive test using sinon\n\tafterEach(() => {\n\t\tsinon.restore();\n\t});\n\n\tit(\"should pass accessibility scans\", async () => {\n\t\tconst wrapper = mount(<Default {...(Default.args as OptionalSettingsViewProps)} />);\n\t\texpect(await accessibilityAssessor(wrapper)).to.be.true;\n\t});\n\n\tit(\"should be empty when there are no preloads\", async () => {\n\t\tconst wrapper = mount(<Empty {...(Empty.args as OptionalSettingsViewProps)} />);\n\n\t\tconst button = wrapper.find(\"button\").last();\n\t\texpect(button.exists(), \"The button exists\").to.be.true;\n\t\texpect(button.text(), \"The button's text\").to.equal(\"Add\");\n\n\t\texpect(wrapper.find(\".app-list-empty\").exists(), \"Empty message exists\").to.be.true;\n\t\texpect(wrapper.find(\".app-list-empty\").text(), \"Empty message text\").to.contain(\"to add preloads\");\n\t\texpect(wrapper.find(\".app-list-empty.no-dropzone\").exists(), \"Empty message has no dropzone styling\").to.be.true;\n\t});\n\n\tit(\"should show preload aliases if there are registered preloads\", async () => {\n\t\tconst wrapper = mount(<Default {...(Default.args as OptionalSettingsViewProps)} />);\n\t\tawait waitTick();\n\t\twrapper.update();\n\n\t\tconst names = wrapper.find(\".app-name\");\n\t\texpect(names.length, \"There are 2 names listed\").to.equal(2);\n\t\tconst names_as_text = names.map((elem) => elem.text());\n\n\t\texpect(names_as_text).includes(\"native-overrides\");\n\t\texpect(names_as_text).includes(\"zoom\");\n\n\t\tconst delete_buttons = wrapper.find(\".button-container-icon.icon-delete\");\n\t\texpect(delete_buttons.length, \"There are also 2 delete buttons\").to.equal(2);\n\t});\n\n\tdescribe(\"Check app config updates\", async () => {\n\t\t/*** WARNING!!: Tests are not independent and must go in this order ***/\n\n\t\tit(\"Removing a preload\", async () => {\n\t\t\tconst buttonSpy = sinon.spy(Default.args as OptionalSettingsViewProps, \"updateApp\");\n\t\t\tconst wrapper = mount(<Default {...(Default.args as OptionalSettingsViewProps)} />);\n\t\t\tawait waitTick();\n\t\t\twrapper.update();\n\t\t\t// Click list item\n\t\t\texpect(wrapper.find(\".app-list-row .app-name\").at(1).text(), \"First item name\").to.equal(\"zoom\");\n\t\t\twrapper.find(\".app-list-row\").at(1).simulate(\"click\");\n\t\t\tawait waitTick();\n\t\t\twrapper.update();\n\n\t\t\twrapper.find(\".emperorOption [type='checkbox']\").at(0).simulate(\"change\");\n\n\t\t\t// Click save button\n\t\t\twrapper.find(\".app-actions-right-wrapper .button-container-secondary button\").simulate(\"click\");\n\t\t\tawait waitTick();\n\n\t\t\texpect(buttonSpy.args.length, \"Expect updateApp to be called once, because only one app was updated\").to.equal(1);\n\t\t\tconst [updatedAppId, updatedAppConfig] = buttonSpy.args[0];\n\t\t\texpect(updatedAppId, \"Which app was added\").to.equal(\"Example Charts App\");\n\t\t\texpect(\n\t\t\t\tupdatedAppConfig.manifest?.component?.preload,\n\t\t\t\t\"what should preload config for this app look like now\"\n\t\t\t).to.not.include(\"zoom\");\n\t\t});\n\t\tit(\"Adding a preload\", async () => {\n\t\t\tconst buttonSpy = sinon.spy(Default.args as OptionalSettingsViewProps, \"updateApp\");\n\t\t\tconst wrapper = mount(<Default {...(Default.args as OptionalSettingsViewProps)} />);\n\t\t\tawait waitTick();\n\t\t\twrapper.update();\n\n\t\t\twrapper.find(\".app-list-row\").at(1).simulate(\"click\");\n\t\t\tawait waitTick();\n\t\t\twrapper.update();\n\n\t\t\twrapper.find(\".emperorOption [type='checkbox']\").at(0).simulate(\"change\");\n\n\t\t\t// Click save button\n\t\t\twrapper.find(\".app-actions-right-wrapper .button-container-secondary button\").simulate(\"click\");\n\t\t\tawait waitTick();\n\n\t\t\texpect(buttonSpy.args.length, \"Expect updateApp to be called once, because only one app was updated\").to.equal(1);\n\t\t\tconst [updatedAppId, updatedAppConfig] = buttonSpy.args[0];\n\t\t\texpect(updatedAppId, \"Which app was added\").to.equal(\"Example Charts App\");\n\t\t\texpect(\n\t\t\t\tupdatedAppConfig.manifest?.component?.preload,\n\t\t\t\t\"what should preload config for this app look like now\"\n\t\t\t).to.include(\"zoom\");\n\t\t});\n\t\tit(\"Renaming a preload\", async () => {\n\t\t\tconst buttonSpy = sinon.spy(Default.args as OptionalSettingsViewProps, \"updateApp\");\n\t\t\tconst wrapper = mount(<Default {...(Default.args as OptionalSettingsViewProps)} />);\n\t\t\tawait waitTick();\n\t\t\twrapper.update();\n\n\t\t\twrapper.find(\".app-list-row\").at(1).simulate(\"click\");\n\t\t\tawait waitTick();\n\t\t\twrapper.update();\n\n\t\t\twrapper.find(\"#preload-alias\").simulate(\"change\", {\n\t\t\t\ttarget: {\n\t\t\t\t\tvalue: \"zoom2\",\n\t\t\t\t},\n\t\t\t});\n\n\t\t\t// Click save button\n\t\t\twrapper.find(\".app-actions-right-wrapper .button-container-secondary button\").simulate(\"click\");\n\t\t\tawait waitTick();\n\n\t\t\texpect(buttonSpy.args.length, \"Expect updateApp to be called once, because only one app was updated\").to.equal(1);\n\t\t\tconst [updatedAppId, updatedAppConfig] = buttonSpy.args[0];\n\t\t\texpect(updatedAppId, \"Which app was added\").to.equal(\"Example Charts App\");\n\t\t\texpect(\n\t\t\t\tupdatedAppConfig.manifest?.component?.preload,\n\t\t\t\t\"what should preload config for this app look like now\"\n\t\t\t).to.include(\"zoom2\");\n\t\t\texpect(\n\t\t\t\tupdatedAppConfig.manifest?.component?.preload,\n\t\t\t\t\"what should preload config for this app look like now\"\n\t\t\t).to.not.include(\"zoom\");\n\t\t});\n\t\tit(\"Unchanged preload (for apps that do and don't have the preload added\", async () => {\n\t\t\tconst buttonSpy = sinon.spy(Default.args as OptionalSettingsViewProps, \"updateApp\");\n\t\t\tconst wrapper = mount(<Default {...(Default.args as OptionalSettingsViewProps)} />);\n\t\t\tawait waitTick();\n\t\t\twrapper.update();\n\n\t\t\twrapper.find(\".app-list-row\").at(1).simulate(\"click\");\n\t\t\tawait waitTick();\n\t\t\twrapper.update();\n\n\t\t\t// Click save button\n\t\t\twrapper.find(\".app-actions-right-wrapper .button-container-secondary button\").simulate(\"click\");\n\t\t\tawait waitTick();\n\n\t\t\texpect(buttonSpy.args.length, \"Expect updateApp to not be called\").to.equal(0);\n\t\t});\n\t\tit(\"Renaming + adding a preload\", async () => {\n\t\t\tconst buttonSpy = sinon.spy(Default.args as OptionalSettingsViewProps, \"updateApp\");\n\t\t\tconst wrapper = mount(<Default {...(Default.args as OptionalSettingsViewProps)} />);\n\t\t\tawait waitTick();\n\t\t\twrapper.update();\n\n\t\t\twrapper.find(\".app-list-row\").at(0).simulate(\"click\");\n\t\t\tawait waitTick();\n\t\t\twrapper.update();\n\n\t\t\t// Rename \"native-overrides\" to \"native-overrides2\"\n\t\t\twrapper.find(\"#preload-alias\").simulate(\"change\", {\n\t\t\t\ttarget: {\n\t\t\t\t\tvalue: \"native-overrides2\",\n\t\t\t\t},\n\t\t\t});\n\n\t\t\t// Add this preload to \"Example Charts App\"\n\t\t\twrapper.find(\".emperorOption [type='checkbox']\").at(0).simulate(\"change\");\n\t\t\texpect(wrapper.find(\".emperorOption [type='checkbox']\").at(0).prop(\"checked\")).to.be.true;\n\n\t\t\t// Click save button\n\t\t\twrapper.find(\".app-actions-right-wrapper .button-container-secondary button\").simulate(\"click\");\n\t\t\tawait waitTick();\n\n\t\t\texpect(buttonSpy.args.length, \"Expect updateApp to be called once, because only one app was updated\").to.equal(1);\n\t\t\tconst [updatedAppId, updatedAppConfig] = buttonSpy.args[0];\n\t\t\texpect(updatedAppId, \"Which app was added\").to.equal(\"Example Charts App\");\n\t\t\texpect(\n\t\t\t\tupdatedAppConfig.manifest?.component?.preload,\n\t\t\t\t\"what should preload config for this app look like now\"\n\t\t\t).to.include(\"native-overrides2\");\n\t\t\texpect(\n\t\t\t\tupdatedAppConfig.manifest?.component?.preload,\n\t\t\t\t\"what should preload config for this app look like now\"\n\t\t\t).to.not.include(\"native-overrides\");\n\t\t});\n\t\tit(\"Renaming + removing a preload\", async () => {\n\t\t\tconst buttonSpy = sinon.spy(Default.args as OptionalSettingsViewProps, \"updateApp\");\n\t\t\tconst wrapper = mount(<Default {...(Default.args as OptionalSettingsViewProps)} />);\n\t\t\tawait waitTick();\n\t\t\twrapper.update();\n\n\t\t\twrapper.find(\".app-list-row\").at(0).simulate(\"click\");\n\t\t\tawait waitTick();\n\t\t\twrapper.update();\n\n\t\t\t// Rename \"native-overrides2\" to \"native-overrides3\"\n\t\t\twrapper.find(\"#preload-alias\").simulate(\"change\", {\n\t\t\t\ttarget: {\n\t\t\t\t\tvalue: \"native-overrides3\",\n\t\t\t\t},\n\t\t\t});\n\n\t\t\t// Remove this preload to \"Example Charts App\"\n\t\t\twrapper.find(\".emperorOption [type='checkbox']\").at(0).simulate(\"change\");\n\t\t\texpect(wrapper.find(\".emperorOption [type='checkbox']\").at(0).prop(\"checked\")).to.be.false;\n\n\t\t\t// Click save button\n\t\t\twrapper.find(\".app-actions-right-wrapper .button-container-secondary button\").simulate(\"click\");\n\t\t\tawait waitTick();\n\n\t\t\texpect(buttonSpy.args.length, \"Expect updateApp to be called once, because only one app was updated\").to.equal(1);\n\t\t\tconst [updatedAppId, updatedAppConfig] = buttonSpy.args[0];\n\t\t\texpect(updatedAppId, \"Which app was added\").to.equal(\"Example Charts App\");\n\t\t\texpect(\n\t\t\t\tupdatedAppConfig.manifest?.component?.preload,\n\t\t\t\t\"what should preload config for this app look like now\"\n\t\t\t).to.not.include(\"native-overrides2\");\n\t\t\texpect(\n\t\t\t\tupdatedAppConfig.manifest?.component?.preload,\n\t\t\t\t\"what should preload config for this app look like now\"\n\t\t\t).to.not.include(\"native-overrides3\");\n\t\t});\n\t});\n\n\tdescribe(\"Check submitted values\", async () => {\n\t\tit(\"Adding a new preload\", async () => {\n\t\t\tconst savePreloadSpy = sinon.spy(Default.args as OptionalSettingsViewProps, \"savePreload\");\n\t\t\tconst wrapper = mount(<Default {...(Default.args as OptionalSettingsViewProps)} />);\n\t\t\tawait waitTick();\n\t\t\twrapper.update();\n\n\t\t\t// Click Add button\n\t\t\twrapper.find(\".button-container-primary button\").simulate(\"click\");\n\t\t\tawait waitTick();\n\t\t\twrapper.update();\n\n\t\t\t// Alias name\n\t\t\twrapper.find(\"#preload-alias\").simulate(\"change\", {\n\t\t\t\ttarget: {\n\t\t\t\t\tvalue: \"test\",\n\t\t\t\t},\n\t\t\t});\n\n\t\t\t// URL name\n\t\t\twrapper.find(\"#preload-url\").simulate(\"change\", {\n\t\t\t\ttarget: {\n\t\t\t\t\tvalue: \"https://assets.finsemble.com/preloads/testPreload.js\",\n\t\t\t\t},\n\t\t\t});\n\n\t\t\t// Assign \"Load for\" to \"All apps\"\n\t\t\twrapper.find(\"input[name='preload-usage'][value='all']\").simulate(\"change\", {\n\t\t\t\ttarget: {\n\t\t\t\t\tvalue: \"all\",\n\t\t\t\t},\n\t\t\t});\n\n\t\t\t// Click save button\n\t\t\twrapper.find(\".app-actions-right-wrapper .button-container-secondary button\").simulate(\"click\");\n\t\t\tawait waitTick();\n\n\t\t\texpect(savePreloadSpy.calledOnce).to.be.true;\n\n\t\t\tconst [oldAlias, newAlias, details] = savePreloadSpy.args[0];\n\t\t\texpect(oldAlias, \"No previous alias when it's a new preload\").to.be.empty;\n\t\t\texpect(newAlias, \"alias is the same as name\").to.equal(\"test\");\n\t\t\texpect(details, \"Passed along details\").to.deep.equal({\n\t\t\t\turl: \"https://assets.finsemble.com/preloads/testPreload.js\",\n\t\t\t\tautoload: \"all\",\n\t\t\t});\n\t\t});\n\t\tit(\"Modifying a preload's URL\", async () => {\n\t\t\tconst savePreloadSpy = sinon.spy(Default.args as OptionalSettingsViewProps, \"savePreload\");\n\t\t\tconst wrapper = mount(<Default {...(Default.args as OptionalSettingsViewProps)} />);\n\t\t\tawait waitTick();\n\t\t\twrapper.update();\n\n\t\t\t// Click list item\n\t\t\texpect(wrapper.find(\".app-list-row .app-name\").at(1).text(), \"First item name\").to.equal(\"test\");\n\t\t\twrapper.find(\".app-list-row\").at(1).simulate(\"click\");\n\n\t\t\t// URL name\n\t\t\twrapper.find(\"#preload-url\").simulate(\"change\", {\n\t\t\t\ttarget: {\n\t\t\t\t\tvalue: \"http://assets.finsemble.com/preloads/testPreload.js\",\n\t\t\t\t},\n\t\t\t});\n\n\t\t\t// Click save button\n\t\t\twrapper.find(\".app-actions-right-wrapper .button-container-secondary button\").simulate(\"click\");\n\t\t\tawait waitTick();\n\n\t\t\texpect(savePreloadSpy.calledOnce).to.be.true;\n\n\t\t\tconst [oldAlias, newAlias, details] = savePreloadSpy.args[0];\n\t\t\texpect(oldAlias, \"alias is the same as name\").to.equal(\"test\");\n\t\t\texpect(newAlias, \"alias is the same as name\").to.equal(\"test\");\n\t\t\texpect(details, \"Passed along details\").to.deep.equal({\n\t\t\t\turl: \"http://assets.finsemble.com/preloads/testPreload.js\",\n\t\t\t\tautoload: \"all\",\n\t\t\t});\n\t\t});\n\t\tit(\"Rename a value\", async () => {\n\t\t\tconst savePreloadSpy = sinon.spy(Default.args as OptionalSettingsViewProps, \"savePreload\");\n\t\t\tconst wrapper = mount(<Default {...(Default.args as OptionalSettingsViewProps)} />);\n\t\t\tawait waitTick();\n\t\t\twrapper.update();\n\n\t\t\t// Click list item\n\t\t\texpect(wrapper.find(\".app-list-row .app-name\").at(1).text(), \"First item name\").to.equal(\"test\");\n\t\t\twrapper.find(\".app-list-row\").at(1).simulate(\"click\");\n\n\t\t\t// Alias name\n\t\t\twrapper.find(\"#preload-alias\").simulate(\"change\", {\n\t\t\t\ttarget: {\n\t\t\t\t\tvalue: \"test2\",\n\t\t\t\t},\n\t\t\t});\n\n\t\t\t// Click save button\n\t\t\twrapper.find(\".app-actions-right-wrapper .button-container-secondary button\").simulate(\"click\");\n\t\t\tawait waitTick();\n\n\t\t\texpect(savePreloadSpy.calledOnce).to.be.true;\n\n\t\t\tconst [oldAlias, newAlias, details] = savePreloadSpy.args[0];\n\t\t\texpect(oldAlias, \"alias is the same as name\").to.equal(\"test\");\n\t\t\texpect(newAlias, \"alias is the same as name\").to.equal(\"test2\");\n\t\t\texpect(details, \"Passed along details\").to.deep.equal({\n\t\t\t\turl: \"http://assets.finsemble.com/preloads/testPreload.js\",\n\t\t\t\tautoload: \"all\",\n\t\t\t});\n\t\t});\n\t\tit(\"Delete preload from the Preload edit page\", async () => {\n\t\t\tconst savePreloadSpy = sinon.spy(Default.args as OptionalSettingsViewProps, \"savePreload\");\n\t\t\tconst deletePreloadSpy = sinon.spy(Default.args as OptionalSettingsViewProps, \"deletePreload\");\n\t\t\tconst wrapper = mount(<Default {...(Default.args as OptionalSettingsViewProps)} />);\n\t\t\tawait waitTick();\n\t\t\twrapper.update();\n\n\t\t\t// Click list item\n\t\t\texpect(wrapper.find(\".app-list-row .app-name\").at(1).text(), \"First item name\").to.equal(\"test2\");\n\t\t\twrapper.find(\".app-list-row\").at(1).simulate(\"click\");\n\n\t\t\t// Click save button\n\t\t\twrapper.find(\".button-container-danger button\").simulate(\"click\");\n\t\t\tawait waitTick();\n\n\t\t\texpect(savePreloadSpy.calledOnce).to.be.false;\n\t\t\texpect(deletePreloadSpy.calledOnce).to.be.true;\n\n\t\t\tconst [alias] = deletePreloadSpy.args[0];\n\t\t\texpect(alias, \"alias of deleted app\").to.equal(\"test2\");\n\t\t});\n\t});\n});\n"]}
@@ -5,7 +5,7 @@ import { expect } from "chai";
5
5
  import { DefaultSDD } from "../stories/SmartDesktopDesigner.stories";
6
6
  import { waitTick } from "../sdd_helpers";
7
7
  import { ACTIVE_TAB_APP_LIST_TABLE_ROW } from "./Applications.spec";
8
- const PROJECT_NAME_INPUT = "#project-name", PROJECT_NAME_WARNING = ".project-name-error-icon", TOOLBAR_TAB = "#toolbar-nav-link", ADD_MENU_BUTTON = "[data-label='Menus'] .button-container-primary.icon-before-add button", SAVE_MENU_BUTTON = ".app-edit-actions .button-container-secondary button", EMPTY_MENU_NAV_WARNING = "#toolbar-nav-link .nav-error-icon", PUBLISH_TAB = "#export-nav-link", PROJECT_ERROR = ".project-errors-container .project-error";
8
+ const PROJECT_NAME_INPUT = "#project-name", PROJECT_NAME_WARNING = ".project-name-error-icon", TOOLBAR_TAB = "#toolbar-nav-link", ADD_MENU_BUTTON = "[data-label='Menus'] .button-container-primary.icon-before-add button", SAVE_MENU_BUTTON = ".app-edit-actions-right .button-container-secondary button", EMPTY_MENU_NAV_WARNING = "#toolbar-nav-link .nav-error-icon", PUBLISH_TAB = "#export-nav-link", PROJECT_ERROR = ".project-errors-container .project-error";
9
9
  const doClick = (element, name) => {
10
10
  expect(element.length, name).to.be.greaterThan(0);
11
11
  element.simulate("click");
@@ -1 +1 @@
1
- {"version":3,"file":"ProjectErrors.spec.js","sourceRoot":"","sources":["../../../../src/components/sdd/tests/ProjectErrors.spec.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { mount, ReactWrapper } from \"enzyme\";\nimport { describe, it } from \"mocha\";\nimport { expect } from \"chai\";\nimport { DefaultSDD } from \"../stories/SmartDesktopDesigner.stories\";\nimport { waitTick } from \"../sdd_helpers\";\nimport { SmartDesktopDesignerProps } from \"../SmartDesktopDesigner\";\nimport { ACTIVE_TAB_APP_LIST_TABLE_ROW } from \"./Applications.spec\";\n\nconst PROJECT_NAME_INPUT = \"#project-name\",\n\tPROJECT_NAME_WARNING = \".project-name-error-icon\",\n\tTOOLBAR_TAB = \"#toolbar-nav-link\",\n\tADD_MENU_BUTTON = \"[data-label='Menus'] .button-container-primary.icon-before-add button\",\n\tSAVE_MENU_BUTTON = \".app-edit-actions .button-container-secondary button\",\n\tEMPTY_MENU_NAV_WARNING = \"#toolbar-nav-link .nav-error-icon\",\n\tPUBLISH_TAB = \"#export-nav-link\",\n\tPROJECT_ERROR = \".project-errors-container .project-error\";\n\nconst doClick = (element: ReactWrapper, name: string) => {\n\texpect(element.length, name).to.be.greaterThan(0);\n\n\telement.simulate(\"click\");\n};\n\ndescribe(\"<ProjectErrors/>\", () => {\n\tit(\"should show project errors for invalid SDD sections\", async () => {\n\t\tconst wrapper = mount(<DefaultSDD {...(DefaultSDD.args as SmartDesktopDesignerProps)} />);\n\n\t\tawait waitTick();\n\t\twrapper.update();\n\n\t\tdoClick(wrapper.find(TOOLBAR_TAB).at(0), \"TOOLBAR_TAB\");\n\n\t\tawait waitTick();\n\t\twrapper.update();\n\n\t\tdoClick(wrapper.find(ADD_MENU_BUTTON).at(0), \"ADD_MENU_BUTTON\");\n\n\t\tawait waitTick();\n\t\twrapper.update();\n\n\t\t// Set name as \"Charts\"\n\t\twrapper\n\t\t\t.find(\"#menu-name\")\n\t\t\t.at(0)\n\t\t\t.simulate(\"change\", {\n\t\t\t\ttarget: {\n\t\t\t\t\tvalue: \"Charts\",\n\t\t\t\t},\n\t\t\t});\n\n\t\t// Click Save\n\t\twrapper.find(SAVE_MENU_BUTTON).at(0).simulate(\"click\");\n\n\t\tawait waitTick();\n\t\twrapper.update();\n\n\t\texpect(wrapper.find(ACTIVE_TAB_APP_LIST_TABLE_ROW).length, \"Menu list shows 1 empty menu\").to.be.equal(1);\n\n\t\texpect(wrapper.find(EMPTY_MENU_NAV_WARNING).length, \"Empty Menu Nav Warning\").to.equal(0);\n\n\t\twrapper.find(PUBLISH_TAB).at(0).simulate(\"click\");\n\n\t\tawait waitTick();\n\t\twrapper.update();\n\n\t\texpect(wrapper.find(EMPTY_MENU_NAV_WARNING).length, \"Empty Menu Nav Warning\").to.equal(1);\n\t\texpect(wrapper.find(PROJECT_ERROR).length, \"Project Errors\").to.equal(1);\n\t});\n});\n"]}
1
+ {"version":3,"file":"ProjectErrors.spec.js","sourceRoot":"","sources":["../../../../src/components/sdd/tests/ProjectErrors.spec.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { mount, ReactWrapper } from \"enzyme\";\nimport { describe, it } from \"mocha\";\nimport { expect } from \"chai\";\nimport { DefaultSDD } from \"../stories/SmartDesktopDesigner.stories\";\nimport { waitTick } from \"../sdd_helpers\";\nimport { SmartDesktopDesignerProps } from \"../SmartDesktopDesigner\";\nimport { ACTIVE_TAB_APP_LIST_TABLE_ROW } from \"./Applications.spec\";\n\nconst PROJECT_NAME_INPUT = \"#project-name\",\n\tPROJECT_NAME_WARNING = \".project-name-error-icon\",\n\tTOOLBAR_TAB = \"#toolbar-nav-link\",\n\tADD_MENU_BUTTON = \"[data-label='Menus'] .button-container-primary.icon-before-add button\",\n\tSAVE_MENU_BUTTON = \".app-edit-actions-right .button-container-secondary button\",\n\tEMPTY_MENU_NAV_WARNING = \"#toolbar-nav-link .nav-error-icon\",\n\tPUBLISH_TAB = \"#export-nav-link\",\n\tPROJECT_ERROR = \".project-errors-container .project-error\";\n\nconst doClick = (element: ReactWrapper, name: string) => {\n\texpect(element.length, name).to.be.greaterThan(0);\n\n\telement.simulate(\"click\");\n};\n\ndescribe(\"<ProjectErrors/>\", () => {\n\tit(\"should show project errors for invalid SDD sections\", async () => {\n\t\tconst wrapper = mount(<DefaultSDD {...(DefaultSDD.args as SmartDesktopDesignerProps)} />);\n\n\t\tawait waitTick();\n\t\twrapper.update();\n\n\t\tdoClick(wrapper.find(TOOLBAR_TAB).at(0), \"TOOLBAR_TAB\");\n\n\t\tawait waitTick();\n\t\twrapper.update();\n\n\t\tdoClick(wrapper.find(ADD_MENU_BUTTON).at(0), \"ADD_MENU_BUTTON\");\n\n\t\tawait waitTick();\n\t\twrapper.update();\n\n\t\t// Set name as \"Charts\"\n\t\twrapper\n\t\t\t.find(\"#menu-name\")\n\t\t\t.at(0)\n\t\t\t.simulate(\"change\", {\n\t\t\t\ttarget: {\n\t\t\t\t\tvalue: \"Charts\",\n\t\t\t\t},\n\t\t\t});\n\n\t\t// Click Save\n\t\twrapper.find(SAVE_MENU_BUTTON).at(0).simulate(\"click\");\n\n\t\tawait waitTick();\n\t\twrapper.update();\n\n\t\texpect(wrapper.find(ACTIVE_TAB_APP_LIST_TABLE_ROW).length, \"Menu list shows 1 empty menu\").to.be.equal(1);\n\n\t\texpect(wrapper.find(EMPTY_MENU_NAV_WARNING).length, \"Empty Menu Nav Warning\").to.equal(0);\n\n\t\twrapper.find(PUBLISH_TAB).at(0).simulate(\"click\");\n\n\t\tawait waitTick();\n\t\twrapper.update();\n\n\t\texpect(wrapper.find(EMPTY_MENU_NAV_WARNING).length, \"Empty Menu Nav Warning\").to.equal(1);\n\t\texpect(wrapper.find(PROJECT_ERROR).length, \"Project Errors\").to.equal(1);\n\t});\n});\n"]}
@@ -46,11 +46,11 @@ describe("<SmartDesktopDesigner/>", () => {
46
46
  const wrapper = mount(React.createElement(DefaultSDD, Object.assign({}, DefaultSDD.args)));
47
47
  await waitTick();
48
48
  wrapper.update();
49
- expect(wrapper.find(".nav-item.active #getting-started-nav-link").length, "Currently on Getting Started").to.equal(1);
49
+ expect(wrapper.find(".nav-item[aria-selected=true] #getting-started-nav-link").length, "Currently on Getting Started").to.equal(1);
50
50
  wrapper.find(`.nav-item #${target.nav.id}`).at(0).simulate("click");
51
51
  await waitTick();
52
52
  wrapper.update();
53
- expect(wrapper.find(`.nav-item.active #${target.nav.id}`).length, `${target.nav.id} is active`).to.equal(1);
53
+ expect(wrapper.find(`.nav-item[aria-selected=true] #${target.nav.id}`).length, `${target.nav.id} is active`).to.equal(1);
54
54
  expect(wrapper.find(".view-title .leftSide").at(0).text(), `page title is "${target.nav.title}"`).contains(target.nav.title);
55
55
  });
56
56
  });