From 3d9e05a1e3f3386ca01c9f3ee2e93efecbacc464 Mon Sep 17 00:00:00 2001 From: Yaroslav Rogoza Date: Wed, 25 Jul 2018 18:25:35 +0200 Subject: [PATCH 1/5] Added unit test for order success observer in GA --- ...ticsOnOrderSuccessPageViewObserverTest.php | 124 ++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 app/code/Magento/GoogleAnalytics/Test/Unit/Observer/SetGoogleAnalyticsOnOrderSuccessPageViewObserverTest.php diff --git a/app/code/Magento/GoogleAnalytics/Test/Unit/Observer/SetGoogleAnalyticsOnOrderSuccessPageViewObserverTest.php b/app/code/Magento/GoogleAnalytics/Test/Unit/Observer/SetGoogleAnalyticsOnOrderSuccessPageViewObserverTest.php new file mode 100644 index 0000000000000..d1b1da51e87e9 --- /dev/null +++ b/app/code/Magento/GoogleAnalytics/Test/Unit/Observer/SetGoogleAnalyticsOnOrderSuccessPageViewObserverTest.php @@ -0,0 +1,124 @@ +googleAnalyticsDataMock = $this->getMockBuilder(GaDataHelper::class) + ->disableOriginalConstructor() + ->getMock(); + $this->storeManagerMock = $this->getMockBuilder(StoreManagerInterface::class) + ->disableOriginalConstructor() + ->getMock(); + $this->layoutMock = $this->getMockBuilder(LayoutInterface::class) + ->disableOriginalConstructor() + ->getMock(); + $this->observerMock = $this->getMockBuilder(Observer::class)->getMock(); + $this->eventMock = $this->getMockBuilder(Event::class)->getMock(); + + + $objectManager = new ObjectManager($this); + + $this->orderSuccessObserver = $objectManager->getObject( + SetGoogleAnalyticsOnOrderSuccessPageViewObserver::class, + [ + 'storeManager' => $this->storeManagerMock, + 'layout' => $this->layoutMock, + 'googleAnalyticsData' => $this->googleAnalyticsDataMock + ] + ); + } + + public function testExecuteWithNoOrderIds() + { + $this->observerMock->expects($this->once()) + ->method('getEvent') + ->willReturn($this->eventMock); + $this->eventMock->expects($this->once()) + ->method('__call') + ->with( + $this->equalTo('getOrderIds') + ) + ->willReturn([]); + $this->layoutMock->expects($this->never()) + ->method('getBlock'); + + $this->orderSuccessObserver->execute($this->observerMock); + } + + public function testExecuteWithOrderIds() + { + $blockMock = $this->getMockBuilder(AbstractBlock::class) + ->disableOriginalConstructor() + ->getMock(); + $orderIds = [8]; + + $this->observerMock->expects($this->once()) + ->method('getEvent') + ->willReturn($this->eventMock); + $this->eventMock->expects($this->once()) + ->method('__call') + ->with( + $this->equalTo('getOrderIds') + ) + ->willReturn($orderIds); + $this->layoutMock->expects($this->once()) + ->method('getBlock') + ->willReturn($blockMock); + $blockMock->expects($this->once()) + ->method('__call') + ->with( + $this->equalTo('setOrderIds'), + $this->equalTo([$orderIds]) + ); + + $this->orderSuccessObserver->execute($this->observerMock); + } +} From cc30ddabf34d14c283ede7e7cdaf51b24bf6c780 Mon Sep 17 00:00:00 2001 From: Yaroslav Rogoza Date: Wed, 25 Jul 2018 18:28:47 +0200 Subject: [PATCH 2/5] Removed extra empty line --- .../SetGoogleAnalyticsOnOrderSuccessPageViewObserverTest.php | 1 - 1 file changed, 1 deletion(-) diff --git a/app/code/Magento/GoogleAnalytics/Test/Unit/Observer/SetGoogleAnalyticsOnOrderSuccessPageViewObserverTest.php b/app/code/Magento/GoogleAnalytics/Test/Unit/Observer/SetGoogleAnalyticsOnOrderSuccessPageViewObserverTest.php index d1b1da51e87e9..34f71dd53391d 100644 --- a/app/code/Magento/GoogleAnalytics/Test/Unit/Observer/SetGoogleAnalyticsOnOrderSuccessPageViewObserverTest.php +++ b/app/code/Magento/GoogleAnalytics/Test/Unit/Observer/SetGoogleAnalyticsOnOrderSuccessPageViewObserverTest.php @@ -63,7 +63,6 @@ protected function setUp() $this->observerMock = $this->getMockBuilder(Observer::class)->getMock(); $this->eventMock = $this->getMockBuilder(Event::class)->getMock(); - $objectManager = new ObjectManager($this); $this->orderSuccessObserver = $objectManager->getObject( From 1e7e7a9cefe983b68f15f36198f9dd57d2ef4936 Mon Sep 17 00:00:00 2001 From: Yaroslav Rogoza Date: Tue, 7 Aug 2018 11:23:12 +0200 Subject: [PATCH 3/5] Added unit test for instant purchase paypal token formatter --- .../PayPal/TokenFormatterTest.php | 92 +++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 app/code/Magento/Braintree/Test/Unit/Model/InstantPurchase/PayPal/TokenFormatterTest.php diff --git a/app/code/Magento/Braintree/Test/Unit/Model/InstantPurchase/PayPal/TokenFormatterTest.php b/app/code/Magento/Braintree/Test/Unit/Model/InstantPurchase/PayPal/TokenFormatterTest.php new file mode 100644 index 0000000000000..ebb9a3e8bfb59 --- /dev/null +++ b/app/code/Magento/Braintree/Test/Unit/Model/InstantPurchase/PayPal/TokenFormatterTest.php @@ -0,0 +1,92 @@ + 'visa', + 'maskedCC' => '4444************9999', + 'expirationDate' => '07-07-2025' + ]; + + protected function setUp() + { + $this->paymentTokenMock = $this->getMockBuilder(PaymentTokenInterface::class) + ->getMockForAbstractClass(); + + $this->paypalTokenFormatter = new PaypalTokenFormatter(); + } + + public function testFormatPaymentTokenWithKnownCardType() + { + $this->tokenDetails['type'] = key(PaypalTokenFormatter::$baseCardTypes); + $this->paymentTokenMock->expects($this->once()) + ->method('getTokenDetails') + ->willReturn(json_encode($this->tokenDetails)); + + $formattedString = sprintf( + '%s: %s, %s: %s (%s: %s)', + __('Credit Card'), + reset(PaypalTokenFormatter::$baseCardTypes), + __('ending'), + $this->tokenDetails['maskedCC'], + __('expires'), + $this->tokenDetails['expirationDate'] + ); + + self::assertEquals($formattedString, $this->paypalTokenFormatter->formatPaymentToken($this->paymentTokenMock)); + } + + public function testFormatPaymentTokenWithUnknownCardType() + { + $this->paymentTokenMock->expects($this->once()) + ->method('getTokenDetails') + ->willReturn(json_encode($this->tokenDetails)); + + $formattedString = sprintf( + '%s: %s, %s: %s (%s: %s)', + __('Credit Card'), + $this->tokenDetails['type'], + __('ending'), + $this->tokenDetails['maskedCC'], + __('expires'), + $this->tokenDetails['expirationDate'] + ); + + self::assertEquals($formattedString, $this->paypalTokenFormatter->formatPaymentToken($this->paymentTokenMock)); + } + + public function testFormatPaymentTokenWithWrongData() + { + unset($this->tokenDetails['type']); + + $this->paymentTokenMock->expects($this->once()) + ->method('getTokenDetails') + ->willReturn(json_encode($this->tokenDetails)); + self::expectException('\InvalidArgumentException'); + + $this->paypalTokenFormatter->formatPaymentToken($this->paymentTokenMock); + } +} From 85db501cd2d470c766c408bf115d87e07df1cba0 Mon Sep 17 00:00:00 2001 From: Yaroslav Rogoza Date: Sun, 5 Aug 2018 12:00:38 +0200 Subject: [PATCH 4/5] Added unit test for TransactionVoid class --- .../Http/Client/TransactionVoidTest.php | 86 +++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 app/code/Magento/Braintree/Test/Unit/Gateway/Http/Client/TransactionVoidTest.php diff --git a/app/code/Magento/Braintree/Test/Unit/Gateway/Http/Client/TransactionVoidTest.php b/app/code/Magento/Braintree/Test/Unit/Gateway/Http/Client/TransactionVoidTest.php new file mode 100644 index 0000000000000..8291806d2a6e0 --- /dev/null +++ b/app/code/Magento/Braintree/Test/Unit/Gateway/Http/Client/TransactionVoidTest.php @@ -0,0 +1,86 @@ +getMockForAbstractClass(LoggerInterface::class); + /** @var Logger|\PHPUnit_Framework_MockObject_MockObject $loggerMock */ + $loggerMock = $this->getMockBuilder(Logger::class) + ->disableOriginalConstructor() + ->getMock(); + $this->adapterMock = $this->getMockBuilder(BraintreeAdapter::class) + ->disableOriginalConstructor() + ->getMock(); + /** @var BraintreeAdapterFactory|MockObject $adapterFactoryMock */ + $adapterFactoryMock = $this->getMockBuilder(BraintreeAdapterFactory::class) + ->disableOriginalConstructor() + ->getMock(); + $adapterFactoryMock->method('create') + ->willReturn($this->adapterMock); + + $this->transactionVoidModel = new TransactionVoid($criticalLoggerMock, $loggerMock, $adapterFactoryMock); + } + + /** + * @throws ClientException + * @throws ConverterException + */ + public function testVoidRequestWithStoreId() + { + $transactionId = '11223344'; + $data = [ + 'store_id' => 0, + 'transaction_id' => $transactionId + ]; + $successfulResponse = new Successful(); + + /** @var TransferInterface|\PHPUnit_Framework_MockObject_MockObject $transferObjectMock */ + $transferObjectMock = $this->createMock(TransferInterface::class); + $transferObjectMock->method('getBody') + ->willReturn($data); + $this->adapterMock->expects($this->once()) + ->method('void') + ->with($transactionId) + ->willReturn($successfulResponse); + + $response = $this->transactionVoidModel->placeRequest($transferObjectMock); + + self::assertEquals($successfulResponse, $response['object']); + } +} From 213480c59b833948175de7938c9e4f3f59aa2315 Mon Sep 17 00:00:00 2001 From: Yaroslav Rogoza Date: Sun, 5 Aug 2018 12:12:37 +0200 Subject: [PATCH 5/5] Added unit test for TransactionRefundTest class --- .../Http/Client/TransactionRefundTest.php | 89 +++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 app/code/Magento/Braintree/Test/Unit/Gateway/Http/Client/TransactionRefundTest.php diff --git a/app/code/Magento/Braintree/Test/Unit/Gateway/Http/Client/TransactionRefundTest.php b/app/code/Magento/Braintree/Test/Unit/Gateway/Http/Client/TransactionRefundTest.php new file mode 100644 index 0000000000000..038687d8821d7 --- /dev/null +++ b/app/code/Magento/Braintree/Test/Unit/Gateway/Http/Client/TransactionRefundTest.php @@ -0,0 +1,89 @@ +getMockForAbstractClass(LoggerInterface::class); + /** @var Logger|\PHPUnit_Framework_MockObject_MockObject $loggerMock */ + $loggerMock = $this->getMockBuilder(Logger::class) + ->disableOriginalConstructor() + ->getMock(); + $this->adapterMock = $this->getMockBuilder(BraintreeAdapter::class) + ->disableOriginalConstructor() + ->getMock(); + /** @var BraintreeAdapterFactory|MockObject $adapterFactoryMock */ + $adapterFactoryMock = $this->getMockBuilder(BraintreeAdapterFactory::class) + ->disableOriginalConstructor() + ->getMock(); + $adapterFactoryMock->method('create') + ->willReturn($this->adapterMock); + + $this->transactionRefundModel = new TransactionRefund($criticalLoggerMock, $loggerMock, $adapterFactoryMock); + } + + /** + * @throws ClientException + * @throws ConverterException + */ + public function testRefundRequestWithStoreId() + { + $transactionId = '11223344'; + $refundAmount = 10; + $data = [ + 'store_id' => 0, + 'transaction_id' => $transactionId, + PaymentDataBuilder::AMOUNT => $refundAmount + ]; + $successfulResponse = new Successful(); + + /** @var TransferInterface|\PHPUnit_Framework_MockObject_MockObject $transferObjectMock */ + $transferObjectMock = $this->createMock(TransferInterface::class); + $transferObjectMock->method('getBody') + ->willReturn($data); + $this->adapterMock->expects($this->once()) + ->method('refund') + ->with($transactionId, $refundAmount) + ->willReturn($successfulResponse); + + $response = $this->transactionRefundModel->placeRequest($transferObjectMock); + + self::assertEquals($successfulResponse, $response['object']); + } +}