Added tests for profile pages

This commit is contained in:
Dan Brown 2016-02-18 19:32:07 +00:00
parent 4d9726dbdd
commit 86fbc9a936
6 changed files with 104 additions and 9 deletions

View File

@ -29,18 +29,19 @@ class ActivityService
*/ */
public function add(Entity $entity, $activityKey, $bookId = 0, $extra = false) public function add(Entity $entity, $activityKey, $bookId = 0, $extra = false)
{ {
$this->activity->user_id = $this->user->id; $activity = $this->activity->newInstance();
$this->activity->book_id = $bookId; $activity->user_id = $this->user->id;
$this->activity->key = strtolower($activityKey); $activity->book_id = $bookId;
$activity->key = strtolower($activityKey);
if ($extra !== false) { if ($extra !== false) {
$this->activity->extra = $extra; $activity->extra = $extra;
} }
$entity->activity()->save($this->activity); $entity->activity()->save($activity);
$this->setNotification($activityKey); $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 $activityKey
* @param int $bookId * @param int $bookId
* @param bool|false $extra * @param bool|false $extra

View File

@ -14,7 +14,7 @@
@include('partials/entity-list', ['entities' => $recents]) @include('partials/entity-list', ['entities' => $recents])
</div> </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> <div class="margin-top large">&nbsp;</div>
<h3>Recent Activity</h3> <h3>Recent Activity</h3>
@include('partials/activity-list', ['activity' => $activity]) @include('partials/activity-list', ['activity' => $activity])

View File

@ -22,7 +22,7 @@
</div> </div>
</div> </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-muted">Created Content</div>
<div class="text-book"> <div class="text-book">
<i class="zmdi zmdi-book zmdi-hc-fw"></i> {{ $assetCounts['books'] }} {{ str_plural('Book', $assetCounts['books']) }} <i class="zmdi zmdi-book zmdi-hc-fw"></i> {{ $assetCounts['books'] }} {{ str_plural('Book', $assetCounts['books']) }}
@ -65,7 +65,7 @@
@endif @endif
</div> </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> <h3>Recent Activity</h3>
@include('partials/activity-list', ['activity' => $activity]) @include('partials/activity-list', ['activity' => $activity])
</div> </div>

0
storage/fonts/.gitignore vendored Normal file → Executable file
View File

View File

@ -109,4 +109,18 @@ class TestCase extends Illuminate\Foundation\Testing\TestCase
return $this; 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;
}
} }

80
tests/UserProfileTest.php Normal file
View File

@ -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);
}
}