7
7
8
8
namespace Magento \GraphQl \CheckoutAgreements \Api ;
9
9
10
+ use Magento \CheckoutAgreements \Api \Data \AgreementInterface ;
11
+ use Magento \CheckoutAgreements \Model \Agreement as AgreementModel ;
12
+ use Magento \CheckoutAgreements \Model \AgreementFactory ;
13
+ use Magento \CheckoutAgreements \Model \ResourceModel \Agreement ;
14
+ use Magento \Framework \ObjectManagerInterface ;
15
+ use Magento \Store \Model \StoreManagerInterface ;
16
+ use Magento \TestFramework \Helper \Bootstrap ;
10
17
use Magento \TestFramework \TestCase \GraphQlAbstract ;
11
18
12
19
class CheckoutAgreementsListTest extends GraphQlAbstract
13
20
{
21
+ /**
22
+ * @var ObjectManagerInterface
23
+ */
24
+ private $ objectManager ;
25
+
26
+ protected function setUp ()
27
+ {
28
+ parent ::setUp ();
29
+ $ this ->objectManager = Bootstrap::getObjectManager ();
30
+ }
31
+
14
32
/**
15
33
* @magentoApiDataFixture Magento/CheckoutAgreements/_files/agreement_active_with_html_content.php
16
34
* @magentoApiDataFixture Magento/CheckoutAgreements/_files/agreement_inactive_with_text_content.php
17
35
*/
18
36
public function testGetActiveAgreement ()
19
37
{
20
- $ query =
38
+ $ query = $ this ->getQuery ();
39
+
40
+ $ response = $ this ->graphQlQuery ($ query );
41
+
42
+ $ this ->assertArrayHasKey ('checkoutAgreements ' , $ response );
43
+ $ agreements = $ response ['checkoutAgreements ' ];
44
+ $ this ->assertCount (1 , $ agreements );
45
+ $ this ->assertEquals ('Checkout Agreement (active) ' , $ agreements [0 ]['name ' ]);
46
+ $ this ->assertEquals ('Checkout agreement content: <b>HTML</b> ' , $ agreements [0 ]['content ' ]);
47
+ $ this ->assertEquals ('200px ' , $ agreements [0 ]['content_height ' ]);
48
+ $ this ->assertEquals ('Checkout agreement checkbox text. ' , $ agreements [0 ]['checkbox_text ' ]);
49
+ $ this ->assertEquals (true , $ agreements [0 ]['is_html ' ]);
50
+ }
51
+
52
+ /**
53
+ * @magentoApiDataFixture Magento/CheckoutAgreements/_files/agreement_active_with_html_content.php
54
+ * @magentoApiDataFixture Magento/CheckoutAgreements/_files/agreement_inactive_with_text_content.php
55
+ * @magentoApiDataFixture Magento/Store/_files/second_store.php
56
+ */
57
+ public function testGetActiveAgreementOnSecondStore ()
58
+ {
59
+ $ secondStoreCode = 'fixture_second_store ' ;
60
+ $ agreementsName = 'Checkout Agreement (active) ' ;
61
+
62
+ $ query = $ this ->getQuery ();
63
+ $ this ->assignAgreementsToStore ($ secondStoreCode , $ agreementsName );
64
+
65
+ $ headerMap ['Store ' ] = $ secondStoreCode ;
66
+ $ response = $ this ->graphQlQuery ($ query , [], '' , $ headerMap );
67
+
68
+ $ this ->assertArrayHasKey ('checkoutAgreements ' , $ response );
69
+ $ agreements = $ response ['checkoutAgreements ' ];
70
+ $ this ->assertCount (1 , $ agreements );
71
+ $ this ->assertEquals ($ agreementsName , $ agreements [0 ]['name ' ]);
72
+ $ this ->assertEquals ('Checkout agreement content: <b>HTML</b> ' , $ agreements [0 ]['content ' ]);
73
+ $ this ->assertEquals ('200px ' , $ agreements [0 ]['content_height ' ]);
74
+ $ this ->assertEquals ('Checkout agreement checkbox text. ' , $ agreements [0 ]['checkbox_text ' ]);
75
+ $ this ->assertEquals (true , $ agreements [0 ]['is_html ' ]);
76
+ }
77
+
78
+ /**
79
+ * @magentoApiDataFixture Magento/CheckoutAgreements/_files/agreement_active_with_html_content.php
80
+ * @magentoApiDataFixture Magento/CheckoutAgreements/_files/agreement_inactive_with_text_content.php
81
+ * @magentoApiDataFixture Magento/Store/_files/second_store.php
82
+ */
83
+ public function testGetActiveAgreementFromSecondStoreOnDefaultStore ()
84
+ {
85
+ $ secondStoreCode = 'fixture_second_store ' ;
86
+ $ agreementsName = 'Checkout Agreement (active) ' ;
87
+
88
+ $ query = $ this ->getQuery ();
89
+ $ this ->assignAgreementsToStore ($ secondStoreCode , $ agreementsName );
90
+
91
+ $ response = $ this ->graphQlQuery ($ query );
92
+
93
+ $ this ->assertArrayHasKey ('checkoutAgreements ' , $ response );
94
+ $ agreements = $ response ['checkoutAgreements ' ];
95
+ $ this ->assertCount (0 , $ agreements );
96
+ }
97
+
98
+ public function testGetAgreementNotSet ()
99
+ {
100
+ $ query = $ this ->getQuery ();
101
+
102
+ $ response = $ this ->graphQlQuery ($ query );
103
+
104
+ $ this ->assertArrayHasKey ('checkoutAgreements ' , $ response );
105
+ $ agreements = $ response ['checkoutAgreements ' ];
106
+ $ this ->assertCount (0 , $ agreements );
107
+ }
108
+
109
+ /**
110
+ * @return string
111
+ */
112
+ private function getQuery (): string
113
+ {
114
+ return
21
115
<<<QUERY
22
116
{
23
117
checkoutAgreements {
@@ -30,15 +124,25 @@ public function testGetActiveAgreement()
30
124
}
31
125
}
32
126
QUERY ;
127
+ }
33
128
34
- $ response = $ this ->graphQlQuery ($ query );
35
- $ this ->assertArrayHasKey ('checkoutAgreements ' , $ response );
36
- $ agreements = $ response ['checkoutAgreements ' ];
37
- $ this ->assertEquals (1 , count ($ agreements ));
38
- $ this ->assertEquals ('Checkout Agreement (active) ' , $ agreements [0 ]['name ' ]);
39
- $ this ->assertEquals ('Checkout agreement content: <b>HTML</b> ' , $ agreements [0 ]['content ' ]);
40
- $ this ->assertEquals ('200px ' , $ agreements [0 ]['content_height ' ]);
41
- $ this ->assertEquals ('Checkout agreement checkbox text. ' , $ agreements [0 ]['checkbox_text ' ]);
42
- $ this ->assertEquals (true , $ agreements [0 ]['is_html ' ]);
129
+ /**
130
+ * @param string $storeCode
131
+ * @param string $agreementsName
132
+ * @return void
133
+ */
134
+ private function assignAgreementsToStore (string $ storeCode , string $ agreementsName ): void
135
+ {
136
+ $ agreementsFactory = $ this ->objectManager ->get (AgreementFactory::class);
137
+ /** @var Agreement $agreementsResource */
138
+ $ agreementsResource = $ this ->objectManager ->get (Agreement::class);
139
+ /** @var StoreManagerInterface $storeManager */
140
+ $ storeManager = $ this ->objectManager ->get (StoreManagerInterface::class);
141
+ $ store = $ storeManager ->getStore ($ storeCode );
142
+ /** @var AgreementModel $agreements */
143
+ $ agreements = $ agreementsFactory ->create ();
144
+ $ agreementsResource ->load ($ agreements , $ agreementsName , AgreementInterface::NAME );
145
+ $ agreements ->setData ('stores ' , [$ store ->getId ()]);
146
+ $ agreementsResource ->save ($ agreements );
43
147
}
44
148
}
0 commit comments