diff --git a/src/core/components/parameter-row.jsx b/src/core/components/parameter-row.jsx index 04466a38..456a8e63 100644 --- a/src/core/components/parameter-row.jsx +++ b/src/core/components/parameter-row.jsx @@ -81,12 +81,11 @@ export default class ParameterRow extends Component { const Markdown = getComponent("Markdown") let schema = param.get("schema") - let type = isOAS3 && isOAS3() ? param.getIn(["schema", "type"]) : param.get("type") let isFormData = inType === "formData" let isFormDataSupported = "FormData" in win let required = param.get("required") - let itemType = param.getIn(isOAS3 && isOAS3() ? ["schema", "items", "type"] : ["items", "type"]) + let itemType = param.getIn(isOAS3 && isOAS3() ? ["schema", "items", "type"] : ["items", "type"]) let parameter = specSelectors.getParameter(pathMethod, param.get("name")) let value = parameter ? parameter.get("value") : "" diff --git a/src/core/components/response.jsx b/src/core/components/response.jsx index 8c0a8bf1..02662f90 100644 --- a/src/core/components/response.jsx +++ b/src/core/components/response.jsx @@ -1,7 +1,7 @@ import React from "react" import PropTypes from "prop-types" import { fromJS, Seq } from "immutable" -import { getSampleSchema } from "core/utils" +import { getSampleSchema, fromJSOrdered } from "core/utils" const getExampleComponent = ( sampleResponse, examples, HighlightCode ) => { if ( examples && examples.size ) { @@ -58,7 +58,6 @@ export default class Response extends React.Component { code, response, className, - fn, getComponent, specSelectors, @@ -117,7 +116,7 @@ export default class Response extends React.Component { ) : null} diff --git a/test/components/response.js b/test/components/response.js new file mode 100644 index 00000000..6919435a --- /dev/null +++ b/test/components/response.js @@ -0,0 +1,58 @@ +import React from "react" +import expect from "expect" +import { shallow } from "enzyme" +import { fromJS } from "immutable" +import Response from "components/response" +import ModelExample from "components/model-example" +import { inferSchema } from "corePlugins/samples/fn" + +describe("", function() { + const dummyComponent = () => null + const components = { + headers: dummyComponent, + highlightCode: dummyComponent, + modelExample: ModelExample, + Markdown: dummyComponent, + operationLink: dummyComponent, + contentType: dummyComponent + } + const props = { + getComponent: c => components[c], + specSelectors: { + isOAS3() { + return false + } + }, + fn: { + inferSchema + }, + contentType: "application/json", + className: "for-test", + response: fromJS({ + type: "object", + properties: { + // Note reverse order: c, b, a + "c": { + type: "integer" + }, + "b": { + type: "boolean" + }, + "a": { + type: "string" + } + } + }), + code: "200" + } + + it("renders the model-example schema properties in order", function() { + const wrapper = shallow() + const renderedModelExample = wrapper.find(ModelExample) + expect(renderedModelExample.length).toEqual(1) + + // Assert the schema's properties have maintained their order + const modelExampleSchemaProperties = renderedModelExample.props().schema.toJS().properties + expect( Object.keys(modelExampleSchemaProperties) ).toEqual(["c", "b", "a"]) + }) +}) \ No newline at end of file