Skip to content

Commit 91344bf

Browse files
Add tests
1 parent 574ad39 commit 91344bf

File tree

2 files changed

+90
-1
lines changed

2 files changed

+90
-1
lines changed
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
<?php
2+
3+
namespace SkyVerge\WooCommerce\PluginFramework\v5_15_4\Tests\unit\Helpers;
4+
5+
use Generator;
6+
use Mockery;
7+
use SkyVerge\WooCommerce\PluginFramework\v5_15_4\Helpers\PageHelper;
8+
use SkyVerge\WooCommerce\PluginFramework\v5_15_4\Tests\TestCase;
9+
10+
/**
11+
* @coversDefaultClass \SkyVerge\WooCommerce\PluginFramework\v5_15_4\Helpers\PageHelper
12+
*/
13+
final class PageHelperTest extends TestCase
14+
{
15+
/**
16+
* @covers ::isWooCommerceAnalyticsPage()
17+
* @dataProvider providerCanDetermineIsWooCommerceAnalyticsPage
18+
* @throws \ReflectionException
19+
*/
20+
public function testCanDetermineIsWooCommerceAnalyticsPage($pageData, bool $expected) : void
21+
{
22+
$pageController = Mockery::mock(\Automattic\WooCommerce\Admin\PageController::class);
23+
$pageController->expects('get_current_page')
24+
->once()
25+
->andReturn($pageData);
26+
27+
$this->mockStaticMethod(PageHelper::class, 'getWooCommercePageController')
28+
->once()
29+
->andReturn($pageController);
30+
31+
$this->assertSame($expected, PageHelper::isWooCommerceAnalyticsPage());
32+
}
33+
34+
/** @see testCanDetermineIsWooCommerceAnalyticsPage */
35+
public function providerCanDetermineIsWooCommerceAnalyticsPage() : Generator
36+
{
37+
yield 'no page data' => [
38+
'pageData' => false,
39+
'expected' => false,
40+
];
41+
42+
yield 'woocommerce home' => [
43+
'pageData' => [
44+
'id' => 'woocommerce-home',
45+
'parent' => 'woocommerce',
46+
],
47+
'expected' => false,
48+
];
49+
50+
yield 'orders page' => [
51+
'pageData' => [
52+
'id' => 'woocommerce-custom-orders',
53+
],
54+
'expected' => false,
55+
];
56+
57+
yield 'analytics overview' => [
58+
'pageData' => [
59+
'id' => 'woocommerce-analytics',
60+
'parent' => null,
61+
],
62+
'expected' => true,
63+
];
64+
65+
yield 'analytics revenue' => [
66+
'pageData' => [
67+
'id' => 'woocommerce-analytics-revenue',
68+
'parent' => 'woocommerce-analytics',
69+
],
70+
'expected' => true,
71+
];
72+
73+
yield 'analytics products' => [
74+
'pageData' => [
75+
'id' => 'woocommerce-analytics-products',
76+
'parent' => 'woocommerce-analytics',
77+
],
78+
'expected' => true,
79+
];
80+
}
81+
}

woocommerce/Helpers/PageHelper.php

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,17 @@ public static function isWooCommerceAnalyticsPage() : bool
3737
return false;
3838
}
3939

40-
$pageData = \Automattic\WooCommerce\Admin\PageController::get_instance()->get_current_page();
40+
$pageData = static::getWooCommercePageController()->get_current_page();
4141

4242
return ($pageData['id'] ?? '') === 'woocommerce-analytics' ||
4343
($pageData['parent'] ?? '') === 'woocommerce-analytics';
4444
}
45+
46+
/**
47+
* @codeCoverageIgnore
48+
*/
49+
protected static function getWooCommercePageController() : \Automattic\WooCommerce\Admin\PageController
50+
{
51+
return \Automattic\WooCommerce\Admin\PageController::get_instance();
52+
}
4553
}

0 commit comments

Comments
 (0)