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

View File

@ -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();
}
});
}
} }

View File

@ -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');
}); });
} }