diff --git a/Tests/ClientTest.php b/Tests/ClientTest.php index d199da9..0e6f06c 100644 --- a/Tests/ClientTest.php +++ b/Tests/ClientTest.php @@ -23,8 +23,8 @@ use D3\LinkmobilityClient\Request\RequestInterface; use D3\LinkmobilityClient\Response\Response; use D3\LinkmobilityClient\Response\ResponseInterface; use D3\LinkmobilityClient\SMS\TextRequest; -use D3\LinkmobilityClient\Url; -use D3\LinkmobilityClient\UrlInterface; +use D3\LinkmobilityClient\Url\Url; +use D3\LinkmobilityClient\Url\UrlInterface; use GuzzleHttp\Client as GuzzleClient; use GuzzleHttp\ClientInterface; use PHPUnit\Framework\MockObject\MockObject; diff --git a/Tests/Request/AbstractRequest.php b/Tests/Request/AbstractRequest.php index f8ef0a1..494c550 100644 --- a/Tests/Request/AbstractRequest.php +++ b/Tests/Request/AbstractRequest.php @@ -92,6 +92,20 @@ abstract class AbstractRequest extends ApiTestCase ); } + /** + * @test + * @throws ReflectionException + */ + public function testGetUri() + { + $this->assertIsString( + $this->callMethod( + $this->request, + 'getUri' + ) + ); + } + /** * @test * @throws ReflectionException @@ -228,8 +242,6 @@ abstract class AbstractRequest extends ApiTestCase ]; } - - /** * @test * @throws ReflectionException diff --git a/Tests/UrlTest.php b/Tests/Url/UrlTest.php similarity index 60% rename from Tests/UrlTest.php rename to Tests/Url/UrlTest.php index 06623d0..2c30250 100644 --- a/Tests/UrlTest.php +++ b/Tests/Url/UrlTest.php @@ -13,9 +13,10 @@ declare(strict_types=1); -namespace D3\LinkmobilityClient\Tests; +namespace D3\LinkmobilityClient\Tests\Url; -use D3\LinkmobilityClient\Url; +use D3\LinkmobilityClient\Tests\ApiTestCase; +use D3\LinkmobilityClient\Url\Url; use ReflectionException; class UrlTest extends ApiTestCase @@ -58,4 +59,34 @@ class UrlTest extends ApiTestCase ) ); } + + /** + * @test + * @throws ReflectionException + */ + public function testGetTextSmsUri() + { + $uri = $this->callMethod( + $this->url, + 'getTextSmsUri' + ); + + $this->assertIsString($uri); + $this->assertStringStartsWith('/', $uri); + } + + /** + * @test + * @throws ReflectionException + */ + public function testGetBinarySmsUri() + { + $uri = $this->callMethod( + $this->url, + 'getBinarySmsUri' + ); + + $this->assertIsString($uri); + $this->assertStringStartsWith('/', $uri); + } } diff --git a/src/Client.php b/src/Client.php index 539da91..90c8894 100644 --- a/src/Client.php +++ b/src/Client.php @@ -18,6 +18,8 @@ namespace D3\LinkmobilityClient; use D3\LinkmobilityClient\Exceptions\ApiException; use D3\LinkmobilityClient\Exceptions\ExceptionMessages; use D3\LinkmobilityClient\Request\RequestInterface; +use D3\LinkmobilityClient\Url\Url; +use D3\LinkmobilityClient\Url\UrlInterface; use GuzzleHttp\ClientInterface; use GuzzleHttp\Exception\GuzzleException; use InvalidArgumentException; diff --git a/src/Request/Request.php b/src/Request/Request.php index a1162b7..c7091b0 100644 --- a/src/Request/Request.php +++ b/src/Request/Request.php @@ -122,6 +122,11 @@ abstract class Request implements RequestInterface return $this; } + /** + * @return string + */ + public abstract function getUri(): string; + /** * @throws InvalidArgumentException */ diff --git a/src/SMS/BinaryRequest.php b/src/SMS/BinaryRequest.php index 47f6211..bc53810 100644 --- a/src/SMS/BinaryRequest.php +++ b/src/SMS/BinaryRequest.php @@ -17,6 +17,7 @@ namespace D3\LinkmobilityClient\SMS; use Assert\Assert; use D3\LinkmobilityClient\Request\Request; +use D3\LinkmobilityClient\Url\Url; use D3\LinkmobilityClient\ValueObject\SmsBinaryMessage; use InvalidArgumentException; @@ -27,7 +28,7 @@ class BinaryRequest extends Request implements SmsRequestInterface */ public function getUri(): string { - return '/rest/smsmessaging/binary'; + return (new Url())->getBinarySmsUri(); } public function getRawBody(): array diff --git a/src/SMS/TextRequest.php b/src/SMS/TextRequest.php index 71e25a8..b4ae0bf 100644 --- a/src/SMS/TextRequest.php +++ b/src/SMS/TextRequest.php @@ -17,6 +17,7 @@ namespace D3\LinkmobilityClient\SMS; use Assert\Assert; use D3\LinkmobilityClient\Request\Request; +use D3\LinkmobilityClient\Url\Url; use D3\LinkmobilityClient\ValueObject\SmsTextMessage; use InvalidArgumentException; @@ -27,7 +28,7 @@ class TextRequest extends Request implements SmsRequestInterface */ public function getUri(): string { - return '/rest/smsmessaging/text'; + return (new Url())->getTextSmsUri(); } /** diff --git a/src/Url.php b/src/Url/Url.php similarity index 66% rename from src/Url.php rename to src/Url/Url.php index ceda3b1..bf91514 100644 --- a/src/Url.php +++ b/src/Url/Url.php @@ -13,7 +13,7 @@ declare(strict_types=1); -namespace D3\LinkmobilityClient; +namespace D3\LinkmobilityClient\Url; class Url implements UrlInterface { @@ -26,4 +26,20 @@ class Url implements UrlInterface { return $this->baseUri; } + + /** + * @return string + */ + public function getTextSmsUri() + { + return '/rest/smsmessaging/text'; + } + + /** + * @return string + */ + public function getBinarySmsUri() + { + return '/rest/smsmessaging/binary'; + } } diff --git a/src/UrlInterface.php b/src/Url/UrlInterface.php similarity index 92% rename from src/UrlInterface.php rename to src/Url/UrlInterface.php index 5f12da1..4700851 100644 --- a/src/UrlInterface.php +++ b/src/Url/UrlInterface.php @@ -13,7 +13,7 @@ declare(strict_types=1); -namespace D3\LinkmobilityClient; +namespace D3\LinkmobilityClient\Url; interface UrlInterface {