Skip to content

Commit 0476f83

Browse files
committed
Added tests for Preview Parameters.
1 parent 360ae41 commit 0476f83

File tree

9 files changed

+93
-54
lines changed

9 files changed

+93
-54
lines changed

plugins/hwp-previews/src/Plugin.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ public static function instance(): self {
3434

3535
/**
3636
* Fire off init action.
37+
*
38+
* @param \HWP\Previews\Plugin $instance the instance of the plugin class.
3739
*/
3840
do_action( 'hwp_previews_init', self::$instance );
3941

plugins/hwp-previews/src/Preview/Parameter/Contracts/Preview_Parameter_Interface.php

Lines changed: 0 additions & 33 deletions
This file was deleted.

plugins/hwp-previews/src/Preview/Parameter/Preview_Parameter.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,12 @@
44

55
namespace HWP\Previews\Preview\Parameter;
66

7-
use HWP\Previews\Preview\Parameter\Contracts\Preview_Parameter_Interface;
87
use WP_Post;
98

109
/**
1110
* Class Callable_Preview_Parameter.
1211
*/
13-
class Preview_Parameter implements Preview_Parameter_Interface {
12+
class Preview_Parameter {
1413
/**
1514
* The name of the parameter.
1615
*

plugins/hwp-previews/src/Preview/Parameter/Preview_Parameter_Registry.php

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
namespace HWP\Previews\Preview\Parameter;
66

7-
use HWP\Previews\Preview\Parameter\Contracts\Preview_Parameter_Interface;
7+
use HWP\Previews\Preview\Parameter\Preview_Parameter;
88
use WP_Post;
99

1010
/**
@@ -23,7 +23,7 @@ class Preview_Parameter_Registry {
2323
/**
2424
* Registered parameters.
2525
*
26-
* @var array<\HWP\Previews\Preview\Parameter\Contracts\Preview_Parameter_Interface>
26+
* @var array<\HWP\Previews\Preview\Parameter\Preview_Parameter>
2727
*/
2828
private array $parameters = [];
2929

@@ -72,9 +72,9 @@ public static function add_initial_parameters( self $instance ): self {
7272
/**
7373
* Register a parameter.
7474
*
75-
* @param \HWP\Previews\Preview\Parameter\Contracts\Preview_Parameter_Interface $parameter The parameter object.
75+
* @param \HWP\Previews\Preview\Parameter\Preview_Parameter $parameter The parameter object.
7676
*/
77-
public function register( Preview_Parameter_Interface $parameter ): self {
77+
public function register( Preview_Parameter $parameter ): self {
7878
$this->parameters[ $parameter->get_name() ] = $parameter;
7979

8080
return $this;
@@ -93,15 +93,6 @@ public function unregister( string $name ): self {
9393
return $this;
9494
}
9595

96-
/**
97-
* Get all registered parameters.
98-
*
99-
* @return array<string, \HWP\Previews\Preview\Parameter\Contracts\Preview_Parameter_Interface>
100-
*/
101-
public function get_all(): array {
102-
return $this->parameters;
103-
}
104-
10596
/**
10697
* Get all registered parameters as an array of their names and descriptions.
10798
*
@@ -121,7 +112,7 @@ public function get_descriptions(): array {
121112
*
122113
* @param string $name The parameter name.
123114
*/
124-
public function get( string $name ): ?Preview_Parameter_Interface {
115+
public function get( string $name ): ?Preview_Parameter {
125116
return $this->parameters[ $name ] ?? null;
126117
}
127118
}

plugins/hwp-previews/src/Preview/Url/Preview_Url_Resolver_Service.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
namespace HWP\Previews\Preview\Url;
66

7-
use HWP\Previews\Preview\Parameter\Contracts\Preview_Parameter_Interface;
7+
use HWP\Previews\Preview\Parameter\Preview_Parameter;
88
use HWP\Previews\Preview\Parameter\Preview_Parameter_Registry;
99
use WP_Post;
1010

@@ -63,7 +63,7 @@ public function resolve( WP_Post $post, string $url ): ?string {
6363
*/
6464
public function resolve_token( string $key, WP_Post $post ): string {
6565
$parameter = $this->parameter_registry->get( $key );
66-
if ( ! $parameter instanceof Preview_Parameter_Interface ) {
66+
if ( ! $parameter instanceof Preview_Parameter ) {
6767
return self::PLACEHOLDER_NOT_FOUND;
6868
}
6969

plugins/hwp-previews/tests/wpunit/Integration/FaustIntegrationTest.php

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,6 @@ public function test_init_returns_singleton_instance(): void {
3535
$this->assertSame( $instance1, $instance2, 'init() should return the same singleton instance' );
3636
}
3737

38-
// public function test_is_faust_enabled_asserts_false() {
39-
//
40-
// }
4138

4239
public function test_is_faust_enabled_asserts_true() {
4340

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
<?php
2+
3+
declare( strict_types=1 );
4+
5+
namespace HWP\Previews\Tests\Unit\Preview\Parameter;
6+
7+
use HWP\Previews\Preview\Parameter\Preview_Parameter;
8+
use HWP\Previews\Preview\Parameter\Preview_Parameter_Registry;
9+
use lucatume\WPBrowser\TestCase\WPTestCase;
10+
use ReflectionClass;
11+
12+
class Preview_Parameter_Registry_Test extends WPTestCase {
13+
14+
15+
public function test_instance_creates_and_sets_up_preview_parameter_registry_when_not_set() {
16+
$reflection = new ReflectionClass( Preview_Parameter_Registry::class );
17+
$instanceProperty = $reflection->getProperty( 'instance' );
18+
$instanceProperty->setAccessible( true );
19+
$instanceProperty->setValue( null );
20+
21+
$this->assertNull( $instanceProperty->getValue() );
22+
$instance = Preview_Parameter_Registry::get_instance();
23+
24+
$this->assertInstanceOf( Preview_Parameter_Registry::class, $instanceProperty->getValue() );
25+
$this->assertSame( $instance, $instanceProperty->getValue(), 'Preview_Parameter_Registry::get_instance() should set the static instance property' );
26+
}
27+
28+
public function test_registering_new_parameter() {
29+
$registry = Preview_Parameter_Registry::get_instance();
30+
$registry->register(
31+
new Preview_Parameter( 'test_param', static fn() => 'test_value', 'Test parameter' )
32+
);
33+
34+
$parameter = $registry->get( 'test_param' );
35+
$this->assertInstanceOf( Preview_Parameter::class, $parameter );
36+
$this->assertSame( 'test_param', $parameter->get_name() );
37+
$this->assertSame( 'test_value', $parameter->get_value( new \WP_Post( (object) [ 'ID' => 1 ] ) ) );
38+
39+
$registry->unregister( 'test_param' );
40+
$this->assertNull( $registry->get( 'test_param' ) );
41+
}
42+
43+
44+
public function test_get_all_descriptions() {
45+
$registry = Preview_Parameter_Registry::get_instance();
46+
$descriptions = $registry->get_descriptions();
47+
$this->assertNotEmpty( $descriptions );
48+
}
49+
50+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<?php
2+
3+
declare( strict_types=1 );
4+
5+
namespace HWP\Previews\Tests\Unit\Preview\Parameter;
6+
7+
use HWP\Previews\Preview\Parameter\Preview_Parameter;
8+
use lucatume\WPBrowser\TestCase\WPTestCase;
9+
use WP_Post;
10+
11+
class Preview_Parameter_Test extends WPTestCase {
12+
13+
14+
public function test_create_instance_check_name_description() {
15+
$preview = new Preview_Parameter('ID', static fn( WP_Post $post ) => (string) $post->ID, 'Post ID.');
16+
$this->assertEquals( 'Post ID.', $preview->get_description() );
17+
$this->assertEquals( 'ID', $preview->get_name() );
18+
}
19+
20+
public function test_create_instance_get_value() {
21+
$preview = new Preview_Parameter('status', static fn( WP_Post $post ) => $post->post_status, 'The post status.');
22+
23+
$post = WPTestCase::factory()->post->create_and_get( [
24+
'post_title' => 'Test Post',
25+
'post_status' => 'publish',
26+
'post_content' => 'This is a test post.',
27+
] );
28+
29+
$this->assertEquals($post->post_status, $preview->get_value($post));
30+
}
31+
}

plugins/hwp-previews/tests/wpunit/Preview/Url/PreviewUrlResolverServiceTest.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,6 @@ public function test_class_instance(): void {
1919

2020
$this->assertInstanceOf(Preview_Url_Resolver_Service::class, $service);
2121
}
22+
23+
// @TODO add more tests for resolve method
2224
}

0 commit comments

Comments
 (0)