Add withPayments method
This commit is contained in:
parent
723d5f171e
commit
ef973f1286
|
@ -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();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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');
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue