1
0
Fork 0
mirror of synced 2025-04-20 01:21:01 +00:00

better error output for AbstractSerializableModel

This commit is contained in:
Pavel 2020-08-01 11:08:40 +03:00
parent d9947fd3ab
commit 93020620a2
4 changed files with 32 additions and 10 deletions

View file

@ -96,6 +96,7 @@ abstract class AbstractSerializableModel
}
$result = null;
$instance = null;
$data = $this->serialize();
$baseClass = $this->getBaseClass();
@ -121,7 +122,7 @@ abstract class AbstractSerializableModel
);
}
return $this->constructResult($result);
return $this->constructResult($instance, $result);
}
/**
@ -132,6 +133,7 @@ abstract class AbstractSerializableModel
public function delete(): Result
{
$result = null;
$instance = null;
$baseClass = $this->getBaseClass();
$primary = $this->getPrimaryKeyData();
@ -155,7 +157,7 @@ abstract class AbstractSerializableModel
throw new \RuntimeException('Neither Delete($id) nor delete($id) is exist in the base class');
}
return $this->constructResult($result);
return $this->constructResult($instance, $result);
}
/**
@ -163,7 +165,7 @@ abstract class AbstractSerializableModel
*
* @return \Bitrix\Main\ORM\Data\Result
*/
private function constructResult($result): Result
private function constructResult($baseClassInstance, $result): Result
{
$newResult = new Result();
@ -171,8 +173,19 @@ abstract class AbstractSerializableModel
$newResult->addError(new Error('No rows were affected.'));
}
if (is_int($result) && $result > 0) {
$this->setPrimaryKeyData($result);
if (is_int($result)) {
if ($result > 0) {
$this->setPrimaryKeyData($result);
} else {
$newResult->addError(new Error('Entity is not saved - no primary key returned.'));
}
}
if (is_object($baseClassInstance)
&& property_exists($baseClassInstance, 'LAST_ERROR')
&& !empty($baseClassInstance->LAST_ERROR)
) {
$newResult->addError(new Error($baseClassInstance->LAST_ERROR));
}
return $newResult;

View file

@ -62,21 +62,25 @@ class CorporateCustomerBuilderTest extends TestCase
ServiceLocator::set(CollectorCookieExtractor::class, $cookieExtractorMock);
$userLogin = uniqid('testuser_');
$userLogin = uniqid('testuser_', false);
$user = new User();
$user->setLogin($userLogin);
$user->setName($userLogin);
$user->setEmail($userLogin . '@example.com');
$user->setWorkCompany('WorkCompany');
self::assertTrue($user->save()->isSuccess());
self::assertNotNull($user->getId(), "User wasn't added to DB");
$saveResult = $user->save();
self::assertTrue($saveResult->isSuccess(), implode(', ', $saveResult->getErrorMessages()));
self::assertNotNull($user->getId(), implode(', ', $saveResult->getErrorMessages()));
$order = Order::create('s1', $user->getId());
$order->setField('DATE_INSERT', new DateTime());
$order->setPersonTypeId(array_flip(ConfigProvider::getContragentTypes())['legal-entity']);
self::assertTrue($user->save()->isSuccess());
$saveResult = $order->save();
self::assertTrue($saveResult->isSuccess(), implode(', ', $saveResult->getErrorMessages()));
self::assertNotNull($order->getId(), implode(', ', $saveResult->getErrorMessages()));
$customer = (new CorporateCustomerBuilder())
->reset()
->setMainCompany(true)
->setMainContact(true)
->setAttachDaemonCollectorId(true)

View file

@ -49,6 +49,7 @@ class CustomerBuilderTest extends TestCase
$builder = new CustomerBuilder();
$result = $builder
->reset()
->setAttachDaemonCollectorId(true)
->setPersonTypeId('individual')
->setUser($entity)

View file

@ -21,7 +21,11 @@ class CustomerBuilderTest extends TestCase
public function testCustomerBuild()
{
$this->customer = new CustomerBuilder();
$user = $this->customer->setCustomer($this->getDataBuilder())->build()->getResult();
$user = $this->customer
->reset()
->setCustomer($this->getDataBuilder())
->build()
->getResult();
self::assertEquals("mm@mm.mmm", $user->getEmail());
self::assertEquals("mmm", $user->getName());