public function init()
 {
     if (AccountsModule::shouldUpdateLatestActivityDateTimeWhenATaskIsCompleted()) {
         $eventHandler = array($this, 'updateAccountLatestActivityDateTimeByTask');
         Task::model()->attachEventHandler('onAfterSave', $eventHandler);
         $this->attachedEventHandlersIndexedByModelClassName['Task'] = array('onAfterSave', $eventHandler);
     }
     if (AccountsModule::shouldUpdateLatestActivityDateTimeWhenANoteIsCreated()) {
         $eventHandler = array($this, 'updateAccountLatestActivityDateTimeByNote');
         Note::model()->attachEventHandler('onAfterSave', $eventHandler);
         $this->attachedEventHandlersIndexedByModelClassName['Note'] = array('onAfterSave', $eventHandler);
     }
     if (AccountsModule::shouldUpdateLatestActivityDateTimeWhenAnEmailIsSentOrArchived()) {
         $eventHandler = array($this, 'updateAccountLatestActivityDateTimeByEmailMessage');
         EmailMessage::model()->attachEventHandler('onAfterSave', $eventHandler);
         $this->attachedEventHandlersIndexedByModelClassName['EmailMessage'] = array('onAfterSave', $eventHandler);
     }
     if (AccountsModule::shouldUpdateLatestActivityDateTimeWhenAMeetingIsInThePast()) {
         $eventHandler = array($this, 'resolveModelLatestActivityDateTimeProcessFlagByMeeting');
         Meeting::model()->attachEventHandler('onBeforeSave', $eventHandler);
         $this->attachedEventHandlersIndexedByModelClassName['Meeting'] = array('onBeforeSave', $eventHandler);
     }
 }
 public function testUpdateLatestActivityDateTimeMethods()
 {
     $value = AccountsModule::shouldUpdateLatestActivityDateTimeWhenATaskIsCompleted();
     $this->assertTrue($value);
     $value = AccountsModule::shouldUpdateLatestActivityDateTimeWhenANoteIsCreated();
     $this->assertTrue($value);
     $value = AccountsModule::shouldUpdateLatestActivityDateTimeWhenAnEmailIsSentOrArchived();
     $this->assertTrue($value);
     $value = AccountsModule::shouldUpdateLatestActivityDateTimeWhenAMeetingIsInThePast();
     $this->assertTrue($value);
     $metadata = AccountsModule::getMetadata();
     $metadata['global']['updateLatestActivityDateTimeWhenATaskIsCompleted'] = false;
     AccountsModule::setMetadata($metadata);
     $value = AccountsModule::shouldUpdateLatestActivityDateTimeWhenATaskIsCompleted();
     $this->assertFalse($value);
     $value = AccountsModule::shouldUpdateLatestActivityDateTimeWhenANoteIsCreated();
     $this->assertTrue($value);
     $value = AccountsModule::shouldUpdateLatestActivityDateTimeWhenAnEmailIsSentOrArchived();
     $this->assertTrue($value);
     $value = AccountsModule::shouldUpdateLatestActivityDateTimeWhenAMeetingIsInThePast();
     $this->assertTrue($value);
     $metadata = AccountsModule::getMetadata();
     $metadata['global']['updateLatestActivityDateTimeWhenANoteIsCreated'] = false;
     AccountsModule::setMetadata($metadata);
     $value = AccountsModule::shouldUpdateLatestActivityDateTimeWhenATaskIsCompleted();
     $this->assertFalse($value);
     $value = AccountsModule::shouldUpdateLatestActivityDateTimeWhenANoteIsCreated();
     $this->assertFalse($value);
     $value = AccountsModule::shouldUpdateLatestActivityDateTimeWhenAnEmailIsSentOrArchived();
     $this->assertTrue($value);
     $value = AccountsModule::shouldUpdateLatestActivityDateTimeWhenAMeetingIsInThePast();
     $this->assertTrue($value);
     $metadata = AccountsModule::getMetadata();
     $metadata['global']['updateLatestActivityDateTimeWhenAnEmailIsSentOrArchived'] = false;
     AccountsModule::setMetadata($metadata);
     $value = AccountsModule::shouldUpdateLatestActivityDateTimeWhenATaskIsCompleted();
     $this->assertFalse($value);
     $value = AccountsModule::shouldUpdateLatestActivityDateTimeWhenANoteIsCreated();
     $this->assertFalse($value);
     $value = AccountsModule::shouldUpdateLatestActivityDateTimeWhenAnEmailIsSentOrArchived();
     $this->assertFalse($value);
     $value = AccountsModule::shouldUpdateLatestActivityDateTimeWhenAMeetingIsInThePast();
     $this->assertTrue($value);
     $metadata = AccountsModule::getMetadata();
     $metadata['global']['updateLatestActivityDateTimeWhenAMeetingIsInThePast'] = false;
     AccountsModule::setMetadata($metadata);
     $value = AccountsModule::shouldUpdateLatestActivityDateTimeWhenATaskIsCompleted();
     $this->assertFalse($value);
     $value = AccountsModule::shouldUpdateLatestActivityDateTimeWhenANoteIsCreated();
     $this->assertFalse($value);
     $value = AccountsModule::shouldUpdateLatestActivityDateTimeWhenAnEmailIsSentOrArchived();
     $this->assertFalse($value);
     $value = AccountsModule::shouldUpdateLatestActivityDateTimeWhenAMeetingIsInThePast();
     $this->assertFalse($value);
 }
 public function testSuperUserAccountDefaultControllerActions()
 {
     $super = $this->logoutCurrentUserLoginNewUserAndGetByUsername('super');
     //Default Controller actions requiring some sort of parameter via POST or GET
     //Load Account Modules Menu.
     $this->resetPostArray();
     $this->setGetArray(array('moduleClassName' => 'AccountsModule'));
     $this->runControllerWithNoExceptionsAndGetContent('designer/default/modulesMenu');
     //Load AttributesList for Account module.
     $this->resetPostArray();
     $this->setGetArray(array('moduleClassName' => 'AccountsModule'));
     $this->runControllerWithNoExceptionsAndGetContent('designer/default/attributesList');
     //Load ModuleLayoutsList for Account module.
     $this->resetPostArray();
     $this->setGetArray(array('moduleClassName' => 'AccountsModule'));
     $this->runControllerWithNoExceptionsAndGetContent('designer/default/moduleLayoutsList');
     //Load ModuleEdit view for each applicable module.
     $this->resetPostArray();
     $this->setGetArray(array('moduleClassName' => 'AccountsModule'));
     $this->runControllerWithNoExceptionsAndGetContent('designer/default/moduleEdit');
     //Now validate save with failed validation.
     $this->setGetArray(array('moduleClassName' => 'AccountsModule'));
     $this->setPostArray(array('ajax' => 'edit-form', 'AccountsModuleForm' => $this->createModuleEditBadValidationPostData()));
     $content = $this->runControllerWithExitExceptionAndGetContent('designer/default/moduleEdit');
     //Now validate save with successful validation.
     $this->setGetArray(array('moduleClassName' => 'AccountsModule'));
     $this->setPostArray(array('ajax' => 'edit-form', 'AccountsModuleForm' => $this->createModuleEditGoodValidationPostData('acc new name')));
     $content = $this->runControllerWithExitExceptionAndGetContent('designer/default/moduleEdit');
     $this->assertEquals('[]', $content);
     //Now save successfully.
     $value = AccountsModule::shouldUpdateLatestActivityDateTimeWhenATaskIsCompleted();
     $this->assertTrue($value);
     $value = AccountsModule::shouldUpdateLatestActivityDateTimeWhenANoteIsCreated();
     $this->assertTrue($value);
     $value = AccountsModule::shouldUpdateLatestActivityDateTimeWhenAnEmailIsSentOrArchived();
     $this->assertTrue($value);
     $value = AccountsModule::shouldUpdateLatestActivityDateTimeWhenAMeetingIsInThePast();
     $this->assertTrue($value);
     $postDataForForm = $this->createModuleEditGoodValidationPostData('acc new name');
     $postDataForForm['updateLatestActivityDateTimeWhenATaskIsCompleted'] = '';
     $postDataForForm['updateLatestActivityDateTimeWhenANoteIsCreated'] = '';
     $postDataForForm['updateLatestActivityDateTimeWhenAnEmailIsSentOrArchived'] = '';
     $postDataForForm['updateLatestActivityDateTimeWhenAMeetingIsInThePast'] = '';
     $this->setGetArray(array('moduleClassName' => 'AccountsModule'));
     $this->setPostArray(array('save' => 'Save', 'AccountsModuleForm' => $postDataForForm));
     $this->runControllerWithRedirectExceptionAndGetContent('designer/default/moduleEdit');
     //Now confirm everything did in fact save correctly.
     $this->assertEquals('Acc New Name', AccountsModule::getModuleLabelByTypeAndLanguage('Singular'));
     $this->assertEquals('Acc New Names', AccountsModule::getModuleLabelByTypeAndLanguage('Plural'));
     $this->assertEquals('acc new name', AccountsModule::getModuleLabelByTypeAndLanguage('SingularLowerCase'));
     $this->assertEquals('acc new names', AccountsModule::getModuleLabelByTypeAndLanguage('PluralLowerCase'));
     $value = AccountsModule::shouldUpdateLatestActivityDateTimeWhenATaskIsCompleted();
     $this->assertFalse($value);
     $value = AccountsModule::shouldUpdateLatestActivityDateTimeWhenANoteIsCreated();
     $this->assertFalse($value);
     $value = AccountsModule::shouldUpdateLatestActivityDateTimeWhenAnEmailIsSentOrArchived();
     $this->assertFalse($value);
     $value = AccountsModule::shouldUpdateLatestActivityDateTimeWhenAMeetingIsInThePast();
     $this->assertFalse($value);
     //Load LayoutEdit for each applicable module and applicable layout
     $this->resetPostArray();
     $this->setGetArray(array('moduleClassName' => 'AccountsModule', 'viewClassName' => 'AccountEditAndDetailsView'));
     $this->runControllerWithNoExceptionsAndGetContent('designer/default/LayoutEdit');
     $this->setGetArray(array('moduleClassName' => 'AccountsModule', 'viewClassName' => 'AccountsListView'));
     $this->runControllerWithNoExceptionsAndGetContent('designer/default/LayoutEdit');
     $this->setGetArray(array('moduleClassName' => 'AccountsModule', 'viewClassName' => 'AccountsMassEditView'));
     $this->runControllerWithNoExceptionsAndGetContent('designer/default/LayoutEdit');
     $this->setGetArray(array('moduleClassName' => 'AccountsModule', 'viewClassName' => 'AccountsModalListView'));
     $this->runControllerWithNoExceptionsAndGetContent('designer/default/LayoutEdit');
     $this->setGetArray(array('moduleClassName' => 'AccountsModule', 'viewClassName' => 'AccountsModalSearchView'));
     $this->runControllerWithNoExceptionsAndGetContent('designer/default/LayoutEdit');
     $this->setGetArray(array('moduleClassName' => 'AccountsModule', 'viewClassName' => 'AccountsRelatedListView'));
     $this->runControllerWithNoExceptionsAndGetContent('designer/default/LayoutEdit');
     $this->setGetArray(array('moduleClassName' => 'AccountsModule', 'viewClassName' => 'AccountsSearchView'));
     $this->runControllerWithNoExceptionsAndGetContent('designer/default/LayoutEdit');
     $this->setGetArray(array('moduleClassName' => 'AccountsModule', 'viewClassName' => 'AccountConvertToView'));
     $this->runControllerWithNoExceptionsAndGetContent('designer/default/LayoutEdit');
 }