<?php namespace Tests;
+use BookStack\Book;
+use BookStack\Chapter;
+use BookStack\Repos\EntityRepo;
+use BookStack\Role;
+use Illuminate\Foundation\Testing\DatabaseTransactions;
use Illuminate\Foundation\Testing\TestCase as BaseTestCase;
abstract class TestCase extends BaseTestCase
{
use CreatesApplication;
+ use DatabaseTransactions;
+
+ protected $admin;
+
+ /**
+ * Set the current user context to be an admin.
+ * @return $this
+ */
+ public function asAdmin()
+ {
+ return $this->actingAs($this->getAdmin());
+ }
+
+ /**
+ * Get the current admin user.
+ * @return mixed
+ */
+ public function getAdmin() {
+ if($this->admin === null) {
+ $adminRole = Role::getSystemRole('admin');
+ $this->admin = $adminRole->users->first();
+ }
+ return $this->admin;
+ }
+
+ /**
+ * Create and return a new book.
+ * @param array $input
+ * @return Book
+ */
+ public function newBook($input = ['name' => 'test book', 'description' => 'My new test book']) {
+ return $this->app[EntityRepo::class]->createFromInput('book', $input, false);
+ }
+
+ /**
+ * Create and return a new test chapter
+ * @param array $input
+ * @param Book $book
+ * @return Chapter
+ */
+ public function newChapter($input = ['name' => 'test chapter', 'description' => 'My new test chapter'], Book $book) {
+ return $this->app[EntityRepo::class]->createFromInput('chapter', $input, $book);
+ }
}
\ No newline at end of file