325 lines
8.2 KiB
JavaScript
325 lines
8.2 KiB
JavaScript
const expect = global.expect;
|
|
const jQuery = global.jQuery;
|
|
const sinon = global.sinon;
|
|
|
|
define([
|
|
'newsletter_editor/App',
|
|
'newsletter_editor/components/communication',
|
|
'amd-inject-loader!newsletter_editor/components/communication'
|
|
], function (EditorApplication, Communication, CommunicationInjector) {
|
|
|
|
describe('getPostTypes', function () {
|
|
it('fetches post types from the server', function () {
|
|
var module = CommunicationInjector({
|
|
mailpoet: {
|
|
Ajax: {
|
|
post: function () {
|
|
var deferred = jQuery.Deferred();
|
|
deferred.resolve({
|
|
data: {
|
|
post: 'val1',
|
|
page: 'val2'
|
|
}
|
|
});
|
|
return deferred;
|
|
}
|
|
}
|
|
}
|
|
});
|
|
module.getPostTypes().done(function (types) {
|
|
expect(types).to.eql(['val1', 'val2']);
|
|
});
|
|
});
|
|
|
|
it('caches results', function () {
|
|
var deferred = jQuery.Deferred();
|
|
var mock = sinon.mock({ post: function () {} }).expects('post').once().returns(deferred);
|
|
var module = CommunicationInjector({
|
|
mailpoet: {
|
|
Ajax: {
|
|
post: mock
|
|
}
|
|
}
|
|
});
|
|
deferred.resolve({
|
|
post: 'val1',
|
|
page: 'val2'
|
|
});
|
|
module.getPostTypes();
|
|
module.getPostTypes();
|
|
|
|
mock.verify();
|
|
});
|
|
});
|
|
|
|
describe('getTaxonomies', function () {
|
|
it('sends post type to endpoint', function () {
|
|
var spy;
|
|
var post = function () {
|
|
var deferred = jQuery.Deferred();
|
|
deferred.resolve({
|
|
category: 'val1',
|
|
post_tag: 'val2'
|
|
});
|
|
return deferred;
|
|
};
|
|
var module;
|
|
spy = sinon.spy(post);
|
|
module = CommunicationInjector({
|
|
mailpoet: {
|
|
Ajax: {
|
|
post: spy
|
|
}
|
|
}
|
|
});
|
|
|
|
module.getTaxonomies('post');
|
|
expect(spy.args[0][0].data.postType).to.equal('post');
|
|
});
|
|
|
|
it('fetches taxonomies from the server', function () {
|
|
var module = CommunicationInjector({
|
|
mailpoet: {
|
|
Ajax: {
|
|
post: function () {
|
|
var deferred = jQuery.Deferred();
|
|
deferred.resolve({
|
|
data: {
|
|
category: 'val1'
|
|
}
|
|
});
|
|
return deferred;
|
|
}
|
|
}
|
|
}
|
|
});
|
|
module.getTaxonomies('page').done(function (types) {
|
|
expect(types).to.eql({ category: 'val1' });
|
|
});
|
|
});
|
|
|
|
it('caches results', function () {
|
|
var deferred = jQuery.Deferred();
|
|
var mock = sinon.mock({ post: function () {} }).expects('post').once().returns(deferred);
|
|
var module = CommunicationInjector({
|
|
mailpoet: {
|
|
Ajax: {
|
|
post: mock
|
|
}
|
|
}
|
|
});
|
|
deferred.resolve({ category: 'val1' });
|
|
module.getTaxonomies('page');
|
|
module.getTaxonomies('page');
|
|
|
|
mock.verify();
|
|
});
|
|
});
|
|
|
|
describe('getTerms', function () {
|
|
it('sends terms to endpoint', function () {
|
|
var spy;
|
|
var post = function () {
|
|
var deferred = jQuery.Deferred();
|
|
deferred.resolve({});
|
|
return deferred;
|
|
};
|
|
var module;
|
|
spy = sinon.spy(post);
|
|
module = CommunicationInjector({
|
|
mailpoet: {
|
|
Ajax: {
|
|
post: spy
|
|
}
|
|
}
|
|
});
|
|
|
|
module.getTerms({
|
|
taxonomies: ['category', 'post_tag']
|
|
});
|
|
expect(spy.args[0][0].data.taxonomies).to.eql(['category', 'post_tag']);
|
|
});
|
|
|
|
it('fetches terms from the server', function () {
|
|
var module = CommunicationInjector({
|
|
mailpoet: {
|
|
Ajax: {
|
|
post: function () {
|
|
var deferred = jQuery.Deferred();
|
|
deferred.resolve({
|
|
data: {
|
|
term1: 'term1val1',
|
|
term2: 'term2val2'
|
|
}
|
|
});
|
|
return deferred;
|
|
}
|
|
}
|
|
}
|
|
});
|
|
module.getTerms({ taxonomies: ['category'] }).done(function (types) {
|
|
expect(types).to.eql({ term1: 'term1val1', term2: 'term2val2' });
|
|
});
|
|
});
|
|
|
|
it('caches results', function () {
|
|
var deferred = jQuery.Deferred();
|
|
var mock = sinon.mock({ post: function () {} }).expects('post').once().returns(deferred);
|
|
var module = CommunicationInjector({
|
|
mailpoet: {
|
|
Ajax: {
|
|
post: mock
|
|
}
|
|
}
|
|
});
|
|
deferred.resolve({ term1: 'term1val1', term2: 'term2val2' });
|
|
module.getTerms({ taxonomies: ['category'] });
|
|
module.getTerms({ taxonomies: ['category'] });
|
|
|
|
mock.verify();
|
|
});
|
|
});
|
|
|
|
describe('getPosts', function () {
|
|
it('sends options to endpoint', function () {
|
|
var spy;
|
|
var post = function () {
|
|
var deferred = jQuery.Deferred();
|
|
deferred.resolve({});
|
|
return deferred;
|
|
};
|
|
var module;
|
|
spy = sinon.spy(post);
|
|
module = CommunicationInjector({
|
|
mailpoet: {
|
|
Ajax: {
|
|
post: spy
|
|
}
|
|
}
|
|
});
|
|
|
|
module.getPosts({
|
|
type: 'posts',
|
|
search: 'some search term'
|
|
});
|
|
expect(spy.args[0][0].data).to.eql({
|
|
type: 'posts',
|
|
search: 'some search term'
|
|
});
|
|
});
|
|
|
|
it('fetches posts from the server', function () {
|
|
var module = CommunicationInjector({
|
|
mailpoet: {
|
|
Ajax: {
|
|
post: function () {
|
|
var deferred = jQuery.Deferred();
|
|
deferred.resolve({
|
|
data: [
|
|
{ post_title: 'title 1' },
|
|
{ post_title: 'post title 2' }
|
|
]
|
|
});
|
|
return deferred;
|
|
}
|
|
}
|
|
}
|
|
});
|
|
module.getPosts().done(function (posts) {
|
|
expect(posts).to.eql([{ post_title: 'title 1' }, { post_title: 'post title 2' }]);
|
|
});
|
|
});
|
|
|
|
it('caches results', function () {
|
|
var deferred = jQuery.Deferred();
|
|
var mock = sinon.mock({ post: function () {} }).expects('post').once().returns(deferred);
|
|
var module = CommunicationInjector({
|
|
mailpoet: {
|
|
Ajax: {
|
|
post: mock
|
|
}
|
|
}
|
|
});
|
|
deferred.resolve({
|
|
type: 'posts',
|
|
search: 'some search term'
|
|
});
|
|
module.getPosts({});
|
|
module.getPosts({});
|
|
|
|
mock.verify();
|
|
});
|
|
});
|
|
|
|
describe('getTransformedPosts', function () {
|
|
it('sends options to endpoint', function () {
|
|
var spy;
|
|
var post = function () {
|
|
var deferred = jQuery.Deferred();
|
|
deferred.resolve({});
|
|
return deferred;
|
|
};
|
|
var module;
|
|
spy = sinon.spy(post);
|
|
module = CommunicationInjector({
|
|
mailpoet: {
|
|
Ajax: {
|
|
post: spy
|
|
}
|
|
}
|
|
});
|
|
|
|
module.getTransformedPosts({
|
|
type: 'posts',
|
|
posts: [1, 2]
|
|
});
|
|
expect(spy.args[0][0].data).to.eql({
|
|
type: 'posts',
|
|
posts: [1, 2]
|
|
});
|
|
});
|
|
|
|
it('fetches transformed posts from the server', function () {
|
|
var module = CommunicationInjector({
|
|
mailpoet: {
|
|
Ajax: {
|
|
post: function () {
|
|
var deferred = jQuery.Deferred();
|
|
deferred.resolve({
|
|
data: [
|
|
{ type: 'text', text: 'something' },
|
|
{ type: 'text', text: 'something else' }
|
|
]
|
|
});
|
|
return deferred;
|
|
}
|
|
}
|
|
}
|
|
});
|
|
module.getTransformedPosts().done(function (posts) {
|
|
expect(posts).to.eql([{ type: 'text', text: 'something' }, { type: 'text', text: 'something else' }]);
|
|
});
|
|
});
|
|
|
|
it('caches results', function () {
|
|
var deferred = jQuery.Deferred();
|
|
var mock = sinon.mock({ post: function () {} }).expects('post').once().returns(deferred);
|
|
var module = CommunicationInjector({
|
|
mailpoet: {
|
|
Ajax: {
|
|
post: mock
|
|
}
|
|
}
|
|
});
|
|
deferred.resolve({
|
|
type: 'posts',
|
|
posts: [1, 3]
|
|
});
|
|
module.getTransformedPosts({});
|
|
module.getTransformedPosts({});
|
|
|
|
mock.verify();
|
|
});
|
|
});
|
|
});
|