adrema/tests/Feature/Member/PsPendingBlockTest.php

90 lines
3.5 KiB
PHP

<?php
namespace Tests\Feature\Member;
use App\Group;
use App\Member\Member;
use App\Member\Membership;
use App\Member\PsPendingBlock;
use Illuminate\Foundation\Testing\DatabaseTransactions;
use Tests\TestCase;
class PsPendingBlockTest extends TestCase
{
use DatabaseTransactions;
public function testItRendersContent(): void
{
$this->withoutExceptionHandling()->withNamiSettings(12345, 'password', 101);
$group = Group::factory()->inNami(101)->create();
$noPsAtAll = Member::factory()
->defaults()
->for($group)
->has(Membership::factory()->in('€ LeiterIn', 5, 'Wölfling', 8))
->create(['firstname' => 'Jane', 'lastname' => 'Doe']);
$validPs = Member::factory()
->defaults()
->for($group)
->has(Membership::factory()->in('€ LeiterIn', 5, 'Wölfling', 8))
->has(Membership::factory()->in('€ LeiterIn', 5, 'Wölfling', 8))
->create(['firstname' => 'Max', 'lastname' => 'Doe', 'ps_at' => now()->subYears(4)]);
$validMorePs = Member::factory()
->defaults()
->for($group)
->has(Membership::factory()->in('€ LeiterIn', 5, 'Wölfling', 8))
->has(Membership::factory()->in('€ LeiterIn', 5, 'Wölfling', 8))
->create(['firstname' => 'Joe', 'lastname' => 'Doe', 'more_ps_at' => now()->subYears(4)]);
$invalidPs = Member::factory()
->defaults()
->for($group)
->has(Membership::factory()->in('€ LeiterIn', 5, 'Wölfling', 8))
->has(Membership::factory()->in('€ LeiterIn', 5, 'Wölfling', 8))
->create(['firstname' => 'Mike', 'lastname' => 'Doe', 'ps_at' => now()->subYears(5)]);
$invalidMorePs = Member::factory()
->defaults()
->for($group)
->has(Membership::factory()->in('€ LeiterIn', 5, 'Wölfling', 8))
->has(Membership::factory()->in('€ LeiterIn', 5, 'Wölfling', 8))
->create(['firstname' => 'Nora', 'lastname' => 'Doe', 'more_ps_at' => now()->subYears(5)]);
$invalidPsButValidMorePs = Member::factory()
->defaults()
->for($group)
->has(Membership::factory()->in('€ LeiterIn', 5, 'Wölfling', 8))
->has(Membership::factory()->in('€ LeiterIn', 5, 'Wölfling', 8))
->create(['firstname' => 'Hey', 'lastname' => 'Doe', 'ps_at' => now()->subYears(10), 'more_ps_at' => now()->subYears(3)]);
$notALeader = Member::factory()
->defaults()
->for($group)
->has(Membership::factory()->in('€ Mitglied', 5, 'Wölfling', 8))
->create(['firstname' => 'Mae', 'lastname' => 'Doe']);
$data = app(PsPendingBlock::class)->render()['data'];
$this->assertEquals([
'members' => [
['fullname' => 'Jane Doe'],
['fullname' => 'Mike Doe'],
['fullname' => 'Nora Doe'],
],
], $data);
}
public function testItExcludesForeignGroups(): void
{
$this->withoutExceptionHandling()->withNamiSettings(12345, 'password', 101);
Group::factory()->inNami(101)->create();
$otherGroup = Group::factory()->inNami(55)->create();
Member::factory()
->defaults()
->for($otherGroup)
->has(Membership::factory()->in('€ LeiterIn', 5, 'Wölfling', 8))
->create();
$data = app(PsPendingBlock::class)->render()['data'];
$this->assertCount(0, $data['members']);
}
}