Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
CustomerLoggedInObserverTest.php
Go to the documentation of this file.
1 <?php
7 
9 use PHPUnit_Framework_MockObject_MockObject as MockObject;
10 
11 class CustomerLoggedInObserverTest extends \PHPUnit\Framework\TestCase
12 {
16  protected $observerMock;
17 
22 
27 
33  private $moduleManagerMock;
34 
40  private $cacheConfigMock;
41 
45  protected $taxHelperMock;
46 
50  private $addressManagerMock;
51 
55  protected $session;
56 
57  protected function setUp()
58  {
59  $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
60  $this->observerMock = $this->getMockBuilder(\Magento\Framework\Event\Observer::class)
61  ->disableOriginalConstructor()
62  ->setMethods([
63  'getCustomerAddress', 'getData'
64  ])
65  ->getMock();
66 
67  $this->groupRepositoryMock = $this->getMockBuilder(\Magento\Customer\Model\ResourceModel\GroupRepository::class)
68  ->disableOriginalConstructor()
69  ->getMock();
70 
71  $this->customerSessionMock = $this->getMockBuilder(\Magento\Customer\Model\Session::class)
72  ->disableOriginalConstructor()
73  ->setMethods([
74  'setCustomerTaxClassId', 'setDefaultTaxBillingAddress', 'setDefaultTaxShippingAddress', 'setWebsiteId'
75  ])
76  ->getMock();
77 
78  $this->moduleManagerMock = $this->getMockBuilder(\Magento\Framework\Module\Manager::class)
79  ->disableOriginalConstructor()
80  ->getMock();
81 
82  $this->cacheConfigMock = $this->getMockBuilder(\Magento\PageCache\Model\Config::class)
83  ->disableOriginalConstructor()
84  ->getMock();
85 
86  $this->taxHelperMock = $this->getMockBuilder(\Magento\Tax\Helper\Data::class)
87  ->disableOriginalConstructor()
88  ->getMock();
89 
90  $this->addressManagerMock = $this->getMockBuilder(TaxAddressManagerInterface::class)
91  ->setMethods(['setDefaultAddressAfterSave', 'setDefaultAddressAfterLogIn'])
92  ->disableOriginalConstructor()
93  ->getMock();
94 
95  $this->session = $objectManager->getObject(
96  \Magento\Tax\Observer\CustomerLoggedInObserver::class,
97  [
98  'groupRepository' => $this->groupRepositoryMock,
99  'customerSession' => $this->customerSessionMock,
100  'taxHelper' => $this->taxHelperMock,
101  'moduleManager' => $this->moduleManagerMock,
102  'cacheConfig' => $this->cacheConfigMock,
103  'addressManager' => $this->addressManagerMock,
104  ]
105  );
106  }
107 
111  public function testExecute()
112  {
113  $this->moduleManagerMock->expects($this->once())
114  ->method('isEnabled')
115  ->with('Magento_PageCache')
116  ->willReturn(true);
117 
118  $this->cacheConfigMock->expects($this->once())
119  ->method('isEnabled')
120  ->willReturn(true);
121 
122  $this->taxHelperMock->expects($this->any())
123  ->method('isCatalogPriceDisplayAffectedByTax')
124  ->willReturn(true);
125 
126  $customerMock = $this->getMockBuilder(\Magento\Customer\Model\Data\Customer::class)
127  ->disableOriginalConstructor()
128  ->getMock();
129 
130  $this->observerMock->expects($this->once())
131  ->method('getData')
132  ->with('customer')
133  ->willReturn($customerMock);
134 
135  $customerMock->expects($this->once())
136  ->method('getGroupId')
137  ->willReturn(1);
138 
139  /* @var \Magento\Customer\Api\Data\AddressInterface|\PHPUnit_Framework_MockObject_MockObject $address */
140  $address = $this->getMockBuilder(\Magento\Customer\Api\Data\AddressInterface::class)
141  ->disableOriginalConstructor()
142  ->getMock();
143 
144  $customerMock->expects($this->once())
145  ->method('getAddresses')
146  ->willReturn([$address]);
147 
148  $customerGroupMock = $this->getMockBuilder(\Magento\Customer\Model\Data\Group::class)
149  ->disableOriginalConstructor()
150  ->getMock();
151 
152  $this->groupRepositoryMock->expects($this->once())
153  ->method('getById')
154  ->with(1)
155  ->willReturn($customerGroupMock);
156 
157  $customerGroupMock->expects($this->once())
158  ->method('getTaxClassId')
159  ->willReturn(1);
160 
161  $this->customerSessionMock->expects($this->once())
162  ->method('setCustomerTaxClassId')
163  ->with(1);
164 
165  $this->addressManagerMock->expects($this->once())
166  ->method('setDefaultAddressAfterLogIn')
167  ->with([$address]);
168 
169  $this->session->execute($this->observerMock);
170  }
171 }
$objectManager
Definition: bootstrap.php:17
$address
Definition: customer.php:38