@patternfly/quickstarts 0.0.0

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 (304) hide show
  1. package/README.md +546 -0
  2. package/dist/ConsoleInternal/components/markdown-view.d.ts +19 -0
  3. package/dist/ConsoleInternal/components/utils/camel-case-wrap.d.ts +6 -0
  4. package/dist/ConsoleInternal/components/utils/index.d.ts +3 -0
  5. package/dist/ConsoleInternal/components/utils/router.d.ts +9 -0
  6. package/dist/ConsoleInternal/components/utils/status-box.d.ts +20 -0
  7. package/dist/ConsoleInternal/module/k8s/types.d.ts +42 -0
  8. package/dist/ConsoleShared/index.d.ts +1 -0
  9. package/dist/ConsoleShared/src/components/index.d.ts +7 -0
  10. package/dist/ConsoleShared/src/components/markdown-extensions/MarkdownCopyClipboard.d.ts +13 -0
  11. package/dist/ConsoleShared/src/components/markdown-extensions/accordion-extension.d.ts +7 -0
  12. package/dist/ConsoleShared/src/components/markdown-extensions/accordion-render-extension.d.ts +6 -0
  13. package/dist/ConsoleShared/src/components/markdown-extensions/admonition-extension.d.ts +7 -0
  14. package/dist/ConsoleShared/src/components/markdown-extensions/code-extension.d.ts +7 -0
  15. package/dist/ConsoleShared/src/components/markdown-extensions/const.d.ts +5 -0
  16. package/dist/ConsoleShared/src/components/markdown-extensions/index.d.ts +7 -0
  17. package/dist/ConsoleShared/src/components/markdown-extensions/inline-clipboard-extension.d.ts +7 -0
  18. package/dist/ConsoleShared/src/components/markdown-extensions/multiline-clipboard-extension.d.ts +7 -0
  19. package/dist/ConsoleShared/src/components/markdown-extensions/utils.d.ts +1 -0
  20. package/dist/ConsoleShared/src/components/markdown-highlight-extension/MarkdownHighlightExtension.d.ts +7 -0
  21. package/dist/ConsoleShared/src/components/markdown-highlight-extension/highlight-consts.d.ts +4 -0
  22. package/dist/ConsoleShared/src/components/markdown-highlight-extension/index.d.ts +1 -0
  23. package/dist/ConsoleShared/src/components/modal/Modal.d.ts +9 -0
  24. package/dist/ConsoleShared/src/components/modal/index.d.ts +1 -0
  25. package/dist/ConsoleShared/src/components/popper/Portal.d.ts +8 -0
  26. package/dist/ConsoleShared/src/components/popper/SimplePopper.d.ts +6 -0
  27. package/dist/ConsoleShared/src/components/popper/index.d.ts +2 -0
  28. package/dist/ConsoleShared/src/components/spotlight/InteractiveSpotlight.d.ts +7 -0
  29. package/dist/ConsoleShared/src/components/spotlight/Spotlight.d.ts +7 -0
  30. package/dist/ConsoleShared/src/components/spotlight/StaticSpotlight.d.ts +7 -0
  31. package/dist/ConsoleShared/src/components/spotlight/index.d.ts +1 -0
  32. package/dist/ConsoleShared/src/components/status/GenericStatus.d.ts +12 -0
  33. package/dist/ConsoleShared/src/components/status/NotStartedIcon.d.ts +3 -0
  34. package/dist/ConsoleShared/src/components/status/PopoverStatus.d.ts +13 -0
  35. package/dist/ConsoleShared/src/components/status/Status.d.ts +11 -0
  36. package/dist/ConsoleShared/src/components/status/StatusIconAndText.d.ts +8 -0
  37. package/dist/ConsoleShared/src/components/status/icons.d.ts +9 -0
  38. package/dist/ConsoleShared/src/components/status/index.d.ts +1 -0
  39. package/dist/ConsoleShared/src/components/status/statuses.d.ts +5 -0
  40. package/dist/ConsoleShared/src/components/status/types.d.ts +9 -0
  41. package/dist/ConsoleShared/src/components/utils/FallbackImg.d.ts +9 -0
  42. package/dist/ConsoleShared/src/components/utils/index.d.ts +1 -0
  43. package/dist/ConsoleShared/src/constants/index.d.ts +1 -0
  44. package/dist/ConsoleShared/src/constants/ui.d.ts +1 -0
  45. package/dist/ConsoleShared/src/hooks/index.d.ts +6 -0
  46. package/dist/ConsoleShared/src/hooks/scroll.d.ts +8 -0
  47. package/dist/ConsoleShared/src/hooks/useBoundingClientRect.d.ts +3 -0
  48. package/dist/ConsoleShared/src/hooks/useEventListener.d.ts +1 -0
  49. package/dist/ConsoleShared/src/hooks/useForceRender.d.ts +4 -0
  50. package/dist/ConsoleShared/src/hooks/useResizeObserver.d.ts +1 -0
  51. package/dist/ConsoleShared/src/hooks/useScrollShadows.d.ts +7 -0
  52. package/dist/ConsoleShared/src/index.d.ts +4 -0
  53. package/dist/ConsoleShared/src/utils/index.d.ts +1 -0
  54. package/dist/ConsoleShared/src/utils/useCombineRefs.d.ts +2 -0
  55. package/dist/HelpTopicDrawer.d.ts +33 -0
  56. package/dist/HelpTopicPanelContent.d.ts +11 -0
  57. package/dist/QuickStartCatalogPage.d.ts +14 -0
  58. package/dist/QuickStartCloseModal.d.ts +8 -0
  59. package/dist/QuickStartController.d.ts +10 -0
  60. package/dist/QuickStartDrawer.d.ts +62 -0
  61. package/dist/QuickStartMarkdownView.d.ts +9 -0
  62. package/dist/QuickStartPanelContent.d.ts +15 -0
  63. package/dist/catalog/Catalog/QuickStartCatalogHeader.d.ts +6 -0
  64. package/dist/catalog/Catalog/QuickStartCatalogSection.d.ts +5 -0
  65. package/dist/catalog/Catalog/QuickStartCatalogToolbar.d.ts +5 -0
  66. package/dist/catalog/Catalog/index.d.ts +3 -0
  67. package/dist/catalog/QuickStartCatalog.d.ts +8 -0
  68. package/dist/catalog/QuickStartTile.d.ts +14 -0
  69. package/dist/catalog/QuickStartTileDescription.d.ts +8 -0
  70. package/dist/catalog/QuickStartTileFooter.d.ts +8 -0
  71. package/dist/catalog/QuickStartTileFooterExternal.d.ts +8 -0
  72. package/dist/catalog/QuickStartTileHeader.d.ts +24 -0
  73. package/dist/catalog/Toolbar/QuickStartCatalogFilter.d.ts +10 -0
  74. package/dist/catalog/Toolbar/QuickStartCatalogFilterItems.d.ts +31 -0
  75. package/dist/catalog/index.d.ts +9 -0
  76. package/dist/controller/QuickStartConclusion.d.ts +12 -0
  77. package/dist/controller/QuickStartContent.d.ts +14 -0
  78. package/dist/controller/QuickStartFooter.d.ts +14 -0
  79. package/dist/controller/QuickStartIntroduction.d.ts +12 -0
  80. package/dist/controller/QuickStartTaskHeader.d.ts +15 -0
  81. package/dist/controller/QuickStartTaskHeaderList.d.ts +10 -0
  82. package/dist/controller/QuickStartTaskReview.d.ts +10 -0
  83. package/dist/controller/QuickStartTasks.d.ts +12 -0
  84. package/dist/data/mocks/json/explore-pipeline-quickstart.d.ts +2 -0
  85. package/dist/data/mocks/json/explore-serverless-quickstart.d.ts +2 -0
  86. package/dist/data/mocks/json/monitor-sampleapp-quickstart.d.ts +2 -0
  87. package/dist/data/mocks/json/tour-icons.d.ts +2 -0
  88. package/dist/data/quick-start-test-data.d.ts +2 -0
  89. package/dist/data/test-utils.d.ts +8 -0
  90. package/dist/index.d.ts +16 -0
  91. package/dist/index.es.js +2593 -0
  92. package/dist/index.es.js.map +1 -0
  93. package/dist/index.js +2695 -0
  94. package/dist/index.js.map +1 -0
  95. package/dist/patternfly-docs/quick-starts/design-guidelines/design-guidelines.md +105 -0
  96. package/dist/patternfly-docs/quick-starts/design-guidelines/img/card-elements copy.png +0 -0
  97. package/dist/patternfly-docs/quick-starts/design-guidelines/img/card-elements.png +0 -0
  98. package/dist/patternfly-docs/quick-starts/design-guidelines/img/catalog-elements.png +0 -0
  99. package/dist/patternfly-docs/quick-starts/design-guidelines/img/check-your-work.png +0 -0
  100. package/dist/patternfly-docs/quick-starts/design-guidelines/img/introduction-screen.png +0 -0
  101. package/dist/patternfly-docs/quick-starts/design-guidelines/img/mixed-catalog.png +0 -0
  102. package/dist/patternfly-docs/quick-starts/design-guidelines/img/prerequisites.png +0 -0
  103. package/dist/patternfly-docs/quick-starts/design-guidelines/img/qs-context.png +0 -0
  104. package/dist/patternfly-docs/quick-starts/design-guidelines/img/side-panel-elements.png +0 -0
  105. package/dist/patternfly-docs/quick-starts/design-guidelines/img/side-panel-resized.png +0 -0
  106. package/dist/patternfly-docs/quick-starts/design-guidelines/img/side-panel.png +0 -0
  107. package/dist/patternfly-docs/quick-starts/design-guidelines/img/task-no.png +0 -0
  108. package/dist/patternfly-docs/quick-starts/design-guidelines/img/task-yes.png +0 -0
  109. package/dist/patternfly-docs/quick-starts/design-guidelines/img/task.png +0 -0
  110. package/dist/patternfly-docs/quick-starts/examples/Basic.jsx +73 -0
  111. package/dist/patternfly-docs/quick-starts/examples/HelpTopic.jsx +51 -0
  112. package/dist/patternfly-docs/quick-starts/examples/about.md +84 -0
  113. package/dist/patternfly-docs/quick-starts/examples/basic.md +29 -0
  114. package/dist/patternfly-docs/quick-starts/examples/example-data/example-help-topics.js +173 -0
  115. package/dist/patternfly-docs/quick-starts/examples/example-data/example-quickstarts.js +215 -0
  116. package/dist/patternfly-docs/quick-starts/examples/example-data/index.js +15 -0
  117. package/dist/patternfly-docs/quick-starts/examples/help-topics.md +28 -0
  118. package/dist/patternfly-docs/quick-starts/examples/img/catalog.png +0 -0
  119. package/dist/patternfly-docs/quick-starts/examples/img/help-topic.png +0 -0
  120. package/dist/patternfly-docs/quick-starts/examples/img/side-panel.png +0 -0
  121. package/dist/patternfly-global.css +1302 -0
  122. package/dist/patternfly-nested.css +11812 -0
  123. package/dist/quickstarts-base.css +1219 -0
  124. package/dist/quickstarts-full.es.js +31861 -0
  125. package/dist/quickstarts-full.es.js.map +1 -0
  126. package/dist/quickstarts-standalone.css +868 -0
  127. package/dist/quickstarts-standalone.min.css +4 -0
  128. package/dist/quickstarts-vendor.css +165 -0
  129. package/dist/quickstarts.css +1383 -0
  130. package/dist/quickstarts.min.css +1 -0
  131. package/dist/styles/patternfly-global-entry.d.ts +1 -0
  132. package/dist/styles/patternfly-nested-entry.d.ts +1 -0
  133. package/dist/styles/quickstarts-standalone-entry.d.ts +1 -0
  134. package/dist/styles/vendor-entry.d.ts +1 -0
  135. package/dist/utils/PluralResolver.d.ts +16 -0
  136. package/dist/utils/asciidoc-procedure-parser.d.ts +12 -0
  137. package/dist/utils/const.d.ts +6 -0
  138. package/dist/utils/help-topic-context.d.ts +23 -0
  139. package/dist/utils/help-topic-types.d.ts +13 -0
  140. package/dist/utils/quick-start-context.d.ts +81 -0
  141. package/dist/utils/quick-start-types.d.ts +60 -0
  142. package/dist/utils/quick-start-utils.d.ts +10 -0
  143. package/dist/utils/useLocalStorage.d.ts +1 -0
  144. package/dist/vendor.js +2 -0
  145. package/dist/vendor.js.map +1 -0
  146. package/package.json +105 -0
  147. package/src/ConsoleInternal/components/_icon-and-text.scss +14 -0
  148. package/src/ConsoleInternal/components/_markdown-view.scss +19 -0
  149. package/src/ConsoleInternal/components/catalog/_catalog.scss +392 -0
  150. package/src/ConsoleInternal/components/markdown-view.tsx +276 -0
  151. package/src/ConsoleInternal/components/utils/_status-box.scss +58 -0
  152. package/src/ConsoleInternal/components/utils/camel-case-wrap.tsx +33 -0
  153. package/src/ConsoleInternal/components/utils/index.tsx +3 -0
  154. package/src/ConsoleInternal/components/utils/router.ts +45 -0
  155. package/src/ConsoleInternal/components/utils/status-box.tsx +56 -0
  156. package/src/ConsoleInternal/module/k8s/types.ts +53 -0
  157. package/src/ConsoleShared/index.ts +1 -0
  158. package/src/ConsoleShared/src/components/index.ts +7 -0
  159. package/src/ConsoleShared/src/components/layout/PageLayout.scss +29 -0
  160. package/src/ConsoleShared/src/components/markdown-extensions/MarkdownCopyClipboard.tsx +95 -0
  161. package/src/ConsoleShared/src/components/markdown-extensions/__tests__/MarkdownCopyClipboard.spec.tsx +25 -0
  162. package/src/ConsoleShared/src/components/markdown-extensions/__tests__/test-data.ts +5 -0
  163. package/src/ConsoleShared/src/components/markdown-extensions/accordion-extension.tsx +51 -0
  164. package/src/ConsoleShared/src/components/markdown-extensions/accordion-render-extension.tsx +60 -0
  165. package/src/ConsoleShared/src/components/markdown-extensions/admonition-extension.tsx +67 -0
  166. package/src/ConsoleShared/src/components/markdown-extensions/code-extension.tsx +23 -0
  167. package/src/ConsoleShared/src/components/markdown-extensions/const.ts +5 -0
  168. package/src/ConsoleShared/src/components/markdown-extensions/index.ts +7 -0
  169. package/src/ConsoleShared/src/components/markdown-extensions/inline-clipboard-extension.tsx +39 -0
  170. package/src/ConsoleShared/src/components/markdown-extensions/multiline-clipboard-extension.tsx +44 -0
  171. package/src/ConsoleShared/src/components/markdown-extensions/showdown-extension.scss +52 -0
  172. package/src/ConsoleShared/src/components/markdown-extensions/utils.ts +1 -0
  173. package/src/ConsoleShared/src/components/markdown-highlight-extension/MarkdownHighlightExtension.tsx +65 -0
  174. package/src/ConsoleShared/src/components/markdown-highlight-extension/highlight-consts.ts +9 -0
  175. package/src/ConsoleShared/src/components/markdown-highlight-extension/index.ts +1 -0
  176. package/src/ConsoleShared/src/components/modal/Modal.scss +3 -0
  177. package/src/ConsoleShared/src/components/modal/Modal.tsx +19 -0
  178. package/src/ConsoleShared/src/components/modal/index.ts +1 -0
  179. package/src/ConsoleShared/src/components/popper/Portal.tsx +25 -0
  180. package/src/ConsoleShared/src/components/popper/SimplePopper.tsx +92 -0
  181. package/src/ConsoleShared/src/components/popper/index.ts +2 -0
  182. package/src/ConsoleShared/src/components/spotlight/InteractiveSpotlight.tsx +58 -0
  183. package/src/ConsoleShared/src/components/spotlight/Spotlight.tsx +35 -0
  184. package/src/ConsoleShared/src/components/spotlight/StaticSpotlight.tsx +32 -0
  185. package/src/ConsoleShared/src/components/spotlight/index.ts +1 -0
  186. package/src/ConsoleShared/src/components/spotlight/spotlight.scss +63 -0
  187. package/src/ConsoleShared/src/components/status/GenericStatus.tsx +34 -0
  188. package/src/ConsoleShared/src/components/status/NotStartedIcon.tsx +27 -0
  189. package/src/ConsoleShared/src/components/status/PopoverStatus.tsx +39 -0
  190. package/src/ConsoleShared/src/components/status/Status.tsx +38 -0
  191. package/src/ConsoleShared/src/components/status/StatusIconAndText.tsx +42 -0
  192. package/src/ConsoleShared/src/components/status/icons.tsx +39 -0
  193. package/src/ConsoleShared/src/components/status/index.tsx +1 -0
  194. package/src/ConsoleShared/src/components/status/statuses.tsx +20 -0
  195. package/src/ConsoleShared/src/components/status/types.ts +8 -0
  196. package/src/ConsoleShared/src/components/utils/FallbackImg.tsx +20 -0
  197. package/src/ConsoleShared/src/components/utils/index.ts +1 -0
  198. package/src/ConsoleShared/src/constants/index.ts +1 -0
  199. package/src/ConsoleShared/src/constants/ui.ts +1 -0
  200. package/src/ConsoleShared/src/hooks/index.ts +6 -0
  201. package/src/ConsoleShared/src/hooks/scroll.ts +52 -0
  202. package/src/ConsoleShared/src/hooks/useBoundingClientRect.ts +18 -0
  203. package/src/ConsoleShared/src/hooks/useEventListener.ts +14 -0
  204. package/src/ConsoleShared/src/hooks/useForceRender.ts +6 -0
  205. package/src/ConsoleShared/src/hooks/useResizeObserver.ts +19 -0
  206. package/src/ConsoleShared/src/hooks/useScrollShadows.ts +45 -0
  207. package/src/ConsoleShared/src/index.ts +4 -0
  208. package/src/ConsoleShared/src/utils/index.ts +1 -0
  209. package/src/ConsoleShared/src/utils/useCombineRefs.ts +16 -0
  210. package/src/HelpTopicDrawer.tsx +116 -0
  211. package/src/HelpTopicPanelContent.tsx +160 -0
  212. package/src/QuickStartCatalogPage.tsx +195 -0
  213. package/src/QuickStartCloseModal.tsx +47 -0
  214. package/src/QuickStartController.tsx +111 -0
  215. package/src/QuickStartDrawer.scss +11 -0
  216. package/src/QuickStartDrawer.tsx +265 -0
  217. package/src/QuickStartMarkdownView.tsx +80 -0
  218. package/src/QuickStartPanelContent.scss +46 -0
  219. package/src/QuickStartPanelContent.tsx +165 -0
  220. package/src/__tests__/quick-start-utils.spec.tsx +16 -0
  221. package/src/catalog/Catalog/QuickStartCatalogHeader.tsx +18 -0
  222. package/src/catalog/Catalog/QuickStartCatalogSection.tsx +9 -0
  223. package/src/catalog/Catalog/QuickStartCatalogToolbar.tsx +12 -0
  224. package/src/catalog/Catalog/index.ts +3 -0
  225. package/src/catalog/QuickStartCatalog.scss +8 -0
  226. package/src/catalog/QuickStartCatalog.tsx +42 -0
  227. package/src/catalog/QuickStartTile.scss +11 -0
  228. package/src/catalog/QuickStartTile.tsx +129 -0
  229. package/src/catalog/QuickStartTileDescription.scss +29 -0
  230. package/src/catalog/QuickStartTileDescription.tsx +79 -0
  231. package/src/catalog/QuickStartTileFooter.tsx +101 -0
  232. package/src/catalog/QuickStartTileFooterExternal.tsx +40 -0
  233. package/src/catalog/QuickStartTileHeader.scss +16 -0
  234. package/src/catalog/QuickStartTileHeader.tsx +105 -0
  235. package/src/catalog/Toolbar/QuickStartCatalogFilter.scss +25 -0
  236. package/src/catalog/Toolbar/QuickStartCatalogFilter.tsx +32 -0
  237. package/src/catalog/Toolbar/QuickStartCatalogFilterItems.tsx +218 -0
  238. package/src/catalog/__tests__/QuickStartCatalog.spec.tsx +35 -0
  239. package/src/catalog/__tests__/QuickStartTile.spec.tsx +38 -0
  240. package/src/catalog/__tests__/QuickStartTileDescription.spec.tsx +44 -0
  241. package/src/catalog/index.ts +9 -0
  242. package/src/controller/QuickStartConclusion.tsx +63 -0
  243. package/src/controller/QuickStartContent.scss +12 -0
  244. package/src/controller/QuickStartContent.tsx +72 -0
  245. package/src/controller/QuickStartFooter.scss +13 -0
  246. package/src/controller/QuickStartFooter.tsx +124 -0
  247. package/src/controller/QuickStartIntroduction.scss +35 -0
  248. package/src/controller/QuickStartIntroduction.tsx +64 -0
  249. package/src/controller/QuickStartTaskHeader.scss +58 -0
  250. package/src/controller/QuickStartTaskHeader.tsx +125 -0
  251. package/src/controller/QuickStartTaskHeaderList.scss +17 -0
  252. package/src/controller/QuickStartTaskHeaderList.tsx +33 -0
  253. package/src/controller/QuickStartTaskReview.scss +30 -0
  254. package/src/controller/QuickStartTaskReview.tsx +81 -0
  255. package/src/controller/QuickStartTasks.scss +89 -0
  256. package/src/controller/QuickStartTasks.tsx +75 -0
  257. package/src/controller/__tests__/QuickStartConclusion.spec.tsx +95 -0
  258. package/src/controller/__tests__/QuickStartContent.spec.tsx +52 -0
  259. package/src/controller/__tests__/QuickStartFooter.spec.tsx +148 -0
  260. package/src/controller/__tests__/QuickStartTaskHeader.spec.tsx +43 -0
  261. package/src/controller/__tests__/QuickStartTaskReview.spec.tsx +45 -0
  262. package/src/controller/__tests__/QuickStartTasks.spec.tsx +81 -0
  263. package/src/data/mocks/json/explore-pipeline-quickstart.ts +66 -0
  264. package/src/data/mocks/json/explore-serverless-quickstart.ts +90 -0
  265. package/src/data/mocks/json/monitor-sampleapp-quickstart.ts +77 -0
  266. package/src/data/mocks/json/tour-icons.ts +3 -0
  267. package/src/data/mocks/yamls/add-healthchecks-quickstart.yaml +67 -0
  268. package/src/data/mocks/yamls/explore-pipeline-quickstart.yaml +57 -0
  269. package/src/data/mocks/yamls/explore-serverless-quickstart.yaml +83 -0
  270. package/src/data/mocks/yamls/install-associate-pipeline-quickstart.yaml +74 -0
  271. package/src/data/mocks/yamls/monitor-sampleapp-quickstart.yaml +66 -0
  272. package/src/data/mocks/yamls/sample-application-quickstart.yaml +97 -0
  273. package/src/data/mocks/yamls/serverless-application-quickstart.yaml +141 -0
  274. package/src/data/quick-start-test-data.ts +10 -0
  275. package/src/data/test-utils.ts +11 -0
  276. package/src/declaration.d.ts +2 -0
  277. package/src/index.ts +17 -0
  278. package/src/locales/en/quickstart.json +46 -0
  279. package/src/styles/_base.scss +54 -0
  280. package/src/styles/_dark-custom-override.scss +62 -0
  281. package/src/styles/legacy-bootstrap/README.md +21 -0
  282. package/src/styles/legacy-bootstrap/_code.scss +46 -0
  283. package/src/styles/legacy-bootstrap/_tables.scss +38 -0
  284. package/src/styles/legacy-bootstrap/_type.scss +92 -0
  285. package/src/styles/legacy-bootstrap/_variables.scss +48 -0
  286. package/src/styles/legacy-bootstrap.scss +5 -0
  287. package/src/styles/patternfly-global-entry.ts +1 -0
  288. package/src/styles/patternfly-global.scss +28 -0
  289. package/src/styles/patternfly-nested-entry.ts +1 -0
  290. package/src/styles/patternfly-nested.scss +18 -0
  291. package/src/styles/quickstarts-standalone-entry.ts +1 -0
  292. package/src/styles/quickstarts-standalone.scss +7 -0
  293. package/src/styles/style.scss +12 -0
  294. package/src/styles/vendor-entry.ts +1 -0
  295. package/src/styles/vendor.scss +7 -0
  296. package/src/utils/PluralResolver.ts +362 -0
  297. package/src/utils/asciidoc-procedure-parser.ts +130 -0
  298. package/src/utils/const.ts +10 -0
  299. package/src/utils/help-topic-context.tsx +72 -0
  300. package/src/utils/help-topic-types.ts +16 -0
  301. package/src/utils/quick-start-context.tsx +473 -0
  302. package/src/utils/quick-start-types.ts +73 -0
  303. package/src/utils/quick-start-utils.ts +88 -0
  304. package/src/utils/useLocalStorage.ts +38 -0
