44
55use Illuminate \Support \Facades \Gate ;
66use Lomkit \Rest \Tests \Feature \TestCase ;
7+ use Lomkit \Rest \Tests \Support \Database \Factories \ModelFactory ;
78use Lomkit \Rest \Tests \Support \Database \Factories \SoftDeletedModelFactory ;
9+ use Lomkit \Rest \Tests \Support \Models \Model ;
810use Lomkit \Rest \Tests \Support \Models \SoftDeletedModel ;
911use Lomkit \Rest \Tests \Support \Policies \GreenPolicy ;
1012use Lomkit \Rest \Tests \Support \Policies \RedPolicy ;
13+ use Lomkit \Rest \Tests \Support \Policies \RedPolicyButForModel ;
1114use Lomkit \Rest \Tests \Support \Rest \Resources \SoftDeletedModelResource ;
1215
1316class RestoreOperationsTest extends TestCase
@@ -30,6 +33,34 @@ public function test_restoring_a_non_authorized_model(): void
3033 $ response ->assertJson (['message ' => 'This action is unauthorized. ' ]);
3134 }
3235
36+ public function test_restoring_a_non_authorized_model_with_an_authorized_one (): void
37+ {
38+ $ model = SoftDeletedModelFactory::new ()->count (1 )->trashed ()->createOne ();
39+ $ modelRestorable = SoftDeletedModelFactory::new ()->count (1 )->trashed ()->createOne ();
40+
41+ RedPolicyButForModel::forModel ($ modelRestorable );
42+ Gate::policy (SoftDeletedModel::class, RedPolicyButForModel::class);
43+
44+ $ response = $ this ->post (
45+ '/api/soft-deleted-models/restore ' ,
46+ [
47+ 'resources ' => [$ model ->getKey (), $ modelRestorable ->getKey ()],
48+ ],
49+ ['Accept ' => 'application/json ' ]
50+ );
51+
52+ $ response ->assertStatus (403 );
53+ $ response ->assertJson (['message ' => 'This action is unauthorized. ' ]);
54+ $ this ->assertNotEquals (
55+ null ,
56+ $ modelRestorable ->fresh ()->deleted_at ,
57+ );
58+ $ this ->assertNotEquals (
59+ null ,
60+ $ model ->fresh ()->deleted_at ,
61+ );
62+ }
63+
3364 public function test_restoring_a_soft_deleted_model (): void
3465 {
3566 $ softDeletedModel = SoftDeletedModelFactory::new ()->count (1 )->trashed ()->createOne ();
0 commit comments