CollectionTimeTest.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Analytics\Test\Unit\Model\Config\Backend;
  7. use Magento\Analytics\Model\Config\Backend\CollectionTime;
  8. use Magento\Framework\App\Config\Storage\WriterInterface;
  9. use Magento\Framework\App\Config\Value;
  10. use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper;
  11. use Psr\Log\LoggerInterface;
  12. class CollectionTimeTest extends \PHPUnit\Framework\TestCase
  13. {
  14. /**
  15. * @var WriterInterface|\PHPUnit_Framework_MockObject_MockObject
  16. */
  17. private $configWriterMock;
  18. /**
  19. * @var LoggerInterface|\PHPUnit_Framework_MockObject_MockObject
  20. */
  21. private $loggerMock;
  22. /**
  23. * @var ObjectManagerHelper
  24. */
  25. private $objectManagerHelper;
  26. /**
  27. * @var CollectionTime
  28. */
  29. private $collectionTime;
  30. /**
  31. * @return void
  32. */
  33. protected function setUp()
  34. {
  35. $this->configWriterMock = $this->getMockBuilder(WriterInterface::class)
  36. ->disableOriginalConstructor()
  37. ->getMock();
  38. $this->loggerMock = $this->getMockBuilder(LoggerInterface::class)
  39. ->disableOriginalConstructor()
  40. ->getMock();
  41. $this->objectManagerHelper = new ObjectManagerHelper($this);
  42. $this->collectionTime = $this->objectManagerHelper->getObject(
  43. CollectionTime::class,
  44. [
  45. 'configWriter' => $this->configWriterMock,
  46. '_logger' => $this->loggerMock,
  47. ]
  48. );
  49. }
  50. /**
  51. * @return void
  52. */
  53. public function testAfterSave()
  54. {
  55. $this->collectionTime->setData('value', '05,04,03');
  56. $this->configWriterMock
  57. ->expects($this->once())
  58. ->method('save')
  59. ->with(CollectionTime::CRON_SCHEDULE_PATH, join(' ', ['04', '05', '*', '*', '*']));
  60. $this->assertInstanceOf(
  61. Value::class,
  62. $this->collectionTime->afterSave()
  63. );
  64. }
  65. /**
  66. * @return void
  67. * @expectedException \Magento\Framework\Exception\LocalizedException
  68. */
  69. public function testAfterSaveWrongValue()
  70. {
  71. $this->collectionTime->setData('value', '00,01');
  72. $this->collectionTime->afterSave();
  73. }
  74. /**
  75. * @return void
  76. * @expectedException \Magento\Framework\Exception\LocalizedException
  77. */
  78. public function testAfterSaveWithLocalizedException()
  79. {
  80. $exception = new \Exception('Test message');
  81. $this->collectionTime->setData('value', '05,04,03');
  82. $this->configWriterMock
  83. ->expects($this->once())
  84. ->method('save')
  85. ->with(CollectionTime::CRON_SCHEDULE_PATH, join(' ', ['04', '05', '*', '*', '*']))
  86. ->willThrowException($exception);
  87. $this->loggerMock
  88. ->expects($this->once())
  89. ->method('error')
  90. ->with($exception->getMessage());
  91. $this->collectionTime->afterSave();
  92. }
  93. }