use GuzzleHttp\Handler\MockHandler;
use GuzzleHttp\HandlerStack;
use GuzzleHttp\Middleware;
+use Illuminate\Contracts\Console\Kernel;
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;
*/
protected string $baseUrl = 'http://localhost';
+ /**
+ * Creates the application.
+ *
+ * @return \Illuminate\Foundation\Application
+ */
+ public function createApplication()
+ {
+ /** @var \Illuminate\Foundation\Application $app */
+ $app = require __DIR__ . '/../bootstrap/app.php';
+ $app->register(TestServiceProvider::class);
+ $app->make(Kernel::class)->bootstrap();
+
+ return $app;
+ }
+
/**
* Set the current user context to be an admin.
*/
return $this->editor;
}
+ /**
+ * Set the current user context to be a viewer.
+ */
+ public function asViewer()
+ {
+ return $this->actingAs($this->getViewer());
+ }
+
/**
* Get an instance of a user with 'viewer' permissions.
*/
/**
* 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)) {
$this->assertDatabaseHas('activities', $detailsToCheck);
}
+
+ /**
+ * @return array{page: Page, chapter: Chapter, book: Book, bookshelf: Bookshelf}
+ */
+ protected function getEachEntityType(): array
+ {
+ return [
+ 'page' => Page::query()->first(),
+ 'chapter' => Chapter::query()->first(),
+ 'book' => Book::query()->first(),
+ 'bookshelf' => Bookshelf::query()->first(),
+ ];
+ }
}