array( 'sort_name', 'first_name', 'email', 'total_amount', ), 'filters' => array( 'total_amount_op' => 'gte', 'total_amount_value' => 50, ), // FIXME: add filters ), 'fixtures/dataset-ascii.sql', 'fixtures/report-ascii.csv', ), ); } public function setUp() { parent::setUp(); $this->quickCleanup($this->_tablesToTruncate); } public function tearDown() { parent::tearDown(); CRM_Core_DAO::executeQuery('DROP TEMPORARY TABLE IF EXISTS civireport_contribution_detail_temp1'); CRM_Core_DAO::executeQuery('DROP TEMPORARY TABLE IF EXISTS civireport_contribution_detail_temp2'); CRM_Core_DAO::executeQuery('DROP TEMPORARY TABLE IF EXISTS civireport_contribution_detail_temp3'); } /** * @dataProvider dataProvider * @param $reportClass * @param $inputParams * @param $dataSet * @param $expectedOutputCsvFile * @throws \Exception */ public function testReportOutput($reportClass, $inputParams, $dataSet, $expectedOutputCsvFile) { $config = CRM_Core_Config::singleton(); CRM_Utils_File::sourceSQLFile($config->dsn, dirname(__FILE__) . "/{$dataSet}"); $reportCsvFile = $this->getReportOutputAsCsv($reportClass, $inputParams); $reportCsvArray = $this->getArrayFromCsv($reportCsvFile); $expectedOutputCsvArray = $this->getArrayFromCsv(dirname(__FILE__) . "/{$expectedOutputCsvFile}"); $this->assertCsvArraysEqual($expectedOutputCsvArray, $reportCsvArray); } /** * @return array */ public function postalCodeDataProvider() { return array( array( 'CRM_Report_Form_Contribute_Detail', array( 'fields' => array( 'sort_name', 'first_name', 'email', 'total_amount', 'postal_code', ), 'filters' => array( 'postal_code_value' => 'B10 G56', 'postal_code_op' => 'has', ), ), 'fixtures/dataset-ascii.sql', 'fixtures/DetailPostalCodeTest-ascii.csv', ), ); } /** * @dataProvider postalCodeDataProvider * @param $reportClass * @param $inputParams * @param $dataSet * @param $expectedOutputCsvFile * @throws \Exception */ public function testPostalCodeSearchReportOutput($reportClass, $inputParams, $dataSet, $expectedOutputCsvFile) { $config = CRM_Core_Config::singleton(); CRM_Utils_File::sourceSQLFile($config->dsn, dirname(__FILE__) . "/{$dataSet}"); $reportCsvFile = $this->getReportOutputAsCsv($reportClass, $inputParams); $reportCsvArray = $this->getArrayFromCsv($reportCsvFile); $expectedOutputCsvArray = $this->getArrayFromCsv(dirname(__FILE__) . "/{$expectedOutputCsvFile}"); $this->assertCsvArraysEqual($expectedOutputCsvArray, $reportCsvArray); } }