Add withPayments method

This commit is contained in:
philipp lang 2021-07-17 16:11:17 +02:00
parent 723d5f171e
commit ef973f1286
2 changed files with 13 additions and 6 deletions
database/factories/Member
tests/Feature/Pdf

View File

@ -7,6 +7,7 @@ use App\Fee;
use App\Group;
use App\Member\Member;
use App\Nationality;
use App\Payment\Payment;
use App\Payment\Subscription;
use Illuminate\Database\Eloquent\Factories\Factory;
@ -60,4 +61,15 @@ class MemberFactory extends Factory
->for($subscription);
}
public function withPayments(array $payments): self
{
return $this->afterCreating(function (Member $model) use ($payments): void {
foreach ($payments as $paymentClosure) {
$factory = Payment::factory()->for($model);
$factory = call_user_func($paymentClosure, $factory);
$factory->create();
}
});
}
}

View File

@ -140,16 +140,11 @@ class GenerateTest extends TestCase
$memberFactory = Member::factory()
->for(Nationality::factory())
->for(Subscription::factory()->for(Fee::factory()))
->withPayments(data_get($member, 'payments', []))
->forCountry(Country::find(5))
->for(Group::factory());
$memberModel = call_user_func($member['factory'], $memberFactory)->create();
foreach (data_get($member, 'payments', []) as $payment) {
$paymentFactory = Payment::factory()->for($memberModel);
$paymentFactory = call_user_func($payment, $paymentFactory);
$paymentFactory->create();
}
return $memberModel->load('payments');
});
}