/**
* Get a user that's not a system user such as the guest user.
*/
- public function getNormalUser()
+ public function getNormalUser(): User
{
return User::query()->where('system_name', '=', null)->get()->last();
}
return $permissionRepo->saveNewRole($roleData);
}
+ /**
+ * Create a group of entities that belong to a specific user.
+ *
+ * @return array{book: Book, chapter: Chapter, page: Page}
+ */
+ protected function createEntityChainBelongingToUser(User $creatorUser, ?User $updaterUser = null): array
+ {
+ if (empty($updaterUser)) {
+ $updaterUser = $creatorUser;
+ }
+
+ $userAttrs = ['created_by' => $creatorUser->id, 'owned_by' => $creatorUser->id, 'updated_by' => $updaterUser->id];
+ $book = factory(Book::class)->create($userAttrs);
+ $chapter = factory(Chapter::class)->create(array_merge(['book_id' => $book->id], $userAttrs));
+ $page = factory(Page::class)->create(array_merge(['book_id' => $book->id, 'chapter_id' => $chapter->id], $userAttrs));
+ $restrictionService = $this->app[PermissionService::class];
+ $restrictionService->buildJointPermissionsForEntity($book);
+
+ return compact('book', 'chapter', 'page');
+ }
+
/**
* Mock the HttpFetcher service and return the given data on fetch.
*/