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