From 868c036f13d3a3aeefe2469c304955b03d85e5ca Mon Sep 17 00:00:00 2001 From: Brent Jackson Date: Sat, 9 Mar 2019 17:13:23 -0500 Subject: [PATCH] Basic test setup --- babel.config.js | 1 + package.json | 23 +- packages/components/src/__tests__/Appear.js | 12 + packages/components/src/__tests__/Clock.js | 5 + .../components/src/__tests__/GoogleFonts.js | 5 + packages/components/src/__tests__/Head.js | 15 + packages/components/src/__tests__/Pre.js | 8 + packages/components/src/__tests__/Steps.js | 8 + .../__tests__/__snapshots__/Appear.js.snap | 13 + .../src/__tests__/__snapshots__/Pre.js.snap | 15 + .../src/__tests__/__snapshots__/Steps.js.snap | 3 + packages/components/src/context.js | 2 +- packages/mdx-deck/package.json | 17 +- .../mdx-plugin/__snapshots__/test.js.snap | 60 + packages/mdx-plugin/package.json | 7 +- packages/mdx-plugin/test.js | 7 +- packages/mdx-plugin/test.js.md | 66 - packages/mdx-plugin/test.js.snap | Bin 492 -> 0 bytes yarn.lock | 1785 +++++------------ 19 files changed, 680 insertions(+), 1372 deletions(-) create mode 100644 babel.config.js create mode 100644 packages/components/src/__tests__/Appear.js create mode 100644 packages/components/src/__tests__/Clock.js create mode 100644 packages/components/src/__tests__/GoogleFonts.js create mode 100644 packages/components/src/__tests__/Head.js create mode 100644 packages/components/src/__tests__/Pre.js create mode 100644 packages/components/src/__tests__/Steps.js create mode 100644 packages/components/src/__tests__/__snapshots__/Appear.js.snap create mode 100644 packages/components/src/__tests__/__snapshots__/Pre.js.snap create mode 100644 packages/components/src/__tests__/__snapshots__/Steps.js.snap create mode 100644 packages/mdx-plugin/__snapshots__/test.js.snap delete mode 100644 packages/mdx-plugin/test.js.md delete mode 100644 packages/mdx-plugin/test.js.snap diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000..33bcceb --- /dev/null +++ b/babel.config.js @@ -0,0 +1 @@ +module.exports = require('./packages/mdx-deck/babel.config') diff --git a/package.json b/package.json index 08ecf9d..01a1427 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,23 @@ "docs" ], "scripts": { - "start": "yarn workspace @mdx-deck/docs start" + "start": "yarn workspace @mdx-deck/docs start", + "test": "jest" + }, + "devDependencies": { + "@babel/core": "^7.3.4", + "@babel/preset-env": "^7.3.4", + "@babel/preset-react": "^7.0.0", + "husky": "^1.3.1", + "jest": "^24.3.1", + "lint-staged": "^8.1.5", + "prettier": "^1.16.4" + }, + "jest": { + "coverageReporters": [ + "lcov", + "html" + ] }, "husky": { "hooks": { @@ -18,10 +34,5 @@ "prettier --write", "git add" ] - }, - "devDependencies": { - "husky": "^1.3.1", - "lint-staged": "^8.1.5", - "prettier": "^1.16.4" } } diff --git a/packages/components/src/__tests__/Appear.js b/packages/components/src/__tests__/Appear.js new file mode 100644 index 0000000..cdb7e86 --- /dev/null +++ b/packages/components/src/__tests__/Appear.js @@ -0,0 +1,12 @@ +import React from 'react' +import TestRenderer from 'react-test-renderer' +import Appear from '../Appear' + +test('Appear renders', () => { + const json = TestRenderer.create( + +

Hello

+
+ ).toJSON() + expect(json).toMatchSnapshot() +}) diff --git a/packages/components/src/__tests__/Clock.js b/packages/components/src/__tests__/Clock.js new file mode 100644 index 0000000..8ca0de5 --- /dev/null +++ b/packages/components/src/__tests__/Clock.js @@ -0,0 +1,5 @@ +import React from 'react' +import TestRenderer from 'react-test-renderer' +import Clock from '../Clock' + +test.todo('Clock renders') diff --git a/packages/components/src/__tests__/GoogleFonts.js b/packages/components/src/__tests__/GoogleFonts.js new file mode 100644 index 0000000..f4a6b24 --- /dev/null +++ b/packages/components/src/__tests__/GoogleFonts.js @@ -0,0 +1,5 @@ +import React from 'react' +import TestRenderer from 'react-test-renderer' +import GoogleFonts from '../GoogleFonts' + +test.todo('GoogleFonts renders') diff --git a/packages/components/src/__tests__/Head.js b/packages/components/src/__tests__/Head.js new file mode 100644 index 0000000..817c27a --- /dev/null +++ b/packages/components/src/__tests__/Head.js @@ -0,0 +1,15 @@ +import React from 'react' +import TestRenderer from 'react-test-renderer' +import { Head, HeadProvider } from '../Head' + +test.skip('Head populates HeadProvider‘s tag prop', () => { + const tags = [] + TestRenderer.create( + + + Hello + + + ) + expect(tags.length).toBe(1) +}) diff --git a/packages/components/src/__tests__/Pre.js b/packages/components/src/__tests__/Pre.js new file mode 100644 index 0000000..98d35fa --- /dev/null +++ b/packages/components/src/__tests__/Pre.js @@ -0,0 +1,8 @@ +import React from 'react' +import TestRenderer from 'react-test-renderer' +import Pre from '../Pre' + +test('Pre renders', () => { + const json = TestRenderer.create(
).toJSON()
+  expect(json).toMatchSnapshot()
+})
diff --git a/packages/components/src/__tests__/Steps.js b/packages/components/src/__tests__/Steps.js
new file mode 100644
index 0000000..7e8f916
--- /dev/null
+++ b/packages/components/src/__tests__/Steps.js
@@ -0,0 +1,8 @@
+import React from 'react'
+import TestRenderer from 'react-test-renderer'
+import Steps from '../Steps'
+
+test('Steps renders', () => {
+  const json = TestRenderer.create( 'hi'} />).toJSON()
+  expect(json).toMatchSnapshot()
+})
diff --git a/packages/components/src/__tests__/__snapshots__/Appear.js.snap b/packages/components/src/__tests__/__snapshots__/Appear.js.snap
new file mode 100644
index 0000000..8a4aaea
--- /dev/null
+++ b/packages/components/src/__tests__/__snapshots__/Appear.js.snap
@@ -0,0 +1,13 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`Appear renders 1`] = `
+

+ Hello +

+`; diff --git a/packages/components/src/__tests__/__snapshots__/Pre.js.snap b/packages/components/src/__tests__/__snapshots__/Pre.js.snap new file mode 100644 index 0000000..ee51252 --- /dev/null +++ b/packages/components/src/__tests__/__snapshots__/Pre.js.snap @@ -0,0 +1,15 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Pre renders 1`] = ` +
+  hi
+
+`; diff --git a/packages/components/src/__tests__/__snapshots__/Steps.js.snap b/packages/components/src/__tests__/__snapshots__/Steps.js.snap new file mode 100644 index 0000000..fc69eed --- /dev/null +++ b/packages/components/src/__tests__/__snapshots__/Steps.js.snap @@ -0,0 +1,3 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Steps renders 1`] = `"hi"`; diff --git a/packages/components/src/context.js b/packages/components/src/context.js index aeffc2c..23d2092 100644 --- a/packages/components/src/context.js +++ b/packages/components/src/context.js @@ -1,6 +1,6 @@ import React, { useContext } from 'react' -export const Context = React.createContext(null) +export const Context = React.createContext({}) export const withContext = Component => props => ( /test/" - ], - "testMatch": [ - "**/test/**/*.js" - ], - "testURL": "http://localhost/", - "coverageReporters": [ - "html" - ] - }, "husky": { "hooks": { "pre-commit": "lint-staged" diff --git a/packages/mdx-plugin/__snapshots__/test.js.snap b/packages/mdx-plugin/__snapshots__/test.js.snap new file mode 100644 index 0000000..1c9ebb2 --- /dev/null +++ b/packages/mdx-plugin/__snapshots__/test.js.snap @@ -0,0 +1,60 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`adds an export 1`] = ` +"/* @jsx mdx */ + +export const slides = [(props => { + const Layout = props => +
+ {props.children} +
+ return + + +

{\`Hello\`}

+
+}), +(props => { + const Layout = \\"div\\" + return +

{\`Two\`}

+
+}), +(props => { + const Layout = \\"div\\" + return +

{\`Three\`}

+
+})] +const layoutProps = { + slides +}; +const MDXLayout = props => +
+ {props.children} +
+export default function MDXContent({ components, ...props }) { + return ( +
+ + +

{\`Hello\`}

+
+

{\`Two\`}

+
+

{\`Three\`}

+ +
+
+ ) +} +MDXContent.isMDXComponent = true" +`; diff --git a/packages/mdx-plugin/package.json b/packages/mdx-plugin/package.json index d32e4b1..b50d0ba 100644 --- a/packages/mdx-plugin/package.json +++ b/packages/mdx-plugin/package.json @@ -3,16 +3,11 @@ "version": "2.0.0-0", "description": "", "main": "index.js", - "scripts": { - "test": "nyc ava" - }, "keywords": [], "author": "Brent Jackson ", "license": "MIT", "devDependencies": { - "@mdx-js/mdx": "^1.0.0-alpha.5", - "ava": "^1.2.1", - "nyc": "^13.3.0" + "@mdx-js/mdx": "^1.0.0-alpha.5" }, "dependencies": { "unist-util-is": "^2.1.2", diff --git a/packages/mdx-plugin/test.js b/packages/mdx-plugin/test.js index 342331c..c6edf31 100644 --- a/packages/mdx-plugin/test.js +++ b/packages/mdx-plugin/test.js @@ -1,4 +1,3 @@ -import test from 'ava' import mdx from '@mdx-js/mdx' import plugin from '.' @@ -15,10 +14,10 @@ export default props => ## Three ` -test('adds an export', t => { +test('adds an export', () => { const code = mdx.sync(src, { mdPlugins: [plugin], }) - t.is(typeof code, 'string') - t.snapshot(code) + expect(typeof code).toBe('string') + expect(code).toMatchSnapshot() }) diff --git a/packages/mdx-plugin/test.js.md b/packages/mdx-plugin/test.js.md deleted file mode 100644 index f165fe1..0000000 --- a/packages/mdx-plugin/test.js.md +++ /dev/null @@ -1,66 +0,0 @@ -# Snapshot report for `test.js` - -The actual snapshot is saved in `test.js.snap`. - -Generated by [AVA](https://ava.li). - -## adds an export - -> Snapshot 1 - - `␊ - export const slides = [(props => (␊ - ␊ -
␊ - {props.children}␊ -
}␊ - components={props.components}>␊ - ␊ - ␊ - Hello␊ - ␊ - )),␊ - (props => (␊ - ␊ - Two␊ - ␊ - )),␊ - (props => (␊ - ␊ - Three␊ - ␊ - ))]␊ - const layoutProps = {␊ - slides␊ - };␊ - export default class MDXContent extends React.Component {␊ - constructor(props) {␊ - super(props)␊ - this.layout = props =>␊ -
␊ - {props.children}␊ -
␊ - }␊ - render() {␊ - const { components, ...props } = this.props␊ - ␊ - return ␊ - {`Hello`}␊ - ␊ - {`Two`}␊ - ␊ - {`Three`}␊ - ␊ - ␊ - }␊ - }␊ - MDXContent.isMDXComponent = true` diff --git a/packages/mdx-plugin/test.js.snap b/packages/mdx-plugin/test.js.snap deleted file mode 100644 index 30f550b8980183194a99c49aa1c6e330c64413cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 492 zcmV zyJ=lSTVOzVNbK|7y?1xd7$MX^$>ZB|>^!`@KCKSd-}iSKs9Ki}Ld$4H?;8$UTRL`J za+fnMam1*QSY&BT1P<_dE9WeS-8OEy7;hc!o}Gp_u)~;!0}?ccJj`>#o7!{`-m^jm zWgSyR2olMZ(QWNuZu}@ovzQaADu+((p|nfH205dIN)goFV~a9bT>Tw!8SzLqnhQer zNS3j!j)~IL#(U3eyFV)Q8zeu`>n@^qI{eS%5>Ci0dKaz{O{S-RY?$H_yo`)owOOkx zCf8w+fy%N_2n;EDj7osO=0.1.1: resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" integrity sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg== -well-known-symbols@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/well-known-symbols/-/well-known-symbols-2.0.0.tgz#e9c7c07dbd132b7b84212c8174391ec1f9871ba5" - integrity sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q== - whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3: version "1.0.5" resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" @@ -8874,7 +8139,7 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which@^1.2.10, which@^1.2.12, which@^1.2.9, which@^1.3.0, which@^1.3.1: +which@^1.2.10, which@^1.2.9, which@^1.3.0, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -8888,13 +8153,6 @@ wide-align@^1.1.0: dependencies: string-width "^1.0.2 || 2" -widest-line@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc" - integrity sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA== - dependencies: - string-width "^2.1.1" - wordwrap@~0.0.2: version "0.0.3" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" @@ -8951,15 +8209,6 @@ write-file-atomic@2.4.1: imurmurhash "^0.1.4" signal-exit "^3.0.2" -write-file-atomic@^2.0.0, write-file-atomic@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.2.tgz#a7181706dfba17855d221140a9c06e15fcdd87b9" - integrity sha512-s0b6vB3xIVRLWywa6X9TOMA7k9zio0TMOsl9ZnDkliA/cfJlpHXAscj0gbHVJiTdIuAYpIyqS5GW91fqm6gG5g== - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - signal-exit "^3.0.2" - ws@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/ws/-/ws-4.1.0.tgz#a979b5d7d4da68bf54efe0408967c324869a7289" @@ -8980,11 +8229,6 @@ x-is-string@^0.1.0: resolved "https://registry.yarnpkg.com/x-is-string/-/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82" integrity sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI= -xdg-basedir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" - integrity sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ= - xml-name-validator@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" @@ -9000,11 +8244,6 @@ xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= - yallist@^3.0.0, yallist@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" @@ -9025,7 +8264,7 @@ yargs-parser@^11.1.1: camelcase "^5.0.0" decamelize "^1.2.0" -yargs@^12.0.2, yargs@^12.0.5: +yargs@^12.0.2: version "12.0.5" resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==