mirror of
https://github.com/Combodo/iTop.git
synced 2026-02-13 07:24:13 +01:00
N°659 PHPUnit to test uniqueness rule validity check... and debug tested method (woops ! unit test will save the world ;) )
This commit is contained in:
@@ -3074,8 +3074,8 @@ abstract class MetaModel
|
||||
$MANDATORY_ATTRIBUTES = array('attributes');
|
||||
$UNIQUENESS_MANDATORY_KEYS_NB = count($MANDATORY_ATTRIBUTES);
|
||||
$bHasDisabledKey = false;
|
||||
$bHasMissingMandatoryKey = false;
|
||||
$iMissingMandatoryKeysNb = 0;
|
||||
$bHasMissingMandatoryKey = true;
|
||||
$iMissingMandatoryKeysNb = $UNIQUENESS_MANDATORY_KEYS_NB;
|
||||
$bHasAllMandatoryKeysMissing = false;
|
||||
$bHasNonDisabledKeys = false;
|
||||
|
||||
@@ -3086,6 +3086,12 @@ abstract class MetaModel
|
||||
$bHasDisabledKey = true;
|
||||
continue;
|
||||
}
|
||||
$bHasNonDisabledKeys = true;
|
||||
|
||||
if (in_array($sUniquenessRuleKey, $MANDATORY_ATTRIBUTES, true)) {
|
||||
$bHasMissingMandatoryKey = false;
|
||||
$iMissingMandatoryKeysNb--;
|
||||
}
|
||||
|
||||
if (($sUniquenessRuleKey === 'attributes') && (!empty($aExistingClassFields)))
|
||||
{
|
||||
@@ -3097,21 +3103,6 @@ abstract class MetaModel
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!$aUniquenessRuleProperty)
|
||||
{
|
||||
if (!in_array($sUniquenessRuleKey, $MANDATORY_ATTRIBUTES, true))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
$bHasMissingMandatoryKey = true;
|
||||
$iMissingMandatoryKeysNb++;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
$bHasNonDisabledKeys = true;
|
||||
}
|
||||
|
||||
if ($iMissingMandatoryKeysNb == $UNIQUENESS_MANDATORY_KEYS_NB)
|
||||
|
||||
77
test/core/UniquenessConstraintTest.php
Normal file
77
test/core/UniquenessConstraintTest.php
Normal file
@@ -0,0 +1,77 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace Combodo\iTop\Test\UnitTest\Core;
|
||||
|
||||
use Combodo\iTop\Test\UnitTest\ItopTestCase;
|
||||
|
||||
/**
|
||||
* Class UniquenessConstraintTest
|
||||
*
|
||||
* @since 2.6 N°659 uniqueness constraint
|
||||
*
|
||||
* @package Combodo\iTop\Test\UnitTest\Core
|
||||
*/
|
||||
class UniquenessConstraintTest extends ItopTestCase
|
||||
{
|
||||
protected function setUp()
|
||||
{
|
||||
parent::setUp();
|
||||
require_once(APPROOT.'/core/metamodel.class.php');
|
||||
require_once(APPROOT.'/core/coreexception.class.inc.php');
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers MetaModel::CheckUniquenessRuleValidity
|
||||
* @dataProvider testUniquenessRuleValidityCheckProvider
|
||||
*
|
||||
* @param bool $bIsRuleShouldBeValid
|
||||
* @param bool $bIsRuleOverride
|
||||
* @param array $aRuleProperties
|
||||
*/
|
||||
public function testUniquenessRuleValidityCheck($bIsRuleShouldBeValid, $bIsRuleOverride, $aRuleProperties)
|
||||
{
|
||||
$bRuleValidResult = true;
|
||||
try
|
||||
{
|
||||
\MetaModel::CheckUniquenessRuleValidity($aRuleProperties, $bIsRuleOverride);
|
||||
}
|
||||
catch (\CoreUnexpectedValue $e)
|
||||
{
|
||||
$bRuleValidResult = false;
|
||||
}
|
||||
|
||||
$this->assertEquals($bIsRuleShouldBeValid, $bRuleValidResult, "Validity test returned $bRuleValidResult");
|
||||
}
|
||||
|
||||
public function testUniquenessRuleValidityCheckProvider()
|
||||
{
|
||||
return array(
|
||||
'simplest rule' => array(true, false, array('attributes' => array('name'))),
|
||||
'with all properties' => array(
|
||||
true,
|
||||
false,
|
||||
array(
|
||||
'attributes' => array('name'),
|
||||
'filter' => 'name != \'\'',
|
||||
'disabled' => false,
|
||||
'is_blocking' => true,
|
||||
),
|
||||
),
|
||||
'only disabled key without ancestor' => array(
|
||||
false,
|
||||
false,
|
||||
array(
|
||||
'disabled' => true,
|
||||
),
|
||||
),
|
||||
'only disabled key with ancestor' => array(
|
||||
true,
|
||||
true,
|
||||
array(
|
||||
'disabled' => true,
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user