From 86fbc9a93679bf7e0abe7385edd56c94c4a46051 Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Thu, 18 Feb 2016 19:32:07 +0000 Subject: [PATCH] Added tests for profile pages --- app/Services/ActivityService.php | 13 ++-- resources/views/home.blade.php | 2 +- resources/views/users/profile.blade.php | 4 +- storage/fonts/.gitignore | 0 tests/TestCase.php | 14 +++++ tests/UserProfileTest.php | 80 +++++++++++++++++++++++++ 6 files changed, 104 insertions(+), 9 deletions(-) mode change 100644 => 100755 storage/fonts/.gitignore create mode 100644 tests/UserProfileTest.php diff --git a/app/Services/ActivityService.php b/app/Services/ActivityService.php index 06226f7e4..a065ae01f 100644 --- a/app/Services/ActivityService.php +++ b/app/Services/ActivityService.php @@ -29,18 +29,19 @@ class ActivityService */ public function add(Entity $entity, $activityKey, $bookId = 0, $extra = false) { - $this->activity->user_id = $this->user->id; - $this->activity->book_id = $bookId; - $this->activity->key = strtolower($activityKey); + $activity = $this->activity->newInstance(); + $activity->user_id = $this->user->id; + $activity->book_id = $bookId; + $activity->key = strtolower($activityKey); if ($extra !== false) { - $this->activity->extra = $extra; + $activity->extra = $extra; } - $entity->activity()->save($this->activity); + $entity->activity()->save($activity); $this->setNotification($activityKey); } /** - * Adds a activity history with a message & without binding to a entitiy. + * Adds a activity history with a message & without binding to a entity. * @param $activityKey * @param int $bookId * @param bool|false $extra diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php index ccae9c0ea..f71d0c492 100644 --- a/resources/views/home.blade.php +++ b/resources/views/home.blade.php @@ -14,7 +14,7 @@ @include('partials/entity-list', ['entities' => $recents]) -
+
 

Recent Activity

@include('partials/activity-list', ['activity' => $activity]) diff --git a/resources/views/users/profile.blade.php b/resources/views/users/profile.blade.php index 20b16894e..10189f9aa 100644 --- a/resources/views/users/profile.blade.php +++ b/resources/views/users/profile.blade.php @@ -22,7 +22,7 @@
-
+
Created Content
{{ $assetCounts['books'] }} {{ str_plural('Book', $assetCounts['books']) }} @@ -65,7 +65,7 @@ @endif
-
+

Recent Activity

@include('partials/activity-list', ['activity' => $activity])
diff --git a/storage/fonts/.gitignore b/storage/fonts/.gitignore old mode 100644 new mode 100755 diff --git a/tests/TestCase.php b/tests/TestCase.php index 24685321f..4b8578a43 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -109,4 +109,18 @@ class TestCase extends Illuminate\Foundation\Testing\TestCase return $this; } + + /** + * Click the text within the selected element. + * @param $parentElement + * @param $linkText + * @return $this + */ + protected function clickInElement($parentElement, $linkText) + { + $elem = $this->crawler->filter($parentElement); + $link = $elem->selectLink($linkText); + $this->visit($link->link()->getUri()); + return $this; + } } diff --git a/tests/UserProfileTest.php b/tests/UserProfileTest.php new file mode 100644 index 000000000..170e7eed1 --- /dev/null +++ b/tests/UserProfileTest.php @@ -0,0 +1,80 @@ +user = \BookStack\User::all()->last(); + } + + public function test_profile_page_shows_name() + { + $this->asAdmin() + ->visit('/user/' . $this->user->id) + ->see($this->user->name); + } + + public function test_profile_page_shows_recent_entities() + { + $content = $this->createEntityChainBelongingToUser($this->user, $this->user); + + $this->asAdmin() + ->visit('/user/' . $this->user->id) + // Check the recently created page is shown + ->see($content['page']->name) + // Check the recently created chapter is shown + ->see($content['chapter']->name) + // Check the recently created book is shown + ->see($content['book']->name); + } + + public function test_profile_page_shows_created_content_counts() + { + $newUser = $this->getNewUser(); + + $this->asAdmin()->visit('/user/' . $newUser->id) + ->see($newUser->name) + ->seeInElement('#content-counts', '0 Books') + ->seeInElement('#content-counts', '0 Chapters') + ->seeInElement('#content-counts', '0 Pages'); + + $this->createEntityChainBelongingToUser($newUser, $newUser); + + $this->asAdmin()->visit('/user/' . $newUser->id) + ->see($newUser->name) + ->seeInElement('#content-counts', '1 Book') + ->seeInElement('#content-counts', '1 Chapter') + ->seeInElement('#content-counts', '1 Page'); + } + + public function test_profile_page_shows_recent_activity() + { + $newUser = $this->getNewUser(); + $this->actingAs($newUser); + $entities = $this->createEntityChainBelongingToUser($newUser, $newUser); + Activity::add($entities['book'], 'book_update', $entities['book']->id); + Activity::add($entities['page'], 'page_create', $entities['book']->id); + + $this->asAdmin()->visit('/user/' . $newUser->id) + ->seeInElement('#recent-activity', 'updated book') + ->seeInElement('#recent-activity', 'created page') + ->seeInElement('#recent-activity', $entities['page']->name); + } + + public function test_clicking_user_name_in_activity_leads_to_profile_page() + { + $newUser = $this->getNewUser(); + $this->actingAs($newUser); + $entities = $this->createEntityChainBelongingToUser($newUser, $newUser); + Activity::add($entities['book'], 'book_update', $entities['book']->id); + Activity::add($entities['page'], 'page_create', $entities['book']->id); + + $this->asAdmin()->visit('/')->clickInElement('#recent-activity', $newUser->name) + ->seePageIs('/user/' . $newUser->id) + ->see($newUser->name); + } + +}