diff --git a/Api/ScheduleManagementInterface.php b/Api/ScheduleManagementInterface.php index cef5e5d4..9244e163 100644 --- a/Api/ScheduleManagementInterface.php +++ b/Api/ScheduleManagementInterface.php @@ -4,6 +4,7 @@ use Magento\Cron\Model\Schedule; use Magento\Framework\Exception\CouldNotSaveException; +use Magento\Framework\Exception\LocalizedException; use Magento\Framework\Exception\NoSuchEntityException; interface ScheduleManagementInterface @@ -26,7 +27,8 @@ public function listJobs(): array; /** * @param string $jobCode * @param string[]|null $groups - * @return string|null + * @return string + * @throws LocalizedException */ public function getGroupId(string $jobCode, $groups = null); diff --git a/Model/ScheduleManagement.php b/Model/ScheduleManagement.php index ca425e6c..624db811 100644 --- a/Model/ScheduleManagement.php +++ b/Model/ScheduleManagement.php @@ -9,6 +9,7 @@ use EthanYehuda\CronjobManager\Api\JobManagementInterface; use Magento\Cron\Model\ScheduleFactory; use Magento\Cron\Model\Schedule; +use Magento\Framework\Exception\LocalizedException; use Magento\Framework\Stdlib\DateTime\DateTime; class ScheduleManagement implements ScheduleManagementInterface @@ -109,7 +110,10 @@ public function getGroupId(string $jobCode, $groups = null): string } } - return null; + throw new LocalizedException(__( + 'No such job: %jobCode', + ['jobCode' => $jobCode] + )); } public function flush(): bool diff --git a/Test/Integration/Model/ScheduleManagementTest.php b/Test/Integration/Model/ScheduleManagementTest.php index b3da5cff..5a3aae32 100644 --- a/Test/Integration/Model/ScheduleManagementTest.php +++ b/Test/Integration/Model/ScheduleManagementTest.php @@ -5,6 +5,7 @@ use EthanYehuda\CronjobManager\Api\ScheduleManagementInterface; use Magento\Cron\Model\Schedule; +use Magento\Framework\Exception\LocalizedException; use Magento\TestFramework\Helper\Bootstrap; use Magento\TestFramework\ObjectManager; use PHPUnit\Framework\TestCase; @@ -32,6 +33,19 @@ protected function setUp(): void $this->scheduleManagement = $this->objectManager->get(ScheduleManagementInterface::class); } + public function testGetGroupIdWithValidJobCode() + { + $groupId = $this->scheduleManagement->getGroupId('backend_clean_cache'); + $this->assertSame('default', $groupId); + } + + public function testGetGroupIdWithInvalidJobCode() + { + $this->expectException(LocalizedException::class); + $this->expectExceptionMessage('No such job: not_valid'); + $this->scheduleManagement->getGroupId('not_valid'); + } + public function testKillRequestForRunningJobSucceeds() { $this->givenRunningSchedule($schedule);