Skip to content

Commit

Permalink
use js_exclude_files from backend
Browse files Browse the repository at this point in the history
  • Loading branch information
mostafa-hisham committed Jul 13, 2023
1 parent 6f7824a commit 7cae091
Show file tree
Hide file tree
Showing 7 changed files with 154 additions and 8 deletions.
11 changes: 11 additions & 0 deletions inc/Engine/Optimization/DynamicLists/DynamicLists.php
Original file line number Diff line number Diff line change
Expand Up @@ -253,4 +253,15 @@ public function get_preload_exclusions(): array {
public function get_delayjs_list() {
return $this->providers['delayjslists']->data_manager->get_lists();
}

/**
* Get the JS minify excluded files
*
* @return array
*/
public function get_js_exclude_files(): array {
$lists = $this->providers['defaultlists']->data_manager->get_lists();

return isset( $lists->js_exclude_files ) ? $lists->js_exclude_files : [];
}
}
15 changes: 15 additions & 0 deletions inc/Engine/Optimization/DynamicLists/Subscriber.php
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ public static function get_subscribed_events() {
'rocket_move_after_combine_js' => 'add_move_after_combine_js',
'rocket_excluded_inline_js_content' => 'add_combine_js_excluded_inline',
'rocket_preload_exclude_urls' => 'add_preload_exclusions',
'rocket_exclude_js' => 'add_js_exclude_files',
];
}

Expand Down Expand Up @@ -174,4 +175,18 @@ public function add_preload_exclusions( $excluded = [] ): array {
return array_merge( $excluded, $this->dynamic_lists->get_preload_exclusions() );
}

/**
* Add the js files exclusions to the array
*
* @param array $js_files Array of files.
*
* @return array
*/
public function add_js_exclude_files( $js_files = [] ): array {
if ( ! is_array( $js_files ) ) {
$js_files = (array) $js_files;
}

return array_merge( $js_files, $this->dynamic_lists->get_js_exclude_files() );
}
}
9 changes: 1 addition & 8 deletions inc/Engine/Optimization/Minify/JS/AbstractJSOptimization.php
Original file line number Diff line number Diff line change
Expand Up @@ -47,14 +47,7 @@ public function __construct( Options_Data $options, AssetsLocalCache $local_cach
* @return string A list of files to exclude, ready to be used in a regex pattern.
*/
protected function get_excluded_files() {
$excluded_files = $this->options->get( 'exclude_js', [] );
$excluded_files[] = '/wp-includes/js/dist/i18n.min.js';
$excluded_files[] = '/interactive-3d-flipbook-powered-physics-engine/assets/js/html2canvas.min.js';
$excluded_files[] = '/interactive-3d-flipbook-powered-physics-engine/assets/js/pdf.min.js';
$excluded_files[] = '/interactive-3d-flipbook-powered-physics-engine/assets/js/three.min.js';
$excluded_files[] = '/interactive-3d-flipbook-powered-physics-engine/assets/js/3d-flip-book.min.js';
$excluded_files[] = '/google-site-kit/dist/assets/js/(.*)\.js';
$excluded_files[] = '/wp-live-chat-support/public/js/callus(.*)\.js';
$excluded_files = $this->options->get( 'exclude_js', [] );

/**
* Filter JS files to exclude from minification/concatenation.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<?php

return [
'shouldReturnEmptyArrayWhenNoMatchingProperty' => [
'list' => (object) [],
'expected' => [],
],
'shouldReturnArrayWhenMatchingProperty' => [
'list' => (object) [
'js_exclude_files' => [
'/test/1',
],
],
'expected' => [
'/test/1',
],
],
];
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<?php

return [
'shouldReturnUpdatedArrayWhenEmptyOriginal' => [
'original' => [],
'list' => (object) [
'js_exclude_files' => [
'/test/1',
],
],
'expected' => [
'/test/1',
],
],
'shouldReturnUpdatedArrayWhenNotEmptyOriginal' => [
'original' => [
'/test/',
],
'list' => (object) [
'js_exclude_files' => [
'/test/1',
],
],
'expected' => [
'/test/',
'/test/1',
],
],
];
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
<?php

namespace WP_Rocket\tests\Integration\inc\Engine\Optimization\DynamicLists\Subscriber;

use WP_Rocket\Tests\Integration\TestCase;

/**
* @covers \WP_Rocket\Engine\Optimization\DynamicLists\Subscriber::add_js_exclude_files()
*
* @group DynamicLists
*/
class Test_AddJsExcludeFiles extends TestCase {

public function set_up() {
parent::set_up();

$this->unregisterAllCallbacksExcept( 'rocket_exclude_js', 'add_js_exclude_files', 10 );
}

public function tear_down() {
delete_transient( 'wpr_dynamic_lists' );

$this->restoreWpFilter( 'rocket_exclude_js' );

parent::tear_down();
}

/**
* @dataProvider configTestData
*/
public function testShouldReturnExpected( $original, $list, $expected ) {
set_transient( 'wpr_dynamic_lists', $list, HOUR_IN_SECONDS );

$this->assertSame(
$expected,
apply_filters( 'rocket_exclude_js', $original )
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
<?php

namespace WP_Rocket\Tests\Unit\inc\Engine\Optimization\DynamicLists;

use Mockery;
use WP_Rocket\Engine\License\API\User;
use WP_Rocket\Engine\Admin\Beacon\Beacon;
use WP_Rocket\Engine\Optimization\DynamicLists\DefaultLists\APIClient;
use WP_Rocket\Engine\Optimization\DynamicLists\DefaultLists\DataManager;
use WP_Rocket\Engine\Optimization\DynamicLists\DynamicLists;
use WP_Rocket\Tests\Unit\TestCase;

/**
* @covers \WP_Rocket\Engine\Optimization\DynamicLists::get_js_exclude_files
*
* @group DynamicLists
*/
class Test_GetJsExcludeFiles extends TestCase {
/**
* @dataProvider configTestData
*/
public function testShouldReturnExpected( $list, $expected ) {
$data_manager = Mockery::mock( DataManager::class );
$providers = [
'defaultlists' =>
(object) [
'api_client' => Mockery::mock( APIClient::class ),
'data_manager' => $data_manager,
],
];
$dynamic_lists = new DynamicLists( $providers, Mockery::mock( User::class ), '', Mockery::mock( Beacon::class ) );

$data_manager->shouldReceive( 'get_lists' )
->andReturn( $list );

$this->assertSame(
$expected,
$dynamic_lists->get_js_exclude_files()
);
}
}

0 comments on commit 7cae091

Please sign in to comment.