You are here

public function AjaxAddCartTest::testAddCartForm in Commerce Ajax Add to Cart 8

Tests add to cart form.

File

tests/src/FunctionalJavascript/AjaxAddCartTest.php, line 20

Class

AjaxAddCartTest
Ajax add cart tests.

Namespace

Drupal\Tests\dc_ajax_add_cart\FunctionalJavascript

Code

public function testAddCartForm() {
  $this
    ->drupalGet("product/{$this->variation->getProduct()->id()}");
  $ajax_add_cart_button = $this
    ->getSession()
    ->getPage()
    ->findButton('Add to cart');

  /*
   * Confirm that the initial add to cart submit works.
   */
  $ajax_add_cart_button
    ->click();
  $this
    ->waitForAjaxToFinish();
  $this->cart = Order::load($this->cart
    ->id());
  $order_items = $this->cart
    ->getItems();
  $this
    ->assertOrderItemInOrder($this->variation, $order_items[0]);

  /*
   * Confirm that the second add to cart submit increments the quantity
   * of the first order item.
   */
  $ajax_add_cart_button
    ->click();
  $this
    ->waitForAjaxToFinish();
  \Drupal::entityTypeManager()
    ->getStorage('commerce_order')
    ->resetCache();
  \Drupal::entityTypeManager()
    ->getStorage('commerce_order_item')
    ->resetCache();
  $this->cart = Order::load($this->cart
    ->id());
  $order_items = $this->cart
    ->getItems();
  $this
    ->assertNotEmpty(count($order_items) == 1, 'No additional order items were created');
  $this
    ->assertOrderItemInOrder($this->variation, $order_items[0], 2);
}