mirror of
https://github.com/BookStackApp/BookStack.git
synced 2024-11-25 09:42:10 +08:00
Applied StyleCi changes, updated php deps
This commit is contained in:
parent
e537d0c4e8
commit
1cc7c649dc
|
@ -31,7 +31,7 @@ class OidcOAuthProvider extends AbstractProvider
|
||||||
protected $tokenEndpoint;
|
protected $tokenEndpoint;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Scopes to use for the OIDC authorization call
|
* Scopes to use for the OIDC authorization call.
|
||||||
*/
|
*/
|
||||||
protected array $scopes = ['openid', 'profile', 'email'];
|
protected array $scopes = ['openid', 'profile', 'email'];
|
||||||
|
|
||||||
|
|
|
@ -2,9 +2,8 @@
|
||||||
|
|
||||||
namespace BookStack\Auth\Access\Oidc;
|
namespace BookStack\Auth\Access\Oidc;
|
||||||
|
|
||||||
use BookStack\Auth\Access\GroupSyncService;
|
|
||||||
use Illuminate\Support\Arr;
|
|
||||||
use function auth;
|
use function auth;
|
||||||
|
use BookStack\Auth\Access\GroupSyncService;
|
||||||
use BookStack\Auth\Access\LoginService;
|
use BookStack\Auth\Access\LoginService;
|
||||||
use BookStack\Auth\Access\RegistrationService;
|
use BookStack\Auth\Access\RegistrationService;
|
||||||
use BookStack\Auth\User;
|
use BookStack\Auth\User;
|
||||||
|
@ -12,6 +11,7 @@ use BookStack\Exceptions\JsonDebugException;
|
||||||
use BookStack\Exceptions\StoppedAuthenticationException;
|
use BookStack\Exceptions\StoppedAuthenticationException;
|
||||||
use BookStack\Exceptions\UserRegistrationException;
|
use BookStack\Exceptions\UserRegistrationException;
|
||||||
use function config;
|
use function config;
|
||||||
|
use Illuminate\Support\Arr;
|
||||||
use Illuminate\Support\Facades\Cache;
|
use Illuminate\Support\Facades\Cache;
|
||||||
use League\OAuth2\Client\OptionProvider\HttpBasicAuthOptionProvider;
|
use League\OAuth2\Client\OptionProvider\HttpBasicAuthOptionProvider;
|
||||||
use League\OAuth2\Client\Provider\Exception\IdentityProviderException;
|
use League\OAuth2\Client\Provider\Exception\IdentityProviderException;
|
||||||
|
@ -35,11 +35,10 @@ class OidcService
|
||||||
*/
|
*/
|
||||||
public function __construct(
|
public function __construct(
|
||||||
RegistrationService $registrationService,
|
RegistrationService $registrationService,
|
||||||
LoginService $loginService,
|
LoginService $loginService,
|
||||||
HttpClient $httpClient,
|
HttpClient $httpClient,
|
||||||
GroupSyncService $groupService
|
GroupSyncService $groupService
|
||||||
)
|
) {
|
||||||
{
|
|
||||||
$this->registrationService = $registrationService;
|
$this->registrationService = $registrationService;
|
||||||
$this->loginService = $loginService;
|
$this->loginService = $loginService;
|
||||||
$this->httpClient = $httpClient;
|
$this->httpClient = $httpClient;
|
||||||
|
@ -148,7 +147,7 @@ class OidcService
|
||||||
$scopeConfig = $this->config()['additional_scopes'] ?: '';
|
$scopeConfig = $this->config()['additional_scopes'] ?: '';
|
||||||
|
|
||||||
$scopeArr = explode(',', $scopeConfig);
|
$scopeArr = explode(',', $scopeConfig);
|
||||||
$scopeArr = array_map(fn(string $scope) => trim($scope), $scopeArr);
|
$scopeArr = array_map(fn (string $scope) => trim($scope), $scopeArr);
|
||||||
|
|
||||||
return array_filter($scopeArr);
|
return array_filter($scopeArr);
|
||||||
}
|
}
|
||||||
|
@ -192,7 +191,7 @@ class OidcService
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
return array_values(array_filter($groupsList, function($val) {
|
return array_values(array_filter($groupsList, function ($val) {
|
||||||
return is_string($val);
|
return is_string($val);
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,7 @@ return [
|
||||||
// The number of revisions to keep in the database.
|
// The number of revisions to keep in the database.
|
||||||
// Once this limit is reached older revisions will be deleted.
|
// Once this limit is reached older revisions will be deleted.
|
||||||
// If set to false then a limit will not be enforced.
|
// If set to false then a limit will not be enforced.
|
||||||
'revision_limit' => env('REVISION_LIMIT', 100),
|
'revision_limit' => env('REVISION_LIMIT', 100),
|
||||||
|
|
||||||
// The number of days that content will remain in the recycle bin before
|
// The number of days that content will remain in the recycle bin before
|
||||||
// being considered for auto-removal. It is not a guarantee that content will
|
// being considered for auto-removal. It is not a guarantee that content will
|
||||||
|
|
|
@ -58,6 +58,7 @@ class RegenerateCommentContent extends Command
|
||||||
|
|
||||||
DB::setDefaultConnection($connection);
|
DB::setDefaultConnection($connection);
|
||||||
$this->comment('Comment HTML content has been regenerated');
|
$this->comment('Comment HTML content has been regenerated');
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,6 +50,7 @@ class RegeneratePermissions extends Command
|
||||||
|
|
||||||
DB::setDefaultConnection($connection);
|
DB::setDefaultConnection($connection);
|
||||||
$this->comment('Permissions regenerated');
|
$this->comment('Permissions regenerated');
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -53,6 +53,7 @@ class RegenerateReferences extends Command
|
||||||
DB::setDefaultConnection($connection);
|
DB::setDefaultConnection($connection);
|
||||||
|
|
||||||
$this->comment('References have been regenerated');
|
$this->comment('References have been regenerated');
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,12 +32,11 @@ class PageRepo
|
||||||
* PageRepo constructor.
|
* PageRepo constructor.
|
||||||
*/
|
*/
|
||||||
public function __construct(
|
public function __construct(
|
||||||
BaseRepo $baseRepo,
|
BaseRepo $baseRepo,
|
||||||
RevisionRepo $revisionRepo,
|
RevisionRepo $revisionRepo,
|
||||||
ReferenceStore $referenceStore,
|
ReferenceStore $referenceStore,
|
||||||
ReferenceUpdater $referenceUpdater
|
ReferenceUpdater $referenceUpdater
|
||||||
)
|
) {
|
||||||
{
|
|
||||||
$this->baseRepo = $baseRepo;
|
$this->baseRepo = $baseRepo;
|
||||||
$this->revisionRepo = $revisionRepo;
|
$this->revisionRepo = $revisionRepo;
|
||||||
$this->referenceStore = $referenceStore;
|
$this->referenceStore = $referenceStore;
|
||||||
|
@ -135,11 +134,11 @@ class PageRepo
|
||||||
public function getNewDraftPage(Entity $parent)
|
public function getNewDraftPage(Entity $parent)
|
||||||
{
|
{
|
||||||
$page = (new Page())->forceFill([
|
$page = (new Page())->forceFill([
|
||||||
'name' => trans('entities.pages_initial_name'),
|
'name' => trans('entities.pages_initial_name'),
|
||||||
'created_by' => user()->id,
|
'created_by' => user()->id,
|
||||||
'owned_by' => user()->id,
|
'owned_by' => user()->id,
|
||||||
'updated_by' => user()->id,
|
'updated_by' => user()->id,
|
||||||
'draft' => true,
|
'draft' => true,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
if ($parent instanceof Chapter) {
|
if ($parent instanceof Chapter) {
|
||||||
|
|
|
@ -128,4 +128,4 @@ class RevisionRepo
|
||||||
->where('page_id', '=', $pageId)
|
->where('page_id', '=', $pageId)
|
||||||
->orderBy('created_at', 'desc');
|
->orderBy('created_at', 'desc');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,6 @@ class ChapterController extends Controller
|
||||||
protected ChapterRepo $chapterRepo;
|
protected ChapterRepo $chapterRepo;
|
||||||
protected ReferenceFetcher $referenceFetcher;
|
protected ReferenceFetcher $referenceFetcher;
|
||||||
|
|
||||||
|
|
||||||
public function __construct(ChapterRepo $chapterRepo, ReferenceFetcher $referenceFetcher)
|
public function __construct(ChapterRepo $chapterRepo, ReferenceFetcher $referenceFetcher)
|
||||||
{
|
{
|
||||||
$this->chapterRepo = $chapterRepo;
|
$this->chapterRepo = $chapterRepo;
|
||||||
|
|
|
@ -27,7 +27,7 @@ class ReferenceController extends Controller
|
||||||
$references = $this->referenceFetcher->getPageReferencesToEntity($page);
|
$references = $this->referenceFetcher->getPageReferencesToEntity($page);
|
||||||
|
|
||||||
return view('pages.references', [
|
return view('pages.references', [
|
||||||
'page' => $page,
|
'page' => $page,
|
||||||
'references' => $references,
|
'references' => $references,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
@ -42,7 +42,7 @@ class ReferenceController extends Controller
|
||||||
$references = $this->referenceFetcher->getPageReferencesToEntity($chapter);
|
$references = $this->referenceFetcher->getPageReferencesToEntity($chapter);
|
||||||
|
|
||||||
return view('chapters.references', [
|
return view('chapters.references', [
|
||||||
'chapter' => $chapter,
|
'chapter' => $chapter,
|
||||||
'references' => $references,
|
'references' => $references,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
@ -56,7 +56,7 @@ class ReferenceController extends Controller
|
||||||
$references = $this->referenceFetcher->getPageReferencesToEntity($book);
|
$references = $this->referenceFetcher->getPageReferencesToEntity($book);
|
||||||
|
|
||||||
return view('books.references', [
|
return view('books.references', [
|
||||||
'book' => $book,
|
'book' => $book,
|
||||||
'references' => $references,
|
'references' => $references,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
@ -70,7 +70,7 @@ class ReferenceController extends Controller
|
||||||
$references = $this->referenceFetcher->getPageReferencesToEntity($shelf);
|
$references = $this->referenceFetcher->getPageReferencesToEntity($shelf);
|
||||||
|
|
||||||
return view('shelves.references', [
|
return view('shelves.references', [
|
||||||
'shelf' => $shelf,
|
'shelf' => $shelf,
|
||||||
'references' => $references,
|
'references' => $references,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -99,5 +99,4 @@ class CrossLinkParser
|
||||||
new BookshelfLinkModelResolver(),
|
new BookshelfLinkModelResolver(),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
|
||||||
|
|
|
@ -19,8 +19,8 @@ class BookLinkModelResolver implements CrossLinkModelResolver
|
||||||
$bookSlug = $matches[1];
|
$bookSlug = $matches[1];
|
||||||
|
|
||||||
/** @var ?Book $model */
|
/** @var ?Book $model */
|
||||||
$model = Book::query()->where('slug', '=', $bookSlug)->first(['id']);
|
$model = Book::query()->where('slug', '=', $bookSlug)->first(['id']);
|
||||||
|
|
||||||
return $model;
|
return $model;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,8 +19,8 @@ class BookshelfLinkModelResolver implements CrossLinkModelResolver
|
||||||
$shelfSlug = $matches[1];
|
$shelfSlug = $matches[1];
|
||||||
|
|
||||||
/** @var ?Bookshelf $model */
|
/** @var ?Bookshelf $model */
|
||||||
$model = Bookshelf::query()->where('slug', '=', $shelfSlug)->first(['id']);
|
$model = Bookshelf::query()->where('slug', '=', $shelfSlug)->first(['id']);
|
||||||
|
|
||||||
return $model;
|
return $model;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,4 +24,4 @@ class ChapterLinkModelResolver implements CrossLinkModelResolver
|
||||||
|
|
||||||
return $model;
|
return $model;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,4 +10,4 @@ interface CrossLinkModelResolver
|
||||||
* Resolve the given href link value to a model.
|
* Resolve the given href link value to a model.
|
||||||
*/
|
*/
|
||||||
public function resolve(string $link): ?Model;
|
public function resolve(string $link): ?Model;
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,4 +24,4 @@ class PageLinkModelResolver implements CrossLinkModelResolver
|
||||||
|
|
||||||
return $model;
|
return $model;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,4 +22,4 @@ class PagePermalinkModelResolver implements CrossLinkModelResolver
|
||||||
|
|
||||||
return $model;
|
return $model;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,14 +2,13 @@
|
||||||
|
|
||||||
namespace BookStack\References;
|
namespace BookStack\References;
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
use Illuminate\Database\Eloquent\Relations\MorphTo;
|
use Illuminate\Database\Eloquent\Relations\MorphTo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @property int $from_id
|
* @property int $from_id
|
||||||
* @property string $from_type
|
* @property string $from_type
|
||||||
* @property int $to_id
|
* @property int $to_id
|
||||||
* @property string $to_type
|
* @property string $to_type
|
||||||
*/
|
*/
|
||||||
class Reference extends Model
|
class Reference extends Model
|
||||||
|
|
|
@ -26,9 +26,9 @@ class ReferenceFetcher
|
||||||
$baseQuery = $entity->referencesTo()
|
$baseQuery = $entity->referencesTo()
|
||||||
->where('from_type', '=', (new Page())->getMorphClass())
|
->where('from_type', '=', (new Page())->getMorphClass())
|
||||||
->with([
|
->with([
|
||||||
'from' => fn(Relation $query) => $query->select(Page::$listAttributes),
|
'from' => fn (Relation $query) => $query->select(Page::$listAttributes),
|
||||||
'from.book' => fn(Relation $query) => $query->scopes('visible'),
|
'from.book' => fn (Relation $query) => $query->scopes('visible'),
|
||||||
'from.chapter' => fn(Relation $query) => $query->scopes('visible')
|
'from.chapter' => fn (Relation $query) => $query->scopes('visible'),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$references = $this->permissions->restrictEntityRelationQuery(
|
$references = $this->permissions->restrictEntityRelationQuery(
|
||||||
|
@ -59,4 +59,4 @@ class ReferenceFetcher
|
||||||
|
|
||||||
return $count;
|
return $count;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,6 @@ use Illuminate\Database\Eloquent\Collection;
|
||||||
|
|
||||||
class ReferenceStore
|
class ReferenceStore
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update the outgoing references for the given page.
|
* Update the outgoing references for the given page.
|
||||||
*/
|
*/
|
||||||
|
@ -25,7 +24,7 @@ class ReferenceStore
|
||||||
->where('from_type', '=', (new Page())->getMorphClass())
|
->where('from_type', '=', (new Page())->getMorphClass())
|
||||||
->delete();
|
->delete();
|
||||||
|
|
||||||
Page::query()->select(['id', 'html'])->chunk(100, function(Collection $pages) {
|
Page::query()->select(['id', 'html'])->chunk(100, function (Collection $pages) {
|
||||||
$this->updateForPages($pages->all());
|
$this->updateForPages($pages->all());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -44,7 +43,7 @@ class ReferenceStore
|
||||||
$parser = CrossLinkParser::createWithEntityResolvers();
|
$parser = CrossLinkParser::createWithEntityResolvers();
|
||||||
$references = [];
|
$references = [];
|
||||||
|
|
||||||
$pageIds = array_map(fn(Page $page) => $page->id, $pages);
|
$pageIds = array_map(fn (Page $page) => $page->id, $pages);
|
||||||
Reference::query()
|
Reference::query()
|
||||||
->where('from_type', '=', $pages[0]->getMorphClass())
|
->where('from_type', '=', $pages[0]->getMorphClass())
|
||||||
->whereIn('from_id', $pageIds)
|
->whereIn('from_id', $pageIds)
|
||||||
|
@ -55,10 +54,10 @@ class ReferenceStore
|
||||||
|
|
||||||
foreach ($models as $model) {
|
foreach ($models as $model) {
|
||||||
$references[] = [
|
$references[] = [
|
||||||
'from_id' => $page->id,
|
'from_id' => $page->id,
|
||||||
'from_type' => $page->getMorphClass(),
|
'from_type' => $page->getMorphClass(),
|
||||||
'to_id' => $model->id,
|
'to_id' => $model->id,
|
||||||
'to_type' => $model->getMorphClass(),
|
'to_type' => $model->getMorphClass(),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -67,5 +66,4 @@ class ReferenceStore
|
||||||
Reference::query()->insert($referenceDataChunk);
|
Reference::query()->insert($referenceDataChunk);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
|
||||||
|
|
|
@ -91,4 +91,4 @@ class ReferenceUpdater
|
||||||
|
|
||||||
return $html;
|
return $html;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
821
composer.lock
generated
821
composer.lock
generated
File diff suppressed because it is too large
Load Diff
|
@ -374,7 +374,7 @@ class OidcTest extends TestCase
|
||||||
$resp = $this->runLogin([
|
$resp = $this->runLogin([
|
||||||
'email' => 'benny@example.com',
|
'email' => 'benny@example.com',
|
||||||
'sub' => 'benny1010101',
|
'sub' => 'benny1010101',
|
||||||
'groups' => ['Wizards', 'Zookeepers']
|
'groups' => ['Wizards', 'Zookeepers'],
|
||||||
]);
|
]);
|
||||||
$resp->assertRedirect('/');
|
$resp->assertRedirect('/');
|
||||||
|
|
||||||
|
@ -398,13 +398,13 @@ class OidcTest extends TestCase
|
||||||
$resp = $this->runLogin([
|
$resp = $this->runLogin([
|
||||||
'email' => 'benny@example.com',
|
'email' => 'benny@example.com',
|
||||||
'sub' => 'benny1010101',
|
'sub' => 'benny1010101',
|
||||||
'my' => [
|
'my' => [
|
||||||
'custom' => [
|
'custom' => [
|
||||||
'groups' => [
|
'groups' => [
|
||||||
'attr' => ['Wizards']
|
'attr' => ['Wizards'],
|
||||||
]
|
],
|
||||||
]
|
],
|
||||||
]
|
],
|
||||||
]);
|
]);
|
||||||
$resp->assertRedirect('/');
|
$resp->assertRedirect('/');
|
||||||
|
|
||||||
|
|
|
@ -23,10 +23,10 @@ class RegenerateReferencesCommandTest extends TestCase
|
||||||
->assertExitCode(0);
|
->assertExitCode(0);
|
||||||
|
|
||||||
$this->assertDatabaseHas('references', [
|
$this->assertDatabaseHas('references', [
|
||||||
'from_id' => $page->id,
|
'from_id' => $page->id,
|
||||||
'from_type' => $page->getMorphClass(),
|
'from_type' => $page->getMorphClass(),
|
||||||
'to_id' => $book->id,
|
'to_id' => $book->id,
|
||||||
'to_type' => $book->getMorphClass(),
|
'to_type' => $book->getMorphClass(),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,14 +2,12 @@
|
||||||
|
|
||||||
namespace Tests\References;
|
namespace Tests\References;
|
||||||
|
|
||||||
use BookStack\Entities\Models\Book;
|
|
||||||
use BookStack\Entities\Models\Page;
|
use BookStack\Entities\Models\Page;
|
||||||
use BookStack\References\CrossLinkParser;
|
use BookStack\References\CrossLinkParser;
|
||||||
use Tests\TestCase;
|
use Tests\TestCase;
|
||||||
|
|
||||||
class CrossLinkParserTest extends TestCase
|
class CrossLinkParserTest extends TestCase
|
||||||
{
|
{
|
||||||
|
|
||||||
public function test_instance_with_entity_resolvers_matches_entity_links()
|
public function test_instance_with_entity_resolvers_matches_entity_links()
|
||||||
{
|
{
|
||||||
$entities = $this->getEachEntityType();
|
$entities = $this->getEachEntityType();
|
||||||
|
@ -17,7 +15,7 @@ class CrossLinkParserTest extends TestCase
|
||||||
|
|
||||||
$html = '
|
$html = '
|
||||||
<a href="' . url('/link/' . $otherPage->id) . '#cat">Page Permalink</a>
|
<a href="' . url('/link/' . $otherPage->id) . '#cat">Page Permalink</a>
|
||||||
<a href="' . $entities['page'] ->getUrl(). '?a=b">Page Link</a>
|
<a href="' . $entities['page']->getUrl() . '?a=b">Page Link</a>
|
||||||
<a href="' . $entities['chapter']->getUrl() . '?cat=mouse#donkey">Chapter Link</a>
|
<a href="' . $entities['chapter']->getUrl() . '?cat=mouse#donkey">Chapter Link</a>
|
||||||
<a href="' . $entities['book']->getUrl() . '/edit">Book Link</a>
|
<a href="' . $entities['book']->getUrl() . '/edit">Book Link</a>
|
||||||
<a href="' . $entities['bookshelf']->getUrl() . '/edit?cat=happy#hello">Shelf Link</a>
|
<a href="' . $entities['bookshelf']->getUrl() . '/edit?cat=happy#hello">Shelf Link</a>
|
||||||
|
|
|
@ -12,7 +12,6 @@ use Tests\TestCase;
|
||||||
|
|
||||||
class ReferencesTest extends TestCase
|
class ReferencesTest extends TestCase
|
||||||
{
|
{
|
||||||
|
|
||||||
public function test_references_created_on_page_update()
|
public function test_references_created_on_page_update()
|
||||||
{
|
{
|
||||||
/** @var Page $pageA */
|
/** @var Page $pageA */
|
||||||
|
@ -24,14 +23,14 @@ class ReferencesTest extends TestCase
|
||||||
|
|
||||||
$this->asEditor()->put($pageA->getUrl(), [
|
$this->asEditor()->put($pageA->getUrl(), [
|
||||||
'name' => 'Reference test',
|
'name' => 'Reference test',
|
||||||
'html' => '<a href="' . $pageB->getUrl() . '">Testing</a>'
|
'html' => '<a href="' . $pageB->getUrl() . '">Testing</a>',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$this->assertDatabaseHas('references', [
|
$this->assertDatabaseHas('references', [
|
||||||
'from_id' => $pageA->id,
|
'from_id' => $pageA->id,
|
||||||
'from_type' => $pageA->getMorphClass(),
|
'from_type' => $pageA->getMorphClass(),
|
||||||
'to_id' => $pageB->id,
|
'to_id' => $pageB->id,
|
||||||
'to_type' => $pageB->getMorphClass(),
|
'to_type' => $pageB->getMorphClass(),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -141,7 +140,7 @@ class ReferencesTest extends TestCase
|
||||||
$this->assertStringContainsString('href="http://localhost/books/my-updated-book-slugaroo"', $page->html);
|
$this->assertStringContainsString('href="http://localhost/books/my-updated-book-slugaroo"', $page->html);
|
||||||
$this->assertDatabaseHas('page_revisions', [
|
$this->assertDatabaseHas('page_revisions', [
|
||||||
'page_id' => $page->id,
|
'page_id' => $page->id,
|
||||||
'summary' => 'System auto-update of internal links'
|
'summary' => 'System auto-update of internal links',
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -179,10 +178,9 @@ class ReferencesTest extends TestCase
|
||||||
{
|
{
|
||||||
(new Reference())->forceFill([
|
(new Reference())->forceFill([
|
||||||
'from_type' => $from->getMorphClass(),
|
'from_type' => $from->getMorphClass(),
|
||||||
'from_id' => $from->id,
|
'from_id' => $from->id,
|
||||||
'to_type' => $to->getMorphClass(),
|
'to_type' => $to->getMorphClass(),
|
||||||
'to_id' => $to->id,
|
'to_id' => $to->id,
|
||||||
])->save();
|
])->save();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user