Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
ObserverTest.php
Go to the documentation of this file.
1 <?php
8 
10 
11 class ObserverTest extends \PHPUnit\Framework\TestCase
12 {
16  private $observer;
17 
21  private $persistentSessionMock;
22 
26  private $customerRepositoryMock;
27 
31  private $customerViewHelperMock;
32 
36  private $escaperMock;
37 
41  private $layoutMock;
42 
46  private $sessionMock;
47 
48  protected function setUp()
49  {
50 
51  $objectManagerHelper = new ObjectManagerHelper($this);
52  $this->persistentSessionMock = $this->getMockBuilder(\Magento\Persistent\Helper\Session::class)
53  ->disableOriginalConstructor()
54  ->getMock();
55  $this->customerRepositoryMock = $this->getMockBuilder(\Magento\Customer\Api\CustomerRepositoryInterface::class)
56  ->disableOriginalConstructor()
57  ->getMock();
58  $this->customerViewHelperMock = $this->getMockBuilder(\Magento\Customer\Helper\View::class)
59  ->disableOriginalConstructor()
60  ->getMock();
61  $this->escaperMock = $this->getMockBuilder(\Magento\Framework\Escaper::class)
62  ->disableOriginalConstructor()
63  ->getMock();
64  $this->layoutMock = $this->getMockBuilder(\Magento\Framework\View\LayoutInterface::class)
65  ->disableOriginalConstructor()
66  ->getMock();
67  $this->sessionMock = $this->getMockBuilder(\Magento\Persistent\Helper\Session::class)
68  ->disableOriginalConstructor()
69  ->setMethods(['getCustomerId'])
70  ->getMock();
71  $this->observer = $objectManagerHelper->getObject(
72  \Magento\Persistent\Model\Observer::class,
73  [
74  'persistentSession' => $this->persistentSessionMock,
75  'customerRepository' => $this->customerRepositoryMock,
76  'customerViewHelper' => $this->customerViewHelperMock,
77  'escaper' => $this->escaperMock,
78  'layout' => $this->layoutMock
79  ]
80  );
81  }
82 
83  public function testEmulateWelcomeBlock()
84  {
85  $customerId = 1;
86  $customerName = 'Test Customer Name';
87  $welcomeMessage = __('Welcome, %1!', $customerName);
88  $customerMock = $this->getMockForAbstractClass(\Magento\Customer\Api\Data\CustomerInterface::class);
89  $block = $this->getMockBuilder(\Magento\Framework\View\Element\AbstractBlock::class)
90  ->disableOriginalConstructor()
91  ->setMethods(['setWelcome'])
92  ->getMock();
93  $headerAdditionalBlock = $this->getMockBuilder(\Magento\Framework\View\Element\AbstractBlock::class)
94  ->disableOriginalConstructor()
95  ->getMock();
96  $this->persistentSessionMock->expects($this->once())->method('getSession')->willReturn($this->sessionMock);
97  $this->sessionMock->expects($this->once())->method('getCustomerId')->willReturn($customerId);
98  $this->customerRepositoryMock
99  ->expects($this->once())
100  ->method('getById')
101  ->with($customerId)->willReturn($customerMock);
102  $this->customerViewHelperMock->expects($this->once())->method('getCustomerName')->willReturn($customerName);
103  $this->layoutMock->expects($this->once())
104  ->method('getBlock')
105  ->with('header.additional')
106  ->willReturn($headerAdditionalBlock);
107  $block->expects($this->once())->method('setWelcome')->with($welcomeMessage);
108  $this->observer->emulateWelcomeBlock($block);
109  }
110 }
$welcomeMessage
Definition: header.phtml:12
__()
Definition: __.php:13
$block
Definition: block.php:8