Completed
Pull Request — master (#4037)
by Muhlis
02:52
created

RolesTest::testAddRole()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 0
dl 0
loc 9
rs 9.9666
c 0
b 0
f 0
1
<?php
2
3
use Encore\Admin\Auth\Database\Administrator;
4
use Encore\Admin\Auth\Database\Role;
5
6
class RolesTest extends TestCase
7
{
8
    public function setUp()
9
    {
10
        parent::setUp();
11
12
        $this->be(Administrator::first(), 'admin');
13
    }
14
15
    public function testRolesIndex()
16
    {
17
        $this->visit('admin/auth/roles')
18
            ->see('Roles')
19
            ->see('administrator');
20
    }
21
22
    public function testAddRole()
23
    {
24
        $this->visit('admin/auth/roles/create')
25
            ->see('Roles')
26
            ->submitForm('Submit', ['slug' => 'developer', 'name' => 'Developer...'])
27
            ->seePageIs('admin/auth/roles')
28
            ->seeInDatabase(config('admin.database.roles_table'), ['slug' => 'developer', 'name' => 'Developer...'])
29
            ->assertEquals(2, Role::count());
30
    }
31
32
    public function testAddRoleToUser()
33
    {
34
        $user = [
35
            'username'              => 'Test',
36
            'name'                  => 'Name',
37
            'password'              => '123456',
38
            'password_confirmation' => '123456',
39
40
        ];
41
42
        $this->visit('admin/auth/users/create')
43
            ->see('Create')
44
            ->submitForm('Submit', $user)
45
            ->seePageIs('admin/auth/users')
46
            ->seeInDatabase(config('admin.database.users_table'), ['username' => 'Test']);
47
48
        $this->assertEquals(1, Role::count());
49
50
        $this->visit('admin/auth/roles/create')
51
            ->see('Roles')
52
            ->submitForm('Submit', ['slug' => 'developer', 'name' => 'Developer...'])
53
            ->seePageIs('admin/auth/roles')
54
            ->seeInDatabase(config('admin.database.roles_table'), ['slug' => 'developer', 'name' => 'Developer...'])
55
            ->assertEquals(2, Role::count());
56
57
        $this->assertFalse(Administrator::find(2)->isRole('developer'));
58
59
        $this->visit('admin/auth/users/2/edit')
60
            ->see('Edit')
61
            ->submitForm('Submit', ['roles' => [2]])
62
            ->seePageIs('admin/auth/users')
63
            ->seeInDatabase(config('admin.database.role_users_table'), ['user_id' => 2, 'role_id' => 2]);
64
65
        $this->assertTrue(Administrator::find(2)->isRole('developer'));
66
67
        $this->assertFalse(Administrator::find(2)->inRoles(['editor', 'operator']));
68
        $this->assertTrue(Administrator::find(2)->inRoles(['developer', 'operator', 'editor']));
69
    }
70
71
    public function testDeleteRole()
72
    {
73
        $this->assertEquals(1, Role::count());
74
75
        $this->visit('admin/auth/roles/create')
76
            ->see('Roles')
77
            ->submitForm('Submit', ['slug' => 'developer', 'name' => 'Developer...'])
78
            ->seePageIs('admin/auth/roles')
79
            ->seeInDatabase(config('admin.database.roles_table'), ['slug' => 'developer', 'name' => 'Developer...'])
80
            ->assertEquals(2, Role::count());
81
82
        $this->delete('admin/auth/roles/2')
83
            ->assertEquals(1, Role::count());
84
85
        $this->delete('admin/auth/roles/1')
86
            ->assertEquals(0, Role::count());
87
    }
88
89
    public function testEditRole()
90
    {
91
        $this->visit('admin/auth/roles/create')
92
            ->see('Roles')
93
            ->submitForm('Submit', ['slug' => 'developer', 'name' => 'Developer...'])
94
            ->seePageIs('admin/auth/roles')
95
            ->seeInDatabase(config('admin.database.roles_table'), ['slug' => 'developer', 'name' => 'Developer...'])
96
            ->assertEquals(2, Role::count());
97
98
        $this->visit('admin/auth/roles/2/edit')
99
            ->see('Roles')
100
            ->submitForm('Submit', ['name' => 'blablabla'])
101
            ->seePageIs('admin/auth/roles')
102
            ->seeInDatabase(config('admin.database.roles_table'), ['name' => 'blablabla'])
103
            ->assertEquals(2, Role::count());
104
    }
105
}
106