UpdatingServiceFactoryTest.php 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Signifyd\Test\Unit\Model\CaseServices;
  7. use Magento\Framework\ObjectManagerInterface;
  8. use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
  9. use Magento\Signifyd\Model\CaseServices\StubUpdatingService;
  10. use Magento\Signifyd\Model\CaseServices\UpdatingService;
  11. use Magento\Signifyd\Model\CaseServices\UpdatingServiceFactory;
  12. use Magento\Signifyd\Model\Config;
  13. use Magento\Signifyd\Model\MessageGenerators\GeneratorFactory;
  14. use Magento\Signifyd\Model\MessageGenerators\GeneratorInterface;
  15. use PHPUnit_Framework_MockObject_MockObject as MockObject;
  16. /**
  17. * Contains tests for case updating service factory.
  18. */
  19. class UpdatingServiceFactoryTest extends \PHPUnit\Framework\TestCase
  20. {
  21. /**
  22. * @var UpdatingServiceFactory
  23. */
  24. private $factory;
  25. /**
  26. * @var Config|MockObject
  27. */
  28. private $config;
  29. /**
  30. * @var ObjectManagerInterface|MockObject
  31. */
  32. private $fakeObjectManager;
  33. /**
  34. * @var GeneratorFactory|MockObject
  35. */
  36. private $generatorFactory;
  37. /**
  38. * @inheritdoc
  39. */
  40. protected function setUp()
  41. {
  42. $this->config = $this->getMockBuilder(Config::class)
  43. ->disableOriginalConstructor()
  44. ->setMethods(['isActive'])
  45. ->getMock();
  46. $this->fakeObjectManager = $this->getMockBuilder(ObjectManagerInterface::class)
  47. ->disableOriginalConstructor()
  48. ->setMethods(['create'])
  49. ->getMockForAbstractClass();
  50. $this->generatorFactory = $this->getMockBuilder(GeneratorFactory::class)
  51. ->disableOriginalConstructor()
  52. ->setMethods(['create'])
  53. ->getMock();
  54. $objectManager = new ObjectManager($this);
  55. $this->factory = $objectManager->getObject(UpdatingServiceFactory::class, [
  56. 'objectManager' => $this->fakeObjectManager,
  57. 'generatorFactory' => $this->generatorFactory,
  58. 'config' => $this->config
  59. ]);
  60. }
  61. /**
  62. * Checks type of instance for updating service if Signifyd is not enabled.
  63. *
  64. * @covers \Magento\Signifyd\Model\CaseServices\UpdatingServiceFactory::create
  65. */
  66. public function testCreateWithInactiveConfig()
  67. {
  68. $type = 'cases/creation';
  69. $this->config->expects(self::once())
  70. ->method('isActive')
  71. ->willReturn(false);
  72. $this->fakeObjectManager->expects(self::once())
  73. ->method('create')
  74. ->with(StubUpdatingService::class)
  75. ->willReturn(new StubUpdatingService());
  76. $instance = $this->factory->create($type);
  77. static::assertInstanceOf(StubUpdatingService::class, $instance);
  78. }
  79. /**
  80. * Checks type of instance for updating service if test type is received.
  81. *
  82. * @covers \Magento\Signifyd\Model\CaseServices\UpdatingServiceFactory::create
  83. */
  84. public function testCreateWithTestType()
  85. {
  86. $type = 'cases/test';
  87. $this->config->expects(self::once())
  88. ->method('isActive')
  89. ->willReturn(true);
  90. $this->fakeObjectManager->expects(self::once())
  91. ->method('create')
  92. ->with(StubUpdatingService::class)
  93. ->willReturn(new StubUpdatingService());
  94. $instance = $this->factory->create($type);
  95. static::assertInstanceOf(StubUpdatingService::class, $instance);
  96. }
  97. /**
  98. * Checks exception type and message for unknown case type.
  99. *
  100. * @covers \Magento\Signifyd\Model\CaseServices\UpdatingServiceFactory::create
  101. * @expectedException \InvalidArgumentException
  102. * @expectedExceptionMessage Specified message type does not supported.
  103. */
  104. public function testCreateWithException()
  105. {
  106. $type = 'cases/unknown';
  107. $this->config->expects(self::once())
  108. ->method('isActive')
  109. ->willReturn(true);
  110. $this->generatorFactory->expects(self::once())
  111. ->method('create')
  112. ->with($type)
  113. ->willThrowException(new \InvalidArgumentException('Specified message type does not supported.'));
  114. $this->factory->create($type);
  115. }
  116. /**
  117. * Checks if factory creates correct instance of case updating service.
  118. *
  119. * @covers \Magento\Signifyd\Model\CaseServices\UpdatingServiceFactory::create
  120. */
  121. public function testCreate()
  122. {
  123. $type = 'case/creation';
  124. $this->config->expects(self::once())
  125. ->method('isActive')
  126. ->willReturn(true);
  127. $messageGenerator = $this->getMockBuilder(GeneratorInterface::class)
  128. ->disableOriginalConstructor()
  129. ->getMock();
  130. $this->generatorFactory->expects(self::once())
  131. ->method('create')
  132. ->with($type)
  133. ->willReturn($messageGenerator);
  134. $service = $this->getMockBuilder(UpdatingService::class)
  135. ->disableOriginalConstructor()
  136. ->getMock();
  137. $this->fakeObjectManager->expects(self::once())
  138. ->method('create')
  139. ->with(UpdatingService::class, ['messageGenerator' => $messageGenerator])
  140. ->willReturn($service);
  141. $result = $this->factory->create($type);
  142. static::assertInstanceOf(UpdatingService::class, $result);
  143. }
  144. }