diff --git a/src/core/components/primitive-model.jsx b/src/core/components/primitive-model.jsx
index 22442daa377..0ffe858fe23 100644
--- a/src/core/components/primitive-model.jsx
+++ b/src/core/components/primitive-model.jsx
@@ -11,11 +11,12 @@ export default class Primitive extends Component {
getConfigs: PropTypes.func.isRequired,
name: PropTypes.string,
displayName: PropTypes.string,
- depth: PropTypes.number
+ depth: PropTypes.number,
+ expandDepth: PropTypes.number
}
render(){
- let { schema, getComponent, getConfigs, name, displayName, depth } = this.props
+ let { schema, getComponent, getConfigs, name, displayName, depth, expandDepth } = this.props
const { showExtensions } = getConfigs()
@@ -37,33 +38,40 @@ export default class Primitive extends Component {
const Markdown = getComponent("Markdown", true)
const EnumModel = getComponent("EnumModel")
const Property = getComponent("Property")
+ const ModelCollapse = getComponent("ModelCollapse")
+ const titleEl = title &&
+
+ { title }
+
return
-
- { name && { title } }
- { type }
- { format && (${format})}
- {
- properties.size ? properties.entrySeq().map( ( [ key, v ] ) => ) : null
- }
- {
- showExtensions && extensions.size ? extensions.entrySeq().map( ( [ key, v ] ) => ) : null
- }
- {
- !description ? null :
-
- }
- {
- xml && xml.size ? (
xml:
- {
- xml.entrySeq().map( ( [ key, v ] ) =>
{key}: { String(v) }).toArray()
- }
- ): null
- }
- {
- enumArray &&
- }
-
+ = expandDepth} collapsedContent=" " hideSelfOnExpand={expandDepth !== depth}>
+
+ {name && depth > 1 && { title } }
+ { type }
+ { format && (${format})}
+ {
+ properties.size ? properties.entrySeq().map( ( [ key, v ] ) => ) : null
+ }
+ {
+ showExtensions && extensions.size ? extensions.entrySeq().map( ( [ key, v ] ) => ) : null
+ }
+ {
+ !description ? null :
+
+ }
+ {
+ xml && xml.size ? (
xml:
+ {
+ xml.entrySeq().map( ( [ key, v ] ) =>
{key}: { String(v) }).toArray()
+ }
+ ): null
+ }
+ {
+ enumArray &&
+ }
+
+
}
}
diff --git a/test/unit/components/primitive-model.jsx b/test/unit/components/primitive-model.jsx
index fe9efb9bc3c..f6ff3f486a4 100644
--- a/test/unit/components/primitive-model.jsx
+++ b/test/unit/components/primitive-model.jsx
@@ -2,14 +2,15 @@ import React from "react"
import { shallow } from "enzyme"
import { fromJS } from "immutable"
import PrimitiveModel from "components/primitive-model"
+import ModelCollapse from "components/model-collapse"
describe("", function () {
- describe("Model name", function () {
const dummyComponent = () => null
const components = {
Markdown: dummyComponent,
EnumModel: dummyComponent,
Property: dummyComponent,
+ "ModelCollapse" : ModelCollapse,
}
const props = {
getComponent: c => components[c],
@@ -21,17 +22,16 @@ describe("", function () {
schema: fromJS({
type: "string",
title: "Custom model title"
- })
+ }),
+ expandDepth: 1
}
it("renders the schema's title", function () {
// When
const wrapper = shallow()
- const modelTitleEl = wrapper.find("span.model-title")
- expect(modelTitleEl.length).toEqual(1)
+ const modelTitleEl = wrapper.find("ModelCollapse").prop("title").props.children.props.children
- // Then
- expect(modelTitleEl.text()).toEqual("Custom model title")
+ expect(modelTitleEl).toEqual("Custom model title")
})
it("falls back to the passed-in `name` prop for the title", function () {
@@ -40,12 +40,16 @@ describe("", function () {
type: "string"
})
const wrapper = shallow()
- const modelTitleEl = wrapper.find("span.model-title")
- expect(modelTitleEl.length).toEqual(1)
+ const modelTitleEl = wrapper.find("ModelCollapse").prop("title").props.children.props.children
// Then
- expect(modelTitleEl.text()).toEqual("Name from props")
+ expect(modelTitleEl).toEqual("Name from props")
+
})
- })
+ it("renders a collapsible header", function(){
+ const wrapper = shallow()
+ const renderedModelCollapse = wrapper.find(ModelCollapse)
+ expect(renderedModelCollapse.length).toEqual(1)
+ })
})