create(); $meetup = Meetup::factory()->create(['name' => 'Einundzwanzig Dortmund', 'created_by' => $owner->id]); $user = User::factory()->create(); EinundzwanzigServer::actingAs($user) ->tool(AddMeetupToMineTool::class, ['meetup' => 'Einundzwanzig Dortmund']) ->assertOk() ->assertSee('hinzugefügt'); $this->assertDatabaseHas('meetup_user', [ 'meetup_id' => $meetup->id, 'user_id' => $user->id, 'is_leader' => false, ]); }); it('lists joined meetups (not only created ones) in my meetups', function () { $user = User::factory()->create(); $joined = Meetup::factory()->create(['name' => 'Einundzwanzig Dortmund']); $joined->users()->attach($user->id, ['is_leader' => false]); $response = EinundzwanzigServer::actingAs($user)->tool(ListMyMeetupsTool::class); $response->assertOk()->assertSee('Einundzwanzig Dortmund'); }); it('makes the creator a leader so the meetup shows in my meetups', function () { $user = User::factory()->create(); City::factory()->create(['name' => 'Ansbach']); EinundzwanzigServer::actingAs($user) ->tool(CreateMeetupTool::class, ['name' => 'Einundzwanzig Ansbach', 'city' => 'Ansbach']) ->assertOk(); $meetup = Meetup::query()->where('name', 'Einundzwanzig Ansbach')->sole(); $this->assertDatabaseHas('meetup_user', [ 'meetup_id' => $meetup->id, 'user_id' => $user->id, 'is_leader' => true, ]); }); it('forbids a non-leader member from adding an event but allows a leader', function () { $user = User::factory()->create(); $meetup = Meetup::factory()->create(['name' => 'Einundzwanzig Dortmund']); $meetup->users()->attach($user->id, ['is_leader' => false]); // Reines Mitglied (is_leader = false) darf keinen Termin anlegen. EinundzwanzigServer::actingAs($user) ->tool(CreateMeetupEventTool::class, [ 'meetup' => 'Einundzwanzig Dortmund', 'start' => '2026-08-01 18:00:00', ]) ->assertHasErrors(); $this->assertDatabaseMissing('meetup_events', [ 'meetup_id' => $meetup->id, 'created_by' => $user->id, ]); // Als Leader darf derselbe Nutzer den Termin anlegen. $meetup->users()->syncWithoutDetaching([$user->id => ['is_leader' => true]]); EinundzwanzigServer::actingAs($user) ->tool(CreateMeetupEventTool::class, [ 'meetup' => 'Einundzwanzig Dortmund', 'start' => '2026-08-01 18:00:00', ]) ->assertOk(); $this->assertDatabaseHas('meetup_events', [ 'meetup_id' => $meetup->id, 'created_by' => $user->id, ]); });