public static function setUpBeforeClass()
 {
     parent::setUpBeforeClass();
     SecurityTestHelper::createSuperAdmin();
     $super = User::getByUsername('super');
     Yii::app()->user->userModel = $super;
     //Setup test data owned by the super user.
     $account = AccountTestHelper::createAccountByNameForOwner('superAccount', $super);
     AccountTestHelper::createAccountByNameForOwner('superAccount2', $super);
     ContactTestHelper::createContactWithAccountByNameForOwner('superContact', $super, $account);
     ContactTestHelper::createContactWithAccountByNameForOwner('superContact2', $super, $account);
     ContractTestHelper::createContractStagesIfDoesNotExist();
     ContractTestHelper::createContractWithAccountByNameForOwner('superOpp', $super, $account);
     ContractTestHelper::createContractWithAccountByNameForOwner('superOpp2', $super, $account);
     ContractTestHelper::createContractWithAccountByNameForOwner('superOpp3', $super, $account);
     ContractTestHelper::createContractWithAccountByNameForOwner('superOpp4', $super, $account);
     ContractTestHelper::createContractWithAccountByNameForOwner('superOpp5', $super, $account);
     ContractTestHelper::createContractWithAccountByNameForOwner('superOpp6', $super, $account);
     ContractTestHelper::createContractWithAccountByNameForOwner('superOpp7', $super, $account);
     ContractTestHelper::createContractWithAccountByNameForOwner('superOpp8', $super, $account);
     ContractTestHelper::createContractWithAccountByNameForOwner('superOpp9', $super, $account);
     ContractTestHelper::createContractWithAccountByNameForOwner('superOpp10', $super, $account);
     ContractTestHelper::createContractWithAccountByNameForOwner('superOpp11', $super, $account);
     ContractTestHelper::createContractWithAccountByNameForOwner('superOpp12', $super, $account);
     //Setup default dashboard.
     Dashboard::getByLayoutIdAndUser(Dashboard::DEFAULT_USER_LAYOUT_ID, $super);
 }
 public static function setUpBeforeClass()
 {
     parent::setUpBeforeClass();
     SecurityTestHelper::createSuperAdmin();
     $super = User::getByUsername('super');
     Yii::app()->user->userModel = $super;
     //Setup test data owned by the super user.
     $account = AccountTestHelper::createAccountByNameForOwner('superAccount', $super);
     AccountTestHelper::createAccountByNameForOwner('superAccount2', $super);
     ContractTestHelper::createContractStagesIfDoesNotExist();
     ContractTestHelper::createContractWithAccountByNameForOwner('superOpp', $super, $account);
 }
 public static function setUpBeforeClass()
 {
     parent::setUpBeforeClass();
     SecurityTestHelper::createSuperAdmin();
     $super = User::getByUsername('super');
     Yii::app()->user->userModel = $super;
     Currency::makeBaseCurrency();
     //Create a account for testing.
     $account = AccountTestHelper::createAccountByNameForOwner('superAccount', $super);
     //Create a Contract for testing.
     ContractTestHelper::createContractWithAccountByNameForOwner('superOpp', $super, $account);
 }
 /**
  * Walkthrough test for synchronous download
  */
 public function testDownloadDefaultControllerActions()
 {
     $super = $this->logoutCurrentUserLoginNewUserAndGetByUsername('super');
     $account = AccountTestHelper::createAccountByNameForOwner('superAccount', $super);
     $contracts = array();
     for ($i = 0; $i < 2; $i++) {
         $contracts[] = ContractTestHelper::createContractWithAccountByNameForOwner('superOpp' . $i, $super, $account);
     }
     // Check if access is denied if user doesn't have access privileges at all to export actions
     Yii::app()->user->userModel = User::getByUsername('nobody');
     $nobody = $this->logoutCurrentUserLoginNewUserAndGetByUsername('nobody');
     $this->runControllerShouldResultInAccessFailureAndGetContent('contracts/default/list');
     // Check if user have access to module action, but not to export action
     // Now test peon with elevated rights to accounts
     $nobody->setRight('ContractsModule', ContractsModule::RIGHT_ACCESS_CONTRACTS);
     $nobody->setRight('ContractsModule', ContractsModule::RIGHT_CREATE_CONTRACTS);
     $nobody->setRight('ContractsModule', ContractsModule::RIGHT_DELETE_CONTRACTS);
     $nobody->setRight('ExportModule', ExportModule::RIGHT_ACCESS_EXPORT);
     $this->assertTrue($nobody->save());
     // Check if access is denied if user doesn't have access privileges at all to export actions
     $nobody = $this->logoutCurrentUserLoginNewUserAndGetByUsername('nobody');
     Yii::app()->user->userModel = User::getByUsername('nobody');
     $this->runControllerWithNoExceptionsAndGetContent('contracts/default/list');
     $this->setGetArray(array('Contract_page' => '1', 'export' => '', 'ajax' => '', 'selectAll' => '', 'selectedIds' => ''));
     $response = $this->runControllerWithRedirectExceptionAndGetUrl('contracts/default/export');
     $this->assertTrue(strstr($response, 'contracts/default/index') !== false);
     $this->setGetArray(array('ContractsSearchForm' => array('anyMixedAttributesScope' => array(0 => 'All'), 'anyMixedAttributes' => '', 'name' => 'superOpp', 'officePhone' => ''), 'Contract_page' => '1', 'export' => '', 'ajax' => '', 'selectAll' => '1', 'selectedIds' => ''));
     $response = $this->runControllerWithRedirectExceptionAndGetUrl('contracts/default/export');
     $this->assertTrue(strstr($response, 'contracts/default/index') !== false);
     $this->setGetArray(array('ContractsSearchForm' => array('anyMixedAttributesScope' => array(0 => 'All'), 'anyMixedAttributes' => '', 'name' => 'superOpp', 'officePhone' => ''), 'Contract_page' => '1', 'export' => '', 'ajax' => '', 'selectAll' => '', 'selectedIds' => "{$contracts[0]->id}, {$contracts[1]->id}"));
     $response = $this->runControllerWithRedirectExceptionAndGetUrl('contracts/default/export');
     $this->assertTrue(strstr($response, 'contracts/default/index') !== false);
     $this->assertContains('There is no data to export.', Yii::app()->user->getFlash('notification'));
     //give nobody access to read and write
     Yii::app()->user->userModel = $super;
     foreach ($contracts as $contract) {
         $contract->addPermissions($nobody, Permission::READ_WRITE_CHANGE_PERMISSIONS);
         AllPermissionsOptimizationUtil::securableItemGivenPermissionsForUser($contract, $nobody);
         $this->assertTrue($contract->save());
     }
     //Now the nobody user should be able to access the edit view and still the details view.
     Yii::app()->user->userModel = $nobody;
     $this->setGetArray(array('ContractsSearchForm' => array('anyMixedAttributesScope' => array(0 => 'All'), 'anyMixedAttributes' => '', 'name' => 'superOpp', 'officePhone' => ''), 'Contract_page' => '1', 'export' => '', 'ajax' => '', 'selectAll' => '1', 'selectedIds' => ''));
     $response = $this->runControllerWithExitExceptionAndGetContent('contracts/default/export');
     $this->assertEquals('Testing download.', $response);
     $this->setGetArray(array('ContractsSearchForm' => array('anyMixedAttributesScope' => array(0 => 'All'), 'anyMixedAttributes' => '', 'name' => 'superOpp', 'officePhone' => ''), 'Contract_page' => '1', 'export' => '', 'ajax' => '', 'selectAll' => '', 'selectedIds' => "{$contracts[0]->id}, {$contracts[1]->id}"));
     $response = $this->runControllerWithExitExceptionAndGetContent('contracts/default/export');
     $this->assertEquals('Testing download.', $response);
     // No mathces
     $this->setGetArray(array('ContractsSearchForm' => array('anyMixedAttributesScope' => array(0 => 'All'), 'anyMixedAttributes' => '', 'name' => 'missingName', 'officePhone' => ''), 'Contract_page' => '1', 'export' => '', 'ajax' => '', 'selectAll' => '1', 'selectedIds' => ''));
     $response = $this->runControllerWithRedirectExceptionAndGetUrl('contracts/default/export');
     $this->assertTrue(strstr($response, 'contracts/default/index') !== false);
 }
 public static function setUpBeforeClass()
 {
     parent::setUpBeforeClass();
     SecurityTestHelper::createSuperAdmin();
     $super = User::getByUsername('super');
     Yii::app()->user->userModel = $super;
     UserTestHelper::createBasicUser('jim');
     AllPermissionsOptimizationUtil::rebuild();
     ContractTestHelper::createContractStagesIfDoesNotExist();
     ContractTestHelper::createContractSourcesIfDoesNotExist();
     $currencies = Currency::getAll();
     //Make Contracts for testing chart data.
     $currencyValue = new CurrencyValue();
     $currencyValue->value = 200;
     $currencyValue->currency = $currencies[0];
     $contract = new Contract();
     $contract->owner = $super;
     $contract->name = 'abc1';
     $contract->amount = $currencyValue;
     $contract->closeDate = '2011-01-01';
     $contract->stage->value = 'Negotiating';
     $contract->source->value = 'Outbound';
     assert($contract->save());
     // Not Coding Standard
     $currencyValue = new CurrencyValue();
     $currencyValue->value = 350;
     $currencyValue->currency = $currencies[0];
     $contract = new Contract();
     $contract->owner = $super;
     $contract->name = 'abc2';
     $contract->amount = $currencyValue;
     $contract->closeDate = '2011-01-01';
     $contract->stage->value = 'Negotiating';
     $contract->source->value = 'Trade Show';
     assert($contract->save());
     // Not Coding Standard
     $currencyValue = new CurrencyValue();
     $currencyValue->value = 100;
     $currencyValue->currency = $currencies[0];
     $contract = new Contract();
     $contract->owner = $super;
     $contract->name = 'abc2';
     $contract->amount = $currencyValue;
     $contract->closeDate = '2011-01-01';
     $contract->stage->value = 'Verbal';
     $contract->source->value = 'Trade Show';
     assert($contract->save());
     // Not Coding Standard
 }
 /**
  * Walkthrough test for synchronous download
  */
 public function testAsynchronousDownloadDefaultControllerActions()
 {
     $super = $this->logoutCurrentUserLoginNewUserAndGetByUsername('super');
     $account = AccountTestHelper::createAccountByNameForOwner('superAccount2', $super);
     $notificationsBeforeCount = Notification::getCount();
     $notificationMessagesBeforeCount = NotificationMessage::getCount();
     $contracts = Contract::getAll();
     if (count($contracts)) {
         foreach ($contracts as $contract) {
             $contract->delete();
         }
     }
     $contracts = array();
     for ($i = 0; $i <= ExportModule::$asynchronousThreshold + 1; $i++) {
         $contracts[] = ContractTestHelper::createContractWithAccountByNameForOwner('contract' . $i, $super, $account);
     }
     $this->setGetArray(array('Contract_page' => '1', 'export' => '', 'ajax' => '', 'selectAll' => '1', 'selectedIds' => ''));
     $this->runControllerWithRedirectExceptionAndGetUrl('contracts/default/export');
     // Start background job
     $job = new ExportJob();
     $this->assertTrue($job->run());
     $exportItems = ExportItem::getAll();
     $this->assertEquals(1, count($exportItems));
     $fileModel = $exportItems[0]->exportFileModel;
     $this->assertEquals(1, $exportItems[0]->isCompleted);
     $this->assertEquals('csv', $exportItems[0]->exportFileType);
     $this->assertEquals('contracts', $exportItems[0]->exportFileName);
     $this->assertTrue($fileModel instanceof ExportFileModel);
     $this->assertEquals($notificationsBeforeCount + 1, Notification::getCount());
     $this->assertEquals($notificationMessagesBeforeCount + 1, NotificationMessage::getCount());
     // Check export job, when many ids are selected.
     // This will probably never happen, but we need test for this case too.
     $notificationsBeforeCount = Notification::getCount();
     $notificationMessagesBeforeCount = NotificationMessage::getCount();
     // Now test case when multiple ids are selected
     $exportItems = ExportItem::getAll();
     if (count($exportItems)) {
         foreach ($exportItems as $exportItem) {
             $exportItem->delete();
         }
     }
     $selectedIds = "";
     foreach ($contracts as $contract) {
         $selectedIds .= $contract->id . ",";
         // Not Coding Standard
     }
     $this->setGetArray(array('ContractsSearchForm' => array('anyMixedAttributesScope' => array(0 => 'All'), 'anyMixedAttributes' => '', 'name' => '', 'officePhone' => ''), 'Contract_page' => '1', 'export' => '', 'ajax' => '', 'selectAll' => '', 'selectedIds' => "{$selectedIds}"));
     $this->runControllerWithRedirectExceptionAndGetUrl('contracts/default/export');
     // Start background job
     $job = new ExportJob();
     $this->assertTrue($job->run());
     $exportItems = ExportItem::getAll();
     $this->assertEquals(1, count($exportItems));
     $fileModel = $exportItems[0]->exportFileModel;
     $this->assertEquals(1, $exportItems[0]->isCompleted);
     $this->assertEquals('csv', $exportItems[0]->exportFileType);
     $this->assertEquals('contracts', $exportItems[0]->exportFileName);
     $this->assertTrue($fileModel instanceof ExportFileModel);
     $this->assertEquals($notificationsBeforeCount + 1, Notification::getCount());
     $this->assertEquals($notificationMessagesBeforeCount + 1, NotificationMessage::getCount());
 }
 private function addContract()
 {
     $primaryModel = $this->getPrimaryModel();
     $this->assertEquals(0, count($primaryModel->contracts));
     $contract = ContractTestHelper::createContractByNameForOwner('UI Services', Yii::app()->user->userModel);
     $contract->account = $this->selectedModels[1];
     $contract->save();
 }
 /**
  * @deletes selected leads.
  */
 public function testRegularMassDeleteActionsForSelectedIds()
 {
     $super = $this->logoutCurrentUserLoginNewUserAndGetByUsername('super');
     $confused = User::getByUsername('confused');
     $nobody = User::getByUsername('nobody');
     $this->assertEquals(Right::DENY, $confused->getEffectiveRight('ZurmoModule', ZurmoModule::RIGHT_BULK_DELETE));
     $confused->setRight('ZurmoModule', ZurmoModule::RIGHT_BULK_DELETE);
     //Load MassDelete view for the 3 contracts.
     $contracts = Contract::getAll();
     $this->assertEquals(9, count($contracts));
     $contract1 = ContractTestHelper::createContractByNameForOwner('contractDelete1', $confused);
     $contract2 = ContractTestHelper::createContractByNameForOwner('contractDelete2', $confused);
     $contract3 = ContractTestHelper::createContractByNameForOwner('contractDelete3', $nobody);
     $contract4 = ContractTestHelper::createContractByNameForOwner('contractDelete4', $confused);
     $contract5 = ContractTestHelper::createContractByNameForOwner('contractDelete5', $confused);
     $contract6 = ContractTestHelper::createContractByNameForOwner('contractDelete6', $nobody);
     $selectedIds = $contract1->id . ',' . $contract2->id . ',' . $contract3->id;
     // Not Coding Standard
     $this->setGetArray(array('selectedIds' => $selectedIds, 'selectAll' => ''));
     // Not Coding Standard
     $this->resetPostArray();
     $content = $this->runControllerWithNoExceptionsAndGetContent('contracts/default/massDelete');
     $this->assertContains('<strong>3</strong>&#160;Contracts selected for removal', $content);
     $pageSize = Yii::app()->pagination->getForCurrentUserByType('massDeleteProgressPageSize');
     $this->assertEquals(5, $pageSize);
     //calculating leads after adding 6 new records
     $contracts = Contract::getAll();
     $this->assertEquals(15, count($contracts));
     //Deleting 6 contracts for pagination scenario
     //Run Mass Delete using progress save for page1
     $selectedIds = $contract1->id . ',' . $contract2->id . ',' . $contract3->id . ',' . $contract4->id . ',' . $contract5->id . ',' . $contract6->id;
     // Not Coding Standard
     $this->setGetArray(array('selectedIds' => $selectedIds, 'selectAll' => '', 'Contract_page' => 1));
     $this->setPostArray(array('selectedRecordCount' => 6));
     $content = $this->runControllerWithExitExceptionAndGetContent('contracts/default/massDelete');
     $contracts = Contract::getAll();
     $this->assertEquals(10, count($contracts));
     //Run Mass Delete using progress save for page2
     $selectedIds = $contract1->id . ',' . $contract2->id . ',' . $contract3->id . ',' . $contract4->id . ',' . $contract5->id . ',' . $contract6->id;
     // Not Coding Standard
     $this->setGetArray(array('selectedIds' => $selectedIds, 'selectAll' => '', 'Contract_page' => 2));
     $this->setPostArray(array('selectedRecordCount' => 6));
     $content = $this->runControllerWithNoExceptionsAndGetContent('contracts/default/massDeleteProgress');
     $contracts = Contract::getAll();
     $this->assertEquals(9, count($contracts));
 }