public function PriceListItemTest::testImportPriceListItemsWithUpdate in Commerce Pricelist 8.2
Tests importing price list items and updating existing price list items.
File
- tests/
src/ Functional/ PriceListItemTest.php, line 268
Class
- PriceListItemTest
- Tests the price list item UI.
Namespace
Drupal\Tests\commerce_pricelist\FunctionalCode
public function testImportPriceListItemsWithUpdate() {
$this
->drupalGet($this->priceListItemCollectionUri);
$this
->clickLink('Import prices');
$filepath = drupal_get_path('module', 'commerce_pricelist_test') . '/files/prices.csv';
$this
->getSession()
->getPage()
->attachFileToField('files[csv]', $filepath);
$this
->submitForm([
'mapping[quantity_column]' => 'qty',
'mapping[list_price_column]' => 'msrp',
'mapping[currency_column]' => 'currency',
'delete_existing' => FALSE,
], 'Import prices');
$this
->assertSession()
->pageTextContains('Imported 2 prices.');
$this
->assertSession()
->pageTextContains('Skipped 2 prices during import.');
$price_list_item_storage = $this->container
->get('entity_type.manager')
->getStorage('commerce_pricelist_item');
// Confirm that two new price list items have been created.
/** @var \Drupal\commerce_pricelist\Entity\PriceListItemInterface[] $price_list_items */
$price_list_items = $price_list_item_storage
->loadMultiple();
$this
->assertCount(2, $price_list_items);
$this
->drupalGet($this->priceListItemCollectionUri);
$this
->clickLink('Import prices');
$filepath = drupal_get_path('module', 'commerce_pricelist_test') . '/files/prices_update.csv';
$this
->getSession()
->getPage()
->attachFileToField('files[csv]', $filepath);
$this
->submitForm([
'mapping[quantity_column]' => 'qty',
'mapping[list_price_column]' => 'msrp',
'mapping[currency_column]' => 'currency',
'delete_existing' => FALSE,
], 'Import prices');
$this
->assertSession()
->pageTextContains('Imported 1 price.');
$this
->assertSession()
->pageTextContains('Updated 2 prices.');
$this
->assertSession()
->pageTextContains('Skipped 1 price during import.');
$price_list_item_storage
->resetCache();
// Confirm that quantities 1 and 3 were updated, and quantity 5 was created.
$price_list_item_ids = $price_list_item_storage
->getQuery()
->condition('purchasable_entity', $this->firstVariation
->id())
->condition('quantity', 1)
->execute();
$this
->assertCount(1, $price_list_item_ids);
/** @var \Drupal\commerce_pricelist\Entity\PriceListItemInterface $price_list_item */
$price_list_item = $price_list_item_storage
->load(reset($price_list_item_ids));
$this
->assertEquals($this->priceList
->id(), $price_list_item
->getPriceListId());
$this
->assertEquals($this->firstVariation
->id(), $price_list_item
->getPurchasableEntityId());
$this
->assertEquals('1', $price_list_item
->getQuantity());
$this
->assertEquals(new Price('60.00', 'USD'), $price_list_item
->getListPrice());
$this
->assertEquals(new Price('50.00', 'USD'), $price_list_item
->getPrice());
$this
->assertTrue($price_list_item
->isEnabled());
$price_list_item_ids = $price_list_item_storage
->getQuery()
->condition('purchasable_entity', $this->secondVariation
->id())
->condition('quantity', 3)
->execute();
$this
->assertCount(1, $price_list_item_ids);
$price_list_item = $price_list_item_storage
->load(reset($price_list_item_ids));
$this
->assertEquals($this->priceList
->id(), $price_list_item
->getPriceListId());
$this
->assertEquals($this->secondVariation
->id(), $price_list_item
->getPurchasableEntityId());
$this
->assertEquals('3', $price_list_item
->getQuantity());
$this
->assertEquals(new Price('89.99', 'USD'), $price_list_item
->getListPrice());
$this
->assertEquals(new Price('79.99', 'USD'), $price_list_item
->getPrice());
$this
->assertTrue($price_list_item
->isEnabled());
$price_list_item_ids = $price_list_item_storage
->getQuery()
->condition('purchasable_entity', $this->secondVariation
->id())
->condition('quantity', 5)
->execute();
$this
->assertCount(1, $price_list_item_ids);
$price_list_item = $price_list_item_storage
->load(reset($price_list_item_ids));
$this
->assertEquals($this->priceList
->id(), $price_list_item
->getPriceListId());
$this
->assertEquals($this->secondVariation
->id(), $price_list_item
->getPurchasableEntityId());
$this
->assertEquals('5', $price_list_item
->getQuantity());
$this
->assertEquals(new Price('89.99', 'USD'), $price_list_item
->getListPrice());
$this
->assertEquals(new Price('79.99', 'USD'), $price_list_item
->getPrice());
$this
->assertTrue($price_list_item
->isEnabled());
}