N°8772 - AbstractFormIO tests

This commit is contained in:
Eric Espie
2025-11-18 16:45:11 +01:00
parent 7c0f454936
commit 0cb7c7359f
2 changed files with 33 additions and 7 deletions

View File

@@ -43,9 +43,9 @@ class AbstractFormIO
*/
public function __construct(string $sName, string $sType, AbstractFormBlock $oOwnerBlock)
{
$this->SetName($sName);
$this->sType = $sType;
$this->oOwnerBlock = $oOwnerBlock;
$this->SetName($sName);
}
/**
@@ -84,12 +84,12 @@ class AbstractFormIO
if ($sParsedName !== $sName) {
$sName = json_encode($sName);
$sParsedName = json_encode($sParsedName);
$sBlockName = json_encode($this->getName());
$sBlockName = json_encode($this->GetOwnerBlock()->GetName());
throw new FormBlockIOException("Input $sName does not match $sParsedName for block $sBlockName.");
}
} else {
$sName = json_encode($sName);
$sBlockName = json_encode($this->getName());
$sBlockName = json_encode($this->GetOwnerBlock()->GetName());
throw new FormBlockIOException("Input $sName is not valid for block $sBlockName.");
}

View File

@@ -62,11 +62,37 @@ class AbstractFormIOTest extends AbstractFormsTest
$this->assertEquals('The value posted', $oInput->GetValue());
}
public function testNameDoesNotAcceptBlank()
/**
* @dataProvider NameFormatSupportsOnlyLettersUnderscoreAndNumbersProvider
* @return void
* @throws \Combodo\iTop\Forms\IO\FormBlockIOException
*/
public function testNameFormatSupportsOnlyLettersUnderscoreAndNumbers(string $sName, bool $bGenerateException = true)
{
$oInput = $this->GivenRawInput('test');
$this->expectException(FormBlockIOException::class);
$oInput->SetName('The test name');
if ($bGenerateException) {
$this->expectException(FormBlockIOException::class);
}
$oInput = $this->GivenRawInput($sName);
if (!$bGenerateException) {
$this->assertEquals($sName.'_input', $oInput->GetName());
}
}
public function NameFormatSupportsOnlyLettersUnderscoreAndNumbersProvider()
{
return [
'Spaces not supported' => ['The test name'],
'Minus not supported' => ['The-test-name'],
'Percent not supported' => ['name%'],
'Accent not supported' => ['namé'],
// Corrects
'Numbers OK' => ['name123', false],
'Underscore OK' => ['The_test_name', false],
'Camel OK' => ['TheTestName', false],
];
}
}