Completed
Push — add/handling-connection-errors ( 76997e...1b4c4d )
by
unknown
331:58 queued 323:55
created

WP_Test_Autoloader   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 80
Duplicated Lines 36.25 %

Coupling/Cohesion

Components 1
Dependencies 1

Importance

Changes 0
Metric Value
dl 29
loc 80
rs 10
c 0
b 0
f 0
wmc 6
lcom 1
cbo 1

6 Methods

Rating   Name   Duplication   Size   Complexity  
A setup() 0 6 1
A tearDown() 0 6 1
A test_enqueueing_adds_to_the_global_array() 8 8 1
A test_enqueueing_adds_the_latest_version_to_the_global_array() 10 10 1
A test_enqueueing_always_adds_the_dev_version_to_the_global_array() 11 11 1
A test_enqueue_class_to_autoload_works_as_expected() 0 7 1

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
<?php // phpcs:ignore WordPress.Files.FileName
2
/**
3
 * Testing file for the autoloader.
4
 *
5
 * @package automattic/jetpack-autoloader
6
 */
7
8
use Automattic\Jetpack\Autoloader as Autoloader;
9
use PHPUnit\Framework\TestCase;
10
use Jetpack\TestCase_ABC\ClassName_ABC;
11
12
/**
13
 * Class WP_Test_Autoloader
14
 */
15
class WP_Test_Autoloader extends TestCase {
16
	/**
17
	 * Jetpack package classes.
18
	 *
19
	 * @var $jetpack_packages_classes
20
	 */
21
	public static $jetpack_packages_classes;
22
23
	/**
24
	 * Test setup.
25
	 */
26
	public function setup() {
27
		parent::setup();
28
		global $jetpack_packages_classes;
29
		self::$jetpack_packages_classes = $jetpack_packages_classes;
30
		$jetpack_packages_classes       = array();
31
	}
32
33
	/**
34
	 * Test tear down.
35
	 */
36
	public function tearDown() {
37
		parent::tearDown();
38
		// re-apply the global.
39
		global $jetpack_packages_classes;
40
		$jetpack_packages_classes = self::$jetpack_packages_classes;
41
	}
42
43
	/**
44
	 * Ensure enqueuing adds to the global array.
45
	 */
46 View Code Duplication
	public function test_enqueueing_adds_to_the_global_array() {
47
		Autoloader\enqueue_package_class( 'className', '1', 'path_to_class' );
48
49
		global $jetpack_packages_classes;
50
		$this->assertTrue( isset( $jetpack_packages_classes['className'] ) );
51
		$this->assertEquals( $jetpack_packages_classes['className']['version'], '1' );
52
		$this->assertEquals( $jetpack_packages_classes['className']['path'], 'path_to_class' );
53
	}
54
55
	/**
56
	 * Tests that the latest version is added to the global array.
57
	 */
58 View Code Duplication
	public function test_enqueueing_adds_the_latest_version_to_the_global_array() {
59
		Autoloader\enqueue_package_class( 'className', '1', 'path_to_class' );
60
		Autoloader\enqueue_package_class( 'className', '2', 'path_to_class_v2' );
61
62
		global $jetpack_packages_classes;
63
		$this->assertTrue( isset( $jetpack_packages_classes['className'] ) );
64
		$this->assertEquals( $jetpack_packages_classes['className']['version'], '2' );
65
		$this->assertEquals( $jetpack_packages_classes['className']['path'], 'path_to_class_v2' );
66
67
	}
68
69
	/**
70
	 * Tests that the dev version is added to the global array.
71
	 */
72 View Code Duplication
	public function test_enqueueing_always_adds_the_dev_version_to_the_global_array() {
73
74
		Autoloader\enqueue_package_class( 'className', '1', 'path_to_class' );
75
		Autoloader\enqueue_package_class( 'className', 'dev-howdy', 'path_to_class_dev' );
76
		Autoloader\enqueue_package_class( 'className', '2', 'path_to_class_v2' );
77
78
		global $jetpack_packages_classes;
79
		$this->assertTrue( isset( $jetpack_packages_classes['className'] ) );
80
		$this->assertEquals( $jetpack_packages_classes['className']['version'], 'dev-howdy' );
81
		$this->assertEquals( $jetpack_packages_classes['className']['path'], 'path_to_class_dev' );
82
	}
83
84
	/**
85
	 * Ensures that an autoloaded class is available.
86
	 */
87
	public function test_enqueue_class_to_autoload_works_as_expected() {
88
		Autoloader\enqueue_package_class( 'Jetpack\TestCase_ABC\ClassName_ABC', '1', dirname( __FILE__ ) . '/path_to_class.php' );
89
90
		$class = new ClassName_ABC();
91
92
		$this->assertTrue( $class->return_true() );
93
	}
94
}
95