Skip to content

Commit c94a655

Browse files
committed
GraphQl-309: [Checkout] Checkout Agreements
1 parent cc5e217 commit c94a655

File tree

4 files changed

+75
-113
lines changed

4 files changed

+75
-113
lines changed

app/code/Magento/CheckoutAgreementsGraphQl/Model/Resolver/CheckoutAgreements.php

Lines changed: 46 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,28 +7,48 @@
77

88
namespace Magento\CheckoutAgreementsGraphQl\Model\Resolver;
99

10-
use Magento\CheckoutAgreementsGraphQl\Model\Resolver\DataProvider\CheckoutAgreements as CheckoutAgreementsDataProvider;
1110
use Magento\Framework\GraphQl\Config\Element\Field;
1211
use Magento\Framework\GraphQl\Query\ResolverInterface;
1312
use Magento\Framework\GraphQl\Schema\Type\ResolveInfo;
13+
use Magento\CheckoutAgreements\Api\Data\AgreementInterface;
14+
use Magento\CheckoutAgreements\Model\ResourceModel\Agreement\CollectionFactory;
15+
use Magento\Framework\App\Config\ScopeConfigInterface;
16+
use Magento\Store\Model\ScopeInterface;
17+
use Magento\Store\Model\StoreManagerInterface;
1418

1519
/**
1620
* Checkout Agreements resolver, used for GraphQL request processing
1721
*/
1822
class CheckoutAgreements implements ResolverInterface
1923
{
2024
/**
21-
* @var CheckoutAgreementsDataProvider
25+
* @var CollectionFactory
2226
*/
23-
private $checkoutAgreementsDataProvider;
27+
private $agreementCollectionFactory;
2428

2529
/**
26-
* @param CheckoutAgreementsDataProvider $checkoutAgreementsDataProvider
30+
* @var StoreManagerInterface
31+
*/
32+
private $storeManager;
33+
34+
/**
35+
* @var ScopeConfigInterface
36+
*/
37+
private $scopeConfig;
38+
39+
/**
40+
* @param CollectionFactory $agreementCollectionFactory
41+
* @param StoreManagerInterface $storeManager
42+
* @param ScopeConfigInterface $scopeConfig
2743
*/
2844
public function __construct(
29-
CheckoutAgreementsDataProvider $checkoutAgreementsDataProvider
45+
CollectionFactory $agreementCollectionFactory,
46+
StoreManagerInterface $storeManager,
47+
ScopeConfigInterface $scopeConfig
3048
) {
31-
$this->checkoutAgreementsDataProvider = $checkoutAgreementsDataProvider;
49+
$this->agreementCollectionFactory = $agreementCollectionFactory;
50+
$this->storeManager = $storeManager;
51+
$this->scopeConfig = $scopeConfig;
3252
}
3353

3454
/**
@@ -41,8 +61,26 @@ public function resolve(
4161
array $value = null,
4262
array $args = null
4363
) {
44-
$checkoutAgreementsData = $this->checkoutAgreementsDataProvider->getData();
64+
if (!$this->scopeConfig->isSetFlag('checkout/options/enable_agreements', ScopeInterface::SCOPE_STORE)) {
65+
return [];
66+
}
67+
68+
$agreementsCollection = $this->agreementCollectionFactory->create();
69+
$agreementsCollection->addStoreFilter($this->storeManager->getStore()->getId());
70+
$agreementsCollection->addFieldToFilter('is_active', 1);
4571

46-
return $checkoutAgreementsData;
72+
$checkoutAgreementData = [];
73+
/** @var AgreementInterface $checkoutAgreement */
74+
foreach ($agreementsCollection->getItems() as $checkoutAgreement) {
75+
$checkoutAgreementData[] = [
76+
AgreementInterface::AGREEMENT_ID => $checkoutAgreement->getAgreementId(),
77+
AgreementInterface::CONTENT => $checkoutAgreement->getContent(),
78+
AgreementInterface::NAME => $checkoutAgreement->getName(),
79+
AgreementInterface::CONTENT_HEIGHT => $checkoutAgreement->getContentHeight(),
80+
AgreementInterface::CHECKBOX_TEXT => $checkoutAgreement->getCheckboxText(),
81+
AgreementInterface::IS_HTML => $checkoutAgreement->getIsHtml(),
82+
];
83+
}
84+
return $checkoutAgreementData;
4785
}
4886
}

app/code/Magento/CheckoutAgreementsGraphQl/Model/Resolver/DataProvider/CheckoutAgreements.php

Lines changed: 0 additions & 81 deletions
This file was deleted.

