Merge pull request #10393 from JMAConsulting/exportBatch
[civicrm-core.git] / tests / phpunit / api / v3 / DashboardTest.php
index 245de3b46aa4fe967b372c7746985ed2de4348a4..e9f5169fa24edd09a68a9e9cef3003c9990a1b69 100644 (file)
  *   <http://www.gnu.org/licenses/>.
  */
 
-/**
- *  Include class definitions
- */
-require_once 'CiviTest/CiviUnitTestCase.php';
-
 /**
  *  Test APIv3 civicrm_action_schedule functions
  *
  * @package CiviCRM_APIv3
  * @subpackage API_ActionSchedule
+ * @group headless
  */
-
 class api_v3_DashboardTest extends CiviUnitTestCase {
   protected $_params;
   protected $_params2;
@@ -38,53 +33,79 @@ class api_v3_DashboardTest extends CiviUnitTestCase {
   protected $_apiversion = 3;
 
   /**
-   *  Test setup for every test
+   * Test setup for every test.
    *
-   *  Connect to the database, truncate the tables that will be used
-   *  and redirect stdin to a temporary file
+   * Connect to the database, truncate the tables that will be used
+   * and redirect stdin to a temporary file
    */
   public function setUp() {
     //  Connect to the database
     parent::setUp();
+    $this->useTransaction(TRUE);
+  }
+
+  public function testDashboardCreate() {
+    $oldCount = CRM_Core_DAO::singleValueQuery('select count(*) from civicrm_dashboard');
+    $params = array(
+      'label' => 'New Dashlet element',
+      'name' => 'New Dashlet element',
+      'url' => 'civicrm/report/list&reset=1&compid=99',
+      'fullscreen_url' => 'civicrm/report/list&compid=99&reset=1&context=dashletFullscreen',
+    );
+    $dashboard = $this->callAPISuccess('dashboard', 'create', $params);
+    $this->assertTrue(is_numeric($dashboard['id']), "In line " . __LINE__);
+    $this->assertTrue($dashboard['id'] > 0, "In line " . __LINE__);
+    $newCount = CRM_Core_DAO::singleValueQuery('select count(*) from civicrm_dashboard');
+    $this->assertEquals($oldCount + 1, $newCount);
+    $this->DashboardDelete($dashboard['id'], $oldCount);
+    $this->assertEquals($dashboard['values'][$dashboard['id']]['is_active'], 1);
   }
 
   /**
-   * Tears down the fixture, for example, closes a network connection.
-   * This method is called after a test is executed.
+   * CRM-19534.
    *
-   * @access protected
+   * Ensure that Dashboard create works fine for non admins
    */
-  function tearDown() {
-    $tablesToTruncate = array(
-      'civicrm_dashboard',
+  public function testDashboardCreateByNonAdmins() {
+    $loggedInContactID = $this->createLoggedInUser();
+    CRM_Core_Config::singleton()->userPermissionClass->permissions = array();
+    $params = array(
+      'label' => 'New Dashlet element',
+      'name' => 'New Dashlet element',
+      'url' => 'civicrm/report/list&reset=1&compid=99',
+      'fullscreen_url' => 'civicrm/report/list&compid=99&reset=1&context=dashletFullscreen',
     );
-    $this->quickCleanup($tablesToTruncate, TRUE);
+    $dashboard = $this->callAPISuccess('dashboard', 'create', $params);
+    $this->assertTrue(is_numeric($dashboard['id']), "In line " . __LINE__);
+    $this->assertTrue($dashboard['id'] > 0, "In line " . __LINE__);
+
+    $this->callAPISuccess('dashboard', 'create', $params);
+    $this->assertEquals($dashboard['values'][$dashboard['id']]['is_active'], 1);
   }
 
-  function testDashboardCreate() {
-    $oldCount = CRM_Core_DAO::singleValueQuery('select count(*) from civicrm_dashboard');
+  /**
+   * CRM-19217.
+   *
+   * Ensure that where is_active is specifically set to 0 is_active returns 0.
+   */
+  public function testDashboardCreateNotActive() {
     $params = array(
-      'version' => 3,
       'label' => 'New Dashlet element',
       'name' => 'New Dashlet element',
       'url' => 'civicrm/report/list&reset=1&compid=99&snippet=5',
       'fullscreen_url' => 'civicrm/report/list&compid=99&reset=1&snippet=5&context=dashletFullscreen',
+      'is_active' => 0,
     );
     $dashboard = $this->callAPISuccess('dashboard', 'create', $params);
-    $this->assertTrue(is_numeric($dashboard['id']), "In line " . __LINE__);
-    $this->assertTrue($dashboard['id'] > 0, "In line " . __LINE__);
-    $newCount = CRM_Core_DAO::singleValueQuery('select count(*) from civicrm_dashboard');
-    $this->assertEquals($oldCount + 1, $newCount);
-    $this->DashboardDelete($dashboard['id'], $oldCount);
+    $this->assertEquals($dashboard['values'][$dashboard['id']]['is_active'], 0);
   }
 
   /**
    * @param int $id
    * @param $oldCount
    */
-  function DashboardDelete($id, $oldCount) {
+  public function DashboardDelete($id, $oldCount) {
     $params = array(
-      'version' => 3,
       'id' => $id,
     );
     $dashboardget = $this->callAPISuccess('dashboard', 'get', $params);
@@ -93,4 +114,5 @@ class api_v3_DashboardTest extends CiviUnitTestCase {
     $newCount = CRM_Core_DAO::singleValueQuery('select count(*) from civicrm_dashboard');
     $this->assertEquals($oldCount, $newCount);
   }
+
 }