From a47cc284f7ff9e0b01e97309676bc856da56c484 Mon Sep 17 00:00:00 2001 From: Owen Conti Date: Tue, 12 Sep 2017 23:06:24 -0600 Subject: [PATCH 1/3] Update response.jsx to use already existing, fromJSOrdered function --- src/core/components/response.jsx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/core/components/response.jsx b/src/core/components/response.jsx index a06f05f0..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 { value.toOrderedMap() ) } + schema={ fromJSOrdered(schema) } example={ example }/> ) : null} From cb88cd53b6799a36bdbf2c7dfe45fa9ca7708bb9 Mon Sep 17 00:00:00 2001 From: Owen Conti Date: Tue, 12 Sep 2017 23:07:11 -0600 Subject: [PATCH 2/3] Added test for response.jsx to make sure properties are passed to `ModelExample` component in the correct order --- test/components/response.js | 58 +++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 test/components/response.js diff --git a/test/components/response.js b/test/components/response.js new file mode 100644 index 00000000..2f9919d5 --- /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.only("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 From ef99b7e434ac552789ae2373bdf8ca22b5b5cca5 Mon Sep 17 00:00:00 2001 From: Owen Conti Date: Tue, 12 Sep 2017 23:09:21 -0600 Subject: [PATCH 3/3] Remove `it.only` from new test --- test/components/response.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/components/response.js b/test/components/response.js index 2f9919d5..6919435a 100644 --- a/test/components/response.js +++ b/test/components/response.js @@ -46,7 +46,7 @@ describe("", function() { code: "200" } - it.only("renders the model-example schema properties in order", function() { + it("renders the model-example schema properties in order", function() { const wrapper = shallow() const renderedModelExample = wrapper.find(ModelExample) expect(renderedModelExample.length).toEqual(1)