Fix tests and do some clean up
This commit is contained in:
28
README.md
28
README.md
@@ -4,33 +4,5 @@ Headless CMS
|
|||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
```js
|
|
||||||
const Payload = require('payload');
|
|
||||||
|
|
||||||
// Initialize class
|
|
||||||
const payload = new Payload({
|
|
||||||
express: app,
|
|
||||||
mongoose,
|
|
||||||
baseURL: 'base123'
|
|
||||||
});
|
|
||||||
|
|
||||||
// Sample collection creation
|
|
||||||
let coolCollection = payload.newCollection('cool');
|
|
||||||
coolCollection.add({
|
|
||||||
test: { testProp: 'one', testProp2: 'two' }
|
|
||||||
});
|
|
||||||
coolCollection.register();
|
|
||||||
|
|
||||||
// Retrieve collection
|
|
||||||
let retrievedCollection = payload.getCollection('cool');
|
|
||||||
console.log(`Retrieved ${retrievedCollection.key} collection`);
|
|
||||||
console.log(`testProp: ${coolCollection.fields.test.testProp}`);
|
|
||||||
|
|
||||||
// Add payload views
|
|
||||||
app.set('views', [`${__dirname}/views`, payload.views]);
|
|
||||||
```
|
|
||||||
|
|
||||||
## Development
|
## Development
|
||||||
|
|
||||||
- `npm test` to run test suite
|
|
||||||
- `npm run cov` to test suite with coverage
|
|
||||||
|
|||||||
10
demo/app.js
10
demo/app.js
@@ -6,7 +6,13 @@ const payloadConfig = require('./payload.config');
|
|||||||
|
|
||||||
const routes = require(payloadConfig.dir.server);
|
const routes = require(payloadConfig.dir.server);
|
||||||
|
|
||||||
mongoose.connect(payloadConfig.mongoURL);
|
mongoose.connect(payloadConfig.mongoURL, { useNewUrlParser: true }, (err) => {
|
||||||
|
if (err) {
|
||||||
|
console.log('Unable to connect to the Mongo server. Please start the server. Error:', err);
|
||||||
|
} else {
|
||||||
|
console.log('Connected to Mongo server successfully!');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
const app = module.exports = express();
|
const app = module.exports = express();
|
||||||
|
|
||||||
@@ -14,7 +20,7 @@ app.use(express.json());
|
|||||||
app.use(express.urlencoded({extended: true}));
|
app.use(express.urlencoded({extended: true}));
|
||||||
|
|
||||||
app.use('/', routes);
|
app.use('/', routes);
|
||||||
payload.init(app, mongoose, payloadConfig);
|
payload.init(app);
|
||||||
|
|
||||||
app.listen(payloadConfig.port, () => {
|
app.listen(payloadConfig.port, () => {
|
||||||
console.log(`listening on ${payloadConfig.port}...`);
|
console.log(`listening on ${payloadConfig.port}...`);
|
||||||
|
|||||||
162
package-lock.json
generated
162
package-lock.json
generated
@@ -1734,42 +1734,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"babel-core": {
|
"babel-core": {
|
||||||
"version": "6.26.3",
|
"version": "7.0.0-bridge.0",
|
||||||
"resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz",
|
"resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz",
|
||||||
"integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==",
|
"integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==",
|
||||||
"dev": true,
|
"dev": true
|
||||||
"requires": {
|
|
||||||
"babel-code-frame": "^6.26.0",
|
|
||||||
"babel-generator": "^6.26.0",
|
|
||||||
"babel-helpers": "^6.24.1",
|
|
||||||
"babel-messages": "^6.23.0",
|
|
||||||
"babel-register": "^6.26.0",
|
|
||||||
"babel-runtime": "^6.26.0",
|
|
||||||
"babel-template": "^6.26.0",
|
|
||||||
"babel-traverse": "^6.26.0",
|
|
||||||
"babel-types": "^6.26.0",
|
|
||||||
"babylon": "^6.18.0",
|
|
||||||
"convert-source-map": "^1.5.1",
|
|
||||||
"debug": "^2.6.9",
|
|
||||||
"json5": "^0.5.1",
|
|
||||||
"lodash": "^4.17.4",
|
|
||||||
"minimatch": "^3.0.4",
|
|
||||||
"path-is-absolute": "^1.0.1",
|
|
||||||
"private": "^0.1.8",
|
|
||||||
"slash": "^1.0.0",
|
|
||||||
"source-map": "^0.5.7"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"debug": {
|
|
||||||
"version": "2.6.9",
|
|
||||||
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
|
|
||||||
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"ms": "2.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"babel-generator": {
|
"babel-generator": {
|
||||||
"version": "6.26.1",
|
"version": "6.26.1",
|
||||||
@@ -1806,13 +1774,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"babel-jest": {
|
"babel-jest": {
|
||||||
"version": "22.4.4",
|
"version": "23.6.0",
|
||||||
"resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-22.4.4.tgz",
|
"resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-23.6.0.tgz",
|
||||||
"integrity": "sha512-A9NB6/lZhYyypR9ATryOSDcqBaqNdzq4U+CN+/wcMsLcmKkPxQEoTKLajGfd3IkxNyVBT8NewUK2nWyGbSzHEQ==",
|
"integrity": "sha512-lqKGG6LYXYu+DQh/slrQ8nxXQkEkhugdXsU6St7GmhVS7Ilc/22ArwqXNJrf0QaOBjZB0360qZMwXqDYQHXaew==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"babel-plugin-istanbul": "^4.1.5",
|
"babel-plugin-istanbul": "^4.1.6",
|
||||||
"babel-preset-jest": "^22.4.4"
|
"babel-preset-jest": "^23.2.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"babel-loader": {
|
"babel-loader": {
|
||||||
@@ -1849,9 +1817,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"babel-plugin-jest-hoist": {
|
"babel-plugin-jest-hoist": {
|
||||||
"version": "22.4.4",
|
"version": "23.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-22.4.4.tgz",
|
"resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.2.0.tgz",
|
||||||
"integrity": "sha512-DUvGfYaAIlkdnygVIEl0O4Av69NtuQWcrjMOv6DODPuhuGLDnbsARz3AwiiI/EkIMMlxQDUcrZ9yoyJvTNjcVQ==",
|
"integrity": "sha1-5h+uBaHKiAGq3uV6bWa4zvr0QWc=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"babel-plugin-syntax-object-rest-spread": {
|
"babel-plugin-syntax-object-rest-spread": {
|
||||||
@@ -1861,12 +1829,12 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"babel-preset-jest": {
|
"babel-preset-jest": {
|
||||||
"version": "22.4.4",
|
"version": "23.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-22.4.4.tgz",
|
"resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-23.2.0.tgz",
|
||||||
"integrity": "sha512-+dxMtOFwnSYWfum0NaEc0O03oSdwBsjx4tMSChRDPGwu/4wSY6Q6ANW3wkjKpJzzguaovRs/DODcT4hbSN8yiA==",
|
"integrity": "sha1-jsegOhOPABoaj7HoETZSvxpV2kY=",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"babel-plugin-jest-hoist": "^22.4.4",
|
"babel-plugin-jest-hoist": "^23.2.0",
|
||||||
"babel-plugin-syntax-object-rest-spread": "^6.13.0"
|
"babel-plugin-syntax-object-rest-spread": "^6.13.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -1885,6 +1853,42 @@
|
|||||||
"source-map-support": "^0.4.15"
|
"source-map-support": "^0.4.15"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"babel-core": {
|
||||||
|
"version": "6.26.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz",
|
||||||
|
"integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"babel-code-frame": "^6.26.0",
|
||||||
|
"babel-generator": "^6.26.0",
|
||||||
|
"babel-helpers": "^6.24.1",
|
||||||
|
"babel-messages": "^6.23.0",
|
||||||
|
"babel-register": "^6.26.0",
|
||||||
|
"babel-runtime": "^6.26.0",
|
||||||
|
"babel-template": "^6.26.0",
|
||||||
|
"babel-traverse": "^6.26.0",
|
||||||
|
"babel-types": "^6.26.0",
|
||||||
|
"babylon": "^6.18.0",
|
||||||
|
"convert-source-map": "^1.5.1",
|
||||||
|
"debug": "^2.6.9",
|
||||||
|
"json5": "^0.5.1",
|
||||||
|
"lodash": "^4.17.4",
|
||||||
|
"minimatch": "^3.0.4",
|
||||||
|
"path-is-absolute": "^1.0.1",
|
||||||
|
"private": "^0.1.8",
|
||||||
|
"slash": "^1.0.0",
|
||||||
|
"source-map": "^0.5.7"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"debug": {
|
||||||
|
"version": "2.6.9",
|
||||||
|
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
|
||||||
|
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"ms": "2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"source-map-support": {
|
"source-map-support": {
|
||||||
"version": "0.4.18",
|
"version": "0.4.18",
|
||||||
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz",
|
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz",
|
||||||
@@ -7495,6 +7499,68 @@
|
|||||||
"yargs": "^10.0.3"
|
"yargs": "^10.0.3"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"babel-core": {
|
||||||
|
"version": "6.26.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz",
|
||||||
|
"integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"babel-code-frame": "^6.26.0",
|
||||||
|
"babel-generator": "^6.26.0",
|
||||||
|
"babel-helpers": "^6.24.1",
|
||||||
|
"babel-messages": "^6.23.0",
|
||||||
|
"babel-register": "^6.26.0",
|
||||||
|
"babel-runtime": "^6.26.0",
|
||||||
|
"babel-template": "^6.26.0",
|
||||||
|
"babel-traverse": "^6.26.0",
|
||||||
|
"babel-types": "^6.26.0",
|
||||||
|
"babylon": "^6.18.0",
|
||||||
|
"convert-source-map": "^1.5.1",
|
||||||
|
"debug": "^2.6.9",
|
||||||
|
"json5": "^0.5.1",
|
||||||
|
"lodash": "^4.17.4",
|
||||||
|
"minimatch": "^3.0.4",
|
||||||
|
"path-is-absolute": "^1.0.1",
|
||||||
|
"private": "^0.1.8",
|
||||||
|
"slash": "^1.0.0",
|
||||||
|
"source-map": "^0.5.7"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"babel-jest": {
|
||||||
|
"version": "22.4.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-22.4.4.tgz",
|
||||||
|
"integrity": "sha512-A9NB6/lZhYyypR9ATryOSDcqBaqNdzq4U+CN+/wcMsLcmKkPxQEoTKLajGfd3IkxNyVBT8NewUK2nWyGbSzHEQ==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"babel-plugin-istanbul": "^4.1.5",
|
||||||
|
"babel-preset-jest": "^22.4.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"babel-plugin-jest-hoist": {
|
||||||
|
"version": "22.4.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-22.4.4.tgz",
|
||||||
|
"integrity": "sha512-DUvGfYaAIlkdnygVIEl0O4Av69NtuQWcrjMOv6DODPuhuGLDnbsARz3AwiiI/EkIMMlxQDUcrZ9yoyJvTNjcVQ==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"babel-preset-jest": {
|
||||||
|
"version": "22.4.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-22.4.4.tgz",
|
||||||
|
"integrity": "sha512-+dxMtOFwnSYWfum0NaEc0O03oSdwBsjx4tMSChRDPGwu/4wSY6Q6ANW3wkjKpJzzguaovRs/DODcT4hbSN8yiA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"babel-plugin-jest-hoist": "^22.4.4",
|
||||||
|
"babel-plugin-syntax-object-rest-spread": "^6.13.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"debug": {
|
||||||
|
"version": "2.6.9",
|
||||||
|
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
|
||||||
|
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"ms": "2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"strip-bom": {
|
"strip-bom": {
|
||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
|
||||||
|
|||||||
@@ -57,7 +57,7 @@
|
|||||||
"babel-loader": "^8.0.2",
|
"babel-loader": "^8.0.2",
|
||||||
"css-loader": "^1.0.0",
|
"css-loader": "^1.0.0",
|
||||||
"eslint": "^4.19.1",
|
"eslint": "^4.19.1",
|
||||||
"eslint-plugin-react": "^7.10.0",
|
"eslint-plugin-react": "^7.11.1",
|
||||||
"express": "^4.16.3",
|
"express": "^4.16.3",
|
||||||
"extract-text-webpack-plugin": "^4.0.0-beta.0",
|
"extract-text-webpack-plugin": "^4.0.0-beta.0",
|
||||||
"html-webpack-plugin": "^3.2.0",
|
"html-webpack-plugin": "^3.2.0",
|
||||||
|
|||||||
@@ -2,11 +2,8 @@ import routes from './routes/index.route';
|
|||||||
import passport from 'passport';
|
import passport from 'passport';
|
||||||
import User from './models/user.model';
|
import User from './models/user.model';
|
||||||
|
|
||||||
// class Payload {
|
export function init(app) {
|
||||||
export function init(app, mongoose, options) {
|
|
||||||
// baseURL = options.baseURL;
|
|
||||||
|
|
||||||
// configure passport for Auth
|
|
||||||
app.use(passport.initialize());
|
app.use(passport.initialize());
|
||||||
app.use(passport.session());
|
app.use(passport.session());
|
||||||
|
|
||||||
|
|||||||
20
src/tests/api.spec.js
Normal file
20
src/tests/api.spec.js
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
import request from 'supertest';
|
||||||
|
import * as payload from '../index';
|
||||||
|
import * as utils from './testUtils';
|
||||||
|
import httpStatus from 'http-status';
|
||||||
|
|
||||||
|
describe('API tests', () => {
|
||||||
|
test('Mounts /health-check route', (done) => {
|
||||||
|
const expressApp = utils.getConfiguredExpress();
|
||||||
|
payload.init(expressApp);
|
||||||
|
|
||||||
|
let server = expressApp.listen(3000);
|
||||||
|
request(expressApp)
|
||||||
|
.get('/health-check')
|
||||||
|
.then(res => {
|
||||||
|
expect(res.statusCode).toEqual(httpStatus.OK);
|
||||||
|
server.close();
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
10
src/tests/payload.spec.js
Normal file
10
src/tests/payload.spec.js
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
import express from 'express';
|
||||||
|
import * as payload from '../index';
|
||||||
|
|
||||||
|
describe('Basic Payload Tests', () => {
|
||||||
|
test('Instantiate Payload', () => {
|
||||||
|
const app = express();
|
||||||
|
payload.init(app);
|
||||||
|
expect(payload).toBeDefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -1,80 +0,0 @@
|
|||||||
/* eslint-disable global-require */
|
|
||||||
|
|
||||||
import express from 'express';
|
|
||||||
import mongoose from 'mongoose';
|
|
||||||
import request from 'supertest';
|
|
||||||
import { Payload } from '../';
|
|
||||||
import * as utils from './testUtils';
|
|
||||||
|
|
||||||
const app = express();
|
|
||||||
|
|
||||||
function initBasicPayload() {
|
|
||||||
return new Payload({
|
|
||||||
express: app,
|
|
||||||
mongoose: mongoose,
|
|
||||||
baseURL: 'localhost'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
describe('Basic Payload Tests', () => {
|
|
||||||
test('Instantiate Payload', () => {
|
|
||||||
const payload = initBasicPayload();
|
|
||||||
expect(payload).toBeDefined();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('API route tests', () => {
|
|
||||||
test('Mount /api route', (done) => {
|
|
||||||
const expressApp = utils.getConfiguredExpress();
|
|
||||||
const payload = new Payload({
|
|
||||||
express: expressApp,
|
|
||||||
mongoose: mongoose,
|
|
||||||
baseURL: 'localhost'
|
|
||||||
});
|
|
||||||
|
|
||||||
let server = expressApp.listen(3000);
|
|
||||||
request(expressApp).get('/api').then((response) => {
|
|
||||||
expect(response.statusCode).toEqual(200);
|
|
||||||
server.close();
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
test('Mount /api/testmodel GET route', (done) => {
|
|
||||||
const expressApp = utils.getConfiguredExpress();
|
|
||||||
const payload = new Payload({
|
|
||||||
express: expressApp,
|
|
||||||
mongoose: mongoose,
|
|
||||||
baseURL: 'localhost'
|
|
||||||
});
|
|
||||||
|
|
||||||
// File contains what a developer would write
|
|
||||||
require('./models/testModel')(payload);
|
|
||||||
|
|
||||||
let server = expressApp.listen(3000);
|
|
||||||
request(expressApp).get('/api/testmodel').then((response) => {
|
|
||||||
expect(response.statusCode).toEqual(200);
|
|
||||||
server.close();
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
test('Mount /api/testmodel POST route', (done) => {
|
|
||||||
const expressApp = utils.getConfiguredExpress();
|
|
||||||
const payload = new Payload({
|
|
||||||
express: expressApp,
|
|
||||||
mongoose: mongoose,
|
|
||||||
baseURL: 'localhost'
|
|
||||||
});
|
|
||||||
|
|
||||||
// File contains what a developer would write
|
|
||||||
require('./models/testModel')(payload);
|
|
||||||
|
|
||||||
let server = expressApp.listen(3000);
|
|
||||||
request(expressApp).post('/api/testmodel').then((response) => {
|
|
||||||
expect(response.statusCode).toEqual(201);
|
|
||||||
server.close();
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
Reference in New Issue
Block a user