<?php

namespace Tests\Feature\Membership;

use App\Member\Member;
use App\Member\Membership;
use Illuminate\Foundation\Testing\DatabaseTransactions;
use Livewire\Livewire;
use Modules\Member\AgeGroupCountBlock;
use Tests\TestCase;

class AgeGroupCountBlockTest extends TestCase
{
    use DatabaseTransactions;

    public function testItDisplaysAgeGroups(): void
    {
        $this->withoutExceptionHandling();
        Member::factory()->count(3)
            ->has(Membership::factory()->in('€ Mitglied', 1, 'Biber', 2))
            ->defaults()
            ->create();
        Member::factory()->count(4)
            ->has(Membership::factory()->in('€ Mitglied', 1, 'Wölfling', 3))
            ->defaults()
            ->create();
        Member::factory()->count(2)->has(Membership::factory()->in('€ LeiterIn', 2, 'Wölfling', 3))
            ->defaults()
            ->create();
        Member::factory()->count(2)
            ->has(Membership::factory()->in('€ LeiterIn', 2, 'Jungpfadfinder', 3))
            ->has(Membership::factory()->ended()->in('€ LeiterIn', 2, 'Pfadfinder', 3))
            ->has(Membership::factory()->ended()->in('€ Mitglied', 2, 'Jungpfadfinder', 3))
            ->defaults()
            ->create();

        Livewire::test(AgeGroupCountBlock::class)
            ->assertSee('Biber')
            ->assertSee('Wölfling')
            ->assertSee('Leiter')
            ->assertSeeInOrder([3, 4, 4]);
    }
}
