mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-02-17 23:44:39 -05:00
refs b6728ecb0f
- The "no-shadow" eslint rune was introduced into ghost's eslint plugin (referenced commmit), which resulted in flood of warning in console output when linting the project codebase.
- This cleanup is aiming to make any new linting issues more visible. Follow up commits will contain similar cleanups in other parts of the codebase
110 lines
4.2 KiB
JavaScript
110 lines
4.2 KiB
JavaScript
const errors = require('@tryghost/errors');
|
|
const should = require('should');
|
|
const sinon = require('sinon');
|
|
const Promise = require('bluebird');
|
|
const moment = require('moment');
|
|
const testUtils = require('../../../../utils');
|
|
const models = require('../../../../../core/server/models');
|
|
const {events} = require('../../../../../core/server/lib/common');
|
|
const api = require('../../../../../core/server/api');
|
|
const schedulingUtils = require('../../../../../core/server/adapters/scheduling/utils');
|
|
const SchedulingDefault = require('../../../../../core/server/adapters/scheduling/SchedulingDefault');
|
|
const postScheduling = require('../../../../../core/server/adapters/scheduling/post-scheduling');
|
|
const urlUtils = require('../../../../../core/shared/url-utils');
|
|
|
|
// NOTE: to be unskiped and corrected once default scheduler code is migrated
|
|
describe.skip('Scheduling: Post Scheduling', function () {
|
|
const scope = {
|
|
events: {},
|
|
scheduledPosts: [],
|
|
apiUrl: 'localhost:1111/',
|
|
client: null,
|
|
post: null
|
|
};
|
|
|
|
before(function () {
|
|
models.init();
|
|
});
|
|
|
|
beforeEach(function () {
|
|
scope.client = models.Client.forge(testUtils.DataGenerator.forKnex.createClient({slug: 'ghost-scheduler'}));
|
|
scope.post = models.Post.forge(testUtils.DataGenerator.forKnex.createPost({
|
|
id: 1337,
|
|
mobiledoc: testUtils.DataGenerator.markdownToMobiledoc('something')
|
|
}));
|
|
|
|
scope.adapter = new SchedulingDefault();
|
|
|
|
sinon.stub(api.schedules, 'getScheduledPosts').callsFake(function () {
|
|
return Promise.resolve({posts: scope.scheduledPosts});
|
|
});
|
|
|
|
sinon.stub(events, 'onMany').callsFake(function (stubedEvents, stubDone) {
|
|
stubedEvents.forEach(function (event) {
|
|
scope.events[event] = stubDone;
|
|
});
|
|
});
|
|
|
|
sinon.stub(schedulingUtils, 'createAdapter').returns(Promise.resolve(scope.adapter));
|
|
|
|
sinon.stub(models.Client, 'findOne').callsFake(function () {
|
|
return Promise.resolve(scope.client);
|
|
});
|
|
|
|
sinon.spy(scope.adapter, 'schedule');
|
|
sinon.spy(scope.adapter, 'reschedule');
|
|
});
|
|
|
|
afterEach(function () {
|
|
sinon.restore();
|
|
});
|
|
|
|
describe('fn:init', function () {
|
|
describe('success', function () {
|
|
it('will be scheduled', function (done) {
|
|
postScheduling.init({
|
|
apiUrl: scope.apiUrl
|
|
}).then(function () {
|
|
scope.events['post.scheduled'](scope.post);
|
|
scope.adapter.schedule.called.should.eql(true);
|
|
|
|
scope.adapter.schedule.calledWith({
|
|
time: moment(scope.post.get('published_at')).valueOf(),
|
|
url: urlUtils.urlJoin(scope.apiUrl, 'schedules', 'posts', scope.post.get('id')) + '?client_id=' + scope.client.get('slug') + '&client_secret=' + scope.client.get('secret'),
|
|
extra: {
|
|
httpMethod: 'PUT',
|
|
oldTime: null
|
|
}
|
|
}).should.eql(true);
|
|
|
|
done();
|
|
}).catch(done);
|
|
});
|
|
|
|
it('will load scheduled posts from database', function (done) {
|
|
scope.scheduledPosts = [
|
|
models.Post.forge(testUtils.DataGenerator.forKnex.createPost({status: 'scheduled'})),
|
|
models.Post.forge(testUtils.DataGenerator.forKnex.createPost({status: 'scheduled'}))
|
|
];
|
|
|
|
postScheduling.init({
|
|
apiUrl: scope.apiUrl
|
|
}).then(function () {
|
|
scope.adapter.reschedule.calledTwice.should.eql(true);
|
|
done();
|
|
}).catch(done);
|
|
});
|
|
});
|
|
|
|
describe('error', function () {
|
|
it('no url passed', function (done) {
|
|
postScheduling.init()
|
|
.catch(function (err) {
|
|
should.exist(err);
|
|
(err instanceof errors.IncorrectUsageError).should.eql(true);
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|