@stoplight/elements-core 9.0.12-beta-0.1 → 9.0.13

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 (417) hide show
  1. package/{dist/components → components}/Docs/Docs.d.ts +1 -14
  2. package/{dist/components → components}/Docs/HttpOperation/Body.d.ts +1 -9
  3. package/{dist/components → components}/Docs/HttpOperation/HttpOperation.d.ts +2 -6
  4. package/{dist/components → components}/Docs/HttpOperation/Request.d.ts +0 -6
  5. package/{dist/components → components}/Docs/HttpOperation/Responses.d.ts +1 -12
  6. package/{dist/components → components}/TableOfContents/types.d.ts +7 -0
  7. package/{dist/index.esm.js → index.esm.js} +86 -525
  8. package/{dist/index.js → index.js} +86 -525
  9. package/{dist/index.mjs → index.mjs} +86 -525
  10. package/package.json +14 -74
  11. package/.storybook/main.js +0 -6
  12. package/.storybook/manager.js +0 -1
  13. package/.storybook/preview.jsx +0 -50
  14. package/dist/LICENSE +0 -190
  15. package/dist/README.md +0 -1
  16. package/dist/components/Docs/HttpOperation/LazySchemaTreePreviewer.d.ts +0 -34
  17. package/dist/package.json +0 -64
  18. package/jest.config.js +0 -10
  19. package/src/__fixtures__/articles/basic.md +0 -10
  20. package/src/__fixtures__/articles/kitchen-sink.md +0 -318
  21. package/src/__fixtures__/articles/long-page-heading.md +0 -955
  22. package/src/__fixtures__/articles/multiple-try-its.md +0 -54
  23. package/src/__fixtures__/articles/schema-with-refs.ts +0 -82
  24. package/src/__fixtures__/http-request.json +0 -11
  25. package/src/__fixtures__/models/model-with-no-examples.json +0 -15
  26. package/src/__fixtures__/models/model-with-one-example.json +0 -23
  27. package/src/__fixtures__/models/model-with-three-examples.json +0 -35
  28. package/src/__fixtures__/operations/application-octet-stream-post.ts +0 -39
  29. package/src/__fixtures__/operations/base64-file-upload.ts +0 -43
  30. package/src/__fixtures__/operations/big-response.ts +0 -4690
  31. package/src/__fixtures__/operations/bundled-parameter.ts +0 -128
  32. package/src/__fixtures__/operations/empty-response.ts +0 -15
  33. package/src/__fixtures__/operations/examples-request-body.ts +0 -135
  34. package/src/__fixtures__/operations/head-todos.ts +0 -49
  35. package/src/__fixtures__/operations/invalid-response-example.ts +0 -45
  36. package/src/__fixtures__/operations/multipart-formdata-post.ts +0 -61
  37. package/src/__fixtures__/operations/operation-minimal.ts +0 -11
  38. package/src/__fixtures__/operations/operation-parameters.ts +0 -337
  39. package/src/__fixtures__/operations/operation-with-examples.ts +0 -113
  40. package/src/__fixtures__/operations/operation-without-servers.ts +0 -16
  41. package/src/__fixtures__/operations/patch-todos.ts +0 -49
  42. package/src/__fixtures__/operations/put-todos.ts +0 -862
  43. package/src/__fixtures__/operations/referenced-body.ts +0 -62
  44. package/src/__fixtures__/operations/request-body-empty-schema.ts +0 -35
  45. package/src/__fixtures__/operations/request-body.ts +0 -62
  46. package/src/__fixtures__/operations/securedOperation.ts +0 -118
  47. package/src/__fixtures__/operations/security-basic.ts +0 -24
  48. package/src/__fixtures__/operations/security-bearer.ts +0 -25
  49. package/src/__fixtures__/operations/simple-get.ts +0 -17
  50. package/src/__fixtures__/operations/simple.ts +0 -103
  51. package/src/__fixtures__/operations/string-numeric-enums.ts +0 -32
  52. package/src/__fixtures__/operations/urlencoded-post-oneof.ts +0 -81
  53. package/src/__fixtures__/operations/urlencoded-post.ts +0 -54
  54. package/src/__fixtures__/operations/vendor-extensions.ts +0 -337
  55. package/src/__fixtures__/operations/with-url-variables.ts +0 -47
  56. package/src/__fixtures__/operations/x-code-samples.ts +0 -348
  57. package/src/__fixtures__/schemas/circular.ts +0 -1906
  58. package/src/__fixtures__/schemas/contact.json +0 -293
  59. package/src/__fixtures__/schemas/media-entry.json +0 -69
  60. package/src/__fixtures__/schemas/simple.json +0 -27
  61. package/src/__fixtures__/schemas/todo-full.v1.json +0 -35
  62. package/src/__fixtures__/schemas/todo-partial.v1.json +0 -14
  63. package/src/__fixtures__/schemas/user.v1.json +0 -17
  64. package/src/__fixtures__/security-schemes/index.ts +0 -38
  65. package/src/__fixtures__/services/petstore.ts +0 -167
  66. package/src/__fixtures__/services/with-unnamed-servers.ts +0 -38
  67. package/src/__fixtures__/services/with-url-variables.ts +0 -83
  68. package/src/__fixtures__/services/without-origin.ts +0 -20
  69. package/src/__fixtures__/table-of-contents/nested.ts +0 -44
  70. package/src/__fixtures__/table-of-contents/studio-template.ts +0 -100
  71. package/src/__fixtures__/table-of-contents/studio.ts +0 -559
  72. package/src/components/Docs/Article/Article.spec.tsx +0 -38
  73. package/src/components/Docs/Article/Article.stories.tsx +0 -17
  74. package/src/components/Docs/Article/index.tsx +0 -38
  75. package/src/components/Docs/Docs.stories.tsx +0 -33
  76. package/src/components/Docs/Docs.tsx +0 -272
  77. package/src/components/Docs/HttpOperation/Badges.tsx +0 -49
  78. package/src/components/Docs/HttpOperation/Body.tsx +0 -115
  79. package/src/components/Docs/HttpOperation/Callbacks.tsx +0 -89
  80. package/src/components/Docs/HttpOperation/HttpOperation.spec.tsx +0 -787
  81. package/src/components/Docs/HttpOperation/HttpOperation.stories.ts +0 -14
  82. package/src/components/Docs/HttpOperation/HttpOperation.tsx +0 -260
  83. package/src/components/Docs/HttpOperation/LazySchemaTreePreviewer.tsx +0 -651
  84. package/src/components/Docs/HttpOperation/Parameters.spec.tsx +0 -101
  85. package/src/components/Docs/HttpOperation/Parameters.tsx +0 -118
  86. package/src/components/Docs/HttpOperation/Request.tsx +0 -152
  87. package/src/components/Docs/HttpOperation/Responses.tsx +0 -301
  88. package/src/components/Docs/HttpOperation/index.ts +0 -1
  89. package/src/components/Docs/HttpService/AdditionalInfo.stories.ts +0 -48
  90. package/src/components/Docs/HttpService/AdditionalInfo.tsx +0 -61
  91. package/src/components/Docs/HttpService/ExportButton.tsx +0 -35
  92. package/src/components/Docs/HttpService/HttpService.spec.tsx +0 -429
  93. package/src/components/Docs/HttpService/HttpService.stories.ts +0 -14
  94. package/src/components/Docs/HttpService/HttpService.tsx +0 -99
  95. package/src/components/Docs/HttpService/SecuritySchemes.tsx +0 -82
  96. package/src/components/Docs/HttpService/ServerInfo.tsx +0 -196
  97. package/src/components/Docs/HttpService/index.ts +0 -1
  98. package/src/components/Docs/Model/Model.spec.tsx +0 -241
  99. package/src/components/Docs/Model/Model.stories.tsx +0 -16
  100. package/src/components/Docs/Model/Model.tsx +0 -192
  101. package/src/components/Docs/Model/index.ts +0 -1
  102. package/src/components/Docs/NodeVendorExtensions.tsx +0 -55
  103. package/src/components/Docs/Sections.tsx +0 -54
  104. package/src/components/Docs/Security/PanelContent.tsx +0 -38
  105. package/src/components/Docs/Security/index.ts +0 -1
  106. package/src/components/Docs/Skeleton.tsx +0 -12
  107. package/src/components/Docs/TwoColumnLayout.tsx +0 -27
  108. package/src/components/Docs/index.ts +0 -1
  109. package/src/components/Docs/story-helper.ts +0 -46
  110. package/src/components/Docs/story-renderer-helper.tsx +0 -56
  111. package/src/components/Layout/MobileTopNav.tsx +0 -78
  112. package/src/components/Layout/ResponsiveSidebarLayout.tsx +0 -175
  113. package/src/components/Layout/SidebarLayout.tsx +0 -107
  114. package/src/components/LinkHeading.tsx +0 -21
  115. package/src/components/LoadMore.tsx +0 -20
  116. package/src/components/Loading/Loading.tsx +0 -9
  117. package/src/components/Logo.tsx +0 -25
  118. package/src/components/MarkdownViewer/CustomComponents/CodeComponent.spec.ts +0 -90
  119. package/src/components/MarkdownViewer/CustomComponents/CodeComponent.tsx +0 -164
  120. package/src/components/MarkdownViewer/CustomComponents/Provider.tsx +0 -20
  121. package/src/components/MarkdownViewer/CustomComponents/ReactRouterLink.tsx +0 -27
  122. package/src/components/MarkdownViewer/CustomComponents/ResolvedImage.tsx +0 -86
  123. package/src/components/MarkdownViewer/CustomComponents/ScrollToHashElement.tsx +0 -96
  124. package/src/components/MarkdownViewer/MarkdownViewer.spec.tsx +0 -170
  125. package/src/components/MarkdownViewer/index.tsx +0 -10
  126. package/src/components/NonIdealState.tsx +0 -20
  127. package/src/components/PoweredByLink.tsx +0 -30
  128. package/src/components/RequestSamples/RequestSamples.stories.tsx +0 -67
  129. package/src/components/RequestSamples/RequestSamples.tsx +0 -246
  130. package/src/components/RequestSamples/__tests__/RequestSamples.test.tsx +0 -131
  131. package/src/components/RequestSamples/__tests__/__snapshots__/convertRequestToSample.spec.ts.snap +0 -746
  132. package/src/components/RequestSamples/__tests__/convertRequestToSample.spec.ts +0 -118
  133. package/src/components/RequestSamples/convertRequestToSample.ts +0 -56
  134. package/src/components/RequestSamples/extractCodeSamples.ts +0 -50
  135. package/src/components/RequestSamples/index.ts +0 -2
  136. package/src/components/RequestSamples/requestSampleConfigs.ts +0 -182
  137. package/src/components/ResponseExamples/ResponseExamples.spec.tsx +0 -121
  138. package/src/components/ResponseExamples/ResponseExamples.stories.tsx +0 -21
  139. package/src/components/ResponseExamples/ResponseExamples.tsx +0 -79
  140. package/src/components/TableOfContents/TableOfContents.spec.tsx +0 -301
  141. package/src/components/TableOfContents/TableOfContents.stories.tsx +0 -121
  142. package/src/components/TableOfContents/TableOfContents.tsx +0 -406
  143. package/src/components/TableOfContents/constants.ts +0 -45
  144. package/src/components/TableOfContents/index.ts +0 -2
  145. package/src/components/TableOfContents/types.ts +0 -51
  146. package/src/components/TableOfContents/utils.ts +0 -84
  147. package/src/components/TryIt/Auth/APIKeyAuth.tsx +0 -19
  148. package/src/components/TryIt/Auth/Auth.tsx +0 -169
  149. package/src/components/TryIt/Auth/AuthTokenInput.tsx +0 -37
  150. package/src/components/TryIt/Auth/BasicAuth.tsx +0 -62
  151. package/src/components/TryIt/Auth/BearerAuth.tsx +0 -19
  152. package/src/components/TryIt/Auth/DigestAuth.tsx +0 -35
  153. package/src/components/TryIt/Auth/OAuth2Auth.tsx +0 -19
  154. package/src/components/TryIt/Auth/authentication-utils.ts +0 -113
  155. package/src/components/TryIt/Body/BinaryBody.tsx +0 -52
  156. package/src/components/TryIt/Body/FormDataBody.tsx +0 -145
  157. package/src/components/TryIt/Body/RequestBody.tsx +0 -71
  158. package/src/components/TryIt/Body/__tests__/BinaryBody.test.tsx +0 -29
  159. package/src/components/TryIt/Body/__tests__/FormDataBody.test.tsx +0 -94
  160. package/src/components/TryIt/Body/request-body-utils.ts +0 -127
  161. package/src/components/TryIt/Body/useTextRequestBodyState.ts +0 -27
  162. package/src/components/TryIt/Mocking/MockingButton.tsx +0 -98
  163. package/src/components/TryIt/Mocking/mocking-utils.ts +0 -56
  164. package/src/components/TryIt/Mocking/useMockingOptions.ts +0 -6
  165. package/src/components/TryIt/Parameters/FileUploadParameterEditors.tsx +0 -62
  166. package/src/components/TryIt/Parameters/OperationParameters.tsx +0 -39
  167. package/src/components/TryIt/Parameters/ParameterEditor.tsx +0 -118
  168. package/src/components/TryIt/Parameters/__tests__/parameter-utils.spec.ts +0 -60
  169. package/src/components/TryIt/Parameters/parameter-utils.spec.ts +0 -118
  170. package/src/components/TryIt/Parameters/parameter-utils.ts +0 -179
  171. package/src/components/TryIt/Parameters/useOperationParameters.ts +0 -60
  172. package/src/components/TryIt/Response/ReponseCodeViewer.tsx +0 -28
  173. package/src/components/TryIt/Response/Response.spec.tsx +0 -174
  174. package/src/components/TryIt/Response/Response.tsx +0 -172
  175. package/src/components/TryIt/Response/hooks/useLineCount.ts +0 -7
  176. package/src/components/TryIt/Servers/ServerVariables.tsx +0 -33
  177. package/src/components/TryIt/Servers/ServersDropdown.tsx +0 -53
  178. package/src/components/TryIt/Servers/VariableEditor.tsx +0 -51
  179. package/src/components/TryIt/Servers/useServerVariables.ts +0 -19
  180. package/src/components/TryIt/TryIt.spec.tsx +0 -1511
  181. package/src/components/TryIt/TryIt.stories.tsx +0 -77
  182. package/src/components/TryIt/TryIt.tsx +0 -384
  183. package/src/components/TryIt/TryItWithRequestSamples.spec.tsx +0 -143
  184. package/src/components/TryIt/TryItWithRequestSamples.stories.tsx +0 -32
  185. package/src/components/TryIt/TryItWithRequestSamples.tsx +0 -42
  186. package/src/components/TryIt/build-request.spec.ts +0 -213
  187. package/src/components/TryIt/build-request.ts +0 -357
  188. package/src/components/TryIt/chosenServer.ts +0 -5
  189. package/src/components/TryIt/index.ts +0 -3
  190. package/src/components/__tests__/LinkHeading.spec.tsx +0 -125
  191. package/src/constants.ts +0 -176
  192. package/src/containers/MockingProvider.tsx +0 -23
  193. package/src/context/InlineRefResolver.spec.tsx +0 -183
  194. package/src/context/InlineRefResolver.tsx +0 -94
  195. package/src/context/Options.tsx +0 -27
  196. package/src/context/Persistence.tsx +0 -24
  197. package/src/context/RouterType.tsx +0 -9
  198. package/src/core.css +0 -97
  199. package/src/hoc/utils.ts +0 -5
  200. package/src/hoc/withMosaicProvider.spec.tsx +0 -48
  201. package/src/hoc/withMosaicProvider.tsx +0 -28
  202. package/src/hoc/withQueryClientProvider.spec.tsx +0 -38
  203. package/src/hoc/withQueryClientProvider.tsx +0 -35
  204. package/src/hoc/withRouter.tsx +0 -71
  205. package/src/hooks/useBundleRefsIntoDocument.ts +0 -60
  206. package/src/hooks/useFirstRender.ts +0 -8
  207. package/src/hooks/useIsCompact.ts +0 -26
  208. package/src/hooks/useParsedData.ts +0 -99
  209. package/src/hooks/useParsedValue.ts +0 -19
  210. package/src/hooks/useResponsiveLayout.tsx +0 -51
  211. package/src/hooks/useRouter.tsx +0 -31
  212. package/src/hooks/useUniqueId.ts +0 -4
  213. package/src/index.ts +0 -48
  214. package/src/styled.tsx +0 -22
  215. package/src/styles.css +0 -4
  216. package/src/types.ts +0 -170
  217. package/src/utils/__tests__/securitySchemes.spec.ts +0 -137
  218. package/src/utils/exampleGeneration/exampleGeneration.spec.tsx +0 -18
  219. package/src/utils/exampleGeneration/exampleGeneration.ts +0 -110
  220. package/src/utils/fileToBase64.ts +0 -11
  221. package/src/utils/guards.ts +0 -48
  222. package/src/utils/headers.ts +0 -316
  223. package/src/utils/http-spec/IServer.ts +0 -100
  224. package/src/utils/http-spec/__tests__/IServer.spec.ts +0 -51
  225. package/src/utils/http-spec/examples.ts +0 -5
  226. package/src/utils/http.ts +0 -9
  227. package/src/utils/jotai/persistAtom.ts +0 -31
  228. package/src/utils/node.ts +0 -19
  229. package/src/utils/oas/__tests__/security.spec.ts +0 -18
  230. package/src/utils/oas/security.ts +0 -76
  231. package/src/utils/ref-resolving/ReferenceResolver.ts +0 -29
  232. package/src/utils/ref-resolving/resolvedObject.test.ts +0 -415
  233. package/src/utils/ref-resolving/resolvedObject.ts +0 -109
  234. package/src/utils/securitySchemes.ts +0 -117
  235. package/src/utils/string.ts +0 -15
  236. package/src/utils/tests/chooseOption.ts +0 -7
  237. package/src/web-components/createElementClass.ts +0 -154
  238. package/tsconfig.build.json +0 -14
  239. package/tsconfig.json +0 -7
  240. /package/{dist/__fixtures__ → __fixtures__}/articles/schema-with-refs.d.ts +0 -0
  241. /package/{dist/__fixtures__ → __fixtures__}/operations/application-octet-stream-post.d.ts +0 -0
  242. /package/{dist/__fixtures__ → __fixtures__}/operations/base64-file-upload.d.ts +0 -0
  243. /package/{dist/__fixtures__ → __fixtures__}/operations/big-response.d.ts +0 -0
  244. /package/{dist/__fixtures__ → __fixtures__}/operations/examples-request-body.d.ts +0 -0
  245. /package/{dist/__fixtures__ → __fixtures__}/operations/head-todos.d.ts +0 -0
  246. /package/{dist/__fixtures__ → __fixtures__}/operations/multipart-formdata-post.d.ts +0 -0
  247. /package/{dist/__fixtures__ → __fixtures__}/operations/operation-minimal.d.ts +0 -0
  248. /package/{dist/__fixtures__ → __fixtures__}/operations/operation-parameters.d.ts +0 -0
  249. /package/{dist/__fixtures__ → __fixtures__}/operations/operation-with-examples.d.ts +0 -0
  250. /package/{dist/__fixtures__ → __fixtures__}/operations/operation-without-servers.d.ts +0 -0
  251. /package/{dist/__fixtures__ → __fixtures__}/operations/patch-todos.d.ts +0 -0
  252. /package/{dist/__fixtures__ → __fixtures__}/operations/put-todos.d.ts +0 -0
  253. /package/{dist/__fixtures__ → __fixtures__}/operations/referenced-body.d.ts +0 -0
  254. /package/{dist/__fixtures__ → __fixtures__}/operations/request-body-empty-schema.d.ts +0 -0
  255. /package/{dist/__fixtures__ → __fixtures__}/operations/request-body.d.ts +0 -0
  256. /package/{dist/__fixtures__ → __fixtures__}/operations/securedOperation.d.ts +0 -0
  257. /package/{dist/__fixtures__ → __fixtures__}/operations/security-basic.d.ts +0 -0
  258. /package/{dist/__fixtures__ → __fixtures__}/operations/security-bearer.d.ts +0 -0
  259. /package/{dist/__fixtures__ → __fixtures__}/operations/simple-get.d.ts +0 -0
  260. /package/{dist/__fixtures__ → __fixtures__}/operations/string-numeric-enums.d.ts +0 -0
  261. /package/{dist/__fixtures__ → __fixtures__}/operations/urlencoded-post-oneof.d.ts +0 -0
  262. /package/{dist/__fixtures__ → __fixtures__}/operations/urlencoded-post.d.ts +0 -0
  263. /package/{dist/__fixtures__ → __fixtures__}/operations/with-url-variables.d.ts +0 -0
  264. /package/{dist/__fixtures__ → __fixtures__}/security-schemes/index.d.ts +0 -0
  265. /package/{dist/__fixtures__ → __fixtures__}/services/petstore.d.ts +0 -0
  266. /package/{dist/__fixtures__ → __fixtures__}/services/with-unnamed-servers.d.ts +0 -0
  267. /package/{dist/__fixtures__ → __fixtures__}/services/with-url-variables.d.ts +0 -0
  268. /package/{dist/__fixtures__ → __fixtures__}/services/without-origin.d.ts +0 -0
  269. /package/{dist/components → components}/Docs/Article/Article.spec.d.ts +0 -0
  270. /package/{dist/components → components}/Docs/Article/Article.stories.d.ts +0 -0
  271. /package/{dist/components → components}/Docs/Article/index.d.ts +0 -0
  272. /package/{dist/components → components}/Docs/Docs.stories.d.ts +0 -0
  273. /package/{dist/components → components}/Docs/HttpOperation/Badges.d.ts +0 -0
  274. /package/{dist/components → components}/Docs/HttpOperation/Callbacks.d.ts +0 -0
  275. /package/{dist/components → components}/Docs/HttpOperation/HttpOperation.spec.d.ts +0 -0
  276. /package/{dist/components → components}/Docs/HttpOperation/HttpOperation.stories.d.ts +0 -0
  277. /package/{dist/components → components}/Docs/HttpOperation/Parameters.d.ts +0 -0
  278. /package/{dist/components → components}/Docs/HttpOperation/Parameters.spec.d.ts +0 -0
  279. /package/{dist/components → components}/Docs/HttpOperation/index.d.ts +0 -0
  280. /package/{dist/components → components}/Docs/HttpService/AdditionalInfo.d.ts +0 -0
  281. /package/{dist/components → components}/Docs/HttpService/AdditionalInfo.stories.d.ts +0 -0
  282. /package/{dist/components → components}/Docs/HttpService/ExportButton.d.ts +0 -0
  283. /package/{dist/components → components}/Docs/HttpService/HttpService.d.ts +0 -0
  284. /package/{dist/components → components}/Docs/HttpService/HttpService.spec.d.ts +0 -0
  285. /package/{dist/components → components}/Docs/HttpService/HttpService.stories.d.ts +0 -0
  286. /package/{dist/components → components}/Docs/HttpService/SecuritySchemes.d.ts +0 -0
  287. /package/{dist/components → components}/Docs/HttpService/ServerInfo.d.ts +0 -0
  288. /package/{dist/components → components}/Docs/HttpService/index.d.ts +0 -0
  289. /package/{dist/components → components}/Docs/Model/Model.d.ts +0 -0
  290. /package/{dist/components → components}/Docs/Model/Model.spec.d.ts +0 -0
  291. /package/{dist/components → components}/Docs/Model/Model.stories.d.ts +0 -0
  292. /package/{dist/components → components}/Docs/Model/index.d.ts +0 -0
  293. /package/{dist/components → components}/Docs/NodeVendorExtensions.d.ts +0 -0
  294. /package/{dist/components → components}/Docs/Sections.d.ts +0 -0
  295. /package/{dist/components → components}/Docs/Security/PanelContent.d.ts +0 -0
  296. /package/{dist/components → components}/Docs/Security/index.d.ts +0 -0
  297. /package/{dist/components → components}/Docs/Skeleton.d.ts +0 -0
  298. /package/{dist/components → components}/Docs/TwoColumnLayout.d.ts +0 -0
  299. /package/{dist/components → components}/Docs/index.d.ts +0 -0
  300. /package/{dist/components → components}/Docs/story-helper.d.ts +0 -0
  301. /package/{dist/components → components}/Docs/story-renderer-helper.d.ts +0 -0
  302. /package/{dist/components → components}/Layout/MobileTopNav.d.ts +0 -0
  303. /package/{dist/components → components}/Layout/ResponsiveSidebarLayout.d.ts +0 -0
  304. /package/{dist/components → components}/Layout/SidebarLayout.d.ts +0 -0
  305. /package/{dist/components → components}/LinkHeading.d.ts +0 -0
  306. /package/{dist/components → components}/LoadMore.d.ts +0 -0
  307. /package/{dist/components → components}/Loading/Loading.d.ts +0 -0
  308. /package/{dist/components → components}/Logo.d.ts +0 -0
  309. /package/{dist/components → components}/MarkdownViewer/CustomComponents/CodeComponent.d.ts +0 -0
  310. /package/{dist/components → components}/MarkdownViewer/CustomComponents/CodeComponent.spec.d.ts +0 -0
  311. /package/{dist/components → components}/MarkdownViewer/CustomComponents/Provider.d.ts +0 -0
  312. /package/{dist/components → components}/MarkdownViewer/CustomComponents/ReactRouterLink.d.ts +0 -0
  313. /package/{dist/components → components}/MarkdownViewer/CustomComponents/ResolvedImage.d.ts +0 -0
  314. /package/{dist/components → components}/MarkdownViewer/CustomComponents/ScrollToHashElement.d.ts +0 -0
  315. /package/{dist/components → components}/MarkdownViewer/MarkdownViewer.spec.d.ts +0 -0
  316. /package/{dist/components → components}/MarkdownViewer/index.d.ts +0 -0
  317. /package/{dist/components → components}/NonIdealState.d.ts +0 -0
  318. /package/{dist/components → components}/PoweredByLink.d.ts +0 -0
  319. /package/{dist/components → components}/RequestSamples/RequestSamples.d.ts +0 -0
  320. /package/{dist/components → components}/RequestSamples/RequestSamples.stories.d.ts +0 -0
  321. /package/{dist/components → components}/RequestSamples/convertRequestToSample.d.ts +0 -0
  322. /package/{dist/components → components}/RequestSamples/extractCodeSamples.d.ts +0 -0
  323. /package/{dist/components → components}/RequestSamples/index.d.ts +0 -0
  324. /package/{dist/components → components}/RequestSamples/requestSampleConfigs.d.ts +0 -0
  325. /package/{dist/components → components}/ResponseExamples/ResponseExamples.d.ts +0 -0
  326. /package/{dist/components → components}/ResponseExamples/ResponseExamples.spec.d.ts +0 -0
  327. /package/{dist/components → components}/ResponseExamples/ResponseExamples.stories.d.ts +0 -0
  328. /package/{dist/components → components}/TableOfContents/TableOfContents.d.ts +0 -0
  329. /package/{dist/components → components}/TableOfContents/TableOfContents.spec.d.ts +0 -0
  330. /package/{dist/components → components}/TableOfContents/TableOfContents.stories.d.ts +0 -0
  331. /package/{dist/components → components}/TableOfContents/constants.d.ts +0 -0
  332. /package/{dist/components → components}/TableOfContents/index.d.ts +0 -0
  333. /package/{dist/components → components}/TableOfContents/utils.d.ts +0 -0
  334. /package/{dist/components → components}/TryIt/Auth/APIKeyAuth.d.ts +0 -0
  335. /package/{dist/components → components}/TryIt/Auth/Auth.d.ts +0 -0
  336. /package/{dist/components → components}/TryIt/Auth/AuthTokenInput.d.ts +0 -0
  337. /package/{dist/components → components}/TryIt/Auth/BasicAuth.d.ts +0 -0
  338. /package/{dist/components → components}/TryIt/Auth/BearerAuth.d.ts +0 -0
  339. /package/{dist/components → components}/TryIt/Auth/DigestAuth.d.ts +0 -0
  340. /package/{dist/components → components}/TryIt/Auth/OAuth2Auth.d.ts +0 -0
  341. /package/{dist/components → components}/TryIt/Auth/authentication-utils.d.ts +0 -0
  342. /package/{dist/components → components}/TryIt/Body/BinaryBody.d.ts +0 -0
  343. /package/{dist/components → components}/TryIt/Body/FormDataBody.d.ts +0 -0
  344. /package/{dist/components → components}/TryIt/Body/RequestBody.d.ts +0 -0
  345. /package/{dist/components → components}/TryIt/Body/request-body-utils.d.ts +0 -0
  346. /package/{dist/components → components}/TryIt/Body/useTextRequestBodyState.d.ts +0 -0
  347. /package/{dist/components → components}/TryIt/Mocking/MockingButton.d.ts +0 -0
  348. /package/{dist/components → components}/TryIt/Mocking/mocking-utils.d.ts +0 -0
  349. /package/{dist/components → components}/TryIt/Mocking/useMockingOptions.d.ts +0 -0
  350. /package/{dist/components → components}/TryIt/Parameters/FileUploadParameterEditors.d.ts +0 -0
  351. /package/{dist/components → components}/TryIt/Parameters/OperationParameters.d.ts +0 -0
  352. /package/{dist/components → components}/TryIt/Parameters/ParameterEditor.d.ts +0 -0
  353. /package/{dist/components → components}/TryIt/Parameters/parameter-utils.d.ts +0 -0
  354. /package/{dist/components → components}/TryIt/Parameters/parameter-utils.spec.d.ts +0 -0
  355. /package/{dist/components → components}/TryIt/Parameters/useOperationParameters.d.ts +0 -0
  356. /package/{dist/components → components}/TryIt/Response/ReponseCodeViewer.d.ts +0 -0
  357. /package/{dist/components → components}/TryIt/Response/Response.d.ts +0 -0
  358. /package/{dist/components → components}/TryIt/Response/Response.spec.d.ts +0 -0
  359. /package/{dist/components → components}/TryIt/Response/hooks/useLineCount.d.ts +0 -0
  360. /package/{dist/components → components}/TryIt/Servers/ServerVariables.d.ts +0 -0
  361. /package/{dist/components → components}/TryIt/Servers/ServersDropdown.d.ts +0 -0
  362. /package/{dist/components → components}/TryIt/Servers/VariableEditor.d.ts +0 -0
  363. /package/{dist/components → components}/TryIt/Servers/useServerVariables.d.ts +0 -0
  364. /package/{dist/components → components}/TryIt/TryIt.d.ts +0 -0
  365. /package/{dist/components → components}/TryIt/TryIt.spec.d.ts +0 -0
  366. /package/{dist/components → components}/TryIt/TryIt.stories.d.ts +0 -0
  367. /package/{dist/components → components}/TryIt/TryItWithRequestSamples.d.ts +0 -0
  368. /package/{dist/components → components}/TryIt/TryItWithRequestSamples.spec.d.ts +0 -0
  369. /package/{dist/components → components}/TryIt/TryItWithRequestSamples.stories.d.ts +0 -0
  370. /package/{dist/components → components}/TryIt/build-request.d.ts +0 -0
  371. /package/{dist/components → components}/TryIt/build-request.spec.d.ts +0 -0
  372. /package/{dist/components → components}/TryIt/chosenServer.d.ts +0 -0
  373. /package/{dist/components → components}/TryIt/index.d.ts +0 -0
  374. /package/{dist/constants.d.ts → constants.d.ts} +0 -0
  375. /package/{dist/containers → containers}/MockingProvider.d.ts +0 -0
  376. /package/{dist/context → context}/InlineRefResolver.d.ts +0 -0
  377. /package/{dist/context → context}/InlineRefResolver.spec.d.ts +0 -0
  378. /package/{dist/context → context}/Options.d.ts +0 -0
  379. /package/{dist/context → context}/Persistence.d.ts +0 -0
  380. /package/{dist/context → context}/RouterType.d.ts +0 -0
  381. /package/{dist/core.css → core.css} +0 -0
  382. /package/{dist/hoc → hoc}/utils.d.ts +0 -0
  383. /package/{dist/hoc → hoc}/withMosaicProvider.d.ts +0 -0
  384. /package/{dist/hoc → hoc}/withMosaicProvider.spec.d.ts +0 -0
  385. /package/{dist/hoc → hoc}/withQueryClientProvider.d.ts +0 -0
  386. /package/{dist/hoc → hoc}/withQueryClientProvider.spec.d.ts +0 -0
  387. /package/{dist/hoc → hoc}/withRouter.d.ts +0 -0
  388. /package/{dist/hooks → hooks}/useBundleRefsIntoDocument.d.ts +0 -0
  389. /package/{dist/hooks → hooks}/useFirstRender.d.ts +0 -0
  390. /package/{dist/hooks → hooks}/useIsCompact.d.ts +0 -0
  391. /package/{dist/hooks → hooks}/useParsedData.d.ts +0 -0
  392. /package/{dist/hooks → hooks}/useParsedValue.d.ts +0 -0
  393. /package/{dist/hooks → hooks}/useResponsiveLayout.d.ts +0 -0
  394. /package/{dist/hooks → hooks}/useRouter.d.ts +0 -0
  395. /package/{dist/hooks → hooks}/useUniqueId.d.ts +0 -0
  396. /package/{dist/index.d.ts → index.d.ts} +0 -0
  397. /package/{dist/styled.d.ts → styled.d.ts} +0 -0
  398. /package/{dist/styles.min.css → styles.min.css} +0 -0
  399. /package/{dist/types.d.ts → types.d.ts} +0 -0
  400. /package/{dist/utils → utils}/exampleGeneration/exampleGeneration.d.ts +0 -0
  401. /package/{dist/utils → utils}/exampleGeneration/exampleGeneration.spec.d.ts +0 -0
  402. /package/{dist/utils → utils}/fileToBase64.d.ts +0 -0
  403. /package/{dist/utils → utils}/guards.d.ts +0 -0
  404. /package/{dist/utils → utils}/headers.d.ts +0 -0
  405. /package/{dist/utils → utils}/http-spec/IServer.d.ts +0 -0
  406. /package/{dist/utils → utils}/http-spec/examples.d.ts +0 -0
  407. /package/{dist/utils → utils}/http.d.ts +0 -0
  408. /package/{dist/utils → utils}/jotai/persistAtom.d.ts +0 -0
  409. /package/{dist/utils → utils}/node.d.ts +0 -0
  410. /package/{dist/utils → utils}/oas/security.d.ts +0 -0
  411. /package/{dist/utils → utils}/ref-resolving/ReferenceResolver.d.ts +0 -0
  412. /package/{dist/utils → utils}/ref-resolving/resolvedObject.d.ts +0 -0
  413. /package/{dist/utils → utils}/ref-resolving/resolvedObject.test.d.ts +0 -0
  414. /package/{dist/utils → utils}/securitySchemes.d.ts +0 -0
  415. /package/{dist/utils → utils}/string.d.ts +0 -0
  416. /package/{dist/utils → utils}/tests/chooseOption.d.ts +0 -0
  417. /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
- }