From 08282205aa1488ded66fd630ca8ea226fa658b06 Mon Sep 17 00:00:00 2001 From: Owen Conti Date: Sun, 17 Sep 2017 09:45:33 -0600 Subject: [PATCH 1/6] Fix property key: value alignment in array-model --- src/core/components/array-model.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/components/array-model.jsx b/src/core/components/array-model.jsx index a9c36a2c..e4cde55c 100644 --- a/src/core/components/array-model.jsx +++ b/src/core/components/array-model.jsx @@ -41,7 +41,7 @@ export default class ArrayModel extends Component { { properties.size ? { properties.entrySeq().map( ( [ key, v ] ) => -
{ `${key}:`}{ String(v) }
) +
{ key }: { String(v) }
) }
: null } From b855c254067bf7d00b0f8259f77719712333126e Mon Sep 17 00:00:00 2001 From: Owen Conti Date: Sun, 17 Sep 2017 09:48:03 -0600 Subject: [PATCH 2/6] Slightly increase size available for property names. Change units to `em` and add a margin to separate the property name from the property type. --- src/style/_models.scss | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/style/_models.scss b/src/style/_models.scss index dd043f7f..c3a901d9 100644 --- a/src/style/_models.scss +++ b/src/style/_models.scss @@ -237,7 +237,8 @@ span .prop-name { display: inline-block; - width: 100px; + margin-right: 1em; + width: 8em; } .prop-type From f63f022e0c543d3e15849ea8190d9817203b05e0 Mon Sep 17 00:00:00 2001 From: Owen Conti Date: Sun, 17 Sep 2017 09:48:26 -0600 Subject: [PATCH 3/6] Remove `.only` from utils test --- test/core/utils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/core/utils.js b/test/core/utils.js index b4be6c1b..42103cc1 100644 --- a/test/core/utils.js +++ b/test/core/utils.js @@ -583,7 +583,7 @@ describe("utils", function() { }) }) - describe.only("getAcceptControllingResponse", () => { + describe("getAcceptControllingResponse", () => { it("should return the first 2xx response with a media type", () => { const responses = fromJSOrdered({ "200": { From 44ece46cd3260b14f3ead7b8d5245a75e3b58d76 Mon Sep 17 00:00:00 2001 From: Owen Conti Date: Sun, 17 Sep 2017 09:49:13 -0600 Subject: [PATCH 4/6] Fixes #3633 Make sure PrimitiveModel uses the schema's title first and then falls back to the passed-in `name` property. Added enzyme test for functionality. --- src/core/components/primitive-model.jsx | 3 +- test/components/primitive-model.js | 49 +++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 test/components/primitive-model.js diff --git a/src/core/components/primitive-model.jsx b/src/core/components/primitive-model.jsx index 81773523..f1fba8a5 100644 --- a/src/core/components/primitive-model.jsx +++ b/src/core/components/primitive-model.jsx @@ -23,6 +23,7 @@ export default class Primitive extends Component { let format = schema.get("format") let xml = schema.get("xml") let enumArray = schema.get("enum") + let title = schema.get("title") || name let description = schema.get("description") let properties = schema.filter( ( v, key) => ["enum", "type", "format", "description", "$$ref"].indexOf(key) === -1 ) const Markdown = getComponent("Markdown") @@ -30,7 +31,7 @@ export default class Primitive extends Component { return - { name && { name } } + { name && { title } } { type } { format && (${format})} { diff --git a/test/components/primitive-model.js b/test/components/primitive-model.js new file mode 100644 index 00000000..9394bb8c --- /dev/null +++ b/test/components/primitive-model.js @@ -0,0 +1,49 @@ +/* eslint-env mocha */ +import React from "react" +import expect from "expect" +import { shallow } from "enzyme" +import { fromJS } from "immutable" +import PrimitiveModel from "components/primitive-model" + +describe("", function() { + describe("Model name", function() { + const dummyComponent = () => null + const components = { + Markdown: dummyComponent, + EnumModel: dummyComponent + } + const props = { + getComponent: c => components[c], + name: "Name from props", + depth: 1, + schema: fromJS({ + type: "string", + title: "Custom model title" + }) + } + + it("renders the schema's title", function() { + // When + const wrapper = shallow() + const modelTitleEl = wrapper.find("span.model-title") + expect(modelTitleEl.length).toEqual(1) + + // Then + expect( modelTitleEl.text() ).toEqual( "Custom model title" ) + }) + + it("falls back to the passed-in `name` prop for the title", function() { + // When + props.schema = fromJS({ + type: "string" + }) + const wrapper = shallow() + const modelTitleEl = wrapper.find("span.model-title") + expect(modelTitleEl.length).toEqual(1) + + // Then + expect( modelTitleEl.text() ).toEqual( "Name from props" ) + }) + + }) +} ) \ No newline at end of file From b0a580bdc1545a4bafa8fb0b47ec40355bfccc56 Mon Sep 17 00:00:00 2001 From: Kyle Shockey Date: Wed, 20 Sep 2017 16:55:45 -0700 Subject: [PATCH 5/6] Display Tag descriptions as Markdown --- src/core/components/operations.jsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/core/components/operations.jsx b/src/core/components/operations.jsx index 82bf62a3..8e282a60 100644 --- a/src/core/components/operations.jsx +++ b/src/core/components/operations.jsx @@ -36,6 +36,7 @@ export default class Operations extends React.Component { const Operation = getComponent("operation") const Collapse = getComponent("Collapse") + const Markdown = getComponent("Markdown") let showSummary = layoutSelectors.showSummary() let { @@ -89,7 +90,7 @@ export default class Operations extends React.Component { { !tagDescription ? null : - { tagDescription } + } From 69941a6d9a786ffe8e32dc9533408ae3545e5666 Mon Sep 17 00:00:00 2001 From: Kyle Shockey Date: Wed, 20 Sep 2017 17:34:23 -0700 Subject: [PATCH 6/6] Remove $$ref values from response examples --- src/core/components/response.jsx | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/core/components/response.jsx b/src/core/components/response.jsx index 8aad5109..62955f75 100644 --- a/src/core/components/response.jsx +++ b/src/core/components/response.jsx @@ -107,6 +107,14 @@ export default class Response extends React.Component { includeWriteOnly: true // writeOnly has no filtering effect in swagger 2.0 }) : null } + + if(examples) { + examples = examples.map(example => { + // Remove unwanted properties from examples + return example.set("$$ref", undefined) + }) + } + let example = getExampleComponent( sampleResponse, examples, HighlightCode ) return (