toBe('https://app.example.com:3000/api/v3'); }); it('splits a domain URL while preserving its path query and fragment', function () { expect(DomainUrlParts::split('http://app.example.com:8080/api?v=1#docs'))->toBe([ 'scheme' => 'http', 'host' => 'app.example.com', 'port' => '8080', 'path' => '/api?v=1#docs', ]); }); it('defaults empty values for an invalid URL', function () { expect(DomainUrlParts::split(''))->toBe([ 'scheme' => 'https', 'host' => '', 'port' => '', 'path' => '', ]); }); it('preserves an explicitly configured default port', function () { expect(DomainUrlParts::split('https://app.example.com:443')['port'])->toBe('443'); });