better error output for AbstractSerializableModel
This commit is contained in:
parent
d9947fd3ab
commit
93020620a2
4 changed files with 32 additions and 10 deletions
|
@ -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;
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -49,6 +49,7 @@ class CustomerBuilderTest extends TestCase
|
|||
|
||||
$builder = new CustomerBuilder();
|
||||
$result = $builder
|
||||
->reset()
|
||||
->setAttachDaemonCollectorId(true)
|
||||
->setPersonTypeId('individual')
|
||||
->setUser($entity)
|
||||
|
|
|
@ -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());
|
||||
|
|
Loading…
Add table
Reference in a new issue