Имеются вложенные DTO объекты, у каждого объекта имеются обязательные поля которые должен заполнить клиент.
Хочу протестировать заполнение всех обязательных полей, но не могу понять как это сделать. Пробовал как то использовать dataprovider , но как то всё громоздко получается.
Ниже пример все сеттеры которые написаны обязательны, я хочу убедиться что если их не заполнить то я получу ошибку.
/**
* @dataProvider validationFieldsErrors
*/
public function testGetContentInValidateFields($data, string $message): void
{
$this->expectException(ValidationException::class);
$this->expectExceptionMessage($message);
$this->adapter->getContent($data);
}
public function validationFieldsErrors(): array
{
$detailsDTO = new ListingDetailsDTO();
$listing = new ListingDTO();
$location = new LocationDTO();
$adContent = new AdContentDTO();
$adContent->setHeadline('headline');
$adContent->setPropertyName('propertyName');
$adContent->setDescription('description');
$units = new UnitDTO();
$listing->setIsActive(true);
$listing->setAdContent($adContent);
$listing->setLocation($location);
$listing->setUnits([$units]);
$detailsDTO->setListing($listing);
return [
[new ListingDetailsDTO(), 'This value should not be blank.listing'],
[
$detailsDTO,
'This value should not be blank.listing.adContent.description'
],
];
}