Skip to content

Commit 337d701

Browse files
committed
Merge branch 'ACP2E-1965' of https://github.com/magento-l3/magento2ce into PR-05242023
2 parents 3628a78 + 2c59af2 commit 337d701

File tree

2 files changed

+64
-4
lines changed
  • app/code/Magento/SalesRule/Model/ResourceModel
  • dev/tests/integration/testsuite/Magento/SalesRule/Model/ResourceModel

2 files changed

+64
-4
lines changed

app/code/Magento/SalesRule/Model/ResourceModel/Rule.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -312,6 +312,10 @@ public function getActiveAttributes()
312312
['ea' => $this->getTable('eav_attribute')],
313313
'ea.attribute_id = a.attribute_id',
314314
[]
315+
)->joinInner(
316+
['sr' => $this->getTable('salesrule')],
317+
'a.' . $this->getLinkField() . ' = sr.' . $this->getLinkField() . ' AND sr.is_active = 1',
318+
[]
315319
);
316320
return $connection->fetchAll($select);
317321
}

dev/tests/integration/testsuite/Magento/SalesRule/Model/ResourceModel/RuleTest.php

Lines changed: 60 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,78 @@
55
*/
66
namespace Magento\SalesRule\Model\ResourceModel;
77

8+
use Magento\SalesRule\Test\Fixture\ProductCondition as ProductConditionFixture;
9+
use Magento\SalesRule\Test\Fixture\ProductFoundInCartConditions as ProductFoundInCartConditionsFixture;
10+
use Magento\SalesRule\Test\Fixture\Rule as RuleFixture;
11+
use Magento\TestFramework\Fixture\DataFixture;
12+
use Magento\TestFramework\Fixture\DataFixtureStorage;
13+
use Magento\TestFramework\Fixture\DataFixtureStorageManager;
14+
use Magento\TestFramework\Helper\Bootstrap;
15+
816
/**
917
* @magentoDbIsolation enabled
1018
* @magentoAppIsolation enabled
1119
*/
1220
class RuleTest extends \PHPUnit\Framework\TestCase
1321
{
22+
/**
23+
* @var DataFixtureStorage
24+
*/
25+
private $fixtures;
26+
27+
/**
28+
* @var Rule
29+
*/
30+
private $resource;
31+
32+
/**
33+
* @inheirtDoc
34+
*/
35+
protected function setUp(): void
36+
{
37+
$this->fixtures = Bootstrap::getObjectManager()->get(
38+
DataFixtureStorageManager::class
39+
)->getStorage();
40+
$this->resource = Bootstrap::getObjectManager()->create(
41+
Rule::class
42+
);
43+
}
44+
1445
/**
1546
* @magentoDataFixture Magento/SalesRule/_files/rule_custom_product_attribute.php
1647
*/
1748
public function testAfterSave()
1849
{
19-
$resource = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
20-
\Magento\SalesRule\Model\ResourceModel\Rule::class
21-
);
22-
$items = $resource->getActiveAttributes();
50+
$items = $this->resource->getActiveAttributes();
2351

2452
$this->assertEquals([['attribute_code' => 'attribute_for_sales_rule_1']], $items);
2553
}
54+
55+
#[
56+
DataFixture(
57+
ProductConditionFixture::class,
58+
['attribute' => 'category_ids', 'value' => '2'],
59+
'cond11'
60+
),
61+
DataFixture(
62+
ProductFoundInCartConditionsFixture::class,
63+
['conditions' => ['$cond11$']],
64+
'cond1'
65+
),
66+
DataFixture(
67+
RuleFixture::class,
68+
['discount_amount' => 50, 'conditions' => ['$cond1$'], 'is_active' => 0],
69+
'rule1'
70+
)
71+
]
72+
public function testGetActiveAttributes()
73+
{
74+
$rule = $this->fixtures->get('rule1');
75+
$items = $this->resource->getActiveAttributes();
76+
$this->assertEquals([], $items);
77+
$rule->setIsActive(1);
78+
$rule->save();
79+
$items = $this->resource->getActiveAttributes();
80+
$this->assertEquals([['attribute_code' => 'category_ids']], $items);
81+
}
2682
}

0 commit comments

Comments
 (0)