64 lines
1.4 KiB
PHP
64 lines
1.4 KiB
PHP
<?php
|
|
|
|
namespace Tests\RequestFactories;
|
|
|
|
use App\Activity;
|
|
use App\Group;
|
|
use App\Subactivity;
|
|
use Carbon\Carbon;
|
|
use Worksome\RequestFactories\RequestFactory;
|
|
|
|
class MembershipRequestFactory extends RequestFactory
|
|
{
|
|
public function definition(): array
|
|
{
|
|
return [
|
|
'has_promise' => null,
|
|
];
|
|
}
|
|
|
|
public function in(Activity $activity, ?Subactivity $subactivity = null): self
|
|
{
|
|
return $this->state([
|
|
'activity_id' => $activity->id,
|
|
'subactivity_id' => $subactivity ? $subactivity->id : null,
|
|
]);
|
|
}
|
|
|
|
public function missingAll(): self
|
|
{
|
|
return $this->state([
|
|
'activity_id' => null,
|
|
'subactivity_id' => null,
|
|
]);
|
|
}
|
|
|
|
public function invalidActivity(): self
|
|
{
|
|
return $this->state([
|
|
'activity_id' => 10000,
|
|
'subactivity_id' => null,
|
|
]);
|
|
}
|
|
|
|
public function unmatchingSubactivity(): self
|
|
{
|
|
return $this->state([
|
|
'activity_id' => Activity::factory()->create()->id,
|
|
'subactivity_id' => Subactivity::factory()->create()->id,
|
|
]);
|
|
}
|
|
|
|
public function promise(Carbon $value): self
|
|
{
|
|
return $this->state([
|
|
'promised_at' => $value->format('Y-m-d'),
|
|
]);
|
|
}
|
|
|
|
public function group(Group $group): self
|
|
{
|
|
return $this->state(['group_id' => $group->id]);
|
|
}
|
|
}
|