Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
InterpretationStrategyTest.php
Go to the documentation of this file.
1 <?php
7 
13 
14 class InterpretationStrategyTest extends \PHPUnit\Framework\TestCase
15 {
19  private $renderersPool;
20 
24  private $messageConfigurationsPool;
25 
29  private $renderer;
30 
34  private $messageMock;
35 
39  private $interpretationStrategy;
40 
41  protected function setUp()
42  {
43  $this->renderersPool = $this->getMockBuilder(
44  \Magento\Framework\View\Element\Message\Renderer\RenderersPool::class
45  )
46  ->disableOriginalConstructor()
47  ->getMock();
48  $this->messageConfigurationsPool = $this->getMockBuilder(
49  \Magento\Framework\View\Element\Message\MessageConfigurationsPool::class
50  )
51  ->disableOriginalConstructor()
52  ->getMock();
53  $this->messageMock = $this->createMock(
54  \Magento\Framework\Message\MessageInterface::class
55  );
56  $this->renderer = $this->createMock(
57  \Magento\Framework\View\Element\Message\Renderer\RendererInterface::class
58  );
59 
60  $this->interpretationStrategy = new InterpretationStrategy(
61  $this->renderersPool,
62  $this->messageConfigurationsPool
63  );
64  }
65 
66  public function testInterpret()
67  {
68  $identifier = 'Prophesy';
69  $messageConfiguration = [
70  'renderer' => 'Third apostle from the left',
71  'data' => [
72  'Blessed are the birds...'
73  ]
74  ];
75  $renderedMessage = 'Script';
76 
77  $renderer = $this->createMock(
78  \Magento\Framework\View\Element\Message\Renderer\RendererInterface::class
79  );
80 
81  $this->messageMock->expects(static::once())
82  ->method('getIdentifier')
83  ->willReturn($identifier);
84  $this->messageConfigurationsPool->expects(static::once())
85  ->method('getMessageConfiguration')
86  ->with($identifier)
87  ->willReturn(
88  $messageConfiguration
89  );
90  $this->renderersPool->expects(static::once())
91  ->method('get')
92  ->with($messageConfiguration['renderer'])
93  ->willReturn($renderer);
94  $renderer->expects(static::once())
95  ->method('render')
96  ->with($this->messageMock, $messageConfiguration['data'])
97  ->willReturn($renderedMessage);
98 
99  static::assertSame(
100  $renderedMessage,
101  $this->interpretationStrategy->interpret($this->messageMock)
102  );
103  }
104 
106  {
107  $identifier = 'Prophesy';
108 
109  $this->messageMock->expects(static::once())
110  ->method('getIdentifier')
111  ->willReturn($identifier);
112  $this->messageConfigurationsPool->expects(static::once())
113  ->method('getMessageConfiguration')
114  ->with($identifier)
115  ->willReturn(
116  null
117  );
118 
119  $this->expectException('LogicException');
120 
121  $this->renderersPool->expects(static::never())
122  ->method('get');
123 
124  $this->interpretationStrategy->interpret($this->messageMock);
125  }
126 
128  {
129  $identifier = 'Prophesy';
130  $messageConfiguration = [
131  'renderer' => 'Third apostle from the left',
132  'data' => [
133  'Blessed are the birds...'
134  ]
135  ];
136 
137  $this->messageMock->expects(static::once())
138  ->method('getIdentifier')
139  ->willReturn($identifier);
140  $this->messageConfigurationsPool->expects(static::once())
141  ->method('getMessageConfiguration')
142  ->with($identifier)
143  ->willReturn(
144  $messageConfiguration
145  );
146  $this->renderersPool->expects(static::once())
147  ->method('get')
148  ->with($messageConfiguration['renderer'])
149  ->willReturn(null);
150 
151  $this->expectException('LogicException');
152 
153  $this->interpretationStrategy->interpret($this->messageMock);
154  }
155 }