0
0
Fork 0
mirror of https://github.com/BookStackApp/BookStack.git synced 2025-05-08 01:50:57 +00:00

Cleanup Command: Allowed running non-interactively

For 
This commit is contained in:
Dan Brown 2023-09-14 14:17:20 +01:00
parent 417705651c
commit dfaf6f7c13
No known key found for this signature in database
GPG key ID: 46D9F943C24A2EF9
2 changed files with 20 additions and 6 deletions

View file

@ -35,7 +35,7 @@ class CleanupImagesCommand extends Command
if (!$dryRun) { if (!$dryRun) {
$this->warn("This operation is destructive and is not guaranteed to be fully accurate.\nEnsure you have a backup of your images.\n"); $this->warn("This operation is destructive and is not guaranteed to be fully accurate.\nEnsure you have a backup of your images.\n");
$proceed = $this->confirm("Are you sure you want to proceed?"); $proceed = !$this->input->isInteractive() || $this->confirm("Are you sure you want to proceed?");
if (!$proceed) { if (!$proceed) {
return 0; return 0;
} }
@ -46,7 +46,7 @@ class CleanupImagesCommand extends Command
if ($dryRun) { if ($dryRun) {
$this->comment('Dry run, no images have been deleted'); $this->comment('Dry run, no images have been deleted');
$this->comment($deleteCount . ' images found that would have been deleted'); $this->comment($deleteCount . ' image(s) found that would have been deleted');
$this->showDeletedImages($deleted); $this->showDeletedImages($deleted);
$this->comment('Run with -f or --force to perform deletions'); $this->comment('Run with -f or --force to perform deletions');
@ -54,7 +54,8 @@ class CleanupImagesCommand extends Command
} }
$this->showDeletedImages($deleted); $this->showDeletedImages($deleted);
$this->comment($deleteCount . ' images deleted'); $this->comment("{$deleteCount} image(s) deleted");
return 0; return 0;
} }
@ -65,7 +66,7 @@ class CleanupImagesCommand extends Command
} }
if (count($paths) > 0) { if (count($paths) > 0) {
$this->line('Images to delete:'); $this->line('Image(s) to delete:');
} }
foreach ($paths as $path) { foreach ($paths as $path) {

View file

@ -14,7 +14,7 @@ class CleanupImagesCommandTest extends TestCase
$this->artisan('bookstack:cleanup-images -v') $this->artisan('bookstack:cleanup-images -v')
->expectsOutput('Dry run, no images have been deleted') ->expectsOutput('Dry run, no images have been deleted')
->expectsOutput('1 images found that would have been deleted') ->expectsOutput('1 image(s) found that would have been deleted')
->expectsOutputToContain($image->path) ->expectsOutputToContain($image->path)
->assertExitCode(0); ->assertExitCode(0);
@ -29,7 +29,7 @@ class CleanupImagesCommandTest extends TestCase
$this->artisan('bookstack:cleanup-images --force') $this->artisan('bookstack:cleanup-images --force')
->expectsOutputToContain('This operation is destructive and is not guaranteed to be fully accurate') ->expectsOutputToContain('This operation is destructive and is not guaranteed to be fully accurate')
->expectsConfirmation('Are you sure you want to proceed?', 'yes') ->expectsConfirmation('Are you sure you want to proceed?', 'yes')
->expectsOutput('1 images deleted') ->expectsOutput('1 image(s) deleted')
->assertExitCode(0); ->assertExitCode(0);
$this->assertDatabaseMissing('images', ['id' => $image->id]); $this->assertDatabaseMissing('images', ['id' => $image->id]);
@ -46,4 +46,17 @@ class CleanupImagesCommandTest extends TestCase
$this->assertDatabaseHas('images', ['id' => $image->id]); $this->assertDatabaseHas('images', ['id' => $image->id]);
} }
public function test_command_force_no_interaction_run()
{
$page = $this->entities->page();
$image = Image::factory()->create(['uploaded_to' => $page->id]);
$this->artisan('bookstack:cleanup-images --force --no-interaction')
->expectsOutputToContain('This operation is destructive and is not guaranteed to be fully accurate')
->expectsOutput('1 image(s) deleted')
->assertExitCode(0);
$this->assertDatabaseMissing('images', ['id' => $image->id]);
}
} }