diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3acb80b0..3b6d0c15 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -4,7 +4,7 @@ We love contributions from our community of users! This document explains our gu #### Environment setup -0. Install Node.js (4 or newer) and npm (3 or newer). +0. Install Node.js (6 or newer) and npm (3 or newer). 1. Make a fork of Swagger-UI on GitHub, then clone your fork to your machine. 2. Run `npm install` in your Swagger-UI directory. 3. Run `npm run dev`. `localhost:3200` should open automatically. diff --git a/package.json b/package.json index dd30067d..3987317b 100644 --- a/package.json +++ b/package.json @@ -61,13 +61,13 @@ "react-addons-perf": "^15.4.0", "react-addons-shallow-compare": "0.14.8", "react-addons-test-utils": "^15.6.2", - "react-collapse": "2.3.1", + "react-collapse": "^4.0.3", "react-dom": "^15.6.2", "react-height": "^2.0.0", "react-hot-loader": "1.3.1", "react-immutable-proptypes": "2.1.0", "react-markdown": "^2.5.0", - "react-motion": "0.4.4", + "react-motion": "^0.5.2", "react-object-inspector": "0.2.1", "react-redux": "^4.x.x", "react-split-pane": "0.1.57", diff --git a/src/core/components/content-type.jsx b/src/core/components/content-type.jsx index 4a5e7349..6f81f671 100644 --- a/src/core/components/content-type.jsx +++ b/src/core/components/content-type.jsx @@ -37,7 +37,7 @@ export default class ContentType extends React.Component { return (
- { contentTypes.map( (val) => { return }).toArray()} diff --git a/src/core/components/debug.jsx b/src/core/components/debug.jsx index 6cb7d5d7..382f2cac 100644 --- a/src/core/components/debug.jsx +++ b/src/core/components/debug.jsx @@ -1,6 +1,6 @@ import React from "react" import PropTypes from "prop-types" -import Collapse from "react-collapse" +import { Collapse } from "react-collapse" import { presets } from "react-motion" import ObjectInspector from "react-object-inspector" import Perf from "react-addons-perf" diff --git a/src/core/components/errors.jsx b/src/core/components/errors.jsx index bea01ba9..c72dd2fd 100644 --- a/src/core/components/errors.jsx +++ b/src/core/components/errors.jsx @@ -1,7 +1,7 @@ import React from "react" import PropTypes from "prop-types" import { List } from "immutable" -import Collapse from "react-collapse" +import { Collapse } from "react-collapse" export default class Errors extends React.Component { diff --git a/src/core/components/layout-utils.jsx b/src/core/components/layout-utils.jsx index f80e0c90..d1adfeb1 100644 --- a/src/core/components/layout-utils.jsx +++ b/src/core/components/layout-utils.jsx @@ -1,6 +1,6 @@ import React from "react" import PropTypes from "prop-types" -import OriCollapse from "react-collapse" +import { Collapse as OriCollapse } from "react-collapse" function xclass(...args) { return args.filter(a => !!a).join(" ").trim() diff --git a/src/core/plugins/oas3/components/request-body.jsx b/src/core/plugins/oas3/components/request-body.jsx index 7094e068..5b20a50c 100644 --- a/src/core/plugins/oas3/components/request-body.jsx +++ b/src/core/plugins/oas3/components/request-body.jsx @@ -50,7 +50,7 @@ RequestBody.propTypes = { getComponent: PropTypes.func.isRequired, getConfigs: PropTypes.func.isRequired, specSelectors: PropTypes.object.isRequired, - contentType: PropTypes.string.isRequired, + contentType: PropTypes.string, isExecute: PropTypes.bool.isRequired, onChange: PropTypes.func.isRequired } diff --git a/src/core/plugins/oas3/wrap-components/parameters.jsx b/src/core/plugins/oas3/wrap-components/parameters.jsx index a825f530..ac61e90f 100644 --- a/src/core/plugins/oas3/wrap-components/parameters.jsx +++ b/src/core/plugins/oas3/wrap-components/parameters.jsx @@ -22,6 +22,7 @@ class Parameters extends Component { specActions: PropTypes.object.isRequired, operation: PropTypes.object.isRequired, getComponent: PropTypes.func.isRequired, + getConfigs: PropTypes.func.isRequired, specSelectors: PropTypes.object.isRequired, oas3Actions: PropTypes.object.isRequired, oas3Selectors: PropTypes.object.isRequired, @@ -86,6 +87,7 @@ class Parameters extends Component { fn, getComponent, + getConfigs, specSelectors, oas3Actions, oas3Selectors, @@ -137,6 +139,7 @@ class Parameters extends Component { eachMap(parameters, (parameter) => ( swagger
- {control} + {control.map((el, i) => cloneElement(el, { key: i }))}
diff --git a/test/components/object-model.js b/test/components/object-model.js new file mode 100644 index 00000000..d926d04c --- /dev/null +++ b/test/components/object-model.js @@ -0,0 +1,63 @@ +import React from "react" +import expect from "expect" +import { shallow } from "enzyme" +import { fromJS } from "immutable" +import ObjectModel from "components/object-model" +import ModelExample from "components/model-example" +import Immutable from "immutable" +import Model from "components/model" +import ModelCollapse from "components/model-collapse" +import { inferSchema } from "corePlugins/samples/fn" + +describe("", function() { + const dummyComponent = () => null + const components = { + "JumpToPath" : dummyComponent, + "Markdown" : dummyComponent, + "Model" : Model, + "ModelCollapse" : ModelCollapse + } + const props = { + getComponent: c => components[c], + isRef : false, + schema: Immutable.fromJS( + { + "properties": { + // Note reverse order: c, b, a + c: { + type: "integer", + name: "c" + }, + b: { + type: "boolean", + name: "b" + }, + a: { + type: "string", + name: "a" + } + } + } + ), + specSelectors: { + isOAS3(){ + return false + } + }, + className: "for-test" + } + it("renders a collapsible header", function(){ + const wrapper = shallow() + const renderedModelCollapse = wrapper.find(ModelCollapse) + expect(renderedModelCollapse.length).toEqual(1) + }) + + it("renders the object properties in order", function() { + const wrapper = shallow() + const renderedModel = wrapper.find(Model) + expect(renderedModel.length).toEqual(3) + expect(renderedModel.get(0).props.schema.get("name")).toEqual("c") + expect(renderedModel.get(1).props.schema.get("name")).toEqual("b") + expect(renderedModel.get(2).props.schema.get("name")).toEqual("a") + }) +})