You are here

public function PriceListTest::testDuplicate in Commerce Pricelist 8.2

Tests duplicating a price list.

File

tests/src/Functional/PriceListTest.php, line 104

Class

PriceListTest
Tests the price list UI.

Namespace

Drupal\Tests\commerce_pricelist\Functional

Code

public function testDuplicate() {
  $roles = $this->adminUser
    ->getRoles();
  $role = reset($roles);
  $price_list = $this
    ->createEntity('commerce_pricelist', [
    'type' => 'commerce_product_variation',
    'name' => 'Random list',
    'start_date' => '2018-07-07T13:37:00',
    'customer_roles' => [
      $role,
    ],
  ]);
  $this
    ->drupalGet($price_list
    ->toUrl('duplicate-form'));
  $this
    ->assertSession()
    ->pageTextContains('Duplicate Random list');
  $prices_tab_uri = Url::fromRoute('entity.commerce_pricelist_item.collection', [
    'commerce_pricelist' => $price_list
      ->id(),
  ])
    ->toString();
  $this
    ->assertSession()
    ->linkByHrefExists($price_list
    ->toUrl('edit-form')
    ->toString());
  $this
    ->assertSession()
    ->linkByHrefExists($price_list
    ->toUrl('duplicate-form')
    ->toString());
  $this
    ->assertSession()
    ->linkByHrefExists($prices_tab_uri);
  $this
    ->submitForm([
    'name[0][value]' => 'Random list2',
    'start_date[0][value][date]' => '2018-08-08',
  ], 'Save');
  $this
    ->assertSession()
    ->pageTextContains('Saved the Random list2 price list.');
  \Drupal::service('entity_type.manager')
    ->getStorage('commerce_pricelist')
    ->resetCache([
    $price_list
      ->id(),
  ]);

  // Confirm that the original price list is unchanged.
  $price_list = PriceList::load(1);
  $this
    ->assertEquals('Random list', $price_list
    ->getName());
  $this
    ->assertEquals('2018-07-07 13:37:00', $price_list
    ->getStartDate()
    ->format('Y-m-d H:i:s'));
  $this
    ->assertEquals([
    $role,
  ], $price_list
    ->getCustomerRoles());

  // Confirm that the new price list has the expected data.
  $price_list = PriceList::load(2);
  $this
    ->assertEquals('Random list2', $price_list
    ->getName());
  $this
    ->assertEquals('2018-08-08 13:37:00', $price_list
    ->getStartDate()
    ->format('Y-m-d H:i:s'));
  $this
    ->assertEquals([
    $role,
  ], $price_list
    ->getCustomerRoles());
}