Skip to content

Commit 87bb801

Browse files
committed
Additional cart-based integration tests
1 parent f222cb2 commit 87bb801

File tree

4 files changed

+112
-7
lines changed

4 files changed

+112
-7
lines changed
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
<?php declare(strict_types=1);
2+
3+
namespace Yireo\GoogleTagManager2\Test\Integration\DataLayer\Event;
4+
5+
use Magento\Catalog\Model\Product;
6+
use Magento\Framework\Api\SearchCriteriaBuilder;
7+
use Magento\Framework\App\ObjectManager;
8+
use Magento\Sales\Api\Data\OrderInterface;
9+
use Magento\Sales\Api\OrderRepositoryInterface;
10+
use PHPUnit\Framework\TestCase;
11+
use Yireo\GoogleTagManager2\DataLayer\Event\Purchase;
12+
use Yireo\GoogleTagManager2\Test\Integration\FixtureTrait\CreateProduct;
13+
14+
/**
15+
* @magentoAppArea frontend
16+
*/
17+
class PurchaseTest extends TestCase
18+
{
19+
use CreateProduct;
20+
21+
/**
22+
* @magentoConfigFixture current_store googletagmanager2/settings/enabled 1
23+
* @magentoConfigFixture current_store googletagmanager2/settings/method 1
24+
* @magentoConfigFixture current_store googletagmanager2/settings/id test
25+
* @magentoAppArea frontend
26+
* @magentoAppIsolation enabled
27+
* @magentoDbIsolation enabled
28+
* @magentoDataFixture Magento/Sales/_files/order.php
29+
*/
30+
public function testValidDataLayerWithCart()
31+
{
32+
$purchaseEvent = ObjectManager::getInstance()->get(Purchase::class);
33+
$data = $purchaseEvent->setOrder($this->getOrder())->get();
34+
35+
$this->assertNotEmpty($data);
36+
$this->assertCount(1, $data['ecommerce']['items']);
37+
}
38+
39+
/**
40+
* @magentoConfigFixture current_store googletagmanager2/settings/enabled 1
41+
* @magentoConfigFixture current_store googletagmanager2/settings/method 1
42+
* @magentoConfigFixture current_store googletagmanager2/settings/id test
43+
* @magentoConfigFixture current_store googletagmanager2/settings/order_states_for_purchase_event payment_review,pending_payment,holded,processing,complete
44+
* @magentoAppArea frontend
45+
* @magentoAppIsolation enabled
46+
* @magentoDbIsolation enabled
47+
* @magentoDataFixture Magento/Sales/_files/order.php
48+
*/
49+
public function testValidDataLayerWithCartWithSpecificOrderStates()
50+
{
51+
$purchaseEvent = ObjectManager::getInstance()->get(Purchase::class);
52+
$data = $purchaseEvent->setOrder($this->getOrder())->get();
53+
54+
$this->assertNotEmpty($data);
55+
$this->assertCount(1, $data['ecommerce']['items']);
56+
}
57+
58+
private function getOrder(): OrderInterface
59+
{
60+
$orderRepository = ObjectManager::getInstance()->get(OrderRepositoryInterface::class);
61+
$searchCriteriaBuilder = ObjectManager::getInstance()->get(SearchCriteriaBuilder::class);
62+
$searchCriteriaBuilder->setPageSize(1);
63+
$searchResults = $orderRepository->getList($searchCriteriaBuilder->create());
64+
$items = $searchResults->getItems();
65+
return array_shift($items);
66+
}
67+
}

