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 currentErrors = requestBodyValue.getIn([key, "errors"]) || requestBodyErrors
|
||||
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 = ""
|
||||
if(type === "array" && !hasNonEmptyInitialVal) {
|
||||
if(type === "array" && !useInitialValue) {
|
||||
initialValue = []
|
||||
} else if (hasNonEmptyInitialVal) {
|
||||
} else if (useInitialValue) {
|
||||
// TODO: what about example or examples from requestBody could be passed as exampleOverride
|
||||
initialValue = getSampleSchema(prop, false, {
|
||||
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) =>
|
||||
(page || cy.visit(
|
||||
function getExpandedTryout(page = null, operationId = "#operations-pet-addPet") {
|
||||
return (page || cy.visit(
|
||||
"/?url=/documents/features/petstore-only-pet.openapi.yaml",
|
||||
))
|
||||
.get("#operations-pet-addPet")
|
||||
.get(operationId)
|
||||
.click()
|
||||
// Expand Try It Out
|
||||
.get(".try-out__btn")
|
||||
.click()
|
||||
}
|
||||
|
||||
const getRequestBodyFromCY = (page = null, operationId = "#operations-pet-addPet") =>
|
||||
getExpandedTryout(page, operationId)
|
||||
// get 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