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;
// 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');
+ });
}
/**
"ssddanbrown/htmldiff": "^1.0.2"
},
"require-dev": {
+ "brianium/paratest": "^6.6",
"fakerphp/faker": "^1.16",
"itsgoingd/clockwork": "^5.1",
"mockery/mockery": "^1.4",
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,
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;
/**
* 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)
{
$_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)) {
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();
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);
}
}