@@ -0,0 +1,81 @@
1
+ import * as React from 'react';
2
+ import { Alert, Radio } from '@patternfly/react-core';
3
+ import { css } from '@patternfly/react-styles';
4
+ import QuickStartMarkdownView from '../QuickStartMarkdownView';
5
+ import { QuickStartContext, QuickStartContextValues } from '../utils/quick-start-context';
6
+ import {
7
+ QuickStartTaskReview as QuickStartTaskReviewType,
8
+ QuickStartTaskStatus,
9
+ } from '../utils/quick-start-types';
10
+
11
+ import './QuickStartTaskReview.scss';
12
+
13
+ interface QuickStartTaskReviewProps {
14
+ review: QuickStartTaskReviewType;
15
+ taskStatus: QuickStartTaskStatus;
16
+ onTaskReview: (status: QuickStartTaskStatus) => void;
17
+ }
18
+
19
+ const getAlertVariant = (status) => {
20
+ switch (status) {
21
+ case QuickStartTaskStatus.SUCCESS:
22
+ return 'success';
23
+ case QuickStartTaskStatus.FAILED:
24
+ return 'danger';
25
+ default:
26
+ return 'info';
27
+ }
28
+ };
29
+
30
+ const QuickStartTaskReview: React.FC<QuickStartTaskReviewProps> = ({
31
+ review,
32
+ taskStatus,
33
+ onTaskReview,
34
+ }) => {
35
+ const { instructions, failedTaskHelp: taskHelp } = review;
36
+ const { getResource } = React.useContext<QuickStartContextValues>(QuickStartContext);
37
+
38
+ const alertClassNames = css('pfext-quick-start-task-review', {
39
+ 'pfext-quick-start-task-review--success': taskStatus === QuickStartTaskStatus.SUCCESS,
40
+ 'pfext-quick-start-task-review--failed': taskStatus === QuickStartTaskStatus.FAILED,
41
+ });
42
+
43
+ const title = <span className={alertClassNames}>{getResource('Check your work')}</span>;
44
+
45
+ return (
46
+ <Alert
47
+ className="pfext-quick-start-task-review-alert"
48
+ variant={getAlertVariant(taskStatus)}
49
+ title={title}
50
+ isInline
51
+ role="alert"
52
+ >
53
+ <QuickStartMarkdownView content={instructions} />
54
+ <span className="pfext-quick-start-task-review__actions">
55
+ <Radio
56
+ id="review-success"
57
+ name="review-success"
58
+ data-testid="qs-drawer-check-yes"
59
+ label={getResource('Yes')}
60
+ className="pfext-quick-start-task-review__radio"
61
+ isChecked={taskStatus === QuickStartTaskStatus.SUCCESS}
62
+ onChange={() => onTaskReview(QuickStartTaskStatus.SUCCESS)}
63
+ />
64
+ <Radio
65
+ id="review-failed"
66
+ name="review-failed"
67
+ data-testid="qs-drawer-check-no"
68
+ label={getResource('No')}
69
+ className="pfext-quick-start-task-review__radio"
70
+ isChecked={taskStatus === QuickStartTaskStatus.FAILED}
71
+ onChange={() => onTaskReview(QuickStartTaskStatus.FAILED)}
72
+ />
73
+ </span>
74
+ {taskStatus === QuickStartTaskStatus.FAILED && taskHelp && (
75
+ <QuickStartMarkdownView content={taskHelp} exactHeight />
76
+ )}
77
+ </Alert>
78
+ );
79
+ };
80
+
81
+ export default QuickStartTaskReview;
@@ -0,0 +1,89 @@
1
+ .pfext-quick-start-tasks {
2
+ &__list {
3
+ button::before {
4
+ content: none;
5
+ }
6
+
7
+ li {
8
+ &.pf-v5-c-wizard__nav-item {
9
+ list-style-type: none;
10
+ display: flex;
11
+ flex-wrap: wrap;
12
+ align-items: center;
13
+ margin-bottom: var(--pf-v5-global--spacer--xs);
14
+ }
15
+ }
16
+ .pfext-quick-start-task__content {
17
+ margin-bottom: var(--pf-v5-global--spacer--md);
18
+ }
19
+ // Custom styles on PF React List rendered in custom react renderer
20
+ .task-pflist {
21
+ &-title {
22
+ font-size: 14px !important;
23
+ margin-bottom: 6px;
24
+ }
25
+ &-subtitle {
26
+ color: var(--pf-v5-global--Color--200);
27
+ font-size: 16px;
28
+ }
29
+ &-list {
30
+ font-size: 16px;
31
+ &--prereq {
32
+ padding-left: var(--pf-v5-global--spacer--lg);
33
+ li + li {
34
+ margin-top: 4px;
35
+ }
36
+ }
37
+ &--proc {
38
+ padding-left: 10px;
39
+ li + li {
40
+ margin-top: 16px;
41
+ }
42
+ }
43
+ &__item {
44
+ &--prereq {
45
+ &::marker {
46
+ font-size: 0.8rem;
47
+ }
48
+ .task-pflist-list__item__content {
49
+ position: relative;
50
+ left: 2px;
51
+ }
52
+ }
53
+ &--proc {
54
+ font-size: 14px;
55
+ .task-pflist-list__item__content {
56
+ position: relative;
57
+ left: 4px;
58
+ }
59
+ }
60
+ &__content {
61
+ .pf-v5-c-alert {
62
+ // add margins to match design
63
+ margin: var(--pf-v5-global--spacer--md) 0;
64
+ }
65
+ .pf-v5-c-alert__title {
66
+ // remove margins from markdown css
67
+ margin-top: 0;
68
+ margin-bottom: 0;
69
+ // lift PF style specificity to override markdown css
70
+ font-weight: var(--pf-v5-c-alert__title--FontWeight);
71
+ font-family: inherit;
72
+ line-height: inherit;
73
+ color: var(--pf-v5-c-alert__title--Color);
74
+ word-break: break-word;
75
+ }
76
+ .task-pflist-list__item__content__note {
77
+ background-color: var(--pf-v5-global--palette--blue-50);
78
+ border-color: var(--pf-v5-global--active-color--200);
79
+ margin: var(--pf-v5-global--spacer--md) 0;
80
+ &__body {
81
+ font-size: 14px;
82
+ }
83
+ }
84
+ }
85
+ }
86
+ }
87
+ }
88
+ }
89
+ }
@@ -0,0 +1,75 @@
1
+ import * as React from 'react';
2
+ import QuickStartMarkdownView from '../QuickStartMarkdownView';
3
+ import { QUICKSTART_TASKS_INITIAL_STATES } from '../utils/const';
4
+ import { QuickStartContext, QuickStartContextValues } from '../utils/quick-start-context';
5
+ import { QuickStartTask, QuickStartTaskStatus } from '../utils/quick-start-types';
6
+ import TaskHeader from './QuickStartTaskHeader';
7
+ import QuickStartTaskReview from './QuickStartTaskReview';
8
+
9
+ import './QuickStartTasks.scss';
10
+
11
+ interface QuickStartTaskProps {
12
+ tasks: QuickStartTask[];
13
+ taskNumber: number;
14
+ allTaskStatuses: QuickStartTaskStatus[];
15
+ onTaskReview: (reviewState: QuickStartTaskStatus) => void;
16
+ onTaskSelect: (activeQuickStartId) => void;
17
+ }
18
+
19
+ const QuickStartTasks: React.FC<QuickStartTaskProps> = ({
20
+ tasks,
21
+ taskNumber,
22
+ allTaskStatuses,
23
+ onTaskReview,
24
+ onTaskSelect,
25
+ }) => {
26
+ const { getResource, alwaysShowTaskReview } = React.useContext<QuickStartContextValues>(
27
+ QuickStartContext,
28
+ );
29
+ return (
30
+ <div className="pfext-quick-start-tasks__list">
31
+ <ul>
32
+ {tasks
33
+ .filter((_, index) => allTaskStatuses[index] !== QuickStartTaskStatus.INIT)
34
+ .map((task, index) => {
35
+ const { title, description, review } = task;
36
+ const isActiveTask = index === taskNumber;
37
+ const taskStatus = allTaskStatuses[index];
38
+ const shouldShowTaskReview =
39
+ (!QUICKSTART_TASKS_INITIAL_STATES.includes(taskStatus) || alwaysShowTaskReview) &&
40
+ review;
41
+ return (
42
+ <React.Fragment key={title}>
43
+ <TaskHeader
44
+ taskIndex={index + 1}
45
+ title={title}
46
+ size="md"
47
+ subtitle={getResource('{{index, number}} of {{tasks, number}}')
48
+ .replace('{{index, number}}', index + 1)
49
+ .replace('{{tasks, number}}', tasks.length)}
50
+ taskStatus={taskStatus}
51
+ isActiveTask={isActiveTask}
52
+ onTaskSelect={onTaskSelect}
53
+ >
54
+ {isActiveTask && (
55
+ <div className="pfext-quick-start-task__content">
56
+ <QuickStartMarkdownView content={description} />
57
+ {shouldShowTaskReview && (
58
+ <QuickStartTaskReview
59
+ review={review}
60
+ taskStatus={taskStatus}
61
+ onTaskReview={onTaskReview}
62
+ />
63
+ )}
64
+ </div>
65
+ )}
66
+ </TaskHeader>
67
+ </React.Fragment>
68
+ );
69
+ })}
70
+ </ul>
71
+ </div>
72
+ );
73
+ };
74
+
75
+ export default QuickStartTasks;
@@ -0,0 +1,95 @@
1
+ import * as React from 'react';
2
+ import { Button } from '@patternfly/react-core';
3
+ import { ShallowWrapper, shallow } from 'enzyme';
4
+ import { allQuickStarts } from '../../data/quick-start-test-data';
5
+ import QuickStartMarkdownView from '../../QuickStartMarkdownView';
6
+ import { QuickStartTaskStatus } from '../../utils/quick-start-types';
7
+ import { getQuickStartByName } from '../../utils/quick-start-utils';
8
+ import QuickStartConclusion from '../QuickStartConclusion';
9
+
10
+ jest.mock('react', () => {
11
+ const ActualReact = require.requireActual('react');
12
+ return {
13
+ ...ActualReact,
14
+ useContext: () => jest.fn(),
15
+ };
16
+ });
17
+
18
+ const i18nNS = 'quickstart';
19
+
20
+ type QuickStartConclusionProps = React.ComponentProps<typeof QuickStartConclusion>;
21
+ let wrapper: ShallowWrapper<QuickStartConclusionProps>;
22
+ const props: QuickStartConclusionProps = {
23
+ tasks: getQuickStartByName('explore-pipelines', allQuickStarts).spec.tasks,
24
+ allTaskStatuses: [
25
+ QuickStartTaskStatus.SUCCESS,
26
+ QuickStartTaskStatus.SUCCESS,
27
+ QuickStartTaskStatus.SUCCESS,
28
+ ],
29
+ conclusion: 'conclusion',
30
+ onTaskSelect: jest.fn(),
31
+ onQuickStartChange: jest.fn(),
32
+ };
33
+
34
+ describe('QuickStartConclusion', () => {
35
+ beforeEach(() => {
36
+ spyOn(React, 'useContext').and.returnValue({
37
+ activeQuickStartID: '',
38
+ startQuickStart: () => {},
39
+ restartQuickStart: () => {},
40
+ getResource: (key) => `quickstart~${key}`,
41
+ });
42
+ wrapper = shallow(<QuickStartConclusion {...props} />);
43
+ });
44
+
45
+ it('should render conclusion if there are no failed tasks', () => {
46
+ expect(
47
+ wrapper
48
+ .find(QuickStartMarkdownView)
49
+ .first()
50
+ .props().content,
51
+ ).toEqual('conclusion');
52
+ });
53
+
54
+ it('should render link for next quick start if nextQuickStart prop is available and there are no failed tasks', () => {
55
+ wrapper = shallow(
56
+ <QuickStartConclusion
57
+ {...props}
58
+ nextQuickStarts={[getQuickStartByName('explore-pipelines', allQuickStarts)]}
59
+ />,
60
+ );
61
+ expect(
62
+ wrapper
63
+ .find(Button)
64
+ .at(0)
65
+ .props().children[0],
66
+ ).toEqual(`${i18nNS}~Start Installing the Pipelines Operator quick start`);
67
+ });
68
+
69
+ it('should not render link for next quick start if nextQuickStart props is not available', () => {
70
+ expect(wrapper.find(Button).length).toBe(0);
71
+ });
72
+
73
+ it('should not render conclusion, link for next quick start and should render message for retrying if there are failed tasks', () => {
74
+ wrapper = shallow(
75
+ <QuickStartConclusion
76
+ {...props}
77
+ nextQuickStart={getQuickStartByName('explore-pipelines', allQuickStarts)}
78
+ allTaskStatuses={[
79
+ QuickStartTaskStatus.FAILED,
80
+ QuickStartTaskStatus.SUCCESS,
81
+ QuickStartTaskStatus.SUCCESS,
82
+ ]}
83
+ />,
84
+ );
85
+ expect(
86
+ wrapper
87
+ .find(QuickStartMarkdownView)
88
+ .first()
89
+ .props().content,
90
+ ).toEqual(
91
+ `${i18nNS}~One or more verifications did not pass during this quick start. Revisit the tasks or the help links, and then try again.`,
92
+ );
93
+ expect(wrapper.find(Button).length).toBe(0);
94
+ });
95
+ });
@@ -0,0 +1,52 @@
1
+ import * as React from 'react';
2
+ import { ShallowWrapper, shallow } from 'enzyme';
3
+ import { allQuickStarts } from '../../data/quick-start-test-data';
4
+ import { QuickStartTaskStatus } from '../../utils/quick-start-types';
5
+ import { getQuickStartByName } from '../../utils/quick-start-utils';
6
+ import QuickStartConclusion from '../QuickStartConclusion';
7
+ import QuickStartContent from '../QuickStartContent';
8
+ import QuickStartIntroduction from '../QuickStartIntroduction';
9
+ import QuickStartTasks from '../QuickStartTasks';
10
+
11
+ type QuickStartContentProps = React.ComponentProps<typeof QuickStartContent>;
12
+
13
+ let wrapper: ShallowWrapper<QuickStartContentProps>;
14
+
15
+ const props: QuickStartContentProps = {
16
+ quickStart: getQuickStartByName('explore-serverless', allQuickStarts),
17
+ allTaskStatuses: [
18
+ QuickStartTaskStatus.INIT,
19
+ QuickStartTaskStatus.INIT,
20
+ QuickStartTaskStatus.INIT,
21
+ ],
22
+ taskNumber: -1,
23
+ onTaskReview: jest.fn(),
24
+ onTaskSelect: jest.fn(),
25
+ onQuickStartChange: jest.fn(),
26
+ };
27
+
28
+ describe('QuickStartContent', () => {
29
+ beforeEach(() => {
30
+ wrapper = shallow(<QuickStartContent {...props} />);
31
+ });
32
+
33
+ it('should render QuickStartIntroduction when the tour status is Not Started', () => {
34
+ expect(wrapper.find(QuickStartIntroduction).length).toBe(1);
35
+ expect(wrapper.find(QuickStartTasks).length).toBe(0);
36
+ expect(wrapper.find(QuickStartConclusion).length).toBe(0);
37
+ });
38
+
39
+ it('should render QuickStartTasks when the tour is In Progress', () => {
40
+ wrapper = shallow(<QuickStartContent {...props} taskNumber={1} />);
41
+ expect(wrapper.find(QuickStartIntroduction).length).toBe(0);
42
+ expect(wrapper.find(QuickStartTasks).length).toBe(1);
43
+ expect(wrapper.find(QuickStartConclusion).length).toBe(0);
44
+ });
45
+
46
+ it('should render QuickStartConclusion when the tour is Complete', () => {
47
+ wrapper = shallow(<QuickStartContent {...props} taskNumber={2} />);
48
+ expect(wrapper.find(QuickStartIntroduction).length).toBe(0);
49
+ expect(wrapper.find(QuickStartTasks).length).toBe(0);
50
+ expect(wrapper.find(QuickStartConclusion).length).toBe(1);
51
+ });
52
+ });
@@ -0,0 +1,148 @@
1
+ import * as React from 'react';
2
+ import { Button } from '@patternfly/react-core';
3
+ import { shallow } from 'enzyme';
4
+ import { QuickStartStatus } from '../../utils/quick-start-types';
5
+ import QuickStartFooter from '../QuickStartFooter';
6
+
7
+ jest.mock('react', () => {
8
+ const ActualReact = require.requireActual('react');
9
+ return {
10
+ ...ActualReact,
11
+ useContext: () => jest.fn(),
12
+ };
13
+ });
14
+
15
+ describe('QuickStartFooter', () => {
16
+ type QuickStartFooterProps = React.ComponentProps<typeof QuickStartFooter>;
17
+ let quickStartFooterProps: QuickStartFooterProps;
18
+ beforeEach(() => {
19
+ spyOn(React, 'useContext').and.returnValue({
20
+ activeQuickStartID: '',
21
+ startQuickStart: () => {},
22
+ restartQuickStart: () => {},
23
+ getResource: (key) => `quickstart~${key}`,
24
+ });
25
+ });
26
+
27
+ it('should load Start button for not started tours', () => {
28
+ quickStartFooterProps = {
29
+ status: QuickStartStatus.NOT_STARTED,
30
+ footerClass: 'test',
31
+ quickStartId: 'test-quickstart',
32
+ onNext: () => null,
33
+ onBack: () => null,
34
+ totalTasks: 4,
35
+ taskNumber: -1,
36
+ };
37
+
38
+ const quickStartFooterWrapper = shallow(<QuickStartFooter {...quickStartFooterProps} />);
39
+ const footerButtons = quickStartFooterWrapper.find(Button);
40
+ expect(footerButtons.exists()).toBeTruthy();
41
+ expect(footerButtons.length).toEqual(1);
42
+ expect(
43
+ footerButtons
44
+ .at(0)
45
+ .childAt(0)
46
+ .text(),
47
+ ).toBe('quickstart~Start');
48
+ });
49
+
50
+ it('should load Continue and Restart buttons for in progress tours at into page', () => {
51
+ quickStartFooterProps = {
52
+ status: QuickStartStatus.IN_PROGRESS,
53
+ footerClass: 'test',
54
+ quickStartId: 'test-quickstart',
55
+ onNext: () => null,
56
+ onBack: () => null,
57
+ totalTasks: 4,
58
+ taskNumber: -1,
59
+ };
60
+
61
+ const quickStartFooterWrapper = shallow(<QuickStartFooter {...quickStartFooterProps} />);
62
+ const footerButtons = quickStartFooterWrapper.find(Button);
63
+ expect(footerButtons.exists()).toBeTruthy();
64
+ expect(footerButtons.length).toEqual(2);
65
+ expect(
66
+ footerButtons
67
+ .at(0)
68
+ .childAt(0)
69
+ .text(),
70
+ ).toBe('quickstart~Continue');
71
+ expect(
72
+ footerButtons
73
+ .at(1)
74
+ .childAt(0)
75
+ .text(),
76
+ ).toBe('quickstart~Restart');
77
+ });
78
+
79
+ it('should load Next and Back buttons, and Restart link for in progress tours in task page', () => {
80
+ quickStartFooterProps = {
81
+ status: QuickStartStatus.IN_PROGRESS,
82
+ footerClass: 'test',
83
+ quickStartId: 'test-quickstart',
84
+ onNext: () => null,
85
+ onBack: () => null,
86
+ totalTasks: 4,
87
+ taskNumber: 2,
88
+ };
89
+
90
+ const quickStartFooterWrapper = shallow(<QuickStartFooter {...quickStartFooterProps} />);
91
+ const footerButtons = quickStartFooterWrapper.find(Button);
92
+ expect(footerButtons.exists()).toBeTruthy();
93
+ expect(footerButtons.length).toEqual(3);
94
+ expect(
95
+ footerButtons
96
+ .at(0)
97
+ .childAt(0)
98
+ .text(),
99
+ ).toBe('quickstart~Next');
100
+ expect(
101
+ footerButtons
102
+ .at(1)
103
+ .childAt(0)
104
+ .text(),
105
+ ).toBe('quickstart~Back');
106
+ expect(
107
+ footerButtons
108
+ .at(2)
109
+ .childAt(0)
110
+ .text(),
111
+ ).toBe('quickstart~Restart');
112
+ });
113
+
114
+ it('should load Close, Back and Restart buttons for completed tours in conclusion page', () => {
115
+ quickStartFooterProps = {
116
+ status: QuickStartStatus.COMPLETE,
117
+ footerClass: 'test',
118
+ quickStartId: 'test-quickstart',
119
+ onNext: () => null,
120
+ onBack: () => null,
121
+ totalTasks: 4,
122
+ taskNumber: 4,
123
+ };
124
+
125
+ const quickStartFooterWrapper = shallow(<QuickStartFooter {...quickStartFooterProps} />);
126
+ const footerButtons = quickStartFooterWrapper.find(Button);
127
+ expect(footerButtons.exists()).toBeTruthy();
128
+ expect(footerButtons.length).toEqual(3);
129
+ expect(
130
+ footerButtons
131
+ .at(0)
132
+ .childAt(0)
133
+ .text(),
134
+ ).toBe('quickstart~Close');
135
+ expect(
136
+ footerButtons
137
+ .at(1)
138
+ .childAt(0)
139
+ .text(),
140
+ ).toBe('quickstart~Back');
141
+ expect(
142
+ footerButtons
143
+ .at(2)
144
+ .childAt(0)
145
+ .text(),
146
+ ).toBe('quickstart~Restart');
147
+ });
148
+ });
@@ -0,0 +1,43 @@
1
+ import * as React from 'react';
2
+ import { Title, WizardNavItem } from '@patternfly/react-core';
3
+ import { ShallowWrapper, shallow } from 'enzyme';
4
+ import { QuickStartTaskStatus } from '../../utils/quick-start-types';
5
+ import QuickStartTaskHeader from '../QuickStartTaskHeader';
6
+
7
+ type QuickStartTaskHeaderProps = React.ComponentProps<typeof QuickStartTaskHeader>;
8
+ let wrapper: ShallowWrapper<QuickStartTaskHeaderProps>;
9
+ const props: QuickStartTaskHeaderProps = {
10
+ title: 'title',
11
+ taskIndex: 1,
12
+ subtitle: 'subtitle',
13
+ taskStatus: QuickStartTaskStatus.INIT,
14
+ size: 'lg',
15
+ isActiveTask: true,
16
+ onTaskSelect: jest.fn(),
17
+ };
18
+
19
+ describe('QuickStartTaskHeader', () => {
20
+ beforeEach(() => {
21
+ // DOMPurify.addHook = jest.fn();
22
+ wrapper = shallow(<QuickStartTaskHeader {...props} />);
23
+ });
24
+
25
+ it('should render subtitle for active task', () => {
26
+ expect(wrapper.find(WizardNavItem).dive().find(Title).length).toBe(1);
27
+ expect(
28
+ wrapper.find(WizardNavItem).dive().find('[data-test-id="quick-start-task-subtitle"]').props()
29
+ .children,
30
+ ).toEqual([' ', props.subtitle]);
31
+ });
32
+ it('should not render subtitle if task is not active', () => {
33
+ wrapper = shallow(<QuickStartTaskHeader {...props} isActiveTask={false} />);
34
+ expect(wrapper.find(WizardNavItem).dive().find(Title).length).toBe(1);
35
+ expect(
36
+ wrapper
37
+ .find(WizardNavItem)
38
+ .dive()
39
+ .find('[data-test-id="quick-start-task-subtitle"]')
40
+ .exists(),
41
+ ).toBe(false);
42
+ });
43
+ });
@@ -0,0 +1,45 @@
1
+ import * as React from 'react';
2
+ import { Alert } from '@patternfly/react-core';
3
+ import { ShallowWrapper, shallow } from 'enzyme';
4
+ import { allQuickStarts } from '../../data/quick-start-test-data';
5
+ import QuickStartMarkdownView from '../../QuickStartMarkdownView';
6
+ import { QuickStartTaskStatus } from '../../utils/quick-start-types';
7
+ import { getQuickStartByName } from '../../utils/quick-start-utils';
8
+ import QuickStartTaskReview from '../QuickStartTaskReview';
9
+
10
+ type QuickStartTaskReviewProps = React.ComponentProps<typeof QuickStartTaskReview>;
11
+ let wrapper: ShallowWrapper<QuickStartTaskReviewProps>;
12
+ const props: QuickStartTaskReviewProps = {
13
+ review: getQuickStartByName('explore-serverless', allQuickStarts).spec.tasks[0].review,
14
+ taskStatus: QuickStartTaskStatus.REVIEW,
15
+ onTaskReview: jest.fn(),
16
+ };
17
+
18
+ describe('QuickStartTaskReview', () => {
19
+ it('should render alert with info variant when task status is review', () => {
20
+ wrapper = shallow(<QuickStartTaskReview {...props} />);
21
+ expect(wrapper.find(Alert).props().variant).toBe('info');
22
+ });
23
+
24
+ it('should render alert with success variant when task status is success', () => {
25
+ props.taskStatus = QuickStartTaskStatus.SUCCESS;
26
+ wrapper = shallow(<QuickStartTaskReview {...props} />);
27
+ expect(wrapper.find(Alert).props().variant).toBe('success');
28
+ });
29
+
30
+ it('should render alert with danger variant when task status is failed', () => {
31
+ props.taskStatus = QuickStartTaskStatus.FAILED;
32
+ wrapper = shallow(<QuickStartTaskReview {...props} />);
33
+ expect(wrapper.find(Alert).props().variant).toBe('danger');
34
+ });
35
+
36
+ it('should render task help in markdown when task status is failed', () => {
37
+ wrapper = shallow(<QuickStartTaskReview {...props} />);
38
+ expect(
39
+ wrapper
40
+ .find(QuickStartMarkdownView)
41
+ .at(1)
42
+ .props().content,
43
+ ).toEqual(props.review.failedTaskHelp);
44
+ });
45
+ });