Files
einundzwanzig-app/tests/Feature/Mcp/SearchMeetupsMcpTest.php
T
HolgerHatGarKeineNode dc2b828777 Add SearchMeetupsTool for duplication prevention
- 🔍 Introduced `SearchMeetupsTool` to find existing meetups by name or city before creating new ones.
- ☑️ Updated `CreateMeetupTool` description and logic to enforce pre-checks for existing meetups.
- 🛠️ Adjusted `EinundzwanzigServer` to include `SearchMeetupsTool` in tools list.
-  Added feature tests to verify meetup search functionality and ensure duplication avoidance.
2026-06-08 11:10:29 +02:00

36 lines
1.2 KiB
PHP

<?php
use App\Mcp\Servers\EinundzwanzigServer;
use App\Mcp\Tools\Search\SearchMeetupsTool;
use App\Models\City;
use App\Models\Meetup;
use App\Models\User;
it('finds an existing meetup by its name', function () {
Meetup::factory()->create(['name' => 'Einundzwanzig München']);
EinundzwanzigServer::actingAs(User::factory()->create())
->tool(SearchMeetupsTool::class, ['search' => 'münchen'])
->assertOk()
->assertSee('Einundzwanzig München');
});
it('finds an existing meetup by its city name', function () {
$city = City::factory()->create(['name' => 'Nürnberg']);
Meetup::factory()->create(['name' => 'Bitcoin Treff', 'city_id' => $city->id]);
EinundzwanzigServer::actingAs(User::factory()->create())
->tool(SearchMeetupsTool::class, ['search' => 'Nürnberg'])
->assertOk()
->assertSee('Bitcoin Treff');
});
it('returns no match for an unknown city so a new meetup can be proposed', function () {
Meetup::factory()->create(['name' => 'Einundzwanzig München']);
$response = EinundzwanzigServer::actingAs(User::factory()->create())
->tool(SearchMeetupsTool::class, ['search' => 'Gibtsnichtstadt']);
$response->assertOk()->assertDontSee('Einundzwanzig München');
});