fix: multipart enum initial value not set (#7004)

This commit is contained in:
Mahtis Michel
2021-03-03 21:49:56 +01:00
committed by GitHub
parent d32bd1ab7c
commit 68bd61a682
3 changed files with 61 additions and 6 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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")
})
})
}) })