]> BookStack Code Mirror - bookstack/commitdiff
Added tests for profile pages
authorDan Brown <redacted>
Thu, 18 Feb 2016 19:32:07 +0000 (19:32 +0000)
committerDan Brown <redacted>
Thu, 18 Feb 2016 19:32:07 +0000 (19:32 +0000)
app/Services/ActivityService.php
resources/views/home.blade.php
resources/views/users/profile.blade.php
storage/fonts/.gitignore [changed mode: 0644->0755]
tests/TestCase.php
tests/UserProfileTest.php [new file with mode: 0644]

index 06226f7e433e7a8ee0aae0dc5d830ce10bd48f87..a065ae01f4816e42ab48a6f786dc45fbc8b6d255 100644 (file)
@@ -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
index ccae9c0ea8f9c2102b6fd32b7548cd0fae6b259d..f71d0c492a5ed62c357c855b4bde97a0be2be3f4 100644 (file)
@@ -14,7 +14,7 @@
                 @include('partials/entity-list', ['entities' => $recents])
             </div>
 
-            <div class="col-md-4 col-md-offset-1">
+            <div class="col-md-4 col-md-offset-1" id="recent-activity">
                 <div class="margin-top large">&nbsp;</div>
                 <h3>Recent Activity</h3>
                 @include('partials/activity-list', ['activity' => $activity])
index 20b16894e49e5459c0d0a9c36de154dcc20e0acc..10189f9aa48900d1c5dabaaa9c0b557a63633d26 100644 (file)
@@ -22,7 +22,7 @@
                             </div>
                         </div>
                     </div>
-                    <div class="col-md-5 text-bigger">
+                    <div class="col-md-5 text-bigger" id="content-counts">
                         <div class="text-muted">Created Content</div>
                         <div class="text-book">
                             <i class="zmdi zmdi-book zmdi-hc-fw"></i> {{ $assetCounts['books'] }} {{ str_plural('Book', $assetCounts['books']) }}
@@ -65,7 +65,7 @@
                 @endif
             </div>
 
-            <div class="col-sm-4 col-sm-offset-1">
+            <div class="col-sm-4 col-sm-offset-1" id="recent-activity">
                 <h3>Recent Activity</h3>
                 @include('partials/activity-list', ['activity' => $activity])
             </div>
old mode 100644 (file)
new mode 100755 (executable)
index 24685321fcf84bac451c9e91fa1d96b8e2e59f92..4b8578a43280aae82c51e57bdafeee670c157eef 100644 (file)
@@ -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 (file)
index 0000000..170e7ee
--- /dev/null
@@ -0,0 +1,80 @@
+<?php
+
+class UserProfileTest extends TestCase
+{
+    protected $user;
+
+    public function setUp()
+    {
+        parent::setUp();
+        $this->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);
+    }
+    
+}