File tree Expand file tree Collapse file tree 5 files changed +89
-22
lines changed
tests/Integration/Console/Scheduler Expand file tree Collapse file tree 5 files changed +89
-22
lines changed Original file line number Diff line number Diff line change 1+ <?php
2+
3+ declare (strict_types=1 );
4+
5+ namespace Tempest \Console \Commands ;
6+
7+ use Tempest \Console \Console ;
8+ use Tempest \Console \ConsoleCommand ;
9+ use Tempest \Console \HasConsole ;
10+ use Tempest \Console \Scheduler ;
11+ use Tempest \Console \Scheduler \ScheduledInvocationRan ;
12+ use Tempest \EventBus \EventHandler ;
13+
14+ final readonly class ScheduleRunCommand
15+ {
16+ use HasConsole;
17+
18+ public function __construct (
19+ private Scheduler $ scheduler ,
20+ private Console $ console ,
21+ ) {
22+ }
23+
24+ #[ConsoleCommand('schedule:run ' )]
25+ public function __invoke (): void
26+ {
27+ $ this ->scheduler ->run ();
28+
29+ $ this ->success ('Done ' );
30+ }
31+
32+ #[EventHandler]
33+ public function onScheduledInvocationRan (ScheduledInvocationRan $ invocation ): void
34+ {
35+ $ this ->writeln (sprintf (
36+ "<em>%s</em> completed " ,
37+ $ invocation ->invocation ->getCommandName ()
38+ ));
39+ }
40+ }
Load Diff This file was deleted.
Original file line number Diff line number Diff line change 77use DateTime ;
88use Tempest \Console \Scheduler ;
99use Tempest \Console \ShellExecutor ;
10+ use function Tempest \event ;
1011
1112final readonly class GenericScheduler implements Scheduler
1213{
@@ -26,6 +27,8 @@ public function run(?DateTime $date = null): void
2627
2728 foreach ($ commands as $ command ) {
2829 $ this ->execute ($ command );
30+
31+ event (new ScheduledInvocationRan ($ command ));
2932 }
3033 }
3134
@@ -47,6 +50,7 @@ private function compileInvocation(ScheduledInvocation $invocation): string
4750 ]);
4851 }
4952
53+ /** @return \Tempest\Console\Scheduler\ScheduledInvocation[] */
5054 private function getInvocationsToRun (DateTime $ date ): array
5155 {
5256 $ previousRuns = $ this ->getPreviousRuns ();
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ declare (strict_types=1 );
4+
5+ namespace Tempest \Console \Scheduler ;
6+
7+ final readonly class ScheduledInvocationRan
8+ {
9+ public function __construct (public ScheduledInvocation $ invocation )
10+ {
11+ }
12+ }
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ declare (strict_types=1 );
4+
5+ namespace Tests \Tempest \Integration \Console \Scheduler ;
6+
7+ use Tempest \Console \Scheduler \GenericScheduler ;
8+ use Tests \Tempest \Integration \FrameworkIntegrationTestCase ;
9+
10+ /**
11+ * @internal
12+ */
13+ final class ScheduleRunCommandTest extends FrameworkIntegrationTestCase
14+ {
15+ public function test_invoke (): void
16+ {
17+ @unlink (GenericScheduler::CACHE_PATH );
18+
19+ $ this ->console
20+ ->call ('schedule:run ' )
21+ ->assertSee ('scheduled completed ' )
22+ ->assertSee ("schedule:task Tests \\\\Tempest \\\\Integration \\\\Console \\\\Fixtures \\\\ScheduledCommand::method completed " )
23+ ->assertSee ('session:clean completed ' )
24+ ->assertSee ('Done ' );
25+
26+ $ this ->console
27+ ->call ('schedule:run ' )
28+ ->assertNotSee ('scheduled completed ' )
29+ ->assertNotSee ("schedule:task Tests \\\\Tempest \\\\Integration \\\\Console \\\\Fixtures \\\\ScheduledCommand::method completed " )
30+ ->assertNotSee ('session:clean completed ' )
31+ ->assertSee ('Done ' );
32+ }
33+ }
You can’t perform that action at this time.
0 commit comments