Add tests for Wordpress component, fix ALC/Posts endpoint calls
This commit is contained in:
@ -7,11 +7,11 @@
|
|||||||
* block settings view.
|
* block settings view.
|
||||||
*/
|
*/
|
||||||
define([
|
define([
|
||||||
'newsletter_editor/App',
|
|
||||||
'backbone',
|
'backbone',
|
||||||
'backbone.marionette',
|
'backbone.marionette',
|
||||||
'mailpoet',
|
'newsletter_editor/App',
|
||||||
], function(EditorApplication, Backbone, Marionette, MailPoet) {
|
'newsletter_editor/components/wordpress',
|
||||||
|
], function(Backbone, Marionette, EditorApplication, WordpressComponent) {
|
||||||
|
|
||||||
EditorApplication.module("blocks.automatedLatestContent", function(Module, App, Backbone, Marionette, $, _) {
|
EditorApplication.module("blocks.automatedLatestContent", function(Module, App, Backbone, Marionette, $, _) {
|
||||||
"use strict";
|
"use strict";
|
||||||
@ -156,7 +156,7 @@ define([
|
|||||||
var that = this;
|
var that = this;
|
||||||
|
|
||||||
// Dynamically update available post types
|
// Dynamically update available post types
|
||||||
App.module('components.wordpress').getPostTypes().done(_.bind(this._updateContentTypes, this));
|
WordpressComponent.getPostTypes().done(_.bind(this._updateContentTypes, this));
|
||||||
|
|
||||||
this.$('.mailpoet_automated_latest_content_categories_and_tags').select2({
|
this.$('.mailpoet_automated_latest_content_categories_and_tags').select2({
|
||||||
multiple: true,
|
multiple: true,
|
||||||
@ -164,10 +164,10 @@ define([
|
|||||||
query: function(options) {
|
query: function(options) {
|
||||||
var taxonomies = [];
|
var taxonomies = [];
|
||||||
// Delegate data loading to our own endpoints
|
// Delegate data loading to our own endpoints
|
||||||
EditorApplication.module('components.wordpress').getTaxonomies(that.model.get('contentType')).then(function(tax) {
|
WordpressComponent.getTaxonomies(that.model.get('contentType')).then(function(tax) {
|
||||||
taxonomies = tax;
|
taxonomies = tax;
|
||||||
// Fetch available terms based on the list of taxonomies already fetched
|
// Fetch available terms based on the list of taxonomies already fetched
|
||||||
var promise = EditorApplication.module('components.wordpress').getTerms({
|
var promise = WordpressComponent.getTerms({
|
||||||
search: options.term,
|
search: options.term,
|
||||||
taxonomies: _.keys(taxonomies)
|
taxonomies: _.keys(taxonomies)
|
||||||
}).then(function(terms) {
|
}).then(function(terms) {
|
||||||
|
@ -11,13 +11,13 @@
|
|||||||
* block settings view.
|
* block settings view.
|
||||||
*/
|
*/
|
||||||
define([
|
define([
|
||||||
'newsletter_editor/App',
|
|
||||||
'backbone',
|
'backbone',
|
||||||
'backbone.marionette',
|
'backbone.marionette',
|
||||||
'backbone.radio',
|
'backbone.radio',
|
||||||
'mailpoet',
|
'mailpoet',
|
||||||
'ajax',
|
'newsletter_editor/App',
|
||||||
], function(EditorApplication, Backbone, Marionette, Radio, MailPoet) {
|
'newsletter_editor/components/wordpress',
|
||||||
|
], function(Backbone, Marionette, Radio, MailPoet, EditorApplication, WordpressComponent) {
|
||||||
|
|
||||||
EditorApplication.module("blocks.posts", function(Module, App, Backbone, Marionette, $, _) {
|
EditorApplication.module("blocks.posts", function(Module, App, Backbone, Marionette, $, _) {
|
||||||
"use strict";
|
"use strict";
|
||||||
@ -257,7 +257,7 @@ define([
|
|||||||
var that = this;
|
var that = this;
|
||||||
|
|
||||||
// Dynamically update available post types
|
// Dynamically update available post types
|
||||||
App.module('components.wordpress').getPostTypes().done(_.bind(this._updateContentTypes, this));
|
WordpressComponent.getPostTypes().done(_.bind(this._updateContentTypes, this));
|
||||||
|
|
||||||
this.$('.mailpoet_posts_categories_and_tags').select2({
|
this.$('.mailpoet_posts_categories_and_tags').select2({
|
||||||
multiple: true,
|
multiple: true,
|
||||||
@ -265,10 +265,10 @@ define([
|
|||||||
query: function(options) {
|
query: function(options) {
|
||||||
var taxonomies = [];
|
var taxonomies = [];
|
||||||
// Delegate data loading to our own endpoints
|
// Delegate data loading to our own endpoints
|
||||||
EditorApplication.module('components.wordpress').getTaxonomies(that.model.get('contentType')).then(function(tax) {
|
WordpressComponent.getTaxonomies(that.model.get('contentType')).then(function(tax) {
|
||||||
taxonomies = tax;
|
taxonomies = tax;
|
||||||
// Fetch available terms based on the list of taxonomies already fetched
|
// Fetch available terms based on the list of taxonomies already fetched
|
||||||
var promise = EditorApplication.module('components.wordpress').getTerms({
|
var promise = WordpressComponent.getTerms({
|
||||||
search: options.term,
|
search: options.term,
|
||||||
taxonomies: _.keys(taxonomies)
|
taxonomies: _.keys(taxonomies)
|
||||||
}).then(function(terms) {
|
}).then(function(terms) {
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
define([
|
define([
|
||||||
'newsletter_editor/App',
|
'newsletter_editor/App',
|
||||||
'mailpoet'
|
'mailpoet',
|
||||||
|
'ajax'
|
||||||
], function(EditorApplication, MailPoet) {
|
], function(EditorApplication, MailPoet) {
|
||||||
|
|
||||||
var Module = {};
|
var Module = {};
|
||||||
|
@ -4,25 +4,178 @@ define([
|
|||||||
], function(EditorApplication, Wordpress) {
|
], function(EditorApplication, Wordpress) {
|
||||||
|
|
||||||
describe('getPostTypes', function() {
|
describe('getPostTypes', function() {
|
||||||
|
var injector;
|
||||||
|
beforeEach(function() {
|
||||||
|
injector = require('amd-inject-loader!newsletter_editor/components/wordpress');
|
||||||
|
});
|
||||||
|
|
||||||
it('fetches post types from the server', function() {
|
it('fetches post types from the server', function() {
|
||||||
var injector = require('amd-inject-loader!newsletter_editor/components/wordpress');
|
|
||||||
var module = injector({
|
var module = injector({
|
||||||
|
"mailpoet": {
|
||||||
|
Ajax: {
|
||||||
|
post: function() {
|
||||||
|
var deferred = jQuery.Deferred();
|
||||||
|
deferred.resolve({
|
||||||
|
'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(),
|
||||||
|
mock = sinon.mock({ post: function() {} }).expects('post').once().returns(deferred),
|
||||||
|
module = injector({
|
||||||
|
"mailpoet": {
|
||||||
|
Ajax: {
|
||||||
|
post: mock,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
deferred.resolve({
|
||||||
|
'post': 'val1',
|
||||||
|
'page': 'val2',
|
||||||
|
});
|
||||||
|
module.getPostTypes();
|
||||||
|
module.getPostTypes();
|
||||||
|
|
||||||
|
mock.verify();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('getTaxonomies', function() {
|
||||||
|
var injector;
|
||||||
|
beforeEach(function() {
|
||||||
|
injector = require('amd-inject-loader!newsletter_editor/components/wordpress');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('sends post type to endpoint', function() {
|
||||||
|
var spy,
|
||||||
|
post = function(params) {
|
||||||
|
var deferred = jQuery.Deferred();
|
||||||
|
deferred.resolve({
|
||||||
|
'category': 'val1',
|
||||||
|
'post_tag': 'val2',
|
||||||
|
});
|
||||||
|
return deferred;
|
||||||
|
},
|
||||||
|
module;
|
||||||
|
spy = sinon.spy(post);
|
||||||
|
module = injector({
|
||||||
"mailpoet": {
|
"mailpoet": {
|
||||||
Ajax: {
|
Ajax: {
|
||||||
post: function() {
|
post: spy,
|
||||||
var deferred = jQuery.Deferred();
|
|
||||||
deferred.resolve({
|
|
||||||
'post': 'val1',
|
|
||||||
'page': 'val2',
|
|
||||||
});
|
|
||||||
return deferred;
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
module.getPostTypes().done(function(types) {
|
|
||||||
expect(types).to.include.members(['val1', 'val2']);
|
module.getTaxonomies('post');
|
||||||
|
expect(spy.args[0][0].data.postType).to.equal('post');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('fetches post types from the server', function() {
|
||||||
|
var module = injector({
|
||||||
|
"mailpoet": {
|
||||||
|
Ajax: {
|
||||||
|
post: function() {
|
||||||
|
var deferred = jQuery.Deferred();
|
||||||
|
deferred.resolve({ 'category': 'val1' });
|
||||||
|
return deferred;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
module.getTaxonomies('page').done(function(types) {
|
||||||
|
expect(types).to.eql({ 'category': 'val1' });
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('caches results', function() {
|
||||||
|
var deferred = jQuery.Deferred(),
|
||||||
|
mock = sinon.mock({ post: function() {} }).expects('post').once().returns(deferred),
|
||||||
|
module = injector({
|
||||||
|
"mailpoet": {
|
||||||
|
Ajax: {
|
||||||
|
post: mock,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
deferred.resolve({ 'category': 'val1' });
|
||||||
|
module.getTaxonomies('page');
|
||||||
|
module.getTaxonomies('page');
|
||||||
|
|
||||||
|
mock.verify();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('getTerms', function() {
|
||||||
|
var injector;
|
||||||
|
beforeEach(function() {
|
||||||
|
injector = require('amd-inject-loader!newsletter_editor/components/wordpress');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('sends terms to endpoint', function() {
|
||||||
|
var spy,
|
||||||
|
post = function(params) {
|
||||||
|
var deferred = jQuery.Deferred();
|
||||||
|
deferred.resolve({});
|
||||||
|
return deferred;
|
||||||
|
},
|
||||||
|
module;
|
||||||
|
spy = sinon.spy(post);
|
||||||
|
module = injector({
|
||||||
|
"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 = injector({
|
||||||
|
"mailpoet": {
|
||||||
|
Ajax: {
|
||||||
|
post: function() {
|
||||||
|
var deferred = jQuery.Deferred();
|
||||||
|
deferred.resolve({ '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(),
|
||||||
|
mock = sinon.mock({ post: function() {} }).expects('post').once().returns(deferred),
|
||||||
|
module = injector({
|
||||||
|
"mailpoet": {
|
||||||
|
Ajax: {
|
||||||
|
post: mock,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
deferred.resolve({ 'term1': 'term1val1', 'term2': 'term2val2' });
|
||||||
|
module.getTerms({ taxonomies: ['category'] });
|
||||||
|
module.getTerms({ taxonomies: ['category'] });
|
||||||
|
|
||||||
|
mock.verify();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
Reference in New Issue
Block a user