snapshot of https://github.com/espocrm/espocrm.git (master, 2026-09-18; blobs > 131072B omitted)
Some checks failed
Test / Test on PHP 8.3 (push) Failing after 5s
Test / Test on PHP 8.4 (push) Failing after 4s
Test / Test on PHP 8.5 (push) Failing after 3s
TypeScript static analysis / TypeScript check (push) Failing after 14s
Test Integration on MySQL / Test on PHP 8.3 (push) Failing after 2s
Test Integration on MySQL / Test on PHP 8.5 (push) Failing after 0s
Test Integration on PostgreSQL / Test on PHP 8.4 fix (push) Failing after 1s
Test Integration on PostgreSQL / Test on PHP 8.4 master (push) Failing after 1s
Some checks failed
Test / Test on PHP 8.3 (push) Failing after 5s
Test / Test on PHP 8.4 (push) Failing after 4s
Test / Test on PHP 8.5 (push) Failing after 3s
TypeScript static analysis / TypeScript check (push) Failing after 14s
Test Integration on MySQL / Test on PHP 8.3 (push) Failing after 2s
Test Integration on MySQL / Test on PHP 8.5 (push) Failing after 0s
Test Integration on PostgreSQL / Test on PHP 8.4 fix (push) Failing after 1s
Test Integration on PostgreSQL / Test on PHP 8.4 master (push) Failing after 1s
This commit is contained in:
133
tests/integration/Espo/Core/Utils/FieldManager/ArrayTypeTest.php
Normal file
133
tests/integration/Espo/Core/Utils/FieldManager/ArrayTypeTest.php
Normal file
@@ -0,0 +1,133 @@
|
||||
<?php
|
||||
/************************************************************************
|
||||
* This file is part of EspoCRM.
|
||||
*
|
||||
* EspoCRM – Open Source CRM application.
|
||||
* Copyright (C) 2014-2026 EspoCRM, Inc.
|
||||
* Website: https://www.espocrm.com
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of this program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU Affero General Public License version 3.
|
||||
*
|
||||
* In accordance with Section 7(b) of the GNU Affero General Public License version 3,
|
||||
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
|
||||
************************************************************************/
|
||||
|
||||
namespace tests\integration\Espo\Core\Utils\FieldManager;
|
||||
|
||||
use Espo\ORM\EntityManager;
|
||||
use tests\integration\Core\BaseTestCase;
|
||||
|
||||
class ArrayTypeTest extends BaseTestCase
|
||||
{
|
||||
private $jsonFieldDefs = '{
|
||||
"name":"testArray",
|
||||
"label":"TestArray",
|
||||
"type":"array",
|
||||
"required":false,
|
||||
"noEmptyString":false,
|
||||
"dynamicLogicVisible":null,
|
||||
"dynamicLogicRequired":null,
|
||||
"dynamicLogicReadOnly":null,
|
||||
"dynamicLogicOptions":null,
|
||||
"options":["option1","option2","option3"],
|
||||
"translatedOptions":{"option1":"option1","option2":"option2","option3":"option3"},
|
||||
"tooltipText":null,
|
||||
"isPersonalData":false,
|
||||
"inlineEditDisabled":false,
|
||||
"audited":false,
|
||||
"readOnly":false,
|
||||
"tooltip":false
|
||||
}';
|
||||
|
||||
protected function createFieldManager($app = null)
|
||||
{
|
||||
if (!$app) {
|
||||
$app = $this;
|
||||
}
|
||||
|
||||
return $app->getContainer()->get('injectableFactory')->create(
|
||||
'Espo\\Tools\\FieldManager\\FieldManager'
|
||||
);
|
||||
}
|
||||
|
||||
public function testCreate()
|
||||
{
|
||||
$fieldManager = $this->createFieldManager();
|
||||
|
||||
$fieldDefs = get_object_vars(json_decode($this->jsonFieldDefs));
|
||||
|
||||
$fieldManager->create('Account', 'testArray', $fieldDefs);
|
||||
|
||||
$this->getContainer()->get('dataManager')->rebuild(['Account']);
|
||||
|
||||
$app = $this->createApplication();
|
||||
|
||||
$metadata = $app->getContainer()->get('metadata');
|
||||
$savedFieldDefs = $metadata->get('entityDefs.Account.fields.cTestArray');
|
||||
|
||||
$this->assertArrayHasKey('type', $savedFieldDefs);
|
||||
$this->assertArrayHasKey('isCustom', $savedFieldDefs);
|
||||
$this->assertArrayHasKey('options', $savedFieldDefs);
|
||||
$this->assertEquals('array', $savedFieldDefs['type']);
|
||||
$this->assertTrue($savedFieldDefs['isCustom']);
|
||||
|
||||
$entityManager = $app->getContainer()->getByClass(EntityManager::class);
|
||||
|
||||
$account = $entityManager->getNewEntity('Account');
|
||||
$account->set([
|
||||
'name' => 'Test',
|
||||
'cTestArray' => ['option1', 'option3']
|
||||
]);
|
||||
|
||||
$entityManager->saveEntity($account);
|
||||
|
||||
$account = $entityManager->getEntityById('Account', $account->getId());
|
||||
$this->assertEquals(['option1', 'option3'], $account->get('cTestArray'));
|
||||
}
|
||||
|
||||
public function testUpdate()
|
||||
{
|
||||
$this->testCreate();
|
||||
|
||||
$app = $this->createApplication();
|
||||
|
||||
$fieldManager = $this->createFieldManager($app);
|
||||
|
||||
$fieldDefs = get_object_vars(json_decode($this->jsonFieldDefs));
|
||||
$fieldDefs['required'] = true;
|
||||
|
||||
$fieldManager->update('Account', 'cTestArray', $fieldDefs);
|
||||
|
||||
$this->getContainer()->get('dataManager')->rebuild(['Account']);
|
||||
|
||||
$app = $this->createApplication();
|
||||
|
||||
$metadata = $app->getContainer()->get('metadata');
|
||||
$savedFieldDefs = $metadata->get('entityDefs.Account.fields.cTestArray');
|
||||
|
||||
$this->assertTrue($savedFieldDefs['required']);
|
||||
|
||||
$entityManager = $app->getContainer()->getByClass(EntityManager::class);
|
||||
$account = $entityManager->getNewEntity('Account');
|
||||
$account->set([
|
||||
'name' => 'Test',
|
||||
]);
|
||||
|
||||
$entityManager->saveEntity($account);
|
||||
}
|
||||
}
|
||||
141
tests/integration/Espo/Core/Utils/FieldManager/EnumTypeTest.php
Normal file
141
tests/integration/Espo/Core/Utils/FieldManager/EnumTypeTest.php
Normal file
@@ -0,0 +1,141 @@
|
||||
<?php
|
||||
/************************************************************************
|
||||
* This file is part of EspoCRM.
|
||||
*
|
||||
* EspoCRM – Open Source CRM application.
|
||||
* Copyright (C) 2014-2026 EspoCRM, Inc.
|
||||
* Website: https://www.espocrm.com
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of this program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU Affero General Public License version 3.
|
||||
*
|
||||
* In accordance with Section 7(b) of the GNU Affero General Public License version 3,
|
||||
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
|
||||
************************************************************************/
|
||||
|
||||
namespace tests\integration\Espo\Core\Utils\FieldManager;
|
||||
|
||||
use Espo\Core\Utils\Metadata;
|
||||
use Espo\ORM\EntityManager;
|
||||
use tests\integration\Core\BaseTestCase;
|
||||
|
||||
class EnumTypeTest extends BaseTestCase
|
||||
{
|
||||
private $jsonFieldDefs = '{
|
||||
"type":"enum",
|
||||
"required":true,
|
||||
"dynamicLogicVisible":null,
|
||||
"dynamicLogicRequired":null,
|
||||
"dynamicLogicReadOnly":null,
|
||||
"dynamicLogicOptions":null,
|
||||
"name":"testEnum",
|
||||
"label":"TestEnum",
|
||||
"audited":true,
|
||||
"options":["option1","option2","option3"],
|
||||
"translatedOptions":{"option1":"option1","option2":"option2","option3":"option3"},
|
||||
"default":"option2",
|
||||
"tooltipText":"",
|
||||
"isPersonalData":false,
|
||||
"isSorted":false,
|
||||
"readOnly":false,
|
||||
"tooltip":false
|
||||
}';
|
||||
|
||||
protected function createFieldManager($app = null)
|
||||
{
|
||||
if (!$app) {
|
||||
$app = $this;
|
||||
}
|
||||
|
||||
return $app->getContainer()->get('injectableFactory')->create(
|
||||
'Espo\\Tools\\FieldManager\\FieldManager'
|
||||
);
|
||||
}
|
||||
|
||||
public function testCreate()
|
||||
{
|
||||
$fieldManager = $this->createFieldManager();
|
||||
|
||||
$fieldDefs = get_object_vars(json_decode($this->jsonFieldDefs));
|
||||
|
||||
$fieldManager->create('Account', 'testEnum', $fieldDefs);
|
||||
$this->getDataManager()->rebuild(['Account']);
|
||||
|
||||
$app = $this->createApplication();
|
||||
|
||||
$metadata = $app->getContainer()->getByClass(Metadata::class);
|
||||
$savedFieldDefs = $metadata->get('entityDefs.Account.fields.cTestEnum');
|
||||
|
||||
$this->assertEquals('enum', $savedFieldDefs['type']);
|
||||
$this->assertEquals('option2', $savedFieldDefs['default']);
|
||||
$this->assertTrue($savedFieldDefs['required']);
|
||||
$this->assertTrue($savedFieldDefs['isCustom']);
|
||||
$this->assertTrue($savedFieldDefs['audited']);
|
||||
|
||||
$entityManager = $app->getContainer()->getByClass(EntityManager::class);
|
||||
|
||||
$account = $entityManager->getNewEntity('Account');
|
||||
$account->set([
|
||||
'name' => 'Test',
|
||||
'cTestEnum' => 'option1',
|
||||
]);
|
||||
|
||||
$entityManager->saveEntity($account);
|
||||
|
||||
$account = $entityManager->getEntityById('Account', $account->getId());
|
||||
$this->assertEquals('option1', $account->get('cTestEnum'));
|
||||
}
|
||||
|
||||
public function testUpdate()
|
||||
{
|
||||
$this->testCreate();
|
||||
|
||||
$app = $this->createApplication();
|
||||
|
||||
$fieldManager = $this->createFieldManager($app);
|
||||
|
||||
$fieldDefs = get_object_vars(json_decode($this->jsonFieldDefs));
|
||||
$fieldDefs['required'] = false;
|
||||
$fieldDefs['default'] = 'option3';
|
||||
$fieldDefs['readOnly'] = true;
|
||||
|
||||
$fieldManager->update('Account', 'cTestEnum', $fieldDefs);
|
||||
$this->getDataManager()->rebuild(['Account']);
|
||||
|
||||
$app = $this->createApplication();
|
||||
|
||||
$metadata = $app->getContainer()->get('metadata');
|
||||
$savedFieldDefs = $metadata->get('entityDefs.Account.fields.cTestEnum');
|
||||
|
||||
$this->assertFalse($savedFieldDefs['required']);
|
||||
$this->assertEquals('option3', $savedFieldDefs['default']);
|
||||
$this->assertTrue($savedFieldDefs['audited']);
|
||||
$this->assertTrue($savedFieldDefs['readOnly']);
|
||||
|
||||
$entityManager = $app->getContainer()->getByClass(EntityManager::class);
|
||||
|
||||
$account = $entityManager->getNewEntity('Account');
|
||||
$account->set([
|
||||
'name' => 'New Test',
|
||||
]);
|
||||
|
||||
$entityManager->saveEntity($account);
|
||||
|
||||
$account = $entityManager->getEntityById('Account', $account->getId());
|
||||
$this->assertEquals('option3', $account->get('cTestEnum'));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,133 @@
|
||||
<?php
|
||||
/************************************************************************
|
||||
* This file is part of EspoCRM.
|
||||
*
|
||||
* EspoCRM – Open Source CRM application.
|
||||
* Copyright (C) 2014-2026 EspoCRM, Inc.
|
||||
* Website: https://www.espocrm.com
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of this program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU Affero General Public License version 3.
|
||||
*
|
||||
* In accordance with Section 7(b) of the GNU Affero General Public License version 3,
|
||||
* these Appropriate Legal Notices must retain the display of the "EspoCRM" word.
|
||||
************************************************************************/
|
||||
|
||||
namespace tests\integration\Espo\Core\Utils\FieldManager;
|
||||
|
||||
use tests\integration\Core\BaseTestCase;
|
||||
|
||||
class VarcharTypeTest extends BaseTestCase
|
||||
{
|
||||
private $jsonFieldDefs = '{
|
||||
"type":"varchar",
|
||||
"required":true,
|
||||
"trim":true,
|
||||
"dynamicLogicVisible":null,
|
||||
"dynamicLogicRequired":null,
|
||||
"dynamicLogicReadOnly":null,
|
||||
"name":"testVarchar",
|
||||
"label":"TestVarchar",
|
||||
"tooltipText":"",
|
||||
"isPersonalData":false,
|
||||
"default":"",
|
||||
"maxLength":null,
|
||||
"audited":false,
|
||||
"readOnly":false,
|
||||
"tooltip":false
|
||||
}';
|
||||
|
||||
protected function createFieldManager($app = null)
|
||||
{
|
||||
if (!$app) {
|
||||
$app = $this;
|
||||
}
|
||||
|
||||
return $app->getContainer()->get('injectableFactory')->create(
|
||||
'Espo\\Tools\\FieldManager\\FieldManager'
|
||||
);
|
||||
}
|
||||
|
||||
public function testCreate()
|
||||
{
|
||||
$fieldManager = $this->createFieldManager();
|
||||
|
||||
$fieldDefs = get_object_vars(json_decode($this->jsonFieldDefs));
|
||||
|
||||
$fieldManager->create('Account', 'testVarchar', $fieldDefs);
|
||||
$this->getContainer()->get('dataManager')->rebuild(['Account']);
|
||||
|
||||
$app = $this->createApplication();
|
||||
|
||||
$metadata = $app->getContainer()->get('metadata');
|
||||
$savedFieldDefs = $metadata->get('entityDefs.Account.fields.cTestVarchar');
|
||||
|
||||
$this->assertArrayHasKey('type', $savedFieldDefs);
|
||||
$this->assertArrayHasKey('isCustom', $savedFieldDefs);
|
||||
$this->assertEquals('varchar', $savedFieldDefs['type']);
|
||||
$this->assertTrue($savedFieldDefs['required']);
|
||||
$this->assertTrue($savedFieldDefs['isCustom']);
|
||||
|
||||
$entityManager = $app->getContainer()->get('entityManager');
|
||||
$account = $entityManager->getEntity('Account');
|
||||
$account->set([
|
||||
'name' => 'Test',
|
||||
'cTestVarchar' => 'test-value'
|
||||
]);
|
||||
|
||||
$entityManager->saveEntity($account);
|
||||
|
||||
$account = $entityManager->getEntity('Account', $account->getId());
|
||||
$this->assertEquals('test-value', $account->get('cTestVarchar'));
|
||||
}
|
||||
|
||||
public function testUpdate()
|
||||
{
|
||||
$this->testCreate();
|
||||
|
||||
$app = $this->createApplication();
|
||||
|
||||
$fieldManager = $this->createFieldManager($app);
|
||||
|
||||
$fieldDefs = get_object_vars(json_decode($this->jsonFieldDefs));
|
||||
$fieldDefs['required'] = false;
|
||||
$fieldDefs['default'] = 'default-value';
|
||||
|
||||
$fieldManager->update('Account', 'cTestVarchar', $fieldDefs);
|
||||
$this->getContainer()->get('dataManager')->rebuild(['Account']);
|
||||
|
||||
$app = $this->createApplication();
|
||||
|
||||
$metadata = $app->getContainer()->get('metadata');
|
||||
$savedFieldDefs = $metadata->get('entityDefs.Account.fields.cTestVarchar');
|
||||
|
||||
$this->assertFalse($savedFieldDefs['required']);
|
||||
$this->assertEquals('default-value', $savedFieldDefs['default']);
|
||||
|
||||
$entityManager = $app->getContainer()->get('entityManager');
|
||||
|
||||
$account = $entityManager->getEntity('Account');
|
||||
$account->set([
|
||||
'name' => 'New Test',
|
||||
]);
|
||||
|
||||
$entityManager->saveEntity($account);
|
||||
|
||||
$account = $entityManager->getEntity('Account', $account->getId());
|
||||
$this->assertEquals('default-value', $account->get('cTestVarchar'));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user