77
88namespace Magento \Sales \Plugin \Model \ResourceModel \Order ;
99
10- use DateTime ;
1110use DateTimeInterface ;
11+ use Magento \Framework \Exception \LocalizedException ;
1212use Magento \Framework \ObjectManagerInterface ;
1313use Magento \Framework \Stdlib \DateTime \TimezoneInterface ;
1414use Magento \Framework \View \Element \UiComponent \DataProvider \SearchResult ;
15- use Magento \Sales \Model \ResourceModel \Order \Creditmemo ;
16- use Magento \Sales \Model \ResourceModel \Order \Grid \Collection as OrderCollection ;
17- use Magento \Sales \Model \ResourceModel \Order \Invoice ;
18- use Magento \Sales \Model \ResourceModel \Order \Shipment ;
1915use Magento \TestFramework \Helper \Bootstrap ;
2016use PHPUnit \Framework \TestCase ;
2117
@@ -67,18 +63,27 @@ protected function setUp(): void
6763 /**
6864 * Verifies that filter condition date is being converted to config timezone before select sql query
6965 *
70- * @dataProvider getCollectionFiltersDataProvider
66+ * @dataProvider \Magento\Sales\Plugin\Model\ResourceModel\Order\DataProvider\OrdersCollectionFilters::getCollectionFiltersDataProvider
67+ *
7168 * @param $mainTable
7269 * @param $resourceModel
7370 * @param $field
74- * @throws \Magento\Framework\Exception\LocalizedException
71+ * @param $fieldValue
72+ * @throws LocalizedException
7573 */
76- public function testAroundAddFieldToFilter ($ mainTable , $ resourceModel , $ field ): void
74+ public function testAroundAddFieldToFilter ($ mainTable , $ resourceModel , $ field, $ fieldValue ): void
7775 {
78- $ filterDate = "2021-12-13 00:00:00 " ;
76+ $ expectedSelect = "SELECT `main_table`.* FROM ` {$ mainTable }` AS `main_table` " ;
77+
78+ $ convertedDate = $ fieldValue instanceof DateTimeInterface
79+ ? $ fieldValue ->format ('Y-m-d H:i:s ' ) : $ this ->timeZone ->convertConfigTimeToUtc ($ fieldValue );
80+
7981 if ($ mainTable == 'sales_order_grid ' ) {
80- $ filterDate = new DateTime ($ filterDate );
81- $ filterDate ->setTimezone (new \DateTimeZone ('UTC ' ));
82+ $ condition = ['from ' => $ fieldValue , 'locale ' => "en_US " , 'datetime ' => true ];
83+ $ selectCondition = "WHERE (` {$ field }` >= ' {$ convertedDate }') " ;
84+ } else {
85+ $ condition = ['qteq ' => $ fieldValue ];
86+ $ selectCondition = "WHERE (((` {$ field }` = ' {$ convertedDate }'))) " ;
8287 }
8388
8489 $ this ->searchResult = $ this ->objectManager ->create (
@@ -92,59 +97,9 @@ public function testAroundAddFieldToFilter($mainTable, $resourceModel, $field):
9297 $ this ->searchResult ,
9398 $ this ->proceed ,
9499 $ field ,
95- [ ' qteq ' => $ filterDate ]
100+ $ condition
96101 );
97102
98- $ convertedDate = $ filterDate instanceof DateTimeInterface
99- ? $ filterDate ->format ('Y-m-d H:i:s ' ) : $ this ->timeZone ->convertConfigTimeToUtc ($ filterDate );
100-
101- $ expectedSelect = "SELECT `main_table`.* FROM ` {$ mainTable }` AS `main_table` " .
102- "WHERE (((` {$ field }` = ' {$ convertedDate }'))) " ;
103-
104- $ this ->assertEquals ($ expectedSelect , $ result ->getSelectSql (true ));
105- }
106-
107- /**
108- * @return array
109- */
110- public function getCollectionFiltersDataProvider (): array
111- {
112- return [
113- 'invoice_grid_collection_for_created_at ' => [
114- 'mainTable ' => 'sales_invoice_grid ' ,
115- 'resourceModel ' => Invoice::class,
116- 'field ' => 'created_at ' ,
117- ],
118- 'invoice_grid_collection_for_order_created_at ' => [
119- 'mainTable ' => 'sales_invoice_grid ' ,
120- 'resourceModel ' => Invoice::class,
121- 'field ' => 'order_created_at ' ,
122- ],
123- 'shipment_grid_collection_for_created_at ' => [
124- 'mainTable ' => 'sales_shipment_grid ' ,
125- 'resourceModel ' => Shipment::class,
126- 'field ' => 'created_at ' ,
127- ],
128- 'shipment_grid_collection_for_order_created_at ' => [
129- 'mainTable ' => 'sales_shipment_grid ' ,
130- 'resourceModel ' => Shipment::class,
131- 'field ' => 'order_created_at ' ,
132- ],
133- 'creditmemo_grid_collection_for_created_at ' => [
134- 'mainTable ' => 'sales_creditmemo_grid ' ,
135- 'resourceModel ' => Creditmemo::class,
136- 'field ' => 'created_at ' ,
137- ],
138- 'creditmemo_grid_collection_for_order_created_at ' => [
139- 'mainTable ' => 'sales_creditmemo_grid ' ,
140- 'resourceModel ' => Creditmemo::class,
141- 'field ' => 'order_created_at ' ,
142- ],
143- 'customer_orders_grid_collection_for_order_created_at ' => [
144- 'mainTable ' => 'sales_order_grid ' ,
145- 'resourceModel ' => OrderCollection::class,
146- 'field ' => 'created_at ' ,
147- ]
148- ];
103+ $ this ->assertEquals ($ expectedSelect . $ selectCondition , $ result ->getSelectSql (true ));
149104 }
150105}
0 commit comments