Skip to content
This repository has been archived by the owner on Feb 17, 2022. It is now read-only.

Update docs and support empty prop types #13

Merged
merged 8 commits into from
Jan 13, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions demo/app.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import React from "react";
import ReactDOM from "react-dom";
import Ecology from "../src/index";
import * as docgen from "react-docgen";

import "./styles.styl";

Expand All @@ -11,8 +12,8 @@ class App extends React.Component {
<div className="demo">
<Ecology
overview={require("!!raw!./ecology.md")}
source={require("json!./sample.json")}
scope={{React, ReactDOM, SampleClass: require("./sample")}}
source={docgen.parse(require("!!raw!./sample"))}
scope={{React, ReactDOM, SampleClass: require("./sample")}}/>
playgroundtheme="blackboard"/>
</div>
);
Expand Down
1 change: 0 additions & 1 deletion demo/sample.json

This file was deleted.

5 changes: 4 additions & 1 deletion demo/sample.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,12 @@ SampleClass.propTypes = {
*/
indexes: React.PropTypes.arrayOf(React.PropTypes.number),
/**
* Union test
* Component test
*/
test: React.PropTypes.instanceOf(Test),
/**
* Union test
*/
optionalUnion: React.PropTypes.oneOfType([
React.PropTypes.string,
React.PropTypes.number
Expand Down
3 changes: 3 additions & 0 deletions src/components/api.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,9 @@ const renderType = ({name, value}) => {
export default class API extends React.Component {
render() {
const docObj = this.props.source;
if (!docObj.props) {
return <em>This component has no PropTypes defined.</em>;
}
const propMap = makeArray(docObj.props);
return (
<table className="Props">
Expand Down
43 changes: 43 additions & 0 deletions test/client/spec/components/api.spec.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
import React from "react/addons";

import API from "src/components/api";

const TestUtils = React.addons.TestUtils;

describe("components/api", function () {

it("renders propType documentation table", function () {
const renderer = TestUtils.createRenderer();
const sourceFake = {
props: {
name: {
name: "propName",
required: false,
type: {
name: "string"
},
description: "Name description\n@examples \"propValue1\"",
defaultValue: {
computed: false,
value: "test"
}
}
}
};
renderer.render(<API source={sourceFake} />);

const output = renderer.getRenderOutput();

expect(output.type).to.equal("table");
});

it("renders default message when proptypes are missing", function () {
const renderer = TestUtils.createRenderer();
const sourceFake = { props: null };
renderer.render(<API source={sourceFake} />);

const output = renderer.getRenderOutput();

expect(output.type).to.equal("em");
});
});
4 changes: 2 additions & 2 deletions test/client/spec/components/ecology.spec.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
* Client tests
*/
import React from "react/addons";
import Component from "src/components/ecology";
import Ecology from "src/components/ecology";

// Use `TestUtils` to inject into DOM, simulate events, etc.
// See: https://facebook.github.io/react/docs/test-utils.html
Expand All @@ -16,7 +16,7 @@ describe("components/ecology", function () {
//
// https://facebook.github.io/react/docs/test-utils.html#shallow-rendering
const renderer = TestUtils.createRenderer();
renderer.render(<Component />);
renderer.render(<Ecology />);
const output = renderer.getRenderOutput();
expect(output.type).to.equal("div");
});
Expand Down