mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-23 10:53:34 +03:00
0581314796
- The url service was moved from frontend to server some time ago but the tests were forgotten - This is only being done now because in 5.0 major changes are happening and it'll be annoying if the files move on that branch
111 lines
2.9 KiB
JavaScript
111 lines
2.9 KiB
JavaScript
const should = require('should');
|
|
const sinon = require('sinon');
|
|
const events = require('../../../../../core/server/lib/common/events');
|
|
const Urls = require('../../../../../core/server/services/url/Urls');
|
|
|
|
describe('Unit: services/url/Urls', function () {
|
|
let urls;
|
|
let eventsToRemember;
|
|
|
|
beforeEach(function () {
|
|
urls = new Urls();
|
|
|
|
urls.add({
|
|
url: '/test/',
|
|
resource: {
|
|
data: {
|
|
id: 'object-id-1'
|
|
}
|
|
},
|
|
generatorId: 2
|
|
});
|
|
|
|
urls.add({
|
|
url: '/something/',
|
|
resource: {
|
|
data: {
|
|
id: 'object-id-2'
|
|
}
|
|
},
|
|
generatorId: 1
|
|
});
|
|
|
|
urls.add({
|
|
url: '/casper/',
|
|
resource: {
|
|
data: {
|
|
id: 'object-id-3'
|
|
}
|
|
},
|
|
generatorId: 2
|
|
});
|
|
|
|
eventsToRemember = {};
|
|
sinon.stub(events, 'emit').callsFake(function (eventName, data) {
|
|
eventsToRemember[eventName] = data;
|
|
});
|
|
});
|
|
|
|
afterEach(function () {
|
|
sinon.restore();
|
|
});
|
|
|
|
it('fn: add', function () {
|
|
urls.add({
|
|
url: '/test/',
|
|
resource: {
|
|
data: {
|
|
id: 'object-id-x',
|
|
slug: 'a'
|
|
}
|
|
},
|
|
generatorId: 1
|
|
});
|
|
|
|
should.exist(eventsToRemember['url.added']);
|
|
eventsToRemember['url.added'].url.absolute.should.eql('http://127.0.0.1:2369/test/');
|
|
eventsToRemember['url.added'].url.relative.should.eql('/test/');
|
|
should.exist(eventsToRemember['url.added'].resource);
|
|
should.exist(eventsToRemember['url.added'].resource.data);
|
|
|
|
urls.getByResourceId('object-id-x').resource.data.slug.should.eql('a');
|
|
|
|
// add duplicate
|
|
urls.add({
|
|
url: '/test/',
|
|
resource: {
|
|
data: {
|
|
id: 'object-id-x',
|
|
slug: 'b'
|
|
}
|
|
},
|
|
generatorId: 1
|
|
});
|
|
|
|
should.exist(eventsToRemember['url.added']);
|
|
|
|
urls.getByResourceId('object-id-x').resource.data.slug.should.eql('b');
|
|
});
|
|
|
|
it('fn: getByResourceId', function () {
|
|
urls.getByResourceId('object-id-2').url.should.eql('/something/');
|
|
should.exist(urls.getByResourceId('object-id-2').generatorId);
|
|
urls.getByResourceId('object-id-2').generatorId.should.eql(1);
|
|
});
|
|
|
|
it('fn: getByGeneratorId', function () {
|
|
urls.getByGeneratorId(2).length.should.eql(2);
|
|
});
|
|
|
|
it('fn: getByUrl', function () {
|
|
urls.getByUrl('/something/').length.should.eql(1);
|
|
});
|
|
|
|
it('fn: removeResourceId', function () {
|
|
urls.removeResourceId('object-id-2');
|
|
should.not.exist(urls.getByResourceId('object-id-2'));
|
|
|
|
urls.removeResourceId('does not exist');
|
|
});
|
|
});
|