6
6
7
7
namespace Magento \Catalog \Model \Product \Option \Type ;
8
8
9
+ use Magento \Catalog \Model \Product \Option ;
10
+ use Magento \Framework \DataObject ;
11
+
9
12
/**
10
- * Test for \Magento\Catalog\Model\Product\Option\Type\ Date
13
+ * Test for customizable product option with " Date" type
11
14
*/
12
15
class DateTest extends \PHPUnit \Framework \TestCase
13
16
{
14
17
/**
15
- * @var \Magento\Catalog\Model\Product\Option\Type\ Date
18
+ * @var Date
16
19
*/
17
20
protected $ model ;
18
21
@@ -28,12 +31,13 @@ protected function setUp()
28
31
{
29
32
$ this ->objectManager = \Magento \TestFramework \Helper \Bootstrap::getObjectManager ();
30
33
$ this ->model = $ this ->objectManager ->create (
31
- \ Magento \ Catalog \ Model \ Product \ Option \ Type \ Date::class
34
+ Date::class
32
35
);
33
36
}
34
37
35
38
/**
36
- * @covers \Magento\Catalog\Model\Product\Option\Type\Date::prepareOptionValueForRequest()
39
+ * Check if option value for request is the same as expected
40
+ *
37
41
* @dataProvider prepareOptionValueForRequestDataProvider
38
42
* @param array $optionValue
39
43
* @param array $infoBuyRequest
@@ -54,10 +58,10 @@ public function testPrepareOptionValueForRequest(
54
58
/** @var \Magento\Quote\Model\Quote\Item $item */
55
59
$ item = $ this ->objectManager ->create (\Magento \Quote \Model \Quote \Item::class);
56
60
$ item ->addOption ($ option );
57
- /** @var \Magento\Catalog\Model\Product\ Option|null $productOption */
61
+ /** @var Option|null $productOption */
58
62
$ productOption = $ productOptionData
59
63
? $ this ->objectManager ->create (
60
- \ Magento \ Catalog \ Model \ Product \ Option::class,
64
+ Option::class,
61
65
['data ' => $ productOptionData ]
62
66
)
63
67
: null ;
@@ -69,6 +73,8 @@ public function testPrepareOptionValueForRequest(
69
73
}
70
74
71
75
/**
76
+ * Data provider for testPrepareOptionValueForRequest
77
+ *
72
78
* @return array
73
79
*/
74
80
public function prepareOptionValueForRequestDataProvider ()
@@ -109,4 +115,76 @@ public function prepareOptionValueForRequestDataProvider()
109
115
],
110
116
];
111
117
}
118
+
119
+ /**
120
+ * Check date in prepareForCart method with javascript calendar and Asia/Singapore timezone
121
+ *
122
+ * @dataProvider testPrepareForCartDataProvider
123
+ * @param array $dateData
124
+ * @param array $productOptionData
125
+ * @param array $requestData
126
+ * @param string $expectedOptionValueForRequest
127
+ * @magentoConfigFixture current_store catalog/custom_options/use_calendar 1
128
+ * @magentoConfigFixture current_store general/locale/timezone Asia/Singapore
129
+ */
130
+ public function testPrepareForCart (
131
+ array $ dateData ,
132
+ array $ productOptionData ,
133
+ array $ requestData ,
134
+ string $ expectedOptionValueForRequest
135
+ ) {
136
+ $ this ->model ->setData ($ dateData );
137
+ /** @var Option|null $productOption */
138
+ $ productOption = $ productOptionData
139
+ ? $ this ->objectManager ->create (
140
+ Option::class,
141
+ ['data ' => $ productOptionData ]
142
+ )
143
+ : null ;
144
+ $ this ->model ->setOption ($ productOption );
145
+ $ request = new DataObject ();
146
+ $ request ->setData ($ requestData );
147
+ $ this ->model ->setRequest ($ request );
148
+ $ actualOptionValueForRequest = $ this ->model ->prepareForCart ();
149
+ $ this ->assertSame ($ expectedOptionValueForRequest , $ actualOptionValueForRequest );
150
+ }
151
+
152
+ /**
153
+ * Data provider for testPrepareForCart
154
+ *
155
+ * @return array
156
+ */
157
+ public function testPrepareForCartDataProvider ()
158
+ {
159
+ return [
160
+ [
161
+ // $dateData
162
+ [
163
+ 'is_valid ' => true ,
164
+ 'user_value ' => [
165
+ 'date ' => '09/30/2019 ' ,
166
+ 'year ' => 0 ,
167
+ 'month ' => 0 ,
168
+ 'day ' => 0 ,
169
+ 'hour ' => 0 ,
170
+ 'minute ' => 0 ,
171
+ 'day_part ' => '' ,
172
+ 'date_internal ' => ''
173
+ ]
174
+ ],
175
+ // $productOptionData
176
+ ['id ' => '11 ' , 'value ' => '{"qty":12} ' , 'type ' => 'date ' ],
177
+ // $requestData
178
+ [
179
+ 'options ' => [
180
+ [
181
+ 'date ' => '09/30/2019 '
182
+ ]
183
+ ]
184
+ ],
185
+ // $expectedOptionValueForRequest
186
+ '2019-09-30 00:00:00 '
187
+ ]
188
+ ];
189
+ }
112
190
}
0 commit comments