34 lines
1.0 KiB
PHP
34 lines
1.0 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace Zoomyboy\LaravelNami\Tests\Unit;
|
||
|
|
||
|
use Carbon\Carbon;
|
||
|
use ReflectionClass;
|
||
|
use Zoomyboy\LaravelNami\Data\MembershipEntry;
|
||
|
use Zoomyboy\LaravelNami\Tests\TestCase;
|
||
|
|
||
|
class MembershipEntryFactoryTest extends TestCase
|
||
|
{
|
||
|
public function testItCanRenderACourseAsJson(): void
|
||
|
{
|
||
|
$membership = MembershipEntry::factory()->toMembership();
|
||
|
|
||
|
$json = $membership->toArray();
|
||
|
$data = json_decode(json_encode($json));
|
||
|
|
||
|
$newMembership = MembershipEntry::from($data);
|
||
|
|
||
|
foreach ((new ReflectionClass(MembershipEntry::class))->getMethod('__construct')->getParameters() as $parameter) {
|
||
|
$name = $parameter->getName();
|
||
|
|
||
|
if (!is_object($membership->{$name})) {
|
||
|
$this->assertSame($newMembership->{$name}, $membership->{$name});
|
||
|
}
|
||
|
|
||
|
if (is_a($membership->{$name}, Carbon::class)) {
|
||
|
$this->assertSame($membership->{$name}->toDateTimeString(), $newMembership->{$name}->toDateTimeString());
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|