. */ namespace App\Tests\Services\InfoProviderSystem\DTOs; use App\Services\InfoProviderSystem\DTOs\SearchResultDTO; use PHPUnit\Framework\TestCase; class SearchResultDTOTest extends TestCase { public function testPreviewImageURL(): void { //For null preview_image_url, the url and file dto should be null $searchResultDTO = new SearchResultDTO( 'provider_key', 'provider_id', 'name', 'description' ); $this->assertNull($searchResultDTO->preview_image_url); $this->assertNull($searchResultDTO->preview_image_file); //If a value is passed then the url and file dto should be the same $searchResultDTO = new SearchResultDTO( 'provider_key', 'provider_id', 'name', 'description', preview_image_url: 'https://invalid.com/preview_image_url.jpg' ); $this->assertEquals('https://invalid.com/preview_image_url.jpg', $searchResultDTO->preview_image_url); $this->assertEquals('https://invalid.com/preview_image_url.jpg', $searchResultDTO->preview_image_file->url); //Invalid url characters should be replaced with their URL encoded version (similar to FileDTO) $searchResultDTO = new SearchResultDTO( 'provider_key', 'provider_id', 'name', 'description', preview_image_url: 'https://invalid.com/preview_image^url.jpg?param1=1¶m2=2' ); $this->assertEquals('https://invalid.com/preview_image%5Eurl.jpg?param1=1¶m2=2', $searchResultDTO->preview_image_url); $this->assertEquals('https://invalid.com/preview_image%5Eurl.jpg?param1=1¶m2=2', $searchResultDTO->preview_image_file->url); } }