mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-29 22:01:49 +03:00
f08a55c21f
refs: https://github.com/TryGhost/Team/issues/856 refs: https://github.com/TryGhost/Team/issues/756 - The .test.js extension is better than _spec.js as it's more obvious that it's an extension - It also meaans we can use the --extension parameter in mocha, which should result in a better default behaviour for `yarn test` - It also highlights that some of our tests were named incorrectly and were not (and still will not be) run (see https://github.com/TryGhost/Team/issues/856) - Note: even with this change, `yarn test` is throwing errors, I believe because of this issue https://github.com/TryGhost/Team/issues/756
215 lines
7.5 KiB
JavaScript
215 lines
7.5 KiB
JavaScript
const should = require('should');
|
|
const sinon = require('sinon');
|
|
|
|
const Notifications = require('../../../../core/server/services/notifications/notifications');
|
|
const {owner} = require('../../../utils/fixtures/context');
|
|
|
|
describe('Notifications Service', function () {
|
|
it('can browse non-major version upgrade notifications', function () {
|
|
const settingsCache = {
|
|
get: sinon.fake.returns([{
|
|
dismissible: true,
|
|
id: '130f7c24-113a-4768-a698-12a8b34223f1',
|
|
type: 'info',
|
|
message: `<strong>Ghost 5.1.3 is now available</strong> - You are using an old version of Ghost, which means you don't have access to the latest features. <a href=\'https://ghost.org/changelog/4/\' target=\'_blank\' rel=\'noopener\'>Read more!</a>`,
|
|
createdAt: '2021-03-16T12:55:20.000Z',
|
|
addedAt: '2021-03-17T01:41:20.906Z'
|
|
}])
|
|
};
|
|
|
|
const notificationSvc = new Notifications({
|
|
settingsCache,
|
|
ghostVersion: {
|
|
full: '4.1.0'
|
|
}
|
|
});
|
|
|
|
const notifications = notificationSvc.browse({user: owner});
|
|
|
|
should.exist(notifications);
|
|
notifications.length.should.equal(1);
|
|
});
|
|
|
|
it('can browse major version upgrade notifications', function () {
|
|
const settingsCache = {
|
|
get: sinon.fake.returns([{
|
|
dismissible: true,
|
|
location: 'bottom',
|
|
status: 'alert',
|
|
id: '130f7c24-113a-4768-a698-12a8b34223f6',
|
|
custom: true,
|
|
createdAt: '2021-03-16T12:55:20.000Z',
|
|
type: 'info',
|
|
top: true,
|
|
message: `<strong>Ghost 5.0 is now available</strong> - You are using an old version of Ghost, which means you don't have access to the latest features. <a href=\'https://ghost.org/changelog/4/\' target=\'_blank\' rel=\'noopener\'>Read more!</a>`,
|
|
seen: true,
|
|
addedAt: '2021-03-17T01:41:20.906Z',
|
|
seenBy: ['1']
|
|
}])
|
|
};
|
|
|
|
const notificationSvc = new Notifications({
|
|
settingsCache,
|
|
ghostVersion: {
|
|
full: '4.0.0'
|
|
}
|
|
});
|
|
|
|
const notifications = notificationSvc.browse({user: owner});
|
|
|
|
should.exist(notifications);
|
|
notifications.length.should.equal(1);
|
|
});
|
|
|
|
it('cannot see 2.0 version upgrade notifications in Ghost 3.0', function () {
|
|
const settingsCache = {
|
|
get: sinon.fake.returns([{
|
|
dismissible: true,
|
|
location: 'bottom',
|
|
status: 'alert',
|
|
id: '130f7c24-113a-4768-a698-12a8b34223f7',
|
|
custom: true,
|
|
createdAt: '2020-03-16T12:55:20.000Z',
|
|
type: 'info',
|
|
top: true,
|
|
message: `<strong>Ghost 2.0 is now available</strong> - You are using an old version of Ghost, which means you don't have access to the latest features.`,
|
|
seen: true,
|
|
addedAt: '2020-03-17T01:41:20.906Z',
|
|
seenBy: ['1']
|
|
}])
|
|
};
|
|
|
|
const notificationSvc = new Notifications({
|
|
settingsCache,
|
|
ghostVersion: {
|
|
full: '3.0.0'
|
|
}
|
|
});
|
|
|
|
const notifications = notificationSvc.browse({user: owner});
|
|
|
|
should.exist(notifications);
|
|
notifications.length.should.equal(0);
|
|
});
|
|
|
|
it('cannot see 4.0 version upgrade notifications in Ghost 4.0', function () {
|
|
const settingsCache = {
|
|
get: sinon.fake.returns([{
|
|
dismissible: true,
|
|
location: 'bottom',
|
|
status: 'alert',
|
|
id: '130f7c24-113a-4768-a698-12a8b34223f8',
|
|
custom: true,
|
|
createdAt: '2021-03-16T12:55:20.000Z',
|
|
type: 'info',
|
|
top: true,
|
|
message: `<strong>Ghost 4.0 is now available</strong> - You are using an old version of Ghost, which means you don't have access to the latest features.`,
|
|
seen: true,
|
|
addedAt: '2021-03-17T01:41:20.906Z',
|
|
seenBy: ['1']
|
|
}])
|
|
};
|
|
|
|
const notificationSvc = new Notifications({
|
|
settingsCache,
|
|
ghostVersion: {
|
|
full: '4.0.0'
|
|
}
|
|
});
|
|
|
|
const notifications = notificationSvc.browse({user: owner});
|
|
|
|
should.exist(notifications);
|
|
notifications.length.should.equal(0);
|
|
});
|
|
|
|
it('cannot see 5.0 version upgrade notifications in Ghost 5.0', function () {
|
|
const settingsCache = {
|
|
get: sinon.fake.returns([{
|
|
dismissible: true,
|
|
location: 'bottom',
|
|
status: 'alert',
|
|
id: '130f7c24-113a-4768-a698-12a8b34223f9',
|
|
custom: true,
|
|
createdAt: '2022-03-16T12:55:20.000Z',
|
|
type: 'info',
|
|
top: true,
|
|
message: `<strong>Ghost 5.0 is now available</strong> - You are using an old version of Ghost, which means you don't have access to the latest features.`,
|
|
seen: true,
|
|
addedAt: '2022-03-17T01:41:20.906Z',
|
|
seenBy: ['1']
|
|
}])
|
|
};
|
|
|
|
const notificationSvc = new Notifications({
|
|
settingsCache,
|
|
ghostVersion: {
|
|
full: '5.0.0'
|
|
}
|
|
});
|
|
|
|
const notifications = notificationSvc.browse({user: owner});
|
|
|
|
should.exist(notifications);
|
|
notifications.length.should.equal(0);
|
|
});
|
|
|
|
describe('Stored notifications data corruption recovery', function () {
|
|
it('should correct broken notifications data on browse', function () {
|
|
const settingsCache = {
|
|
get: sinon.fake.returns({
|
|
message: 'this object should be an array!'
|
|
})
|
|
};
|
|
const settingsModelStub = sinon.stub().resolves();
|
|
|
|
const notificationSvc = new Notifications({
|
|
settingsCache,
|
|
ghostVersion: {
|
|
full: '5.0.0'
|
|
},
|
|
SettingsModel: {
|
|
edit: settingsModelStub
|
|
}
|
|
});
|
|
|
|
const notifications = notificationSvc.browse({user: owner});
|
|
|
|
should.exist(notifications);
|
|
notifications.length.should.equal(0);
|
|
|
|
settingsModelStub.called.should.equal(true);
|
|
settingsModelStub.args[0][0].should.eql([{
|
|
key: 'notifications',
|
|
value: '[]'
|
|
}]);
|
|
});
|
|
|
|
it('does not trigger correction when the data is in valid format', function () {
|
|
const settingsCache = {
|
|
get: sinon.fake.returns([{
|
|
message: 'this works! 5.1.0'
|
|
}])
|
|
};
|
|
const settingsModelStub = sinon.stub().resolves();
|
|
|
|
const notificationSvc = new Notifications({
|
|
settingsCache,
|
|
ghostVersion: {
|
|
full: '5.0.0'
|
|
},
|
|
SettingsModel: {
|
|
edit: settingsModelStub
|
|
}
|
|
});
|
|
|
|
const notifications = notificationSvc.browse({user: owner});
|
|
|
|
should.exist(notifications);
|
|
notifications.length.should.equal(1);
|
|
|
|
settingsModelStub.called.should.equal(false);
|
|
});
|
|
});
|
|
});
|