create(); // WHEN $dto = PickupExceptionDto::fromModel($exception); // THEN expect($dto->id)->toBe($exception->id) ->and($dto->label)->toBe($exception->label) ->and($dto->pivot)->toBeNull(); }); test('fromModel works with pivot loaded from shop relationship', function () { // GIVEN $shop = Shop::factory()->create(); $exception = PickupException::factory()->create(); $shop->pickupExceptions()->attach($exception->id, [ 'replacement_date' => '2026-05-02', 'order_deadline_at' => '2026-05-01 18:00:00', ]); $loadedShop = Shop::query()->with('pickupExceptions')->find($shop->id); $loadedException = $loadedShop?->pickupExceptions->first(); // WHEN $dto = PickupExceptionDto::fromModel($loadedException); // THEN expect($dto->id)->toBe($exception->id) ->and($dto->pivot)->not->toBeNull() ->and($dto->pivot?->replacement_date?->format('Y-m-d'))->toBe('2026-05-02') ->and($dto->pivot?->order_deadline_at?->format('Y-m-d H:i:s'))->toBe('2026-05-01 18:00:00'); }); });