Переглянути джерело

feat(hook): 收集可用扩展的定时任务

- 在收集扩展定时任务时检查扩展是否可用
- 添加 GatheringCrontabEventHook 的单元测试文件
- 实现 onWorkerStart 方法的基础测试用例
runphp 4 місяців тому
батько
коміт
fcbc30733c

+ 5 - 5
src/Hook/GatheringCrontabEventHook.php

@@ -25,13 +25,13 @@ class GatheringCrontabEventHook
     {
         $extensionManager = $this->app->make(ExtensionManager::class);
         $event = new GetCronJobsEvent();
-
         foreach (Helper::extension_name_list() as $extensionName) {
             $extension = $extensionManager->getExtension($extensionName);
-            $cronJobs = $extension->getCronJobs();
-            foreach ($cronJobs as $cronJobClass) {
-                $event->push($cronJobClass);
-
+            if ($extension->available()) {
+                $cronJobs = $extension->getCronJobs();
+                foreach ($cronJobs as $cronJobClass) {
+                    $event->push($cronJobClass);
+                }
             }
         }
         $this->app->event->trigger($event);

+ 0 - 0
test/ExtensionManagerTest.php → tests/ExtensionManagerTest.php


+ 20 - 0
tests/Hook/GatheringCrontabEventHookTest.php

@@ -0,0 +1,20 @@
+<?php
+declare(strict_types=1);
+namespace SixShop\System\Hook;
+
+use PHPUnit\Framework\Attributes\Test;
+use PHPUnit\Framework\TestCase;
+
+class GatheringCrontabEventHookTest extends TestCase
+{
+    private GatheringCrontabEventHook $gatheringCrontabEventHook;
+    protected function setUp(): void
+    {
+        $this->gatheringCrontabEventHook = app(GatheringCrontabEventHook::class);
+    }
+
+    #[Test ] public function onWorkerStart()
+    {
+        $this->gatheringCrontabEventHook->onWorkerStart();
+    }
+}