Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
DeserializerFactoryTest.php
Go to the documentation of this file.
1 <?php
9 
10 class DeserializerFactoryTest extends \PHPUnit\Framework\TestCase
11 {
13  {
14  $this->expectException('LogicException');
15  $this->expectExceptionMessage('Request deserializer adapter is not set.');
16  $interpreterFactory = new \Magento\Framework\Webapi\Rest\Request\DeserializerFactory(
17  $this->createMock(\Magento\Framework\ObjectManagerInterface::class),
18  []
19  );
20  $interpreterFactory->get('contentType');
21  }
22 
23  public function testGet()
24  {
25  $expectedMetadata = ['text_xml' => ['type' => 'text/xml', 'model' => 'Xml']];
26  $validInterpreterMock = $this->getMockBuilder(
27  \Magento\Framework\Webapi\Rest\Request\Deserializer\Xml::class
28  )->disableOriginalConstructor()->getMock();
29 
30  $objectManagerMock = $this->createMock(\Magento\Framework\ObjectManagerInterface::class);
31  $objectManagerMock->expects($this->once())->method('get')->will($this->returnValue($validInterpreterMock));
32 
33  $interpreterFactory = new \Magento\Framework\Webapi\Rest\Request\DeserializerFactory(
34  $objectManagerMock,
35  $expectedMetadata
36  );
37  $interpreterFactory->get('text/xml');
38  }
39 
41  {
42  $expectedMetadata = ['text_xml' => ['type' => 'text/xml', 'model' => 'Xml']];
43  $this->expectException(\Magento\Framework\Webapi\Exception::class);
44  $this->expectExceptionMessage('Server cannot understand Content-Type HTTP header media type text_xml');
45  $interpreterFactory = new \Magento\Framework\Webapi\Rest\Request\DeserializerFactory(
46  $this->createMock(\Magento\Framework\ObjectManagerInterface::class),
47  $expectedMetadata
48  );
49  $interpreterFactory->get('text_xml');
50  }
51 
53  {
54  $expectedMetadata = ['text_xml' => ['type' => 'text/xml', 'model' => 'Xml']];
55  $invalidInterpreter = $this->getMockBuilder(
56  \Magento\Framework\Webapi\Response\Rest\Renderer\Json::class
57  )->disableOriginalConstructor()->getMock();
58 
59  $this->expectException('LogicException');
60  $this->expectExceptionMessage(
61  'The deserializer must implement "Magento\Framework\Webapi\Rest\Request\DeserializerInterface".'
62  );
63  $objectManagerMock = $this->createMock(\Magento\Framework\ObjectManagerInterface::class);
64  $objectManagerMock->expects($this->once())->method('get')->will($this->returnValue($invalidInterpreter));
65 
66  $interpreterFactory = new \Magento\Framework\Webapi\Rest\Request\DeserializerFactory(
67  $objectManagerMock,
68  $expectedMetadata
69  );
70  $interpreterFactory->get('text/xml');
71  }
72 }