ProcessCronQueueObserverTest.php 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Cron\Observer;
  7. use \Magento\TestFramework\Helper\Bootstrap;
  8. class ProcessCronQueueObserverTest extends \PHPUnit\Framework\TestCase
  9. {
  10. /**
  11. * @var \Magento\Cron\Observer\ProcessCronQueueObserver
  12. */
  13. private $_model = null;
  14. protected function setUp()
  15. {
  16. \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(\Magento\Framework\App\AreaList::class)
  17. ->getArea('crontab')
  18. ->load(\Magento\Framework\App\Area::PART_CONFIG);
  19. $request = Bootstrap::getObjectManager()->create(\Magento\Framework\App\Console\Request::class);
  20. $request->setParams(['group' => 'default', 'standaloneProcessStarted' => '0']);
  21. $this->_model = Bootstrap::getObjectManager()
  22. ->create(\Magento\Cron\Observer\ProcessCronQueueObserver::class, ['request' => $request]);
  23. $this->_model->execute(new \Magento\Framework\Event\Observer());
  24. }
  25. /**
  26. * @magentoConfigFixture current_store crontab/default/jobs/catalog_product_alert/schedule/cron_expr * * * * *
  27. */
  28. public function testDispatchScheduled()
  29. {
  30. $collection = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
  31. \Magento\Cron\Model\ResourceModel\Schedule\Collection::class
  32. );
  33. $collection->addFieldToFilter('status', \Magento\Cron\Model\Schedule::STATUS_PENDING);
  34. $collection->addFieldToFilter('job_code', 'catalog_product_alert');
  35. $this->assertGreaterThan(0, $collection->count(), 'Cron has failed to schedule tasks for itself for future.');
  36. }
  37. public function testDispatchNoFailed()
  38. {
  39. $collection = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
  40. \Magento\Cron\Model\ResourceModel\Schedule\Collection::class
  41. );
  42. $collection->addFieldToFilter('status', \Magento\Cron\Model\Schedule::STATUS_ERROR);
  43. foreach ($collection as $item) {
  44. $this->fail($item->getMessages());
  45. }
  46. }
  47. }