Added regenerate-references command test
Also updated model resolvers to only fetch model ID, to prevent bringing back way more data from database than desired.
This commit is contained in:
parent
5d29d0cc7b
commit
3290ab3ac9
7 changed files with 38 additions and 6 deletions
|
@ -19,7 +19,7 @@ class BookLinkModelResolver implements CrossLinkModelResolver
|
||||||
$bookSlug = $matches[1];
|
$bookSlug = $matches[1];
|
||||||
|
|
||||||
/** @var ?Book $model */
|
/** @var ?Book $model */
|
||||||
$model = Book::query()->where('slug', '=', $bookSlug)->first();
|
$model = Book::query()->where('slug', '=', $bookSlug)->first(['id']);
|
||||||
|
|
||||||
return $model;
|
return $model;
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,7 +19,7 @@ class BookshelfLinkModelResolver implements CrossLinkModelResolver
|
||||||
$shelfSlug = $matches[1];
|
$shelfSlug = $matches[1];
|
||||||
|
|
||||||
/** @var ?Bookshelf $model */
|
/** @var ?Bookshelf $model */
|
||||||
$model = Bookshelf::query()->where('slug', '=', $shelfSlug)->first();
|
$model = Bookshelf::query()->where('slug', '=', $shelfSlug)->first(['id']);
|
||||||
|
|
||||||
return $model;
|
return $model;
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,7 +20,7 @@ class ChapterLinkModelResolver implements CrossLinkModelResolver
|
||||||
$chapterSlug = $matches[2];
|
$chapterSlug = $matches[2];
|
||||||
|
|
||||||
/** @var ?Chapter $model */
|
/** @var ?Chapter $model */
|
||||||
$model = Chapter::query()->whereSlugs($bookSlug, $chapterSlug)->first();
|
$model = Chapter::query()->whereSlugs($bookSlug, $chapterSlug)->first(['id']);
|
||||||
|
|
||||||
return $model;
|
return $model;
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,7 +20,7 @@ class PageLinkModelResolver implements CrossLinkModelResolver
|
||||||
$pageSlug = $matches[2];
|
$pageSlug = $matches[2];
|
||||||
|
|
||||||
/** @var ?Page $model */
|
/** @var ?Page $model */
|
||||||
$model = Page::query()->whereSlugs($bookSlug, $pageSlug)->first();
|
$model = Page::query()->whereSlugs($bookSlug, $pageSlug)->first(['id']);
|
||||||
|
|
||||||
return $model;
|
return $model;
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,7 @@ class PagePermalinkModelResolver implements CrossLinkModelResolver
|
||||||
|
|
||||||
$id = intval($matches[1]);
|
$id = intval($matches[1]);
|
||||||
/** @var ?Page $model */
|
/** @var ?Page $model */
|
||||||
$model = Page::query()->find($id);
|
$model = Page::query()->find($id, ['id']);
|
||||||
|
|
||||||
return $model;
|
return $model;
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,7 @@ class ReferenceService
|
||||||
{
|
{
|
||||||
Reference::query()
|
Reference::query()
|
||||||
->where('from_type', '=', (new Page())->getMorphClass())
|
->where('from_type', '=', (new Page())->getMorphClass())
|
||||||
->truncate();
|
->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());
|
||||||
|
|
32
tests/Commands/RegenerateReferencesCommandTest.php
Normal file
32
tests/Commands/RegenerateReferencesCommandTest.php
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Tests\Commands;
|
||||||
|
|
||||||
|
use BookStack\Entities\Models\Page;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use Tests\TestCase;
|
||||||
|
|
||||||
|
class RegenerateReferencesCommandTest extends TestCase
|
||||||
|
{
|
||||||
|
public function test_regenerate_references_command()
|
||||||
|
{
|
||||||
|
/** @var Page $page */
|
||||||
|
$page = Page::query()->first();
|
||||||
|
$book = $page->book;
|
||||||
|
|
||||||
|
$page->html = '<a href="' . $book->getUrl() . '">Book Link</a>';
|
||||||
|
$page->save();
|
||||||
|
|
||||||
|
DB::table('references')->delete();
|
||||||
|
|
||||||
|
$this->artisan('bookstack:regenerate-references')
|
||||||
|
->assertExitCode(0);
|
||||||
|
|
||||||
|
$this->assertDatabaseHas('references', [
|
||||||
|
'from_id' => $page->id,
|
||||||
|
'from_type' => $page->getMorphClass(),
|
||||||
|
'to_id' => $book->id,
|
||||||
|
'to_type' => $book->getMorphClass(),
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue