Beispiel #1
0
 /**
  * testGetRowsByUserId
  */
 public function testDeleteDashboardAndRelatedPortlets()
 {
     Yii::app()->user->userModel = User::getByUsername('billy');
     $dashboardCount = count(Dashboard::getAll());
     $this->assertTrue($dashboardCount > 0);
     $user = User::getByUserName('billy');
     Yii::app()->user->userModel = $user;
     $dashboard = new Dashboard();
     $dashboard->name = "Dashboard TESTING";
     $dashboard->layoutId = 3;
     $dashboard->owner = $user;
     $dashboard->layoutType = '100';
     $dashboard->isDefault = false;
     $this->assertTrue($dashboard->save());
     $this->assertEquals(count(Portlet::getAll()), 0);
     $this->assertEquals(count(Dashboard::getAll()), $dashboardCount + 1);
     for ($i = 1; $i <= 3; $i++) {
         $portlet = new Portlet();
         $portlet->column = 1;
         $portlet->position = 1 + $i;
         $portlet->layoutId = 'TEST' . $dashboard->layoutId;
         $portlet->collapsed = false;
         $portlet->viewType = 'TasksMyList';
         $portlet->user = $user;
         $this->assertTrue($portlet->save());
     }
     $this->assertEquals(count(Portlet::getAll()), 3);
     $portlets = Portlet::getByLayoutIdAndUserSortedById('TEST' . $dashboard->layoutId, $user->id);
     foreach ($portlets as $portlet) {
         $portlet->delete();
     }
     $dashboard->delete();
     $this->assertEquals(count(Portlet::getAll()), 0);
     $this->assertEquals(count(Dashboard::getAll()), $dashboardCount);
 }
 public function testCreateAndEditDashboardByChangingLayoutType()
 {
     $super = $this->logoutCurrentUserLoginNewUserAndGetByUsername('super');
     $dashboardCount = Dashboard::getCount();
     //Add new dashboard using dashboard add action
     $this->resetGetArray();
     $this->setPostArray(array('Dashboard' => array('name' => 'myDataDashboard', 'layoutType' => '50,50')));
     // Not Coding Standard
     $this->runControllerWithRedirectExceptionAndGetContent('home/default/createDashboard');
     $dashboards = Dashboard::getAll();
     $this->assertEquals(intval($dashboardCount + 1), count($dashboards));
     $myDataDashboard = $dashboards[$dashboardCount];
     $this->assertEquals('myDataDashboard', $myDataDashboard->name);
     $this->assertEquals($super, $myDataDashboard->owner);
     $this->assertEquals('50,50', $myDataDashboard->layoutType);
     // Not Coding Standard
     //Add portlet on 2nd column of recently added dashboard
     $uniqueLayoutId = 'HomeDashboard' . $myDataDashboard->layoutId;
     $this->setGetArray(array('dashboardId' => $myDataDashboard->id, 'portletType' => 'ContactsMyList', 'uniqueLayoutId' => $uniqueLayoutId));
     $this->resetPostArray();
     $this->runControllerWithRedirectExceptionAndGetContent('home/defaultPortlet/add');
     //Edit dashboard and change it to one column layout
     $this->resetGetArray();
     $this->setGetArray(array('id' => $myDataDashboard->id));
     $this->runControllerWithNoExceptionsAndGetContent('home/default/editDashboard');
     $this->setPostArray(array('Dashboard' => array('layoutType' => '100')));
     $editActionContent = $this->runControllerWithRedirectExceptionAndGetContent('home/default/editDashboard');
     $this->assertNotContains('Undefined variable: maxPositionInColumn1', $editActionContent);
     $this->resetGetArray();
     $this->setGetArray(array('id' => $myDataDashboard->id));
     $this->resetPostArray();
     $this->runControllerWithNoExceptionsAndGetContent('home/default/dashboardDetails');
     $this->assertNotContains('Undefined offset: 2', $editActionContent);
 }
 public function testSuperUserAllDefaultControllerActions()
 {
     //Set the current user as the super user.
     $super = $this->logoutCurrentUserLoginNewUserAndGetByUsername('super');
     //Test all default controller actions that do not require any POST/GET variables to be passed.
     //This does not include portlet controller actions.
     $this->runControllerWithNoExceptionsAndGetContent('home/default');
     $this->runControllerWithNoExceptionsAndGetContent('home/default/index');
     $this->runControllerWithNoExceptionsAndGetContent('home/default/createDashboard');
     //Default Controller actions requiring some sort of parameter via POST or GET
     //Load Model Edit Views
     $superDashboard = Dashboard::getByLayoutIdAndUser(Dashboard::DEFAULT_USER_LAYOUT_ID, $super);
     $this->setGetArray(array('id' => $superDashboard->id));
     $this->runControllerWithNoExceptionsAndGetContent('home/default/editDashboard');
     //Save dashboard.
     $superDashboard = Dashboard::getByLayoutIdAndUser(Dashboard::DEFAULT_USER_LAYOUT_ID, $super);
     $this->assertEquals('Dashboard', $superDashboard->name);
     $this->setPostArray(array('Dashboard' => array('name' => '456765421')));
     $this->runControllerWithRedirectExceptionAndGetContent('home/default/editDashboard');
     $superDashboard = Dashboard::getByLayoutIdAndUser(Dashboard::DEFAULT_USER_LAYOUT_ID, $super);
     $this->assertEquals('456765421', $superDashboard->name);
     //Test having a failed validation on the dashboard during save.
     $this->setGetArray(array('id' => $superDashboard->id));
     $this->setPostArray(array('Dashboard' => array('name' => '')));
     $content = $this->runControllerWithNoExceptionsAndGetContent('home/default/editDashboard');
     $this->assertFalse(strpos($content, 'Name cannot be blank') === false);
     //Load Model Detail Views
     $this->setGetArray(array('id' => -1));
     $this->resetPostArray();
     $this->runControllerWithNoExceptionsAndGetContent('home/default/dashboardDetails');
     $this->setGetArray(array('id' => $superDashboard->id));
     $this->resetPostArray();
     $this->runControllerWithNoExceptionsAndGetContent('home/default/dashboardDetails');
     //Add second dashboard for use in deletion tests.
     $secondDashboard = DashboardTestHelper::createDashboardByNameForOwner('Dashboard2', $super);
     $this->assertTrue($secondDashboard->isDefault == 0);
     $this->assertFalse($secondDashboard->isDefault === 0);
     //Just to prove it does not evaluate to this.
     //Attempt to delete the default dashboard and have it through an exception.
     $dashboards = Dashboard::getRowsByUserId($super->id);
     $this->assertEquals(2, count($dashboards));
     $this->setGetArray(array('dashboardId' => $superDashboard->id));
     $this->resetPostArray();
     $this->runControllerWithNotSupportedExceptionAndGetContent('home/default/deleteDashboard');
     //Delete dashboard that you can delete.
     $dashboards = Dashboard::getRowsByUserId($super->id);
     $this->assertEquals(2, count($dashboards));
     $this->setGetArray(array('dashboardId' => $secondDashboard->id));
     $this->resetPostArray();
     $this->runControllerWithRedirectExceptionAndGetContent('home/default/deleteDashboard');
     $dashboards = Dashboard::getRowsByUserId($super->id);
     $this->assertEquals(1, count($dashboards));
     //Add a dashboard via the create dashboard action.
     $this->assertEquals(1, count(Dashboard::getAll()));
     $this->resetGetArray();
     $this->setPostArray(array('Dashboard' => array('name' => 'myTestDashboard', 'layoutType' => '50,50')));
     // Not Coding Standard
     $this->runControllerWithRedirectExceptionAndGetContent('home/default/createDashboard');
     $dashboards = Dashboard::getAll();
     $this->assertEquals(2, count($dashboards));
     $this->assertEquals('myTestDashboard', $dashboards[1]->name);
     $this->assertEquals($super, $dashboards[1]->owner);
     $this->assertEquals('50,50', $dashboards[1]->layoutType);
     // Not Coding Standard
     //Portlet Controller Actions
     $uniqueLayoutId = 'HomeDashboard' . $superDashboard->layoutId;
     $this->setGetArray(array('dashboardId' => $superDashboard->id, 'uniqueLayoutId' => $uniqueLayoutId));
     $this->resetPostArray();
     $this->runControllerWithNoExceptionsAndGetContent('home/defaultPortlet/addList');
     //Add AccountsMyList Portlet to dashboard
     $this->setGetArray(array('dashboardId' => $superDashboard->id, 'portletType' => 'AccountsMyList', 'uniqueLayoutId' => $uniqueLayoutId));
     $this->resetPostArray();
     $this->runControllerWithRedirectExceptionAndGetContent('home/defaultPortlet/add');
     //Save a layout change. Collapse all portlets
     //At this point portlets for this view should be created because we have already loaded the 'details' page in a request above.
     $portlets = Portlet::getByLayoutIdAndUserSortedByColumnIdAndPosition($uniqueLayoutId, $super->id, array());
     $this->assertEquals(4, count($portlets[1]));
     $this->assertEquals(4, count($portlets[2]));
     $portletPostData = array();
     $portletCount = 0;
     foreach ($portlets as $column => $columnPortlets) {
         foreach ($columnPortlets as $position => $portlet) {
             $this->assertEquals('0', $portlet->collapsed);
             $portletPostData['HomeDashboard1_' . $portlet->id] = array('collapsed' => 'true', 'column' => 0, 'id' => 'HomeDashboard1_' . $portlet->id, 'position' => $portletCount);
             $portletCount++;
         }
     }
     //There should have been a total of 3 portlets. Checking positions as 4 will confirm this.
     $this->assertEquals(8, $portletCount);
     $this->resetGetArray();
     $this->setPostArray(array('portletLayoutConfiguration' => array('portlets' => $portletPostData, 'uniqueLayoutId' => $uniqueLayoutId)));
     $this->runControllerWithNoExceptionsAndGetContent('home/defaultPortlet/saveLayout', true);
     //Now test that all the portlets are collapsed.
     $portlets = Portlet::getByLayoutIdAndUserSortedByColumnIdAndPosition($uniqueLayoutId, $super->id, array());
     $this->assertEquals(8, count($portlets[1]));
     $this->assertFalse(array_key_exists(8, $portlets));
     foreach ($portlets as $column => $columns) {
         foreach ($columns as $position => $positionPortlets) {
             $this->assertEquals('1', $positionPortlets->collapsed);
         }
     }
     //Load up modal config edit view.
     $this->assertTrue($portlets[1][5]->id > 0);
     $this->assertEquals('AccountsMyList', $portlets[1][5]->viewType);
     $this->setGetArray(array('portletId' => $portlets[1][5]->id, 'uniqueLayoutId' => $uniqueLayoutId));
     $this->resetPostArray();
     $this->runControllerWithNoExceptionsAndGetContent('home/defaultPortlet/modalConfigEdit');
     //Now validate the form.
     $this->setGetArray(array('portletId' => $portlets[1][5]->id, 'uniqueLayoutId' => $uniqueLayoutId));
     $this->setPostArray(array('ajax' => 'modal-edit-form', 'AccountsSearchForm' => array()));
     $this->runControllerWithExitExceptionAndGetContent('home/defaultPortlet/modalConfigEdit');
     //save changes to the portlet title
     $this->setGetArray(array('portletId' => $portlets[1][5]->id, 'uniqueLayoutId' => $uniqueLayoutId));
     $this->setPostArray(array('MyListForm' => array('title' => 'something new'), 'AccountsSearchForm' => array()));
     $this->runControllerWithNoExceptionsAndGetContent('home/defaultPortlet/modalConfigSave');
     //Now confirm the title change was successful.
     $portlet = Portlet::getById($portlets[1][5]->id);
     $this->assertEquals('something new', $portlet->getView()->getTitle());
     //Refresh a portlet modally.
     $this->setGetArray(array('portletId' => $portlets[1][5]->id, 'uniqueLayoutId' => $uniqueLayoutId, 'redirectUrl' => 'home/default'));
     $this->resetPostArray();
     $this->runControllerWithNoExceptionsAndGetContent('home/defaultPortlet/modalRefresh');
     //Load Home Dashboard View again to make sure everything is ok after the layout change.
     $this->resetGetArray();
     $this->resetPostArray();
     $this->runControllerWithNoExceptionsAndGetContent('home/default');
     //task sorting issue
     //check whether tasks portlet render or not
     $this->assertTrue($portlets[1][3]->id > 0);
     $this->assertEquals('TasksMyList', $portlets[1][3]->viewType);
     //to sort task list
     $this->setGetArray(array('Task_sort' => 'name', 'portletId' => $portlets[1][3]->id, 'uniqueLayoutId' => $uniqueLayoutId));
     $this->resetPostArray();
     $this->runControllerWithNoExceptionsAndGetContent('home/default');
     //to sort task list after portlet has been edited
     $this->resetGetArray();
     $this->setGetArray(array('Task_sort' => 'dueDateTime', 'portletId' => $portlets[1][3]->id, 'uniqueLayoutId' => $uniqueLayoutId, 'ajax' => 'list-view' . $uniqueLayoutId . '_' . $portlets[1][3]->id));
     $this->runControllerWithNoExceptionsAndGetContent('home/default');
 }