3
3
namespace Tests \Feature \Accessories \Api ;
4
4
5
5
use App \Models \Accessory ;
6
+ use App \Models \Company ;
6
7
use App \Models \User ;
8
+ use Tests \Concerns \TestsMultipleFullCompanySupport ;
7
9
use Tests \TestCase ;
8
10
9
- class DeleteAccessoryTest extends TestCase
11
+ class DeleteAccessoryTest extends TestCase implements TestsMultipleFullCompanySupport
10
12
{
11
13
public function testPermissionRequiredToDeleteAccessory ()
12
14
{
@@ -16,4 +18,57 @@ public function testPermissionRequiredToDeleteAccessory()
16
18
->deleteJson (route ('api.accessories.destroy ' , $ accessory ))
17
19
->assertForbidden ();
18
20
}
21
+
22
+ public function testCanDeleteAccessory ()
23
+ {
24
+ $ accessory = Accessory::factory ()->create ();
25
+
26
+ $ this ->actingAsForApi (User::factory ()->deleteAccessories ()->create ())
27
+ ->deleteJson (route ('api.accessories.destroy ' , $ accessory ))
28
+ ->assertStatusMessageIs ('success ' );
29
+
30
+ $ this ->assertTrue ($ accessory ->fresh ()->trashed ());
31
+ }
32
+
33
+ public function testCannotDeleteAccessoryThatHasCheckouts ()
34
+ {
35
+ $ accessory = Accessory::factory ()->checkedOutToUser ()->create ();
36
+
37
+ $ this ->actingAsForApi (User::factory ()->deleteAccessories ()->create ())
38
+ ->deleteJson (route ('api.accessories.destroy ' , $ accessory ))
39
+ ->assertStatusMessageIs ('error ' );
40
+
41
+ $ this ->assertFalse ($ accessory ->fresh ()->trashed ());
42
+ }
43
+
44
+ public function testAdheresToMultipleFullCompanySupportScoping ()
45
+ {
46
+ [$ companyA , $ companyB ] = Company::factory ()->count (2 )->create ();
47
+
48
+ $ accessoryA = Accessory::factory ()->for ($ companyA )->create ();
49
+ $ accessoryB = Accessory::factory ()->for ($ companyB )->create ();
50
+ $ accessoryC = Accessory::factory ()->for ($ companyB )->create ();
51
+
52
+ $ superUser = $ companyA ->users ()->save (User::factory ()->superuser ()->make ());
53
+ $ userInCompanyA = $ companyA ->users ()->save (User::factory ()->deleteAccessories ()->make ());
54
+ $ userInCompanyB = $ companyB ->users ()->save (User::factory ()->deleteAccessories ()->make ());
55
+
56
+ $ this ->settings ->enableMultipleFullCompanySupport ();
57
+
58
+ $ this ->actingAsForApi ($ userInCompanyA )
59
+ ->deleteJson (route ('api.accessories.destroy ' , $ accessoryB ))
60
+ ->assertStatusMessageIs ('error ' );
61
+
62
+ $ this ->actingAsForApi ($ userInCompanyB )
63
+ ->deleteJson (route ('api.accessories.destroy ' , $ accessoryA ))
64
+ ->assertStatusMessageIs ('error ' );
65
+
66
+ $ this ->actingAsForApi ($ superUser )
67
+ ->deleteJson (route ('api.accessories.destroy ' , $ accessoryC ))
68
+ ->assertStatusMessageIs ('success ' );
69
+
70
+ $ this ->assertNull ($ accessoryA ->fresh ()->deleted_at , 'Accessory unexpectedly deleted ' );
71
+ $ this ->assertNull ($ accessoryB ->fresh ()->deleted_at , 'Accessory unexpectedly deleted ' );
72
+ $ this ->assertNotNull ($ accessoryC ->fresh ()->deleted_at , 'Accessory was not deleted ' );
73
+ }
19
74
}
0 commit comments