-
Notifications
You must be signed in to change notification settings - Fork 14
/
Copy pathPermissionTest.php
77 lines (60 loc) · 2.13 KB
/
PermissionTest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<?php
use Illuminate\Foundation\Testing\RefreshDatabase;
use LaravelEnso\Forms\TestTraits\CreateForm;
use LaravelEnso\Forms\TestTraits\DestroyForm;
use LaravelEnso\Forms\TestTraits\EditForm;
use LaravelEnso\Permissions\Models\Permission;
use LaravelEnso\Roles\Models\Role;
use LaravelEnso\Tables\Traits\Tests\Datatable;
use LaravelEnso\Users\Models\User;
use Tests\TestCase;
class PermissionTest extends TestCase
{
use CreateForm, Datatable, DestroyForm, EditForm, RefreshDatabase;
private $permissionGroup = 'system.permissions';
private $testModel;
protected function setUp(): void
{
parent::setUp();
$this->seed()
->actingAs(User::first());
$this->testModel = Permission::factory()
->make();
}
/** @test */
public function can_store_permission()
{
$response = $this->post(
route('system.permissions.store'),
$this->testModel->toArray() + ['roles' => []]
);
$permission = Permission::whereName($this->testModel->name)
->first();
$response->assertStatus(200)
->assertJsonFragment([
'redirect' => 'system.permissions.edit',
'param' => ['permission' => $permission->id],
])->assertJsonStructure(['message']);
}
/** @test */
public function can_update_permission()
{
$this->testModel->save();
$this->testModel->description = 'edited';
$this->patch(
route('system.permissions.update', $this->testModel->id, false),
$this->testModel->toArray() + ['roles' => []]
)->assertStatus(200)
->assertJsonStructure(['message']);
$this->assertEquals($this->testModel->description, $this->testModel->fresh()->description);
}
/** @test */
public function cant_destroy_if_has_roles()
{
$this->testModel->save();
$this->testModel->roles()->attach(Role::first(['id']));
$this->delete(route('system.permissions.destroy', $this->testModel->id, false))
->assertStatus(409);
$this->assertNotNull($this->testModel->fresh());
}
}