N° 5874 - Quick create: improvement for newcomer

This commit is contained in:
XavierGR
2024-11-21 15:11:55 +01:00
committed by XGUI
parent 0d8a20c35e
commit 6a00786535
26 changed files with 364 additions and 170 deletions

View File

@@ -0,0 +1,60 @@
<?php
namespace Application\UI\Base\Components\QuickCreate;
use appUserPreferences;
use Combodo\iTop\Application\UI\Base\Component\QuickCreate\QuickCreateHelper;
use Combodo\iTop\Test\UnitTest\ItopDataTestCase;
class QuickCreateHelperTest extends ItopDataTestCase
{
public function testPopularClassesShouldBeLeftUnchangedWhenNotInRecent()
{
// Given popular classes = ['FunctionalCI', 'UserRequest'], as defined in datamodel
$this->GivenRecentClasses(['Person']);
$aPopularClasses = QuickCreateHelper::GetPopularClasses();
$this->AssertPopularClassesMatches(['FunctionalCI', 'UserRequest'], $aPopularClasses, "");
}
public function testPopularClassesShouldBeLeftUnchangedWhenNoRecent()
{
// Given popular classes = ['FunctionalCI', 'UserRequest'], as defined in datamodel
$this->GivenRecentClasses([]);
$aPopularClasses = QuickCreateHelper::GetPopularClasses();
$this->AssertPopularClassesMatches(['FunctionalCI', 'UserRequest'], $aPopularClasses, "");
}
public function testClassInRecentShouldNotBeInPopular()
{
// Given popular classes = ['FunctionalCI', 'UserRequest'], as defined in datamodel
$this->GivenRecentClasses(['UserRequest']);
$aPopularClasses = QuickCreateHelper::GetPopularClasses();
$this->AssertPopularClassesMatches(['FunctionalCI'], $aPopularClasses, "");
}
private function GivenRecentClasses(array $aGivenClasses)
{
$aRecentClasses = [];
// User preferences will be reset during the rollback
foreach($aGivenClasses as $sClass) {
$aRecentClasses[] = array(
'class' => $sClass,
);
}
appUserPreferences::SetPref(QuickCreateHelper::USER_PREF_CODE, $aRecentClasses);
}
private function AssertPopularClassesMatches(array $aExpectedClasses, array $aPopularClasses, string $sMessage = '')
{
$aFoundClasses = [];
foreach($aPopularClasses as $aClassData) {
$aFoundClasses[] = $aClassData['class'];
}
sort($aFoundClasses);
sort($aExpectedClasses);
$this->assertEquals($aExpectedClasses, $aFoundClasses, $sMessage);
}
}