You are here

protected function CommerceReportsProductTestCase::_test in Commerce Reporting 7.4

3 calls to CommerceReportsProductTestCase::_test()
CommerceReportsProductTestCase::testMultipleOrdersProducts in src/Tests/CommerceReportsProductTestCase.php
Tests creating a multiple orders, containing multiple products with a variable quantity. Then verifies if the reporting is correct.
CommerceReportsProductTestCase::testMultipleProducts in src/Tests/CommerceReportsProductTestCase.php
Tests creating a single order, containing multiple products with a variable quantity. Then verifies if the reporting is correct.
CommerceReportsProductTestCase::testSingleProduct in src/Tests/CommerceReportsProductTestCase.php
Tests creating a single order, containing a single product with a variable quantity. Then verifies if the reporting is correct.

File

src/Tests/CommerceReportsProductTestCase.php, line 52

Class

CommerceReportsProductTestCase

Namespace

Drupal\commerce_reports\Tests

Code

protected function _test() {
  $products = array();
  foreach ($this->orders as $order) {
    foreach ($order['products'] as $product_id => $quantity) {
      $sku = $this->products[$product_id]->sku;
      if (empty($products[$sku])) {
        $products[$sku] = array(
          'quantity' => 0,
          'revenue' => 0,
        );
      }
      $products[$sku]['quantity'] += $quantity;
      $products[$sku]['revenue'] += $quantity * $this->products[$product_id]->commerce_price[LANGUAGE_NONE][0]['amount'];
    }
  }
  $report = views_get_view_result('commerce_reports_products', 'default');
  $this
    ->assertEqual(count($report), min(count($products), 10), t('The amount of products (%reported) that is reported (%generated) upon is correct.', array(
    '%reported' => count($report),
    '%generated' => count($products),
  )));
  foreach ($report as $line) {
    $sku = $line->commerce_product_field_data_commerce_product_sku;
    $quantity = $line->commerce_line_item_quantity;
    $revenue = $line->field_data_commerce_total_commerce_total_amount;
    $this
      ->assertFalse(empty($products[$sku]), t('The product %sku that is reported upon exists.', array(
      '%sku' => $sku,
    )));
    if (!empty($products[$sku])) {
      $this
        ->assertEqual($products[$sku]['quantity'], $quantity, t('The reported quantity %reported matches the generated quantity %generated.', array(
        '%sku' => $sku,
        '%reported' => $quantity,
        '%generated' => $products[$sku]['quantity'],
      )));
      $this
        ->assertEqual($products[$sku]['revenue'], $revenue, t('The reported revenue %reported matches the generated revenue %generated.', array(
        '%sku' => $sku,
        '%reported' => $revenue,
        '%generated' => $products[$sku]['revenue'],
      )));
    }
  }
}