mirror of
https://github.com/Combodo/iTop.git
synced 2026-03-05 17:14:20 +01:00
N°6414 Move existing AbstractSimpleField::Validate impl to custom validators
- LinkedSetField - SelectObjectField - MultipleChoicesField (warning this hierarchy contains non multiple value fields like SelectField !) Also change AbstractValidator::Validate signature : now we are returning an array of error messages, so that we can return multiple ones
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2023 Combodo SARL
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
namespace Form;
|
||||
|
||||
use Combodo\iTop\Form\Field\SelectObjectField;
|
||||
use Combodo\iTop\Test\UnitTest\ItopDataTestCase;
|
||||
use ContextTag;
|
||||
use DBObjectSearch;
|
||||
use Organization;
|
||||
|
||||
class SelectObjectFieldTest extends ItopDataTestCase {
|
||||
public function testValidate(): void {
|
||||
$oSelectObjectField = new SelectObjectField('test');
|
||||
$oSelectObjectField->SetSearch(DBObjectSearch::FromOQL('SELECT '.Organization::class));
|
||||
|
||||
// N°1150 the control was added for the REST API initially and was only triggered with the corresponding ContextTag
|
||||
$oRestContext = new ContextTag(ContextTag::TAG_REST);
|
||||
$this->ValidateSelectObjectField($oSelectObjectField);
|
||||
|
||||
// retrying without REST context
|
||||
unset($oRestContext);
|
||||
$this->ValidateSelectObjectField($oSelectObjectField);
|
||||
}
|
||||
|
||||
private function ValidateSelectObjectField(SelectObjectField $oSelectObjectField): void {
|
||||
$oSelectObjectField->SetCurrentValue(null);
|
||||
$this->assertTrue($oSelectObjectField->Validate(), 'No value must be valid');
|
||||
|
||||
$sExistingOrganizationId = 1;
|
||||
$oSelectObjectField->SetCurrentValue($sExistingOrganizationId);
|
||||
$this->assertTrue($oSelectObjectField->Validate(), 'An existing object id must be valid');
|
||||
|
||||
$sNonExistingOrganizationId = 999999;
|
||||
$oSelectObjectField->SetCurrentValue($sNonExistingOrganizationId);
|
||||
$this->assertFalse($oSelectObjectField->Validate(), 'An non existing object id must be invalid');
|
||||
$this->assertCount(1, $oSelectObjectField->GetErrorMessages());
|
||||
$this->assertStringContainsString($sNonExistingOrganizationId, $oSelectObjectField->GetErrorMessages()[0]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user