Mark test class as having invalid financials
authorEileen McNaughton <emcnaughton@wikimedia.org>
Sun, 30 May 2021 03:02:17 +0000 (15:02 +1200)
committerEileen McNaughton <emcnaughton@wikimedia.org>
Sun, 30 May 2021 03:02:17 +0000 (15:02 +1200)
Marks the class as unsuitable for financial validation due to use
of mysql to set up contributions without related entities

tests/phpunit/CRM/Report/Form/TestCaseTest.php
tests/phpunit/CiviTest/CiviReportTestCase.php

index 419ce4cb16115b1a55334b4947a549ca2bc79796..b86a9631b4ca2f1c7a8dff7eb8f28f54ec5558fe 100644 (file)
@@ -9,8 +9,6 @@
  +--------------------------------------------------------------------+
  */
 
-require_once 'CiviTest/CiviReportTestCase.php';
-
 use Civi\Test\Invasive;
 
 /**
@@ -32,10 +30,19 @@ class CRM_Report_Form_TestCaseTest extends CiviReportTestCase {
     'civicrm_contribution',
   ];
 
+  /**
+   * Financial data used in these tests is invalid - do not validate.
+   *
+   * Note ideally it would be fixed and we would always use valid data.
+   *
+   * @var bool
+   */
+  protected $isValidateFinancialsOnPostAssert = FALSE;
+
   /**
    * @return array
    */
