adrema/tests/Feature/Membership/UpdateTest.php

53 lines
1.6 KiB
PHP

<?php
namespace Tests\Feature\Membership;
use App\Activity;
use App\Group;
use App\Member\Member;
use App\Member\Membership;
use App\Subactivity;
use Carbon\Carbon;
use Illuminate\Foundation\Testing\DatabaseTransactions;
use Tests\RequestFactories\MembershipRequestFactory;
use Tests\TestCase;
class UpdateTest extends TestCase
{
use DatabaseTransactions;
public function setUp(): void
{
parent::setUp();
Carbon::setTestNow(Carbon::parse('2022-02-03 03:00:00'));
$this->login()->loginNami();
}
public function testItUpdatesAMembership(): void
{
$this->withoutExceptionHandling();
$activity = Activity::factory()->hasAttached(Subactivity::factory())->create();
$member = Member::factory()
->defaults()
->has(Membership::factory()->for($activity)->for($activity->subactivities->first()))
->for(Group::factory()->inNami(1400))
->inNami(6)
->create();
$membership = $member->memberships->first();
$response = $this->from('/member')->patch(
"/member/{$member->id}/membership/{$membership->id}",
MembershipRequestFactory::new()->promise(now())->in($membership->activity, $membership->subactivity)->create()
);
$response->assertRedirect('/member');
$this->assertDatabaseHas('memberships', [
'member_id' => $member->id,
'activity_id' => $activity->id,
'subactivity_id' => $activity->subactivities->first()->id,
'promised_at' => now()->format('Y-m-d'),
]);
}
}