commerce_trustedshops-8.x-2.x-dev/tests/src/Kernel/DefaultShopResolverTest.php

tests/src/Kernel/DefaultShopResolverTest.php
<?php

namespace Drupal\Tests\commerce_trustedshops\Kernel;

use Drupal\commerce_trustedshops\Context;
use Drupal\Core\Language\Language;
use Drupal\Core\Language\LanguageInterface;
use Drupal\language\Entity\ConfigurableLanguage;
use Drupal\Tests\commerce\Kernel\CommerceKernelTestBase as DrupalCommerceKernelTestBase;
use Drupal\Tests\commerce_trustedshops\Traits\DeprecationSuppressionTrait;

/**
 * @coversDefaultClass \Drupal\commerce_trustedshops\Resolver\Shop\DefaultShopResolver
 *
 * @group commerce_trustedshops
 */
class DefaultShopResolverTest extends DrupalCommerceKernelTestBase {
  use DeprecationSuppressionTrait;

  /**
   * The Entity Type Manager.
   *
   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
   */
  protected $entityTypeManager;

  /**
   * The Trusted Shops used for test.
   *
   * @var \Drupal\commerce_trustedshops\Entity\ShopInterface[]
   */
  protected $testShops;

  /**
   * The stores used for test.
   *
   * @var \Drupal\commerce_store\Entity\StoreInterface[]
   */
  protected $testStores;

  /**
   * The default Trusted Shop resolver.
   *
   * @var \Drupal\commerce_trustedshops\Resolver\Shop\DefaultShopResolver
   */
  protected $defaultShopResolver;

  /**
   * Modules to enable.
   *
   * @var array
   */
  protected static $modules = [
    'locale',
    'language',
    'content_translation',
    'commerce_store',
    'commerce_trustedshops',
  ];

  /**
   * {@inheritdoc}
   */
  protected function setUp(): void {
    parent::setUp();

    $this->installEntitySchema('commerce_trustedshops_shop');
    $this->container->get('content_translation.manager')
      ->setEnabled('commerce_trustedshops_shop', 'tsid', TRUE);

    // Add French as second lang. English is always added by default.
    ConfigurableLanguage::createFromLangcode('fr')->save();

    $this->defaultShopResolver = $this->container->get('commerce_trustedshops.default_shop_resolver');

    $this->testStores[] = $this->entityTypeManager->getStorage('commerce_store')->load(1);
    $store_2 = $this->entityTypeManager
      ->getStorage('commerce_store')->create([
        'type' => 'online',
        'name' => $this->randomString(8),
        'mail' => $this->randomString(16),
      ]);
    $store_2->save();
    $this->testStores[] = $store_2;

    $ts_1 = $this->entityTypeManager
      ->getStorage('commerce_trustedshops_shop')->create([
        'tsid' => 'R9H9J8ETR1PBFYZ1564ODXCII6EU9ZRNRFI8SC',
        'langcode' => 'en',
        'store' => 1,
      ]);
    $ts_1->addTranslation('fr', [
      'tsid' => 'Z8F8A8ETZ1PBFiZ1223ODXCPP6EU8ZRNRFP8SC',
    ]);
    $ts_1->save();
    $this->testShops[$ts_1->id()] = $ts_1;

    $ts_2 = $this->entityTypeManager
      ->getStorage('commerce_trustedshops_shop')->create([
        'tsid' => 'EO2EDIY26B5JB3T50ICP0XZM4BJ3SNSK73DZ6BO',
        'langcode' => 'fr',
        'store' => 2,
      ]);
    $ts_2->save();
    $this->testShops[$ts_2->id()] = $ts_2;
  }

  /**
   * @covers \Drupal\commerce_trustedshops\Resolver\Shop\DefaultShopResolver::resolve
   *
   * @dataProvider providerDefaultShopAndLanguage
   */
  public function testResolve($store_id, LanguageInterface $language, $expected_shop_id, $expected_tsid) {
    $store_storage = $this->entityTypeManager->getStorage('commerce_store');
    $shop_storage = $this->entityTypeManager->getStorage('commerce_trustedshops_shop');

    $store = $store_storage->load($store_id);
    $context = new Context($store, $language);

    $shop = $this->defaultShopResolver->resolve($context);
    $expected_shop = $shop_storage->load($expected_shop_id);

    $this->assertEquals($shop->id(), $expected_shop->id());
    $this->assertEquals($shop->get('tsid')->value, $expected_tsid);
  }

  /**
   * Every potential Store & Language variations.
   *
   * @return array
   *   An array of each store/language variation.
   */
  public static function providerDefaultShopAndLanguage() {
    return [
      [1, new Language(['id' => 'en']), 1,
        'R9H9J8ETR1PBFYZ1564ODXCII6EU9ZRNRFI8SC',
      ],
      [1, new Language(['id' => 'fr']), 1,
        'Z8F8A8ETZ1PBFiZ1223ODXCPP6EU8ZRNRFP8SC',
      ],
      [2, new Language(['id' => 'fr']), 2,
        'EO2EDIY26B5JB3T50ICP0XZM4BJ3SNSK73DZ6BO',
      ],
    ];
  }

  /**
   * @covers \Drupal\commerce_trustedshops\Resolver\Shop\DefaultShopResolver::resolve
   */
  public function testResolveWithoutContext() {
    $shop = $this->defaultShopResolver->resolve();
    $shop_storage = $this->entityTypeManager->getStorage('commerce_trustedshops_shop');
    $expected_shop = $shop_storage->load($this->testShops[1]->id());
    $this->assertEquals($expected_shop, $shop);
  }

  /**
   * @covers \Drupal\commerce_trustedshops\Resolver\Shop\DefaultShopResolver::resolve
   */
  public function testResolveNull() {
    $context = new Context($this->testStores[1], new Language(['id' => 'en']));
    $shop = $this->defaultShopResolver->resolve($context);
    $this->assertNull($shop);
  }

}

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

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