mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-03-25 02:31:59 -05:00
Separated test env into: acceptance, regression and unit tests (#10411)
refs #9178 `yarn test` only runs acceptance and unit tests. We will setup a cronjob in Travis and run the regression tests once per day. You can manually run them with `yarn test:regression` This separation is just a first step into the right direction. Travis will no longer run for 10-13minutes. The goal is to run common API use cases and unit tests in Travis and locally by default. ## After this separation we still need to: - re-work our test utility - remove some tests - define which tests are our common API use cases - rewrite some tests - make testing easier (starting/stopping Ghost, fixtures and resetting services or event listeners, it's a pain and takes sometimes ages to fix tests) --- **Acceptance:** - common/basic API use cases against the current **stable** API **Unit:** - all unit tests (no database access) - proper mocking **Regression:** - packages we don't want to run for each PR or commit - tests which protect Ghost from breaking components and behaviour - it is wishful that regression tests are using Ghost's API's (frontend, apps, core) --- **This PR requires an update to our docs.**
This commit is contained in:
parent
3af0110bcc
commit
75fbd272c9
75 changed files with 222 additions and 940 deletions
97
Gruntfile.js
97
Gruntfile.js
|
@ -139,8 +139,6 @@ var config = require('./core/server/config'),
|
|||
},
|
||||
|
||||
// ### grunt-mocha-cli
|
||||
// Configuration for the mocha test runner, used to run unit, integration and route tests as part of
|
||||
// `grunt validate`. See [grunt validate](#validate) and its sub tasks for more information.
|
||||
mochacli: {
|
||||
options: {
|
||||
ui: 'bdd',
|
||||
|
@ -151,24 +149,21 @@ var config = require('./core/server/config'),
|
|||
exit: true
|
||||
},
|
||||
|
||||
// #### All Unit tests
|
||||
unit: {
|
||||
src: [
|
||||
'core/test/unit/**/*_spec.js'
|
||||
]
|
||||
},
|
||||
|
||||
// #### All Integration tests
|
||||
integration: {
|
||||
acceptance: {
|
||||
src: [
|
||||
'core/test/integration/**/*_spec.js'
|
||||
'core/test/acceptance/**/*_spec.js'
|
||||
]
|
||||
},
|
||||
|
||||
// #### All functional tests
|
||||
functional: {
|
||||
regression: {
|
||||
src: [
|
||||
'core/test/functional/**/*_spec.js'
|
||||
'core/test/regression/**/*_spec.js'
|
||||
]
|
||||
},
|
||||
|
||||
|
@ -194,8 +189,8 @@ var config = require('./core/server/config'),
|
|||
},
|
||||
coverage_all: {
|
||||
src: [
|
||||
'core/test/integration',
|
||||
'core/test/functional',
|
||||
'core/test/acceptance',
|
||||
'core/test/regression',
|
||||
'core/test/unit'
|
||||
],
|
||||
options: {
|
||||
|
@ -444,8 +439,7 @@ var config = require('./core/server/config'),
|
|||
// It works for any path relative to the core/test folder. It will also run all the tests in a single directory
|
||||
// You can also run a test with grunt test:core/test/unit/... to get bash autocompletion
|
||||
//
|
||||
// `grunt test:integration/api` - runs the api integration tests
|
||||
// `grunt test:integration` - runs the integration tests in the root folder and excludes all api & model tests
|
||||
// `grunt test:regression/api` - runs the api regression tests
|
||||
grunt.registerTask('test', 'Run a particular spec file from the core/test directory e.g. `grunt test:unit/apps_spec.js`', function (test) {
|
||||
if (!test) {
|
||||
grunt.fail.fatal('No test provided. `grunt test` expects a filename. e.g.: `grunt test:unit/apps_spec.js`. Did you mean `npm test` or `grunt validate`?');
|
||||
|
@ -494,16 +488,11 @@ var config = require('./core/server/config'),
|
|||
return grunt.task.run(['lint']);
|
||||
}
|
||||
|
||||
grunt.task.run(['test-all']);
|
||||
grunt.task.run(['test-acceptance', 'test-unit']);
|
||||
});
|
||||
|
||||
// ### Test-All
|
||||
// **Main testing task**
|
||||
//
|
||||
// `grunt test-all` will lint and test your pre-built local Ghost codebase.
|
||||
//
|
||||
grunt.registerTask('test-all', 'Run all server tests',
|
||||
['test-functional', 'test-unit', 'test-integration']);
|
||||
['test-acceptance', 'test-unit', 'test-regression']);
|
||||
|
||||
// ### Lint
|
||||
//
|
||||
|
@ -537,75 +526,21 @@ var config = require('./core/server/config'),
|
|||
['test-setup', 'mochacli:unit']
|
||||
);
|
||||
|
||||
// ### Integration tests *(sub task)*
|
||||
// `grunt test-integration` will run just the integration tests
|
||||
//
|
||||
// Provided you already have a `config.*.json` file, you can run just the model integration tests by running:
|
||||
//
|
||||
// `grunt test:integration/model`
|
||||
//
|
||||
// Or just the api integration tests by running:
|
||||
//
|
||||
// `grunt test:integration/api`
|
||||
//
|
||||
// Integration tests are run with [mocha](http://mochajs.org/) using
|
||||
// [should](https://github.com/visionmedia/should.js) to describe the tests in a highly readable style.
|
||||
// Integration tests are different to the unit tests because they make requests to the database.
|
||||
//
|
||||
// If you need to run an individual integration test file you can use the `grunt test:<file_path>` task:
|
||||
//
|
||||
// `grunt test:integration/api/api_tags_spec.js`
|
||||
//
|
||||
// Their purpose is to test that both the api and models behave as expected when the database layer is involved.
|
||||
// These tests are run against sqlite3 and mysql on travis and ensure that differences between the databases
|
||||
// don't cause bugs.
|
||||
//
|
||||
// A coverage report can be generated for these tests using the `grunt test-coverage` task.
|
||||
grunt.registerTask('test-integration', 'Run integration tests (mocha + db access)',
|
||||
['test-setup', 'mochacli:integration']
|
||||
grunt.registerTask('test-regression', 'Run regression tests.',
|
||||
['test-setup', 'mochacli:regression']
|
||||
);
|
||||
|
||||
// ### Route tests *(sub task)*
|
||||
// `grunt test-functional` will run just the route tests
|
||||
//
|
||||
// If you need to run an individual route test file, you can use the `grunt test:<file_path>` task:
|
||||
//
|
||||
// `grunt test:functional/admin_spec.js`
|
||||
//
|
||||
// Route tests are run with [mocha](http://mochajs.org/) using
|
||||
// [should](https://github.com/visionmedia/should.js) and [supertest](https://github.com/visionmedia/supertest)
|
||||
// to describe and create the tests.
|
||||
//
|
||||
// Supertest enables us to describe requests that we want to make, and also describe the response we expect to
|
||||
// receive back. It works directly with express, so we don't have to run a server to run the tests.
|
||||
//
|
||||
// The purpose of the route tests is to ensure that all of the routes (pages, and API requests) in Ghost
|
||||
// are working as expected, including checking the headers and status codes received. It is very easy and
|
||||
// quick to test many permutations of routes / urls in the system.
|
||||
grunt.registerTask('test-functional', 'Run functional tests (mocha)',
|
||||
['test-setup', 'mochacli:functional']
|
||||
);
|
||||
|
||||
// Shortcut
|
||||
grunt.registerTask('test-func', 'Run functional tests (mocha)',
|
||||
['test-setup', 'mochacli:functional']
|
||||
grunt.registerTask('test-acceptance', 'Run acceptance tests',
|
||||
['test-setup', 'mochacli:acceptance']
|
||||
);
|
||||
|
||||
// ### Coverage
|
||||
// `grunt coverage` will generate a report for the Unit Tests.
|
||||
//
|
||||
// This is not currently done as part of CI or any build, but is a tool we have available to keep an eye on how
|
||||
// well the unit and integration tests are covering the code base.
|
||||
// Ghost does not have a minimum coverage level - we're more interested in ensuring important and useful areas
|
||||
// of the codebase are covered, than that the whole codebase is covered to a particular level.
|
||||
//
|
||||
// Key areas for coverage are: helpers and theme elements, apps / GDK, the api and model layers.
|
||||
|
||||
grunt.registerTask('coverage', 'Generate unit and integration (mocha) tests coverage report',
|
||||
// `grunt coverage` will generate a report for the code coverage.
|
||||
grunt.registerTask('coverage', 'Generate unit tests coverage report',
|
||||
['test-setup', 'mocha_istanbul:coverage']
|
||||
);
|
||||
|
||||
grunt.registerTask('coverage-all', 'Generate unit and integration tests coverage report',
|
||||
grunt.registerTask('coverage-all', 'Generate full coverage report',
|
||||
['test-setup', 'mocha_istanbul:coverage_all']
|
||||
);
|
||||
|
||||
|
|
16
core/test/acceptance/README.md
Normal file
16
core/test/acceptance/README.md
Normal file
|
@ -0,0 +1,16 @@
|
|||
## Acceptance Tests
|
||||
|
||||
This folder should only contain a set of basic API use cases.
|
||||
|
||||
We are currently refactoring the test env. The "old" folder currently contains all API tests for the
|
||||
stable API version (v2). The goal is:
|
||||
|
||||
- either keep a test if it's a basic use case e.g. upload an image, schedule a post, download a theme
|
||||
- otherwise move the test to regression api v2 tests
|
||||
|
||||
We probably need a differentiation for the acceptance tests for session and api_key authentication.
|
||||
|
||||
Before we move tests:
|
||||
|
||||
- we have to re-work how are test utility is structured
|
||||
- we have to reduce tests
|
|
@ -1,8 +1,8 @@
|
|||
const should = require('should');
|
||||
const supertest = require('supertest');
|
||||
const testUtils = require('../../../../utils');
|
||||
const testUtils = require('../../../utils');
|
||||
const localUtils = require('./utils');
|
||||
const config = require('../../../../../../core/server/config');
|
||||
const config = require('../../../../server/config');
|
||||
const ghost = testUtils.startGhost;
|
||||
|
||||
let request;
|
||||
|
@ -70,7 +70,7 @@ describe('Configuration API', function () {
|
|||
|
||||
// Check a few values
|
||||
props.environment.should.match(/^testing/);
|
||||
props.version.should.eql(require('../../../../../../package.json').version);
|
||||
props.version.should.eql(require('../../../../../package.json').version);
|
||||
done();
|
||||
});
|
||||
});
|
|
@ -4,10 +4,10 @@ const fs = require('fs-extra');
|
|||
const should = require('should');
|
||||
const supertest = require('supertest');
|
||||
const sinon = require('sinon');
|
||||
const config = require('../../../../../../core/server/config');
|
||||
const models = require('../../../../../../core/server/models');
|
||||
const common = require('../../../../../server/lib/common');
|
||||
const testUtils = require('../../../../utils');
|
||||
const config = require('../../../../server/config');
|
||||
const models = require('../../../../server/models');
|
||||
const common = require('../../../../server/lib/common');
|
||||
const testUtils = require('../../../utils');
|
||||
const localUtils = require('./utils');
|
||||
|
||||
let ghost = testUtils.startGhost;
|
||||
|
@ -96,7 +96,7 @@ describe('DB API', () => {
|
|||
.set('Origin', config.get('url'))
|
||||
.set('Accept', 'application/json')
|
||||
.expect('Content-Type', /json/)
|
||||
.attach('importfile', path.join(__dirname, '/../../../../utils/fixtures/export/default_export.json'))
|
||||
.attach('importfile', path.join(__dirname, '/../../../utils/fixtures/export/default_export.json'))
|
||||
.expect(200)
|
||||
.then((res) => {
|
||||
const jsonResponse = res.body;
|
||||
|
@ -132,7 +132,7 @@ describe('DB API', () => {
|
|||
return request.post(localUtils.API.getApiQuery('db/'))
|
||||
.set('Origin', config.get('url'))
|
||||
.expect('Content-Type', /json/)
|
||||
.attach('importfile', path.join(__dirname, '/../../../../utils/fixtures/csv/single-column-with-header.csv'))
|
||||
.attach('importfile', path.join(__dirname, '/../../../utils/fixtures/csv/single-column-with-header.csv'))
|
||||
.expect(415);
|
||||
});
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
const should = require('should');
|
||||
const supertest = require('supertest');
|
||||
const config = require('../../../../../../core/server/config');
|
||||
const testUtils = require('../../../../utils');
|
||||
const config = require('../../../../server/config');
|
||||
const testUtils = require('../../../utils');
|
||||
const localUtils = require('./utils');
|
||||
|
||||
const ghost = testUtils.startGhost;
|
|
@ -1,10 +1,10 @@
|
|||
const should = require('should');
|
||||
const supertest = require('supertest');
|
||||
const sinon = require('sinon');
|
||||
const testUtils = require('../../../../utils');
|
||||
const testUtils = require('../../../utils');
|
||||
const localUtils = require('./utils');
|
||||
const config = require('../../../../../../core/server/config');
|
||||
const mailService = require('../../../../../../core/server/services/mail');
|
||||
const config = require('../../../../server/config');
|
||||
const mailService = require('../../../../server/services/mail');
|
||||
const ghost = testUtils.startGhost;
|
||||
|
||||
let request;
|
|
@ -1,10 +1,10 @@
|
|||
const should = require('should');
|
||||
const supertest = require('supertest');
|
||||
const sinon = require('sinon');
|
||||
const testUtils = require('../../../../utils');
|
||||
const testUtils = require('../../../utils');
|
||||
const localUtils = require('./utils');
|
||||
const config = require('../../../../../../core/server/config');
|
||||
const mailService = require('../../../../../../core/server/services/mail');
|
||||
const config = require('../../../../server/config');
|
||||
const mailService = require('../../../../server/services/mail');
|
||||
const ghost = testUtils.startGhost;
|
||||
|
||||
let request;
|
|
@ -1,8 +1,8 @@
|
|||
const should = require('should');
|
||||
const supertest = require('supertest');
|
||||
const testUtils = require('../../../../utils');
|
||||
const testUtils = require('../../../utils');
|
||||
const localUtils = require('./utils');
|
||||
const config = require('../../../../../../core/server/config');
|
||||
const config = require('../../../../server/config');
|
||||
const ghost = testUtils.startGhost;
|
||||
let request;
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
const nock = require('nock');
|
||||
const should = require('should');
|
||||
const supertest = require('supertest');
|
||||
const testUtils = require('../../../../utils');
|
||||
const config = require('../../../../../../core/server/config');
|
||||
const testUtils = require('../../../utils');
|
||||
const config = require('../../../../server/config');
|
||||
const localUtils = require('./utils');
|
||||
|
||||
const ghost = testUtils.startGhost;
|
|
@ -3,10 +3,10 @@ const supertest = require('supertest');
|
|||
const _ = require('lodash');
|
||||
const ObjectId = require('bson-objectid');
|
||||
const moment = require('moment-timezone');
|
||||
const testUtils = require('../../../../utils');
|
||||
const testUtils = require('../../../utils');
|
||||
const localUtils = require('./utils');
|
||||
const config = require('../../../../../../core/server/config');
|
||||
const models = require('../../../../../../core/server/models');
|
||||
const config = require('../../../../server/config');
|
||||
const models = require('../../../../server/models');
|
||||
const ghost = testUtils.startGhost;
|
||||
let request;
|
||||
|
|
@ -3,10 +3,10 @@ const supertest = require('supertest');
|
|||
const fs = require('fs-extra');
|
||||
const Promise = require('bluebird');
|
||||
const path = require('path');
|
||||
const testUtils = require('../../../../utils');
|
||||
const testUtils = require('../../../utils');
|
||||
const localUtils = require('./utils');
|
||||
const configUtils = require('../../../../utils/configUtils');
|
||||
const config = require('../../../../../../core/server/config');
|
||||
const configUtils = require('../../../utils/configUtils');
|
||||
const config = require('../../../../server/config');
|
||||
|
||||
const ghost = testUtils.startGhost;
|
||||
let request;
|
|
@ -1,7 +1,7 @@
|
|||
const should = require('should');
|
||||
const supertest = require('supertest');
|
||||
const config = require('../../../../../../core/server/config');
|
||||
const testUtils = require('../../../../utils');
|
||||
const config = require('../../../../server/config');
|
||||
const testUtils = require('../../../utils');
|
||||
const localUtils = require('./utils');
|
||||
|
||||
const ghost = testUtils.startGhost;
|
|
@ -3,8 +3,8 @@ const _ = require('lodash');
|
|||
const supertest = require('supertest');
|
||||
const os = require('os');
|
||||
const fs = require('fs-extra');
|
||||
const config = require('../../../../../../core/server/config');
|
||||
const testUtils = require('../../../../utils');
|
||||
const config = require('../../../../server/config');
|
||||
const testUtils = require('../../../utils');
|
||||
const localUtils = require('./utils');
|
||||
const ghost = testUtils.startGhost;
|
||||
let request;
|
|
@ -1,10 +1,10 @@
|
|||
const should = require('should');
|
||||
const supertest = require('supertest');
|
||||
const sinon = require('sinon');
|
||||
const testUtils = require('../../../../utils');
|
||||
const testUtils = require('../../../utils');
|
||||
const localUtils = require('./utils');
|
||||
const config = require('../../../../../server/config');
|
||||
const common = require('../../../../../server/lib/common');
|
||||
const config = require('../../../../server/config');
|
||||
const common = require('../../../../server/lib/common');
|
||||
const ghost = testUtils.startGhost;
|
||||
|
||||
let request;
|
|
@ -1,8 +1,8 @@
|
|||
var should = require('should'),
|
||||
supertest = require('supertest'),
|
||||
testUtils = require('../../../../utils'),
|
||||
testUtils = require('../../../utils'),
|
||||
localUtils = require('./utils'),
|
||||
config = require('../../../../../server/config'),
|
||||
config = require('../../../../server/config'),
|
||||
ghost = testUtils.startGhost,
|
||||
request;
|
||||
|
|
@ -2,10 +2,10 @@ const path = require('path');
|
|||
const should = require('should');
|
||||
const supertest = require('supertest');
|
||||
const sinon = require('sinon');
|
||||
const testUtils = require('../../../../utils');
|
||||
const testUtils = require('../../../utils');
|
||||
const localUtils = require('./utils');
|
||||
const config = require('../../../../../../core/server/config');
|
||||
const labs = require('../../../../../../core/server/services/labs');
|
||||
const config = require('../../../../server/config');
|
||||
const labs = require('../../../../server/services/labs');
|
||||
|
||||
const ghost = testUtils.startGhost;
|
||||
|
||||
|
@ -208,7 +208,7 @@ describe('Subscribers API', function () {
|
|||
it('importCSV', function () {
|
||||
return request
|
||||
.post(localUtils.API.getApiQuery(`subscribers/csv/`))
|
||||
.attach('subscribersfile', path.join(__dirname, '/../../../../utils/fixtures/csv/single-column-with-header.csv'))
|
||||
.attach('subscribersfile', path.join(__dirname, '/../../../utils/fixtures/csv/single-column-with-header.csv'))
|
||||
.set('Origin', config.get('url'))
|
||||
.expect('Content-Type', /json/)
|
||||
.expect('Cache-Control', testUtils.cacheRules.private)
|
|
@ -1,8 +1,8 @@
|
|||
const should = require('should');
|
||||
const supertest = require('supertest');
|
||||
const testUtils = require('../../../../utils');
|
||||
const testUtils = require('../../../utils');
|
||||
const localUtils = require('./utils');
|
||||
const config = require('../../../../../../core/server/config');
|
||||
const config = require('../../../../server/config');
|
||||
const ghost = testUtils.startGhost;
|
||||
|
||||
describe('Tag API V2', function () {
|
|
@ -3,8 +3,8 @@ const fs = require('fs-extra');
|
|||
const should = require('should');
|
||||
const supertest = require('supertest');
|
||||
const localUtils = require('./utils');
|
||||
const testUtils = require('../../../../utils');
|
||||
const config = require('../../../../../../core/server/config');
|
||||
const testUtils = require('../../../utils');
|
||||
const config = require('../../../../server/config');
|
||||
|
||||
const ghost = testUtils.startGhost;
|
||||
|
||||
|
@ -33,7 +33,7 @@ describe('Upload API', function () {
|
|||
request.post(localUtils.API.getApiQuery('uploads'))
|
||||
.set('Origin', config.get('url'))
|
||||
.expect('Content-Type', /json/)
|
||||
.attach('uploadimage', path.join(__dirname, '/../../../../utils/fixtures/images/ghost-logo.png'))
|
||||
.attach('uploadimage', path.join(__dirname, '/../../../utils/fixtures/images/ghost-logo.png'))
|
||||
.expect(201)
|
||||
.end(function (err, res) {
|
||||
if (err) {
|
||||
|
@ -49,7 +49,7 @@ describe('Upload API', function () {
|
|||
request.post(localUtils.API.getApiQuery('uploads'))
|
||||
.set('Origin', config.get('url'))
|
||||
.expect('Content-Type', /json/)
|
||||
.attach('uploadimage', path.join(__dirname, '/../../../../utils/fixtures/images/ghosticon.jpg'))
|
||||
.attach('uploadimage', path.join(__dirname, '/../../../utils/fixtures/images/ghosticon.jpg'))
|
||||
.expect(201)
|
||||
.end(function (err, res) {
|
||||
if (err) {
|
||||
|
@ -65,7 +65,7 @@ describe('Upload API', function () {
|
|||
request.post(localUtils.API.getApiQuery('uploads'))
|
||||
.set('Origin', config.get('url'))
|
||||
.expect('Content-Type', /json/)
|
||||
.attach('uploadimage', path.join(__dirname, '/../../../../utils/fixtures/images/loadingcat.gif'))
|
||||
.attach('uploadimage', path.join(__dirname, '/../../../utils/fixtures/images/loadingcat.gif'))
|
||||
.expect(201)
|
||||
.end(function (err, res) {
|
||||
if (err) {
|
||||
|
@ -81,7 +81,7 @@ describe('Upload API', function () {
|
|||
request.post(localUtils.API.getApiQuery('uploads/profile-image'))
|
||||
.set('Origin', config.get('url'))
|
||||
.expect('Content-Type', /json/)
|
||||
.attach('uploadimage', path.join(__dirname, '/../../../../utils/fixtures/images/loadingcat_square.gif'))
|
||||
.attach('uploadimage', path.join(__dirname, '/../../../utils/fixtures/images/loadingcat_square.gif'))
|
||||
.expect(201)
|
||||
.end(function (err, res) {
|
||||
if (err) {
|
||||
|
@ -114,7 +114,7 @@ describe('Upload API', function () {
|
|||
request.post(localUtils.API.getApiQuery('uploads'))
|
||||
.set('Origin', config.get('url'))
|
||||
.expect('Content-Type', /json/)
|
||||
.attach('uploadimage', path.join(__dirname, '/../../../../utils/fixtures/csv/single-column-with-header.csv'))
|
||||
.attach('uploadimage', path.join(__dirname, '/../../../utils/fixtures/csv/single-column-with-header.csv'))
|
||||
.expect(415)
|
||||
.end(function (err) {
|
||||
if (err) {
|
||||
|
@ -130,7 +130,7 @@ describe('Upload API', function () {
|
|||
.set('Origin', config.get('url'))
|
||||
.set('content-type', 'image/png')
|
||||
.expect('Content-Type', /json/)
|
||||
.attach('uploadimage', path.join(__dirname, '/../../../../utils/fixtures/images/ghost-logo.pngx'))
|
||||
.attach('uploadimage', path.join(__dirname, '/../../../utils/fixtures/images/ghost-logo.pngx'))
|
||||
.expect(415)
|
||||
.end(function (err) {
|
||||
if (err) {
|
||||
|
@ -145,7 +145,7 @@ describe('Upload API', function () {
|
|||
request.post(localUtils.API.getApiQuery('uploads/profile-image'))
|
||||
.set('Origin', config.get('url'))
|
||||
.expect('Content-Type', /json/)
|
||||
.attach('uploadimage', path.join(__dirname, '/../../../../utils/fixtures/images/favicon_not_square.png'))
|
||||
.attach('uploadimage', path.join(__dirname, '/../../../utils/fixtures/images/favicon_not_square.png'))
|
||||
.expect(422)
|
||||
.end(function (err) {
|
||||
if (err) {
|
|
@ -4,11 +4,11 @@ const supertest = require('supertest');
|
|||
const moment = require('moment');
|
||||
const Promise = require('bluebird');
|
||||
const ObjectId = require('bson-objectid');
|
||||
const testUtils = require('../../../../utils');
|
||||
const testUtils = require('../../../utils');
|
||||
const localUtils = require('./utils');
|
||||
const config = require('../../../../../../core/server/config');
|
||||
const db = require('../../../../../../core/server/data/db');
|
||||
const models = require('../../../../../../core/server/models');
|
||||
const config = require('../../../../server/config');
|
||||
const db = require('../../../../server/data/db');
|
||||
const models = require('../../../../server/models');
|
||||
const ghost = testUtils.startGhost;
|
||||
let request;
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
const url = require('url');
|
||||
const _ = require('lodash');
|
||||
const testUtils = require('../../../../utils');
|
||||
const schema = require('../../../../../server/data/schema').tables;
|
||||
const testUtils = require('../../../utils');
|
||||
const schema = require('../../../../server/data/schema').tables;
|
||||
const API_URL = '/ghost/api/v2/admin/';
|
||||
|
||||
const expectedProperties = {
|
|
@ -1,8 +1,8 @@
|
|||
const should = require('should');
|
||||
const supertest = require('supertest');
|
||||
const testUtils = require('../../../../utils');
|
||||
const testUtils = require('../../../utils');
|
||||
const localUtils = require('./utils');
|
||||
const config = require('../../../../../../core/server/config');
|
||||
const config = require('../../../../server/config');
|
||||
const ghost = testUtils.startGhost;
|
||||
let request;
|
||||
|
|
@ -2,10 +2,10 @@ const should = require('should');
|
|||
const supertest = require('supertest');
|
||||
const _ = require('lodash');
|
||||
const url = require('url');
|
||||
const configUtils = require('../../../../utils/configUtils');
|
||||
const config = require('../../../../../../core/server/config');
|
||||
const models = require('../../../../../../core/server/models');
|
||||
const testUtils = require('../../../../utils');
|
||||
const configUtils = require('../../../utils/configUtils');
|
||||
const config = require('../../../../server/config');
|
||||
const models = require('../../../../server/models');
|
||||
const testUtils = require('../../../utils');
|
||||
const localUtils = require('./utils');
|
||||
const ghost = testUtils.startGhost;
|
||||
let request;
|
|
@ -1,10 +1,10 @@
|
|||
const url = require('url');
|
||||
const should = require('should');
|
||||
const supertest = require('supertest');
|
||||
const testUtils = require('../../../../utils');
|
||||
const testUtils = require('../../../utils');
|
||||
const localUtils = require('./utils');
|
||||
const configUtils = require('../../../../utils/configUtils');
|
||||
const config = require('../../../../../../core/server/config');
|
||||
const configUtils = require('../../../utils/configUtils');
|
||||
const config = require('../../../../server/config');
|
||||
|
||||
const ghost = testUtils.startGhost;
|
||||
let request;
|
|
@ -4,10 +4,10 @@ const _ = require('lodash');
|
|||
const url = require('url');
|
||||
const cheerio = require('cheerio');
|
||||
const moment = require('moment');
|
||||
const testUtils = require('../../../../utils');
|
||||
const testUtils = require('../../../utils');
|
||||
const localUtils = require('./utils');
|
||||
const configUtils = require('../../../../utils/configUtils');
|
||||
const config = require('../../../../../../core/server/config');
|
||||
const configUtils = require('../../../utils/configUtils');
|
||||
const config = require('../../../../server/config');
|
||||
|
||||
const ghost = testUtils.startGhost;
|
||||
let request;
|
|
@ -1,13 +1,13 @@
|
|||
const should = require('should');
|
||||
const supertest = require('supertest');
|
||||
const _ = require('lodash');
|
||||
const testUtils = require('../../../../utils');
|
||||
const testUtils = require('../../../utils');
|
||||
const localUtils = require('./utils');
|
||||
const config = require('../../../../../server/config');
|
||||
const config = require('../../../../server/config');
|
||||
|
||||
// Values to test against
|
||||
const publicSettings = require('../../../../../server/services/settings/public');
|
||||
const defaultSettings = require('../../../../../server/data/schema').defaultSettings.blog;
|
||||
const publicSettings = require('../../../../server/services/settings/public');
|
||||
const defaultSettings = require('../../../../server/data/schema').defaultSettings.blog;
|
||||
|
||||
const ghost = testUtils.startGhost;
|
||||
let request;
|
|
@ -2,9 +2,9 @@ const should = require('should');
|
|||
const supertest = require('supertest');
|
||||
const _ = require('lodash');
|
||||
const url = require('url');
|
||||
const configUtils = require('../../../../utils/configUtils');
|
||||
const config = require('../../../../../../core/server/config');
|
||||
const testUtils = require('../../../../utils');
|
||||
const configUtils = require('../../../utils/configUtils');
|
||||
const config = require('../../../../server/config');
|
||||
const testUtils = require('../../../utils');
|
||||
const localUtils = require('./utils');
|
||||
const ghost = testUtils.startGhost;
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
const url = require('url');
|
||||
const _ = require('lodash');
|
||||
const testUtils = require('../../../../utils');
|
||||
const schema = require('../../../../../server/data/schema').tables;
|
||||
const testUtils = require('../../../utils');
|
||||
const schema = require('../../../../server/data/schema').tables;
|
||||
const API_URL = '/ghost/api/v2/content/';
|
||||
|
||||
const expectedProperties = {
|
|
@ -1,40 +0,0 @@
|
|||
var should = require('should'),
|
||||
sinon = require('sinon'),
|
||||
testUtils = require('../../utils'),
|
||||
common = require('../../../server/lib/common'),
|
||||
constants = require('../../../server/lib/constants'),
|
||||
AccesstokenModel = require('../../../server/models/accesstoken').Accesstoken;
|
||||
|
||||
describe('Accesstoken Model', function () {
|
||||
// Keep the DB clean
|
||||
before(testUtils.teardown);
|
||||
afterEach(testUtils.teardown);
|
||||
|
||||
afterEach(function () {
|
||||
sinon.restore();
|
||||
});
|
||||
|
||||
beforeEach(testUtils.setup('owner', 'clients'));
|
||||
|
||||
it('on creation emits token.added event', function (done) {
|
||||
// Setup
|
||||
const eventSpy = sinon.spy(common.events, 'emit');
|
||||
|
||||
// Test
|
||||
// Stub refreshtoken
|
||||
AccesstokenModel.add({
|
||||
token: 'foobartoken',
|
||||
user_id: testUtils.DataGenerator.Content.users[0].id,
|
||||
client_id: testUtils.DataGenerator.forKnex.clients[0].id,
|
||||
expires: Date.now() + constants.ONE_MONTH_MS
|
||||
})
|
||||
.then(function (token) {
|
||||
should.exist(token);
|
||||
// Assert
|
||||
eventSpy.calledOnce.should.be.true();
|
||||
eventSpy.calledWith('token.added').should.be.true();
|
||||
|
||||
done();
|
||||
}).catch(done);
|
||||
});
|
||||
});
|
|
@ -1,53 +0,0 @@
|
|||
var should = require('should'),
|
||||
testUtils = require('../../utils'),
|
||||
|
||||
// Stuff we are testing
|
||||
AppFieldsModel = require('../../../server/models/app-field').AppField,
|
||||
context = testUtils.context.admin;
|
||||
|
||||
describe('App Fields Model', function () {
|
||||
// Keep the DB clean
|
||||
before(testUtils.teardown);
|
||||
after(testUtils.teardown);
|
||||
before(testUtils.setup('app_field'));
|
||||
|
||||
before(function () {
|
||||
should.exist(AppFieldsModel);
|
||||
});
|
||||
|
||||
it('can findAll', function (done) {
|
||||
AppFieldsModel.findAll().then(function (results) {
|
||||
should.exist(results);
|
||||
|
||||
results.length.should.be.above(0);
|
||||
|
||||
done();
|
||||
}).catch(done);
|
||||
});
|
||||
|
||||
it('can findOne', function (done) {
|
||||
AppFieldsModel.findOne({id: testUtils.DataGenerator.Content.app_fields[0].id}).then(function (foundAppField) {
|
||||
should.exist(foundAppField);
|
||||
|
||||
foundAppField.get('created_at').should.be.an.instanceof(Date);
|
||||
|
||||
done();
|
||||
}).catch(done);
|
||||
});
|
||||
|
||||
it('can edit', function (done) {
|
||||
AppFieldsModel.findOne({id: testUtils.DataGenerator.Content.app_fields[0].id}).then(function (foundAppField) {
|
||||
should.exist(foundAppField);
|
||||
|
||||
return foundAppField.set({value: '350'}).save(null, context);
|
||||
}).then(function () {
|
||||
return AppFieldsModel.findOne({id: testUtils.DataGenerator.Content.app_fields[0].id});
|
||||
}).then(function (updatedAppField) {
|
||||
should.exist(updatedAppField);
|
||||
|
||||
updatedAppField.get('value').should.equal('350');
|
||||
|
||||
done();
|
||||
}).catch(done);
|
||||
});
|
||||
});
|
|
@ -1,53 +0,0 @@
|
|||
var should = require('should'),
|
||||
testUtils = require('../../utils'),
|
||||
|
||||
// Stuff we are testing
|
||||
AppSettingModel = require('../../../server/models/app-setting').AppSetting,
|
||||
context = testUtils.context.admin;
|
||||
|
||||
describe('App Setting Model', function () {
|
||||
// Keep the DB clean
|
||||
before(testUtils.teardown);
|
||||
after(testUtils.teardown);
|
||||
before(testUtils.setup('app_setting'));
|
||||
|
||||
before(function () {
|
||||
should.exist(AppSettingModel);
|
||||
});
|
||||
|
||||
it('can findAll', function (done) {
|
||||
AppSettingModel.findAll().then(function (results) {
|
||||
should.exist(results);
|
||||
|
||||
results.length.should.be.above(0);
|
||||
|
||||
done();
|
||||
}).catch(done);
|
||||
});
|
||||
|
||||
it('can findOne', function (done) {
|
||||
AppSettingModel.findOne({id: testUtils.DataGenerator.Content.app_settings[0].id}).then(function (foundAppSetting) {
|
||||
should.exist(foundAppSetting);
|
||||
|
||||
foundAppSetting.get('created_at').should.be.an.instanceof(Date);
|
||||
|
||||
done();
|
||||
}).catch(done);
|
||||
});
|
||||
|
||||
it('can edit', function (done) {
|
||||
AppSettingModel.findOne({id: testUtils.DataGenerator.Content.app_settings[0].id}).then(function (foundAppSetting) {
|
||||
should.exist(foundAppSetting);
|
||||
|
||||
return foundAppSetting.set({value: '350'}).save(null, context);
|
||||
}).then(function () {
|
||||
return AppSettingModel.findOne({id: testUtils.DataGenerator.Content.app_settings[0].id});
|
||||
}).then(function (updatedAppSetting) {
|
||||
should.exist(updatedAppSetting);
|
||||
|
||||
updatedAppSetting.get('value').should.equal('350');
|
||||
|
||||
done();
|
||||
}).catch(done);
|
||||
});
|
||||
});
|
|
@ -1,109 +0,0 @@
|
|||
var should = require('should'),
|
||||
testUtils = require('../../utils'),
|
||||
sequence = require('../../../server/lib/promise/sequence'),
|
||||
_ = require('lodash'),
|
||||
|
||||
// Stuff we are testing
|
||||
AppModel = require('../../../server/models/app').App,
|
||||
context = testUtils.context.admin;
|
||||
|
||||
describe('App Model', function () {
|
||||
// Keep the DB clean
|
||||
before(testUtils.teardown);
|
||||
after(testUtils.teardown);
|
||||
before(testUtils.setup('app'));
|
||||
|
||||
before(function () {
|
||||
should.exist(AppModel);
|
||||
});
|
||||
|
||||
it('can findAll', function (done) {
|
||||
AppModel.findAll().then(function (results) {
|
||||
should.exist(results);
|
||||
|
||||
results.length.should.be.above(0);
|
||||
|
||||
done();
|
||||
}).catch(done);
|
||||
});
|
||||
|
||||
it('can findOne', function (done) {
|
||||
AppModel.findOne({id: testUtils.DataGenerator.Content.apps[0].id}).then(function (foundApp) {
|
||||
should.exist(foundApp);
|
||||
|
||||
foundApp.get('created_at').should.be.an.instanceof(Date);
|
||||
|
||||
done();
|
||||
}).catch(done);
|
||||
});
|
||||
|
||||
it('can edit', function (done) {
|
||||
AppModel.findOne({id: testUtils.DataGenerator.Content.apps[0].id}).then(function (foundApp) {
|
||||
should.exist(foundApp);
|
||||
|
||||
return foundApp.set({name: 'New App'}).save(null, context);
|
||||
}).then(function () {
|
||||
return AppModel.findOne({id: testUtils.DataGenerator.Content.apps[0].id});
|
||||
}).then(function (updatedApp) {
|
||||
should.exist(updatedApp);
|
||||
|
||||
updatedApp.get('name').should.equal('New App');
|
||||
|
||||
done();
|
||||
}).catch(done);
|
||||
});
|
||||
|
||||
it('can add', function (done) {
|
||||
var newApp = testUtils.DataGenerator.forKnex.createApp(testUtils.DataGenerator.Content.apps[1]);
|
||||
|
||||
AppModel.add(newApp, context).then(function (createdApp) {
|
||||
should.exist(createdApp);
|
||||
|
||||
createdApp.attributes.name.should.equal(newApp.name);
|
||||
|
||||
done();
|
||||
}).catch(done);
|
||||
});
|
||||
|
||||
it('can destroy', function (done) {
|
||||
var firstApp = {id: testUtils.DataGenerator.Content.apps[0].id};
|
||||
|
||||
AppModel.findOne(firstApp).then(function (foundApp) {
|
||||
should.exist(foundApp);
|
||||
foundApp.attributes.id.should.equal(firstApp.id);
|
||||
|
||||
return AppModel.destroy(firstApp);
|
||||
}).then(function (response) {
|
||||
response.toJSON().should.be.empty();
|
||||
|
||||
return AppModel.findOne(firstApp);
|
||||
}).then(function (newResults) {
|
||||
should.equal(newResults, null);
|
||||
|
||||
done();
|
||||
}).catch(done);
|
||||
});
|
||||
|
||||
it('can generate a slug', function (done) {
|
||||
// Create 12 apps
|
||||
sequence(_.times(12, function (i) {
|
||||
return function () {
|
||||
return AppModel.add({
|
||||
name: 'Kudos ' + i,
|
||||
version: '0.0.1',
|
||||
status: 'installed'
|
||||
}, context);
|
||||
};
|
||||
})).then(function (createdApps) {
|
||||
// Should have created 12 apps
|
||||
createdApps.length.should.equal(12);
|
||||
|
||||
// Should have matching slugs
|
||||
_(createdApps).each(function (app, i) {
|
||||
app.get('slug').should.equal('kudos-' + i);
|
||||
});
|
||||
|
||||
done();
|
||||
}).catch(done);
|
||||
});
|
||||
});
|
|
@ -1,28 +0,0 @@
|
|||
var should = require('should'),
|
||||
testUtils = require('../../utils'),
|
||||
models = require('../../../server/models');
|
||||
|
||||
describe('Invite Model', function () {
|
||||
before(testUtils.teardown);
|
||||
afterEach(testUtils.teardown);
|
||||
|
||||
describe('add invite', function () {
|
||||
beforeEach(testUtils.setup());
|
||||
|
||||
it('create invite', function (done) {
|
||||
models.Invite.add({
|
||||
email: 'test@test.de',
|
||||
role_id: testUtils.roles.ids.admin
|
||||
}, testUtils.context.internal)
|
||||
.then(function (invite) {
|
||||
should.exist(invite);
|
||||
should.exist(invite.get('token'));
|
||||
should.exist(invite.get('expires'));
|
||||
should.exist(invite.get('email'));
|
||||
should.exist(invite.get('role_id'));
|
||||
done();
|
||||
})
|
||||
.catch(done);
|
||||
});
|
||||
});
|
||||
});
|
|
@ -1,174 +0,0 @@
|
|||
var should = require('should'),
|
||||
testUtils = require('../../utils'),
|
||||
|
||||
// Stuff we are testing
|
||||
PermissionModel = require('../../../server/models/permission').Permission,
|
||||
context = testUtils.context.admin;
|
||||
|
||||
describe('Permission Model', function () {
|
||||
// Keep the DB clean
|
||||
before(testUtils.teardown);
|
||||
after(testUtils.teardown);
|
||||
before(testUtils.setup('permission'));
|
||||
|
||||
before(function () {
|
||||
should.exist(PermissionModel);
|
||||
});
|
||||
|
||||
it('can findAll', function (done) {
|
||||
PermissionModel.findAll().then(function (foundPermissions) {
|
||||
should.exist(foundPermissions);
|
||||
|
||||
foundPermissions.models.length.should.be.above(0);
|
||||
|
||||
done();
|
||||
}).catch(done);
|
||||
});
|
||||
|
||||
it('can findOne', function (done) {
|
||||
PermissionModel.findOne({id: testUtils.DataGenerator.Content.permissions[0].id}).then(function (foundPermission) {
|
||||
should.exist(foundPermission);
|
||||
foundPermission.get('created_at').should.be.an.instanceof(Date);
|
||||
|
||||
done();
|
||||
}).catch(done);
|
||||
});
|
||||
|
||||
it('can edit', function (done) {
|
||||
PermissionModel.findOne({id: testUtils.DataGenerator.Content.permissions[0].id}).then(function (foundPermission) {
|
||||
should.exist(foundPermission);
|
||||
|
||||
return foundPermission.set({name: 'updated'}).save(null, context);
|
||||
}).then(function () {
|
||||
return PermissionModel.findOne({id: testUtils.DataGenerator.Content.permissions[0].id});
|
||||
}).then(function (updatedPermission) {
|
||||
should.exist(updatedPermission);
|
||||
|
||||
updatedPermission.get('name').should.equal('updated');
|
||||
|
||||
done();
|
||||
}).catch(done);
|
||||
});
|
||||
|
||||
it('can add', function (done) {
|
||||
var newPerm = {
|
||||
name: 'testperm1',
|
||||
object_type: 'test',
|
||||
action_type: 'test'
|
||||
};
|
||||
|
||||
PermissionModel.add(newPerm, context).then(function (createdPerm) {
|
||||
should.exist(createdPerm);
|
||||
|
||||
createdPerm.attributes.name.should.equal(newPerm.name);
|
||||
|
||||
done();
|
||||
}).catch(done);
|
||||
});
|
||||
|
||||
it('can destroy', function (done) {
|
||||
var firstPermission = {id: testUtils.DataGenerator.Content.permissions[0].id};
|
||||
|
||||
PermissionModel.findOne(firstPermission).then(function (foundPermission) {
|
||||
should.exist(foundPermission);
|
||||
foundPermission.attributes.id.should.equal(firstPermission.id);
|
||||
|
||||
return PermissionModel.destroy(firstPermission);
|
||||
}).then(function (response) {
|
||||
response.toJSON({shallow: true}).should.be.empty();
|
||||
return PermissionModel.findOne(firstPermission);
|
||||
}).then(function (newResults) {
|
||||
should.equal(newResults, null);
|
||||
|
||||
done();
|
||||
}).catch(done);
|
||||
});
|
||||
|
||||
// it('can add user to role', function (done) {
|
||||
// var existingUserRoles;
|
||||
|
||||
// Models.User.findOne({id: 1}, { withRelated: ['roles'] }).then(function (foundUser) {
|
||||
// var testRole = new Models.Role({
|
||||
// name: 'testrole1',
|
||||
// description: 'testrole1 description'
|
||||
// });
|
||||
|
||||
// should.exist(foundUser);
|
||||
|
||||
// should.exist(foundUser.roles());
|
||||
|
||||
// existingUserRoles = foundUser.related('roles').length;
|
||||
|
||||
// return testRole.save(null, context).then(function () {
|
||||
// return foundUser.roles().attach(testRole);
|
||||
// });
|
||||
// }).then(function () {
|
||||
// return Models.User.findOne({id: 1}, { withRelated: ['roles'] });
|
||||
// }).then(function (updatedUser) {
|
||||
// should.exist(updatedUser);
|
||||
|
||||
// updatedUser.related('roles').length.should.equal(existingUserRoles + 1);
|
||||
|
||||
// done();
|
||||
// }).catch(done);
|
||||
// });
|
||||
|
||||
// it('can add user permissions', function (done) {
|
||||
// Models.User.findOne({id: 1}, { withRelated: ['permissions']}).then(function (testUser) {
|
||||
// var testPermission = new Models.Permission({
|
||||
// name: 'test edit posts',
|
||||
// action_type: 'edit',
|
||||
// object_type: 'post'
|
||||
// });
|
||||
|
||||
// testUser.related('permissions').length.should.equal(0);
|
||||
|
||||
// return testPermission.save(null, context).then(function () {
|
||||
// return testUser.permissions().attach(testPermission);
|
||||
// });
|
||||
// }).then(function () {
|
||||
// return Models.User.findOne({id: 1}, { withRelated: ['permissions']});
|
||||
// }).then(function (updatedUser) {
|
||||
// should.exist(updatedUser);
|
||||
|
||||
// updatedUser.related('permissions').length.should.equal(1);
|
||||
|
||||
// done();
|
||||
// }).catch(done);
|
||||
// });
|
||||
|
||||
// it('can add role permissions', function (done) {
|
||||
// var testRole = new Models.Role({
|
||||
// name: 'test2',
|
||||
// description: 'test2 description'
|
||||
// });
|
||||
|
||||
// testRole.save(null, context)
|
||||
// .then(function () {
|
||||
// return testRole.load('permissions');
|
||||
// })
|
||||
// .then(function () {
|
||||
// var rolePermission = new Models.Permission({
|
||||
// name: 'test edit posts',
|
||||
// action_type: 'edit',
|
||||
// object_type: 'post'
|
||||
// });
|
||||
|
||||
// testRole.related('permissions').length.should.equal(0);
|
||||
|
||||
// return rolePermission.save(null, context).then(function () {
|
||||
// return testRole.permissions().attach(rolePermission);
|
||||
// });
|
||||
// })
|
||||
// .then(function () {
|
||||
// return Models.Role.findOne({id: testRole.id}, { withRelated: ['permissions']});
|
||||
// })
|
||||
// .then(function (updatedRole) {
|
||||
// should.exist(updatedRole);
|
||||
|
||||
// updatedRole.related('permissions').length.should.equal(1);
|
||||
|
||||
// done();
|
||||
// }).catch(done);
|
||||
// });
|
||||
});
|
|
@ -1,87 +0,0 @@
|
|||
var should = require('should'),
|
||||
testUtils = require('../../utils'),
|
||||
|
||||
// Stuff we are testing
|
||||
RoleModel = require('../../../server/models/role').Role,
|
||||
context = testUtils.context.admin;
|
||||
|
||||
describe('Role Model', function () {
|
||||
// Keep the DB clean
|
||||
before(testUtils.teardown);
|
||||
afterEach(testUtils.teardown);
|
||||
|
||||
beforeEach(testUtils.setup('role'));
|
||||
|
||||
before(function () {
|
||||
should.exist(RoleModel);
|
||||
});
|
||||
|
||||
it('can findAll', function (done) {
|
||||
RoleModel.findAll().then(function (foundRoles) {
|
||||
should.exist(foundRoles);
|
||||
|
||||
foundRoles.models.length.should.be.above(0);
|
||||
|
||||
done();
|
||||
}).catch(done);
|
||||
});
|
||||
|
||||
it('can findOne', function (done) {
|
||||
RoleModel.findOne({id: testUtils.DataGenerator.Content.roles[0].id}).then(function (foundRole) {
|
||||
should.exist(foundRole);
|
||||
foundRole.get('created_at').should.be.an.instanceof(Date);
|
||||
|
||||
done();
|
||||
}).catch(done);
|
||||
});
|
||||
|
||||
it('can edit', function (done) {
|
||||
RoleModel.findOne({id: testUtils.DataGenerator.Content.roles[0].id}).then(function (foundRole) {
|
||||
should.exist(foundRole);
|
||||
|
||||
return foundRole.set({name: 'updated'}).save(null, context);
|
||||
}).then(function () {
|
||||
return RoleModel.findOne({id: testUtils.DataGenerator.Content.roles[0].id});
|
||||
}).then(function (updatedRole) {
|
||||
should.exist(updatedRole);
|
||||
|
||||
updatedRole.get('name').should.equal('updated');
|
||||
|
||||
done();
|
||||
}).catch(done);
|
||||
});
|
||||
|
||||
it('can add', function (done) {
|
||||
var newRole = {
|
||||
name: 'test1',
|
||||
description: 'test1 description'
|
||||
};
|
||||
|
||||
RoleModel.add(newRole, context).then(function (createdRole) {
|
||||
should.exist(createdRole);
|
||||
|
||||
createdRole.attributes.name.should.equal(newRole.name);
|
||||
createdRole.attributes.description.should.equal(newRole.description);
|
||||
|
||||
done();
|
||||
}).catch(done);
|
||||
});
|
||||
|
||||
it('can destroy', function (done) {
|
||||
var firstRole = {id: testUtils.DataGenerator.Content.roles[0].id};
|
||||
|
||||
RoleModel.findOne(firstRole).then(function (foundRole) {
|
||||
should.exist(foundRole);
|
||||
foundRole.attributes.id.should.equal(firstRole.id);
|
||||
|
||||
return RoleModel.destroy(firstRole);
|
||||
}).then(function (response) {
|
||||
response.toJSON().permissions.should.be.empty();
|
||||
return RoleModel.findOne(firstRole);
|
||||
}).then(function (newResults) {
|
||||
should.equal(newResults, null);
|
||||
|
||||
done();
|
||||
}).catch(done);
|
||||
});
|
||||
});
|
|
@ -1,141 +0,0 @@
|
|||
var should = require('should'),
|
||||
sinon = require('sinon'),
|
||||
_ = require('lodash'),
|
||||
testUtils = require('../../utils'),
|
||||
|
||||
// Stuff we are testing
|
||||
db = require('../../../server/data/db'),
|
||||
models = require('../../../server/models'),
|
||||
common = require('../../../server/lib/common'),
|
||||
context = testUtils.context.admin;
|
||||
|
||||
describe('Tag Model', function () {
|
||||
var eventSpy;
|
||||
|
||||
// Keep the DB clean
|
||||
before(testUtils.teardown);
|
||||
after(testUtils.teardown);
|
||||
before(testUtils.setup('users:roles', 'posts'));
|
||||
|
||||
afterEach(function () {
|
||||
sinon.restore();
|
||||
});
|
||||
|
||||
beforeEach(function () {
|
||||
eventSpy = sinon.spy(common.events, 'emit');
|
||||
});
|
||||
|
||||
describe('findPage', function () {
|
||||
it('with limit all', function (done) {
|
||||
models.Tag.findPage({limit: 'all'})
|
||||
.then(function (results) {
|
||||
results.meta.pagination.page.should.equal(1);
|
||||
results.meta.pagination.limit.should.equal('all');
|
||||
results.meta.pagination.pages.should.equal(1);
|
||||
results.data.length.should.equal(5);
|
||||
|
||||
done();
|
||||
})
|
||||
.catch(done);
|
||||
});
|
||||
|
||||
it('with include count.posts', function (done) {
|
||||
models.Tag.findPage({limit: 'all', withRelated: ['count.posts']})
|
||||
.then(function (results) {
|
||||
results.meta.pagination.page.should.equal(1);
|
||||
results.meta.pagination.limit.should.equal('all');
|
||||
results.meta.pagination.pages.should.equal(1);
|
||||
results.data.length.should.equal(5);
|
||||
should.exist(results.data[0].toJSON().count.posts);
|
||||
|
||||
done();
|
||||
})
|
||||
.catch(done);
|
||||
});
|
||||
});
|
||||
|
||||
describe('findOne', function () {
|
||||
it('with slug', function (done) {
|
||||
var firstTag;
|
||||
|
||||
models.Tag.findPage()
|
||||
.then(function (results) {
|
||||
should.exist(results);
|
||||
should.exist(results.data);
|
||||
results.data.length.should.be.above(0);
|
||||
firstTag = results.data[0].toJSON();
|
||||
|
||||
return models.Tag.findOne({slug: firstTag.slug});
|
||||
})
|
||||
.then(function (found) {
|
||||
should.exist(found);
|
||||
|
||||
done();
|
||||
})
|
||||
.catch(done);
|
||||
});
|
||||
});
|
||||
|
||||
describe('add', function () {
|
||||
it('uses Date objects for dateTime fields', function (done) {
|
||||
models.Tag.add(_.omit(testUtils.DataGenerator.forModel.tags[0], 'id'), context)
|
||||
.then(function (tag) {
|
||||
return models.Tag.findOne({id: tag.id});
|
||||
})
|
||||
.then(function (tag) {
|
||||
should.exist(tag);
|
||||
tag.get('created_at').should.be.an.instanceof(Date);
|
||||
|
||||
done();
|
||||
})
|
||||
.catch(done);
|
||||
});
|
||||
|
||||
it('returns count.posts if include count.posts', function (done) {
|
||||
models.Tag.findOne({slug: 'kitchen-sink'}, {withRelated: ['count.posts']})
|
||||
.then(function (tag) {
|
||||
should.exist(tag);
|
||||
tag.toJSON().count.posts.should.equal(2);
|
||||
|
||||
done();
|
||||
})
|
||||
.catch(done);
|
||||
});
|
||||
|
||||
it('can strip invisible unicode from slug', function () {
|
||||
const tag = Object.assign(_.omit(testUtils.DataGenerator.forModel.tags[0], 'id'), {
|
||||
slug: 'abc\u0008',
|
||||
});
|
||||
return models.Tag.add(tag, context)
|
||||
.then(function (newTag) {
|
||||
should.exist(newTag);
|
||||
newTag.get('slug').should.equal('abc');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('destroy', function () {
|
||||
it('can destroy Tag (using transaction)', function () {
|
||||
var firstTag = testUtils.DataGenerator.Content.tags[0].id;
|
||||
|
||||
return db.knex('posts_tags').where('tag_id', firstTag)
|
||||
.then(function (response) {
|
||||
response.length.should.eql(2);
|
||||
})
|
||||
.then(function () {
|
||||
return db.knex.transaction(function (transacting) {
|
||||
return models.Tag.destroy({
|
||||
id: firstTag,
|
||||
transacting: transacting
|
||||
});
|
||||
});
|
||||
})
|
||||
.then(function () {
|
||||
return db.knex('posts_tags').where('tag_id', firstTag);
|
||||
})
|
||||
.then(function (response) {
|
||||
response.length.should.eql(0);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
6
core/test/regression/README.md
Normal file
6
core/test/regression/README.md
Normal file
|
@ -0,0 +1,6 @@
|
|||
## Regression Tests
|
||||
|
||||
This folder should contain packages which we test in a cron job once per day.
|
||||
These tests should ensure that we don't break Ghost.
|
||||
|
||||
The goal is that most of these packages use Ghost's API's to test behaviours, otherwise transform the tests into unit tests.
|
|
@ -5,11 +5,11 @@
|
|||
|
||||
var should = require('should'),
|
||||
supertest = require('supertest'),
|
||||
testUtils = require('../utils'),
|
||||
configUtils = require('../utils/configUtils'),
|
||||
testUtils = require('../../utils/index'),
|
||||
configUtils = require('../../utils/configUtils'),
|
||||
ghost = testUtils.startGhost,
|
||||
common = require('../../server/lib/common'),
|
||||
config = require('../../server/config'),
|
||||
common = require('../../../server/lib/common/index'),
|
||||
config = require('../../../server/config/index'),
|
||||
request;
|
||||
|
||||
common.i18n.init();
|
|
@ -1,14 +1,14 @@
|
|||
var should = require('should'),
|
||||
supertest = require('supertest'),
|
||||
testUtils = require('../../../utils'),
|
||||
testUtils = require('../../../utils/index'),
|
||||
localUtils = require('./utils'),
|
||||
moment = require('moment'),
|
||||
user = testUtils.DataGenerator.forModel.users[0],
|
||||
models = require('../../../../../core/server/models'),
|
||||
constants = require('../../../../../core/server/lib/constants'),
|
||||
config = require('../../../../../core/server/config'),
|
||||
security = require('../../../../../core/server/lib/security'),
|
||||
settingsCache = require('../../../../../core/server/services/settings/cache'),
|
||||
models = require('../../../../server/models/index'),
|
||||
constants = require('../../../../server/lib/constants'),
|
||||
config = require('../../../../server/config/index'),
|
||||
security = require('../../../../server/lib/security/index'),
|
||||
settingsCache = require('../../../../server/services/settings/cache'),
|
||||
ghost = testUtils.startGhost,
|
||||
request;
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
var should = require('should'),
|
||||
supertest = require('supertest'),
|
||||
testUtils = require('../../../utils'),
|
||||
testUtils = require('../../../utils/index'),
|
||||
localUtils = require('./utils'),
|
||||
config = require('../../../../../core/server/config'),
|
||||
config = require('../../../../server/config/index'),
|
||||
ghost = testUtils.startGhost,
|
||||
request;
|
||||
|
|
@ -1,14 +1,14 @@
|
|||
const should = require('should');
|
||||
const supertest = require('supertest');
|
||||
const Promise = require('bluebird');
|
||||
const testUtils = require('../../../utils');
|
||||
const testUtils = require('../../../utils/index');
|
||||
const path = require('path');
|
||||
const sinon = require('sinon');
|
||||
const config = require('../../../../../core/server/config');
|
||||
const models = require('../../../../../core/server/models');
|
||||
const config = require('../../../../server/config/index');
|
||||
const models = require('../../../../server/models/index');
|
||||
const fs = require('fs-extra');
|
||||
const _ = require('lodash');
|
||||
const common = require('../../../../server/lib/common');
|
||||
const common = require('../../../../server/lib/common/index');
|
||||
const localUtils = require('./utils');
|
||||
|
||||
let ghost = testUtils.startGhost;
|
|
@ -4,9 +4,9 @@
|
|||
// But then again testing real code, rather than mock code, might be more useful...
|
||||
var should = require('should'),
|
||||
supertest = require('supertest'),
|
||||
testUtils = require('../../../utils'),
|
||||
testUtils = require('../../../utils/index'),
|
||||
localUtils = require('./utils'),
|
||||
config = require('../../../../../core/server/config'),
|
||||
config = require('../../../../server/config/index'),
|
||||
ghost = testUtils.startGhost,
|
||||
request;
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
const should = require('should');
|
||||
const supertest = require('supertest');
|
||||
const sinon = require('sinon');
|
||||
const testUtils = require('../../../utils');
|
||||
const testUtils = require('../../../utils/index');
|
||||
const localUtils = require('./utils');
|
||||
const config = require('../../../../../core/server/config');
|
||||
const mailService = require('../../../../../core/server/services/mail');
|
||||
const config = require('../../../../server/config/index');
|
||||
const mailService = require('../../../../server/services/mail/index');
|
||||
const ghost = testUtils.startGhost;
|
||||
|
||||
let request;
|
|
@ -1,8 +1,8 @@
|
|||
var should = require('should'),
|
||||
supertest = require('supertest'),
|
||||
testUtils = require('../../../utils'),
|
||||
testUtils = require('../../../utils/index'),
|
||||
localUtils = require('./utils'),
|
||||
config = require('../../../../../core/server/config'),
|
||||
config = require('../../../../server/config/index'),
|
||||
ghost = testUtils.startGhost,
|
||||
request;
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
const config = require('../../../../../core/server/config');
|
||||
const config = require('../../../../server/config/index');
|
||||
const nock = require('nock');
|
||||
const should = require('should');
|
||||
const supertest = require('supertest');
|
||||
const testUtils = require('../../../utils');
|
||||
const testUtils = require('../../../utils/index');
|
||||
const localUtils = require('./utils');
|
||||
|
||||
const ghost = testUtils.startGhost;
|
|
@ -3,9 +3,9 @@ var should = require('should'),
|
|||
moment = require('moment'),
|
||||
_ = require('lodash'),
|
||||
ObjectId = require('bson-objectid'),
|
||||
testUtils = require('../../../utils'),
|
||||
testUtils = require('../../../utils/index'),
|
||||
localUtils = require('./utils'),
|
||||
config = require('../../../../../core/server/config'),
|
||||
config = require('../../../../server/config/index'),
|
||||
ghost = testUtils.startGhost,
|
||||
markdownToMobiledoc = testUtils.DataGenerator.markdownToMobiledoc,
|
||||
request;
|
|
@ -4,11 +4,11 @@ var should = require('should'),
|
|||
url = require('url'),
|
||||
cheerio = require('cheerio'),
|
||||
moment = require('moment'),
|
||||
testUtils = require('../../../utils'),
|
||||
testUtils = require('../../../utils/index'),
|
||||
localUtils = require('./utils'),
|
||||
configUtils = require('../../../utils/configUtils'),
|
||||
config = require('../../../../../core/server/config'),
|
||||
models = require('../../../../../core/server/models'),
|
||||
config = require('../../../../server/config/index'),
|
||||
models = require('../../../../server/models/index'),
|
||||
ghost = testUtils.startGhost,
|
||||
request;
|
||||
|
|
@ -3,10 +3,10 @@ var should = require('should'),
|
|||
fs = require('fs-extra'),
|
||||
Promise = require('bluebird'),
|
||||
path = require('path'),
|
||||
testUtils = require('../../../utils'),
|
||||
testUtils = require('../../../utils/index'),
|
||||
localUtils = require('./utils'),
|
||||
configUtils = require('../../../utils/configUtils'),
|
||||
config = require('../../../../../core/server/config'),
|
||||
config = require('../../../../server/config/index'),
|
||||
ghost = testUtils.startGhost,
|
||||
request, accesstoken;
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
const should = require('should');
|
||||
const supertest = require('supertest');
|
||||
const testUtils = require('../../../utils');
|
||||
const testUtils = require('../../../utils/index');
|
||||
const localUtils = require('./utils');
|
||||
const config = require('../../../../../core/server/config');
|
||||
const config = require('../../../../server/config/index');
|
||||
const ghost = testUtils.startGhost;
|
||||
let request;
|
||||
|
|
@ -3,11 +3,11 @@ const supertest = require('supertest');
|
|||
const Promise = require('bluebird');
|
||||
const sinon = require('sinon');
|
||||
const moment = require('moment-timezone');
|
||||
const testUtils = require('../../../utils');
|
||||
const testUtils = require('../../../utils/index');
|
||||
const localUtils = require('./utils');
|
||||
const SchedulingDefault = require('../../../../../core/server/adapters/scheduling/SchedulingDefault');
|
||||
const models = require('../../../../../core/server/models');
|
||||
const config = require('../../../../../core/server/config');
|
||||
const SchedulingDefault = require('../../../../server/adapters/scheduling/SchedulingDefault');
|
||||
const models = require('../../../../server/models/index');
|
||||
const config = require('../../../../server/config/index');
|
||||
const ghost = testUtils.startGhost;
|
||||
|
||||
describe('Schedules API', function () {
|
|
@ -3,9 +3,9 @@ var should = require('should'),
|
|||
supertest = require('supertest'),
|
||||
os = require('os'),
|
||||
fs = require('fs-extra'),
|
||||
testUtils = require('../../../utils'),
|
||||
testUtils = require('../../../utils/index'),
|
||||
localUtils = require('./utils'),
|
||||
config = require('../../../../../core/server/config'),
|
||||
config = require('../../../../server/config/index'),
|
||||
ghost = testUtils.startGhost,
|
||||
request;
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
var should = require('should'),
|
||||
supertest = require('supertest'),
|
||||
testUtils = require('../../../utils'),
|
||||
testUtils = require('../../../utils/index'),
|
||||
localUtils = require('./utils'),
|
||||
config = require('../../../../../core/server/config'),
|
||||
config = require('../../../../server/config/index'),
|
||||
ghost = testUtils.startGhost,
|
||||
request;
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
const should = require('should');
|
||||
const supertest = require('supertest');
|
||||
const testUtils = require('../../../utils');
|
||||
const testUtils = require('../../../utils/index');
|
||||
const localUtils = require('./utils');
|
||||
const db = require('../../../../../core/server/data/db');
|
||||
const config = require('../../../../../core/server/config');
|
||||
const db = require('../../../../server/data/db/index');
|
||||
const config = require('../../../../server/config/index');
|
||||
|
||||
const executeRequests = (attempts, requestFn, ...args) => {
|
||||
if (attempts === 0) {
|
|
@ -2,10 +2,10 @@ const should = require('should');
|
|||
const supertest = require('supertest');
|
||||
const sinon = require('sinon');
|
||||
const path = require('path');
|
||||
const testUtils = require('../../../utils');
|
||||
const testUtils = require('../../../utils/index');
|
||||
const localUtils = require('./utils');
|
||||
const config = require('../../../../../core/server/config');
|
||||
const labs = require('../../../../../core/server/services/labs');
|
||||
const config = require('../../../../server/config/index');
|
||||
const labs = require('../../../../server/services/labs');
|
||||
|
||||
const ghost = testUtils.startGhost;
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
var should = require('should'),
|
||||
supertest = require('supertest'),
|
||||
testUtils = require('../../../utils'),
|
||||
testUtils = require('../../../utils/index'),
|
||||
localUtils = require('./utils'),
|
||||
config = require('../../../../../core/server/config'),
|
||||
config = require('../../../../server/config/index'),
|
||||
ghost = testUtils.startGhost,
|
||||
request;
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
var should = require('should'),
|
||||
supertest = require('supertest'),
|
||||
testUtils = require('../../../utils'),
|
||||
testUtils = require('../../../utils/index'),
|
||||
localUtils = require('./utils'),
|
||||
config = require('../../../../server/config'),
|
||||
config = require('../../../../server/config/index'),
|
||||
ghost = testUtils.startGhost,
|
||||
fs = require('fs-extra'),
|
||||
path = require('path'),
|
|
@ -1,11 +1,11 @@
|
|||
var should = require('should'),
|
||||
supertest = require('supertest'),
|
||||
testUtils = require('../../../utils'),
|
||||
testUtils = require('../../../utils/index'),
|
||||
localUtils = require('./utils'),
|
||||
path = require('path'),
|
||||
fs = require('fs-extra'),
|
||||
ghost = testUtils.startGhost,
|
||||
config = require('../../../../../core/server/config'),
|
||||
config = require('../../../../server/config/index'),
|
||||
request;
|
||||
|
||||
describe('Upload Icon API', function () {
|
|
@ -1,11 +1,11 @@
|
|||
var should = require('should'),
|
||||
supertest = require('supertest'),
|
||||
testUtils = require('../../../utils'),
|
||||
testUtils = require('../../../utils/index'),
|
||||
localUtils = require('./utils'),
|
||||
path = require('path'),
|
||||
fs = require('fs-extra'),
|
||||
ghost = testUtils.startGhost,
|
||||
config = require('../../../../../core/server/config'),
|
||||
config = require('../../../../server/config/index'),
|
||||
request;
|
||||
|
||||
describe('Upload API', function () {
|
|
@ -3,11 +3,11 @@ var should = require('should'),
|
|||
supertest = require('supertest'),
|
||||
moment = require('moment'),
|
||||
Promise = require('bluebird'),
|
||||
testUtils = require('../../../utils'),
|
||||
testUtils = require('../../../utils/index'),
|
||||
localUtils = require('./utils'),
|
||||
ObjectId = require('bson-objectid'),
|
||||
config = require('../../../../../core/server/config'),
|
||||
models = require('../../../../../core/server/models'),
|
||||
config = require('../../../../server/config/index'),
|
||||
models = require('../../../../server/models/index'),
|
||||
ghost = testUtils.startGhost,
|
||||
request;
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
const url = require('url');
|
||||
const _ = require('lodash');
|
||||
const testUtils = require('../../../utils');
|
||||
const schema = require('../../../../server/data/schema').tables;
|
||||
const testUtils = require('../../../utils/index');
|
||||
const schema = require('../../../../server/data/schema/index').tables;
|
||||
const API_URL = '/ghost/api/v0.1/';
|
||||
|
||||
const expectedProperties = {
|
|
@ -1,8 +1,8 @@
|
|||
var should = require('should'),
|
||||
supertest = require('supertest'),
|
||||
testUtils = require('../../../utils'),
|
||||
testUtils = require('../../../utils/index'),
|
||||
localUtils = require('./utils'),
|
||||
config = require('../../../../../core/server/config'),
|
||||
config = require('../../../../server/config/index'),
|
||||
ghost = testUtils.startGhost,
|
||||
request;
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
var should = require('should'),
|
||||
sinon = require('sinon'),
|
||||
testUtils = require('../utils'),
|
||||
testUtils = require('../../utils'),
|
||||
_ = require('lodash'),
|
||||
|
||||
// Stuff we are testing
|
||||
exporter = require('../../server/data/exporter'),
|
||||
ghostVersion = require('../../server/lib/ghost-version');
|
||||
exporter = require('../../../server/data/exporter'),
|
||||
ghostVersion = require('../../../server/lib/ghost-version');
|
||||
|
||||
describe('Exporter', function () {
|
||||
before(testUtils.teardown);
|
|
@ -1,6 +1,6 @@
|
|||
var should = require('should'),
|
||||
sinon = require('sinon'),
|
||||
testUtils = require('../../../../utils'),
|
||||
testUtils = require('../../utils'),
|
||||
Promise = require('bluebird'),
|
||||
moment = require('moment'),
|
||||
ObjectId = require('bson-objectid'),
|
||||
|
@ -9,9 +9,9 @@ var should = require('should'),
|
|||
validator = require('validator'),
|
||||
|
||||
// Stuff we are testing
|
||||
db = require('../../../../../server/data/db'),
|
||||
models = require('../../../../../server/models'),
|
||||
importer = require('../../../../../server/data/importer'),
|
||||
db = require('../../../server/data/db'),
|
||||
models = require('../../../server/models'),
|
||||
importer = require('../../../server/data/importer'),
|
||||
dataImporter = importer.importers[1],
|
||||
importOptions = {
|
||||
returnImportedData: true
|
|
@ -1,9 +1,9 @@
|
|||
var should = require('should'),
|
||||
sinon = require('sinon'),
|
||||
testUtils = require('../utils'),
|
||||
testUtils = require('../../utils'),
|
||||
_ = require('lodash'),
|
||||
Promise = require('bluebird'),
|
||||
Models = require('../../server/models');
|
||||
Models = require('../../../server/models');
|
||||
|
||||
describe('Database Migration (special functions)', function () {
|
||||
before(testUtils.teardown);
|
|
@ -21,6 +21,7 @@ describe('Models: listeners', function () {
|
|||
};
|
||||
|
||||
before(testUtils.teardown);
|
||||
|
||||
beforeEach(testUtils.setup('owner', 'user-token:0', 'settings'));
|
||||
|
||||
beforeEach(function () {
|
||||
|
@ -253,7 +254,6 @@ describe('Models: listeners', function () {
|
|||
post1 = posts[0],
|
||||
listenerHasFinished = false;
|
||||
|
||||
sinon.spy(common.logging, 'error');
|
||||
sinon.spy(models.Post, 'findAll');
|
||||
|
||||
// simulate a delay, so that the edit operation from the test here interrupts
|
||||
|
@ -301,7 +301,6 @@ describe('Models: listeners', function () {
|
|||
interval = setInterval(function () {
|
||||
if (listenerHasFinished) {
|
||||
clearInterval(interval);
|
||||
common.logging.error.called.should.eql(false);
|
||||
return done();
|
||||
}
|
||||
}, 1000);
|
|
@ -25,6 +25,7 @@ describe('Post Model', function () {
|
|||
var eventsTriggered = {};
|
||||
|
||||
before(testUtils.teardown);
|
||||
before(testUtils.stopGhost);
|
||||
after(testUtils.teardown);
|
||||
|
||||
before(testUtils.setup('users:roles'));
|
|
@ -2,12 +2,12 @@ const _ = require('lodash');
|
|||
const should = require('should');
|
||||
const sinon = require('sinon');
|
||||
const rewire = require('rewire');
|
||||
const testUtils = require('../../../utils');
|
||||
const configUtils = require('../../../utils/configUtils');
|
||||
const models = require('../../../../server/models');
|
||||
const common = require('../../../../server/lib/common');
|
||||
const themes = require('../../../../server/services/themes');
|
||||
const UrlService = rewire('../../../../server/services/url/UrlService');
|
||||
const testUtils = require('../../utils');
|
||||
const configUtils = require('../../utils/configUtils');
|
||||
const models = require('../../../server/models');
|
||||
const common = require('../../../server/lib/common');
|
||||
const themes = require('../../../server/services/themes');
|
||||
const UrlService = rewire('../../../server/services/url/UrlService');
|
||||
|
||||
describe('Integration: services/url/UrlService', function () {
|
||||
let urlService;
|
|
@ -7,11 +7,11 @@ const should = require('should'),
|
|||
sinon = require('sinon'),
|
||||
moment = require('moment'),
|
||||
path = require('path'),
|
||||
testUtils = require('../utils'),
|
||||
testUtils = require('../../utils'),
|
||||
cheerio = require('cheerio'),
|
||||
config = require('../../server/config'),
|
||||
api = require('../../server/api'),
|
||||
settingsCache = require('../../server/services/settings/cache'),
|
||||
config = require('../../../server/config'),
|
||||
api = require('../../../server/api'),
|
||||
settingsCache = require('../../../server/services/settings/cache'),
|
||||
ghost = testUtils.startGhost;
|
||||
|
||||
let request;
|
|
@ -8,10 +8,10 @@ var should = require('should'),
|
|||
moment = require('moment'),
|
||||
cheerio = require('cheerio'),
|
||||
_ = require('lodash'),
|
||||
testUtils = require('../utils'),
|
||||
configUtils = require('../utils/configUtils'),
|
||||
config = require('../../server/config'),
|
||||
settingsCache = require('../../server/services/settings/cache'),
|
||||
testUtils = require('../../utils'),
|
||||
configUtils = require('../../utils/configUtils'),
|
||||
config = require('../../../server/config'),
|
||||
settingsCache = require('../../../server/services/settings/cache'),
|
||||
origCache = _.cloneDeep(settingsCache),
|
||||
ghost = testUtils.startGhost,
|
||||
request;
|
|
@ -5,18 +5,18 @@ const rewire = require('rewire');
|
|||
const sinon = require('sinon');
|
||||
const moment = require('moment');
|
||||
const uuid = require('uuid');
|
||||
const testUtils = require('../utils');
|
||||
const configUtils = require('../utils/configUtils');
|
||||
const packageInfo = require('../../../package');
|
||||
const api = require('../../server/api').v2;
|
||||
const testUtils = require('../../utils');
|
||||
const configUtils = require('../../utils/configUtils');
|
||||
const packageInfo = require('../../../../package');
|
||||
const api = require('../../../server/api').v2;
|
||||
|
||||
let updateCheck = rewire('../../server/update-check');
|
||||
let NotificationsAPI = rewire('../../server/api/v2/notifications');
|
||||
let updateCheck = rewire('../../../server/update-check');
|
||||
let NotificationsAPI = rewire('../../../server/api/v2/notifications');
|
||||
|
||||
describe('Update Check', function () {
|
||||
beforeEach(function () {
|
||||
updateCheck = rewire('../../server/update-check');
|
||||
NotificationsAPI = rewire('../../server/api/v2/notifications');
|
||||
updateCheck = rewire('../../../server/update-check');
|
||||
NotificationsAPI = rewire('../../../server/api/v2/notifications');
|
||||
});
|
||||
|
||||
afterEach(function () {
|
|
@ -1025,6 +1025,15 @@ startGhost = function startGhost(options) {
|
|||
module.exports = {
|
||||
startGhost: startGhost,
|
||||
|
||||
stopGhost: () => {
|
||||
if (ghostServer && ghostServer.httpServer) {
|
||||
return ghostServer.stop()
|
||||
.then(() => {
|
||||
urlService.resetGenerators();
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
integrationTesting: {
|
||||
overrideGhostConfig: function overrideGhostConfig(configUtils) {
|
||||
configUtils.set('paths:contentPath', path.join(__dirname, 'fixtures'));
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
"start": "node index",
|
||||
"dev": "DEBUG=ghost:* grunt dev",
|
||||
"test": "grunt validate --verbose",
|
||||
"test:regression": "grunt test-regression --verbose",
|
||||
"setup": "yarn install && knex-migrator init && grunt symlink && grunt init || true",
|
||||
"lint": "grunt lint"
|
||||
},
|
||||
|
|
Loading…
Add table
Reference in a new issue