Ghost/ghost/admin/tests/integration/services/slug-generator-test.js

55 lines
1.5 KiB
JavaScript
Raw Normal View History

import Pretender from 'pretender';
import ghostPaths from 'ghost-admin/utils/ghost-paths';
import {dasherize} from '@ember/string';
import {describe, it} from 'mocha';
import {expect} from 'chai';
import {setupTest} from 'ember-mocha';
function stubSlugEndpoint(server, type, slug) {
server.get(`${ghostPaths().apiRoot}/slugs/:type/:slug/`, function (request) {
expect(request.params.type).to.equal(type);
expect(request.params.slug).to.equal(slug);
return [
200,
{'Content-Type': 'application/json'},
JSON.stringify({slugs: [{slug: dasherize(slug)}]})
];
});
}
2016-11-24 01:50:57 +03:00
describe('Integration: Service: slug-generator', function () {
setupTest();
2016-11-24 01:50:57 +03:00
let server;
2016-11-24 01:50:57 +03:00
beforeEach(function () {
server = new Pretender();
});
2016-11-24 01:50:57 +03:00
afterEach(function () {
server.shutdown();
});
it('returns empty if no slug is provided', function (done) {
let service = this.owner.lookup('service:slug-generator');
2016-11-24 01:50:57 +03:00
service.generateSlug('post', '').then(function (slug) {
expect(slug).to.equal('');
done();
});
2016-11-24 01:50:57 +03:00
});
2016-11-24 01:50:57 +03:00
it('calls correct endpoint and returns correct data', function (done) {
let rawSlug = 'a test post';
stubSlugEndpoint(server, 'post', 'a-test-post');
let service = this.owner.lookup('service:slug-generator');
2016-11-24 01:50:57 +03:00
service.generateSlug('post', rawSlug).then(function (slug) {
expect(slug).to.equal(dasherize(rawSlug));
done();
});
2016-11-24 01:50:57 +03:00
});
});