88use Lomkit \Rest \Tests \Support \Models \SoftDeletedModel ;
99use Lomkit \Rest \Tests \Support \Policies \GreenPolicy ;
1010use Lomkit \Rest \Tests \Support \Policies \RedPolicy ;
11+ use Lomkit \Rest \Tests \Support \Policies \RedPolicyButForModel ;
1112use Lomkit \Rest \Tests \Support \Rest \Resources \SoftDeletedModelResource ;
1213
1314class RestoreOperationsTest extends TestCase
@@ -30,6 +31,34 @@ public function test_restoring_a_non_authorized_model(): void
3031 $ response ->assertJson (['message ' => 'This action is unauthorized. ' ]);
3132 }
3233
34+ public function test_restoring_a_non_authorized_model_with_an_authorized_one (): void
35+ {
36+ $ model = SoftDeletedModelFactory::new ()->count (1 )->trashed ()->createOne ();
37+ $ modelRestorable = SoftDeletedModelFactory::new ()->count (1 )->trashed ()->createOne ();
38+
39+ RedPolicyButForModel::forModel ($ modelRestorable );
40+ Gate::policy (SoftDeletedModel::class, RedPolicyButForModel::class);
41+
42+ $ response = $ this ->post (
43+ '/api/soft-deleted-models/restore ' ,
44+ [
45+ 'resources ' => [$ model ->getKey (), $ modelRestorable ->getKey ()],
46+ ],
47+ ['Accept ' => 'application/json ' ]
48+ );
49+
50+ $ response ->assertStatus (403 );
51+ $ response ->assertJson (['message ' => 'This action is unauthorized. ' ]);
52+ $ this ->assertNotEquals (
53+ null ,
54+ $ modelRestorable ->fresh ()->deleted_at ,
55+ );
56+ $ this ->assertNotEquals (
57+ null ,
58+ $ model ->fresh ()->deleted_at ,
59+ );
60+ }
61+
3362 public function test_restoring_a_soft_deleted_model (): void
3463 {
3564 $ softDeletedModel = SoftDeletedModelFactory::new ()->count (1 )->trashed ()->createOne ();
0 commit comments