diff --git a/package.json b/package.json index 8c24d7c7963f893fb15788583d44acd4efd9f670..a27527e807c264b0013c5863382d1e19bc95eac4 100644 --- a/package.json +++ b/package.json @@ -26,11 +26,29 @@ }, "scripts": { "clean": "lerna clean", - "test": "lerna run test", + "test": "jest", "lint": "npm run lint:js && npm run lint:style", "lint:js": "eslint 'packages/**/*.{js,jsx}'", "lint:style": "stylelint 'packages/**/*.{css,scss}'", "precommit": "lint-staged" }, + "jest": { + "collectCoverage": true, + "collectCoverageFrom": [ + "packages/cli/src/*.js", + "packages/cli/cli/*.js", + "client/src/**/*.{js,jsx}", + "components/**/*.{js,jsx}", + "db-manager/src/**/*.js", + "logger/src/**/*.js", + "server/src/**/*.js", + "sse/lib/**/*.js", + "theme-plugin/*.js", + "ui/src/**/*.{js,jsx}", + "!**/*.test.{js,jsx}", + "!**/node_modules/**" + ], + "projects": ["packages/*"] + }, "workspaces": ["packages/*", "packages/components/packages/*"] } diff --git a/packages/cli/package.json b/packages/cli/package.json index dc1d42488eac98b282e1db575feaccb847f5481c..1cc44941077e894afae7cd2506d116c57e6813a6 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -43,13 +43,14 @@ "nsp": "^2.8.1" }, "jest": { - "testMatch": ["**/test/*.js", "**/test/cli/*.js"], + "testMatch": ["<rootDir>/test/*.test.js", "<rootDir>/test/cli/*.test.js"], "testPathIgnorePatterns": ["<rootDir>/build/"], "collectCoverage": true, "collectCoverageFrom": ["src/*.js", "cli/*.js"], "modulePaths": ["<rootDir>/node_modules"], "testEnvironment": "node", "unmockedModulePathPatterns": ["/src/models"], + "setupTestFrameworkScriptFile": "<rootDir>/test/jest-setup.js", "verbose": true } } diff --git a/packages/cli/test/cli/add.js b/packages/cli/test/cli/add.test.js similarity index 94% rename from packages/cli/test/cli/add.js rename to packages/cli/test/cli/add.test.js index 0ec0254eb81421735c8f6a1e34be4e4edf305cc0..bfae775ecf67d047b467893953b407530243f495 100644 --- a/packages/cli/test/cli/add.js +++ b/packages/cli/test/cli/add.test.js @@ -24,9 +24,7 @@ const writeSpy = fs.writeJsonSync describe('add', () => { beforeAll(() => { - process.chdir( - path.join(__dirname, '..', '..', 'node_modules', '@pubsweet', 'starter'), - ) + process.chdir(path.dirname(require.resolve('@pubsweet/starter'))) }) beforeEach(() => { diff --git a/packages/cli/test/cli/adduser.js b/packages/cli/test/cli/adduser.test.js similarity index 100% rename from packages/cli/test/cli/adduser.js rename to packages/cli/test/cli/adduser.test.js diff --git a/packages/cli/test/cli/new.js b/packages/cli/test/cli/new.test.js similarity index 100% rename from packages/cli/test/cli/new.js rename to packages/cli/test/cli/new.test.js diff --git a/packages/cli/test/cli/remove.js b/packages/cli/test/cli/remove.test.js similarity index 94% rename from packages/cli/test/cli/remove.js rename to packages/cli/test/cli/remove.test.js index ca2fe44ad980d70d7560590d588ea0dddc7fcb4e..f2ebd2087b697b25d8cedd9cff1572b6e3f7c42f 100644 --- a/packages/cli/test/cli/remove.js +++ b/packages/cli/test/cli/remove.test.js @@ -24,9 +24,7 @@ const writeSpy = fs.writeJsonSync describe('remove', () => { beforeAll(() => { - process.chdir( - path.join(__dirname, '..', '..', 'node_modules', '@pubsweet', 'starter'), - ) + process.chdir(path.dirname(require.resolve('@pubsweet/starter'))) }) beforeEach(() => { diff --git a/packages/cli/test/cli/setupdb.js b/packages/cli/test/cli/setupdb.test.js similarity index 100% rename from packages/cli/test/cli/setupdb.js rename to packages/cli/test/cli/setupdb.test.js diff --git a/packages/cli/test/cli/start.js b/packages/cli/test/cli/start.test.js similarity index 100% rename from packages/cli/test/cli/start.js rename to packages/cli/test/cli/start.test.js diff --git a/packages/cli/test/helpers/index.js b/packages/cli/test/helpers/index.js index e5e9718167c527fe246b7a1b30804a72a96adb74..fc837419deef6c66b43d094e3a4c6572ac21d9fb 100644 --- a/packages/cli/test/helpers/index.js +++ b/packages/cli/test/helpers/index.js @@ -3,7 +3,7 @@ const { spawn } = require('child_process') const path = require('path') const reduce = require('lodash/fp/reduce').convert({ cap: false }) -const pubsweet = path.resolve('bin/pubsweet.js') +const pubsweet = path.resolve(__dirname, '..', '..', 'bin', 'pubsweet.js') const formatOpts = reduce( (acc, value, key) => acc.concat(`--${key}`, value), @@ -41,6 +41,7 @@ const runCommandAsync = ({ args, options, cwd, nodeConfig, stdio }) => stdio, env: getEnvWithConfig(nodeConfig), shell: true, + detached: true, }) module.exports = { diff --git a/packages/cli/test/integration.js b/packages/cli/test/integration.test.js similarity index 89% rename from packages/cli/test/integration.js rename to packages/cli/test/integration.test.js index 316d531b92636c7edc6d06d730012f4aaf9b7eeb..7a3e56f254ee385ccd8d8e1deeb35d7704b50402 100644 --- a/packages/cli/test/integration.js +++ b/packages/cli/test/integration.test.js @@ -18,6 +18,18 @@ const nodeConfig = { dbPath, adapter: 'leveldb', }, + // TODO: Remove this once version of server that handles + // undefined app validations is released. + validations: 'path', + authsome: { + mode: 'authsome/src/modes/blog', + }, + pubsweet: { + components: [], + }, + 'pubsweet-client': { + theme: 'PepperTheme', + }, } const dbOptions = { @@ -155,11 +167,17 @@ describe('CLI: integration test', () => { app.stdout.on('data', async data => { console.log('stdout:', data.toString()) if (data.toString().includes('App is listening')) { - const result = await fetch('http://localhost:4000') + const result = await fetch('http://localhost:3000') expect(result.status).toBe(200) - done() + console.log('Killing the app') + process.kill(-app.pid) } }) + + app.on('close', (code, signal) => { + console.log(`App killed ${signal}`) + done() + }) }) }) }) diff --git a/packages/cli/test/jest-setup.js b/packages/cli/test/jest-setup.js new file mode 100644 index 0000000000000000000000000000000000000000..7363485a9e993cb751103f32c4a3705f7a4404c3 --- /dev/null +++ b/packages/cli/test/jest-setup.js @@ -0,0 +1,5 @@ +const path = require('path') + +process.env.NODE_CONFIG_DIR = path.resolve(__dirname, '..', 'config') + +process.cwd = () => path.resolve(__dirname, '..') diff --git a/packages/client/package.json b/packages/client/package.json index c0e171854bc299477dedbc9bc28414cbf5bed7f8..666b81586822477e4e16b5a9fbc47a938ba5c5ee 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -58,6 +58,7 @@ "jest": { "testRegex": "/test/.+test.jsx?$", "collectCoverage": true, + "setupTestFrameworkScriptFile": "<rootDir>/test/jest-setup.js", "collectCoverageFrom": ["src/**/*.{js,jsx}"], "globals": { "window": {} diff --git a/packages/client/test/jest-setup.js b/packages/client/test/jest-setup.js new file mode 100644 index 0000000000000000000000000000000000000000..bc711820f3cbd4f37ae78a1ba825fa75a4f49134 --- /dev/null +++ b/packages/client/test/jest-setup.js @@ -0,0 +1,7 @@ +import Enzyme from 'enzyme' +import Adapter from 'enzyme-adapter-react-16' +import path from 'path' + +Enzyme.configure({ adapter: new Adapter() }) + +process.env.NODE_CONFIG_DIR = path.resolve(__dirname, '..', 'config') diff --git a/packages/components/package.json b/packages/components/package.json index 5c6fe970da2c55f8181f96ca51206bd32d2a9a75..2aaafed342aa1f0ed0c622b9af6d28aa0069cebe 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -51,6 +51,7 @@ "\\.s?css$": "identity-obj-proxy" }, "transformIgnorePatterns": ["/node_modules/(?!pubsweet)"], - "testPathIgnorePatterns": ["/node_modules", "config/"] + "testPathIgnorePatterns": ["/node_modules", "config/"], + "setupTestFrameworkScriptFile": "<rootDir>/test/jest-setup.js" } } diff --git a/packages/components/test/jest-setup.js b/packages/components/test/jest-setup.js new file mode 100644 index 0000000000000000000000000000000000000000..bc711820f3cbd4f37ae78a1ba825fa75a4f49134 --- /dev/null +++ b/packages/components/test/jest-setup.js @@ -0,0 +1,7 @@ +import Enzyme from 'enzyme' +import Adapter from 'enzyme-adapter-react-16' +import path from 'path' + +Enzyme.configure({ adapter: new Adapter() }) + +process.env.NODE_CONFIG_DIR = path.resolve(__dirname, '..', 'config') diff --git a/packages/db-manager/package.json b/packages/db-manager/package.json index 90c1b8f295732509c1f2e4e16bea4948d7e2f4ba..93b91ce9ec1250ac39c6811811e9a33e2b1eae97 100644 --- a/packages/db-manager/package.json +++ b/packages/db-manager/package.json @@ -19,10 +19,10 @@ "npm": ">=3.0.0" }, "jest": { - "testMatch": ["**/test/**/*.js"], + "testMatch": ["**/test/**/*.test.js"], "collectCoverage": true, "collectCoverageFrom": ["src/**/*.js"], - "modulePaths": ["<rootDir>/node_modules"], + "setupTestFrameworkScriptFile": "<rootDir>/test/jest-setup.js", "testEnvironment": "node", "verbose": true }, diff --git a/packages/db-manager/test/jest-setup.js b/packages/db-manager/test/jest-setup.js new file mode 100644 index 0000000000000000000000000000000000000000..7de2beed55c538a4a39fe8495b07dde62f6db5f9 --- /dev/null +++ b/packages/db-manager/test/jest-setup.js @@ -0,0 +1,3 @@ +const path = require('path') + +process.env.NODE_CONFIG_DIR = path.resolve(__dirname, '..', 'config') diff --git a/packages/logger/package.json b/packages/logger/package.json index a154b4bc5075b6370d6efc702727d608f6848ba8..0a4aa1f2dd684cd942ebdcb42de9ace7e4afc557 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -25,12 +25,13 @@ "winston": "^2.3.1" }, "jest": { - "testMatch": ["**/test/**/*.js"], + "testMatch": ["**/test/**/*test.js"], "collectCoverage": true, "collectCoverageFrom": ["src/**/*.js"], "modulePaths": ["<rootDir>/node_modules"], "testEnvironment": "node", - "verbose": true + "verbose": true, + "setupTestFrameworkScriptFile": "<rootDir>/test/jest-setup.js" }, "dependencies": { "config": "^1.26.2", diff --git a/packages/logger/test/jest-setup.js b/packages/logger/test/jest-setup.js new file mode 100644 index 0000000000000000000000000000000000000000..7de2beed55c538a4a39fe8495b07dde62f6db5f9 --- /dev/null +++ b/packages/logger/test/jest-setup.js @@ -0,0 +1,3 @@ +const path = require('path') + +process.env.NODE_CONFIG_DIR = path.resolve(__dirname, '..', 'config') diff --git a/packages/server/package.json b/packages/server/package.json index a980b7ad9c493c83db42db1c431e41c8326b0b65..6351a13cbddcb088f5fdeebbea126e89e7afaaad 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -65,6 +65,7 @@ "testEnvironment": "node", "testRegex": "/test/.*_test.js$", "collectCoverage": true, - "collectCoverageFrom": ["src/**/*.js"] + "collectCoverageFrom": ["src/**/*.js"], + "setupTestFrameworkScriptFile": "<rootDir>/test/jest-setup.js" } } diff --git a/packages/server/test/db_test.js b/packages/server/test/db_test.js index a91b0b9eba78ff2ef21a6b86dde83de46f27a763..69ecc99d0c022b3a94bbc88aec47b202cc895d08 100644 --- a/packages/server/test/db_test.js +++ b/packages/server/test/db_test.js @@ -1,3 +1,7 @@ +const path = require('path') + +process.env.NODE_CONFIG_DIR = path.resolve(__dirname, '..', 'config') + describe('db configuration', () => { it('overrides default adapter with config', async () => { const originalNodeEnv = process.env.NODE_ENV diff --git a/packages/server/test/jest-setup.js b/packages/server/test/jest-setup.js new file mode 100644 index 0000000000000000000000000000000000000000..7de2beed55c538a4a39fe8495b07dde62f6db5f9 --- /dev/null +++ b/packages/server/test/jest-setup.js @@ -0,0 +1,3 @@ +const path = require('path') + +process.env.NODE_CONFIG_DIR = path.resolve(__dirname, '..', 'config') diff --git a/packages/server/test/register_components_test.js b/packages/server/test/register_components_test.js index a43a5507f92a84ef04303e10416d28a9472d7a65..3af0161ac694573b949d8455664059af67ae84e7 100644 --- a/packages/server/test/register_components_test.js +++ b/packages/server/test/register_components_test.js @@ -3,12 +3,7 @@ const request = require('supertest') const path = require('path') const config = require('config') -const mockComponentPath = path.join( - process.cwd(), - 'test', - 'mocks', - 'mock_component.js', -) +const mockComponentPath = path.resolve(__dirname, 'mocks', 'mock_component.js') config.pubsweet = { components: [mockComponentPath] } const api = require('./helpers/api')