-<?php namespace Tests;
-
-use BookStack\Book;
-use BookStack\Chapter;
-use BookStack\Page;
-use BookStack\Repos\EntityRepo;
-use BookStack\Repos\UserRepo;
+<?php namespace Tests\Entity;
+
+use BookStack\Entities\Bookshelf;
+use BookStack\Entities\Book;
+use BookStack\Entities\Chapter;
+use BookStack\Entities\Page;
+use BookStack\Auth\UserRepo;
+use BookStack\Entities\Repos\PageRepo;
use Carbon\Carbon;
+use Illuminate\Support\Facades\DB;
+use Tests\BrowserKitTest;
class EntityTest extends BrowserKitTest
{
->click('Sort')
->seePageIs($bookToSort->getUrl() . '/sort')
->seeStatusCode(200)
- ->see($bookToSort->name)
- // Ensure page shows other books
- ->see($books[1]->name);
+ ->see($bookToSort->name);
}
public function test_book_sort_item_returns_book_content()
$entities = $this->createEntityChainBelongingToUser($creator, $updater);
$this->actingAs($creator);
app(UserRepo::class)->destroy($creator);
- app(EntityRepo::class)->savePageRevision($entities['page']);
+ app(PageRepo::class)->update($entities['page'], ['html' => '<p>hello!</p>>']);
$this->checkEntitiesViewable($entities);
}
$entities = $this->createEntityChainBelongingToUser($creator, $updater);
$this->actingAs($updater);
app(UserRepo::class)->destroy($updater);
- app(EntityRepo::class)->savePageRevision($entities['page']);
+ app(PageRepo::class)->update($entities['page'], ['html' => '<p>Hello there!</p>']);
$this->checkEntitiesViewable($entities);
}
->click('Revisions')->seeStatusCode(200);
}
- public function test_recently_created_pages_view()
- {
- $user = $this->getEditor();
- $content = $this->createEntityChainBelongingToUser($user);
-
- $this->asAdmin()->visit('/pages/recently-created')
- ->seeInNthElement('.entity-list .page', 0, $content['page']->name);
- }
-
public function test_recently_updated_pages_view()
{
$user = $this->getEditor();
public function test_slug_multi_byte_lower_casing()
{
- $entityRepo = app(EntityRepo::class);
- $book = $entityRepo->createFromInput('book', [
+ $book = $this->newBook([
'name' => 'КНИГА'
]);
public function test_slug_format()
{
- $entityRepo = app(EntityRepo::class);
- $book = $entityRepo->createFromInput('book', [
+ $book = $this->newBook([
'name' => 'PartA / PartB / PartC'
]);
$this->assertEquals('parta-partb-partc', $book->slug);
}
+ public function test_shelf_cancel_creation_returns_to_correct_place()
+ {
+ $shelf = Bookshelf::first();
+
+ // Cancel button from shelf goes back to shelf
+ $this->asEditor()->visit($shelf->getUrl('/create-book'))
+ ->see('Cancel')
+ ->click('Cancel')
+ ->seePageIs($shelf->getUrl());
+
+ // Cancel button from books goes back to books
+ $this->asEditor()->visit('/create-book')
+ ->see('Cancel')
+ ->click('Cancel')
+ ->seePageIs('/books');
+
+ // Cancel button from book edit goes back to book
+ $book = Book::first();
+
+ $this->asEditor()->visit($book->getUrl('/edit'))
+ ->see('Cancel')
+ ->click('Cancel')
+ ->seePageIs($book->getUrl());
+ }
+
+ public function test_page_within_chapter_deletion_returns_to_chapter()
+ {
+ $chapter = Chapter::query()->first();
+ $page = $chapter->pages()->first();
+
+ $this->asEditor()->visit($page->getUrl('/delete'))
+ ->submitForm('Confirm')
+ ->seePageIs($chapter->getUrl());
+ }
+
+ public function test_page_delete_removes_entity_from_its_activity()
+ {
+ $page = Page::query()->first();
+
+ $this->asEditor()->put($page->getUrl(), [
+ 'name' => 'My updated page',
+ 'html' => '<p>updated content</p>',
+ ]);
+ $page->refresh();
+
+ $this->seeInDatabase('activities', [
+ 'entity_id' => $page->id,
+ 'entity_type' => $page->getMorphClass(),
+ ]);
+
+ $resp = $this->delete($page->getUrl());
+ $resp->assertResponseStatus(302);
+
+ $this->dontSeeInDatabase('activities', [
+ 'entity_id' => $page->id,
+ 'entity_type' => $page->getMorphClass(),
+ ]);
+
+ $this->seeInDatabase('activities', [
+ 'extra' => 'My updated page',
+ 'entity_id' => 0,
+ 'entity_type' => '',
+ ]);
+ }
+
}