Files
BetiX/tests/Feature/Gateway/SocialControllerTest.php
Dolo 0280278978
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (8.4) (push) Has been cancelled
tests / ci (8.5) (push) Has been cancelled
Initialer Laravel Commit für BetiX
2026-04-04 18:01:50 +02:00

60 lines
1.8 KiB
PHP

<?php
namespace Tests\Feature\Gateway;
use App\Models\User;
use Illuminate\Support\Facades\Http;
use Tests\TestCase;
class SocialControllerTest extends TestCase
{
private function base(): string
{
return rtrim((string) config('services.backend.base'), '/');
}
private function actingUser($overrides = [])
{
return User::factory()->create(array_merge(['username' => 'socialuser', 'role' => 'User', 'email_verified_at' => now()], $overrides));
}
public function test_search_success_normalizes_minimal_fields()
{
Http::fake([
$this->base() . '/users/search*' => Http::response([
'users' => [
['id' => 1, 'username' => 'do', 'avatar_url' => null, 'vip_level' => 3],
['id' => 2, 'username' => 'dolo', 'avatar' => 'http://a/av.png'],
],
], 200),
]);
$res = $this->actingAs($this->actingUser(), 'web')->get('/api/users/search?q=do');
$res->assertStatus(200)
->assertJsonStructure([
[ 'id','username','avatar','vip_level' ]
]);
}
public function test_profile_show_404_is_forwarded()
{
Http::fake([
$this->base() . '/users/unknown' => Http::response(['message' => 'User not found.'], 404),
]);
$res = $this->actingAs($this->actingUser(), 'web')->get('/profile/unknown');
$res->assertStatus(404);
}
public function test_tip_client_error_is_mapped_to_errors_bag()
{
$user = $this->actingUser(['balance' => 0.0]); // Set balance to 0 to trigger local error
$target = User::factory()->create();
$res = $this->actingAs($user, 'web')->post("/profile/{$target->id}/tip", [
'currency' => 'USD', 'amount' => 1.0
]);
$res->assertSessionHasErrors(['amount']);
}
}