You are here

public function PriceListItemTest::testExportPriceListItems in Commerce Pricelist 8.2

Tests exporting price list items.

File

tests/src/Functional/PriceListItemTest.php, line 405

Class

PriceListItemTest
Tests the price list item UI.

Namespace

Drupal\Tests\commerce_pricelist\Functional

Code

public function testExportPriceListItems() {

  // Create 20 price list items for each of our 2 test variations.
  $expected_rows = [];
  foreach ([
    $this->firstVariation,
    $this->secondVariation,
  ] as $variation) {
    for ($i = 1; $i <= 20; $i++) {
      $price_list_item = $this
        ->createEntity('commerce_pricelist_item', [
        'type' => 'commerce_product_variation',
        'price_list_id' => $this->priceList
          ->id(),
        'purchasable_entity' => $variation
          ->id(),
        'quantity' => $i,
        'price' => new Price('666', 'USD'),
      ]);
      $expected_rows[] = [
        'purchasable_entity' => $variation
          ->getSku(),
        'quantity' => $price_list_item
          ->getQuantity(),
        'list_price' => '',
        'price' => $price_list_item
          ->getPrice()
          ->getNumber(),
        'currency_code' => 'USD',
      ];
    }
  }
  $this
    ->drupalGet($this->priceListItemCollectionUri);
  $this
    ->clickLink('Export prices');
  $this
    ->submitForm([
    'mapping[quantity_column]' => 'qty',
    'mapping[purchasable_entity_label_column]' => '',
    'mapping[list_price_column]' => 'msrp',
    'mapping[currency_column]' => 'currency',
  ], 'Export prices');
  $this
    ->assertSession()
    ->pageTextContains('Exported 40 prices.');
  $csv = new CsvFileObject('temporary://pricelist-1-prices.csv', TRUE, [
    'product_variation' => 'purchasable_entity',
    'qty' => 'quantity',
    'msrp' => 'list_price',
    'price' => 'price',
    'currency' => 'currency_code',
  ]);
  foreach ($expected_rows as $expected_row) {
    $row = $csv
      ->current();
    $this
      ->assertEquals($expected_row, $row);
    $csv
      ->next();
  }
  $this
    ->assertEquals($csv
    ->count(), 40);
}