Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
BlockRendererTest.php
Go to the documentation of this file.
1 <?php
7 
11 
12 class BlockRendererTest extends \PHPUnit\Framework\TestCase
13 {
17  private $renderer;
18 
22  private $blockTemplate;
23 
24  protected function setUp()
25  {
26  $this->blockTemplate = $this->getMockBuilder(
27  \Magento\Framework\View\Element\Message\Renderer\BlockRenderer\Template::class
28  )
29  ->disableOriginalConstructor()
30  ->getMock();
31 
32  $this->renderer = new BlockRenderer($this->blockTemplate);
33  }
34 
35  public function testRender()
36  {
38  $message = $this->createMock(\Magento\Framework\Message\MessageInterface::class);
39  $messageData = [
40  'painting' => 'The Last Supper',
41  'apostles_cnt' => 28,
42  'kangaroos_cnt' => 1
43  ];
44  $initializationData = ['template' => 'canvas.phtml'];
45  $messagePresentation = 'The Last Supper, Michelangelo.';
46 
47  $message->expects(static::once())
48  ->method('getData')
49  ->willReturn($messageData);
50  $this->blockTemplate->expects(new MethodInvokedAtIndex(0))
51  ->method('setTemplate')
52  ->with($initializationData['template']);
53  $this->blockTemplate->expects(static::once())
54  ->method('setData')
55  ->with($messageData);
56 
57  $this->blockTemplate->expects(static::once())
58  ->method('toHtml')
59  ->willReturn($messagePresentation);
60 
61  $this->blockTemplate->expects(new MethodInvokedAtIndex(0))
62  ->method('unsetData')
63  ->with('painting');
64  $this->blockTemplate->expects(new MethodInvokedAtIndex(1))
65  ->method('unsetData')
66  ->with('apostles_cnt');
67  $this->blockTemplate->expects(new MethodInvokedAtIndex(2))
68  ->method('unsetData')
69  ->with('kangaroos_cnt');
70  $this->blockTemplate->expects(new MethodInvokedAtIndex(1))
71  ->method('setTemplate')
72  ->with('');
73 
74  $this->renderer->render($message, $initializationData);
75  }
76 
77  public function testRenderNoTemplate()
78  {
80  $message = $this->createMock(\Magento\Framework\Message\MessageInterface::class);
81  $messageData = [
82  'who' => 'Brian',
83  'is' => 'a Very Naughty Boy'
84  ];
85 
86  $message->expects(static::once())
87  ->method('getData')
88  ->willReturn($messageData);
89 
90  $this->expectException('InvalidArgumentException');
91  $this->expectExceptionMessage('Template should be provided for the renderer.');
92 
93  $this->blockTemplate->expects(static::never())
94  ->method('toHtml');
95 
96  $this->renderer->render($message, []);
97  }
98 }
$message