From d16757f8f075745376e332d1ee83c81d0cd63e95 Mon Sep 17 00:00:00 2001 From: "xavier.guiboud-ribaud@combodo.com" Date: Wed, 27 Nov 2024 08:01:30 +0100 Subject: [PATCH] =?UTF-8?q?N=C2=B05874=20-=20Quick=20create:=20improvement?= =?UTF-8?q?=20for=20newcomer=20Rework=20tests=20for=20readability?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../QuickCreate/QuickCreateHelperTest.php | 83 ++++++++++--------- 1 file changed, 42 insertions(+), 41 deletions(-) diff --git a/tests/php-unit-tests/unitary-tests/sources/Application/UI/Base/Components/QuickCreate/QuickCreateHelperTest.php b/tests/php-unit-tests/unitary-tests/sources/Application/UI/Base/Components/QuickCreate/QuickCreateHelperTest.php index deb255d77..b1ccdc3b9 100644 --- a/tests/php-unit-tests/unitary-tests/sources/Application/UI/Base/Components/QuickCreate/QuickCreateHelperTest.php +++ b/tests/php-unit-tests/unitary-tests/sources/Application/UI/Base/Components/QuickCreate/QuickCreateHelperTest.php @@ -8,52 +8,53 @@ use Combodo\iTop\Test\UnitTest\ItopDataTestCase; class QuickCreateHelperTest extends ItopDataTestCase { - private array $aInitialUserPref = []; - protected function setUp(): void { - parent::setUp(); - $this->aInitialUserPref = appUserPreferences::GetPref(QuickCreateHelper::USER_PREF_CODE, []); - } - - protected function tearDown(): void{ - parent::tearDown(); - appUserPreferences::SetPref(QuickCreateHelper::USER_PREF_CODE, $this->aInitialUserPref); - } - - /** - * Test class removal from popular when it is in recent classes - */ - public function testNoDuplicateInPopularAndLast() + public function testPopularClassesShouldBeLeftUnchangedWhenNotInRecent() { - $aClasses = ['ApplicationSolution', 'BusinessProcess', 'DatabaseSchema', 'MiddlewareInstance', 'Enclosure']; - // Should contain the first Popular class (FunctionalCI if default) - $aPopularClassesInitial = QuickCreateHelper::GetPopularClasses(); - $sPopularClass = $aPopularClassesInitial[0]['class']; - QuickCreateHelper::AddClassToHistory($sPopularClass); - // Popular class should now be in Recents and no longer in Popular - $aPopularClassNoParam = QuickCreateHelper::GetPopularClasses(); + // Given popular classes = ['FunctionalCI', 'UserRequest'], as defined in datamodel + $this->GivenRecentClasses(['Person']); - for($iIdx = 0; $iIdx < count($aPopularClassNoParam); $iIdx++) - { - $this->assertNotEquals($aPopularClassNoParam[$iIdx]['class'], $sPopularClass); - } - - return [$aClasses, $aPopularClassesInitial]; + $aPopularClasses = QuickCreateHelper::GetPopularClasses(); + $this->AssertPopularClassesMatches(['Server', 'FunctionalCI', 'UserRequest'], $aPopularClasses, ""); } - /** - * Test class addition in popular after being removed from recent classes - * @depends testNoDuplicateInPopularAndLast - */ - public function testPopularClassBackAfterRecent(array $aNoDuplicateResult){ - [$aClasses, $aPopularClassesInitial] = $aNoDuplicateResult; + public function testPopularClassesShouldBeLeftUnchangedWhenNoRecent() + { + // Given popular classes = ['FunctionalCI', 'UserRequest'], as defined in datamodel + $this->GivenRecentClasses([]); - foreach($aClasses as $sClass) - { - // Creating as many classes as needed for UserRequest to no longer be in the Recent classes (at least equal to 'quick_create.max_history_results') - QuickCreateHelper::AddClassToHistory($sClass); + $aPopularClasses = QuickCreateHelper::GetPopularClasses(); + $this->AssertPopularClassesMatches(['Server', 'FunctionalCI', 'UserRequest'], $aPopularClasses, ""); + } + + public function testClassInRecentShouldNotBeInPopular() + { + // Given popular classes = ['FunctionalCI', 'UserRequest'], as defined in datamodel + $this->GivenRecentClasses(['UserRequest']); + + $aPopularClasses = QuickCreateHelper::GetPopularClasses(); + $this->AssertPopularClassesMatches(['Server', 'FunctionalCI'], $aPopularClasses, ""); + } + private function GivenRecentClasses(array $aGivenClasses) + { + $aRecentClasses = []; + // User preferences will be reset during the rollback + foreach($aGivenClasses as $sClass) { + $aRecentClasses[] = array( + 'class' => $sClass, + ); } - // Should contain the first Popular class (FunctionalCI if default) - $aPopularClassesFinal = QuickCreateHelper::GetPopularClasses(); - $this->assertEquals($aPopularClassesInitial, $aPopularClassesFinal); + + 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); } } \ No newline at end of file