diff --git a/tests/Feature/Api/Accessories/AccessoryCheckoutTest.php b/tests/Feature/Api/Accessories/AccessoryCheckoutTest.php index 14ac9da1bf..41070943c8 100644 --- a/tests/Feature/Api/Accessories/AccessoryCheckoutTest.php +++ b/tests/Feature/Api/Accessories/AccessoryCheckoutTest.php @@ -15,30 +15,44 @@ class AccessoryCheckoutTest extends TestCase public function testCheckingOutAccessoryRequiresCorrectPermission() { - $this->markTestIncomplete(); + $this->actingAsForApi(User::factory()->create()) + ->postJson(route('api.accessories.checkout', Accessory::factory()->create())) + ->assertForbidden(); } public function testValidation() { - $this->markTestIncomplete(); + $this->actingAsForApi(User::factory()->checkoutAccessories()->create()) + ->postJson(route('api.accessories.checkout', Accessory::factory()->create()), [ + // missing assigned_to + ]) + ->assertStatusMessageIs('error'); } public function testAccessoryMustBeAvailableWhenCheckingOut() { - $this->markTestIncomplete(); + $this->actingAsForApi(User::factory()->checkoutAccessories()->create()) + ->postJson(route('api.accessories.checkout', Accessory::factory()->withoutItemsRemaining()->create()), [ + 'assigned_to' => User::factory()->create()->id, + ]) + ->assertStatusMessageIs('error'); } public function testAccessoryCanBeCheckedOut() { - $this->markTestIncomplete(); + $accessory = Accessory::factory()->create(); + $user = User::factory()->create(); + + $this->actingAsForApi(User::factory()->checkoutAccessories()->create()) + ->postJson(route('api.accessories.checkout', $accessory), [ + 'assigned_to' => $user->id, + ]); + + $this->assertTrue($accessory->users->contains($user)); } public function testUserSentNotificationUponCheckout() { - $this->markTestIncomplete(); - - $this->withoutExceptionHandling(); - Notification::fake(); $accessory = Accessory::factory()->requiringAcceptance()->create(); @@ -54,11 +68,24 @@ class AccessoryCheckoutTest extends TestCase public function testActionLogCreatedUponCheckout() { - $this->markTestIncomplete(); - } + $accessory = Accessory::factory()->create(); + $actor = User::factory()->checkoutAccessories()->create(); + $user = User::factory()->create(); - public function testUserSentEulaUponCheckoutIfAcceptanceRequired() - { - $this->markTestIncomplete(); + $this->actingAsForApi($actor) + ->postJson(route('api.accessories.checkout', $accessory), [ + 'assigned_to' => $user->id, + 'note' => 'oh hi there', + ]); + + $this->assertDatabaseHas('action_logs', [ + 'action_type' => 'checkout', + 'target_id' => $user->id, + 'target_type' => User::class, + 'item_id' => $accessory->id, + 'item_type' => Accessory::class, + 'user_id' => $actor->id, + 'note' => 'oh hi there', + ]); } } diff --git a/tests/Feature/Checkouts/AccessoryCheckoutTest.php b/tests/Feature/Checkouts/AccessoryCheckoutTest.php index daa9b5fb61..a61ca1eb76 100644 --- a/tests/Feature/Checkouts/AccessoryCheckoutTest.php +++ b/tests/Feature/Checkouts/AccessoryCheckoutTest.php @@ -22,10 +22,8 @@ class AccessoryCheckoutTest extends TestCase public function testValidation() { - $accessory = Accessory::factory()->create(); - $this->actingAs(User::factory()->checkoutAccessories()->create()) - ->post(route('accessories.checkout.store', $accessory), [ + ->post(route('accessories.checkout.store', Accessory::factory()->create()), [ // missing assigned_to ]) ->assertSessionHas('error'); @@ -43,7 +41,6 @@ class AccessoryCheckoutTest extends TestCase public function testAccessoryCanBeCheckedOut() { $accessory = Accessory::factory()->create(); - $user = User::factory()->create(); $this->actingAs(User::factory()->checkoutAccessories()->create())