@@ -41,7 +41,7 @@ export default class ArrayModel extends Component { | |||||
{ | { | ||||
properties.size ? <span> | properties.size ? <span> | ||||
{ properties.entrySeq().map( ( [ key, v ] ) => <span key={`${key}-${v}`} style={propStyle}> | { properties.entrySeq().map( ( [ key, v ] ) => <span key={`${key}-${v}`} style={propStyle}> | ||||
<br />{ `${key}:`}{ String(v) }</span>) | |||||
<br />{ key }: { String(v) }</span>) | |||||
}<br /></span> | }<br /></span> | ||||
: null | : null | ||||
} | } | ||||
@@ -36,6 +36,7 @@ export default class Operations extends React.Component { | |||||
const Operation = getComponent("operation") | const Operation = getComponent("operation") | ||||
const Collapse = getComponent("Collapse") | const Collapse = getComponent("Collapse") | ||||
const Markdown = getComponent("Markdown") | |||||
let showSummary = layoutSelectors.showSummary() | let showSummary = layoutSelectors.showSummary() | ||||
let { | let { | ||||
@@ -89,7 +90,7 @@ export default class Operations extends React.Component { | |||||
</a> | </a> | ||||
{ !tagDescription ? null : | { !tagDescription ? null : | ||||
<small> | <small> | ||||
{ tagDescription } | |||||
<Markdown source={tagDescription} /> | |||||
</small> | </small> | ||||
} | } | ||||
@@ -23,6 +23,7 @@ export default class Primitive extends Component { | |||||
let format = schema.get("format") | let format = schema.get("format") | ||||
let xml = schema.get("xml") | let xml = schema.get("xml") | ||||
let enumArray = schema.get("enum") | let enumArray = schema.get("enum") | ||||
let title = schema.get("title") || name | |||||
let description = schema.get("description") | let description = schema.get("description") | ||||
let properties = schema.filter( ( v, key) => ["enum", "type", "format", "description", "$$ref"].indexOf(key) === -1 ) | let properties = schema.filter( ( v, key) => ["enum", "type", "format", "description", "$$ref"].indexOf(key) === -1 ) | ||||
const Markdown = getComponent("Markdown") | const Markdown = getComponent("Markdown") | ||||
@@ -30,7 +31,7 @@ export default class Primitive extends Component { | |||||
return <span className="model"> | return <span className="model"> | ||||
<span className="prop"> | <span className="prop"> | ||||
{ name && <span className={`${depth === 1 && "model-title"} prop-name`}>{ name }</span> } | |||||
{ name && <span className={`${depth === 1 && "model-title"} prop-name`}>{ title }</span> } | |||||
<span className="prop-type">{ type }</span> | <span className="prop-type">{ type }</span> | ||||
{ format && <span className="prop-format">(${format})</span>} | { format && <span className="prop-format">(${format})</span>} | ||||
{ | { | ||||
@@ -107,6 +107,14 @@ export default class Response extends React.Component { | |||||
includeWriteOnly: true // writeOnly has no filtering effect in swagger 2.0 | includeWriteOnly: true // writeOnly has no filtering effect in swagger 2.0 | ||||
}) : null | }) : null | ||||
} | } | ||||
if(examples) { | |||||
examples = examples.map(example => { | |||||
// Remove unwanted properties from examples | |||||
return example.set("$$ref", undefined) | |||||
}) | |||||
} | |||||
let example = getExampleComponent( sampleResponse, examples, HighlightCode ) | let example = getExampleComponent( sampleResponse, examples, HighlightCode ) | ||||
return ( | return ( | ||||
@@ -237,7 +237,8 @@ span | |||||
.prop-name | .prop-name | ||||
{ | { | ||||
display: inline-block; | display: inline-block; | ||||
width: 100px; | |||||
margin-right: 1em; | |||||
width: 8em; | |||||
} | } | ||||
.prop-type | .prop-type | ||||
@@ -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("<PrimitiveModel/>", 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(<PrimitiveModel {...props}/>) | |||||
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(<PrimitiveModel {...props}/>) | |||||
const modelTitleEl = wrapper.find("span.model-title") | |||||
expect(modelTitleEl.length).toEqual(1) | |||||
// Then | |||||
expect( modelTitleEl.text() ).toEqual( "Name from props" ) | |||||
}) | |||||
}) | |||||
} ) |
@@ -583,7 +583,7 @@ describe("utils", function() { | |||||
}) | }) | ||||
}) | }) | ||||
describe.only("getAcceptControllingResponse", () => { | |||||
describe("getAcceptControllingResponse", () => { | |||||
it("should return the first 2xx response with a media type", () => { | it("should return the first 2xx response with a media type", () => { | ||||
const responses = fromJSOrdered({ | const responses = fromJSOrdered({ | ||||
"200": { | "200": { | ||||