Fix tests and do some clean up

This commit is contained in:
Elliot DeNolf
2018-09-27 01:03:41 -04:00
parent 423f56f978
commit 17f78725f4
8 changed files with 154 additions and 163 deletions

View File

@@ -4,33 +4,5 @@ Headless CMS
## 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
- `npm test` to run test suite
- `npm run cov` to test suite with coverage

View File

@@ -6,7 +6,13 @@ const payloadConfig = require('./payload.config');
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();
@@ -14,7 +20,7 @@ app.use(express.json());
app.use(express.urlencoded({extended: true}));
app.use('/', routes);
payload.init(app, mongoose, payloadConfig);
payload.init(app);
app.listen(payloadConfig.port, () => {
console.log(`listening on ${payloadConfig.port}...`);

162
package-lock.json generated
View File

@@ -1734,42 +1734,10 @@
}
},
"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"
},
"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"
}
}
}
"version": "7.0.0-bridge.0",
"resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz",
"integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==",
"dev": true
},
"babel-generator": {
"version": "6.26.1",
@@ -1806,13 +1774,13 @@
}
},
"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==",
"version": "23.6.0",
"resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-23.6.0.tgz",
"integrity": "sha512-lqKGG6LYXYu+DQh/slrQ8nxXQkEkhugdXsU6St7GmhVS7Ilc/22ArwqXNJrf0QaOBjZB0360qZMwXqDYQHXaew==",
"dev": true,
"requires": {
"babel-plugin-istanbul": "^4.1.5",
"babel-preset-jest": "^22.4.4"
"babel-plugin-istanbul": "^4.1.6",
"babel-preset-jest": "^23.2.0"
}
},
"babel-loader": {
@@ -1849,9 +1817,9 @@
}
},
"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==",
"version": "23.2.0",
"resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.2.0.tgz",
"integrity": "sha1-5h+uBaHKiAGq3uV6bWa4zvr0QWc=",
"dev": true
},
"babel-plugin-syntax-object-rest-spread": {
@@ -1861,12 +1829,12 @@
"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==",
"version": "23.2.0",
"resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-23.2.0.tgz",
"integrity": "sha1-jsegOhOPABoaj7HoETZSvxpV2kY=",
"dev": true,
"requires": {
"babel-plugin-jest-hoist": "^22.4.4",
"babel-plugin-jest-hoist": "^23.2.0",
"babel-plugin-syntax-object-rest-spread": "^6.13.0"
}
},
@@ -1885,6 +1853,42 @@
"source-map-support": "^0.4.15"
},
"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": {
"version": "0.4.18",
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz",
@@ -7495,6 +7499,68 @@
"yargs": "^10.0.3"
},
"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": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",

View File

@@ -57,7 +57,7 @@
"babel-loader": "^8.0.2",
"css-loader": "^1.0.0",
"eslint": "^4.19.1",
"eslint-plugin-react": "^7.10.0",
"eslint-plugin-react": "^7.11.1",
"express": "^4.16.3",
"extract-text-webpack-plugin": "^4.0.0-beta.0",
"html-webpack-plugin": "^3.2.0",

View File

@@ -2,11 +2,8 @@ import routes from './routes/index.route';
import passport from 'passport';
import User from './models/user.model';
// class Payload {
export function init(app, mongoose, options) {
// baseURL = options.baseURL;
export function init(app) {
// configure passport for Auth
app.use(passport.initialize());
app.use(passport.session());

20
src/tests/api.spec.js Normal file
View 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
View 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();
});
});

View File

@@ -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();
});
});
});