Skip to content

Commit

Permalink
Improve coverage on tests with babel
Browse files Browse the repository at this point in the history
TypeScript compiled to ES6 doesn't change much, so we now test ES6 code
so that coverage report is a bit more accurate. Added 'babel-jest',
'babel-preset-es2015' and 'babel-preset-react' as dev dependencies as
well as a '.babelrc' file so that jest can transpile the ES6 code and
report coverage.
Added Enzyme as dev dependency to use the shallow renderer so that we can
actually test that Link is being used.

Updated readme with install instructions
  • Loading branch information
GAumala committed Jun 3, 2017
1 parent 99026fd commit d98c4d8
Show file tree
Hide file tree
Showing 7 changed files with 741 additions and 20 deletions.
3 changes: 3 additions & 0 deletions .babelrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"presets": ["es2015", "react"]
}
2 changes: 2 additions & 0 deletions .npmignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,5 @@ coverage
*.js.map
*.test.js
*.log
.babelrc
src/__snapshots__/
8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,16 @@

Easily integrate [React Router](https://reacttraining.com/react-router/) with [simple-commonmark-react](https://github.com/GAumala/simple-commonmark-react)

## Install

```
yarn add simple-commonmark-react-router
```

## Example

The following example renders markdown links with React Router's Link component.

```javascript
import React from 'react'
import {
Expand Down
7 changes: 6 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,19 +13,24 @@
"devDependencies": {
"@types/commonmark": "^0.22.29",
"@types/react": "^15.0.25",
"babel-jest": "^20.0.3",
"babel-preset-es2015": "^6.24.1",
"babel-preset-react": "^6.24.1",
"coveralls": "^2.13.1",
"enzyme": "^2.8.2",
"jest": "^20.0.4",
"react": "^15.5.4",
"react-dom": "^15.5.4",
"react-router-dom": "^4.1.1",
"react-test-renderer": "^15.5.4",
"simple-commonmark-react": "^0.5.0",
"typescript": "^2.3.4"
},
"scripts": {
"test": "jest --coverage",
"build": "tsc -d ./src/ReactRouterLinkRenderer.ts",
"dev": "yarn run build && yarn test",
"ci": "yarn run build && yarn test && cat ./coverage/lcov.info | coveralls",
"ci": "yarn run build -- --target es2015 --moduleResolution node && yarn test && cat ./coverage/lcov.info | coveralls",
"release": "yarn run tsc && publish"
}
}
30 changes: 18 additions & 12 deletions src/ReactRouterLinkRenderer.test.js
Original file line number Diff line number Diff line change
@@ -1,17 +1,23 @@
const ReactRouterLinkRenderer = require('./ReactRouterLinkRenderer.js').default
const renderNodes = require('simple-commonmark-react').renderNodes
import React from 'react';
import renderer from 'react-test-renderer';
import { BrowserRouter as Router, Link } from 'react-router-dom'
import { shallow } from 'enzyme';

test('should render links with React Router\'s Link', () => {
const options = { customRenderers: { link: ReactRouterLinkRenderer } }
const markdown = 'Here is a [link](/some/path)'
import ReactRouterLinkRenderer from './ReactRouterLinkRenderer.js'
import { renderNodes } from 'simple-commonmark-react'

const nodes = renderNodes(markdown, options)
expect(nodes.length).toEqual(1)
const options = { customRenderers: { link: ReactRouterLinkRenderer } }
const markdown = 'Here is a [link](/some/path)'
const nodes = renderNodes(markdown, options)

const paragraph = nodes[0]
expect(paragraph.props.children.length).toEqual(2)
test('should render markdown correctly', () => {
const component = renderer.create(<Router><div>{ nodes }</div></Router>)
const tree = component.toJSON()
expect(tree).toMatchSnapshot()
})

const link = paragraph.props.children[1]
expect(link.props.to).toEqual('/some/path')
expect(link.props.children).toEqual(['link'])
test('should render markdown with React Router\'s Link', () => {
const paragraphWrapper = shallow(nodes[0])
expect(paragraphWrapper.find(Link).length).toEqual(1)
})

18 changes: 18 additions & 0 deletions src/__snapshots__/ReactRouterLinkRenderer.test.js.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`should render markdown correctly 1`] = `
<div>
<p
className={undefined}
>
Here is a
<a
className={undefined}
href="/some/path"
onClick={[Function]}
>
link
</a>
</p>
</div>
`;
Loading

0 comments on commit d98c4d8

Please sign in to comment.