fix: multipart array sample generation for items (#6461)
* json schema array component should use schema to generate example in case of array items. * empty value checkbox should be disabled if not empty => not empty list || not empty string * curl should also check for not empty list
This commit is contained in:
@@ -4,7 +4,7 @@ import { List, fromJS } from "immutable"
|
|||||||
import cx from "classnames"
|
import cx from "classnames"
|
||||||
import ImPropTypes from "react-immutable-proptypes"
|
import ImPropTypes from "react-immutable-proptypes"
|
||||||
import DebounceInput from "react-debounce-input"
|
import DebounceInput from "react-debounce-input"
|
||||||
import { stringify } from "core/utils"
|
import { stringify, getSampleSchema } from "core/utils"
|
||||||
//import "less/json-schema-form"
|
//import "less/json-schema-form"
|
||||||
|
|
||||||
const noop = ()=> {}
|
const noop = ()=> {}
|
||||||
@@ -125,12 +125,15 @@ export class JsonSchema_array extends PureComponent {
|
|||||||
|
|
||||||
constructor(props, context) {
|
constructor(props, context) {
|
||||||
super(props, context)
|
super(props, context)
|
||||||
this.state = { value: valueOrEmptyList(props.value) }
|
this.state = { value: valueOrEmptyList(props.value), schema: props.schema}
|
||||||
}
|
}
|
||||||
|
|
||||||
componentWillReceiveProps(props) {
|
componentWillReceiveProps(props) {
|
||||||
if(props.value !== this.state.value)
|
if(props.value !== this.state.value)
|
||||||
this.setState({ value: props.value })
|
this.setState({ value: props.value })
|
||||||
|
|
||||||
|
if(props.schema !== this.state.schema)
|
||||||
|
this.setState({ schema: props.schema })
|
||||||
}
|
}
|
||||||
|
|
||||||
onChange = () => {
|
onChange = () => {
|
||||||
@@ -152,7 +155,9 @@ export class JsonSchema_array extends PureComponent {
|
|||||||
addItem = () => {
|
addItem = () => {
|
||||||
let newValue = valueOrEmptyList(this.state.value)
|
let newValue = valueOrEmptyList(this.state.value)
|
||||||
this.setState(() => ({
|
this.setState(() => ({
|
||||||
value: newValue.push("")
|
value: newValue.push(getSampleSchema(this.state.schema.get("items"), false, {
|
||||||
|
includeWriteOnly: true
|
||||||
|
}))
|
||||||
}), this.onChange)
|
}), this.onChange)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -145,10 +145,14 @@ const RequestBody = ({
|
|||||||
|
|
||||||
let initialValue = prop.get("default") || prop.get("example") || ""
|
let initialValue = prop.get("default") || prop.get("example") || ""
|
||||||
|
|
||||||
if (initialValue === "" && type === "object") {
|
if (initialValue === "") {
|
||||||
|
if(type === "object") {
|
||||||
initialValue = getSampleSchema(prop, false, {
|
initialValue = getSampleSchema(prop, false, {
|
||||||
includeWriteOnly: true
|
includeWriteOnly: true
|
||||||
})
|
})
|
||||||
|
} else if(type === "array") {
|
||||||
|
initialValue = []
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (typeof initialValue !== "string" && type === "object") {
|
if (typeof initialValue !== "string" && type === "object") {
|
||||||
@@ -193,7 +197,7 @@ const RequestBody = ({
|
|||||||
onChange={(value) => onChangeIncludeEmpty(key, value)}
|
onChange={(value) => onChangeIncludeEmpty(key, value)}
|
||||||
isIncluded={requestBodyInclusionSetting.get(key) || false}
|
isIncluded={requestBodyInclusionSetting.get(key) || false}
|
||||||
isIncludedOptions={setIsIncludedOptions(key)}
|
isIncludedOptions={setIsIncludedOptions(key)}
|
||||||
isDisabled={!isEmptyValue(currentValue)}
|
isDisabled={Array.isArray(currentValue) ? currentValue.length !== 0 : !isEmptyValue(currentValue)}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
</div> : null }
|
</div> : null }
|
||||||
|
|||||||
@@ -416,7 +416,10 @@ export const executeRequest = (req) =>
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
.filter(
|
.filter(
|
||||||
(value, key) => !isEmptyValue(value) || requestBodyInclusionSetting.get(key)
|
(value, key) => (Array.isArray(value)
|
||||||
|
? value.length !== 0
|
||||||
|
: !isEmptyValue(value)
|
||||||
|
) || requestBodyInclusionSetting.get(key)
|
||||||
)
|
)
|
||||||
.toJS()
|
.toJS()
|
||||||
} else{
|
} else{
|
||||||
|
|||||||
@@ -97,6 +97,8 @@ describe("OpenAPI 3.0 Allow Empty Values in Request Body", () => {
|
|||||||
// add item to pass required validation
|
// add item to pass required validation
|
||||||
.get(".opblock-body .opblock-section .opblock-section-request-body .parameters:nth-child(4) > .parameters-col_description button")
|
.get(".opblock-body .opblock-section .opblock-section-request-body .parameters:nth-child(4) > .parameters-col_description button")
|
||||||
.click()
|
.click()
|
||||||
|
.get(".opblock-body .opblock-section .opblock-section-request-body .parameters:nth-child(4) input")
|
||||||
|
.clear()
|
||||||
// Execute
|
// Execute
|
||||||
.get(".execute.opblock-control__btn")
|
.get(".execute.opblock-control__btn")
|
||||||
.click()
|
.click()
|
||||||
@@ -127,6 +129,8 @@ describe("OpenAPI 3.0 Allow Empty Values in Request Body", () => {
|
|||||||
// add item to pass required validation
|
// add item to pass required validation
|
||||||
.get(".opblock-body .opblock-section .opblock-section-request-body .parameters:nth-child(4) > .parameters-col_description button")
|
.get(".opblock-body .opblock-section .opblock-section-request-body .parameters:nth-child(4) > .parameters-col_description button")
|
||||||
.click()
|
.click()
|
||||||
|
.get(".opblock-body .opblock-section .opblock-section-request-body .parameters:nth-child(4) input")
|
||||||
|
.clear()
|
||||||
// Execute
|
// Execute
|
||||||
.get(".execute.opblock-control__btn")
|
.get(".execute.opblock-control__btn")
|
||||||
.click()
|
.click()
|
||||||
|
|||||||
@@ -149,7 +149,7 @@ describe("OpenAPI 3.0 Validation for Required Request Body and Request Body Fiel
|
|||||||
.should("have.value", "doggie")
|
.should("have.value", "doggie")
|
||||||
.should("not.have.class", "invalid")
|
.should("not.have.class", "invalid")
|
||||||
.get(".opblock-body .opblock-section .opblock-section-request-body .parameters:nth-child(4) > .parameters-col_description input")
|
.get(".opblock-body .opblock-section .opblock-section-request-body .parameters:nth-child(4) > .parameters-col_description input")
|
||||||
.should("have.value", "")
|
.should("have.value", "string")
|
||||||
.should("not.have.class", "invalid")
|
.should("not.have.class", "invalid")
|
||||||
// cURL component should exist
|
// cURL component should exist
|
||||||
.get(".responses-wrapper .curl-command")
|
.get(".responses-wrapper .curl-command")
|
||||||
|
|||||||
@@ -305,7 +305,7 @@ describe("OpenAPI 3.0 Additional JsonSchemaForm in a Parameter", () => {
|
|||||||
.get(".json-schema-form-item-add")
|
.get(".json-schema-form-item-add")
|
||||||
.click()
|
.click()
|
||||||
.get(".json-schema-form-item > input")
|
.get(".json-schema-form-item > input")
|
||||||
.type("spotted")
|
.type("{selectall}spotted")
|
||||||
// Assert against the input fields
|
// Assert against the input fields
|
||||||
.get(".json-schema-form-item > input")
|
.get(".json-schema-form-item > input")
|
||||||
.then(inputs => {
|
.then(inputs => {
|
||||||
@@ -327,7 +327,7 @@ describe("OpenAPI 3.0 Additional JsonSchemaForm in a Parameter", () => {
|
|||||||
.get(".json-schema-form-item-add")
|
.get(".json-schema-form-item-add")
|
||||||
.click()
|
.click()
|
||||||
.get(".json-schema-form-item:last-of-type > input")
|
.get(".json-schema-form-item:last-of-type > input")
|
||||||
.type("spotted")
|
.type("{selectall}spotted")
|
||||||
// Assert against the input fields
|
// Assert against the input fields
|
||||||
.get(".json-schema-form-item > input")
|
.get(".json-schema-form-item > input")
|
||||||
.then(inputs => {
|
.then(inputs => {
|
||||||
@@ -354,7 +354,7 @@ describe("OpenAPI 3.0 Additional JsonSchemaForm in a Parameter", () => {
|
|||||||
.get(".json-schema-form-item-add")
|
.get(".json-schema-form-item-add")
|
||||||
.click()
|
.click()
|
||||||
.get(".json-schema-form-item:last-of-type > input")
|
.get(".json-schema-form-item:last-of-type > input")
|
||||||
.type("spotted")
|
.type("{selectall}spotted")
|
||||||
// Assert against the input fields
|
// Assert against the input fields
|
||||||
.get(".json-schema-form-item > input")
|
.get(".json-schema-form-item > input")
|
||||||
.then(inputs => {
|
.then(inputs => {
|
||||||
@@ -366,7 +366,7 @@ describe("OpenAPI 3.0 Additional JsonSchemaForm in a Parameter", () => {
|
|||||||
.get(".json-schema-form-item-add")
|
.get(".json-schema-form-item-add")
|
||||||
.click()
|
.click()
|
||||||
.get(".json-schema-form-item:last-of-type > input")
|
.get(".json-schema-form-item:last-of-type > input")
|
||||||
.type("large")
|
.type("{selectall}large")
|
||||||
// Assert against the input fields
|
// Assert against the input fields
|
||||||
.get(".json-schema-form-item > input")
|
.get(".json-schema-form-item > input")
|
||||||
.then(inputs => {
|
.then(inputs => {
|
||||||
@@ -379,7 +379,7 @@ describe("OpenAPI 3.0 Additional JsonSchemaForm in a Parameter", () => {
|
|||||||
.get(".json-schema-form-item-add")
|
.get(".json-schema-form-item-add")
|
||||||
.click()
|
.click()
|
||||||
.get(".json-schema-form-item:last-of-type > input")
|
.get(".json-schema-form-item:last-of-type > input")
|
||||||
.type("puppy")
|
.type("{selectall}puppy")
|
||||||
// Assert against the input fields
|
// Assert against the input fields
|
||||||
.get(".json-schema-form-item > input")
|
.get(".json-schema-form-item > input")
|
||||||
.then(inputs => {
|
.then(inputs => {
|
||||||
@@ -454,7 +454,7 @@ describe("OpenAPI 3.0 Additional JsonSchemaForm in a Parameter", () => {
|
|||||||
.get(".json-schema-form-item-add")
|
.get(".json-schema-form-item-add")
|
||||||
.click()
|
.click()
|
||||||
.get(".json-schema-form-item > input")
|
.get(".json-schema-form-item > input")
|
||||||
.type("spotted")
|
.type("{selectall}spotted")
|
||||||
// Assert against the input fields
|
// Assert against the input fields
|
||||||
.get(".json-schema-form-item > input")
|
.get(".json-schema-form-item > input")
|
||||||
.then(inputs => {
|
.then(inputs => {
|
||||||
@@ -485,7 +485,7 @@ describe("OpenAPI 3.0 Additional JsonSchemaForm in a Parameter", () => {
|
|||||||
.get(".json-schema-form-item-add")
|
.get(".json-schema-form-item-add")
|
||||||
.click()
|
.click()
|
||||||
.get(".json-schema-form-item:last-of-type > input")
|
.get(".json-schema-form-item:last-of-type > input")
|
||||||
.type("spotted")
|
.type("{selectall}spotted")
|
||||||
// Assert against the input fields
|
// Assert against the input fields
|
||||||
.get(".json-schema-form-item > input")
|
.get(".json-schema-form-item > input")
|
||||||
.then(inputs => {
|
.then(inputs => {
|
||||||
@@ -497,7 +497,7 @@ describe("OpenAPI 3.0 Additional JsonSchemaForm in a Parameter", () => {
|
|||||||
.get(".json-schema-form-item-add")
|
.get(".json-schema-form-item-add")
|
||||||
.click()
|
.click()
|
||||||
.get(".json-schema-form-item:last-of-type > input")
|
.get(".json-schema-form-item:last-of-type > input")
|
||||||
.type("large")
|
.type("{selectall}large")
|
||||||
// Assert against the input fields
|
// Assert against the input fields
|
||||||
.get(".json-schema-form-item > input")
|
.get(".json-schema-form-item > input")
|
||||||
.then(inputs => {
|
.then(inputs => {
|
||||||
@@ -510,7 +510,7 @@ describe("OpenAPI 3.0 Additional JsonSchemaForm in a Parameter", () => {
|
|||||||
.get(".json-schema-form-item-add")
|
.get(".json-schema-form-item-add")
|
||||||
.click()
|
.click()
|
||||||
.get(".json-schema-form-item:last-of-type > input")
|
.get(".json-schema-form-item:last-of-type > input")
|
||||||
.type("puppy")
|
.type("{selectall}puppy")
|
||||||
// Assert against the input fields
|
// Assert against the input fields
|
||||||
.get(".json-schema-form-item > input")
|
.get(".json-schema-form-item > input")
|
||||||
.then(inputs => {
|
.then(inputs => {
|
||||||
|
|||||||
Reference in New Issue
Block a user