app/code/Magento/CheckoutAgreementsGraphQl/composer.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,7 @@
99
"magento/module-checkout-agreements": "*"
1010
},
1111
"suggest": {
12-
"magento/module-graph-ql": "*",
13-
"magento/module-store-graph-ql": "*"
12+
"magento/module-graph-ql": "*"
1413
},
1514
"license": [
1615
"OSL-3.0",
Lines changed: 28 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
*/
66
declare(strict_types=1);
77

8-
namespace Magento\GraphQl\CheckoutAgreements\Api;
8+
namespace Magento\GraphQl\CheckoutAgreements;
99

1010
use Magento\CheckoutAgreements\Api\Data\AgreementInterface;
1111
use Magento\CheckoutAgreements\Model\Agreement as AgreementModel;
@@ -20,8 +20,14 @@
2020
use Magento\TestFramework\Helper\Bootstrap;
2121
use Magento\TestFramework\TestCase\GraphQlAbstract;
2222

23-
class CheckoutAgreementsListTest extends GraphQlAbstract
23+
/**
24+
* Get checkout agreements test
25+
*/
26+
class GetCheckoutAgreementsTest extends GraphQlAbstract
2427
{
28+
/**
29+
* @var string
30+
*/
2531
private $agreementsXmlConfigPath = 'checkout/options/enable_agreements';
2632

2733
/**
@@ -55,14 +61,14 @@ public function testGetActiveAgreement()
5561

5662
$response = $this->graphQlQuery($query);
5763

58-
$this->assertArrayHasKey('checkoutAgreements', $response);
64+
self::assertArrayHasKey('checkoutAgreements', $response);
5965
$agreements = $response['checkoutAgreements'];
60-
$this->assertCount(1, $agreements);
61-
$this->assertEquals('Checkout Agreement (active)', $agreements[0]['name']);
62-
$this->assertEquals('Checkout agreement content: <b>HTML</b>', $agreements[0]['content']);
63-
$this->assertEquals('200px', $agreements[0]['content_height']);
64-
$this->assertEquals('Checkout agreement checkbox text.', $agreements[0]['checkbox_text']);
65-
$this->assertEquals(true, $agreements[0]['is_html']);
66+
self::assertCount(1, $agreements);
67+
self::assertEquals('Checkout Agreement (active)', $agreements[0]['name']);
68+
self::assertEquals('Checkout agreement content: <b>HTML</b>', $agreements[0]['content']);
69+
self::assertEquals('200px', $agreements[0]['content_height']);
70+
self::assertEquals('Checkout agreement checkbox text.', $agreements[0]['checkbox_text']);
71+
self::assertEquals(true, $agreements[0]['is_html']);
6672
}
6773

6874
/**
@@ -81,14 +87,14 @@ public function testGetActiveAgreementOnSecondStore()
8187
$headerMap['Store'] = $secondStoreCode;
8288
$response = $this->graphQlQuery($query, [], '', $headerMap);
8389

84-
$this->assertArrayHasKey('checkoutAgreements', $response);
90+
self::assertArrayHasKey('checkoutAgreements', $response);
8591
$agreements = $response['checkoutAgreements'];
86-
$this->assertCount(1, $agreements);
87-
$this->assertEquals($agreementsName, $agreements[0]['name']);
88-
$this->assertEquals('Checkout agreement content: <b>HTML</b>', $agreements[0]['content']);
89-
$this->assertEquals('200px', $agreements[0]['content_height']);
90-
$this->assertEquals('Checkout agreement checkbox text.', $agreements[0]['checkbox_text']);
91-
$this->assertEquals(true, $agreements[0]['is_html']);
92+
self::assertCount(1, $agreements);
93+
self::assertEquals($agreementsName, $agreements[0]['name']);
94+
self::assertEquals('Checkout agreement content: <b>HTML</b>', $agreements[0]['content']);
95+
self::assertEquals('200px', $agreements[0]['content_height']);
96+
self::assertEquals('Checkout agreement checkbox text.', $agreements[0]['checkbox_text']);
97+
self::assertEquals(true, $agreements[0]['is_html']);
9298
}
9399

94100
/**
@@ -106,9 +112,9 @@ public function testGetActiveAgreementFromSecondStoreOnDefaultStore()
106112

107113
$response = $this->graphQlQuery($query);
108114

109-
$this->assertArrayHasKey('checkoutAgreements', $response);
115+
self::assertArrayHasKey('checkoutAgreements', $response);
110116
$agreements = $response['checkoutAgreements'];
111-
$this->assertCount(0, $agreements);
117+
self::assertCount(0, $agreements);
112118
}
113119

114120
public function testGetAgreementNotSet()
@@ -117,9 +123,9 @@ public function testGetAgreementNotSet()
117123

118124
$response = $this->graphQlQuery($query);
119125

120-
$this->assertArrayHasKey('checkoutAgreements', $response);
126+
self::assertArrayHasKey('checkoutAgreements', $response);
121127
$agreements = $response['checkoutAgreements'];
122-
$this->assertCount(0, $agreements);
128+
self::assertCount(0, $agreements);
123129
}
124130

125131
/**
@@ -133,9 +139,9 @@ public function testDisabledAgreements()
133139

134140
$response = $this->graphQlQuery($query);
135141

136-
$this->assertArrayHasKey('checkoutAgreements', $response);
142+
self::assertArrayHasKey('checkoutAgreements', $response);
137143
$agreements = $response['checkoutAgreements'];
138-
$this->assertCount(0, $agreements);
144+
self::assertCount(0, $agreements);
139145
}
140146

141147
/**

0 commit comments

Comments
 (0)