-  public function dataProvider() {
+  public function dataProvider(): array {
     $testCaseA = [
       'CRM_Report_Form_Contribute_Detail',
       [
@@ -69,7 +76,7 @@ class CRM_Report_Form_TestCaseTest extends CiviReportTestCase {
   /**
    * @return array
    */
-  public function badDataProvider() {
+  public function badDataProvider(): array {
     return [
       // This test-case is bad because the dataset-ascii.sql does not match the
       // report.csv (due to differences in international chars)
@@ -115,6 +122,9 @@ class CRM_Report_Form_TestCaseTest extends CiviReportTestCase {
     ];
   }
 
+  /**
+   * @throws \CRM_Core_Exception
+   */
   public function setUp(): void {
     parent::setUp();
     $this->quickCleanup($this->_tablesToTruncate);
@@ -128,54 +138,41 @@ class CRM_Report_Form_TestCaseTest extends CiviReportTestCase {
    * @param $expectedOutputCsvFile
    * @throws \Exception
    */
-  public function testReportOutput($reportClass, $inputParams, $dataSet, $expectedOutputCsvFile) {
+  public function testReportOutput($reportClass, $inputParams, $dataSet, $expectedOutputCsvFile): void {
     $config = CRM_Core_Config::singleton();
-    CRM_Utils_File::sourceSQLFile($config->dsn, dirname(__FILE__) . "/{$dataSet}");
+    CRM_Utils_File::sourceSQLFile($config->dsn, __DIR__ . "/$dataSet");
 
     $reportCsvFile = $this->getReportOutputAsCsv($reportClass, $inputParams);
     $reportCsvArray = $this->getArrayFromCsv($reportCsvFile);
 
-    $expectedOutputCsvArray = $this->getArrayFromCsv(dirname(__FILE__) . "/{$expectedOutputCsvFile}");
+    $expectedOutputCsvArray = $this->getArrayFromCsv(__DIR__ . "/$expectedOutputCsvFile");
     $this->assertCsvArraysEqual($expectedOutputCsvArray, $reportCsvArray);
   }
 
   /**
    * @dataProvider badDataProvider
+   *
    * @param $reportClass
    * @param $inputParams
    * @param $dataSet
    * @param $expectedOutputCsvFile
-   * @throws \Exception
+   *
+   * @throws \CRM_Core_Exception
    */
-  public function testBadReportOutput($reportClass, $inputParams, $dataSet, $expectedOutputCsvFile) {
-    $config = CRM_Core_Config::singleton();
-    CRM_Utils_File::sourceSQLFile($config->dsn, dirname(__FILE__) . "/{$dataSet}");
+  public function testBadReportOutput($reportClass, $inputParams, $dataSet, $expectedOutputCsvFile): void {
+    CRM_Utils_File::sourceSQLFile(CIVICRM_DSN, __DIR__ . "/$dataSet");
 
     $reportCsvFile = $this->getReportOutputAsCsv($reportClass, $inputParams);
     $reportCsvArray = $this->getArrayFromCsv($reportCsvFile);
 
-    $expectedOutputCsvArray = $this->getArrayFromCsv(dirname(__FILE__) . "/{$expectedOutputCsvFile}");
-    try {
-      $this->assertCsvArraysEqual($expectedOutputCsvArray, $reportCsvArray);
-      // @todo But...doesn't this mean this test can't ever notify you of a
-      // fail? I think what you could do instead is right here in the try
-      // section throw something that doesn't get caught, since then that means
-      // the previous line passed and so the arrays ARE equal, which means
-      // something is wrong. Or just don't use assertCsvArraysEqual and
-      // explicity compare that they are NOT equal.
-    }
-    catch (PHPUnit\Framework\AssertionFailedError $e) {
-      /* OK */
-    }
-    catch (PHPUnit_Framework_AssertionFailedError $e) {
-      /* OK */
-    }
+    $expectedOutputCsvArray = $this->getArrayFromCsv(__DIR__ . "/$expectedOutputCsvFile");
+    $this->assertNotEquals($expectedOutputCsvArray[1], $reportCsvArray[1]);
   }
 
   /**
    * Test processReportMode() Function in Reports
    */
-  public function testOutputMode() {
+  public function testOutputMode(): void {
     $reportForm = new CRM_Report_Form();
 
     Invasive::set([$reportForm, '_params'], ['groups' => 4]);
index d3f1e4adfd6e215eaa76c033b1a6428eeca35bdb..687f80852416762abc9cf05c8cf134ceeb6954dc 100644 (file)
@@ -29,7 +29,7 @@ class CiviReportTestCase extends CiviUnitTestCase {
    * @param array $inputParams
    *
    * @return string
-   * @throws Exception
+   * @throws \CRM_Core_Exception
    */
   public function getReportOutputAsCsv($reportClass, $inputParams) {
 
@@ -46,9 +46,9 @@ class CiviReportTestCase extends CiviUnitTestCase {
    * @param array $inputParams
    *
    * @return CRM_Report_Form
-   * @throws Exception
+   * @throws \CRM_Core_Exception
    */
-  public function getReportObject($reportClass, $inputParams) {
+  public function getReportObject(string $reportClass, array $inputParams): CRM_Report_Form {
     $config = CRM_Core_Config::singleton();
     $config->keyDisable = TRUE;
     $controller = new CRM_Core_Controller_Simple($reportClass, ts('some title'));
@@ -81,7 +81,7 @@ class CiviReportTestCase extends CiviUnitTestCase {
       $reportObj->storeResultSet();
       $reportObj->buildForm();
     }
-    catch (Exception $e) {
+    catch (CRM_Core_Exception $e) {
       // print_r($e->getCause()->getUserInfo());
       CRM_Utils_GlobalStack::singleton()->pop();
       throw $e;
@@ -121,10 +121,8 @@ class CiviReportTestCase extends CiviUnitTestCase {
       . "\n===== ACTUAL DATA ====\n"
       . $this->flattenCsvArray($actualCsvArray);
 
-    $this->assertEquals(
-      count($actualCsvArray),
-      count($expectedCsvArray),
-      'Arrays have different number of rows; in line ' . __LINE__ . '; data: ' . $flatData
+    $this->assertCount(
+      count($actualCsvArray), $expectedCsvArray, 'Arrays have different number of rows; data: ' . $flatData
     );
 
     foreach ($actualCsvArray as $intKey => $strVal) {