From 295eca88c274ab128c632f201941b80e97f6476f Mon Sep 17 00:00:00 2001 From: "anton.karunarathne" Date: Thu, 22 Feb 2024 15:00:36 +1030 Subject: [PATCH 1/4] BEG-144: unit test implementation changes --- Helper/Config.php | 6 +-- Test/Unit/Helper/ConfigTest.php | 83 +++++++++++++++++++++++++++++++++ 2 files changed, 86 insertions(+), 3 deletions(-) create mode 100644 Test/Unit/Helper/ConfigTest.php diff --git a/Helper/Config.php b/Helper/Config.php index e669132..0284f70 100644 --- a/Helper/Config.php +++ b/Helper/Config.php @@ -12,9 +12,9 @@ class Config { - private const XML_PATH_RECACHE_ENABLED = 'system/prerender/enabled'; - private const XML_PATH_PRERENDER_TOKEN = 'system/prerender/token'; - private const XML_PATH_RECACHE_SERVICE_URL = 'system/prerender/service_url'; + public const XML_PATH_RECACHE_ENABLED = 'system/prerender/enabled'; + public const XML_PATH_PRERENDER_TOKEN = 'system/prerender/token'; + public const XML_PATH_RECACHE_SERVICE_URL = 'system/prerender/service_url'; /** @var ScopeConfigInterface */ private ScopeConfigInterface $scopeConfig; diff --git a/Test/Unit/Helper/ConfigTest.php b/Test/Unit/Helper/ConfigTest.php new file mode 100644 index 0000000..aee14f7 --- /dev/null +++ b/Test/Unit/Helper/ConfigTest.php @@ -0,0 +1,83 @@ +scopeConfigMock = $this->getMockForAbstractClass(ScopeConfigInterface::class); + $this->helper = new Config($this->scopeConfigMock); + } + + /** + * Test isRecacheEnabled() + */ + public function testIsRecacheEnabled(): void + { + $this->scopeConfigMock->expects($this->any()) + ->method('isSetFlag') + ->willReturn(true); + + $this->assertIsBool($this->helper->isRecacheEnabled()); + } + + /** + * Test if is not recache Enabled + */ + public function testIsNotRecacheEnabled(): void + { + $this->scopeConfigMock->expects($this->any()) + ->method('isSetFlag') + ->willReturn(false); + + $this->assertIsBool($this->helper->isRecacheEnabled()); + } + + /** + * Test getToken() + */ + public function testGetToken(): void + { + $this->scopeConfigMock->expects($this->any()) + ->method('getValue') + ->with(Config::XML_PATH_PRERENDER_TOKEN) + ->willReturn('Pi7g7R7pNtDfgsDy1'); + + $this->assertIsString($this->helper->getToken()); + } + + /** + * Test getPrerenderServiceUrl() + */ + public function testGetPrerenderServiceUrl(): void + { + $this->scopeConfigMock->expects($this->once()) + ->method('getValue') + ->with(Config::XML_PATH_RECACHE_SERVICE_URL) + ->willReturn('https://api.prerender.io/recache'); + + $this->assertIsString($this->helper->getPrerenderServiceUrl()); + } +} From c3991ef44fb00de10c1af3f4f4a026d21deb8868 Mon Sep 17 00:00:00 2001 From: "anton.karunarathne" Date: Thu, 22 Feb 2024 17:01:50 +1030 Subject: [PATCH 2/4] BEG-144: unit test implementation changes --- Test/Unit/Api/PrerenderClientTest.php | 136 ++++++++++++++++++++++++++ Test/Unit/Helper/ConfigTest.php | 4 + 2 files changed, 140 insertions(+) create mode 100644 Test/Unit/Api/PrerenderClientTest.php diff --git a/Test/Unit/Api/PrerenderClientTest.php b/Test/Unit/Api/PrerenderClientTest.php new file mode 100644 index 0000000..1a8b5bf --- /dev/null +++ b/Test/Unit/Api/PrerenderClientTest.php @@ -0,0 +1,136 @@ +scopeConfigMock = $this->getMockForAbstractClass(ScopeConfigInterface::class); + $this->prerenderConfigHelperMock = $this->getMockBuilder(Config::class) + ->setMethods(['isRecacheEnabled','getToken','getPrerenderServiceUrl']) + ->disableOriginalConstructor() + ->getMock(); + + $clientMock = $this->getMockForAbstractClass(ClientInterface::class); + $clientMock->expects($this->any()) + ->method('post') + ->willReturnSelf(); + + $jsonSerializerMock = $this->getMockForAbstractClass(SerializerInterface::class); + $jsonSerializerMock->expects($this->any()) + ->method('serialize') + ->willReturn( + '{"prerenderToken":"Pi7g7R7pNtDfgsDy1","urls":["abc.html","cde.html"]}' + ); + + $loggerMock = $this->getMockForAbstractClass(LoggerInterface::class); + $this->prerenderClient = new PrerenderClient( + $this->prerenderConfigHelperMock, + $clientMock, + $jsonSerializerMock, + $loggerMock + ); + } + + /** + * test for recacheUrls method + * + * @return void + */ + public function testRecacheUrls(): void + { + $this->prerenderConfigHelperMock->expects($this->any()) + ->method('isRecacheEnabled') + ->willReturn(true); + + $this->prerenderConfigHelperMock->expects($this->any()) + ->method('getToken') + ->willReturn('Pi7g7R7pNtDfgsDy1'); + + $this->prerenderConfigHelperMock->expects($this->any()) + ->method('getPrerenderServiceUrl') + ->willReturn('https://api.prerender.io/recache'); + + $this->prerenderClient->recacheUrls( + [ + 'abc.html', + 'cde.html', + ], + 1 + ); + } + + /** + * test empty token + * + * @return void + */ + public function testEmptyToken(): void + { + $this->prerenderConfigHelperMock->expects($this->any()) + ->method('isRecacheEnabled') + ->willReturn(true); + $this->prerenderConfigHelperMock->expects($this->any()) + ->method('getToken') + ->willReturn(''); + + $this->prerenderClient->recacheUrls( + [ + 'abc.html', + 'cde.html', + ], + 1 + ); + } + + /** + * test empty PrerenderServiceUrl + * + * @return void + */ + public function testEmptyPrerenderServiceUrl(): void + { + $this->prerenderConfigHelperMock->expects($this->any()) + ->method('isRecacheEnabled') + ->willReturn(true); + $this->prerenderConfigHelperMock->expects($this->any()) + ->method('getToken') + ->willReturn('Pi7g7R7pNtDfgsDy1'); + + $this->prerenderConfigHelperMock->expects($this->any()) + ->method('getPrerenderServiceUrl') + ->willReturn(''); + + $this->prerenderClient->recacheUrls( + [ + 'abc.html', + 'cde.html', + ], + 1 + ); + } +} diff --git a/Test/Unit/Helper/ConfigTest.php b/Test/Unit/Helper/ConfigTest.php index aee14f7..78f00bc 100644 --- a/Test/Unit/Helper/ConfigTest.php +++ b/Test/Unit/Helper/ConfigTest.php @@ -1,4 +1,8 @@ Date: Fri, 23 Feb 2024 10:03:04 +1030 Subject: [PATCH 3/4] BEG-144: unit test implementation changes --- Test/Unit/Api/PrerenderClientTest.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Test/Unit/Api/PrerenderClientTest.php b/Test/Unit/Api/PrerenderClientTest.php index 1a8b5bf..4aad98b 100644 --- a/Test/Unit/Api/PrerenderClientTest.php +++ b/Test/Unit/Api/PrerenderClientTest.php @@ -6,8 +6,9 @@ declare(strict_types=1); -namespace Aligent\Prerender\Model\Api; +namespace Aligent\Prerender\Test\Unit\Api; +use Aligent\Prerender\Model\Api\PrerenderClient; use Aligent\Prerender\Helper\Config; use Magento\Framework\App\Config\ScopeConfigInterface; use Magento\Framework\HTTP\ClientInterface; From 9d929e1031f2517c33f26657ae9ad22f2f7a3ebf Mon Sep 17 00:00:00 2001 From: "anton.karunarathne" Date: Fri, 23 Feb 2024 10:57:18 +1030 Subject: [PATCH 4/4] BEG-144: code refinement changes --- Test/Unit/Api/PrerenderClientTest.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Test/Unit/Api/PrerenderClientTest.php b/Test/Unit/Api/PrerenderClientTest.php index 4aad98b..7cf2934 100644 --- a/Test/Unit/Api/PrerenderClientTest.php +++ b/Test/Unit/Api/PrerenderClientTest.php @@ -23,7 +23,11 @@ class PrerenderClientTest extends TestCase */ private PrerenderClient $prerenderClient; - private $prerenderConfigHelperMock; + + /** + * @var Config + */ + private Config $prerenderConfigHelperMock; /** * @inheritDoc