Input WYSIWYG: Added testing for description references

This commit is contained in:
Dan Brown 2023-12-19 12:55:51 +00:00
parent 2fbed3919b
commit 077b9709d4
No known key found for this signature in database
GPG key ID: 46D9F943C24A2EF9

View file

@ -30,7 +30,30 @@ class ReferencesTest extends TestCase
]);
}
public function test_references_deleted_on_entity_delete()
public function test_references_created_on_book_chapter_bookshelf_update()
{
$entities = [$this->entities->book(), $this->entities->chapter(), $this->entities->shelf()];
$shelf = $this->entities->shelf();
foreach ($entities as $entity) {
$entity->refresh();
$this->assertDatabaseMissing('references', ['from_id' => $entity->id, 'from_type' => $entity->getMorphClass()]);
$this->asEditor()->put($entity->getUrl(), [
'name' => 'Reference test',
'description_html' => '<a href="' . $shelf->getUrl() . '">Testing</a>',
]);
$this->assertDatabaseHas('references', [
'from_id' => $entity->id,
'from_type' => $entity->getMorphClass(),
'to_id' => $shelf->id,
'to_type' => $shelf->getMorphClass(),
]);
}
}
public function test_references_deleted_on_page_delete()
{
$pageA = $this->entities->page();
$pageB = $this->entities->page();
@ -48,6 +71,25 @@ class ReferencesTest extends TestCase
$this->assertDatabaseMissing('references', ['to_id' => $pageA->id, 'to_type' => $pageA->getMorphClass()]);
}
public function test_references_from_deleted_on_book_chapter_shelf_delete()
{
$entities = [$this->entities->chapter(), $this->entities->book(), $this->entities->shelf()];
$shelf = $this->entities->shelf();
foreach ($entities as $entity) {
$this->createReference($entity, $shelf);
$this->assertDatabaseHas('references', ['from_id' => $entity->id, 'from_type' => $entity->getMorphClass()]);
$this->asEditor()->delete($entity->getUrl());
app(TrashCan::class)->empty();
$this->assertDatabaseMissing('references', [
'from_id' => $entity->id,
'from_type' => $entity->getMorphClass()
]);
}
}
public function test_references_to_count_visible_on_entity_show_view()
{
$entities = $this->entities->all();
@ -203,6 +245,32 @@ class ReferencesTest extends TestCase
$this->assertEquals($expected, $page->markdown);
}
public function test_description_links_from_book_chapter_shelf_updated_on_url_change()
{
$entities = [$this->entities->chapter(), $this->entities->book(), $this->entities->shelf()];
$shelf = $this->entities->shelf();
$this->asEditor();
foreach ($entities as $entity) {
$this->put($entity->getUrl(), [
'name' => 'Reference test',
'description_html' => '<a href="' . $shelf->getUrl() . '">Testing</a>',
]);
}
$oldUrl = $shelf->getUrl();
$this->put($shelf->getUrl(), ['name' => 'My updated shelf link']);
$shelf->refresh();
$this->assertNotEquals($oldUrl, $shelf->getUrl());
foreach ($entities as $entity) {
$oldHtml = $entity->description_html;
$entity->refresh();
$this->assertNotEquals($oldHtml, $entity->description_html);
$this->assertStringContainsString($shelf->getUrl(), $entity->description_html);
}
}
protected function createReference(Model $from, Model $to)
{
(new Reference())->forceFill([