Test/Integration/FixtureTrait/CreateProduct.php

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,19 +12,17 @@
1212
use Magento\Catalog\Model\Product\Attribute\Source\Status;
1313
use Magento\Catalog\Model\Product\Type;
1414
use Magento\Catalog\Model\Product\Visibility;
15+
use Magento\CatalogInventory\Api\StockRegistryInterface;
1516
use Magento\CatalogSearch\Model\Indexer\Fulltext;
1617
use Magento\CatalogUrlRewrite\Observer\ProductProcessUrlRewriteSavingObserver;
1718
use Magento\Framework\App\ObjectManager;
1819
use Magento\Framework\App\ResourceConnection;
19-
use Magento\Framework\App\State;
2020
use Magento\Framework\Event\Config\Data;
2121
use Magento\Framework\Event\ConfigInterface;
2222
use Magento\Framework\Exception\NoSuchEntityException;
23-
use Magento\Framework\Exception\StateException;
24-
use Magento\Framework\Indexer\IndexerRegistry;
2523
use Magento\Framework\Registry;
2624
use Magento\Store\Api\WebsiteRepositoryInterface;
27-
use Magento\TestFramework\Helper\Bootstrap;
25+
use Yireo\GoogleTagManager2\Test\Integration\Stub\FulltextStub;
2826

2927
trait CreateProduct
3028
{
@@ -33,6 +31,18 @@ public function createProduct(
3331
array $data = []
3432
): ProductInterface {
3533
$objectManager = ObjectManager::getInstance();
34+
/*$objectManager->configure([
35+
'preferences' => [
36+
Fulltext::class => FulltextStub::class
37+
]
38+
]);*/
39+
40+
/*
41+
$indexerFactory = $objectManager->get(\Magento\Indexer\Model\IndexerFactory::class);
42+
/** @var \Magento\Indexer\Model\Indexer $indexer */
43+
//$indexer = $indexerFactory->create()->load('catalogsearch_fulltext');
44+
//$indexer->reindexAll();
45+
3646
$productFactory = $objectManager->get(ProductInterfaceFactory::class);
3747
$defaultCategory = $objectManager->get(DefaultCategory::class);
3848
$productRepository = $objectManager->get(ProductRepositoryInterface::class);
@@ -58,14 +68,21 @@ public function createProduct(
5868
->setWebsiteIds([$this->getDefaultWebsiteId()])
5969
->setAttributeSetId($this->getDefaultAttributeSetId())
6070
->setVisibility(Visibility::VISIBILITY_BOTH)
61-
->setStockData(['use_config_manage_stock' => 0])
6271
//->setCanSaveCustomOptions(true)
6372
//->setHasOptions(true)
6473
->addData($data);
6574

6675
$product->isObjectNew(true);
6776
$productRepository->save($product);
6877

78+
$stockRegistry = $objectManager->get(StockRegistryInterface::class);
79+
$stockItem = $stockRegistry->getStockItemBySku($product->getSku());
80+
$stockItem->setUseConfigManageStock(1);
81+
$stockItem->setIsInStock(1);
82+
$stockItem->setProductId($product->getId());
83+
$stockItem->setQty(9999);
84+
$stockRegistry->updateStockItemBySku($product->getSku(), $stockItem);
85+
6986
if (!empty($product->getCategoryIds())) {
7087
$categoryLinkManagement = $objectManager->get(CategoryLinkManagementInterface::class);
7188
$categoryLinkManagement->assignProductToCategories(
@@ -74,6 +91,8 @@ public function createProduct(
7491
);
7592
}
7693

94+
95+
7796
return $product;
7897
}
7998

Test/Integration/Page/AddToWishlistTest.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@ class AddToWishlistTest extends PageTestCase
2020
use CreateCustomer;
2121

2222
/**
23-
* @magentoDbIsolation disabled
24-
* @magentoAppIsolation disabled
2523
* @magentoAppArea frontend
2624
* @magentoDataFixture Magento/Catalog/_files/product_simple.php
2725
* @magentoConfigFixture current_store cataloginventory/options/show_out_of_stock 1
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?php
2+
declare(strict_types=1);
3+
4+
namespace Yireo\GoogleTagManager2\Test\Integration\Stub;
5+
6+
use Magento\CatalogSearch\Model\Indexer\Fulltext;
7+
8+
class FulltextStub extends Fulltext
9+
{
10+
public function execute($entityIds)
11+
{
12+
}
13+
14+
public function executeFull()
15+
{
16+
}
17+
18+
public function executeRow($id)
19+
{
20+
}
21+
}

0 commit comments

Comments
 (0)