]> BookStack Code Mirror - bookstack/blob - tests/User/UserProfileTest.php
Skip intermediate login page with single provider
[bookstack] / tests / User / UserProfileTest.php
1 <?php
2
3 namespace Tests\User;
4
5 use Activity;
6 use BookStack\Actions\ActivityType;
7 use BookStack\Auth\User;
8 use Tests\TestCase;
9
10 class UserProfileTest extends TestCase
11 {
12     /**
13      * @var User
14      */
15     protected $user;
16
17     protected function setUp(): void
18     {
19         parent::setUp();
20         $this->user = User::all()->last();
21     }
22
23     public function test_profile_page_shows_name()
24     {
25         $this->asAdmin()
26             ->get('/user/' . $this->user->slug)
27             ->assertSee($this->user->name);
28     }
29
30     public function test_profile_page_shows_recent_entities()
31     {
32         $content = $this->createEntityChainBelongingToUser($this->user, $this->user);
33
34         $resp = $this->asAdmin()->get('/user/' . $this->user->slug);
35         // Check the recently created page is shown
36         $resp->assertSee($content['page']->name);
37         // Check the recently created chapter is shown
38         $resp->assertSee($content['chapter']->name);
39         // Check the recently created book is shown
40         $resp->assertSee($content['book']->name);
41     }
42
43     public function test_profile_page_shows_created_content_counts()
44     {
45         $newUser = User::factory()->create();
46
47         $this->asAdmin()->get('/user/' . $newUser->slug)
48             ->assertSee($newUser->name)
49             ->assertElementContains('#content-counts', '0 Books')
50             ->assertElementContains('#content-counts', '0 Chapters')
51             ->assertElementContains('#content-counts', '0 Pages');
52
53         $this->createEntityChainBelongingToUser($newUser, $newUser);
54
55         $this->asAdmin()->get('/user/' . $newUser->slug)
56             ->assertSee($newUser->name)
57             ->assertElementContains('#content-counts', '1 Book')
58             ->assertElementContains('#content-counts', '1 Chapter')
59             ->assertElementContains('#content-counts', '1 Page');
60     }
61
62     public function test_profile_page_shows_recent_activity()
63     {
64         $newUser = User::factory()->create();
65         $this->actingAs($newUser);
66         $entities = $this->createEntityChainBelongingToUser($newUser, $newUser);
67         Activity::add(ActivityType::BOOK_UPDATE, $entities['book']);
68         Activity::add(ActivityType::PAGE_CREATE, $entities['page']);
69
70         $this->asAdmin()->get('/user/' . $newUser->slug)
71             ->assertElementContains('#recent-user-activity', 'updated book')
72             ->assertElementContains('#recent-user-activity', 'created page')
73             ->assertElementContains('#recent-user-activity', $entities['page']->name);
74     }
75
76     public function test_user_activity_has_link_leading_to_profile()
77     {
78         $newUser = User::factory()->create();
79         $this->actingAs($newUser);
80         $entities = $this->createEntityChainBelongingToUser($newUser, $newUser);
81         Activity::add(ActivityType::BOOK_UPDATE, $entities['book']);
82         Activity::add(ActivityType::PAGE_CREATE, $entities['page']);
83
84         $linkSelector = '#recent-activity a[href$="/user/' . $newUser->slug . '"]';
85         $this->asAdmin()->get('/')
86             ->assertElementContains($linkSelector, $newUser->name);
87     }
88
89     public function test_profile_has_search_links_in_created_entity_lists()
90     {
91         $user = $this->getEditor();
92         $resp = $this->actingAs($this->getAdmin())->get('/user/' . $user->slug);
93
94         $expectedLinks = [
95             '/search?term=%7Bcreated_by%3A' . $user->slug . '%7D+%7Btype%3Apage%7D',
96             '/search?term=%7Bcreated_by%3A' . $user->slug . '%7D+%7Btype%3Achapter%7D',
97             '/search?term=%7Bcreated_by%3A' . $user->slug . '%7D+%7Btype%3Abook%7D',
98             '/search?term=%7Bcreated_by%3A' . $user->slug . '%7D+%7Btype%3Abookshelf%7D',
99         ];
100
101         foreach ($expectedLinks as $link) {
102             $resp->assertElementContains('[href$="' . $link . '"]', 'View All');
103         }
104     }
105 }
Morty Proxy This is a proxified and sanitized view of the page, visit original site.