X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/7c9937e9240b9656fe865de85a89c97b734656ab..refs/pull/524/head:/tests/TestCase.php diff --git a/tests/TestCase.php b/tests/TestCase.php index d52e991e3..81bd93ec4 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -4,13 +4,17 @@ use BookStack\Book; use BookStack\Chapter; use BookStack\Repos\EntityRepo; use BookStack\Role; +use BookStack\Services\SettingService; +use Illuminate\Foundation\Testing\DatabaseTransactions; use Illuminate\Foundation\Testing\TestCase as BaseTestCase; abstract class TestCase extends BaseTestCase { use CreatesApplication; + use DatabaseTransactions; protected $admin; + protected $editor; /** * Set the current user context to be an admin. @@ -33,6 +37,28 @@ abstract class TestCase extends BaseTestCase return $this->admin; } + /** + * Set the current user context to be an editor. + * @return $this + */ + public function asEditor() + { + return $this->actingAs($this->getEditor()); + } + + + /** + * Get a editor user. + * @return mixed + */ + public function getEditor() { + if($this->editor === null) { + $editorRole = Role::getRole('editor'); + $this->editor = $editorRole->users->first(); + } + return $this->editor; + } + /** * Create and return a new book. * @param array $input @@ -51,4 +77,28 @@ abstract class TestCase extends BaseTestCase public function newChapter($input = ['name' => 'test chapter', 'description' => 'My new test chapter'], Book $book) { return $this->app[EntityRepo::class]->createFromInput('chapter', $input, $book); } + + /** + * Create and return a new test page + * @param array $input + * @return Chapter + */ + public function newPage($input = ['name' => 'test page', 'html' => 'My new test page']) { + $book = Book::first(); + $entityRepo = $this->app[EntityRepo::class]; + $draftPage = $entityRepo->getDraftPage($book); + return $entityRepo->publishPageDraft($draftPage, $input); + } + + /** + * Quickly sets an array of settings. + * @param $settingsArray + */ + protected function setSettings($settingsArray) + { + $settings = app(SettingService::class); + foreach ($settingsArray as $key => $value) { + $settings->put($key, $value); + } + } } \ No newline at end of file