Remove WP < 4.5.0 compatibility code
This commit removes the method Posts::getTerms() as it existed to add a compatibility layer for sites running WP < 4.5.0 and we don't support this version anymore. The signature of the WP get_terms() function was changed in version 4.5.0 and that is why this compatibility layer was needed. The integration test class for this method was also removed. The only place where this method was used, AutomatedLatestContent::getTerms(), now call WPFunctions->getTerms() directly. A very basic integration test was added to cover the happy path of AutomatedLatestContent::getTerms(). [MAILPOET-4225]
This commit is contained in:
@ -59,8 +59,8 @@ class AutomatedLatestContent extends APIEndpoint {
|
||||
'order' => 'ASC',
|
||||
];
|
||||
|
||||
$args = $this->wp->applyFilters('mailpoet_search_terms_args', $args);
|
||||
$terms = WPPosts::getTerms($args);
|
||||
$args = (array)$this->wp->applyFilters('mailpoet_search_terms_args', $args);
|
||||
$terms = WPFunctions::get()->getTerms($args);
|
||||
|
||||
return $this->successResponse(array_values($terms));
|
||||
}
|
||||
|
@ -5,18 +5,6 @@ namespace MailPoet\WP;
|
||||
use MailPoet\WP\Functions as WPFunctions;
|
||||
|
||||
class Posts {
|
||||
public static function getTerms($args) {
|
||||
// Since WordPress 4.5.0 signature of get_terms changed to require
|
||||
// one argument array, where taxonomy is key of that array
|
||||
if (version_compare(WPFunctions::get()->getBloginfo('version'), '4.5.0', '>=')) {
|
||||
return WPFunctions::get()->getTerms($args);
|
||||
} else {
|
||||
$taxonomy = $args['taxonomy'];
|
||||
unset($args['taxonomy']);
|
||||
return WPFunctions::get()->getTerms($taxonomy, $args);
|
||||
}
|
||||
}
|
||||
|
||||
public static function getTypes($args = [], $output = 'names', $operator = 'and') {
|
||||
$defaults = [
|
||||
'exclude_from_search' => false,
|
||||
|
@ -2,12 +2,21 @@
|
||||
|
||||
namespace MailPoet\Test\API\JSON\v1;
|
||||
|
||||
use MailPoet\API\JSON\SuccessResponse;
|
||||
use MailPoet\API\JSON\v1\AutomatedLatestContent;
|
||||
|
||||
class AutomatedLatestContentTest extends \MailPoetTest {
|
||||
/** @var AutomatedLatestContent */
|
||||
private $endpoint;
|
||||
|
||||
public function _before() {
|
||||
parent::_before();
|
||||
|
||||
$this->endpoint = $this->diContainer->get(AutomatedLatestContent::class);
|
||||
}
|
||||
|
||||
public function testItGetsPostTypes() {
|
||||
$endpoint = $this->diContainer->get(AutomatedLatestContent::class);
|
||||
$response = $endpoint->getPostTypes();
|
||||
$response = $this->endpoint->getPostTypes();
|
||||
expect($response->data)->notEmpty();
|
||||
foreach ($response->data as $postType) {
|
||||
expect($postType)->count(2);
|
||||
@ -17,8 +26,7 @@ class AutomatedLatestContentTest extends \MailPoetTest {
|
||||
}
|
||||
|
||||
public function testItDoesNotGetPostTypesExludedFromSearch() {
|
||||
$endpoint = $this->diContainer->get(AutomatedLatestContent::class);
|
||||
$response = $endpoint ->getPostTypes();
|
||||
$response = $this->endpoint ->getPostTypes();
|
||||
// WP's default post type 'revision' is excluded from search
|
||||
// https://codex.wordpress.org/Post_Types
|
||||
$revisionPostType = get_post_type_object('revision');
|
||||
@ -26,4 +34,12 @@ class AutomatedLatestContentTest extends \MailPoetTest {
|
||||
expect($revisionPostType->exclude_from_search)->true(); // phpcs:ignore Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps
|
||||
expect(isset($response->data['revision']))->false();
|
||||
}
|
||||
|
||||
public function testItGetTerms() {
|
||||
$response = $this->endpoint->getTerms();
|
||||
|
||||
$this->assertInstanceOf(SuccessResponse::class, $response);
|
||||
$this->assertCount(1, $response->data);
|
||||
$this->assertSame('Uncategorized', $response->data['0']->name);
|
||||
}
|
||||
}
|
||||
|
@ -1,60 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace MailPoet\Test\WP;
|
||||
|
||||
use Codeception\Util\Stub;
|
||||
use MailPoet\WP\Functions as WPFunctions;
|
||||
use MailPoet\WP\Posts;
|
||||
|
||||
class PostsTest extends \MailPoetUnitTest {
|
||||
public function testGetTermsProxiesCallToWordPress() {
|
||||
$args = [
|
||||
'taxonomy' => 'post_tags',
|
||||
'hide_empty' => true,
|
||||
];
|
||||
|
||||
WPFunctions::set(Stub::make(new WPFunctions, [
|
||||
'getBloginfo' => function($key) {
|
||||
return '4.6.0';
|
||||
},
|
||||
'getTerms' => function($key) {
|
||||
return [
|
||||
'call check' => 'get_terms called',
|
||||
'arguments' => func_get_args(),
|
||||
];
|
||||
},
|
||||
]));
|
||||
|
||||
$result = Posts::getTerms($args);
|
||||
expect($result['call check'])->equals('get_terms called');
|
||||
expect($result['arguments'][0])->equals($args);
|
||||
}
|
||||
|
||||
public function testGetTermsPassesTaxonomyAsFirstArgumentInOldVersions() {
|
||||
$args = [
|
||||
'taxonomy' => 'post_tags',
|
||||
'hide_empty' => true,
|
||||
];
|
||||
|
||||
WPFunctions::set(Stub::make(new WPFunctions, [
|
||||
'getBloginfo' => function($key) {
|
||||
return '4.4.0';
|
||||
},
|
||||
'getTerms' => function($key) {
|
||||
return [
|
||||
'call check' => 'get_terms called',
|
||||
'arguments' => func_get_args(),
|
||||
];
|
||||
},
|
||||
]));
|
||||
|
||||
$result = Posts::getTerms($args);
|
||||
expect($result['call check'])->equals('get_terms called');
|
||||
expect($result['arguments'][0])->equals($args['taxonomy']);
|
||||
expect($result['arguments'][1])->equals(array_diff_key($args, ['taxonomy' => '']));
|
||||
}
|
||||
|
||||
public function _after() {
|
||||
WPFunctions::set(new WPFunctions);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user