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; } /** * 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 * @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); } }