actingAs(User::factory()->create()) ->delete(route('hardware.destroy', Asset::factory()->create())) ->assertForbidden(); } public function testCanDeleteAsset() { $asset = Asset::factory()->create(); $this->actingAs(User::factory()->deleteAssets()->create()) ->delete(route('hardware.destroy', $asset)) ->assertRedirectToRoute('hardware.index') ->assertSessionHas('success'); $this->assertSoftDeleted($asset); } public function testActionLogEntryMadeWhenAssetDeleted() { $actor = User::factory()->deleteAssets()->create(); $asset = Asset::factory()->create(); $this->actingAs($actor)->delete(route('hardware.destroy', $asset)); $this->assertDatabaseHas('action_logs', [ 'created_by' => $actor->id, 'action_type' => 'delete', 'target_id' => null, 'target_type' => null, 'item_type' => Asset::class, 'item_id' => $asset->id, ]); } public function testAssetIsCheckedInWhenDeleted() { Event::fake(); $assignedUser = User::factory()->create(); $asset = Asset::factory()->assignedToUser($assignedUser)->create(); $this->assertTrue($assignedUser->assets->contains($asset)); $this->actingAs(User::factory()->deleteAssets()->create()) ->delete(route('hardware.destroy', $asset)); $this->assertFalse( $assignedUser->fresh()->assets->contains($asset), 'Asset still assigned to user after deletion' ); Event::assertDispatched(CheckoutableCheckedIn::class); } public function testImageIsDeletedWhenAssetDeleted() { Storage::fake('public'); $asset = Asset::factory()->create(['image' => 'image.jpg']); Storage::disk('public')->put('assets/image.jpg', 'content'); Storage::disk('public')->assertExists('assets/image.jpg'); $this->actingAs(User::factory()->deleteAssets()->create()) ->delete(route('hardware.destroy', $asset)); Storage::disk('public')->assertMissing('assets/image.jpg'); } }