1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<?php
/**
* Test for \Magento\Paypal\Block\Billing\Agreement\View
*
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Paypal\Block\Billing\Agreement;
use Magento\TestFramework\Helper\Bootstrap;
class ViewTest extends \Magento\TestFramework\TestCase\AbstractBackendController
{
/** @var \Magento\Paypal\Block\Billing\Agreement\View */
protected $_block;
protected function setUp()
{
$this->_block = Bootstrap::getObjectManager()->create(\Magento\Paypal\Block\Billing\Agreement\View::class);
parent::setUp();
}
/**
* Test getting orders associated with specified billing agreement.
*
* Create two identical orders, associate one of them with billing agreement and invoke testGetRelatedOrders()
*
* @magentoDataFixture Magento/Customer/_files/customer.php
* @magentoDataFixture Magento/Paypal/_files/billing_agreement.php
* @magentoDataFixture Magento/Sales/_files/order.php
* @magentoDbIsolation enabled
* @magentoAppIsolation enabled
*/
public function testGetRelatedOrders()
{
/** Customer ID declared in the fixture */
$customerId = 1;
/** Assign first order to the active customer */
/** @var \Magento\Sales\Model\Order $orderA */
$orderA = Bootstrap::getObjectManager()->create(\Magento\Sales\Model\Order::class);
$orderA->loadByIncrementId('100000001');
$orderA->setCustomerIsGuest(false)->setCustomerId($customerId)->save();
/** @var \Magento\Customer\Model\Session $customerSession */
$customerSession = Bootstrap::getObjectManager()->create(\Magento\Customer\Model\Session::class);
$customerSession->setCustomerId($customerId);
/** Assign second order to the active customer */
$orderB = clone $orderA;
$orderB->setId(
null
)->setIncrementId(
'100000002'
)->setCustomerIsGuest(
false
)->setCustomerId(
$customerId
)->save();
/** @var \Magento\Customer\Model\Session $customerSession */
$customerSession = Bootstrap::getObjectManager()->create(\Magento\Customer\Model\Session::class);
$customerSession->setCustomerId($customerId);
/** @var \Magento\Paypal\Model\ResourceModel\Billing\Agreement\Collection $billingAgreementCollection */
$billingAgreementCollection = Bootstrap::getObjectManager()->create(
\Magento\Paypal\Model\ResourceModel\Billing\Agreement\Collection::class
);
/** @var \Magento\Paypal\Model\Billing\Agreement $billingAgreement */
$billingAgreement = $billingAgreementCollection->getFirstItem();
$billingAgreement->addOrderRelation($orderA->getId())->save();
$registry = Bootstrap::getObjectManager()->get(\Magento\Framework\Registry::class);
$registry->register('current_billing_agreement', $billingAgreement);
$relatedOrders = $this->_block->getRelatedOrders();
$this->assertEquals(1, $relatedOrders->count(), "Only one order must be returned.");
$this->assertEquals(
$orderA->getId(),
$relatedOrders->getFirstItem()->getId(),
"Invalid order returned as associated with billing agreement."
);
}
}