<?php

namespace Tests\Feature\Membership;

use App\Member\Member;
use App\Member\Membership;
use App\Membership\AgeGroupCountBlock;
use Illuminate\Foundation\Testing\DatabaseTransactions;
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();

        $data = app(AgeGroupCountBlock::class)->render()['data'];

        $this->assertEquals([
            'groups' => [
                ['slug' => 'biber', 'name' => 'Biber', 'count' => 3],
                ['slug' => 'woelfling', 'name' => 'Wölfling', 'count' => 4],
                ['slug' => 'leiter', 'name' => 'Leiter', 'count' => 4],
            ],
        ], $data);
    }
}
