commerce_shipping-8.x-2.0-rc2/tests/src/Functional/PackageTypeTest.php

tests/src/Functional/PackageTypeTest.php
<?php

namespace Drupal\Tests\commerce_shipping\Functional;

use Drupal\Tests\commerce\Functional\CommerceBrowserTestBase;
use Drupal\commerce_shipping\Entity\PackageType;

/**
 * Tests the package type UI.
 *
 * @group commerce_shipping
 */
class PackageTypeTest extends CommerceBrowserTestBase {

  /**
   * {@inheritdoc}
   */
  protected static $modules = [
    'commerce_shipping',
  ];

  /**
   * {@inheritdoc}
   */
  protected function getAdministratorPermissions() {
    return array_merge([
      'administer commerce_package_type',
    ], parent::getAdministratorPermissions());
  }

  /**
   * Tests creating a package type.
   */
  public function testPackageTypeCreation() {
    $this->drupalGet('admin/commerce/config/package-types');
    $this->getSession()->getPage()->clickLink('Add package type');
    $this->assertSession()->addressEquals('admin/commerce/config/package-types/add');

    $edit = [
      'label' => 'Example',
      'dimensions[length]' => '20',
      'dimensions[width]' => '10',
      'dimensions[height]' => '10',
      'dimensions[unit]' => 'in',
      'weight[number]' => '10',
      'weight[unit]' => 'oz',
      // Setting the 'id' can fail if focus switches to another field.
      // This is a bug in the machine name JS that can be reproduced manually.
      'id' => 'example',
    ];
    $this->submitForm($edit, 'Save');
    $this->assertSession()->addressEquals('admin/commerce/config/package-types');
    $this->assertSession()->responseContains('Example');

    $package_type = PackageType::load('example');
    $this->assertEquals('example', $package_type->id());
    $this->assertEquals('Example', $package_type->label());
    $this->assertEquals('20', $package_type->getDimensions()['length']);
    $this->assertEquals('10', $package_type->getDimensions()['width']);
    $this->assertEquals('10', $package_type->getDimensions()['height']);
    $this->assertEquals('in', $package_type->getDimensions()['unit']);
    $this->assertEquals('10', $package_type->getWeight()['number']);
    $this->assertEquals('oz', $package_type->getWeight()['unit']);
  }

  /**
   * Testing editing a package type.
   */
  public function testPackageTypeEditing() {
    $values = [
      'id' => 'edit_example',
      'label' => 'Edit example',
      'dimensions' => [
        'length' => '15',
        'width' => '15',
        'height' => '15',
        'unit' => 'm',
      ],
      'weight' => [
        'number' => 0,
        'unit' => 'g',
      ],
    ];
    $package_type = $this->createEntity('commerce_package_type', $values);

    $this->drupalGet('admin/commerce/config/package-types/manage/' . $package_type->id());
    $edit = [
      'dimensions[length]' => '20',
      'weight[number]' => '2',
      'weight[unit]' => 'lb',
    ];
    $this->submitForm($edit, 'Save');

    \Drupal::entityTypeManager()->getStorage('commerce_package_type')->resetCache();
    $package_type = PackageType::load('edit_example');
    $this->assertEquals('edit_example', $package_type->id());
    $this->assertEquals('Edit example', $package_type->label());
    $this->assertEquals('20', $package_type->getDimensions()['length']);
    $this->assertEquals('15', $package_type->getDimensions()['width']);
    $this->assertEquals('15', $package_type->getDimensions()['height']);
    $this->assertEquals('m', $package_type->getDimensions()['unit']);
    $this->assertEquals('2', $package_type->getWeight()['number']);
    $this->assertEquals('lb', $package_type->getWeight()['unit']);
  }

  /**
   * Tests deleting a package type.
   */
  public function testPackageTypeDeletion() {
    $package_type = $this->createEntity('commerce_package_type', [
      'id' => 'for_deletion',
      'label' => 'For deletion',
      'dimensions' => [
        'length' => '15',
        'width' => '15',
        'height' => '15',
        'unit' => 'm',
      ],
      'weight' => [
        'number' => 0,
        'unit' => 'g',
      ],
    ]);
    $this->drupalGet('admin/commerce/config/package-types/manage/' . $package_type->id() . '/delete');
    $this->submitForm([], 'Delete');
    $this->assertSession()->addressEquals('admin/commerce/config/package-types');

    $package_type_exists = (bool) PackageType::load('for_deletion');
    $this->assertFalse($package_type_exists, 'The package type has been deleted from the database.');
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc