Moved/Updated old Activity tracking tests, started on entity tests
Started moving old EntityTests into more appropriate places within non-browserkit-test classes. Still many more to do.
This commit is contained in:
		
							parent
							
								
									badaf08e55
								
							
						
					
					
						commit
						121a746d59
					
				| 
						 | 
					@ -1,37 +0,0 @@
 | 
				
			||||||
<?php
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace Tests;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
use BookStack\Entities\Models\Book;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class ActivityTrackingTest extends BrowserKitTest
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    public function test_recently_viewed_books()
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        $books = Book::all()->take(10);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        $this->asAdmin()->visit('/books')
 | 
					 | 
				
			||||||
            ->dontSeeInElement('#recents', $books[0]->name)
 | 
					 | 
				
			||||||
            ->dontSeeInElement('#recents', $books[1]->name)
 | 
					 | 
				
			||||||
            ->visit($books[0]->getUrl())
 | 
					 | 
				
			||||||
            ->visit($books[1]->getUrl())
 | 
					 | 
				
			||||||
            ->visit('/books')
 | 
					 | 
				
			||||||
            ->seeInElement('#recents', $books[0]->name)
 | 
					 | 
				
			||||||
            ->seeInElement('#recents', $books[1]->name);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public function test_popular_books()
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        $books = Book::all()->take(10);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        $this->asAdmin()->visit('/books')
 | 
					 | 
				
			||||||
            ->dontSeeInElement('#popular', $books[0]->name)
 | 
					 | 
				
			||||||
            ->dontSeeInElement('#popular', $books[1]->name)
 | 
					 | 
				
			||||||
            ->visit($books[0]->getUrl())
 | 
					 | 
				
			||||||
            ->visit($books[1]->getUrl())
 | 
					 | 
				
			||||||
            ->visit($books[0]->getUrl())
 | 
					 | 
				
			||||||
            ->visit('/books')
 | 
					 | 
				
			||||||
            ->seeInNthElement('#popular .book', 0, $books[0]->name)
 | 
					 | 
				
			||||||
            ->seeInNthElement('#popular .book', 1, $books[1]->name);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					@ -369,4 +369,12 @@ class BookShelfTest extends TestCase
 | 
				
			||||||
        $resp = $this->asEditor()->get($newBook->getUrl());
 | 
					        $resp = $this->asEditor()->get($newBook->getUrl());
 | 
				
			||||||
        $resp->assertDontSee($shelfInfo['name']);
 | 
					        $resp->assertDontSee($shelfInfo['name']);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function test_cancel_on_child_book_creation_returns_to_original_shelf()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        /** @var Bookshelf $shelf */
 | 
				
			||||||
 | 
					        $shelf = Bookshelf::query()->first();
 | 
				
			||||||
 | 
					        $resp = $this->asEditor()->get($shelf->getUrl('/create-book'));
 | 
				
			||||||
 | 
					        $resp->assertElementContains('form a[href="' . $shelf->getUrl() . '"]', 'Cancel');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,6 +3,7 @@
 | 
				
			||||||
namespace Tests\Entity;
 | 
					namespace Tests\Entity;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use BookStack\Entities\Models\Book;
 | 
					use BookStack\Entities\Models\Book;
 | 
				
			||||||
 | 
					use BookStack\Entities\Models\Bookshelf;
 | 
				
			||||||
use Tests\TestCase;
 | 
					use Tests\TestCase;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class BookTest extends TestCase
 | 
					class BookTest extends TestCase
 | 
				
			||||||
| 
						 | 
					@ -34,6 +35,20 @@ class BookTest extends TestCase
 | 
				
			||||||
        $redirectReq->assertNotificationContains('Book Successfully Deleted');
 | 
					        $redirectReq->assertNotificationContains('Book Successfully Deleted');
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function test_cancel_on_create_page_leads_back_to_books_listing()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $resp = $this->asEditor()->get('/create-book');
 | 
				
			||||||
 | 
					        $resp->assertElementContains('form a[href="' . url('/books') . '"]', 'Cancel');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function test_cancel_on_edit_book_page_leads_back_to_book()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        /** @var Book $book */
 | 
				
			||||||
 | 
					        $book = Book::query()->first();
 | 
				
			||||||
 | 
					        $resp = $this->asEditor()->get($book->getUrl('/edit'));
 | 
				
			||||||
 | 
					        $resp->assertElementContains('form a[href="' . $book->getUrl() . '"]', 'Cancel');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public function test_next_previous_navigation_controls_show_within_book_content()
 | 
					    public function test_next_previous_navigation_controls_show_within_book_content()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $book = Book::query()->first();
 | 
					        $book = Book::query()->first();
 | 
				
			||||||
| 
						 | 
					@ -48,4 +63,60 @@ class BookTest extends TestCase
 | 
				
			||||||
        $resp->assertElementContains('#sibling-navigation', 'Previous');
 | 
					        $resp->assertElementContains('#sibling-navigation', 'Previous');
 | 
				
			||||||
        $resp->assertElementContains('#sibling-navigation', substr($chapter->name, 0, 20));
 | 
					        $resp->assertElementContains('#sibling-navigation', substr($chapter->name, 0, 20));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function test_recently_viewed_books_updates_as_expected()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $books = Book::all()->take(2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $this->asAdmin()->get('/books')
 | 
				
			||||||
 | 
					            ->assertElementNotContains('#recents', $books[0]->name)
 | 
				
			||||||
 | 
					            ->assertElementNotContains('#recents', $books[1]->name);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $this->get($books[0]->getUrl());
 | 
				
			||||||
 | 
					        $this->get($books[1]->getUrl());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $this->get('/books')
 | 
				
			||||||
 | 
					            ->assertElementContains('#recents', $books[0]->name)
 | 
				
			||||||
 | 
					            ->assertElementContains('#recents', $books[1]->name);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function test_popular_books_updates_upon_visits()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $books = Book::all()->take(2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $this->asAdmin()->get('/books')
 | 
				
			||||||
 | 
					            ->assertElementNotContains('#popular', $books[0]->name)
 | 
				
			||||||
 | 
					            ->assertElementNotContains('#popular', $books[1]->name);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $this->get($books[0]->getUrl());
 | 
				
			||||||
 | 
					        $this->get($books[1]->getUrl());
 | 
				
			||||||
 | 
					        $this->get($books[0]->getUrl());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $this->get('/books')
 | 
				
			||||||
 | 
					            ->assertElementContains('#popular .book:nth-child(1)', $books[0]->name)
 | 
				
			||||||
 | 
					            ->assertElementContains('#popular .book:nth-child(2)', $books[1]->name);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function test_books_view_shows_view_toggle_option()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        /** @var Book $book */
 | 
				
			||||||
 | 
					        $editor = $this->getEditor();
 | 
				
			||||||
 | 
					        setting()->putUser($editor, 'books_view_type', 'list');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $resp = $this->actingAs($editor)->get('/books');
 | 
				
			||||||
 | 
					        $resp->assertElementContains('form[action$="/settings/users/' . $editor->id . '/switch-books-view"]', 'Grid View');
 | 
				
			||||||
 | 
					        $resp->assertElementExists('input[name="view_type"][value="grid"]');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $resp = $this->patch("/settings/users/{$editor->id}/switch-books-view", ['view_type' => 'grid']);
 | 
				
			||||||
 | 
					        $resp->assertRedirect();
 | 
				
			||||||
 | 
					        $this->assertEquals('grid', setting()->getUser($editor, 'books_view_type'));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $resp = $this->actingAs($editor)->get('/books');
 | 
				
			||||||
 | 
					        $resp->assertElementContains('form[action$="/settings/users/' . $editor->id . '/switch-books-view"]', 'List View');
 | 
				
			||||||
 | 
					        $resp->assertElementExists('input[name="view_type"][value="list"]');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $resp = $this->patch("/settings/users/{$editor->id}/switch-books-view", ['view_type' => 'list']);
 | 
				
			||||||
 | 
					        $resp->assertRedirect();
 | 
				
			||||||
 | 
					        $this->assertEquals('list', setting()->getUser($editor, 'books_view_type'));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -67,26 +67,6 @@ class EntityTest extends BrowserKitTest
 | 
				
			||||||
            ->see($firstChapter->name);
 | 
					            ->see($firstChapter->name);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public function test_toggle_book_view()
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        $editor = $this->getEditor();
 | 
					 | 
				
			||||||
        setting()->putUser($editor, 'books_view_type', 'grid');
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        $this->actingAs($editor)
 | 
					 | 
				
			||||||
            ->visit('/books')
 | 
					 | 
				
			||||||
            ->pageHasElement('.featured-image-container')
 | 
					 | 
				
			||||||
            ->submitForm('List View')
 | 
					 | 
				
			||||||
            // Check redirection.
 | 
					 | 
				
			||||||
            ->seePageIs('/books')
 | 
					 | 
				
			||||||
            ->pageNotHasElement('.featured-image-container');
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        $this->actingAs($editor)
 | 
					 | 
				
			||||||
            ->visit('/books')
 | 
					 | 
				
			||||||
            ->submitForm('Grid View')
 | 
					 | 
				
			||||||
            ->seePageIs('/books')
 | 
					 | 
				
			||||||
            ->pageHasElement('.featured-image-container');
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public function pageCreation($chapter)
 | 
					    public function pageCreation($chapter)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $page = factory(Page::class)->make([
 | 
					        $page = factory(Page::class)->make([
 | 
				
			||||||
| 
						 | 
					@ -282,31 +262,6 @@ class EntityTest extends BrowserKitTest
 | 
				
			||||||
        $this->assertEquals('parta-partb-partc', $book->slug);
 | 
					        $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()
 | 
					    public function test_page_within_chapter_deletion_returns_to_chapter()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $chapter = Chapter::query()->first();
 | 
					        $chapter = Chapter::query()->first();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue