getMockBuilder(UrlBuilder::class) ->setConstructorArgs(['https://mydomain.net']) ->setMethodsExcept([$methodName]) ->getMock(); } /** * @see UrlBuilder::concatPath() */ public function testConcatPath(): void { $this->assertEquals( 'https://domain.org/abc/def', UrlBuilder::concatPath('https://domain.org', ['abc/def']) ); $this->assertEquals( 'https://domain.org/abc/def', UrlBuilder::concatPath('https://domain.org/', ['/abc/def']) ); $this->assertEquals( 'https://domain.org/abc/def/ghi/jkl/', UrlBuilder::concatPath('https://domain.org/', ['/abc/def', 'ghi', '//jkl/']) ); $this->assertEquals( '/abc/def', UrlBuilder::concatPath('/abc/', ['/def']) ); $this->assertEquals( 'https://domain.org/', UrlBuilder::concatPath('https://domain.org', ['']) ); } /** * @see UrlBuilder::concatParameters() */ public function testConcatParameters(): void { $this->assertEquals( 'https://domain.org/abc', UrlBuilder::concatParameters('https://domain.org/abc', []) ); $this->assertEquals( 'https://domain.org/abc?a=1&b&c=d%3De', UrlBuilder::concatParameters('https://domain.org/abc', ['a' => 1, 'b' => '', 'c' => 'd=e']) ); $this->assertEquals( 'https://domain.org/abc?a=1&b=2', UrlBuilder::concatParameters('https://domain.org/abc?a=1', ['b' => 2]) ); } /** * @see UrlBuilder::prependHttps() */ public function testPrependHttps(): void { $this->assertEquals( 'https://domain.org/abc', UrlBuilder::prependHttps('https://domain.org/abc') ); $this->assertEquals( 'http://domain.org/abc', UrlBuilder::prependHttps('http://domain.org/abc') ); $this->assertEquals( 'https://domain.org/abc', UrlBuilder::prependHttps('domain.org/abc') ); } /** * @see UrlBuilder::concat() */ public function testConcat(): void { $this->assertEquals( 'https://domain.org/abc?a=1', UrlBuilder::concat('domain.org', ['abc'], ['a' => 1], true) ); } public function testGetRelativeUrl(): void { $urlBuilder = $this->getMockFor('getRelativeUrl'); $this->assertEquals( '/abc?q=1', $urlBuilder->getRelativeUrl('https://mydomain.net/abc?q=1') ); $this->assertEquals( '/abc?q=1', $urlBuilder->getRelativeUrl('/abc?q=1') ); } public function testGetAbsoluteUrl(): void { $urlBuilder = $this->getMockFor('getAbsoluteUrl'); $this->assertEquals( 'https://mydomain.net/abc?q=1', $urlBuilder->getAbsoluteUrl('/abc?q=1') ); } }