X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/c09300c06faa1ccedc6a89e7c26fd7f1bd3511bf..refs/pull/2700/head:/tests/Commands/UpdateUrlCommandTest.php diff --git a/tests/Commands/UpdateUrlCommandTest.php b/tests/Commands/UpdateUrlCommandTest.php index 741040f1f..7043ce047 100644 --- a/tests/Commands/UpdateUrlCommandTest.php +++ b/tests/Commands/UpdateUrlCommandTest.php @@ -6,7 +6,7 @@ use Tests\TestCase; class UpdateUrlCommandTest extends TestCase { - public function test_update_url_command_updates_page_content() + public function test_command_updates_page_content() { $page = Page::query()->first(); $page->html = ''; @@ -22,7 +22,7 @@ class UpdateUrlCommandTest extends TestCase ]); } - public function test_update_url_command_requires_valid_url() + public function test_command_requires_valid_url() { $badUrlMessage = "The given urls are expected to be full urls starting with http:// or https://"; $this->artisan('bookstack:update-url //example.com https://cats.example.com')->expectsOutput($badUrlMessage); @@ -33,14 +33,27 @@ class UpdateUrlCommandTest extends TestCase $this->artisan('bookstack:update-url https://cats.example.com'); } - public function test_update_url_command_updates_settings() + public function test_command_updates_settings() { setting()->put('my-custom-item', 'https://example.com/donkey/cat'); - $this->artisan('bookstack:update-url https://example.com https://cats.example.com') - ->expectsQuestion("This will search for \"https://example.com\" in your database and replace it with \"https://cats.example.com\".\nAre you sure you want to proceed?", 'y') - ->expectsQuestion("This operation could cause issues if used incorrectly. Have you made a backup of your existing database?", 'y'); + $this->runUpdate('https://example.com', 'https://cats.example.com'); $settingVal = setting('my-custom-item'); $this->assertEquals('https://cats.example.com/donkey/cat', $settingVal); } + + public function test_command_updates_array_settings() + { + setting()->put('my-custom-array-item', [['name' => 'a https://example.com/donkey/cat url']]); + $this->runUpdate('https://example.com', 'https://cats.example.com'); + $settingVal = setting('my-custom-array-item'); + $this->assertEquals('a https://cats.example.com/donkey/cat url', $settingVal[0]['name']); + } + + protected function runUpdate(string $oldUrl, string $newUrl) + { + $this->artisan("bookstack:update-url {$oldUrl} {$newUrl}") + ->expectsQuestion("This will search for \"{$oldUrl}\" in your database and replace it with \"{$newUrl}\".\nAre you sure you want to proceed?", 'y') + ->expectsQuestion("This operation could cause issues if used incorrectly. Have you made a backup of your existing database?", 'y'); + } } \ No newline at end of file