From abee63d26908675916b19702b87f3f0d1319deb4 Mon Sep 17 00:00:00 2001 From: Taras Machyshyn Date: Mon, 21 Oct 2019 16:38:15 +0300 Subject: [PATCH 1/2] FieldManager fix --- application/Espo/Core/Utils/FieldManager.php | 8 +++- .../unit/Espo/Core/Utils/FieldManagerTest.php | 38 +++++++++++++------ 2 files changed, 33 insertions(+), 13 deletions(-) diff --git a/application/Espo/Core/Utils/FieldManager.php b/application/Espo/Core/Utils/FieldManager.php index c952378373..23d6d72e03 100644 --- a/application/Espo/Core/Utils/FieldManager.php +++ b/application/Espo/Core/Utils/FieldManager.php @@ -427,7 +427,11 @@ class FieldManager protected function getFieldDefs($scope, $name, $default = null) { - return $this->getMetadata()->get('entityDefs'.'.'.$scope.'.fields.'.$name, $default); + $defs = $this->getMetadata()->getObjects(['entityDefs', $scope, 'fields', $name], $default); + if (is_object($defs)) { + return get_object_vars($defs); + } + return $defs; } protected function getCustomFieldDefs($scope, $name, $default = null) @@ -532,7 +536,7 @@ class FieldManager } $actualCustomFieldDefs = $this->getCustomFieldDefs($scope, $name, []); - $actualFieldDefs = $this->getFieldDefs($scope, $name, []); + $actualFieldDefs = $this->getFieldDefs($scope, $name, (object) []); $permittedParamList = array_keys($params); $filteredFieldDefs = !empty($actualCustomFieldDefs) ? $actualCustomFieldDefs : []; diff --git a/tests/unit/Espo/Core/Utils/FieldManagerTest.php b/tests/unit/Espo/Core/Utils/FieldManagerTest.php index fa270ea590..18ae13840e 100644 --- a/tests/unit/Espo/Core/Utils/FieldManagerTest.php +++ b/tests/unit/Espo/Core/Utils/FieldManagerTest.php @@ -74,14 +74,14 @@ class FieldManagerTest extends \PHPUnit\Framework\TestCase { $this->expectException('\Espo\Core\Exceptions\Conflict'); - $data = array( + $data = (object) [ "type" => "varchar", "maxLength" => "50", - ); + ]; $this->objects['metadata'] ->expects($this->once()) - ->method('get') + ->method('getObjects') ->will($this->returnValue($data)); $this->object->create('CustomEntity', 'varName', $data); @@ -95,15 +95,14 @@ class FieldManagerTest extends \PHPUnit\Framework\TestCase "label" => "Modified Name", ); - $existingData = array( + $existingData = (object) [ "type" => "varchar", "maxLength" => 50, "label" => "Name", - ); + ]; $map = array( - ['entityDefs.Account.fields.name', [], $existingData], - [['entityDefs', 'Account', 'fields', 'name', 'type'], null, $existingData['type']], + [['entityDefs', 'Account', 'fields', 'name', 'type'], null, $data['type']], ['fields.varchar', null, null], [['fields', 'varchar', 'hookClassName'], null, null], ); @@ -118,6 +117,11 @@ class FieldManagerTest extends \PHPUnit\Framework\TestCase ->method('get') ->will($this->returnValueMap($map)); + $this->objects['metadata'] + ->expects($this->exactly(2)) + ->method('getObjects') + ->will($this->returnValue($existingData)); + $this->objects['metadataHelper'] ->expects($this->once()) ->method('getFieldDefsByType') @@ -177,7 +181,6 @@ class FieldManagerTest extends \PHPUnit\Framework\TestCase ); $map = array( - ['entityDefs.Account.fields.name', [], $data], [['entityDefs', 'Account', 'fields', 'name', 'type'], null, $data['type']], ['fields.varchar', null, null], [['fields', 'varchar', 'hookClassName'], null, null], @@ -240,9 +243,18 @@ class FieldManagerTest extends \PHPUnit\Framework\TestCase $this->objects['metadata'] ->expects($this->exactly(2)) + ->method('getObjects') + ->will($this->returnValue((object) $data)); + + $this->objects['metadata'] + ->expects($this->exactly(1)) ->method('getCustom') ->will($this->returnValue((object) [])); + $this->objects['metadata'] + ->expects($this->never()) + ->method('saveCustom'); + $this->object->update('Account', 'name', $data); } @@ -289,7 +301,6 @@ class FieldManagerTest extends \PHPUnit\Framework\TestCase ); $map = array( - ['entityDefs.CustomEntity.fields.varName', [], $data], ['entityDefs.CustomEntity.fields.varName.type', null, $data['type']], [['entityDefs', 'CustomEntity', 'fields', 'varName'], null, $data], ['fields.varchar', null, null], @@ -301,6 +312,11 @@ class FieldManagerTest extends \PHPUnit\Framework\TestCase ->method('get') ->will($this->returnValueMap($map)); + $this->objects['metadata'] + ->expects($this->exactly(2)) + ->method('getObjects') + ->will($this->returnValue((object) $data)); + $this->objects['metadata'] ->expects($this->once()) ->method('saveCustom') @@ -374,8 +390,8 @@ class FieldManagerTest extends \PHPUnit\Framework\TestCase $this->objects['metadata'] ->expects($this->at(0)) - ->method('get') - ->will($this->returnValue($data)); + ->method('getObjects') + ->will($this->returnValue((object) $data)); $this->objects['language'] ->expects($this->once()) From 0daae5ced527f1b9588322e50d6973a0945169c0 Mon Sep 17 00:00:00 2001 From: Taras Machyshyn Date: Mon, 21 Oct 2019 16:38:46 +0300 Subject: [PATCH 2/2] Integration tests changes --- tests/integration/Core/Tester.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/integration/Core/Tester.php b/tests/integration/Core/Tester.php index 03acdc99a3..182d624348 100644 --- a/tests/integration/Core/Tester.php +++ b/tests/integration/Core/Tester.php @@ -264,7 +264,8 @@ class Tester return true; } - Utils::truncateTables($configData['database']); + //Utils::truncateTables($configData['database']); + Utils::dropTables($configData['database']); $fileManager->removeInDir($this->installPath . '/data'); $fileManager->removeInDir($this->installPath . '/custom/Espo/Custom'); $fileManager->removeInDir($this->installPath . '/client/custom');