/**
* Test the batch merge function.
+ *
+ * We are just checking it returns without error here.
*/
public function testBatchMerge() {
$this->callAPISuccess('Job', 'process_batch_merge', array());
}
+ /**
+ * Test the batch merge function actually works!
+ *
+ * @dataProvider getMergeSets
+ *
+ * @param $dataSet
+ */
+ public function testBatchMergeWorks($dataSet) {
+ foreach ($dataSet['contacts'] as $params) {
+ $this->callAPISuccess('Contact', 'create', $params);
+ }
+
+ $result = $this->callAPISuccess('Job', 'process_batch_merge', array());
+ $this->assertEquals($dataSet['skipped'], count($result['values']['skipped']), 'Failed to skip the right number:' . $dataSet['skipped']);
+ $this->assertEquals($dataSet['merged'], count($result['values']['merged']));
+ $result = $this->callAPISuccess('Contact', 'get', array('contact_sub_type' => 'Student', 'sequential' => 1));
+ $this->assertEquals(count($dataSet['expected']), $result['count']);
+ foreach ($dataSet['expected'] as $index => $contact) {
+ foreach ($contact as $key => $value) {
+ $this->assertEquals($value, $result['values'][$index][$key]);
+ }
+ }
+ }
+
+ /**
+ * Get data for batch merge.
+ */
+ public function getMergeSets() {
+ $data = array(
+ array(
+ array(
+ 'contacts' => array(
+ array(
+ 'first_name' => 'Michael',
+ 'last_name' => 'Jackson',
+ 'email' => 'michael@neverland.com',
+ 'contact_type' => 'Individual',
+ 'contact_sub_type' => 'Student',
+ 'api.Address.create' => array(
+ 'street_address' => 'big house',
+ 'location_type_id' => 'Home',
+ ),
+ ),
+ array(
+ 'first_name' => 'Michael',
+ 'last_name' => 'Jackson',
+ 'email' => 'michael@neverland.com',
+ 'contact_type' => 'Individual',
+ 'contact_sub_type' => 'Student',
+ ),
+ ),
+ 'skipped' => 0,
+ 'merged' => 1,
+ 'expected' => array(
+ array(
+ 'first_name' => 'Michael',
+ 'last_name' => 'Jackson',
+ 'email' => 'michael@neverland.com',
+ 'contact_type' => 'Individual',
+ ),
+ ),
+ ),
+ ),
+ array(
+ array(
+ 'contacts' => array(
+ array(
+ 'first_name' => 'Michael',
+ 'last_name' => 'Jackson',
+ 'email' => 'michael@neverland.com',
+ 'contact_type' => 'Individual',
+ 'contact_sub_type' => 'Student',
+ 'api.Address.create' => array(
+ 'street_address' => 'big house',
+ 'location_type_id' => 'Home',
+ ),
+ ),
+ array(
+ 'first_name' => 'Michael',
+ 'last_name' => 'Jackson',
+ 'email' => 'michael@neverland.com',
+ 'contact_type' => 'Individual',
+ 'contact_sub_type' => 'Student',
+ 'api.Address.create' => array(
+ 'street_address' => 'bigger house',
+ 'location_type_id' => 'Home',
+ ),
+ ),
+ ),
+ 'skipped' => 1,
+ 'merged' => 0,
+ 'expected' => array(
+ array(
+ 'first_name' => 'Michael',
+ 'last_name' => 'Jackson',
+ 'email' => 'michael@neverland.com',
+ 'contact_type' => 'Individual',
+ 'street_address' => 'big house',
+ ),
+ array(
+ 'first_name' => 'Michael',
+ 'last_name' => 'Jackson',
+ 'email' => 'michael@neverland.com',
+ 'contact_type' => 'Individual',
+ 'street_address' => 'bigger house',
+ ),
+ ),
+ ),
+ ),
+ );
+ return $data;
+ }
+
/**
* @param $op
* @param string $objectName