assertSame(5, CustomVariables::getNumUsableCustomVariables()); } public function test_getNumUsableCustomVariables_ShouldCacheTheResult() { CustomVariables::getNumUsableCustomVariables(); $cache = Cache::getCacheGeneral(); $this->assertSame(5, $cache[CustomVariables::MAX_NUM_CUSTOMVARS_CACHEKEY]); } public function test_getNumUsableCustomVariables_ShouldReadFromCacheIfPossible() { $cache = Cache::getCacheGeneral(); $cache[CustomVariables::MAX_NUM_CUSTOMVARS_CACHEKEY] = 10; Cache::setCacheGeneral($cache); $this->assertSame(10, CustomVariables::getNumUsableCustomVariables()); } public function test_getNumUsableCustomVariables_ShouldReturnMinVariables_IfOneTableHasLessEntriesThanOthers() { $this->assertEquals(5, CustomVariables::getNumUsableCustomVariables()); $scopes = Model::getScopes(); // removing custom vars step by step... as soon as one custom var is removed, // it should return the min count of available variables for ($i = 4; $i != -1; $i--) { foreach ($scopes as $scope) { $this->dropCustomVar($scope); $this->assertSame($i, CustomVariables::getNumUsableCustomVariables()); } } $this->assertEquals(0, CustomVariables::getNumUsableCustomVariables()); // add custom var, only once all custom vars are written it should write return a higher custom var number for ($i = 1; $i != 7; $i++) { foreach ($scopes as $index => $scope) { $isLastIndex = $index === (count($scopes) - 1); $this->addCustomVar($scope); if ($isLastIndex) { $this->assertSame($i, CustomVariables::getNumUsableCustomVariables()); // all scopes have been added, it should consider all custom var counts } else { $this->assertSame($i - 1, CustomVariables::getNumUsableCustomVariables()); // at least one scope is not added and should therefore return the old custom var count until all // tables have been updated } } } $this->assertEquals(6, CustomVariables::getNumUsableCustomVariables()); } private function dropCustomVar($scope) { $this->clearCache(); $model = new Model($scope); $model->removeCustomVariable(); } private function addCustomVar($scope) { $this->clearCache(); $model = new Model($scope); $model->addCustomVariable(); } private function clearCache() { Cache::clearCacheGeneral(); } }