fix: multipart enum initial value not set (#7004)
This commit is contained in:
@@ -155,11 +155,18 @@ const RequestBody = ({
|
|||||||
const currentValue = requestBodyValue.getIn([key, "value"])
|
const currentValue = requestBodyValue.getIn([key, "value"])
|
||||||
const currentErrors = requestBodyValue.getIn([key, "errors"]) || requestBodyErrors
|
const currentErrors = requestBodyValue.getIn([key, "errors"]) || requestBodyErrors
|
||||||
const included = requestBodyInclusionSetting.get(key) || false
|
const included = requestBodyInclusionSetting.get(key) || false
|
||||||
let hasNonEmptyInitialVal = prop.has("default") || prop.has("example") || prop.hasIn(["items", "example"]) || prop.hasIn(["items", "default"]) || prop.has("enum") && prop.get("enum").size === 1
|
|
||||||
|
const useInitialValFromSchemaSamples = prop.has("default")
|
||||||
|
|| prop.has("example")
|
||||||
|
|| prop.hasIn(["items", "example"])
|
||||||
|
|| prop.hasIn(["items", "default"])
|
||||||
|
const useInitialValFromEnum = prop.has("enum") && (prop.get("enum").size === 1 || required)
|
||||||
|
const useInitialValue = useInitialValFromSchemaSamples || useInitialValFromEnum
|
||||||
|
|
||||||
let initialValue = ""
|
let initialValue = ""
|
||||||
if(type === "array" && !hasNonEmptyInitialVal) {
|
if(type === "array" && !useInitialValue) {
|
||||||
initialValue = []
|
initialValue = []
|
||||||
} else if (hasNonEmptyInitialVal) {
|
} else if (useInitialValue) {
|
||||||
// TODO: what about example or examples from requestBody could be passed as exampleOverride
|
// TODO: what about example or examples from requestBody could be passed as exampleOverride
|
||||||
initialValue = getSampleSchema(prop, false, {
|
initialValue = getSampleSchema(prop, false, {
|
||||||
includeWriteOnly: true
|
includeWriteOnly: true
|
||||||
|
|||||||
@@ -0,0 +1,29 @@
|
|||||||
|
openapi: 3.0.3
|
||||||
|
info:
|
||||||
|
title: asd
|
||||||
|
version: 0.0.1
|
||||||
|
paths:
|
||||||
|
/test:
|
||||||
|
post:
|
||||||
|
requestBody:
|
||||||
|
content:
|
||||||
|
multipart/form-data:
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/TestBody'
|
||||||
|
responses:
|
||||||
|
200:
|
||||||
|
description: ok
|
||||||
|
components:
|
||||||
|
schemas:
|
||||||
|
TestBody:
|
||||||
|
required:
|
||||||
|
- test_enum
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
test_enum:
|
||||||
|
allOf:
|
||||||
|
- $ref: "#/components/schemas/TestEnum"
|
||||||
|
TestEnum:
|
||||||
|
enum:
|
||||||
|
- A
|
||||||
|
- B
|
||||||
@@ -1,12 +1,16 @@
|
|||||||
const getRequestBodyFromCY = (page = null) =>
|
function getExpandedTryout(page = null, operationId = "#operations-pet-addPet") {
|
||||||
(page || cy.visit(
|
return (page || cy.visit(
|
||||||
"/?url=/documents/features/petstore-only-pet.openapi.yaml",
|
"/?url=/documents/features/petstore-only-pet.openapi.yaml",
|
||||||
))
|
))
|
||||||
.get("#operations-pet-addPet")
|
.get(operationId)
|
||||||
.click()
|
.click()
|
||||||
// Expand Try It Out
|
// Expand Try It Out
|
||||||
.get(".try-out__btn")
|
.get(".try-out__btn")
|
||||||
.click()
|
.click()
|
||||||
|
}
|
||||||
|
|
||||||
|
const getRequestBodyFromCY = (page = null, operationId = "#operations-pet-addPet") =>
|
||||||
|
getExpandedTryout(page, operationId)
|
||||||
// get textarea
|
// get textarea
|
||||||
.get(".opblock-body .opblock-section .opblock-section-request-body .body-param textarea")
|
.get(".opblock-body .opblock-section .opblock-section-request-body .body-param textarea")
|
||||||
|
|
||||||
@@ -84,4 +88,19 @@ describe("OAS3 Request Body user edit flows", () => {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
describe("multipart/", () => {
|
||||||
|
// Case: User wants to execute operation with media-type multipart/ with a enum property. The user expects the first enum value to be used when execuded.
|
||||||
|
it("should use the first enum value on execute if not changed by user (#6976)", () => {
|
||||||
|
// test/e2e-cypress/static/documents/features/request-body/multipart/enum.yaml
|
||||||
|
getExpandedTryout(
|
||||||
|
cy.visit(
|
||||||
|
"/?url=/documents/features/request-body/multipart/enum.yaml",
|
||||||
|
), "#operations-default-post_test")
|
||||||
|
.get(".execute")
|
||||||
|
.click()
|
||||||
|
// Assert on the request URL
|
||||||
|
.get(".curl")
|
||||||
|
.contains("test_enum=A")
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user