From a071fff954b8f90b7a5e5a4df3f8a5a7d45598c1 Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Wed, 18 Sep 2024 12:32:14 -0700 Subject: [PATCH] Implement tests --- .../Accessories/Api/ShowAccessoryTest.php | 43 ++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/tests/Feature/Accessories/Api/ShowAccessoryTest.php b/tests/Feature/Accessories/Api/ShowAccessoryTest.php index da35eca3e..117d72500 100644 --- a/tests/Feature/Accessories/Api/ShowAccessoryTest.php +++ b/tests/Feature/Accessories/Api/ShowAccessoryTest.php @@ -3,11 +3,13 @@ namespace Tests\Feature\Accessories\Api; use App\Models\Accessory; +use App\Models\Company; use App\Models\User; +use Tests\Concerns\TestsFullMultipleCompaniesSupport; use Tests\Concerns\TestsPermissionsRequirement; use Tests\TestCase; -class ShowAccessoryTest extends TestCase implements TestsPermissionsRequirement +class ShowAccessoryTest extends TestCase implements TestsFullMultipleCompaniesSupport, TestsPermissionsRequirement { public function testRequiresPermission() { @@ -17,4 +19,43 @@ class ShowAccessoryTest extends TestCase implements TestsPermissionsRequirement ->getJson(route('api.accessories.show', $accessory)) ->assertForbidden(); } + + public function testAdheresToFullMultipleCompaniesSupportScoping() + { + [$companyA, $companyB] = Company::factory()->count(2)->create(); + + $accessoryForCompanyA = Accessory::factory()->for($companyA)->create(); + + $superuser = User::factory()->superuser()->create(); + $userForCompanyB = User::factory()->for($companyB)->viewAccessories()->create(); + + $this->settings->enableMultipleFullCompanySupport(); + + $this->actingAsForApi($userForCompanyB) + ->getJson(route('api.accessories.show', $accessoryForCompanyA)) + ->assertOk() + ->assertStatusMessageIs('error'); + + $this->actingAsForApi($superuser) + ->getJson(route('api.accessories.show', $accessoryForCompanyA)) + ->assertOk() + ->assertJsonFragment([ + 'id' => $accessoryForCompanyA->id, + ]); + } + + public function testCanGetSingleAccessory() + { + $accessory = Accessory::factory()->checkedOutToUser()->create(['name' => 'My Accessory']); + + $this->actingAsForApi(User::factory()->viewAccessories()->create()) + ->getJson(route('api.accessories.show', $accessory)) + ->assertOk() + ->assertJsonFragment([ + 'id' => $accessory->id, + 'name' => 'My Accessory', + 'checkouts_count' => 1, + ]); + + } }