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

Commit

Permalink
Merge pull request #13 from FormidableLabs/task-updateDocsAndSupportE…
Browse files Browse the repository at this point in the history
…mptyPropTypes

Update docs and support empty prop types
  • Loading branch information
Per Nilsson committed Jan 13, 2016
2 parents abf4a79 + fac3dd7 commit 36584ee
Show file tree
Hide file tree
Showing 6 changed files with 55 additions and 6 deletions.
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

0 comments on commit 36584ee

Please sign in to comment.