CRM-12622 - Extract assertCsvArraysEqual
authorTim Otten <totten@civicrm.org>
Tue, 30 Jul 2013 03:33:49 +0000 (20:33 -0700)
committerTim Otten <totten@civicrm.org>
Tue, 30 Jul 2013 03:33:49 +0000 (20:33 -0700)
----------------------------------------
* CRM-12622: Create framework for example report data files
  http://issues.civicrm.org/jira/browse/CRM-12622

tests/phpunit/CRM/Report/Form/Contribute/DetailTest.php
tests/phpunit/CiviTest/CiviReportTestCase.php

index a941b9caf40ad121d16436cc9f682ad4493b8f20..c3f587440fa775e23ff462ed4114337d2efc4a2f 100644 (file)
@@ -84,11 +84,7 @@ class CRM_Report_Form_Contribute_DetailTest extends CiviReportTestCase {
     $reportCsvArray = $this->getArrayFromCsv($reportCsvFile);
 
     $expectedOutputCsvArray = $this->getArrayFromCsv(dirname(__FILE__) . "/{$expectedOutputCsvFile}");
-    $this->assertEquals(count($reportCsvArray[0]), count($expectedOutputCsvArray[0]), 'In line ' . __LINE__);
-
-    foreach($reportCsvArray as $intKey => $strVal) {
-      $this->assertNotNull($expectedOutputCsvArray[$intKey], 'In line ' . __LINE__);
-      $this->assertEquals($expectedOutputCsvArray[$intKey], $strVal);
-    }
+    $this->assertCsvArraysEqual($expectedOutputCsvArray, $reportCsvArray);
   }
+
 }
index 9a4c7b8530a547079ab63983ba108fdd40c16583..297f91e66eddc62fb146e9c7f92d86b4458abfe7 100644 (file)
@@ -85,4 +85,28 @@ class CiviReportTestCase extends CiviUnitTestCase {
     }
     return $arrFile;
   }
+
+  /**
+   * @param array $expectedCsvArray two-dimensional array representing a CSV table
+   * @param array $actualCsvArray two-dimensional array representing a CSV table
+   */
+  public function assertCsvArraysEqual($expectedCsvArray, $actualCsvArray) {
+    // TODO provide better debug output
+
+    $this->assertEquals(
+      count($actualCsvArray),
+      count($expectedCsvArray),
+      'Arrays have different number of rows; in line ' . __LINE__
+    );
+
+    foreach ($actualCsvArray as $intKey => $strVal) {
+      $this->assertNotNull($expectedCsvArray[$intKey], 'In line ' . __LINE__);
+      $this->assertEquals(
+        count($actualCsvArray[$intKey]),
+        count($expectedCsvArray[$intKey]),
+        'Arrays have different number of columns at row ' . $intKey . '; in line ' . __LINE__
+      );
+      $this->assertEquals($expectedCsvArray[$intKey], $strVal);
+    }
+  }
 }