$this->assertEquals($result['values'][$id]['subject'], $params['subject']);
}
+ /**
+ * Test create function with resolved status.
+ */
+ public function testCaseCreateWithResolvedStatus() {
+ $params = $this->_params;
+ // Test using label instead of value.
+ unset($params['case_type_id']);
+ $params['case_type'] = $this->caseType;
+ $params['status_id'] = 'Closed';
+ $result = $this->callAPISuccess('case', 'create', $params);
+ $id = $result['id'];
+
+ // Check result
+ $result = $this->callAPISuccess('case', 'get', array('id' => $id));
+ $this->assertEquals($result['values'][$id]['id'], $id);
+ $this->assertEquals($result['values'][$id]['case_type_id'], $this->caseTypeId);
+ $this->assertEquals($result['values'][$id]['subject'], $params['subject']);
+ $this->assertEquals($result['values'][$id]['end_date'], date('Y-m-d'));
+
+ //Check all relationship end dates are set to case end date.
+ $relationships = $this->callAPISuccess('Relationship', 'get', array(
+ 'sequential' => 1,
+ 'case_id' => $id,
+ ));
+ foreach ($relationships['values'] as $key => $values) {
+ $this->assertEquals($values['end_date'], date('Y-m-d'));
+ }
+ }
+
/**
* Test case create with valid parameters and custom data.
*/
$params['subject'] = $case['subject'] = 'Something Else';
$this->callAPISuccess('case', 'create', $params);
- // Verify that updated case is exactly equal to the original with new subject.
+ // Verify that updated case is equal to the original with new subject.
$result = $this->callAPISuccessGetSingle('Case', array('case_id' => $id));
+ // Modification dates are likely to differ by 0-2 sec. Check manually.
+ $this->assertGreaterThanOrEqual($result['modified_date'], $case['modified_date']);
+ unset($result['modified_date']);
+ unset($case['modified_date']);
+ // Everything else should be identical.
+ $this->assertAPIArrayComparison($result, $case);
+ }
+
+ /**
+ * Test update (create with id) function with valid parameters.
+ */
+ public function testCaseUpdateWithExistingCaseContact() {
+ $params = $this->_params;
+ // Test using name instead of value
+ unset($params['case_type_id']);
+ $params['case_type'] = $this->caseType;
+ $result = $this->callAPISuccess('case', 'create', $params);
+ $id = $result['id'];
+ $case = $this->callAPISuccess('case', 'getsingle', array('id' => $id));
+
+ // Update Case, we specify existing case ID and existing contact ID to verify that CaseContact.create is not called
+ $params = $this->_params;
+ $params['id'] = $id;
+ $this->callAPISuccess('case', 'create', $params);
+
+ // Verify that updated case is equal to the original with new subject.
+ $result = $this->callAPISuccessGetSingle('Case', array('case_id' => $id));
+ // Modification dates are likely to differ by 0-2 sec. Check manually.
+ $this->assertGreaterThanOrEqual($result['modified_date'], $case['modified_date']);
+ unset($result['modified_date']);
+ unset($case['modified_date']);
+ // Everything else should be identical.
$this->assertAPIArrayComparison($result, $case);
}
return $examples;
}
+ public function testTimestamps() {
+ $params = $this->_params;
+ $case_created = $this->callAPISuccess('case', 'create', $params);
+
+ $case_1 = $this->callAPISuccess('Case', 'getsingle', array(
+ 'id' => $case_created['id'],
+ ));
+ $this->assertRegExp(';^\d\d\d\d-\d\d-\d\d \d\d:\d\d;', $case_1['created_date']);
+ $this->assertRegExp(';^\d\d\d\d-\d\d-\d\d \d\d:\d\d;', $case_1['modified_date']);
+ $this->assertApproxEquals(strtotime($case_1['created_date']), strtotime($case_1['modified_date']), 2);
+
+ $activity_1 = $this->callAPISuccess('activity', 'getsingle', array(
+ 'case_id' => $case_created['id'],
+ 'options' => array(
+ 'limit' => 1,
+ ),
+ ));
+ $this->assertRegExp(';^\d\d\d\d-\d\d-\d\d \d\d:\d\d;', $activity_1['created_date']);
+ $this->assertRegExp(';^\d\d\d\d-\d\d-\d\d \d\d:\d\d;', $activity_1['modified_date']);
+ $this->assertApproxEquals(strtotime($activity_1['created_date']), strtotime($activity_1['modified_date']), 2);
+
+ usleep(1.5 * 1000000);
+ $this->callAPISuccess('activity', 'create', array(
+ 'id' => $activity_1['id'],
+ 'subject' => 'Make cheese',
+ ));
+
+ $activity_2 = $this->callAPISuccess('activity', 'getsingle', array(
+ 'id' => $activity_1['id'],
+ ));
+ $this->assertRegExp(';^\d\d\d\d-\d\d-\d\d \d\d:\d\d;', $activity_2['created_date']);
+ $this->assertRegExp(';^\d\d\d\d-\d\d-\d\d \d\d:\d\d;', $activity_2['modified_date']);
+ $this->assertNotEquals($activity_2['created_date'], $activity_2['modified_date']);
+
+ $this->assertEquals($activity_1['created_date'], $activity_2['created_date']);
+ $this->assertNotEquals($activity_1['modified_date'], $activity_2['modified_date']);
+ $this->assertLessThan($activity_2['modified_date'], $activity_1['modified_date'],
+ sprintf("Original modification time (%s) should predate later modification time (%s)", $activity_1['modified_date'], $activity_2['modified_date']));
+
+ $case_2 = $this->callAPISuccess('Case', 'getsingle', array(
+ 'id' => $case_created['id'],
+ ));
+ $this->assertRegExp(';^\d\d\d\d-\d\d-\d\d \d\d:\d\d;', $case_2['created_date']);
+ $this->assertRegExp(';^\d\d\d\d-\d\d-\d\d \d\d:\d\d;', $case_2['modified_date']);
+ $this->assertEquals($case_1['created_date'], $case_2['created_date']);
+ $this->assertNotEquals($case_2['created_date'], $case_2['modified_date']);
+ }
+
}