Skip to content
This repository was archived by the owner on Jan 25, 2024. It is now read-only.

Commit e6e5bcc

Browse files
authored
Merge pull request #22 from nteract/add-testing
Add test to bootstrapped app
2 parents 01821ca + 7a904f6 commit e6e5bcc

File tree

5 files changed

+70
-5
lines changed

5 files changed

+70
-5
lines changed

package.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,13 @@
1616
"bin": {
1717
"create-nteract-app": "./src/index.js"
1818
},
19+
"jest": {
20+
"testPathIgnorePatterns": [
21+
"/node_modules/",
22+
"src/*",
23+
"snow-leopard/*"
24+
]
25+
},
1926
"husky": {
2027
"hooks": {
2128
"pre-commit": "lint-staged"

src/create-nteract-app.js

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,22 @@ function createApp(name, verbose, version, useNpm, template, language) {
7575
dev: "next",
7676
build: "next build",
7777
start: "next start",
78-
export: "next export"
78+
export: "next export",
79+
test: "jest"
80+
},
81+
jest: {
82+
setupFiles: ["./scripts/test-setup"]
83+
},
84+
devDependencies: {
85+
"@babel/preset-env": "^7.0.0",
86+
"@babel/preset-react": "^7.0.0",
87+
"babel-core": "^7.0.0-0",
88+
"@babel/core": "^7.0.0",
89+
"babel-jest": "^23.4.2",
90+
enzyme: "^3.6.0",
91+
"enzyme-adapter-react-16": "^1.5.0",
92+
"enzyme-to-json": "^3.3.4",
93+
jest: "^23.5.0"
7994
}
8095
};
8196
fs.writeFileSync(
@@ -84,15 +99,23 @@ function createApp(name, verbose, version, useNpm, template, language) {
8499
);
85100
const originalDirectory = process.cwd();
86101
process.chdir(root);
87-
run(root, appName, version, verbose, originalDirectory, template);
102+
const devDeps = Object.keys(packageJson.devDependencies);
103+
run(root, appName, version, verbose, originalDirectory, template, devDeps);
88104
}
89105
const exec = require("child_process").exec;
90106
let nodePath;
91107
exec("npm config get prefix", function(err, stdout, stderr) {
92108
nodePath = stdout;
93109
});
94-
95-
function run(root, appName, version, verbose, originalDirectory, template) {
110+
function run(
111+
root,
112+
appName,
113+
version,
114+
verbose,
115+
originalDirectory,
116+
template,
117+
devDeps
118+
) {
96119
const allDependencies = [
97120
"react",
98121
"react-dom",
@@ -113,7 +136,10 @@ function run(root, appName, version, verbose, originalDirectory, template) {
113136
console.log("Installing packages. This might take a couple of minutes.");
114137
let packageName;
115138
console.log(
116-
`Installing ${allDependencies.map(entry => chalk.cyan(entry)).join(", ")}`
139+
`Installing ${allDependencies
140+
.concat(devDeps)
141+
.map(entry => chalk.cyan(entry))
142+
.join(", ")}`
117143
);
118144
console.log();
119145
const useYarn = isYarnAvailable();
@@ -165,6 +191,9 @@ function run(root, appName, version, verbose, originalDirectory, template) {
165191
console.log(chalk.cyan(` ${displayedCommand} dev`));
166192
console.log(" Starts the development server.");
167193
console.log();
194+
console.log(chalk.cyan(` ${displayedCommand} test`));
195+
console.log(" Starts the test runner.");
196+
console.log();
168197
console.log(chalk.cyan(` ${displayedCommand} build`));
169198
console.log(" Builds the app for production.");
170199
console.log();

src/template/.babelrc

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"env": {
3+
"development": {
4+
"presets": ["next/babel"]
5+
},
6+
"production": {
7+
"presets": ["next/babel"]
8+
},
9+
"test": {
10+
"presets": ["@babel/preset-env", "@babel/preset-react"]
11+
}
12+
}
13+
}

src/template/__tests__/index-spec.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import * as React from "react";
2+
import { shallow } from "enzyme";
3+
import toJson from "enzyme-to-json";
4+
5+
import Index from "../pages";
6+
7+
describe("test", () => {
8+
it("renders the index page correctly", () => {
9+
const component = shallow(<Index />);
10+
expect(toJson(component)).toMatchSnapshot();
11+
});
12+
});

src/template/scripts/test-setup.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
const { configure } = require("enzyme");
2+
const Adapter = require("enzyme-adapter-react-16");
3+
4+
configure({ adapter: new Adapter() });

0 commit comments

Comments
 (0)