Merge pull request #11712 from jitendrapurohit/CRM-21795
[civicrm-core.git] / tests / phpunit / api / v3 / ActivityTest.php
index c35fd143e8659d7c93c59b6943aae7a4efdccdfe..b2b0f5523c64ee1ae864ce316bb2fb0c70d3bd73 100644 (file)
@@ -447,6 +447,11 @@ class api_v3_ActivityTest extends CiviUnitTestCase {
     require_once 'api/v3/examples/Activity/Create.php';
     $result = activity_create_example();
     $expectedResult = activity_create_expectedresult();
+    // Compare everything *except* timestamps.
+    unset($result['values'][1]['created_date']);
+    unset($result['values'][1]['modified_date']);
+    unset($expectedResult['values'][1]['created_date']);
+    unset($expectedResult['values'][1]['modified_date']);
     $this->assertEquals($result, $expectedResult);
   }
 
@@ -1374,6 +1379,9 @@ class api_v3_ActivityTest extends CiviUnitTestCase {
     }
   }
 
+  /**
+   * Test or operator in api params
+   */
   public function testGetWithOr() {
     $acts = array(
       'test or 1' => 'orOperator',
@@ -1403,4 +1411,45 @@ class api_v3_ActivityTest extends CiviUnitTestCase {
     $this->assertEquals(3, $result['count']);
   }
 
+  /**
+   * Test handling of is_overdue calculated field
+   */
+  public function testGetOverdue() {
+    $overdueAct = $this->callAPISuccess('Activity', 'create', array(
+        'activity_date_time' => 'now - 1 week',
+        'status_id' => 'Scheduled',
+      ) + $this->_params
+    );
+    $completedAct = $this->callAPISuccess('Activity', 'create', array(
+        'activity_date_time' => 'now - 1 week',
+        'status_id' => 'Completed',
+      ) + $this->_params
+    );
+    $ids = array($overdueAct['id'], $completedAct['id']);
+
+    // Test sorting
+    $completedFirst = $this->callAPISuccess('Activity', 'get', array(
+      'id' => array('IN' => $ids),
+      'options' => array('sort' => 'is_overdue ASC'),
+    ));
+    $this->assertEquals(array_reverse($ids), array_keys($completedFirst['values']));
+    $overdueFirst = $this->callAPISuccess('Activity', 'get', array(
+      'id' => array('IN' => $ids),
+      'options' => array('sort' => 'is_overdue DESC'),
+      'return' => 'is_overdue',
+    ));
+    $this->assertEquals($ids, array_keys($overdueFirst['values']));
+
+    // Test return value
+    $this->assertEquals(1, $overdueFirst['values'][$overdueAct['id']]['is_overdue']);
+    $this->assertEquals(0, $overdueFirst['values'][$completedAct['id']]['is_overdue']);
+
+    // Test filtering
+    $onlyOverdue = $this->callAPISuccess('Activity', 'get', array(
+      'id' => array('IN' => $ids),
+      'is_overdue' => 1,
+    ));
+    $this->assertEquals(array($overdueAct['id']), array_keys($onlyOverdue['values']));
+  }
+
 }