File tree Expand file tree Collapse file tree 3 files changed +38
-1
lines changed
Expand file tree Collapse file tree 3 files changed +38
-1
lines changed Original file line number Diff line number Diff line change 55namespace Itiden \Backup \Jobs ;
66
77use Illuminate \Contracts \Queue \ShouldQueue ;
8+ use Illuminate \Contracts \Cache \Repository ;
89use Illuminate \Foundation \Queue \Queueable ;
910use Itiden \Backup \Restorer ;
11+ use Itiden \Backup \StateManager ;
1012use Statamic \Contracts \Auth \User ;
1113
1214final class RestoreJob implements ShouldQueue
@@ -24,9 +26,17 @@ public function __construct(
2426 /**
2527 * Execute the job.
2628 */
27- public function handle (Restorer $ backuper ): void
29+ public function handle (Restorer $ backuper, Repository $ cache ): void
2830 {
2931 auth ()->login ($ this ->user ); // ugly but it works;
32+
3033 $ backuper ->restoreFromId ($ this ->id );
34+
35+ $ cache ->forget (StateManager::JOB_QUEUED_KEY );
36+ }
37+
38+ public function failed (): void
39+ {
40+ app (Repository::class)->forget (StateManager::JOB_QUEUED_KEY );
3141 }
3242}
Original file line number Diff line number Diff line change 22
33declare (strict_types=1 );
44
5+ use Illuminate \Support \Facades \Cache ;
56use Illuminate \Support \Facades \Event ;
67use Itiden \Backup \Contracts \Repositories \BackupRepository ;
78use Itiden \Backup \DataTransferObjects \BackupDto ;
9+ use Itiden \Backup \Enums \State ;
810use Itiden \Backup \Events \BackupCreated ;
911use Itiden \Backup \Events \BackupFailed ;
1012use Itiden \Backup \Exceptions \RestoreFailed ;
1113use Itiden \Backup \Facades \Backuper ;
1214use Itiden \Backup \Facades \Restorer ;
15+ use Itiden \Backup \StateManager ;
1316use Itiden \Backup \Tests \SkippingPipe ;
1417
1518use function Itiden \Backup \Tests \user ;
8588 postJson (cp_route ('api.itiden.backup.store ' ));
8689
8790 Event::assertDispatched (BackupFailed::class);
91+ expect (Cache::has (StateManager::JOB_QUEUED_KEY ))->toBeFalse ();
92+ expect (app (StateManager::class)->getState ())->toBe (State::BackupFailed);
8893 });
8994
9095 it ('sets created by metadata when user is authenticated ' , function (): void {
Original file line number Diff line number Diff line change 33declare (strict_types=1 );
44
55use Illuminate \Http \Response ;
6+ use Illuminate \Support \Facades \Cache ;
67use Illuminate \Support \Facades \Event ;
78use Illuminate \Support \Facades \File ;
89use Illuminate \Support \Facades \Storage ;
10+ use Itiden \Backup \Enums \State ;
911use Itiden \Backup \Events \BackupRestored ;
12+ use Itiden \Backup \Events \RestoreFailed ;
1013use Itiden \Backup \Facades \Backuper ;
14+ use Itiden \Backup \StateManager ;
1115
1216use function Itiden \Backup \Tests \fixtures_path ;
1317use function Itiden \Backup \Tests \user ;
4145 expect ($ response ->status ())->toBe (Response::HTTP_INTERNAL_SERVER_ERROR );
4246 });
4347
48+ it ('sets correct states if restore fails ' , function (): void {
49+ Event::fake ();
50+ $ backup = Backuper::backup ();
51+
52+ $ user = user ();
53+
54+ $ user ->assignRole ('super admin ' )->save ();
55+
56+ actingAs ($ user );
57+
58+ config ()->set ('backup.pipeline ' , ['im-not-valid ' ]);
59+ postJson (cp_route ('api.itiden.backup.restore ' , $ backup ->id ));
60+
61+ Event::assertDispatched (RestoreFailed::class);
62+ expect (Cache::has (StateManager::JOB_QUEUED_KEY ))->toBeFalse ();
63+ expect (app (StateManager::class)->getState ())->toBe (State::RestoreFailed);
64+ });
65+
4466 it ('can restore by id ' , function (): void {
4567 $ backup = Backuper::backup ();
4668
You can’t perform that action at this time.
0 commit comments