Add withPayments method
This commit is contained in:
parent
723d5f171e
commit
ef973f1286
|
@ -7,6 +7,7 @@ use App\Fee;
|
||||||
use App\Group;
|
use App\Group;
|
||||||
use App\Member\Member;
|
use App\Member\Member;
|
||||||
use App\Nationality;
|
use App\Nationality;
|
||||||
|
use App\Payment\Payment;
|
||||||
use App\Payment\Subscription;
|
use App\Payment\Subscription;
|
||||||
use Illuminate\Database\Eloquent\Factories\Factory;
|
use Illuminate\Database\Eloquent\Factories\Factory;
|
||||||
|
|
||||||
|
@ -60,4 +61,15 @@ class MemberFactory extends Factory
|
||||||
->for($subscription);
|
->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()
|
$memberFactory = Member::factory()
|
||||||
->for(Nationality::factory())
|
->for(Nationality::factory())
|
||||||
->for(Subscription::factory()->for(Fee::factory()))
|
->for(Subscription::factory()->for(Fee::factory()))
|
||||||
|
->withPayments(data_get($member, 'payments', []))
|
||||||
->forCountry(Country::find(5))
|
->forCountry(Country::find(5))
|
||||||
->for(Group::factory());
|
->for(Group::factory());
|
||||||
$memberModel = call_user_func($member['factory'], $memberFactory)->create();
|
$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');
|
return $memberModel->load('payments');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue