create(); $otherUser = User::factory()->create(); $pendingAssetAcceptance = CheckoutAcceptance::factory() ->pending() ->for($user, 'assignedTo') ->create(); $pendingAccessoryAcceptance = CheckoutAcceptance::factory() ->forAccessory() ->pending() ->for($user, 'assignedTo') ->create(); CheckoutAcceptance::factory() ->accepted() ->for($user, 'assignedTo') ->create(); CheckoutAcceptance::factory() ->pending() ->for($otherUser, 'assignedTo') ->create(); $items = $user->getAssignedItemsWithPendingAcceptance(); $this->assertCount(2, $items); $this->assertTrue($items->contains(fn ($item) => $item instanceof Asset && $item->is($pendingAssetAcceptance->checkoutable))); $this->assertTrue($items->contains(fn ($item) => $item instanceof Accessory && $item->is($pendingAccessoryAcceptance->checkoutable))); } public function test_it_returns_unique_items_when_multiple_pending_acceptances_exist_for_the_same_item(): void { $user = User::factory()->create(); $asset = Asset::factory()->create(); CheckoutAcceptance::factory() ->pending() ->for($asset, 'checkoutable') ->for($user, 'assignedTo') ->create(); CheckoutAcceptance::factory() ->pending() ->for($asset, 'checkoutable') ->for($user, 'assignedTo') ->create(); $items = $user->getAssignedItemsWithPendingAcceptance(); $this->assertCount(1, $items); $this->assertTrue($items->first() instanceof Asset); $this->assertTrue($items->first()->is($asset)); } }