@stoplight/elements-core 9.0.16-beta-0.3 → 9.0.17

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 (415) hide show
  1. package/{dist/index.esm.js → index.esm.js} +34 -46
  2. package/{dist/index.js → index.js} +33 -45
  3. package/{dist/index.mjs → index.mjs} +34 -46
  4. package/package.json +14 -74
  5. package/.storybook/main.js +0 -6
  6. package/.storybook/manager.js +0 -1
  7. package/.storybook/preview.jsx +0 -50
  8. package/dist/LICENSE +0 -190
  9. package/dist/README.md +0 -1
  10. package/dist/package.json +0 -64
  11. package/jest.config.js +0 -10
  12. package/src/__fixtures__/articles/basic.md +0 -10
  13. package/src/__fixtures__/articles/kitchen-sink.md +0 -318
  14. package/src/__fixtures__/articles/long-page-heading.md +0 -955
  15. package/src/__fixtures__/articles/multiple-try-its.md +0 -54
  16. package/src/__fixtures__/articles/schema-with-refs.ts +0 -82
  17. package/src/__fixtures__/http-request.json +0 -11
  18. package/src/__fixtures__/models/model-with-no-examples.json +0 -15
  19. package/src/__fixtures__/models/model-with-one-example.json +0 -23
  20. package/src/__fixtures__/models/model-with-three-examples.json +0 -35
  21. package/src/__fixtures__/operations/application-octet-stream-post.ts +0 -39
  22. package/src/__fixtures__/operations/base64-file-upload.ts +0 -43
  23. package/src/__fixtures__/operations/big-response.ts +0 -4690
  24. package/src/__fixtures__/operations/bundled-parameter.ts +0 -128
  25. package/src/__fixtures__/operations/empty-response.ts +0 -15
  26. package/src/__fixtures__/operations/examples-request-body.ts +0 -135
  27. package/src/__fixtures__/operations/head-todos.ts +0 -49
  28. package/src/__fixtures__/operations/invalid-response-example.ts +0 -45
  29. package/src/__fixtures__/operations/multipart-formdata-post.ts +0 -61
  30. package/src/__fixtures__/operations/operation-minimal.ts +0 -11
  31. package/src/__fixtures__/operations/operation-parameters.ts +0 -337
  32. package/src/__fixtures__/operations/operation-with-examples.ts +0 -113
  33. package/src/__fixtures__/operations/operation-without-servers.ts +0 -16
  34. package/src/__fixtures__/operations/patch-todos.ts +0 -49
  35. package/src/__fixtures__/operations/put-todos.ts +0 -862
  36. package/src/__fixtures__/operations/referenced-body.ts +0 -62
  37. package/src/__fixtures__/operations/request-body-empty-schema.ts +0 -35
  38. package/src/__fixtures__/operations/request-body.ts +0 -62
  39. package/src/__fixtures__/operations/securedOperation.ts +0 -118
  40. package/src/__fixtures__/operations/security-basic.ts +0 -24
  41. package/src/__fixtures__/operations/security-bearer.ts +0 -25
  42. package/src/__fixtures__/operations/simple-get.ts +0 -17
  43. package/src/__fixtures__/operations/simple.ts +0 -103
  44. package/src/__fixtures__/operations/string-numeric-enums.ts +0 -32
  45. package/src/__fixtures__/operations/urlencoded-post-oneof.ts +0 -81
  46. package/src/__fixtures__/operations/urlencoded-post.ts +0 -54
  47. package/src/__fixtures__/operations/vendor-extensions.ts +0 -337
  48. package/src/__fixtures__/operations/with-url-variables.ts +0 -47
  49. package/src/__fixtures__/operations/x-code-samples.ts +0 -348
  50. package/src/__fixtures__/schemas/circular.ts +0 -1906
  51. package/src/__fixtures__/schemas/contact.json +0 -293
  52. package/src/__fixtures__/schemas/media-entry.json +0 -69
  53. package/src/__fixtures__/schemas/simple.json +0 -27
  54. package/src/__fixtures__/schemas/todo-full.v1.json +0 -35
  55. package/src/__fixtures__/schemas/todo-partial.v1.json +0 -14
  56. package/src/__fixtures__/schemas/user.v1.json +0 -17
  57. package/src/__fixtures__/security-schemes/index.ts +0 -38
  58. package/src/__fixtures__/services/petstore.ts +0 -167
  59. package/src/__fixtures__/services/with-unnamed-servers.ts +0 -38
  60. package/src/__fixtures__/services/with-url-variables.ts +0 -83
  61. package/src/__fixtures__/services/without-origin.ts +0 -20
  62. package/src/__fixtures__/table-of-contents/nested.ts +0 -44
  63. package/src/__fixtures__/table-of-contents/studio-template.ts +0 -100
  64. package/src/__fixtures__/table-of-contents/studio.ts +0 -559
  65. package/src/components/Docs/Article/Article.spec.tsx +0 -38
  66. package/src/components/Docs/Article/Article.stories.tsx +0 -17
  67. package/src/components/Docs/Article/index.tsx +0 -38
  68. package/src/components/Docs/Docs.stories.tsx +0 -33
  69. package/src/components/Docs/Docs.tsx +0 -233
  70. package/src/components/Docs/HttpOperation/Badges.tsx +0 -49
  71. package/src/components/Docs/HttpOperation/Body.tsx +0 -79
  72. package/src/components/Docs/HttpOperation/Callbacks.tsx +0 -89
  73. package/src/components/Docs/HttpOperation/HttpOperation.spec.tsx +0 -787
  74. package/src/components/Docs/HttpOperation/HttpOperation.stories.ts +0 -14
  75. package/src/components/Docs/HttpOperation/HttpOperation.tsx +0 -255
  76. package/src/components/Docs/HttpOperation/Parameters.spec.tsx +0 -101
  77. package/src/components/Docs/HttpOperation/Parameters.tsx +0 -118
  78. package/src/components/Docs/HttpOperation/Request.tsx +0 -140
  79. package/src/components/Docs/HttpOperation/Responses.tsx +0 -247
  80. package/src/components/Docs/HttpOperation/index.ts +0 -1
  81. package/src/components/Docs/HttpService/AdditionalInfo.stories.ts +0 -48
  82. package/src/components/Docs/HttpService/AdditionalInfo.tsx +0 -61
  83. package/src/components/Docs/HttpService/ExportButton.tsx +0 -35
  84. package/src/components/Docs/HttpService/HttpService.spec.tsx +0 -429
  85. package/src/components/Docs/HttpService/HttpService.stories.ts +0 -14
  86. package/src/components/Docs/HttpService/HttpService.tsx +0 -99
  87. package/src/components/Docs/HttpService/SecuritySchemes.tsx +0 -82
  88. package/src/components/Docs/HttpService/ServerInfo.tsx +0 -196
  89. package/src/components/Docs/HttpService/index.ts +0 -1
  90. package/src/components/Docs/Model/Model.spec.tsx +0 -241
  91. package/src/components/Docs/Model/Model.stories.tsx +0 -16
  92. package/src/components/Docs/Model/Model.tsx +0 -160
  93. package/src/components/Docs/Model/index.ts +0 -1
  94. package/src/components/Docs/NodeVendorExtensions.tsx +0 -55
  95. package/src/components/Docs/Sections.tsx +0 -54
  96. package/src/components/Docs/Security/PanelContent.tsx +0 -38
  97. package/src/components/Docs/Security/index.ts +0 -1
  98. package/src/components/Docs/Skeleton.tsx +0 -12
  99. package/src/components/Docs/TwoColumnLayout.tsx +0 -28
  100. package/src/components/Docs/index.ts +0 -1
  101. package/src/components/Docs/story-helper.ts +0 -46
  102. package/src/components/Docs/story-renderer-helper.tsx +0 -56
  103. package/src/components/Layout/MobileTopNav.tsx +0 -78
  104. package/src/components/Layout/ResponsiveSidebarLayout.tsx +0 -175
  105. package/src/components/Layout/SidebarLayout.tsx +0 -107
  106. package/src/components/LinkHeading.tsx +0 -21
  107. package/src/components/LoadMore.tsx +0 -20
  108. package/src/components/Loading/Loading.tsx +0 -9
  109. package/src/components/Logo.tsx +0 -25
  110. package/src/components/MarkdownViewer/CustomComponents/CodeComponent.spec.ts +0 -90
  111. package/src/components/MarkdownViewer/CustomComponents/CodeComponent.tsx +0 -164
  112. package/src/components/MarkdownViewer/CustomComponents/Provider.tsx +0 -20
  113. package/src/components/MarkdownViewer/CustomComponents/ReactRouterLink.tsx +0 -27
  114. package/src/components/MarkdownViewer/CustomComponents/ResolvedImage.tsx +0 -86
  115. package/src/components/MarkdownViewer/CustomComponents/ScrollToHashElement.tsx +0 -96
  116. package/src/components/MarkdownViewer/MarkdownViewer.spec.tsx +0 -170
  117. package/src/components/MarkdownViewer/index.tsx +0 -10
  118. package/src/components/NonIdealState.tsx +0 -20
  119. package/src/components/PoweredByLink.tsx +0 -30
  120. package/src/components/RequestSamples/RequestSamples.stories.tsx +0 -67
  121. package/src/components/RequestSamples/RequestSamples.tsx +0 -246
  122. package/src/components/RequestSamples/__tests__/RequestSamples.test.tsx +0 -131
  123. package/src/components/RequestSamples/__tests__/__snapshots__/convertRequestToSample.spec.ts.snap +0 -746
  124. package/src/components/RequestSamples/__tests__/convertRequestToSample.spec.ts +0 -118
  125. package/src/components/RequestSamples/convertRequestToSample.ts +0 -56
  126. package/src/components/RequestSamples/extractCodeSamples.ts +0 -50
  127. package/src/components/RequestSamples/index.ts +0 -2
  128. package/src/components/RequestSamples/requestSampleConfigs.ts +0 -182
  129. package/src/components/ResponseExamples/ResponseExamples.spec.tsx +0 -121
  130. package/src/components/ResponseExamples/ResponseExamples.stories.tsx +0 -21
  131. package/src/components/ResponseExamples/ResponseExamples.tsx +0 -79
  132. package/src/components/TableOfContents/TableOfContents.spec.tsx +0 -316
  133. package/src/components/TableOfContents/TableOfContents.stories.tsx +0 -136
  134. package/src/components/TableOfContents/TableOfContents.tsx +0 -530
  135. package/src/components/TableOfContents/constants.ts +0 -45
  136. package/src/components/TableOfContents/index.ts +0 -2
  137. package/src/components/TableOfContents/types.ts +0 -59
  138. package/src/components/TableOfContents/utils.ts +0 -84
  139. package/src/components/TryIt/Auth/APIKeyAuth.tsx +0 -19
  140. package/src/components/TryIt/Auth/Auth.tsx +0 -169
  141. package/src/components/TryIt/Auth/AuthTokenInput.tsx +0 -37
  142. package/src/components/TryIt/Auth/BasicAuth.tsx +0 -62
  143. package/src/components/TryIt/Auth/BearerAuth.tsx +0 -19
  144. package/src/components/TryIt/Auth/DigestAuth.tsx +0 -35
  145. package/src/components/TryIt/Auth/OAuth2Auth.tsx +0 -19
  146. package/src/components/TryIt/Auth/authentication-utils.ts +0 -113
  147. package/src/components/TryIt/Body/BinaryBody.tsx +0 -52
  148. package/src/components/TryIt/Body/FormDataBody.tsx +0 -145
  149. package/src/components/TryIt/Body/RequestBody.tsx +0 -71
  150. package/src/components/TryIt/Body/__tests__/BinaryBody.test.tsx +0 -29
  151. package/src/components/TryIt/Body/__tests__/FormDataBody.test.tsx +0 -94
  152. package/src/components/TryIt/Body/request-body-utils.ts +0 -127
  153. package/src/components/TryIt/Body/useTextRequestBodyState.ts +0 -27
  154. package/src/components/TryIt/Mocking/MockingButton.tsx +0 -98
  155. package/src/components/TryIt/Mocking/mocking-utils.ts +0 -56
  156. package/src/components/TryIt/Mocking/useMockingOptions.ts +0 -6
  157. package/src/components/TryIt/Parameters/FileUploadParameterEditors.tsx +0 -62
  158. package/src/components/TryIt/Parameters/OperationParameters.tsx +0 -39
  159. package/src/components/TryIt/Parameters/ParameterEditor.tsx +0 -135
  160. package/src/components/TryIt/Parameters/__tests__/parameter-utils.spec.ts +0 -60
  161. package/src/components/TryIt/Parameters/parameter-utils.spec.ts +0 -118
  162. package/src/components/TryIt/Parameters/parameter-utils.ts +0 -245
  163. package/src/components/TryIt/Parameters/useOperationParameters.ts +0 -60
  164. package/src/components/TryIt/Response/ReponseCodeViewer.tsx +0 -28
  165. package/src/components/TryIt/Response/Response.spec.tsx +0 -174
  166. package/src/components/TryIt/Response/Response.tsx +0 -172
  167. package/src/components/TryIt/Response/hooks/useLineCount.ts +0 -7
  168. package/src/components/TryIt/Servers/ServerVariables.tsx +0 -33
  169. package/src/components/TryIt/Servers/ServersDropdown.tsx +0 -53
  170. package/src/components/TryIt/Servers/VariableEditor.tsx +0 -64
  171. package/src/components/TryIt/Servers/useServerVariables.ts +0 -19
  172. package/src/components/TryIt/TryIt.spec.tsx +0 -1511
  173. package/src/components/TryIt/TryIt.stories.tsx +0 -77
  174. package/src/components/TryIt/TryIt.tsx +0 -384
  175. package/src/components/TryIt/TryItWithRequestSamples.spec.tsx +0 -143
  176. package/src/components/TryIt/TryItWithRequestSamples.stories.tsx +0 -32
  177. package/src/components/TryIt/TryItWithRequestSamples.tsx +0 -42
  178. package/src/components/TryIt/build-request.spec.ts +0 -261
  179. package/src/components/TryIt/build-request.ts +0 -358
  180. package/src/components/TryIt/chosenServer.ts +0 -5
  181. package/src/components/TryIt/index.ts +0 -3
  182. package/src/components/__tests__/LinkHeading.spec.tsx +0 -125
  183. package/src/constants.ts +0 -176
  184. package/src/containers/MockingProvider.tsx +0 -23
  185. package/src/context/InlineRefResolver.spec.tsx +0 -183
  186. package/src/context/InlineRefResolver.tsx +0 -94
  187. package/src/context/Options.tsx +0 -27
  188. package/src/context/Persistence.tsx +0 -24
  189. package/src/context/RouterType.tsx +0 -9
  190. package/src/core.css +0 -97
  191. package/src/hoc/utils.ts +0 -5
  192. package/src/hoc/withMosaicProvider.spec.tsx +0 -48
  193. package/src/hoc/withMosaicProvider.tsx +0 -28
  194. package/src/hoc/withQueryClientProvider.spec.tsx +0 -38
  195. package/src/hoc/withQueryClientProvider.tsx +0 -35
  196. package/src/hoc/withRouter.tsx +0 -71
  197. package/src/hooks/useBundleRefsIntoDocument.ts +0 -60
  198. package/src/hooks/useFirstRender.ts +0 -8
  199. package/src/hooks/useIsCompact.ts +0 -26
  200. package/src/hooks/useParsedData.ts +0 -99
  201. package/src/hooks/useParsedValue.ts +0 -19
  202. package/src/hooks/useResponsiveLayout.tsx +0 -51
  203. package/src/hooks/useRouter.tsx +0 -31
  204. package/src/hooks/useUniqueId.ts +0 -4
  205. package/src/index.ts +0 -48
  206. package/src/styled.tsx +0 -22
  207. package/src/styles.css +0 -4
  208. package/src/types.ts +0 -170
  209. package/src/utils/__tests__/securitySchemes.spec.ts +0 -137
  210. package/src/utils/exampleGeneration/exampleGeneration.spec.tsx +0 -18
  211. package/src/utils/exampleGeneration/exampleGeneration.ts +0 -110
  212. package/src/utils/fileToBase64.ts +0 -11
  213. package/src/utils/guards.ts +0 -48
  214. package/src/utils/headers.ts +0 -316
  215. package/src/utils/http-spec/IServer.ts +0 -100
  216. package/src/utils/http-spec/__tests__/IServer.spec.ts +0 -51
  217. package/src/utils/http-spec/examples.ts +0 -5
  218. package/src/utils/http.ts +0 -9
  219. package/src/utils/jotai/persistAtom.ts +0 -31
  220. package/src/utils/node.ts +0 -19
  221. package/src/utils/oas/__tests__/security.spec.ts +0 -18
  222. package/src/utils/oas/security.ts +0 -76
  223. package/src/utils/ref-resolving/ReferenceResolver.ts +0 -29
  224. package/src/utils/ref-resolving/resolvedObject.test.ts +0 -415
  225. package/src/utils/ref-resolving/resolvedObject.ts +0 -107
  226. package/src/utils/securitySchemes.ts +0 -117
  227. package/src/utils/string.ts +0 -15
  228. package/src/utils/tests/chooseOption.ts +0 -7
  229. package/src/web-components/createElementClass.ts +0 -154
  230. package/tsconfig.build.json +0 -14
  231. package/tsconfig.json +0 -7
  232. /package/{dist/__fixtures__ → __fixtures__}/articles/schema-with-refs.d.ts +0 -0
  233. /package/{dist/__fixtures__ → __fixtures__}/operations/application-octet-stream-post.d.ts +0 -0
  234. /package/{dist/__fixtures__ → __fixtures__}/operations/base64-file-upload.d.ts +0 -0
  235. /package/{dist/__fixtures__ → __fixtures__}/operations/big-response.d.ts +0 -0
  236. /package/{dist/__fixtures__ → __fixtures__}/operations/examples-request-body.d.ts +0 -0
  237. /package/{dist/__fixtures__ → __fixtures__}/operations/head-todos.d.ts +0 -0
  238. /package/{dist/__fixtures__ → __fixtures__}/operations/multipart-formdata-post.d.ts +0 -0
  239. /package/{dist/__fixtures__ → __fixtures__}/operations/operation-minimal.d.ts +0 -0
  240. /package/{dist/__fixtures__ → __fixtures__}/operations/operation-parameters.d.ts +0 -0
  241. /package/{dist/__fixtures__ → __fixtures__}/operations/operation-with-examples.d.ts +0 -0
  242. /package/{dist/__fixtures__ → __fixtures__}/operations/operation-without-servers.d.ts +0 -0
  243. /package/{dist/__fixtures__ → __fixtures__}/operations/patch-todos.d.ts +0 -0
  244. /package/{dist/__fixtures__ → __fixtures__}/operations/put-todos.d.ts +0 -0
  245. /package/{dist/__fixtures__ → __fixtures__}/operations/referenced-body.d.ts +0 -0
  246. /package/{dist/__fixtures__ → __fixtures__}/operations/request-body-empty-schema.d.ts +0 -0
  247. /package/{dist/__fixtures__ → __fixtures__}/operations/request-body.d.ts +0 -0
  248. /package/{dist/__fixtures__ → __fixtures__}/operations/securedOperation.d.ts +0 -0
  249. /package/{dist/__fixtures__ → __fixtures__}/operations/security-basic.d.ts +0 -0
  250. /package/{dist/__fixtures__ → __fixtures__}/operations/security-bearer.d.ts +0 -0
  251. /package/{dist/__fixtures__ → __fixtures__}/operations/simple-get.d.ts +0 -0
  252. /package/{dist/__fixtures__ → __fixtures__}/operations/string-numeric-enums.d.ts +0 -0
  253. /package/{dist/__fixtures__ → __fixtures__}/operations/urlencoded-post-oneof.d.ts +0 -0
  254. /package/{dist/__fixtures__ → __fixtures__}/operations/urlencoded-post.d.ts +0 -0
  255. /package/{dist/__fixtures__ → __fixtures__}/operations/with-url-variables.d.ts +0 -0
  256. /package/{dist/__fixtures__ → __fixtures__}/security-schemes/index.d.ts +0 -0
  257. /package/{dist/__fixtures__ → __fixtures__}/services/petstore.d.ts +0 -0
  258. /package/{dist/__fixtures__ → __fixtures__}/services/with-unnamed-servers.d.ts +0 -0
  259. /package/{dist/__fixtures__ → __fixtures__}/services/with-url-variables.d.ts +0 -0
  260. /package/{dist/__fixtures__ → __fixtures__}/services/without-origin.d.ts +0 -0
  261. /package/{dist/components → components}/Docs/Article/Article.spec.d.ts +0 -0
  262. /package/{dist/components → components}/Docs/Article/Article.stories.d.ts +0 -0
  263. /package/{dist/components → components}/Docs/Article/index.d.ts +0 -0
  264. /package/{dist/components → components}/Docs/Docs.d.ts +0 -0
  265. /package/{dist/components → components}/Docs/Docs.stories.d.ts +0 -0
  266. /package/{dist/components → components}/Docs/HttpOperation/Badges.d.ts +0 -0
  267. /package/{dist/components → components}/Docs/HttpOperation/Body.d.ts +0 -0
  268. /package/{dist/components → components}/Docs/HttpOperation/Callbacks.d.ts +0 -0
  269. /package/{dist/components → components}/Docs/HttpOperation/HttpOperation.d.ts +0 -0
  270. /package/{dist/components → components}/Docs/HttpOperation/HttpOperation.spec.d.ts +0 -0
  271. /package/{dist/components → components}/Docs/HttpOperation/HttpOperation.stories.d.ts +0 -0
  272. /package/{dist/components → components}/Docs/HttpOperation/Parameters.d.ts +0 -0
  273. /package/{dist/components → components}/Docs/HttpOperation/Parameters.spec.d.ts +0 -0
  274. /package/{dist/components → components}/Docs/HttpOperation/Request.d.ts +0 -0
  275. /package/{dist/components → components}/Docs/HttpOperation/Responses.d.ts +0 -0
  276. /package/{dist/components → components}/Docs/HttpOperation/index.d.ts +0 -0
  277. /package/{dist/components → components}/Docs/HttpService/AdditionalInfo.d.ts +0 -0
  278. /package/{dist/components → components}/Docs/HttpService/AdditionalInfo.stories.d.ts +0 -0
  279. /package/{dist/components → components}/Docs/HttpService/ExportButton.d.ts +0 -0
  280. /package/{dist/components → components}/Docs/HttpService/HttpService.d.ts +0 -0
  281. /package/{dist/components → components}/Docs/HttpService/HttpService.spec.d.ts +0 -0
  282. /package/{dist/components → components}/Docs/HttpService/HttpService.stories.d.ts +0 -0
  283. /package/{dist/components → components}/Docs/HttpService/SecuritySchemes.d.ts +0 -0
  284. /package/{dist/components → components}/Docs/HttpService/ServerInfo.d.ts +0 -0
  285. /package/{dist/components → components}/Docs/HttpService/index.d.ts +0 -0
  286. /package/{dist/components → components}/Docs/Model/Model.d.ts +0 -0
  287. /package/{dist/components → components}/Docs/Model/Model.spec.d.ts +0 -0
  288. /package/{dist/components → components}/Docs/Model/Model.stories.d.ts +0 -0
  289. /package/{dist/components → components}/Docs/Model/index.d.ts +0 -0
  290. /package/{dist/components → components}/Docs/NodeVendorExtensions.d.ts +0 -0
  291. /package/{dist/components → components}/Docs/Sections.d.ts +0 -0
  292. /package/{dist/components → components}/Docs/Security/PanelContent.d.ts +0 -0
  293. /package/{dist/components → components}/Docs/Security/index.d.ts +0 -0
  294. /package/{dist/components → components}/Docs/Skeleton.d.ts +0 -0
  295. /package/{dist/components → components}/Docs/TwoColumnLayout.d.ts +0 -0
  296. /package/{dist/components → components}/Docs/index.d.ts +0 -0
  297. /package/{dist/components → components}/Docs/story-helper.d.ts +0 -0
  298. /package/{dist/components → components}/Docs/story-renderer-helper.d.ts +0 -0
  299. /package/{dist/components → components}/Layout/MobileTopNav.d.ts +0 -0
  300. /package/{dist/components → components}/Layout/ResponsiveSidebarLayout.d.ts +0 -0
  301. /package/{dist/components → components}/Layout/SidebarLayout.d.ts +0 -0
  302. /package/{dist/components → components}/LinkHeading.d.ts +0 -0
  303. /package/{dist/components → components}/LoadMore.d.ts +0 -0
  304. /package/{dist/components → components}/Loading/Loading.d.ts +0 -0
  305. /package/{dist/components → components}/Logo.d.ts +0 -0
  306. /package/{dist/components → components}/MarkdownViewer/CustomComponents/CodeComponent.d.ts +0 -0
  307. /package/{dist/components → components}/MarkdownViewer/CustomComponents/CodeComponent.spec.d.ts +0 -0
  308. /package/{dist/components → components}/MarkdownViewer/CustomComponents/Provider.d.ts +0 -0
  309. /package/{dist/components → components}/MarkdownViewer/CustomComponents/ReactRouterLink.d.ts +0 -0
  310. /package/{dist/components → components}/MarkdownViewer/CustomComponents/ResolvedImage.d.ts +0 -0
  311. /package/{dist/components → components}/MarkdownViewer/CustomComponents/ScrollToHashElement.d.ts +0 -0
  312. /package/{dist/components → components}/MarkdownViewer/MarkdownViewer.spec.d.ts +0 -0
  313. /package/{dist/components → components}/MarkdownViewer/index.d.ts +0 -0
  314. /package/{dist/components → components}/NonIdealState.d.ts +0 -0
  315. /package/{dist/components → components}/PoweredByLink.d.ts +0 -0
  316. /package/{dist/components → components}/RequestSamples/RequestSamples.d.ts +0 -0
  317. /package/{dist/components → components}/RequestSamples/RequestSamples.stories.d.ts +0 -0
  318. /package/{dist/components → components}/RequestSamples/convertRequestToSample.d.ts +0 -0
  319. /package/{dist/components → components}/RequestSamples/extractCodeSamples.d.ts +0 -0
  320. /package/{dist/components → components}/RequestSamples/index.d.ts +0 -0
  321. /package/{dist/components → components}/RequestSamples/requestSampleConfigs.d.ts +0 -0
  322. /package/{dist/components → components}/ResponseExamples/ResponseExamples.d.ts +0 -0
  323. /package/{dist/components → components}/ResponseExamples/ResponseExamples.spec.d.ts +0 -0
  324. /package/{dist/components → components}/ResponseExamples/ResponseExamples.stories.d.ts +0 -0
  325. /package/{dist/components → components}/TableOfContents/TableOfContents.d.ts +0 -0
  326. /package/{dist/components → components}/TableOfContents/TableOfContents.spec.d.ts +0 -0
  327. /package/{dist/components → components}/TableOfContents/TableOfContents.stories.d.ts +0 -0
  328. /package/{dist/components → components}/TableOfContents/constants.d.ts +0 -0
  329. /package/{dist/components → components}/TableOfContents/index.d.ts +0 -0
  330. /package/{dist/components → components}/TableOfContents/types.d.ts +0 -0
  331. /package/{dist/components → components}/TableOfContents/utils.d.ts +0 -0
  332. /package/{dist/components → components}/TryIt/Auth/APIKeyAuth.d.ts +0 -0
  333. /package/{dist/components → components}/TryIt/Auth/Auth.d.ts +0 -0
  334. /package/{dist/components → components}/TryIt/Auth/AuthTokenInput.d.ts +0 -0
  335. /package/{dist/components → components}/TryIt/Auth/BasicAuth.d.ts +0 -0
  336. /package/{dist/components → components}/TryIt/Auth/BearerAuth.d.ts +0 -0
  337. /package/{dist/components → components}/TryIt/Auth/DigestAuth.d.ts +0 -0
  338. /package/{dist/components → components}/TryIt/Auth/OAuth2Auth.d.ts +0 -0
  339. /package/{dist/components → components}/TryIt/Auth/authentication-utils.d.ts +0 -0
  340. /package/{dist/components → components}/TryIt/Body/BinaryBody.d.ts +0 -0
  341. /package/{dist/components → components}/TryIt/Body/FormDataBody.d.ts +0 -0
  342. /package/{dist/components → components}/TryIt/Body/RequestBody.d.ts +0 -0
  343. /package/{dist/components → components}/TryIt/Body/request-body-utils.d.ts +0 -0
  344. /package/{dist/components → components}/TryIt/Body/useTextRequestBodyState.d.ts +0 -0
  345. /package/{dist/components → components}/TryIt/Mocking/MockingButton.d.ts +0 -0
  346. /package/{dist/components → components}/TryIt/Mocking/mocking-utils.d.ts +0 -0
  347. /package/{dist/components → components}/TryIt/Mocking/useMockingOptions.d.ts +0 -0
  348. /package/{dist/components → components}/TryIt/Parameters/FileUploadParameterEditors.d.ts +0 -0
  349. /package/{dist/components → components}/TryIt/Parameters/OperationParameters.d.ts +0 -0
  350. /package/{dist/components → components}/TryIt/Parameters/ParameterEditor.d.ts +0 -0
  351. /package/{dist/components → components}/TryIt/Parameters/parameter-utils.d.ts +0 -0
  352. /package/{dist/components → components}/TryIt/Parameters/parameter-utils.spec.d.ts +0 -0
  353. /package/{dist/components → components}/TryIt/Parameters/useOperationParameters.d.ts +0 -0
  354. /package/{dist/components → components}/TryIt/Response/ReponseCodeViewer.d.ts +0 -0
  355. /package/{dist/components → components}/TryIt/Response/Response.d.ts +0 -0
  356. /package/{dist/components → components}/TryIt/Response/Response.spec.d.ts +0 -0
  357. /package/{dist/components → components}/TryIt/Response/hooks/useLineCount.d.ts +0 -0
  358. /package/{dist/components → components}/TryIt/Servers/ServerVariables.d.ts +0 -0
  359. /package/{dist/components → components}/TryIt/Servers/ServersDropdown.d.ts +0 -0
  360. /package/{dist/components → components}/TryIt/Servers/VariableEditor.d.ts +0 -0
  361. /package/{dist/components → components}/TryIt/Servers/useServerVariables.d.ts +0 -0
  362. /package/{dist/components → components}/TryIt/TryIt.d.ts +0 -0
  363. /package/{dist/components → components}/TryIt/TryIt.spec.d.ts +0 -0
  364. /package/{dist/components → components}/TryIt/TryIt.stories.d.ts +0 -0
  365. /package/{dist/components → components}/TryIt/TryItWithRequestSamples.d.ts +0 -0
  366. /package/{dist/components → components}/TryIt/TryItWithRequestSamples.spec.d.ts +0 -0
  367. /package/{dist/components → components}/TryIt/TryItWithRequestSamples.stories.d.ts +0 -0
  368. /package/{dist/components → components}/TryIt/build-request.d.ts +0 -0
  369. /package/{dist/components → components}/TryIt/build-request.spec.d.ts +0 -0
  370. /package/{dist/components → components}/TryIt/chosenServer.d.ts +0 -0
  371. /package/{dist/components → components}/TryIt/index.d.ts +0 -0
  372. /package/{dist/constants.d.ts → constants.d.ts} +0 -0
  373. /package/{dist/containers → containers}/MockingProvider.d.ts +0 -0
  374. /package/{dist/context → context}/InlineRefResolver.d.ts +0 -0
  375. /package/{dist/context → context}/InlineRefResolver.spec.d.ts +0 -0
  376. /package/{dist/context → context}/Options.d.ts +0 -0
  377. /package/{dist/context → context}/Persistence.d.ts +0 -0
  378. /package/{dist/context → context}/RouterType.d.ts +0 -0
  379. /package/{dist/core.css → core.css} +0 -0
  380. /package/{dist/hoc → hoc}/utils.d.ts +0 -0
  381. /package/{dist/hoc → hoc}/withMosaicProvider.d.ts +0 -0
  382. /package/{dist/hoc → hoc}/withMosaicProvider.spec.d.ts +0 -0
  383. /package/{dist/hoc → hoc}/withQueryClientProvider.d.ts +0 -0
  384. /package/{dist/hoc → hoc}/withQueryClientProvider.spec.d.ts +0 -0
  385. /package/{dist/hoc → hoc}/withRouter.d.ts +0 -0
  386. /package/{dist/hooks → hooks}/useBundleRefsIntoDocument.d.ts +0 -0
  387. /package/{dist/hooks → hooks}/useFirstRender.d.ts +0 -0
  388. /package/{dist/hooks → hooks}/useIsCompact.d.ts +0 -0
  389. /package/{dist/hooks → hooks}/useParsedData.d.ts +0 -0
  390. /package/{dist/hooks → hooks}/useParsedValue.d.ts +0 -0
  391. /package/{dist/hooks → hooks}/useResponsiveLayout.d.ts +0 -0
  392. /package/{dist/hooks → hooks}/useRouter.d.ts +0 -0
  393. /package/{dist/hooks → hooks}/useUniqueId.d.ts +0 -0
  394. /package/{dist/index.d.ts → index.d.ts} +0 -0
  395. /package/{dist/styled.d.ts → styled.d.ts} +0 -0
  396. /package/{dist/styles.min.css → styles.min.css} +0 -0
  397. /package/{dist/types.d.ts → types.d.ts} +0 -0
  398. /package/{dist/utils → utils}/exampleGeneration/exampleGeneration.d.ts +0 -0
  399. /package/{dist/utils → utils}/exampleGeneration/exampleGeneration.spec.d.ts +0 -0
  400. /package/{dist/utils → utils}/fileToBase64.d.ts +0 -0
  401. /package/{dist/utils → utils}/guards.d.ts +0 -0
  402. /package/{dist/utils → utils}/headers.d.ts +0 -0
  403. /package/{dist/utils → utils}/http-spec/IServer.d.ts +0 -0
  404. /package/{dist/utils → utils}/http-spec/examples.d.ts +0 -0
  405. /package/{dist/utils → utils}/http.d.ts +0 -0
  406. /package/{dist/utils → utils}/jotai/persistAtom.d.ts +0 -0
  407. /package/{dist/utils → utils}/node.d.ts +0 -0
  408. /package/{dist/utils → utils}/oas/security.d.ts +0 -0
  409. /package/{dist/utils → utils}/ref-resolving/ReferenceResolver.d.ts +0 -0
  410. /package/{dist/utils → utils}/ref-resolving/resolvedObject.d.ts +0 -0
  411. /package/{dist/utils → utils}/ref-resolving/resolvedObject.test.d.ts +0 -0
  412. /package/{dist/utils → utils}/securitySchemes.d.ts +0 -0
  413. /package/{dist/utils → utils}/string.d.ts +0 -0
  414. /package/{dist/utils → utils}/tests/chooseOption.d.ts +0 -0
  415. /package/{dist/web-components → web-components}/createElementClass.d.ts +0 -0
