Skip to content

Commit 6312143

Browse files
committed
ACP2E-1579: Catalog rule discount disappears after a product is saved from Admin
1 parent 8205988 commit 6312143

File tree

4 files changed

+52
-52
lines changed

4 files changed

+52
-52
lines changed

dev/tests/integration/testsuite/Magento/CatalogRule/Model/Indexer/IndexerBuilderTest.php

Lines changed: 50 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,17 @@
88
use Magento\Catalog\Api\ProductRepositoryInterface;
99
use Magento\Catalog\Model\Indexer\Product\Price\Processor;
1010
use Magento\Framework\App\ResourceConnection;
11+
use Magento\Store\Api\WebsiteRepositoryInterface;
1112
use Magento\Store\Model\StoreManagerInterface;
13+
use Magento\TestFramework\Fixture\AppIsolation;
14+
use Magento\TestFramework\Fixture\DataFixture;
15+
use Magento\TestFramework\Fixture\DbIsolation;
1216
use Magento\TestFramework\Helper\Bootstrap;
1317

18+
#[
19+
DbIsolation(false),
20+
AppIsolation(true),
21+
]
1422
class IndexerBuilderTest extends \PHPUnit\Framework\TestCase
1523
{
1624
/**
@@ -58,6 +66,11 @@ class IndexerBuilderTest extends \PHPUnit\Framework\TestCase
5866
*/
5967
private $indexProductProcessor;
6068

69+
/**
70+
* @var WebsiteRepositoryInterface
71+
*/
72+
private $websiteRepository;
73+
6174
protected function setUp(): void
6275
{
6376
$this->indexerBuilder = Bootstrap::getObjectManager()->get(
@@ -69,6 +82,7 @@ protected function setUp(): void
6982
$this->productRepository = Bootstrap::getObjectManager()->get(ProductRepositoryInterface::class);
7083
$this->connection = Bootstrap::getObjectManager()->get(ResourceConnection::class);
7184
$this->indexProductProcessor = Bootstrap::getObjectManager()->get(Processor::class);
85+
$this->websiteRepository = Bootstrap::getObjectManager()->get(WebsiteRepositoryInterface::class);
7286
}
7387

7488
protected function tearDown(): void
@@ -93,8 +107,6 @@ protected function tearDown(): void
93107
}
94108

95109
/**
96-
* @magentoDbIsolation disabled
97-
* @magentoAppIsolation enabled
98110
* @magentoDataFixture Magento/CatalogRule/_files/attribute.php
99111
* @magentoDataFixture Magento/CatalogRule/_files/rule_by_attribute.php
100112
* @magentoDataFixture Magento/Catalog/_files/product_simple.php
@@ -111,8 +123,6 @@ public function testReindexById()
111123
}
112124

113125
/**
114-
* @magentoDbIsolation disabled
115-
* @magentoAppIsolation enabled
116126
* @magentoDataFixture Magento/CatalogRule/_files/simple_product_with_catalog_rule_50_percent_off_tomorrow.php
117127
* @magentoConfigFixture base_website general/locale/timezone Europe/Amsterdam
118128
* @magentoConfigFixture general/locale/timezone America/Chicago
@@ -139,8 +149,6 @@ public function testReindexByIdDifferentTimezones()
139149
}
140150

141151
/**
142-
* @magentoDbIsolation disabled
143-
* @magentoAppIsolation enabled
144152
* @magentoDataFixture Magento/CatalogRule/_files/attribute.php
145153
* @magentoDataFixture Magento/CatalogRule/_files/rule_by_attribute.php
146154
* @magentoDataFixture Magento/Catalog/_files/product_simple.php
@@ -166,8 +174,6 @@ public function testReindexByIds()
166174
}
167175

168176
/**
169-
* @magentoDbIsolation disabled
170-
* @magentoAppIsolation enabled
171177
* @magentoDataFixtureBeforeTransaction Magento/CatalogRule/_files/attribute.php
172178
* @magentoDataFixtureBeforeTransaction Magento/CatalogRule/_files/rule_by_attribute.php
173179
* @magentoDataFixture Magento/Catalog/_files/product_simple.php
@@ -187,9 +193,6 @@ public function testReindexFull()
187193

188194
/**
189195
* Tests restoring triggers on `catalogrule_product_price` table after full reindexing in 'Update by schedule' mode.
190-
*
191-
* @magentoDbIsolation disabled
192-
* @magentoAppIsolation enabled
193196
*/
194197
public function testRestoringTriggersAfterFullReindex()
195198
{
@@ -208,6 +211,42 @@ public function testRestoringTriggersAfterFullReindex()
208211
$this->assertEquals(0, $this->getTriggersCount($tableName));
209212
}
210213

214+
#[
215+
DataFixture('Magento/CatalogRule/_files/simple_product_with_catalog_rule_50_percent_off.php'),
216+
]
217+
public function testReindexByIdForSecondStore(): void
218+
{
219+
$websiteId = $this->websiteRepository->get('test')->getId();
220+
$simpleProduct = $this->productRepository->get('simple');
221+
$this->indexerBuilder->reindexById($simpleProduct->getId());
222+
$rulePrice = $this->resourceRule->getRulePrice(new \DateTime(), $websiteId, 1, $simpleProduct->getId());
223+
$this->assertEquals(25, $rulePrice);
224+
}
225+
226+
#[
227+
DataFixture('Magento/CatalogRule/_files/simple_product_with_catalog_rule_50_percent_off.php'),
228+
]
229+
public function testReindexByIdsForSecondStore(): void
230+
{
231+
$websiteId = $this->websiteRepository->get('test')->getId();
232+
$simpleProduct = $this->productRepository->get('simple');
233+
$this->indexerBuilder->reindexByIds([$simpleProduct->getId()]);
234+
$rulePrice = $this->resourceRule->getRulePrice(new \DateTime(), $websiteId, 1, $simpleProduct->getId());
235+
$this->assertEquals(25, $rulePrice);
236+
}
237+
238+
#[
239+
DataFixture('Magento/CatalogRule/_files/simple_product_with_catalog_rule_50_percent_off.php'),
240+
]
241+
public function testReindexFullForSecondStore(): void
242+
{
243+
$websiteId = $this->websiteRepository->get('test')->getId();
244+
$simpleProduct = $this->productRepository->get('simple');
245+
$this->indexerBuilder->reindexFull();
246+
$rulePrice = $this->resourceRule->getRulePrice(new \DateTime(), $websiteId, 1, $simpleProduct->getId());
247+
$this->assertEquals(25, $rulePrice);
248+
}
249+
211250
/**
212251
* Returns triggers count.
213252
*

dev/tests/integration/testsuite/Magento/CatalogRule/Model/Indexer/Product/PriceTest.php

Lines changed: 0 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,10 @@
66
namespace Magento\CatalogRule\Model\Indexer\Product;
77

88
use Magento\Catalog\Api\ProductRepositoryInterface;
9-
use Magento\Catalog\Model\ProductRepository;
109
use Magento\Catalog\Model\ResourceModel\Product\Collection;
11-
use Magento\CatalogRule\Model\Indexer\IndexBuilder;
1210
use Magento\CatalogRule\Model\ResourceModel\Rule;
1311
use Magento\Framework\Api\SearchCriteriaInterface;
1412
use Magento\Framework\Api\SortOrder;
15-
use Magento\Store\Api\WebsiteRepositoryInterface;
1613
use Magento\TestFramework\Helper\Bootstrap;
1714

1815
class PriceTest extends \PHPUnit\Framework\TestCase
@@ -27,31 +24,13 @@ class PriceTest extends \PHPUnit\Framework\TestCase
2724
*/
2825
private $resourceRule;
2926

