public function testProperlyDeletingActivityItems() { Yii::app()->user->userModel = User::getByUsername('super'); $count = ZurmoRedBean::getRow('select count(*) count from activity_item'); $this->assertEquals(0, $count['count']); $account = AccountTestHelper::createAccountByNameForOwner('anAccount', Yii::app()->user->userModel); $deleted = $account->delete(); $this->assertTrue($deleted); $count = ZurmoRedBean::getRow('select count(*) count from activity_item'); $this->assertEquals(0, $count['count']); $account2 = AccountTestHelper::createAccountByNameForOwner('anAccount2', Yii::app()->user->userModel); $opportunity = OpportunityTestHelper::createOpportunityByNameForOwner('anOpp', Yii::app()->user->userModel); $task = TaskTestHelper::createTaskWithOwnerAndRelatedAccount('aTask', Yii::app()->user->userModel, $account2); $task->activityItems->add($opportunity); $this->assertTrue($task->save()); $taskId = $task->id; $task->forget(); RedBeansCache::forgetAll(); $count = ZurmoRedBean::getRow('select count(*) count from activity_item'); $this->assertEquals(2, $count['count']); $deleted = $account2->delete(); $this->assertTrue($deleted); $account2->forget(); $count = ZurmoRedBean::getRow('select count(*) count from activity_item'); $this->assertEquals(1, $count['count']); RedBeansCache::forgetAll(); //Make sure things render ok even with the account deleted. $content = ActivitiesUtil::renderSummaryContent(Task::getById($taskId), 'someUrl', LatestActivitiesConfigurationForm::OWNED_BY_FILTER_ALL, 'HomeModule'); }
public static function forgetAllCaches() { RedBeanModelsCache::forgetAll(); RedBeansCache::forgetAll(); PermissionsCache::forgetAll(); RightsCache::forgetAll(); PoliciesCache::forgetAll(); GeneralCache::forgetAll(); BeanModelCache::forgetAll(); Currency::resetCaches(); //php only cache }
protected static function accountMungeDoesntChangeWhenRebuilt() { //Need to forget all since sometimes the related information is cached from //before something occurred during a test. RedBeanModelsCache::forgetAll(); RedBeansCache::forgetAll(); $beforeRows = self::getAccountMungeRows(); ReadPermissionsOptimizationUtil::rebuild(); $afterRows = self::getAccountMungeRows(); if ($beforeRows != $afterRows) { echo "Before and after rebuild munge doesn't match.\n"; self::echoRows($beforeRows); self::echoRows($afterRows); } return $beforeRows == $afterRows; }
public function disabled_testMemcachingAccountsDirectly() { Yii::app()->user->userModel = User::getByUsername('super'); $count = 50; $memcache = new Memcache(); $memcache->connect('localhost', 11211); for ($i = 0; $i < $count; $i++) { $account = self::createRandomAccount($i); $this->assertTrue($account->save()); // So that it has everything it should, // particularly its createdByUser. $this->assertTrue($memcache->set("M:{$i}", serialize($account))); } RedBeanModelsCache::forgetAll(true); RedBeansCache::forgetAll(); Yii::app()->user->userModel = User::getByUsername('super'); $memoryBefore = memory_get_usage(true); for ($i = 0; $i < $count; $i++) { $data = $memcache->get("M:{$i}"); $this->assertTrue($data !== false); $account = unserialize($data); $this->assertTrue($account instanceof Account); $this->assertEquals("Account#{$i}", $account->name); $this->assertEquals("http://www.account{$i}.com", $account->website); $this->assertTrue($account->owner instanceof User); $this->assertEquals('super', $account->owner->username); $this->assertTrue($account->owner === Yii::app()->user->userModel); $this->assertTrue($account->createdByUser === Yii::app()->user->userModel); $this->assertTrue($account->modifiedByUser === Yii::app()->user->userModel); unset($account); } $memoryAfter = memory_get_usage(true); $this->assertWithinPercentage($memoryBefore, $memoryAfter, 10); }
public function actionDeactivate($languageCode) { $languageData = LanguagesCollectionView::getLanguageDataByLanguageCode($languageCode); try { if (Yii::app()->languageHelper->deactivateLanguage($languageCode)) { $message = Zurmo::t('ZurmoModule', '{languageName} deactivated successfully', array('{languageName}' => $languageData['label'])); $content = LanguagesCollectionView::renderFlashMessage($message); RedBeansCache::forgetAll(); GeneralCache::forgetAll(); } } catch (Exception $e) { $exceptionMessage = $e->getMessage(); if (!empty($exceptionMessage)) { $message = Zurmo::t('ZurmoModule', '{languageName} deactivate failed. Error: {errorMessage}', array('{languageName}' => $languageData['label'], '{errorMessage}' => $exceptionMessage)); } else { $message = Zurmo::t('ZurmoModule', '{languageName} deactivate failed. Unexpected error.', array('{languageName}' => $languageData['label'])); } $content = LanguagesCollectionView::renderFlashMessage($message, true); } $view = new LanguagesCollectionView($this->getId(), $this->getModule()->getId()); $content .= $view->renderLanguageRow($languageCode); echo $content; }
/** * Forgets about all of the objects so that when they are retrieved * again they will be recreated from the database. For use in testing. */ public static function forgetAll() { self::forgetAllBeanModels(); RedBeanModelsCache::forgetAll(); RedBeansCache::forgetAll(); }
public function testMixedInPersonInUser() { $user = new User(); $user->username = '******'; $user->lastName = 'Dude'; $this->assertTrue($user->save()); $this->assertTrue($user->isAttribute('id')); // From RedBeanModel. $this->assertTrue($user->isAttribute('createdDateTime')); // From Item. $this->assertTrue($user->isAttribute('firstName')); // From Person. $this->assertTrue($user->isAttribute('username')); // From User. $this->assertTrue($user->isRelation('createdByUser')); // From Item. $this->assertTrue($user->isRelation('rights')); // From Permitable. $this->assertTrue($user->isRelation('title')); // From Person. $this->assertTrue($user->isRelation('manager')); // From User. unset($user); $user = User::getByUsername('dude'); $this->assertTrue($user->isAttribute('id')); // From RedBeanModel. $this->assertTrue($user->isAttribute('createdDateTime')); // From Item. $this->assertTrue($user->isAttribute('firstName')); // From Person. $this->assertTrue($user->isAttribute('username')); // From User. $this->assertTrue($user->isRelation('createdByUser')); // From Item. $this->assertTrue($user->isRelation('rights')); // From Permitable. $this->assertTrue($user->isRelation('title')); // From Person. $this->assertTrue($user->isRelation('manager')); // From User. RedBeanModelsCache::cacheModel($user); $modelIdentifier = $user->getModelIdentifier(); unset($user); RedBeanModelsCache::forgetAll(true); // Forget it at the php level. RedBeansCache::forgetAll(); if (MEMCACHE_ON) { $user = RedBeanModelsCache::getModel($modelIdentifier); $this->assertTrue($user->isAttribute('id')); // From RedBeanModel. $this->assertTrue($user->isAttribute('createdDateTime')); // From Item. $this->assertTrue($user->isAttribute('firstName')); // From Person. $this->assertTrue($user->isAttribute('username')); // From User. $this->assertTrue($user->isRelation('createdByUser')); // From Item. $this->assertTrue($user->isRelation('rights')); // From Permitable. $this->assertTrue($user->isRelation('title')); // From Person. $this->assertTrue($user->isRelation('manager')); // From User. } }
/** * @depends testUserAddedToRoleWhereUserIsMemberOfGroupWithChildrenGroups_Slide19 */ public function testUserAddedToRoleWhereUserIsMemberOfGroupWithChildrenGroups_Slide20() { $u1 = User::getByUsername('u1.'); $u99 = User::getByUsername('u99.'); Yii::app()->user->userModel = $u99; $u1->role = null; $this->assertTrue($u1->save()); $g1 = Group::getByName('G1.'); $g2 = Group::getByName('G2.'); $g3 = Group::getByName('G3.'); $g1->groups->add($g2); $this->assertTrue($g1->save()); $g2->groups->add($g3); $this->assertTrue($g2->save()); $g3->users->add($u1); $this->assertTrue($g3->save()); $u1->forget(); //Forget the user, so the user knows what groups it is part of. $u1 = User::getByUsername('u1.'); $r1 = Role::getByName('R1.'); $r2 = Role::getByName('R2.'); $r3 = Role::getByName('R3.'); $a1 = new Account(); $a1->name = 'A1.'; $a1->addPermissions($g1, Permission::READ); $this->assertTrue($a1->save()); //Called in OwnedSecurableItem::afterSave(); //ReadPermissionsOptimizationUtil::ownedSecurableItemCreated($a1); $a2 = new Account(); $a2->name = 'A2.'; $a2->addPermissions($g2, Permission::READ); $this->assertTrue($a2->save()); //Called in OwnedSecurableItem::afterSave(); //ReadPermissionsOptimizationUtil::ownedSecurableItemCreated($a2); $a3 = new Account(); $a3->name = 'A3.'; $a3->addPermissions($g3, Permission::READ); $this->assertTrue($a3->save()); //Called in OwnedSecurableItem::afterSave(); //ReadPermissionsOptimizationUtil::ownedSecurableItemCreated($a3); ReadPermissionsOptimizationUtil::securableItemGivenPermissionsForGroup($a1, $g1); ReadPermissionsOptimizationUtil::securableItemGivenPermissionsForGroup($a2, $g2); ReadPermissionsOptimizationUtil::securableItemGivenPermissionsForGroup($a3, $g3); $u1->role = $r1; $this->assertTrue($u1->save()); //Called in $u1->afterSave(); //ReadPermissionsOptimizationUtil::userAddedToRole($u1); $r1->forget(); //Forget R1 so when it is utilized below, it will know that u1 is a member. $this->assertEquals(array(array('A1', 'G1', 1), array('A1', 'G2', 1), array('A1', 'G3', 1), array('A1', 'R2', 1), array('A1', 'R3', 1), array('A2', 'G2', 1), array('A2', 'G3', 1), array('A2', 'R2', 1), array('A2', 'R3', 1), array('A3', 'G3', 1), array('A3', 'R2', 1), array('A3', 'R3', 1)), self::getAccountMungeRows()); $this->assertTrue(self::accountMungeDoesntChangeWhenRebuilt()); $u1->forget(); //Forget the user, so the user knows what groups it is part of. $u1 = User::getByUsername('u1.'); $u1->role = null; $this->assertTrue($u1->save()); RedBeanModelsCache::forgetAll(); RedBeansCache::forgetAll(); $this->assertEquals(array(array('A1', 'G1', 1), array('A1', 'G2', 1), array('A1', 'G3', 1), array('A2', 'G2', 1), array('A2', 'G3', 1), array('A3', 'G3', 1)), self::getAccountMungeRows()); $this->assertTrue(self::accountMungeDoesntChangeWhenRebuilt()); $a1->delete(); $a2->delete(); $a3->delete(); $g1->group = null; $this->assertTrue($g1->save()); $g2->group = null; $this->assertTrue($g2->save()); $g3->forget(); $g3 = Group::getByName('G3.'); $g3->group = null; $g3->users->removeAll(); $this->assertTrue($g3->save()); $r1 = Role::getByName('R1.'); $u1->role = $r1; $this->assertTrue($u1->save()); }
/** * Forgets about all of the objects so that when they are retrieved * again they will be recreated from the database. For use in testing. */ public static function forgetAll() { self::forgetAllBeanModels(); self::$attributeLabelsByLanguage = array(); RedBeanModelsCache::forgetAll(); RedBeansCache::forgetAll(); }