@@ -1,787 +0,0 @@
1
- import { HttpParamStyles, IHttpOperation } from '@stoplight/types';
2
- import { screen } from '@testing-library/dom';
3
- import { act, render } from '@testing-library/react';
4
- import userEvent from '@testing-library/user-event';
5
- import * as React from 'react';
6
- import { MemoryRouter } from 'react-router-dom';
7
-
8
- import httpOperation from '../../../__fixtures__/operations/put-todos';
9
- import requestBody from '../../../__fixtures__/operations/request-body';
10
- import { ElementsOptionsProvider } from '../../../context/Options';
11
- import { withPersistenceBoundary } from '../../../context/Persistence';
12
- import { withMosaicProvider } from '../../../hoc/withMosaicProvider';
13
- import { chooseOption } from '../../../utils/tests/chooseOption';
14
- import { renderExtensionRenderer } from '../story-renderer-helper';
15
- import { HttpOperation as HttpOperationWithoutPersistence } from './index';
16
-
17
- const _HttpOperation = withMosaicProvider(withPersistenceBoundary(HttpOperationWithoutPersistence));
18
-
19
- const HttpOperation: typeof _HttpOperation = props => (
20
- <MemoryRouter>
21
- <_HttpOperation {...props} />
22
- </MemoryRouter>
23
- );
24
-
25
- /*
26
-
27
- Wondering what this `unmount()` thingy in some of the tests is all about?
28
-
29
- The reason is that an asynchronous action in TryIt component - resolving
30
- a Promise coming from `buildHarRequest()` call - causes an async update to
31
- React state, which then causes an `act(...)` warning in the tests which are
32
- synchronous.
33
-
34
- If you see an unwarranted `act(...)` warning when writing a synchronous test,
35
- use the same method to mitigate the issue. Don't do it mindlessly though!
36
- Sometimes `act(...)` warning is warranted.
37
-
38
- If `buildHarRequest` is no longer asynchronous, or it disappeared from the codebase,
39
- you can attempt to remove manual `unmount()` calls.
40
- */
41
-
42
- describe('HttpOperation', () => {
43
- describe('Header', () => {
44
- it('should display "Deprecated" badge for deprecated http operation', () => {
45
- const { unmount } = render(<HttpOperation data={{ ...httpOperation, deprecated: true }} />);
46
-
47
- const badge = getDeprecatedBadge();
48
-
49
- expect(badge).toBeInTheDocument();
50
-
51
- unmount();
52
- });
53
-
54
- it('should not display "Deprecated" badge for http operation that is not deprecated', () => {
55
- const { unmount } = render(<HttpOperation data={{ ...httpOperation, deprecated: false }} />);
56
-
57
- const deprecatedBadge = getDeprecatedBadge();
58
-
59
- expect(deprecatedBadge).not.toBeInTheDocument();
60
-
61
- unmount();
62
- });
63
-
64
- it('should correctly display with server variables at beginning, middle, and end', () => {
65
- const { unmount } = render(<HttpOperation data={{ ...httpOperation, deprecated: false }} />);
66
-
67
- const serversButton = screen.getByRole('button', { name: /server/i });
68
- userEvent.click(serversButton);
69
-
70
- const enableItem = screen.getByRole('menuitemradio', { name: /pr/i });
71
- userEvent.click(enableItem);
72
-
73
- expect(serversButton).toHaveTextContent('PR');
74
-
75
- expect(screen.queryAllByText(/{proto}:\/\/x-{pr}.todos-pr.stoplight.io:{port}/)[0]).toBeInTheDocument();
76
- unmount();
77
- });
78
- });
79
-
80
- describe('Security', () => {
81
- it('should display security panel for each security scheme', () => {
82
- const { unmount } = render(<HttpOperation data={{ ...httpOperation }} />);
83
-
84
- const apikeyPanel = screen.getAllByText(/Security: API Key \(api_key\)/i);
85
- const apikey2Panel = screen.getByText(/Security: API Key \(api_key2\)/i);
86
- const apiMultiplePanel = screen.getByText(/Security: API Key \(api_key\) & API Key \(api_key2\)/i);
87
- const basicPanel = screen.getByText(/Security: Basic Auth \(basicKey\)/i);
88
- const bearerPanel = screen.getByText(/Security: Bearer Auth \(bearerKey\)/i);
89
- const digestPanel = screen.getByText(/Security: Digest Auth \(digest\)/i);
90
- const oidcPanel = screen.getByText(/Security: OpenID Connect/i);
91
- const oauthPanel = screen.getAllByText(/Security: OAuth 2.0/i);
92
- const mixedPanel = screen.getByText(/Security: OAuth 2.0 & API Key/i);
93
-
94
- expect(apikeyPanel).toHaveLength(2);
95
- expect(apikey2Panel).toBeInTheDocument();
96
- expect(apiMultiplePanel).toBeInTheDocument();
97
- expect(basicPanel).toBeInTheDocument();
98
- expect(bearerPanel).toBeInTheDocument();
99
- expect(digestPanel).toBeInTheDocument();
100
- expect(oidcPanel).toBeInTheDocument();
101
- expect(oauthPanel).toHaveLength(2);
102
- expect(mixedPanel).toBeInTheDocument();
103
-
104
- unmount();
105
- });
106
-
107
- it('displays keys for duplicated security types', () => {
108
- const security = [
109
- [
110
- {
111
- id: '?http-security-0?',
112
- key: 'oauth2WithScopes',
113
- type: 'oauth2' as const,
114
- description: 'foo',
115
- flows: {
116
- implicit: {
117
- scopes: {
118
- 'write:pets': 'modify pets in your account',
119
- 'read:pets': 'read your pets',
120
- },
121
- refreshUrl: 'http://refreshUrl.com',
122
- authorizationUrl: 'http://authorizationUrl.com',
123
- },
124
- },
125
- },
126
- ],
127
- [
128
- {
129
- id: '?http-security-1?',
130
- key: 'oauth2WithEmptyScopes',
131
- type: 'oauth2' as const,
132
- description: 'foo',
133
- flows: {
134
- authorizationCode: {
135
- scopes: {},
136
- refreshUrl: 'http://refreshUrl.com',
137
- tokenUrl: 'http://tokenUrl.com',
138
- authorizationUrl: 'http://authorizationUrl.com',
139
- },
140
- },
141
- },
142
- ],
143
- ];
144
-
145
- const { unmount } = render(<HttpOperation data={{ ...httpOperation, security }} />);
146
-
147
- const oauth2Panel = screen.getByText(/^Security: OAuth 2.0 \(oauth2WithScopes\)$/i);
148
- const oauth2WithEmptyScopesPanel = screen.getByText(/^Security: OAuth 2.0 \(oauth2WithEmptyScopes\)$/i);
149
-
150
- expect(oauth2Panel).toBeInTheDocument();
151
- expect(oauth2WithEmptyScopesPanel).toBeInTheDocument();
152
-
153
- unmount();
154
- });
155
-
156
- it('should expand on click', () => {
157
- const { unmount } = render(<HttpOperation data={{ ...httpOperation }} />);
158
-
159
- const oauthPanel = screen.getAllByText(/Security: OAuth 2.0/i)[0];
160
-
161
- expect(oauthPanel).toBeInTheDocument();
162
- expect(screen.queryByText('write:pets')).not.toBeInTheDocument();
163
-
164
- act(() => oauthPanel.click());
165
-
166
- expect(screen.queryAllByText('write:pets')).toHaveLength(4);
167
-
168
- unmount();
169
- });
170
-
171
- it('should display individual descriptions with names when expanding AND security schemes', () => {
172
- const { unmount } = render(<HttpOperation data={{ ...httpOperation }} />);
173
-
174
- const oauthPanel = screen.getByText(/Security: OAuth 2.0 & API Key/i);
175
- const apiKeysBefore = screen.getAllByText(/API Key/i);
176
- const oauthKeysBefore = screen.getAllByText(/OAuth 2.0/i);
177
-
178
- expect(oauthPanel).toBeInTheDocument();
179
- expect(screen.queryByText('write:pets')).not.toBeInTheDocument();
180
- expect(apiKeysBefore).toHaveLength(7);
181
- expect(oauthKeysBefore).toHaveLength(2);
182
-
183
- act(() => oauthPanel.click());
184
-
185
- const apiKeysAfter = screen.getAllByText(/API Key/i);
186
- const oauthKeysAfter = screen.getAllByText(/OAuth 2.0/i);
187
-
188
- expect(screen.queryAllByText('write:pets')).toHaveLength(4);
189
- expect(apiKeysAfter).toHaveLength(11);
190
- expect(oauthKeysAfter).toHaveLength(3);
191
-
192
- unmount();
193
- });
194
-
195
- it('should not re-display security name with description when expanding singleton schemes', () => {
196
- const { unmount } = render(<HttpOperation data={{ ...httpOperation }} />);
197
-
198
- const oauthPanel = screen.getAllByText(/Security: OAuth 2.0/i)[1];
199
- const oauthKeysBefore = screen.getAllByText(/OAuth 2.0/i);
200
-
201
- expect(oauthPanel).toBeInTheDocument();
202
- expect(screen.queryByText('write:pets')).not.toBeInTheDocument();
203
- expect(oauthKeysBefore).toHaveLength(2);
204
-
205
- act(() => oauthPanel.click());
206
-
207
- const oauthKeysAfter = screen.getAllByText(/OAuth 2.0/i);
208
-
209
- expect(screen.queryAllByText('write:pets')).toHaveLength(4);
210
- expect(oauthKeysAfter).toHaveLength(2);
211
-
212
- unmount();
213
- });
214
- });
215
-
216
- describe('Query Parameters', () => {
217
- it('should render panel when there are query parameters', async () => {
218
- const data: IHttpOperation = {
219
- id: 'get',
220
- method: 'get',
221
- path: '/path',
222
- responses: [],
223
- request: {
224
- query: [
225
- {
226
- id: '?http-query-parameter-name?',
227
- name: 'parameter name',
228
- description: 'a parameter description',
229
- schema: {
230
- type: 'string',
231
- },
232
- allowEmptyValue: true,
233
- allowReserved: true,
234
- deprecated: true,
235
- explode: true,
236
- required: true,
237
- style: HttpParamStyles.Form,
238
- examples: [
239
- {
240
- id: '?http-example-0?',
241
- value: 'example value',
242
- key: 'example key',
243
- },
244
- ],
245
- },
246
- ],
247
- },
248
- };
249
-
250
- const { unmount } = render(<HttpOperation data={data} />);
251
-
252
- const queryParametersPanel = screen.queryByRole('heading', { name: 'Query Parameters' });
253
- expect(queryParametersPanel).toBeInTheDocument();
254
- expect(queryParametersPanel).toBeVisible();
255
- expect(queryParametersPanel).toBeEnabled();
256
-
257
- unmount();
258
- });
259
-
260
- it('should not render panel when there are no header parameters', () => {
261
- const data: IHttpOperation = {
262
- id: 'get',
263
- method: 'get',
264
- path: '/path',
265
- responses: [],
266
- request: {
267
- query: [],
268
- },
269
- };
270
-
271
- const { unmount } = render(<HttpOperation data={data} />);
272
-
273
- const headersPanel = screen.queryByRole('heading', { name: 'Query Parameters' });
274
- expect(headersPanel).not.toBeInTheDocument();
275
-
276
- unmount();
277
- });
278
-
279
- it('should not render default styles', () => {
280
- const operationData: IHttpOperation = {
281
- id: 'get',
282
- method: 'get',
283
- path: '/path',
284
- responses: [],
285
- request: {
286
- query: [
287
- {
288
- id: '?http-query-default-style-param?',
289
- name: 'default style param',
290
- schema: {
291
- type: 'string',
292
- },
293
- style: HttpParamStyles.Form,
294
- },
295
- {
296
- id: '?http-query-different-style-param?',
297
- name: 'different style param',
298
- schema: {
299
- type: 'string',
300
- },
301
- style: HttpParamStyles.SpaceDelimited,
302
- },
303
- ],
304
- },
305
- };
306
- const { unmount } = render(<HttpOperation data={operationData} />);
307
-
308
- expect(screen.queryByText(/Space separated values/)).toBeInTheDocument();
309
- expect(screen.queryByText(/Form style values/)).not.toBeInTheDocument();
310
-
311
- unmount();
312
- });
313
- });
314
-
315
- describe('Header Parameters', () => {
316
- it('should render panel when there are header parameters', () => {
317
- const data: IHttpOperation = {
318
- id: 'get',
319
- method: 'get',
320
- path: '/path',
321
- responses: [],
322
- request: {
323
- headers: [
324
- {
325
- id: '?http-header-parameter-name?',
326
- name: 'parameter name',
327
- description: 'a parameter description',
328
- schema: {
329
- type: 'string',
330
- },
331
- deprecated: true,
332
- explode: true,
333
- required: true,
334
- style: HttpParamStyles.Simple,
335
- examples: [
336
- {
337
- id: '?http-example-0?',
338
- key: 'example',
339
- value: 'example value',
340
- },
341
- ],
342
- },
343
- ],
344
- },
345
- };
346
-
347
- const { unmount } = render(<HttpOperation data={data} />);
348
-
349
- const headersPanel = screen.queryByRole('heading', { name: 'Headers' });
350
- expect(headersPanel).toBeInTheDocument();
351
- expect(headersPanel).toBeVisible();
352
- expect(headersPanel).toBeEnabled();
353
-
354
- unmount();
355
- });
356
-
357
- it('should not render panel when there are no header parameters', () => {
358
- const data = {
359
- id: 'get',
360
- method: 'get',
361
- path: '/path',
362
- responses: [],
363
- request: {
364
- headers: [],
365
- },
366
- };
367
-
368
- const { unmount } = render(<HttpOperation data={data} />);
369
-
370
- const headersPanel = screen.queryByRole('heading', { name: 'Headers' });
371
- expect(headersPanel).not.toBeInTheDocument();
372
-
373
- unmount();
374
- });
375
- });
376
-
377
- describe('Path Parameters', () => {
378
- it('should render panel when there are path parameters', async () => {
379
- const data: IHttpOperation = {
380
- id: 'get',
381
- method: 'get',
382
- path: '/path',
383
- summary: 'Some endpoint',
384
- responses: [],
385
- request: {
386
- path: [
387
- {
388
- id: '?http-path-param-parameter-name?',
389
- name: 'parameter name',
390
- description: 'a parameter description',
391
- schema: {
392
- type: 'string',
393
- examples: ['another example'],
394
- },
395
- deprecated: true,
396
- explode: true,
397
- required: true,
398
- style: HttpParamStyles.Simple,
399
- examples: [
400
- {
401
- id: '?http-example-example?',
402
- key: 'example',
403
- value: 'example value',
404
- },
405
- ],
406
- },
407
- ],
408
- },
409
- };
410
-
411
- const { unmount } = render(<HttpOperation data={data} />);
412
-
413
- const headersPanel = screen.queryByRole('heading', { name: 'Path Parameters' });
414
- expect(headersPanel).toBeInTheDocument();
415
- expect(headersPanel).toBeVisible();
416
- expect(headersPanel).toBeEnabled();
417
-
418
- unmount();
419
- });
420
- });
421
-
422
- describe('Request Body', () => {
423
- const httpOperationWithRequestBodyContents: IHttpOperation = {
424
- path: '/',
425
- id: 'some_id',
426
- method: 'get',
427
- request: {
428
- body: {
429
- id: '?http-request-body?',
430
- contents: [
431
- {
432
- id: '?http-request-body-media-0?',
433
- mediaType: 'application/json',
434
- schema: {
435
- type: 'object',
436
- properties: {
437
- some_property: { type: 'string' },
438
- },
439
- },
440
- },
441
- { id: '?http-request-body-media-1?', mediaType: 'application/xml' },
442
- ],
443
- },
444
- },
445
- responses: [{ id: '?http-response-200?', code: '200', description: 'Hello world!' }],
446
- };
447
-
448
- const httpOperationWithoutRequestBodyContents = {
449
- path: '/',
450
- id: 'some_id',
451
- method: 'get',
452
- request: {
453
- body: {
454
- id: '?http-request-body?',
455
- description: 'Some body description',
456
- contents: [],
457
- },
458
- },
459
- responses: [{ id: '?http-response-200?', code: '200', description: 'Hello world!' }],
460
- };
461
-
462
- it('should render select for content type', () => {
463
- const { unmount } = render(<HttpOperation data={httpOperationWithRequestBodyContents} />);
464
-
465
- const select = screen.queryByLabelText('Request Body Content Type');
466
- expect(select).not.toBeNull();
467
-
468
- unmount();
469
- });
470
-
471
- it('should allow to select different content type', () => {
472
- const { unmount } = render(<HttpOperation data={httpOperationWithRequestBodyContents} />);
473
-
474
- const select = screen.getByLabelText('Request Body Content Type');
475
-
476
- expect(select).toHaveTextContent('application/json');
477
-
478
- chooseOption(select, 'application/xml');
479
-
480
- expect(select).toHaveTextContent('application/xml');
481
-
482
- unmount();
483
- });
484
-
485
- it('should not render select if there are no contents', () => {
486
- const { unmount } = render(<HttpOperation data={httpOperationWithoutRequestBodyContents} />);
487
-
488
- const select = screen.queryByLabelText('Request Body Content Type');
489
- expect(select).toBeNull();
490
-
491
- unmount();
492
- });
493
-
494
- it('should display description even if there are no contents', async () => {
495
- const { unmount } = render(<HttpOperation data={httpOperationWithoutRequestBodyContents} />);
496
-
497
- expect(await screen.findByText('Some body description')).toBeInTheDocument();
498
-
499
- unmount();
500
- });
501
-
502
- it('should display schema for content type', async () => {
503
- const { unmount } = render(<HttpOperation data={httpOperationWithRequestBodyContents} />);
504
-
505
- expect(await screen.findByText('some_property')).toBeInTheDocument();
506
-
507
- unmount();
508
- });
509
-
510
- it('request body selection in Docs should update TryIt', async () => {
511
- const { unmount } = render(<HttpOperation data={requestBody} />);
512
-
513
- const body = screen.getByRole('textbox');
514
- const requestSample = await screen.findByLabelText(
515
- 'curl --request POST \\ --url https://todos.stoplight.io/users \\ --header \'Content-Type: application/json\' \\ --data \'{ "name": "string", "age": 0 }\'',
516
- );
517
-
518
- expect(body).toHaveTextContent('{ "name": "string", "age": 0 }');
519
- expect(requestSample).toBeInTheDocument();
520
-
521
- const select = screen.getByLabelText('Request Body Content Type');
522
- chooseOption(select, 'application/x-www-form-urlencoded');
523
- const secondRequestSample = await screen.findByLabelText(
524
- "curl --request POST \\ --url https://todos.stoplight.io/users \\ --header 'Content-Type: application/x-www-form-urlencoded' \\ --data-urlencode name= \\ --data-urlencode completed= \\ --data-urlencode someEnum=a",
525
- );
526
-
527
- expect(screen.getByLabelText('someEnum')).toBeInTheDocument();
528
- expect(secondRequestSample).toBeInTheDocument();
529
-
530
- unmount();
531
- });
532
- });
533
-
534
- describe('Response', () => {
535
- const httpOperationWithResponseBodyContents: IHttpOperation = {
536
- path: '/',
537
- id: 'some_id',
538
- method: 'get',
539
- responses: [
540
- {
541
- id: '?http-response-200?',
542
- code: '200',
543
- description: 'Hello world!',
544
- contents: [
545
- {
546
- id: '?http-request-body-media-0?',
547
- mediaType: 'application/json',
548
- schema: {
549
- type: 'object',
550
- properties: {
551
- some_property: { type: 'string' },
552
- },
553
- },
554
- },
555
- { id: '?http-request-body-media-1?', mediaType: 'application/xml' },
556
- ],
557
- },
558
- ],
559
- };
560
-
561
- const httpOperationWithoutResponseBodyContents: IHttpOperation = {
562
- path: '/',
563
- id: 'some_id',
564
- method: 'get',
565
- responses: [{ id: '?http-response-200?', code: '200', description: 'Hello world!' }],
566
- };
567
-
568
- it('should render the MarkdownViewer with description', async () => {
569
- render(<HttpOperation data={httpOperationWithoutResponseBodyContents} />);
570
-
571
- expect(await screen.findByText('Hello world!')).toBeInTheDocument();
572
- });
573
-
574
- it('should render select for content types', () => {
575
- const { unmount } = render(<HttpOperation data={httpOperationWithResponseBodyContents} />);
576
-
577
- const select = screen.queryByLabelText('Response Body Content Type');
578
- expect(select).not.toBeNull();
579
-
580
- unmount();
581
- });
582
-
583
- it('should allow changing content type', () => {
584
- const { unmount } = render(<HttpOperation data={httpOperationWithResponseBodyContents} />);
585
-
586
- const select = screen.getByLabelText('Response Body Content Type');
587
-
588
- expect(select).toHaveTextContent('application/json');
589
-
590
- chooseOption(select, 'application/xml');
591
-
592
- expect(select).toHaveTextContent('application/xml');
593
-
594
- unmount();
595
- });
596
-
597
- it('should not render select when there are no contents', () => {
598
- const { unmount } = render(<HttpOperation data={httpOperationWithoutResponseBodyContents} />);
599
-
600
- const select = screen.queryByLabelText('Response Body Content Type');
601
- expect(select).toBeNull();
602
-
603
- unmount();
604
- });
605
-
606
- it('should display schema for chosen content type', async () => {
607
- const { unmount } = render(<HttpOperation data={httpOperationWithResponseBodyContents} />);
608
-
609
- const property = await screen.findByText('some_property');
610
- expect(property).toBeInTheDocument();
611
-
612
- const select = screen.getByLabelText('Response Body Content Type');
613
-
614
- chooseOption(select, 'application/xml');
615
-
616
- expect(screen.queryByText('some_property')).not.toBeInTheDocument();
617
-
618
- unmount();
619
- });
620
- });
621
-
622
- describe('Callbacks', () => {
623
- it('should display callback operation', async () => {
624
- const { unmount } = render(<HttpOperation data={{ ...httpOperation, deprecated: false }} />);
625
-
626
- const serversButton = screen.getByRole('button', { name: /server/i });
627
- userEvent.click(serversButton);
628
-
629
- const enableItem = screen.getByRole('menuitemradio', { name: /development/i });
630
- userEvent.click(enableItem);
631
-
632
- expect(serversButton).toHaveTextContent('Development');
633
-
634
- //operation name
635
- expect(screen.queryByText('newPet')).toBeInTheDocument();
636
-
637
- // operation header
638
- expect(screen.queryByText('{$request.body#/newPetAvailableUrl}')).toBeInTheDocument();
639
- expect(screen.queryAllByText(/https:\/\/todos-dev.stoplight.io/).length).toEqual(1); // server url visible only in the main operation header, not in callback
640
-
641
- // operation body
642
- expect(screen.queryByText('Callback body description')).toBeInTheDocument();
643
-
644
- // operation response
645
- expect(screen.queryByText('Your server returns this code if it accepts the callback')).toBeInTheDocument();
646
-
647
- unmount();
648
- });
649
- it('should display callback selector and switch between events', () => {
650
- const { unmount } = render(<HttpOperation data={{ ...httpOperation, deprecated: false }} />);
651
-
652
- const select = screen.getByLabelText('Callback');
653
-
654
- expect(select).toHaveTextContent('newPet - {$request.body#/newPetAvailableUrl} - post');
655
-
656
- chooseOption(select, 'returnedPet - {$request.body#/returnedPetAvailableUrl} - post');
657
-
658
- expect(select).toHaveTextContent('returnedPet - {$request.body#/returnedPetAvailableUrl} - post');
659
-
660
- expect(screen.queryByText('returnedPet')).toBeInTheDocument();
661
-
662
- unmount();
663
- });
664
- });
665
-
666
- describe('Visibility', () => {
667
- it('should hide TryIt', async () => {
668
- const { unmount } = render(<HttpOperation data={httpOperation} layoutOptions={{ hideTryIt: true }} />);
669
-
670
- expect(screen.queryByText('Send API Request')).not.toBeInTheDocument();
671
- expect(await screen.findByText('Response Example')).toBeInTheDocument();
672
-
673
- unmount();
674
- });
675
-
676
- it('should hide right column', () => {
677
- const { unmount } = render(<HttpOperation data={httpOperation} layoutOptions={{ hideTryItPanel: true }} />);
678
-
679
- expect(screen.queryByText('Send API Request')).not.toBeInTheDocument();
680
- expect(screen.queryByText('Response Example')).not.toBeInTheDocument();
681
-
682
- unmount();
683
- });
684
- it('should hide Samples', async () => {
685
- const { unmount } = render(<HttpOperation data={httpOperation} layoutOptions={{ hideSamples: true }} />);
686
-
687
- expect(screen.queryByText('Request Sample: Shell / cURL')).not.toBeInTheDocument();
688
-
689
- unmount();
690
- });
691
- });
692
-
693
- describe('Vendor Extensions', () => {
694
- it('should call rendorExtensionAddon', async () => {
695
- const vendorExtensionRenderer = jest.fn();
696
- const { unmount } = render(
697
- <ElementsOptionsProvider renderExtensionAddon={vendorExtensionRenderer}>
698
- <HttpOperation
699
- data={httpOperation}
700
- layoutOptions={{
701
- hideTryItPanel: true,
702
- hideSecurityInfo: true,
703
- hideServerInfo: true,
704
- hideExport: true,
705
- hideTryIt: true,
706
- hideSamples: true,
707
- }}
708
- />
709
- </ElementsOptionsProvider>,
710
- );
711
-
712
- expect(vendorExtensionRenderer).toHaveBeenLastCalledWith(
713
- expect.objectContaining({
714
- nestingLevel: 1,
715
- vendorExtensions: {
716
- 'x-enum-descriptions': expect.objectContaining({ REMINDER: 'A reminder', TASK: 'A task' }),
717
- },
718
- }),
719
- );
720
-
721
- unmount();
722
- });
723
-
724
- it('should display vendor extensions in body', async () => {
725
- const vendorExtensionRenderer = jest.fn().mockImplementation(props => {
726
- if ('x-stoplight-info' in props.vendorExtensions) {
727
- return <div>Stoplight Information Extension</div>;
728
- }
729
-
730
- return null;
731
- });
732
-
733
- const { unmount } = render(
734
- <ElementsOptionsProvider renderExtensionAddon={vendorExtensionRenderer}>
735
- <HttpOperation
736
- data={httpOperation}
737
- layoutOptions={{
738
- hideTryItPanel: true,
739
- hideSecurityInfo: true,
740
- hideServerInfo: true,
741
- hideExport: true,
742
- hideTryIt: true,
743
- hideSamples: true,
744
- }}
745
- />
746
- </ElementsOptionsProvider>,
747
- );
748
-
749
- expect(screen.queryByText('Stoplight Information Extension')).toBeInTheDocument();
750
-
751
- unmount();
752
- });
753
-
754
- it('should display vendor extensions', async () => {
755
- const vendorExtensionRenderer = jest.fn().mockImplementation(props => {
756
- return renderExtensionRenderer(props);
757
- });
758
-
759
- const { unmount } = render(
760
- <ElementsOptionsProvider renderExtensionAddon={vendorExtensionRenderer}>
761
- <HttpOperation
762
- data={httpOperation}
763
- layoutOptions={{
764
- hideTryItPanel: true,
765
- hideSecurityInfo: true,
766
- hideServerInfo: true,
767
- hideExport: true,
768
- hideTryIt: true,
769
- }}
770
- />
771
- </ElementsOptionsProvider>,
772
- );
773
-
774
- expect(screen.queryAllByRole('columnheader', { name: /Enum value/i })).toHaveLength(2);
775
- expect(screen.queryAllByRole('columnheader', { name: /Description/i })).toHaveLength(2);
776
-
777
- expect(screen.queryByText('A reminder')).toBeInTheDocument();
778
- expect(screen.queryByText('A task')).toBeInTheDocument();
779
-
780
- unmount();
781
- });
782
- });
783
- });
784
-
785
- function getDeprecatedBadge() {
786
- return screen.queryByTestId('badge-deprecated');
787
- }