has(Wallet::factory()->richChillGuy()) ->create(); $recipient = User::factory() ->has(Wallet::factory()) ->create(); actingAs($user); postJson(action(SendMoneyController::class), [ 'recipient_email' => $recipient->email, 'amount' => 100, 'reason' => 'Just a chill guy gift', ]) ->assertNoContent(201); expect($recipient->refresh()->wallet->balance)->toBe(100); assertDatabaseHas('wallet_transfers', [ 'amount' => 100, 'source_id' => $user->wallet->id, 'target_id' => $recipient->wallet->id, ]); assertDatabaseCount('wallet_transactions', 3); }); test('cannot send money to a friend with insufficient balance', function () { $user = User::factory() ->has(Wallet::factory()) ->create(); $recipient = User::factory() ->has(Wallet::factory()) ->create(); actingAs($user); postJson(action(SendMoneyController::class), [ 'recipient_email' => $recipient->email, 'amount' => 100, 'reason' => 'Just a chill guy gift', ]) ->assertBadRequest() ->assertJson([ 'code' => 'INSUFFICIENT_BALANCE', 'message' => 'Insufficient balance in wallet.', ]); expect($recipient->refresh()->wallet->balance)->toBe(0); });