30-
/**
31-
* @var WebsiteRepositoryInterface
32-
*/
33-
private $websiteRepository;
34-
35-
/**
36-
* @var ProductRepository
37-
*/
38-
private $productRepository;
39-
40-
/**
41-
* @var IndexBuilder
42-
*/
43-
private $indexerBuilder;
44-
4527
/**
4628
* @inheritdoc
4729
*/
4830
protected function setUp(): void
4931
{
5032
$this->objectManager = Bootstrap::getObjectManager();
5133
$this->resourceRule = $this->objectManager->get(Rule::class);
52-
$this->websiteRepository = $this->objectManager->get(WebsiteRepositoryInterface::class);
53-
$this->productRepository = $this->objectManager->create(ProductRepository::class);
54-
$this->indexerBuilder = $this->objectManager->get(IndexBuilder::class);
5534
}
5635

5736
/**
@@ -86,24 +65,6 @@ public function testPriceApplying()
8665
$this->assertEquals($simpleProduct->getFinalPrice(), $confProduct->getMinimalPrice());
8766
}
8867

89-
/**
90-
* @magentoDataFixtureBeforeTransaction Magento/CatalogRule/_files/simple_product_with_catalog_rule_50_percent_off.php
91-
* @magentoDbIsolation enabled
92-
* @magentoAppIsolation enabled
93-
* @return void
94-
*/
95-
public function testPriceForSecondStore():void
96-
{
97-
$websiteId = $this->websiteRepository->get('test')->getId();
98-
$simpleProduct = $this->productRepository->get('simple');
99-
$this->assertEquals('simple', $simpleProduct->getSku());
100-
$this->indexerBuilder->reindexById($simpleProduct->getId());
101-
$this->assertEquals(
102-
25,
103-
$this->resourceRule->getRulePrice(new \DateTime(), $websiteId, 1, $simpleProduct->getId())
104-
);
105-
}
106-
10768
/**
10869
* @magentoDataFixtureBeforeTransaction Magento/CatalogRule/_files/simple_products.php
10970
* @magentoDataFixtureBeforeTransaction Magento/CatalogRule/_files/rule_by_attribute.php

dev/tests/integration/testsuite/Magento/CatalogRule/_files/simple_product_with_catalog_rule_50_percent_off.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
use Magento\TestFramework\Helper\Bootstrap;
1919
use Magento\TestFramework\Workaround\Override\Fixture\Resolver;
2020

21-
Resolver::getInstance()->requireDataFixture('Magento/Store/_files/second_website_with_two_stores.php');
21+
Resolver::getInstance()->requireDataFixture('Magento/Store/_files/second_website_with_store_group_and_store.php');
2222

2323
$objectManager = Bootstrap::getObjectManager();
2424
/** @var WebsiteRepositoryInterface $websiteRepository */

dev/tests/integration/testsuite/Magento/CatalogRule/_files/simple_product_with_catalog_rule_50_percent_off_rollback.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,4 +52,4 @@
5252

5353
$indexBuilder->reindexFull();
5454

55-
Resolver::getInstance()->requireDataFixture('Magento/Store/_files/second_website_with_two_stores_rollback.php');
55+
Resolver::getInstance()->requireDataFixture('Magento/Store/_files/second_website_with_store_group_and_store_rollback.php');

0 commit comments

Comments
 (0)