Skip to content
Snippets Groups Projects
CreateDataProcessorFieldTest.php 3.97 KiB
Newer Older
sarvesh21's avatar
sarvesh21 committed
<?php

use CRM_Dataprocessor_ExtensionUtil as E;
use Civi\Test\HeadlessInterface;
use Civi\Test\HookInterface;
use Civi\Test\TransactionalInterface;

/**
 * FIXME - Add test description.
 *
 * Tips:
 *  - With HookInterface, you may implement CiviCRM hooks directly in the test class.
 *    Simply create corresponding functions (e.g. "hook_civicrm_post(...)" or similar).
 *  - With TransactionalInterface, any data changes made by setUp() or test****() functions will
 *    rollback automatically -- as long as you don't manipulate schema or truncate tables.
 *    If this test needs to manipulate schema or truncate tables, then either:
 *       a. Do all that using setupHeadless() and Civi\Test.
 *       b. Disable TransactionalInterface, and handle all setup/teardown yourself.
 *
 * @group headless
 */
class CRM_Myextension_MyHeadlessTest extends \PHPUnit_Framework_TestCase implements HeadlessInterface, HookInterface, TransactionalInterface {

  public function setUpHeadless() {
    // Civi\Test has many helpers, like install(), uninstall(), sql(), and sqlFile().
    // See: https://docs.civicrm.org/dev/en/latest/testing/phpunit/#civitest
    return \Civi\Test::headless()
      ->installMe(__DIR__)
      ->apply();
  }

  public function setUp() {
    parent::setUp();
  }

  public function tearDown() {
    parent::tearDown();
  }

  public function testCreateDataProcessorField() {

  		$params['name'] = "test";
	    $params['title'] = "title";
	    $params['description'] = 'Creating a Test Description';
	    $params['is_active'] = 1;

	    // Creating a DataProcessor
	    civicrm_api3('DataProcessor', 'create', $params);

	    // Retrieving the data processor
      $result = civicrm_api3('DataProcessor', 'get');

      if(isset($result['id'])){
      // Retrieving the id of data processor
        $data_processor_id = $result['id'];
        $factory = dataprocessor_get_factory();
        $data_sources = $factory->getDataSources();

        $params = [];
            // Params for setting data source parameters

        $params['data_processor_id'] = $data_processor_id;
        $params['title'] = 'testDataSource';
        $params['type'] = 'contact';

        // Creating a DataProcessor Source
        civicrm_api3('DataProcessorSource', 'create', $params);

        $result_datasource = civicrm_api3('DataProcessorSource', 'get');

        if(isset($result_datasource['id'])){

          $id_datasource = $result_datasource['id'];

          $params = [];
              // Params for setting data source parameters

          $params['data_processor_id'] = $data_processor_id;
          $params['title'] = 'testDataField';
          $params['type'] = 'raw';
          $params['configuration'] = array("field" => "id","datasource" =>"contact");

          civicrm_api3('DataProcessorField', 'create', $params);

          $result_field = civicrm_api3('DataProcessorField', 'get');

          if(isset($result_field['id'])){          

              $id_datafield = $result_field['id'];

              $this->assertEquals('testDataField', $result_field['values'][$id_datafield]['title']);
              $this->assertEquals('raw', $result_field['values'][$id_datafield]['type']);
              $this->assertEquals($data_processor_id, $result_field['values'][$id_datafield]['data_processor_id']);
              $this->assertEquals('id', $result_field['values'][$id_datafield]['configuration']['field']);
              $this->assertEquals('contact', $result_field['values'][$id_datafield]['configuration']['datasource']);

          } 
          else{
            echo "Failed to add DataProcessor Field";
            $this->assertFalse(true);                  
          }


        }
        else{

          echo "Failed to add DataProcessorSource";
          $this->assertFalse(true);      
        }
      }
      else{
        echo "DataProcessor Failed to Setup";
        $this->assertFalse(true);    
      }

      // $factory = dataprocessor_get_factory();
      // $data_sources = $factory->getDataSources();
      

  }


}