mirror of
https://github.com/BookStackApp/BookStack.git
synced 2024-10-01 01:36:00 -04:00
Added initial support for parallel testing
This commit is contained in:
parent
aec772c5eb
commit
e18033ec1a
@ -17,7 +17,9 @@ use GuzzleHttp\Client;
|
||||
use Illuminate\Contracts\Cache\Repository;
|
||||
use Illuminate\Database\Eloquent\Relations\Relation;
|
||||
use Illuminate\Pagination\Paginator;
|
||||
use Illuminate\Support\Facades\Artisan;
|
||||
use Illuminate\Support\Facades\Blade;
|
||||
use Illuminate\Support\Facades\ParallelTesting;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Support\Facades\URL;
|
||||
use Illuminate\Support\Facades\View;
|
||||
@ -64,6 +66,11 @@ class AppServiceProvider extends ServiceProvider
|
||||
|
||||
// Set paginator to use bootstrap-style pagination
|
||||
Paginator::useBootstrap();
|
||||
|
||||
// Setup database upon parallel testing database creation
|
||||
ParallelTesting::setUpTestDatabase(function ($database, $token) {
|
||||
Artisan::call('db:seed --class=DummyContentSeeder');
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -44,6 +44,7 @@
|
||||
"ssddanbrown/htmldiff": "^1.0.2"
|
||||
},
|
||||
"require-dev": {
|
||||
"brianium/paratest": "^6.6",
|
||||
"fakerphp/faker": "^1.16",
|
||||
"itsgoingd/clockwork": "^5.1",
|
||||
"mockery/mockery": "^1.4",
|
||||
|
@ -252,6 +252,7 @@ export function build(options) {
|
||||
document_base_url: window.baseUrl('/'),
|
||||
end_container_on_empty_block: true,
|
||||
remove_trailing_brs: false,
|
||||
keep_styles: false,
|
||||
statusbar: false,
|
||||
menubar: false,
|
||||
paste_data_images: false,
|
||||
|
@ -26,6 +26,7 @@ use Illuminate\Foundation\Testing\DatabaseTransactions;
|
||||
use Illuminate\Foundation\Testing\TestCase as BaseTestCase;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Support\Env;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Illuminate\Testing\Assert as PHPUnit;
|
||||
use Monolog\Handler\TestHandler;
|
||||
@ -299,6 +300,8 @@ abstract class TestCase extends BaseTestCase
|
||||
/**
|
||||
* Run a set test with the given env variable.
|
||||
* Remembers the original and resets the value after test.
|
||||
* Database config is juggled so the value can be restored when
|
||||
* parallel testing are used, where multiple databases exist.
|
||||
*/
|
||||
protected function runWithEnv(string $name, $value, callable $callback)
|
||||
{
|
||||
@ -311,7 +314,12 @@ abstract class TestCase extends BaseTestCase
|
||||
$_SERVER[$name] = $value;
|
||||
}
|
||||
|
||||
$database = config('database.connections.mysql_testing.database');
|
||||
$this->refreshApplication();
|
||||
|
||||
DB::purge();
|
||||
config()->set('database.connections.mysql_testing.database', $database);
|
||||
|
||||
$callback();
|
||||
|
||||
if (is_null($originalVal)) {
|
||||
|
@ -322,8 +322,8 @@ class ThemeTest extends TestCase
|
||||
|
||||
public function test_export_body_start_and_end_template_files_can_be_used()
|
||||
{
|
||||
$bodyStartStr = 'barry-fought-against-the-panther';
|
||||
$bodyEndStr = 'barry-lost-his-fight-with-grace';
|
||||
$bodyStartStr = 'garry-fought-against-the-panther';
|
||||
$bodyEndStr = 'garry-lost-his-fight-with-grace';
|
||||
/** @var Page $page */
|
||||
$page = Page::query()->first();
|
||||
|
||||
@ -342,18 +342,18 @@ class ThemeTest extends TestCase
|
||||
protected function usingThemeFolder(callable $callback)
|
||||
{
|
||||
// Create a folder and configure a theme
|
||||
$themeFolderName = 'testing_theme_' . rtrim(base64_encode(time()), '=');
|
||||
$themeFolderName = 'testing_theme_' . str_shuffle(rtrim(base64_encode(time()), '='));
|
||||
config()->set('view.theme', $themeFolderName);
|
||||
$themeFolderPath = theme_path('');
|
||||
|
||||
// Create theme folder and clean it up on application tear-down
|
||||
File::makeDirectory($themeFolderPath);
|
||||
$this->beforeApplicationDestroyed(fn() => File::deleteDirectory($themeFolderPath));
|
||||
|
||||
// Run provided callback with theme env option set
|
||||
$this->runWithEnv('APP_THEME', $themeFolderName, function () use ($callback, $themeFolderName) {
|
||||
call_user_func($callback, $themeFolderName);
|
||||
});
|
||||
|
||||
// Cleanup the custom theme folder we created
|
||||
File::deleteDirectory($themeFolderPath);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user