mirror of
https://github.com/BookStackApp/BookStack.git
synced 2024-11-25 09:42:10 +08:00
Added tests for profile pages
This commit is contained in:
parent
4d9726dbdd
commit
86fbc9a936
|
@ -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
|
||||||
|
|
|
@ -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"> </div>
|
<div class="margin-top large"> </div>
|
||||||
<h3>Recent Activity</h3>
|
<h3>Recent Activity</h3>
|
||||||
@include('partials/activity-list', ['activity' => $activity])
|
@include('partials/activity-list', ['activity' => $activity])
|
||||||
|
|
|
@ -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
0
storage/fonts/.gitignore
vendored
Normal file → Executable 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
80
tests/UserProfileTest.php
Normal 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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user