commerce_product_bundle-8.x-1.x-dev/modules/commerce_product_bundle_stock/tests/src/Kernel/ProductBundleStockProxyKernelTest.php
modules/commerce_product_bundle_stock/tests/src/Kernel/ProductBundleStockProxyKernelTest.php
<?php namespace Drupal\Tests\commerce_product_bundle_stock\Kernel; use Drupal\commerce_product\Entity\Product; use Drupal\commerce_product\Entity\ProductVariation; use Drupal\commerce_product_bundle\Entity\ProductBundle; use Drupal\commerce_product_bundle\Entity\ProductBundleItem; use Drupal\commerce_product_bundle_stock\ProductBundleStockProxy; /** * Tests the product bundle stock proxy. * * @coversDefaultClass \Drupal\commerce_product_bundle_stock\ProductBundleStockProxy * * @group commerce_product_bundle_stock */ class ProductBundleStockProxyKernelTest extends ProductBundleStockKernelTestBase { /** * The product bundle. * * @var \Drupal\commerce_product_bundle\Entity\ProductBundle */ protected $bundle; /** * Sets up the the product bundle we need for test. * * @todo Try to mock at least parts of it, instead of relying on real objects. */ public function setup() { parent::setup(); $variations = []; for ($i = 1; $i <= 5; $i++) { $variation = ProductVariation::create([ 'type' => 'default', 'sku' => strtolower($this->randomMachineName()), 'title' => $this->randomString(), 'status' => $i % 2, ]); $variation->save(); $variations[] = $variation; } $variations = array_reverse($variations); $product = Product::create([ 'type' => 'default', 'variations' => $variations, ]); $product->save(); $product1 = $this->reloadEntity($product); $variations = []; for ($i = 1; $i <= 3; $i++) { $variation = ProductVariation::create([ 'type' => 'default', 'sku' => strtolower($this->randomMachineName()), 'title' => $this->randomString(), 'status' => TRUE, ]); $variation->save(); $variations[] = $variation; } $variations = array_reverse($variations); $product = Product::create([ 'type' => 'default', 'variations' => $variations, ]); $product->save(); $product2 = $this->reloadEntity($product); $bundleItem1 = ProductBundleItem::create([ 'type' => 'default', 'uid' => $this->user->id(), 'title' => 'testBundle1', 'status' => TRUE, ]); $bundleItem1->setProduct($product1); $bundleItem1->save(); $bundleItem1 = $this->reloadEntity($bundleItem1); $bundleItem2 = ProductBundleItem::create([ 'type' => 'default', 'uid' => $this->user->id(), 'title' => 'testBundle2', 'status' => TRUE, ]); $bundleItem2->setProduct($product2); $bundleItem2->save(); $bundleItem2 = $this->reloadEntity($bundleItem2); $bundle = ProductBundle::create( [ 'type' => 'default', 'uid' => $this->user->id(), 'status' => TRUE, ]); $bundle->setBundleItems([$bundleItem1, $bundleItem2]); $bundle->save(); $this->bundle = $this->reloadEntity($bundle); } /** * Tests the product bundle proxy. * * @covers ::getIsStockManaged * @covers ::getIsAlwaysInStock * @covers ::getIsInStock * * @todo Add tests with real stock checking. */ public function testProductBundleStockProxy() { $stockServiceManager = \Drupal::service('commerce_stock.service_manager'); $proxy = new ProductBundleStockProxy($stockServiceManager); $this->assertTrue($proxy->getIsStockManaged($this->bundle)); $this->assertTrue($proxy->getIsAlwaysInStock($this->bundle)); $this->assertTrue($proxy->getIsInStock($this->bundle, [])); } }