diff --git a/CHANGELOG.md b/CHANGELOG.md index a1d98332be0d5c39a997f7ce570933320e08c8e4..741aa9d1d7ce46126f5ca3c664d13540b84ec30c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,59 @@ +0.74.0-beta15 +============= +* Framework Improvements: + * Introduced Drag&Drop Columns functionality in scope of Enhanced Data Grids on CMS + * Improved Column Actions functionality in scope of Enhanced Data Grids on CMS + * Adapted Payment\Gateway framework to client requirements + * Removed 'field_expr' option from filters + * Added product details renderer list support on Catalog category page + * Security: Clickjacking solution - introduced X-Frame-Options + * Gift message was moved to shopping cart + * Improved simple products export + * Separated import of advanced prices + * Changed 'updated_at' filter for products export + * Added the link with sample product import file + * Cleared and improved the messages and names in different modules + * Added mbstring extension as a requirement +* Tests + * Increased test coverage for the CatalogInventory, Email and Newsletter modules + * Added wait to form element before filling a value in functional tests + * Increased test coverage of Reports module + * Functional tests were fixed and maintained +* Fixed Bugs: + * Fixed loading of images from database media storage with separate connection + * Eliminated duplication of ComposerInformation class in Magento Framework and Setup Application + * Fixed an error message format inconsistency in theme uninstall command + * Fixed an issue where incorrect action name checks led to customer info leak + * Fixed an issue where /magento_version exposed too detailed version information + * Fixed an issue where generate data failed when table prefix exceeded length of 5 + * Fixed an issue where product options were displayed not styled on "Edit Product from Wishlist" Frontend page + * Fixed an issue where payment information was displayed broken on "Order Management" Backend page forms + * Fixed an issue where admin panel pop-ups contained lots of empty space + * Fixed an issue where Customer account form was displayed broken + * Fixed an issue where all text fields were invisible in Backend "Add New Customer" page + * Fixed XSS issues in Magento - wishlist sending + * Fixed an issue where it was unable to specify all values of "Multiple Select" Product Custom Option to purchase + * Fixed an issue where setting a permission for 'ALL Groups' produced an error if other permissions existed + * Fixed an issue where stock was not updated when Stock indexer was in Update on Schedule mode + * Fixed an issue where it was not possible to update stock items of product using API service + * Fixed an issue where Customer review changes in backend were not reflected in frontend until cache was cleared + * Fixed an issue where cache was not updated when changing stock status using mass action + * Fixed an issue where Stock Items API service to return low stock information did not return correct results + * Fixed an issue where found records in global search in Backend could not be selected via keyboard + * Fixed an issue where Category menu items went out of screen when page side was reached + * Fixed an issue where subcategories in menu were shown instantly when user moved mouse quickly + * Fixed an issue where popup header was our of window range while creating group product + * Fixed an issue where region field was absent in customer address form on backend for "United Kingdom" country + * Fixed an ability to edit the Order from Admin panel + * Fixed an issue where email could not be retrieved from \Magento\Quote\Api\Data\AddressInterface after adding an address on OnePageCheckout + * Fixed an issue where Products were not displayed correctly across all storeviews of the catalog +* Github Issues: + * [#1378](https://github.com/magento/magento2/issues/1319) -- jquery-cookie.js is not published by deploy tool in production mode + * [#1314](https://github.com/magento/magento2/pull/1314)-- Fixed a bug where type attribute for tag button was missing + * [#1354](https://github.com/magento/magento2/pull/1354) -- Add gitter.im badge to ReadMe. + * [#1378](https://github.com/magento/magento2/pull/1378) -- Fix incorrect js filename + + 0.74.0-beta14 ============= * Framework improvements: diff --git a/README.md b/README.md index 286d550ef93cad1b69a526ecebed4ee3e5d17cb3..eda495863d05bee57e91dd9818a1a50ff82c7cd7 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ [](https://travis-ci.org/magento/magento2) +[](https://gitter.im/magento/magento2?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) <h2>Welcome</h2> Welcome to Magento 2 installation! We're glad you chose to install Magento 2, a cutting edge, feature-rich eCommerce solution that gets results. diff --git a/app/code/Magento/AdminNotification/composer.json b/app/code/Magento/AdminNotification/composer.json index 5ae1d3e4e2009835a572a2c9081ee74619532b51..536437a77046f9446799fcd13337f0927cf059b9 100644 --- a/app/code/Magento/AdminNotification/composer.json +++ b/app/code/Magento/AdminNotification/composer.json @@ -3,15 +3,15 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/module-media-storage": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/module-media-storage": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "lib-libxml": "*", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/AdvancedPricingImportExport/composer.json b/app/code/Magento/AdvancedPricingImportExport/composer.json index 3e7abff2e19eca58d7d762c6f90932188af3aef6..3ad468649799034d1276c2dd8c87a9c9542ff9f3 100644 --- a/app/code/Magento/AdvancedPricingImportExport/composer.json +++ b/app/code/Magento/AdvancedPricingImportExport/composer.json @@ -3,16 +3,16 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-catalog": "0.74.0-beta14", - "magento/module-import-export": "0.74.0-beta14", - "magento/module-catalog-import-export": "0.74.0-beta14", - "magento/module-customer": "0.74.0-beta14", - "magento/module-store": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-catalog": "0.74.0-beta15", + "magento/module-import-export": "0.74.0-beta15", + "magento/module-catalog-import-export": "0.74.0-beta15", + "magento/module-customer": "0.74.0-beta15", + "magento/module-store": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Authorization/composer.json b/app/code/Magento/Authorization/composer.json index 9ce77947a0b214ceb0d0dd04c9e35f6e6c602ca2..34cf062da744cabb74763d6dd4e1cb4f51b0b31c 100644 --- a/app/code/Magento/Authorization/composer.json +++ b/app/code/Magento/Authorization/composer.json @@ -3,12 +3,12 @@ "description": "Authorization module provides access to Magento ACL functionality.", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-backend": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-backend": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Backend/composer.json b/app/code/Magento/Backend/composer.json index b2b20216cf652a430d51f44492332e150011cd7d..736b6f9d688812f7cf6c76641c7048cb22aef09d 100644 --- a/app/code/Magento/Backend/composer.json +++ b/app/code/Magento/Backend/composer.json @@ -3,27 +3,27 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-directory": "0.74.0-beta14", - "magento/module-developer": "0.74.0-beta14", - "magento/module-eav": "0.74.0-beta14", - "magento/module-cron": "0.74.0-beta14", - "magento/module-theme": "0.74.0-beta14", - "magento/module-reports": "0.74.0-beta14", - "magento/module-sales": "0.74.0-beta14", - "magento/module-quote": "0.74.0-beta14", - "magento/module-catalog": "0.74.0-beta14", - "magento/module-user": "0.74.0-beta14", - "magento/module-backup": "0.74.0-beta14", - "magento/module-customer": "0.74.0-beta14", - "magento/module-translation": "0.74.0-beta14", - "magento/module-require-js": "0.74.0-beta14", - "magento/module-config": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-directory": "0.74.0-beta15", + "magento/module-developer": "0.74.0-beta15", + "magento/module-eav": "0.74.0-beta15", + "magento/module-cron": "0.74.0-beta15", + "magento/module-theme": "0.74.0-beta15", + "magento/module-reports": "0.74.0-beta15", + "magento/module-sales": "0.74.0-beta15", + "magento/module-quote": "0.74.0-beta15", + "magento/module-catalog": "0.74.0-beta15", + "magento/module-user": "0.74.0-beta15", + "magento/module-backup": "0.74.0-beta15", + "magento/module-customer": "0.74.0-beta15", + "magento/module-translation": "0.74.0-beta15", + "magento/module-require-js": "0.74.0-beta15", + "magento/module-config": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Backup/composer.json b/app/code/Magento/Backup/composer.json index 74b0a704e1de9374392c01a64e69b075fc416fde..22b5fa7ad13e30501fefd432dbd6abd7092b861a 100644 --- a/app/code/Magento/Backup/composer.json +++ b/app/code/Magento/Backup/composer.json @@ -3,14 +3,14 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/module-cron": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/module-cron": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Bundle/composer.json b/app/code/Magento/Bundle/composer.json index f3017a3a8dda032fb32a79cff12622d3cb601bc2..278203616826ca7b643d26a4b18b30befb0b8f2a 100644 --- a/app/code/Magento/Bundle/composer.json +++ b/app/code/Magento/Bundle/composer.json @@ -3,28 +3,28 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-catalog": "0.74.0-beta14", - "magento/module-tax": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/module-sales": "0.74.0-beta14", - "magento/module-checkout": "0.74.0-beta14", - "magento/module-catalog-inventory": "0.74.0-beta14", - "magento/module-customer": "0.74.0-beta14", - "magento/module-catalog-rule": "0.74.0-beta14", - "magento/module-eav": "0.74.0-beta14", - "magento/module-config": "0.74.0-beta14", - "magento/module-gift-message": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", - "magento/module-quote": "0.74.0-beta14", - "magento/module-media-storage": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-catalog": "0.74.0-beta15", + "magento/module-tax": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/module-sales": "0.74.0-beta15", + "magento/module-checkout": "0.74.0-beta15", + "magento/module-catalog-inventory": "0.74.0-beta15", + "magento/module-customer": "0.74.0-beta15", + "magento/module-catalog-rule": "0.74.0-beta15", + "magento/module-eav": "0.74.0-beta15", + "magento/module-config": "0.74.0-beta15", + "magento/module-gift-message": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", + "magento/module-quote": "0.74.0-beta15", + "magento/module-media-storage": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "suggest": { - "magento/module-webapi": "0.74.0-beta14" + "magento/module-webapi": "0.74.0-beta15" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/BundleImportExport/composer.json b/app/code/Magento/BundleImportExport/composer.json index 78b23b0ff876b31caff7359c35e625ee986e6100..73005bc01aa19c301e06089b742c2fc94838136d 100755 --- a/app/code/Magento/BundleImportExport/composer.json +++ b/app/code/Magento/BundleImportExport/composer.json @@ -3,16 +3,16 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-catalog": "0.74.0-beta14", - "magento/module-import-export": "0.74.0-beta14", - "magento/module-catalog-import-export": "0.74.0-beta14", - "magento/module-bundle": "0.74.0-beta14", - "magento/module-eav": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-catalog": "0.74.0-beta15", + "magento/module-import-export": "0.74.0-beta15", + "magento/module-catalog-import-export": "0.74.0-beta15", + "magento/module-bundle": "0.74.0-beta15", + "magento/module-eav": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/CacheInvalidate/composer.json b/app/code/Magento/CacheInvalidate/composer.json index 5f5a8b2ce39bfa5fff3162892d333dcbd8c1659f..f030ee269a32cfac2a479c63c5f4e16250e10b7f 100644 --- a/app/code/Magento/CacheInvalidate/composer.json +++ b/app/code/Magento/CacheInvalidate/composer.json @@ -3,12 +3,12 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-page-cache": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-page-cache": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Captcha/composer.json b/app/code/Magento/Captcha/composer.json index d3452e6042ef3c040a0d644ff3ae2fa4009f9c02..987ef790dfd28fc18a1e0a87488a86213f350154 100644 --- a/app/code/Magento/Captcha/composer.json +++ b/app/code/Magento/Captcha/composer.json @@ -3,15 +3,16 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-customer": "0.74.0-beta14", - "magento/module-checkout": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-customer": "0.74.0-beta15", + "magento/module-checkout": "0.74.0-beta15", + "magento/module-quote": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Catalog/composer.json b/app/code/Magento/Catalog/composer.json index 7c1d49431e273833b821bae24c446d3364c6b458..5664aebe69dc555c7cbd17907e10817cee4e00d7 100644 --- a/app/code/Magento/Catalog/composer.json +++ b/app/code/Magento/Catalog/composer.json @@ -3,37 +3,37 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-eav": "0.74.0-beta14", - "magento/module-cms": "0.74.0-beta14", - "magento/module-indexer": "0.74.0-beta14", - "magento/module-customer": "0.74.0-beta14", - "magento/module-theme": "0.74.0-beta14", - "magento/module-checkout": "0.74.0-beta14", - "magento/module-log": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/module-widget": "0.74.0-beta14", - "magento/module-wishlist": "0.74.0-beta14", - "magento/module-tax": "0.74.0-beta14", - "magento/module-msrp": "0.74.0-beta14", - "magento/module-catalog-inventory": "0.74.0-beta14", - "magento/module-directory": "0.74.0-beta14", - "magento/module-catalog-rule": "0.74.0-beta14", - "magento/module-product-alert": "0.74.0-beta14", - "magento/module-url-rewrite": "0.74.0-beta14", - "magento/module-catalog-url-rewrite": "0.74.0-beta14", - "magento/module-page-cache": "0.74.0-beta14", - "magento/module-quote": "0.74.0-beta14", - "magento/module-config": "0.74.0-beta14", - "magento/module-media-storage": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-eav": "0.74.0-beta15", + "magento/module-cms": "0.74.0-beta15", + "magento/module-indexer": "0.74.0-beta15", + "magento/module-customer": "0.74.0-beta15", + "magento/module-theme": "0.74.0-beta15", + "magento/module-checkout": "0.74.0-beta15", + "magento/module-log": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/module-widget": "0.74.0-beta15", + "magento/module-wishlist": "0.74.0-beta15", + "magento/module-tax": "0.74.0-beta15", + "magento/module-msrp": "0.74.0-beta15", + "magento/module-catalog-inventory": "0.74.0-beta15", + "magento/module-directory": "0.74.0-beta15", + "magento/module-catalog-rule": "0.74.0-beta15", + "magento/module-product-alert": "0.74.0-beta15", + "magento/module-url-rewrite": "0.74.0-beta15", + "magento/module-catalog-url-rewrite": "0.74.0-beta15", + "magento/module-page-cache": "0.74.0-beta15", + "magento/module-quote": "0.74.0-beta15", + "magento/module-config": "0.74.0-beta15", + "magento/module-media-storage": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "suggest": { - "magento/module-cookie": "0.74.0-beta14" + "magento/module-cookie": "0.74.0-beta15" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/CatalogImportExport/composer.json b/app/code/Magento/CatalogImportExport/composer.json index ca381cabc50404db10ec64a2c7e635b69124c128..9f81689a2e32e10ea824acc247afdea084a2fe08 100644 --- a/app/code/Magento/CatalogImportExport/composer.json +++ b/app/code/Magento/CatalogImportExport/composer.json @@ -3,21 +3,21 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-catalog": "0.74.0-beta14", - "magento/module-eav": "0.74.0-beta14", - "magento/module-import-export": "0.74.0-beta14", - "magento/module-indexer": "0.74.0-beta14", - "magento/module-store": "0.74.0-beta14", - "magento/module-tax": "0.74.0-beta14", - "magento/module-catalog-inventory": "0.74.0-beta14", - "magento/module-media-storage": "0.74.0-beta14", - "magento/module-customer": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-catalog": "0.74.0-beta15", + "magento/module-eav": "0.74.0-beta15", + "magento/module-import-export": "0.74.0-beta15", + "magento/module-indexer": "0.74.0-beta15", + "magento/module-store": "0.74.0-beta15", + "magento/module-tax": "0.74.0-beta15", + "magento/module-catalog-inventory": "0.74.0-beta15", + "magento/module-media-storage": "0.74.0-beta15", + "magento/module-customer": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "ext-ctype": "*", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/CatalogInventory/composer.json b/app/code/Magento/CatalogInventory/composer.json index fa1c799fe739d3bcf87ca6f916bcde0962624808..81dd41658e1e795b679f2f9e284b553609660041 100644 --- a/app/code/Magento/CatalogInventory/composer.json +++ b/app/code/Magento/CatalogInventory/composer.json @@ -3,18 +3,18 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-config": "0.74.0-beta14", - "magento/module-store": "0.74.0-beta14", - "magento/module-catalog": "0.74.0-beta14", - "magento/module-customer": "0.74.0-beta14", - "magento/module-indexer": "0.74.0-beta14", - "magento/module-eav": "0.74.0-beta14", - "magento/module-quote": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-config": "0.74.0-beta15", + "magento/module-store": "0.74.0-beta15", + "magento/module-catalog": "0.74.0-beta15", + "magento/module-customer": "0.74.0-beta15", + "magento/module-indexer": "0.74.0-beta15", + "magento/module-eav": "0.74.0-beta15", + "magento/module-quote": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/CatalogRule/composer.json b/app/code/Magento/CatalogRule/composer.json index 539ca4af208560e40d7f890c9550308bde89485e..2769c69a24005ff315ce84cf5d2ee548c1fd5d1b 100644 --- a/app/code/Magento/CatalogRule/composer.json +++ b/app/code/Magento/CatalogRule/composer.json @@ -3,19 +3,19 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-rule": "0.74.0-beta14", - "magento/module-catalog": "0.74.0-beta14", - "magento/module-customer": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/module-eav": "0.74.0-beta14", - "magento/module-indexer": "0.74.0-beta14", - "magento/module-import-export": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-rule": "0.74.0-beta15", + "magento/module-catalog": "0.74.0-beta15", + "magento/module-customer": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/module-eav": "0.74.0-beta15", + "magento/module-indexer": "0.74.0-beta15", + "magento/module-import-export": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/CatalogSearch/composer.json b/app/code/Magento/CatalogSearch/composer.json index 1d8292288c1c06458eea32cb0b3985d82f3147a4..6c9cce17601c714d54f92b6a2430025f79395c56 100644 --- a/app/code/Magento/CatalogSearch/composer.json +++ b/app/code/Magento/CatalogSearch/composer.json @@ -3,20 +3,20 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-catalog": "0.74.0-beta14", - "magento/module-search": "0.74.0-beta14", - "magento/module-customer": "0.74.0-beta14", - "magento/module-directory": "0.74.0-beta14", - "magento/module-indexer": "0.74.0-beta14", - "magento/module-eav": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/module-theme": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-catalog": "0.74.0-beta15", + "magento/module-search": "0.74.0-beta15", + "magento/module-customer": "0.74.0-beta15", + "magento/module-directory": "0.74.0-beta15", + "magento/module-indexer": "0.74.0-beta15", + "magento/module-eav": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/module-theme": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/CatalogUrlRewrite/composer.json b/app/code/Magento/CatalogUrlRewrite/composer.json index 764fb5ed8db3fc88023dba3f275a543386e34315..290be0bf17556f32deaf2a8dd1af28b4883ace8a 100644 --- a/app/code/Magento/CatalogUrlRewrite/composer.json +++ b/app/code/Magento/CatalogUrlRewrite/composer.json @@ -3,18 +3,18 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-backend": "0.74.0-beta14", - "magento/module-catalog": "0.74.0-beta14", - "magento/module-catalog-import-export": "0.74.0-beta14", - "magento/module-eav": "0.74.0-beta14", - "magento/module-import-export": "0.74.0-beta14", - "magento/module-store": "0.74.0-beta14", - "magento/module-url-rewrite": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-backend": "0.74.0-beta15", + "magento/module-catalog": "0.74.0-beta15", + "magento/module-catalog-import-export": "0.74.0-beta15", + "magento/module-eav": "0.74.0-beta15", + "magento/module-import-export": "0.74.0-beta15", + "magento/module-store": "0.74.0-beta15", + "magento/module-url-rewrite": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/CatalogWidget/composer.json b/app/code/Magento/CatalogWidget/composer.json index a1708c5aa5d6b1c14848114666f7bb6e520eaa00..3f1bfb33e3f0ab88c266ebdb80202429257163d5 100644 --- a/app/code/Magento/CatalogWidget/composer.json +++ b/app/code/Magento/CatalogWidget/composer.json @@ -3,19 +3,19 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-catalog": "0.74.0-beta14", - "magento/module-widget": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/module-rule": "0.74.0-beta14", - "magento/module-eav": "0.74.0-beta14", - "magento/module-customer": "0.74.0-beta14", - "magento/module-store": "0.74.0-beta14", - "magento/module-wishlist": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-catalog": "0.74.0-beta15", + "magento/module-widget": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/module-rule": "0.74.0-beta15", + "magento/module-eav": "0.74.0-beta15", + "magento/module-customer": "0.74.0-beta15", + "magento/module-store": "0.74.0-beta15", + "magento/module-wishlist": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Checkout/composer.json b/app/code/Magento/Checkout/composer.json index 572909061f99a33ba2f588192618604966ddcdf2..f4d84dd1c413eecdd11e09907ff08e58476fbb56 100644 --- a/app/code/Magento/Checkout/composer.json +++ b/app/code/Magento/Checkout/composer.json @@ -3,31 +3,31 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-sales": "0.74.0-beta14", - "magento/module-catalog-inventory": "0.74.0-beta14", - "magento/module-config": "0.74.0-beta14", - "magento/module-customer": "0.74.0-beta14", - "magento/module-catalog": "0.74.0-beta14", - "magento/module-payment": "0.74.0-beta14", - "magento/module-shipping": "0.74.0-beta14", - "magento/module-tax": "0.74.0-beta14", - "magento/module-directory": "0.74.0-beta14", - "magento/module-eav": "0.74.0-beta14", - "magento/module-gift-message": "0.74.0-beta14", - "magento/module-page-cache": "0.74.0-beta14", - "magento/module-theme": "0.74.0-beta14", - "magento/module-msrp": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", - "magento/module-ui": "0.74.0-beta14", - "magento/module-quote": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-sales": "0.74.0-beta15", + "magento/module-catalog-inventory": "0.74.0-beta15", + "magento/module-config": "0.74.0-beta15", + "magento/module-customer": "0.74.0-beta15", + "magento/module-catalog": "0.74.0-beta15", + "magento/module-payment": "0.74.0-beta15", + "magento/module-shipping": "0.74.0-beta15", + "magento/module-tax": "0.74.0-beta15", + "magento/module-directory": "0.74.0-beta15", + "magento/module-eav": "0.74.0-beta15", + "magento/module-gift-message": "0.74.0-beta15", + "magento/module-page-cache": "0.74.0-beta15", + "magento/module-theme": "0.74.0-beta15", + "magento/module-msrp": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", + "magento/module-ui": "0.74.0-beta15", + "magento/module-quote": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "suggest": { - "magento/module-cookie": "0.74.0-beta14" + "magento/module-cookie": "0.74.0-beta15" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/CheckoutAgreements/composer.json b/app/code/Magento/CheckoutAgreements/composer.json index e8c5101da3db5419aec1bdba672036cfcbb060ae..13f10a6560e989f70548019e6eb5b043740c431b 100644 --- a/app/code/Magento/CheckoutAgreements/composer.json +++ b/app/code/Magento/CheckoutAgreements/composer.json @@ -3,14 +3,15 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-checkout": "0.74.0-beta14", - "magento/module-store": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-checkout": "0.74.0-beta15", + "magento/module-store": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/module-ui": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Cms/composer.json b/app/code/Magento/Cms/composer.json index 74159635377d7d0ac47f23cd8474b47b4415610b..e635bc36075189903b844d5f4f7e6f5e1e695d41 100644 --- a/app/code/Magento/Cms/composer.json +++ b/app/code/Magento/Cms/composer.json @@ -3,20 +3,20 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-theme": "0.74.0-beta14", - "magento/module-widget": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/module-catalog": "0.74.0-beta14", - "magento/module-email": "0.74.0-beta14", - "magento/module-ui": "0.74.0-beta14", - "magento/module-variable": "0.74.0-beta14", - "magento/module-media-storage": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-theme": "0.74.0-beta15", + "magento/module-widget": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/module-catalog": "0.74.0-beta15", + "magento/module-email": "0.74.0-beta15", + "magento/module-ui": "0.74.0-beta15", + "magento/module-variable": "0.74.0-beta15", + "magento/module-media-storage": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/CmsUrlRewrite/composer.json b/app/code/Magento/CmsUrlRewrite/composer.json index c5d23577dd32064af54e69ea0c18bf918232f32a..318b250d7650c989f67aed2704cd3ad9ee82be14 100644 --- a/app/code/Magento/CmsUrlRewrite/composer.json +++ b/app/code/Magento/CmsUrlRewrite/composer.json @@ -3,14 +3,14 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-cms": "0.74.0-beta14", - "magento/module-url-rewrite": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-cms": "0.74.0-beta15", + "magento/module-url-rewrite": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Config/Block/System/Config/Form/Fieldset/Factory.php b/app/code/Magento/Config/Block/System/Config/Form/Fieldset/Factory.php index 5cb02fb70512a02174cb60e6145c3095d0ba85af..623342951516a038acd8ae5beeb51081d53a491f 100644 --- a/app/code/Magento/Config/Block/System/Config/Form/Fieldset/Factory.php +++ b/app/code/Magento/Config/Block/System/Config/Form/Fieldset/Factory.php @@ -7,7 +7,7 @@ namespace Magento\Config\Block\System\Config\Form\Fieldset; /** - * Magento\Config\Block\System\Config\Form\Fieldset object factory + * Magento\Config\Block\System\Config\Form\Fieldset Class Factory * * @codeCoverageIgnore */ diff --git a/app/code/Magento/Config/Test/Unit/Block/System/Config/DwstreeTest.php b/app/code/Magento/Config/Test/Unit/Block/System/Config/DwstreeTest.php new file mode 100644 index 0000000000000000000000000000000000000000..3f8b7596fd4a541eebe52c9f8e30168dc48b35ee --- /dev/null +++ b/app/code/Magento/Config/Test/Unit/Block/System/Config/DwstreeTest.php @@ -0,0 +1,173 @@ +<?php +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +namespace Magento\Config\Test\Unit\Block\System\Config; + +class DwstreeTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var \Magento\Config\Block\System\Config\Dwstree + */ + protected $object; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $requestMock; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $storeManagerMock; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $websiteMock; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $storeMock; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $context; + + protected function setUp() + { + $this->requestMock = $this->getMockBuilder('Magento\Framework\App\RequestInterface') + ->disableOriginalConstructor() + ->getMock(); + + $this->storeManagerMock = $this->getMockBuilder('Magento\Store\Model\StoreManagerInterface') + ->disableOriginalConstructor() + ->getMock(); + + $this->websiteMock = $this->getMockBuilder('Magento\Store\Model\Website') + ->disableOriginalConstructor() + ->getMock(); + + $this->storeMock = $this->getMockBuilder('Magento\Store\Model\Store') + ->disableOriginalConstructor() + ->getMock(); + + $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this); + + $this->context = $objectManager->getObject( + 'Magento\Backend\Block\Template\Context', + [ + 'request' => $this->requestMock, + 'storeManager' => $this->storeManagerMock, + ] + ); + + $this->object = $objectManager->getObject( + 'Magento\Config\Block\System\Config\Dwstree', + ['context' => $this->context] + ); + } + + /** + * @param $section + * @param $website + * @param $store + * @dataProvider initTabsDataProvider + */ + public function testInitTabs($section, $website, $store) + { + $this->requestMock->expects($this->any()) + ->method('getParam') + ->will( + $this->returnValueMap( + [ + ['section', $section], + ['website', $website['expected']['code']], + ['store', $store['expected']['code']], + ] + ) + ); + $this->storeManagerMock->expects($this->once()) + ->method('getWebsites') + ->willReturn([$this->websiteMock]); + $this->websiteMock->expects($this->any()) + ->method('getCode') + ->willReturn($website['actual']['code']); + $this->websiteMock->expects($this->any()) + ->method('getName') + ->willReturn($website['expected']['name']); + $this->websiteMock->expects($this->once()) + ->method('getStores') + ->willReturn([$this->storeMock]); + $this->storeMock->expects($this->any()) + ->method('getCode') + ->willReturn($store['actual']['code']); + $this->storeMock->expects($this->any()) + ->method('getName') + ->willReturn($store['actual']['name']); + + $this->assertEquals($this->object, $this->object->initTabs()); + + $this->assertEquals( + [ + 'default', + 'website_' . $website['actual']['code'], + 'store_' . $store['actual']['code'] + ], + $this->object->getTabsIds() + ); + } + + public function initTabsDataProvider() + { + return [ + 'matchAll' => [ + 'scope' => 'Test Scope', + 'website' => [ + 'expected' => ['name' => 'Test Website Name', 'code' => 'Test Website Code'], + 'actual' => ['name' => 'Test Website Name', 'code' => 'Test Website Code'], + ], + 'store' => [ + 'expected' => ['name' => 'Test Store Name', 'code' => 'Test Store Code'], + 'actual' => ['name' => 'Test Store Name', 'code' => 'Test Store Code'], + ], + ], + 'matchStore' => [ + 'scope' => 'Test Scope', + 'website' => [ + 'expected' => ['name' => 'Test Website Name', 'code' => 'Test Website Code'], + 'actual' => ['name' => false, 'code' => false], + ], + 'store' => [ + 'expected' => ['name' => 'Test Store Name', 'code' => 'Test Store Code'], + 'actual' => ['name' => 'Test Store Name', 'code' => 'Test Store Code'], + ], + ], + 'matchWebsite' => [ + 'scope' => 'Test Scope', + 'website' => [ + 'expected' => ['name' => 'Test Website Name', 'code' => 'Test Website Code'], + 'actual' => ['name' => 'Test Website Name', 'code' => 'Test Website Code'], + ], + 'store' => [ + 'expected' => ['name' => 'Test Store Name', 'code' => 'Test Store Code'], + 'actual' => ['name' => false, 'code' => false], + ], + ], + 'noMatch' => [ + 'scope' => 'Test Scope', + 'website' => [ + 'expected' => ['name' => 'Test Website Name', 'code' => 'Test Website Code'], + 'actual' => ['name' => false, 'code' => false], + ], + 'store' => [ + 'expected' => ['name' => 'Test Store Name', 'code' => 'Test Store Code'], + 'actual' => ['name' => false, 'code' => false], + ], + ], + ]; + } +} diff --git a/app/code/Magento/Config/Test/Unit/Block/System/Config/EditTest.php b/app/code/Magento/Config/Test/Unit/Block/System/Config/EditTest.php index 11ae924fe7ac294734c7ce67feffd2417a8b9bb4..323ec70a02c9d0daf2e43d290750ce3e64b8acd2 100644 --- a/app/code/Magento/Config/Test/Unit/Block/System/Config/EditTest.php +++ b/app/code/Magento/Config/Test/Unit/Block/System/Config/EditTest.php @@ -145,4 +145,43 @@ class EditTest extends \PHPUnit_Framework_TestCase $this->assertEquals($expectedUrl, $this->_object->getSaveUrl()); } + + public function testPrepareLayout() + { + $expectedHeader = 'Test Header'; + $expectedLabel = 'Test Label'; + $expectedBlock = 'Test Block'; + + $blockMock = $this->getMockBuilder('Magento\Framework\View\Element\Template') + ->disableOriginalConstructor() + ->getMock(); + + $this->_sectionMock->expects($this->once()) + ->method('getFrontendModel') + ->willReturn($expectedBlock); + $this->_sectionMock->expects($this->once()) + ->method('getLabel') + ->willReturn($expectedLabel); + $this->_sectionMock->expects($this->once()) + ->method('getHeaderCss') + ->willReturn($expectedHeader); + $this->_layoutMock->expects($this->once()) + ->method('getBlock') + ->with('page.actions.toolbar') + ->willReturn($blockMock); + $this->_layoutMock->expects($this->once()) + ->method('createBlock') + ->with($expectedBlock) + ->willReturn($blockMock); + $blockMock->expects($this->once()) + ->method('getNameInLayout') + ->willReturn($expectedBlock); + $this->_layoutMock->expects($this->once()) + ->method('setChild') + ->with($expectedBlock, $expectedBlock, 'form') + ->willReturn($this->_layoutMock); + + $this->_object->setNameInLayout($expectedBlock); + $this->_object->setLayout($this->_layoutMock); + } } diff --git a/app/code/Magento/Config/Test/Unit/Block/System/Config/Form/FieldTest.php b/app/code/Magento/Config/Test/Unit/Block/System/Config/Form/FieldTest.php index 2c7125e9748104e156d1e0ae6b383b65b5502700..4e3579dde64ca8791c2e9c2cbd8a2ad550b9e896 100644 --- a/app/code/Magento/Config/Test/Unit/Block/System/Config/Form/FieldTest.php +++ b/app/code/Magento/Config/Test/Unit/Block/System/Config/Form/FieldTest.php @@ -71,7 +71,8 @@ class FieldTest extends \PHPUnit_Framework_TestCase 'getInherit', 'getCanUseWebsiteValue', 'getCanUseDefaultValue', - 'setDisabled' + 'setDisabled', + 'getTooltip', ], [], '', @@ -140,6 +141,19 @@ class FieldTest extends \PHPUnit_Framework_TestCase $this->assertContains($expected, $actual); } + public function testRenderValueWithTooltipBlock() + { + $testTooltip = 'test_tooltip'; + $this->_elementMock->expects($this->any())->method('getTooltip')->will($this->returnValue($testTooltip)); + $expected = '<td class="value with-tooltip">' . + $this->_testData['elementHTML'] . + '<div class="tooltip"><span class="help"><span></span></span><div class="tooltip-content">' . + $testTooltip . + '</div></div></td>'; + $actual = $this->_object->render($this->_elementMock); + $this->assertContains($expected, $actual); + } + public function testRenderHint() { $testHint = 'test_hint'; diff --git a/app/code/Magento/Config/Test/Unit/Block/System/Config/Form/Fieldset/Modules/DisableOutputTest.php b/app/code/Magento/Config/Test/Unit/Block/System/Config/Form/Fieldset/Modules/DisableOutputTest.php index 6f5fa46f65a237ea26bf676537d91aac3c6d4ade..10fc39366922c25b5d2b295ad8ef1a30ba8efecf 100644 --- a/app/code/Magento/Config/Test/Unit/Block/System/Config/Form/Fieldset/Modules/DisableOutputTest.php +++ b/app/code/Magento/Config/Test/Unit/Block/System/Config/Form/Fieldset/Modules/DisableOutputTest.php @@ -7,102 +7,236 @@ namespace Magento\Config\Test\Unit\Block\System\Config\Form\Fieldset\Modules; class DisableOutputTest extends \PHPUnit_Framework_TestCase { - public function testRender() + /** + * @var \Magento\Config\Block\System\Config\Form\Fieldset\Modules\DisableOutput + */ + protected $object; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $elementMock; + + /** + * @var array + */ + protected $elementData = [ + 'htmlId' => 'test_field_id', + 'name' => 'test_name', + 'label' => 'test_label', + 'elementHTML' => 'test_html', + 'legend' => 'test_legend', + 'comment' => 'test_comment', + 'tooltip' => 'test_tooltip', + ]; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $layoutMock; + + /** + * @var \Magento\Framework\TestFramework\Unit\Helper\ObjectManager + */ + protected $objectManager; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $moduleListMock; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $authSessionMock; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $userMock; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $jsHelperMock; + + /** + * @return void + * @SuppressWarnings(PHPMD.ExcessiveMethodLength) + */ + protected function setUp() { - $testData = [ - 'htmlId' => 'test_field_id', - 'label' => 'test_label', - 'elementHTML' => 'test_html', - 'legend' => 'test_legend', - 'comment' => 'test_comment', - ]; - - $testModuleList = [ - 'testModuleWithConfigData', - 'testModuleNoConfigData', - ]; + $this->objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this); - $configData = ['advanced/modules_disable_output/testModuleWithConfigData' => 'testModuleData']; - - $fieldMock = $this->getMockBuilder('Magento\Config\Block\System\Config\Form\Field') + $rendererMock = $this->getMockBuilder('Magento\Config\Block\System\Config\Form\Field') ->disableOriginalConstructor() ->getMock(); - $layoutMock = $this->getMockBuilder('Magento\Framework\View\Layout') + $this->layoutMock = $this->getMockBuilder('Magento\Framework\View\Layout') ->disableOriginalConstructor() ->getMock(); - $layoutMock->expects($this->once()) + $this->layoutMock->expects($this->any()) ->method('getBlockSingleton') - ->with('Magento\Config\Block\System\Config\Form\Field') - ->willReturn($fieldMock); + ->willReturn($rendererMock); - $groupMock = $this->getMockBuilder('Magento\Config\Model\Config\Structure\Element\Group') + $this->jsHelperMock = $this->getMockBuilder('Magento\Framework\View\Helper\Js') ->disableOriginalConstructor() ->getMock(); - $groupMock->expects($this->once())->method('getFieldsetCss')->willReturn('test_fieldset_css'); - $elementMock = $this->getMockBuilder('Magento\Framework\Data\Form\Element\Text') + $this->moduleListMock = $this->getMockBuilder('Magento\Framework\Module\ModuleListInterface') + ->setMethods(['getNames', 'has', 'getAll', 'getOne']) ->disableOriginalConstructor() - ->setMethods( - [ - 'getHtmlId', 'getExpanded', 'getElements', 'getLegend', - 'getComment', 'addField', 'setRenderer', 'toHtml' - ] - )->getMock(); + ->getMock(); - $elementMock->expects($this->any()) - ->method('getHtmlId') - ->willReturn($testData['htmlId']); + $this->moduleListMock->expects($this->any()) + ->method('getNames') + ->will($this->returnValue(['Test Name'])); + $this->moduleListMock->expects($this->any()) + ->method('has') + ->will($this->returnValue(true)); + $this->moduleListMock->expects($this->any()) + ->method('getAll') + ->will($this->returnValue([])); + $this->moduleListMock->expects($this->any()) + ->method('getOne') + ->will($this->returnValue(null)); + + $this->authSessionMock = $this->getMockBuilder('Magento\Backend\Model\Auth\Session') + ->setMethods(['getUser']) + ->disableOriginalConstructor() + ->getMock(); + + $this->userMock = $this->getMockBuilder('Magento\User\Model\User') + ->setMethods(['getExtra']) + ->disableOriginalConstructor() + ->getMock(); - $elementMock->expects($this->any())->method('getExpanded')->willReturn(true); - $elementMock->expects($this->any())->method('getLegend')->willReturn($testData['legend']); - $elementMock->expects($this->any())->method('getComment')->willReturn($testData['comment']); - $elementMock->expects($this->any())->method('addField')->willReturn($elementMock); - $elementMock->expects($this->any())->method('setRenderer')->willReturn($elementMock); - $elementMock->expects($this->any())->method('toHtml')->willReturn('test_element_html'); + $this->authSessionMock->expects($this->any()) + ->method('getUser') + ->willReturn($this->userMock); - $moduleListMock = $this->getMockBuilder('Magento\Framework\Module\ModuleList') + $groupMock = $this->getMockBuilder('Magento\Config\Model\Config\Structure\Element\Group') + ->setMethods(['getFieldsetCss']) ->disableOriginalConstructor() ->getMock(); - $moduleListMock->expects($this->any())->method('getNames')->willReturn( - array_merge(['Magento_Backend'], $testModuleList) - ); + $groupMock->expects($this->any())->method('getFieldsetCss')->will($this->returnValue('test_fieldset_css')); $factory = $this->getMockBuilder('Magento\Framework\Data\Form\Element\Factory') ->disableOriginalConstructor() ->getMock(); - $factoryColl = $this->getMockBuilder('Magento\Framework\Data\Form\Element\CollectionFactory') ->disableOriginalConstructor() ->getMock(); + $formMock = $this->getMock('Magento\Framework\Data\Form\AbstractForm', [], [$factory, $factoryColl]); - $formMock = $this->getMockBuilder('Magento\Framework\Data\Form\AbstractForm') - ->disableOriginalConstructor() - ->setConstructorArgs([$factory, $factoryColl]) - ->getMock(); + $context = $this->objectManager->getObject( + 'Magento\Backend\Block\Context', + [ + 'layout' => $this->layoutMock, + ] + ); - $formMock->expects($this->any())->method('getConfigValue')->willReturn('testConfigData'); + $data = [ + 'context' => $context, + 'authSession' => $this->authSessionMock, + 'jsHelper' => $this->jsHelperMock, + 'moduleList' => $this->moduleListMock, + 'data' => [ + 'group' => $groupMock, + 'form' => $formMock, + ], + ]; - $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this); - $object = $objectManager->getObject( + $this->object = $this->objectManager->getObject( 'Magento\Config\Block\System\Config\Form\Fieldset\Modules\DisableOutput', - [ - 'moduleList' => $moduleListMock, - 'layout' => $layoutMock, - 'data' => [ - 'group' => $groupMock, - 'form' => $formMock, - 'config_data' => $configData, - ], - ] + $data ); - $collection = $objectManager->getObject('Magento\Framework\Data\Form\Element\Collection'); - $elementMock->expects($this->any())->method('getElements')->willReturn($collection); + $this->elementMock = $this->getMockBuilder('Magento\Framework\Data\Form\Element\Text') + ->setMethods( + [ + 'getId', 'getHtmlId', 'getName', 'getExpanded', 'getLegend', 'getComment', 'getTooltip', 'toHtml', + 'addField', 'setRenderer', 'getElements', 'getIsNested' + ] + ) + ->disableOriginalConstructor() + ->disableOriginalClone() + ->enableAutoload() + ->getMock(); - $actualHtml = $object->render($elementMock); - $this->assertContains('test_element_html', $actualHtml); - $this->assertContains('test_field_id', $actualHtml); - $this->assertContains('test_comment', $actualHtml); + $this->elementMock->expects($this->any()) + ->method('getId') + ->will($this->returnValue($this->elementData['htmlId'])); + $this->elementMock->expects($this->any()) + ->method('getHtmlId') + ->will($this->returnValue($this->elementData['htmlId'])); + $this->elementMock->expects($this->any()) + ->method('getName') + ->will($this->returnValue($this->elementData['name'])); + $this->elementMock->expects($this->any()) + ->method('getLegend') + ->will($this->returnValue($this->elementData['legend'])); + $this->elementMock->expects($this->any()) + ->method('getComment') + ->will($this->returnValue($this->elementData['comment'])); + $this->elementMock->expects($this->any()) + ->method('getTooltip') + ->will($this->returnValue($this->elementData['tooltip'])); + $this->elementMock->expects($this->any()) + ->method('toHtml') + ->will($this->returnValue($this->elementData['elementHTML'])); + $this->elementMock->expects($this->any()) + ->method('addField') + ->will($this->returnValue($this->elementMock)); + $this->elementMock->expects($this->any()) + ->method('setRenderer') + ->will($this->returnValue($this->elementMock)); + $this->elementMock->expects($this->any()) + ->method('getElements') + ->will($this->returnValue([$this->elementMock])); + } + + /** + * @param $expanded + * @param $nested + * @param $extra + * @dataProvider renderDataProvider + */ + public function testRender($expanded, $nested, $extra) + { + $this->elementMock->expects($this->any())->method('getExpanded')->will($this->returnValue($expanded)); + $this->elementMock->expects($this->any())->method('getIsNested')->will($this->returnValue($nested)); + $this->userMock->expects($this->any())->method('getExtra')->willReturn($extra); + $actualHtml = $this->object->render($this->elementMock); + + $this->assertContains($this->elementData['htmlId'], $actualHtml); + $this->assertContains($this->elementData['legend'], $actualHtml); + $this->assertContains($this->elementData['comment'], $actualHtml); + $this->assertContains($this->elementData['tooltip'], $actualHtml); + $this->assertContains($this->elementData['elementHTML'], $actualHtml); + if ($nested) { + $this->assertContains('nested', $actualHtml); + } + } + + public function renderDataProvider() + { + return [ + 'expandedNestedExtra' => [ + 'expanded' => true, + 'nested' => true, + 'extra' => [], + ], + 'collapsedNotNestedExtra' => [ + 'expanded' => false, + 'nested' => false, + 'extra' => ['configState' => [$this->elementData['htmlId'] => true]], + ], + 'collapsedNotNestedNoExtra' => [ + 'expanded' => false, + 'nested' => false, + 'extra' => [], + ], + ]; } } diff --git a/app/code/Magento/Config/Test/Unit/Block/System/Config/Form/FieldsetTest.php b/app/code/Magento/Config/Test/Unit/Block/System/Config/Form/FieldsetTest.php index ec6521ec090ac75e2c0442e06fecd77eb4742b04..e1d4f266467e194a77f43539f0eba25c647ae5c7 100644 --- a/app/code/Magento/Config/Test/Unit/Block/System/Config/Form/FieldsetTest.php +++ b/app/code/Magento/Config/Test/Unit/Block/System/Config/Form/FieldsetTest.php @@ -30,7 +30,15 @@ class FieldsetTest extends \PHPUnit_Framework_TestCase /** * @var array */ - protected $_testData; + protected $testData = [ + 'htmlId' => 'test_field_id', + 'name' => 'test_name', + 'label' => 'test_label', + 'elementHTML' => 'test_html', + 'legend' => 'test_legend', + 'comment' => 'test_comment', + 'tooltip' => 'test_tooltip', + ]; /** * @var \PHPUnit_Framework_MockObject_MockObject @@ -47,16 +55,42 @@ class FieldsetTest extends \PHPUnit_Framework_TestCase */ protected $_helperMock; + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $authSessionMock; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $userMock; + + /** + * @return void + * @SuppressWarnings(PHPMD.ExcessiveMethodLength) + */ protected function setUp() { - $this->_requestMock = $this->getMock( - 'Magento\Framework\App\RequestInterface', - [], - [], - '', - false, - false - ); + $this->authSessionMock = $this->getMockBuilder('Magento\Backend\Model\Auth\Session') + ->setMethods(['getUser']) + ->disableOriginalConstructor() + ->getMock(); + + $this->userMock = $this->getMockBuilder('Magento\User\Model\User') + ->setMethods(['getExtra']) + ->disableOriginalConstructor() + ->getMock(); + + $this->authSessionMock->expects($this->any()) + ->method('getUser') + ->willReturn($this->userMock); + + $this->_requestMock = $this->getMockBuilder('Magento\Framework\App\RequestInterface') + ->disableOriginalConstructor() + ->getMock(); + $this->_requestMock->expects($this->any()) + ->method('getParam') + ->willReturn('Test Param'); $this->_urlModelMock = $this->getMock('Magento\Backend\Model\Url', [], [], '', false, false); $this->_layoutMock = $this->getMock('Magento\Framework\View\Layout', [], [], '', false, false); $groupMock = $this->getMock( @@ -66,12 +100,13 @@ class FieldsetTest extends \PHPUnit_Framework_TestCase '', false ); - $groupMock->expects($this->once())->method('getFieldsetCss')->will($this->returnValue('test_fieldset_css')); + $groupMock->expects($this->any())->method('getFieldsetCss')->will($this->returnValue('test_fieldset_css')); $this->_helperMock = $this->getMock('Magento\Framework\View\Helper\Js', [], [], '', false, false); $data = [ 'request' => $this->_requestMock, + 'authSession' => $this->authSessionMock, 'urlBuilder' => $this->_urlModelMock, 'layout' => $this->_layoutMock, 'jsHelper' => $this->_helperMock, @@ -80,18 +115,9 @@ class FieldsetTest extends \PHPUnit_Framework_TestCase $this->_testHelper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this); $this->_object = $this->_testHelper->getObject('Magento\Config\Block\System\Config\Form\Fieldset', $data); - $this->_testData = [ - 'htmlId' => 'test_field_id', - 'name' => 'test_name', - 'label' => 'test_label', - 'elementHTML' => 'test_html', - 'legend' => 'test_legend', - 'comment' => 'test_comment', - ]; - $this->_elementMock = $this->getMock( 'Magento\Framework\Data\Form\Element\Text', - ['getHtmlId', 'getName', 'getExpanded', 'getElements', 'getLegend', 'getComment'], + ['getId', 'getHtmlId', 'getName', 'getElements', 'getLegend', 'getComment', 'getIsNested', 'getExpanded'], [], '', false, @@ -99,67 +125,75 @@ class FieldsetTest extends \PHPUnit_Framework_TestCase true ); - $this->_elementMock->expects( - $this->any() - )->method( - 'getHtmlId' - )->will( - $this->returnValue($this->_testData['htmlId']) - ); - $this->_elementMock->expects( - $this->any() - )->method( - 'getName' - )->will( - $this->returnValue($this->_testData['name']) - ); - $this->_elementMock->expects($this->any())->method('getExpanded')->will($this->returnValue(true)); - $this->_elementMock->expects( - $this->any() - )->method( - 'getLegend' - )->will( - $this->returnValue($this->_testData['legend']) - ); - $this->_elementMock->expects( - $this->any() - )->method( - 'getComment' - )->will( - $this->returnValue($this->_testData['comment']) - ); + $this->_elementMock->expects($this->any()) + ->method('getId') + ->will($this->returnValue($this->testData['htmlId'])); + $this->_elementMock->expects($this->any()) + ->method('getHtmlId') + ->will($this->returnValue($this->testData['htmlId'])); + $this->_elementMock->expects($this->any()) + ->method('getName') + ->will($this->returnValue($this->testData['name'])); + $this->_elementMock->expects($this->any()) + ->method('getLegend') + ->will($this->returnValue($this->testData['legend'])); + $this->_elementMock->expects($this->any()) + ->method('getComment') + ->will($this->returnValue($this->testData['comment'])); } - public function testRenderWithoutStoredElements() + /** + * @param $expanded + * @param $nested + * @param extra + * @dataProvider testRenderWithoutStoredElementsDataProvider + */ + public function testRenderWithoutStoredElements($expanded, $nested, $extra) { + $this->userMock->expects($this->any())->method('getExtra')->willReturn($extra); $collection = $this->_testHelper->getObject('Magento\Framework\Data\Form\Element\Collection'); $this->_elementMock->expects($this->any())->method('getElements')->will($this->returnValue($collection)); + $this->_elementMock->expects($this->any())->method('getIsNested')->will($this->returnValue($nested)); + $this->_elementMock->expects($this->any())->method('getExpanded')->will($this->returnValue($expanded)); $actualHtml = $this->_object->render($this->_elementMock); - $this->assertContains($this->_testData['htmlId'], $actualHtml); - $this->assertContains($this->_testData['legend'], $actualHtml); - $this->assertContains($this->_testData['comment'], $actualHtml); + $this->assertContains($this->testData['htmlId'], $actualHtml); + $this->assertContains($this->testData['legend'], $actualHtml); + $this->assertContains($this->testData['comment'], $actualHtml); + if ($nested) { + $this->assertContains('nested', $actualHtml); + } } - public function testRenderWithStoredElements() + /** + * @param $expanded + * @param $nested + * @param $extra + * @dataProvider testRenderWithStoredElementsDataProvider + */ + public function testRenderWithStoredElements($expanded, $nested, $extra) { + $this->userMock->expects($this->any())->method('getExtra')->willReturn($extra); $this->_helperMock->expects($this->any())->method('getScript')->will($this->returnArgument(0)); - - $fieldMock = $this->getMock( - 'Magento\Framework\Data\Form\Element\Text', - ['getId', 'getTooltip', 'toHtml'], - [], - '', - false, - false, - true - ); - + $fieldMock = $this->getMockBuilder('Magento\Framework\Data\Form\Element\Text') + ->setMethods(['getId', 'getTooltip', 'toHtml', 'getHtmlId', 'getIsNested', 'getExpanded']) + ->disableOriginalConstructor() + ->getMock(); $fieldMock->expects($this->any())->method('getId')->will($this->returnValue('test_field_id')); $fieldMock->expects($this->any())->method('getTooltip')->will($this->returnValue('test_field_tootip')); $fieldMock->expects($this->any())->method('toHtml')->will($this->returnValue('test_field_toHTML')); + $fieldMock->expects($this->any())->method('getHtmlId')->willReturn('test_field_HTML_id'); + + $fieldSetMock = $this->getMockBuilder('Magento\Framework\Data\Form\Element\Fieldset') + ->setMethods(['getId', 'getTooltip', 'toHtml', 'getHtmlId', 'getIsNested', 'getExpanded']) + ->disableOriginalConstructor() + ->getMock(); + $fieldSetMock->expects($this->any())->method('getId')->will($this->returnValue('test_fieldset_id')); + $fieldSetMock->expects($this->any())->method('getTooltip')->will($this->returnValue('test_fieldset_tootip')); + $fieldSetMock->expects($this->any())->method('toHtml')->will($this->returnValue('test_fieldset_toHTML')); + $fieldSetMock->expects($this->any())->method('getHtmlId')->willReturn('test_fieldset_HTML_id'); - $helper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this); $factory = $this->getMock('Magento\Framework\Data\Form\Element\Factory', [], [], '', false); + $factoryColl = $this->getMock( 'Magento\Framework\Data\Form\Element\CollectionFactory', [], @@ -167,13 +201,19 @@ class FieldsetTest extends \PHPUnit_Framework_TestCase '', false ); + $formMock = $this->getMock('Magento\Framework\Data\Form\AbstractForm', [], [$factory, $factoryColl]); - $collection = $helper->getObject( + + $collection = $this->_testHelper->getObject( 'Magento\Framework\Data\Form\Element\Collection', ['container' => $formMock] ); $collection->add($fieldMock); + $collection->add($fieldSetMock); + $this->_elementMock->expects($this->any())->method('getElements')->will($this->returnValue($collection)); + $this->_elementMock->expects($this->any())->method('getIsNested')->will($this->returnValue($nested)); + $this->_elementMock->expects($this->any())->method('getExpanded')->will($this->returnValue($expanded)); $actual = $this->_object->render($this->_elementMock); @@ -182,5 +222,48 @@ class FieldsetTest extends \PHPUnit_Framework_TestCase $expected = '<div id="row_test_field_id_comment" class="system-tooltip-box"' . ' style="display:none;">test_field_tootip</div>'; $this->assertContains($expected, $actual); + if ($nested) { + $this->assertContains('nested', $actual); + } + } + + /** + * @return array + */ + public function testRenderWithoutStoredElementsDataProvider() + { + return $this->dataProvider(); + } + + /** + * @return array + */ + public function testRenderWithStoredElementsDataProvider() + { + return $this->dataProvider(); + } + + /** + * @return array + */ + protected function dataProvider() + { + return [ + 'expandedNestedExtra' => [ + 'expanded' => true, + 'nested' => true, + 'extra' => [], + ], + 'collapsedNotNestedExtra' => [ + 'expanded' => false, + 'nested' => false, + 'extra' => ['configState' => [$this->testData['htmlId'] => true]], + ], + 'collapsedNotNestedNoExtra' => [ + 'expanded' => false, + 'nested' => false, + 'extra' => [], + ], + ]; } } diff --git a/app/code/Magento/Config/composer.json b/app/code/Magento/Config/composer.json index cc83e07515d7c6e3f56c531d84d10edcceb1226e..202d760a77d18360d74c9c13ad6ff720257f1361 100644 --- a/app/code/Magento/Config/composer.json +++ b/app/code/Magento/Config/composer.json @@ -3,17 +3,17 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/framework": "0.74.0-beta14", - "magento/module-store": "0.74.0-beta14", - "magento/module-cron": "0.74.0-beta14", - "magento/module-email": "0.74.0-beta14", - "magento/module-directory": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/module-media-storage": "0.74.0-beta14", + "magento/framework": "0.74.0-beta15", + "magento/module-store": "0.74.0-beta15", + "magento/module-cron": "0.74.0-beta15", + "magento/module-email": "0.74.0-beta15", + "magento/module-directory": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/module-media-storage": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/ConfigurableImportExport/composer.json b/app/code/Magento/ConfigurableImportExport/composer.json index 8d04a7bae07ab90d74604415193102a43f299075..d3b43f6b2c89cebbc90db6965afb7b35339f3532 100644 --- a/app/code/Magento/ConfigurableImportExport/composer.json +++ b/app/code/Magento/ConfigurableImportExport/composer.json @@ -3,16 +3,16 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-catalog": "0.74.0-beta14", - "magento/module-catalog-import-export": "0.74.0-beta14", - "magento/module-eav": "0.74.0-beta14", - "magento/module-import-export": "0.74.0-beta14", - "magento/module-configurable-product": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-catalog": "0.74.0-beta15", + "magento/module-catalog-import-export": "0.74.0-beta15", + "magento/module-eav": "0.74.0-beta15", + "magento/module-import-export": "0.74.0-beta15", + "magento/module-configurable-product": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/ConfigurableProduct/composer.json b/app/code/Magento/ConfigurableProduct/composer.json index d67c88a3d956bb5c369acb68c95818f9d10047c2..bba5a6cb80801b75e3a58c0d1660c768787eeb1b 100644 --- a/app/code/Magento/ConfigurableProduct/composer.json +++ b/app/code/Magento/ConfigurableProduct/composer.json @@ -3,27 +3,27 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-catalog": "0.74.0-beta14", - "magento/module-catalog-inventory": "0.74.0-beta14", - "magento/module-sales": "0.74.0-beta14", - "magento/module-checkout": "0.74.0-beta14", - "magento/module-msrp": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/module-eav": "0.74.0-beta14", - "magento/module-customer": "0.74.0-beta14", - "magento/module-catalog-rule": "0.74.0-beta14", - "magento/module-directory": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", - "magento/module-media-storage": "0.74.0-beta14", - "magento/module-quote": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-catalog": "0.74.0-beta15", + "magento/module-catalog-inventory": "0.74.0-beta15", + "magento/module-sales": "0.74.0-beta15", + "magento/module-checkout": "0.74.0-beta15", + "magento/module-msrp": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/module-eav": "0.74.0-beta15", + "magento/module-customer": "0.74.0-beta15", + "magento/module-catalog-rule": "0.74.0-beta15", + "magento/module-directory": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", + "magento/module-media-storage": "0.74.0-beta15", + "magento/module-quote": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "suggest": { - "magento/module-webapi": "0.74.0-beta14" + "magento/module-webapi": "0.74.0-beta15" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Contact/composer.json b/app/code/Magento/Contact/composer.json index b439ea140c197b1ed56baf1e2d815da1401ad79b..811f9db9c949c9fcc5877905776039105c19335d 100644 --- a/app/code/Magento/Contact/composer.json +++ b/app/code/Magento/Contact/composer.json @@ -3,15 +3,15 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-config": "0.74.0-beta14", - "magento/module-store": "0.74.0-beta14", - "magento/module-customer": "0.74.0-beta14", - "magento/module-cms": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-config": "0.74.0-beta15", + "magento/module-store": "0.74.0-beta15", + "magento/module-customer": "0.74.0-beta15", + "magento/module-cms": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Cookie/composer.json b/app/code/Magento/Cookie/composer.json index 544fd07a9c3789660daca22b02bfc19ba3f3aef5..0135db41f94b4435603e54b98f7b44db55e9c085 100644 --- a/app/code/Magento/Cookie/composer.json +++ b/app/code/Magento/Cookie/composer.json @@ -3,15 +3,15 @@ "description": "N/A", "require": { "php": "~5.4.11|~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "suggest": { - "magento/module-backend": "0.74.0-beta14" + "magento/module-backend": "0.74.0-beta15" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Cron/composer.json b/app/code/Magento/Cron/composer.json index 6399fb6b9e9020bfbbdcd39b429d38acd51db867..3dfb26ce77621f8ed772c7cbcafbd7ec0423a736 100644 --- a/app/code/Magento/Cron/composer.json +++ b/app/code/Magento/Cron/composer.json @@ -3,13 +3,13 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-config": "0.74.0-beta14", - "magento/module-store": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-config": "0.74.0-beta15", + "magento/module-store": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/CurrencySymbol/composer.json b/app/code/Magento/CurrencySymbol/composer.json index 84def1d3cbe14acfc288d09d027e68ac7ef0514f..6483dd03c9e1f55db24a962744a73132c5931f8a 100644 --- a/app/code/Magento/CurrencySymbol/composer.json +++ b/app/code/Magento/CurrencySymbol/composer.json @@ -3,16 +3,16 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-config": "0.74.0-beta14", - "magento/module-store": "0.74.0-beta14", - "magento/module-page-cache": "0.74.0-beta14", - "magento/module-directory": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-config": "0.74.0-beta15", + "magento/module-store": "0.74.0-beta15", + "magento/module-page-cache": "0.74.0-beta15", + "magento/module-directory": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Customer/composer.json b/app/code/Magento/Customer/composer.json index 0eece788e93cecb4c80b798123ea44284882baca..dee5a235594a0442cb4a5385ee820b53234f8582 100644 --- a/app/code/Magento/Customer/composer.json +++ b/app/code/Magento/Customer/composer.json @@ -3,33 +3,33 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-eav": "0.74.0-beta14", - "magento/module-directory": "0.74.0-beta14", - "magento/module-catalog": "0.74.0-beta14", - "magento/module-newsletter": "0.74.0-beta14", - "magento/module-sales": "0.74.0-beta14", - "magento/module-checkout": "0.74.0-beta14", - "magento/module-wishlist": "0.74.0-beta14", - "magento/module-theme": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/module-review": "0.74.0-beta14", - "magento/module-tax": "0.74.0-beta14", - "magento/module-page-cache": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", - "magento/module-authorization": "0.74.0-beta14", - "magento/module-integration": "0.74.0-beta14", - "magento/module-media-storage": "0.74.0-beta14", - "magento/module-ui": "0.74.0-beta14", - "magento/module-config": "0.74.0-beta14", - "magento/module-quote": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-eav": "0.74.0-beta15", + "magento/module-directory": "0.74.0-beta15", + "magento/module-catalog": "0.74.0-beta15", + "magento/module-newsletter": "0.74.0-beta15", + "magento/module-sales": "0.74.0-beta15", + "magento/module-checkout": "0.74.0-beta15", + "magento/module-wishlist": "0.74.0-beta15", + "magento/module-theme": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/module-review": "0.74.0-beta15", + "magento/module-tax": "0.74.0-beta15", + "magento/module-page-cache": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", + "magento/module-authorization": "0.74.0-beta15", + "magento/module-integration": "0.74.0-beta15", + "magento/module-media-storage": "0.74.0-beta15", + "magento/module-ui": "0.74.0-beta15", + "magento/module-config": "0.74.0-beta15", + "magento/module-quote": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "suggest": { - "magento/module-cookie": "0.74.0-beta14" + "magento/module-cookie": "0.74.0-beta15" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/CustomerImportExport/composer.json b/app/code/Magento/CustomerImportExport/composer.json index b6a1e407f40a90d40681457f8b3c44f71a51810b..9fc8a75b0a1024c0b8daf7221968ba40410c68a6 100644 --- a/app/code/Magento/CustomerImportExport/composer.json +++ b/app/code/Magento/CustomerImportExport/composer.json @@ -3,17 +3,17 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/module-customer": "0.74.0-beta14", - "magento/module-eav": "0.74.0-beta14", - "magento/module-import-export": "0.74.0-beta14", - "magento/module-directory": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/module-customer": "0.74.0-beta15", + "magento/module-eav": "0.74.0-beta15", + "magento/module-import-export": "0.74.0-beta15", + "magento/module-directory": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/DesignEditor/composer.json b/app/code/Magento/DesignEditor/composer.json index b1da5a0bdcd348ed89d44f6c55133d29d268e728..6e08b71249827713a36270a73e01a206da5fc1f3 100644 --- a/app/code/Magento/DesignEditor/composer.json +++ b/app/code/Magento/DesignEditor/composer.json @@ -3,18 +3,18 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-theme": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/module-eav": "0.74.0-beta14", - "magento/module-translation": "0.74.0-beta14", - "magento/module-config": "0.74.0-beta14", - "magento/module-media-storage": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-theme": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/module-eav": "0.74.0-beta15", + "magento/module-translation": "0.74.0-beta15", + "magento/module-config": "0.74.0-beta15", + "magento/module-media-storage": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Developer/composer.json b/app/code/Magento/Developer/composer.json index a48bb0105867b156433a4addf530adbefcf87e48..b24b34c4217b7322b25f1c69a1075ad616f5e286 100644 --- a/app/code/Magento/Developer/composer.json +++ b/app/code/Magento/Developer/composer.json @@ -3,12 +3,12 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Dhl/composer.json b/app/code/Magento/Dhl/composer.json index 02b7d41aa6e9cb7951f25396c7d440274d5b0d56..22bad15575a0e47c3b56e53095e34cf76d61e2c6 100644 --- a/app/code/Magento/Dhl/composer.json +++ b/app/code/Magento/Dhl/composer.json @@ -3,22 +3,22 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-config": "0.74.0-beta14", - "magento/module-store": "0.74.0-beta14", - "magento/module-shipping": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/module-directory": "0.74.0-beta14", - "magento/module-sales": "0.74.0-beta14", - "magento/module-checkout": "0.74.0-beta14", - "magento/module-catalog": "0.74.0-beta14", - "magento/module-catalog-inventory": "0.74.0-beta14", - "magento/module-quote": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-config": "0.74.0-beta15", + "magento/module-store": "0.74.0-beta15", + "magento/module-shipping": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/module-directory": "0.74.0-beta15", + "magento/module-sales": "0.74.0-beta15", + "magento/module-checkout": "0.74.0-beta15", + "magento/module-catalog": "0.74.0-beta15", + "magento/module-catalog-inventory": "0.74.0-beta15", + "magento/module-quote": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "lib-libxml": "*", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Directory/composer.json b/app/code/Magento/Directory/composer.json index 23ab56ed5a4f107e2748d9c98f7a78fe3b762bc4..9978cf2f0261f4e80bcb56bb9f9c64a74ccba91d 100644 --- a/app/code/Magento/Directory/composer.json +++ b/app/code/Magento/Directory/composer.json @@ -3,15 +3,15 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-config": "0.74.0-beta14", - "magento/module-store": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-config": "0.74.0-beta15", + "magento/module-store": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "lib-libxml": "*", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Downloadable/composer.json b/app/code/Magento/Downloadable/composer.json index b28ee43df4619e46d9314a36a88369cb34ce7a94..20ef84dcbb984fbe254d685219677e58a293a897 100644 --- a/app/code/Magento/Downloadable/composer.json +++ b/app/code/Magento/Downloadable/composer.json @@ -3,27 +3,27 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-catalog": "0.74.0-beta14", - "magento/module-customer": "0.74.0-beta14", - "magento/module-tax": "0.74.0-beta14", - "magento/module-theme": "0.74.0-beta14", - "magento/module-eav": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/module-sales": "0.74.0-beta14", - "magento/module-checkout": "0.74.0-beta14", - "magento/module-directory": "0.74.0-beta14", - "magento/module-gift-message": "0.74.0-beta14", - "magento/module-catalog-inventory": "0.74.0-beta14", - "magento/module-msrp": "0.74.0-beta14", - "magento/module-config": "0.74.0-beta14", - "magento/module-media-storage": "0.74.0-beta14", - "magento/module-quote": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-catalog": "0.74.0-beta15", + "magento/module-customer": "0.74.0-beta15", + "magento/module-tax": "0.74.0-beta15", + "magento/module-theme": "0.74.0-beta15", + "magento/module-eav": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/module-sales": "0.74.0-beta15", + "magento/module-checkout": "0.74.0-beta15", + "magento/module-directory": "0.74.0-beta15", + "magento/module-gift-message": "0.74.0-beta15", + "magento/module-catalog-inventory": "0.74.0-beta15", + "magento/module-msrp": "0.74.0-beta15", + "magento/module-config": "0.74.0-beta15", + "magento/module-media-storage": "0.74.0-beta15", + "magento/module-quote": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Eav/composer.json b/app/code/Magento/Eav/composer.json index 27a79fab2f4a2d182e3df0749481b2877d6eb5cf..caa8721af55b8e7b90228cd86b38de5aec349f91 100644 --- a/app/code/Magento/Eav/composer.json +++ b/app/code/Magento/Eav/composer.json @@ -3,16 +3,16 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/module-catalog": "0.74.0-beta14", - "magento/module-config": "0.74.0-beta14", - "magento/module-media-storage": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/module-catalog": "0.74.0-beta15", + "magento/module-config": "0.74.0-beta15", + "magento/module-media-storage": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Email/Model/Template.php b/app/code/Magento/Email/Model/Template.php index a349f5d9ed0708300e369fb97800dc258f3ded2d..2bb54a0333a138ec34f36e4362d22018e2fbef1d 100644 --- a/app/code/Magento/Email/Model/Template.php +++ b/app/code/Magento/Email/Model/Template.php @@ -7,7 +7,6 @@ namespace Magento\Email\Model; use Magento\Email\Model\Template\Filter; use Magento\Framework\App\Filesystem\DirectoryList; -use Magento\Framework\Filter\Template as FilterTemplate; use Magento\Store\Model\ScopeInterface; use Magento\Store\Model\StoreManagerInterface; @@ -76,7 +75,7 @@ class Template extends \Magento\Email\Model\AbstractTemplate implements \Magento /** * Email template filter * - * @var FilterTemplate + * @var Filter */ protected $_templateFilter; @@ -278,10 +277,10 @@ class Template extends \Magento\Email\Model\AbstractTemplate implements \Magento /** * Declare template processing filter * - * @param FilterTemplate $filter + * @param Filter $filter * @return $this */ - public function setTemplateFilter(FilterTemplate $filter) + public function setTemplateFilter(Filter $filter) { $this->_templateFilter = $filter; return $this; diff --git a/app/code/Magento/Email/Model/Template/Filter.php b/app/code/Magento/Email/Model/Template/Filter.php index c95b3f4e21572e16f38fdb967abf3ccc25a582e8..18ed7a756916ecbd28a78ef4fa82b562950c953a 100644 --- a/app/code/Magento/Email/Model/Template/Filter.php +++ b/app/code/Magento/Email/Model/Template/Filter.php @@ -110,6 +110,13 @@ class Filter extends \Magento\Framework\Filter\Template */ protected $backendUrlBuilder; + /** + * Include processor + * + * @var callable|null + */ + protected $_includeProcessor = null; + /** * @param \Magento\Framework\Stdlib\String $string * @param \Psr\Log\LoggerInterface $logger @@ -216,6 +223,49 @@ class Filter extends \Magento\Framework\Filter\Template return $this->_storeId; } + /** + * @param string[] $construction + * @return mixed + */ + public function includeDirective($construction) + { + // Processing of {include template=... [...]} statement + $includeParameters = $this->_getIncludeParameters($construction[2]); + if (!isset($includeParameters['template']) or !$this->getIncludeProcessor()) { + // Not specified template or not set include processor + $replacedValue = '{Error in include processing}'; + } else { + // Including of template + $templateCode = $includeParameters['template']; + unset($includeParameters['template']); + $includeParameters = array_merge_recursive($includeParameters, $this->_templateVars); + $replacedValue = call_user_func($this->getIncludeProcessor(), $templateCode, $includeParameters); + } + return $replacedValue; + } + + /** + * Sets the processor of includes. + * + * @param callable $callback it must return string + * @return $this + */ + public function setIncludeProcessor(array $callback) + { + $this->_includeProcessor = $callback; + return $this; + } + + /** + * Sets the processor of includes. + * + * @return callable|null + */ + public function getIncludeProcessor() + { + return is_callable($this->_includeProcessor) ? $this->_includeProcessor : null; + } + /** * Retrieve Block html directive * diff --git a/app/code/Magento/Email/Test/Unit/Model/TemplateTest.php b/app/code/Magento/Email/Test/Unit/Model/TemplateTest.php index 3c89c3a8532971729ea0a7fcbb408ef0854fb2a3..eddac2ab9c0b1b67de2d660a25e910f713019bdf 100644 --- a/app/code/Magento/Email/Test/Unit/Model/TemplateTest.php +++ b/app/code/Magento/Email/Test/Unit/Model/TemplateTest.php @@ -71,6 +71,11 @@ class TemplateTest extends \PHPUnit_Framework_TestCase */ private $emailConfig; + /** + * @var \Magento\Email\Model\Template\Filter|\PHPUnit_Framework_MockObject_MockObject + */ + private $filterTemplate; + public function setUp() { $this->context = $this->getMockBuilder('Magento\Framework\Model\Context') @@ -107,6 +112,18 @@ class TemplateTest extends \PHPUnit_Framework_TestCase $this->emailConfig = $this->getMockBuilder('Magento\Email\Model\Template\Config') ->disableOriginalConstructor() ->getMock(); + $this->filterTemplate = $this->getMockBuilder('Magento\Email\Model\Template\Filter') + ->disableOriginalConstructor() + ->getMock(); + $this->filterTemplate->expects($this->any()) + ->method('setUseAbsoluteLinks') + ->will($this->returnSelf()); + $this->filterTemplate->expects($this->any()) + ->method('setStoreId') + ->will($this->returnSelf()); + $this->emailFilterFactory->expects($this->any()) + ->method('create') + ->will($this->returnValue($this->filterTemplate)); } /** @@ -150,27 +167,12 @@ class TemplateTest extends \PHPUnit_Framework_TestCase public function testSetAndGetTemplateFilter() { $model = $this->getModelMock(); - $filterTemplate = $this->getMockBuilder('Magento\Framework\Filter\Template') - ->disableOriginalConstructor() - ->getMock(); - $model->setTemplateFilter($filterTemplate); - $this->assertSame($filterTemplate, $model->getTemplateFilter()); + $model->setTemplateFilter($this->filterTemplate); + $this->assertSame($this->filterTemplate, $model->getTemplateFilter()); } public function testGetTemplateFilterWithEmptyValue() { - $filterTemplate = $this->getMockBuilder('Magento\Framework\Filter\Template') - ->setMethods(['setUseAbsoluteLinks', 'setStoreId']) - ->disableOriginalConstructor() - ->getMock(); - $filterTemplate->expects($this->once()) - ->method('setUseAbsoluteLinks') - ->will($this->returnSelf()); - $filterTemplate->expects($this->once()) - ->method('setStoreId') - ->will($this->returnSelf()); - $this->emailFilterFactory->method('create') - ->will($this->returnValue($filterTemplate)); $designConfig = $this->getMockBuilder('Magento\Framework\Object') ->setMethods(['getStore']) ->disableOriginalConstructor() @@ -181,7 +183,7 @@ class TemplateTest extends \PHPUnit_Framework_TestCase ->method('getDesignConfig') ->will($this->returnValue($designConfig)); - $this->assertSame($filterTemplate, $model->getTemplateFilter()); + $this->assertSame($this->filterTemplate, $model->getTemplateFilter()); } /** @@ -408,29 +410,18 @@ class TemplateTest extends \PHPUnit_Framework_TestCase */ public function testGetProcessedTemplate($variables, $templateType, $storeId, $expectedVariables, $expectedResult) { - $filterTemplate = $this->getMockBuilder('Magento\Framework\Filter\Template') - ->setMethods([ - 'setUseSessionInUrl', - 'setPlainTemplateMode', - 'setVariables', - 'setStoreId', - 'filter', - 'getStoreId', - ]) - ->disableOriginalConstructor() - ->getMock(); - $filterTemplate->expects($this->once()) + $this->filterTemplate->expects($this->once()) ->method('setUseSessionInUrl') ->with(false) ->will($this->returnSelf()); - $filterTemplate->expects($this->once()) + $this->filterTemplate->expects($this->once()) ->method('setPlainTemplateMode') ->with($templateType === \Magento\Framework\App\TemplateTypesInterface::TYPE_TEXT) ->will($this->returnSelf()); - $filterTemplate->expects($this->any()) + $this->filterTemplate->expects($this->any()) ->method('setStoreId') ->will($this->returnSelf()); - $filterTemplate->expects($this->any()) + $this->filterTemplate->expects($this->any()) ->method('getStoreId') ->will($this->returnValue($storeId)); @@ -446,7 +437,6 @@ class TemplateTest extends \PHPUnit_Framework_TestCase ->will($this->returnValue($store)); $model = $this->getModelMock(['getDesignConfig', '_applyDesignConfig', 'getPreparedTemplateText']); - $model->setTemplateFilter($filterTemplate); $model->setTemplateType($templateType); $designConfig = $this->getMockBuilder('Magento\Framework\Object') @@ -454,13 +444,19 @@ class TemplateTest extends \PHPUnit_Framework_TestCase ->disableOriginalConstructor() ->getMock(); $storeId = 'storeId'; - $designConfig->expects($this->once()) + $designConfig->expects($this->exactly(2)) ->method('getStore') ->will($this->returnValue($storeId)); $model->expects($this->once()) + ->method('_applyDesignConfig') + ->willReturnSelf(); + $model->expects($this->exactly(2)) ->method('getDesignConfig') ->will($this->returnValue($designConfig)); - $filterTemplate->expects($this->once()) + $this->filterTemplate->expects($this->once()) + ->method('setIncludeProcessor') + ->willReturnSelf(); + $this->filterTemplate->expects($this->once()) ->method('setVariables') ->with(array_merge([ 'this' => $model], $expectedVariables)); @@ -468,7 +464,7 @@ class TemplateTest extends \PHPUnit_Framework_TestCase $model->expects($this->once()) ->method('getPreparedTemplateText') ->will($this->returnValue($preparedTemplateText)); - $filterTemplate->expects($this->once()) + $this->filterTemplate->expects($this->once()) ->method('filter') ->with($preparedTemplateText) ->will($this->returnValue($expectedResult)); @@ -556,13 +552,9 @@ class TemplateTest extends \PHPUnit_Framework_TestCase $templateSubject = 'templateSubject'; $model->setTemplateSubject($templateSubject); - $filterTemplate = $this->getMockBuilder('Magento\Framework\Filter\Template') - ->setMethods(['setVariables', 'setStoreId', 'filter']) - ->disableOriginalConstructor() - ->getMock(); $model->expects($this->once()) ->method('getTemplateFilter') - ->will($this->returnValue($filterTemplate)); + ->will($this->returnValue($this->filterTemplate)); $model->expects($this->once()) ->method('_applyDesignConfig'); @@ -579,18 +571,18 @@ class TemplateTest extends \PHPUnit_Framework_TestCase ->method('getDesignConfig') ->will($this->returnValue($designConfig)); - $filterTemplate->expects($this->once()) + $this->filterTemplate->expects($this->once()) ->method('setStoreId') ->with($storeId) ->will($this->returnSelf()); $expectedResult = 'expected'; - $filterTemplate->expects($this->once()) + $this->filterTemplate->expects($this->once()) ->method('filter') ->with($templateSubject) ->will($this->returnValue($expectedResult)); $variables = [ 'key' => 'value' ]; - $filterTemplate->expects($this->once()) + $this->filterTemplate->expects($this->once()) ->method('setVariables') ->with(array_merge($variables, ['this' => $model])); $this->assertEquals($expectedResult, $model->getProcessedTemplateSubject($variables)); diff --git a/app/code/Magento/Email/composer.json b/app/code/Magento/Email/composer.json index 337caab036bcf8efe39b14f1d7d22bf534a38f02..af00cc6e8c40e9b3a163290f4735f76378cbcbd0 100644 --- a/app/code/Magento/Email/composer.json +++ b/app/code/Magento/Email/composer.json @@ -3,16 +3,16 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-config": "0.74.0-beta14", - "magento/module-store": "0.74.0-beta14", - "magento/module-cms": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/module-variable": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-config": "0.74.0-beta15", + "magento/module-store": "0.74.0-beta15", + "magento/module-cms": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/module-variable": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Fedex/composer.json b/app/code/Magento/Fedex/composer.json index 63f7f335ce91ef6b55f722c63265ca6cc57f560a..fb0ea06af950bde812861049560a4f28c9049418 100644 --- a/app/code/Magento/Fedex/composer.json +++ b/app/code/Magento/Fedex/composer.json @@ -3,20 +3,20 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-shipping": "0.74.0-beta14", - "magento/module-directory": "0.74.0-beta14", - "magento/module-catalog": "0.74.0-beta14", - "magento/module-sales": "0.74.0-beta14", - "magento/module-catalog-inventory": "0.74.0-beta14", - "magento/module-quote": "0.74.0-beta14", - "magento/module-config": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-shipping": "0.74.0-beta15", + "magento/module-directory": "0.74.0-beta15", + "magento/module-catalog": "0.74.0-beta15", + "magento/module-sales": "0.74.0-beta15", + "magento/module-catalog-inventory": "0.74.0-beta15", + "magento/module-quote": "0.74.0-beta15", + "magento/module-config": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "lib-libxml": "*", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/GiftMessage/composer.json b/app/code/Magento/GiftMessage/composer.json index 6159ad811b2306d08af85bd45cd0475e3ca56cfe..947f4b38fd94b846103d42917896e0bea3f209eb 100644 --- a/app/code/Magento/GiftMessage/composer.json +++ b/app/code/Magento/GiftMessage/composer.json @@ -3,20 +3,20 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-catalog": "0.74.0-beta14", - "magento/module-checkout": "0.74.0-beta14", - "magento/module-multishipping": "0.74.0-beta14", - "magento/module-sales": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/module-customer": "0.74.0-beta14", - "magento/module-eav": "0.74.0-beta14", - "magento/module-quote": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-catalog": "0.74.0-beta15", + "magento/module-checkout": "0.74.0-beta15", + "magento/module-multishipping": "0.74.0-beta15", + "magento/module-sales": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/module-customer": "0.74.0-beta15", + "magento/module-eav": "0.74.0-beta15", + "magento/module-quote": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/GoogleAdwords/composer.json b/app/code/Magento/GoogleAdwords/composer.json index 5cc77002b47154ceced14a609d6e0d41282926d7..bee379a2e762516b2259c02de46480f235caaad9 100644 --- a/app/code/Magento/GoogleAdwords/composer.json +++ b/app/code/Magento/GoogleAdwords/composer.json @@ -3,13 +3,13 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-sales": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-sales": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/GoogleAnalytics/composer.json b/app/code/Magento/GoogleAnalytics/composer.json index 09c1724be6bc16c662205bef182abc2a677a37b0..3e9335438799633dbf939e59a055693358b39e4e 100644 --- a/app/code/Magento/GoogleAnalytics/composer.json +++ b/app/code/Magento/GoogleAnalytics/composer.json @@ -3,14 +3,14 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-sales": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", - "magento/module-cookie": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-sales": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", + "magento/module-cookie": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/GoogleOptimizer/composer.json b/app/code/Magento/GoogleOptimizer/composer.json index 97573703a09a74e685922b0b3948f6af8e30aa73..d1aa863fcde98cdaf636287ddcd519d9a3fd53ee 100644 --- a/app/code/Magento/GoogleOptimizer/composer.json +++ b/app/code/Magento/GoogleOptimizer/composer.json @@ -3,16 +3,16 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-google-analytics": "0.74.0-beta14", - "magento/module-catalog": "0.74.0-beta14", - "magento/module-cms": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-google-analytics": "0.74.0-beta15", + "magento/module-catalog": "0.74.0-beta15", + "magento/module-cms": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/GoogleShopping/composer.json b/app/code/Magento/GoogleShopping/composer.json index 1e2387799214e5b48fe356487cc1ea18ce2d030f..8b05adecaf37ca4bcb1ed68f33a1a236d75eaea9 100644 --- a/app/code/Magento/GoogleShopping/composer.json +++ b/app/code/Magento/GoogleShopping/composer.json @@ -3,18 +3,18 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/module-catalog": "0.74.0-beta14", - "magento/module-customer": "0.74.0-beta14", - "magento/module-directory": "0.74.0-beta14", - "magento/module-eav": "0.74.0-beta14", - "magento/module-tax": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/module-catalog": "0.74.0-beta15", + "magento/module-customer": "0.74.0-beta15", + "magento/module-directory": "0.74.0-beta15", + "magento/module-eav": "0.74.0-beta15", + "magento/module-tax": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/GroupedImportExport/composer.json b/app/code/Magento/GroupedImportExport/composer.json index 33a57b24cb7193f6bb5f3b2f0eef591837005946..38e3c029caf0ddf0ef2bb97d829e25f314825335 100644 --- a/app/code/Magento/GroupedImportExport/composer.json +++ b/app/code/Magento/GroupedImportExport/composer.json @@ -3,16 +3,16 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-catalog": "0.74.0-beta14", - "magento/module-import-export": "0.74.0-beta14", - "magento/module-catalog-import-export": "0.74.0-beta14", - "magento/module-grouped-product": "0.74.0-beta14", - "magento/module-eav": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-catalog": "0.74.0-beta15", + "magento/module-import-export": "0.74.0-beta15", + "magento/module-catalog-import-export": "0.74.0-beta15", + "magento/module-grouped-product": "0.74.0-beta15", + "magento/module-eav": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/GroupedProduct/composer.json b/app/code/Magento/GroupedProduct/composer.json index 4ee6e8762d9b6760ce1ad74e9978af483e913f0d..6a9998f81ccaf77f4adedcce9c72e3c7f155e104 100644 --- a/app/code/Magento/GroupedProduct/composer.json +++ b/app/code/Magento/GroupedProduct/composer.json @@ -3,22 +3,22 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-catalog": "0.74.0-beta14", - "magento/module-catalog-inventory": "0.74.0-beta14", - "magento/module-sales": "0.74.0-beta14", - "magento/module-checkout": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/module-eav": "0.74.0-beta14", - "magento/module-customer": "0.74.0-beta14", - "magento/module-media-storage": "0.74.0-beta14", - "magento/module-msrp": "0.74.0-beta14", - "magento/module-quote": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-catalog": "0.74.0-beta15", + "magento/module-catalog-inventory": "0.74.0-beta15", + "magento/module-sales": "0.74.0-beta15", + "magento/module-checkout": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/module-eav": "0.74.0-beta15", + "magento/module-customer": "0.74.0-beta15", + "magento/module-media-storage": "0.74.0-beta15", + "magento/module-msrp": "0.74.0-beta15", + "magento/module-quote": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/ImportExport/composer.json b/app/code/Magento/ImportExport/composer.json index e5e58f1eeb8b2d8329b2789124b0a372ca75ef3a..24b773af890d977a1194fe15b9e5fb968a4684c5 100644 --- a/app/code/Magento/ImportExport/composer.json +++ b/app/code/Magento/ImportExport/composer.json @@ -3,17 +3,17 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/module-eav": "0.74.0-beta14", - "magento/module-indexer": "0.74.0-beta14", - "magento/module-media-storage": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/module-eav": "0.74.0-beta15", + "magento/module-indexer": "0.74.0-beta15", + "magento/module-media-storage": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "ext-ctype": "*", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Indexer/composer.json b/app/code/Magento/Indexer/composer.json index 5c2d70fd3ba1f4706522b5534b358eed397bb3d7..ca84f52830f052a60b50bbc295b5ef65a655e629 100644 --- a/app/code/Magento/Indexer/composer.json +++ b/app/code/Magento/Indexer/composer.json @@ -3,14 +3,14 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/module-page-cache": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/module-page-cache": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Integration/composer.json b/app/code/Magento/Integration/composer.json index 71e7696d8ef28184f8fd128d60231cac19b28ca4..91c648dd411685c5025f4a387ba826a5fae64e01 100644 --- a/app/code/Magento/Integration/composer.json +++ b/app/code/Magento/Integration/composer.json @@ -3,16 +3,16 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/module-customer": "0.74.0-beta14", - "magento/module-user": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", - "magento/module-authorization": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/module-customer": "0.74.0-beta15", + "magento/module-user": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", + "magento/module-authorization": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/LayeredNavigation/composer.json b/app/code/Magento/LayeredNavigation/composer.json index 5fb0f54db609de19157dbbe5a22daf6d3025c950..944c003c8403ecd01acd50b480c9371ca243d237 100644 --- a/app/code/Magento/LayeredNavigation/composer.json +++ b/app/code/Magento/LayeredNavigation/composer.json @@ -3,13 +3,13 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-config": "0.74.0-beta14", - "magento/module-catalog": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-config": "0.74.0-beta15", + "magento/module-catalog": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Log/composer.json b/app/code/Magento/Log/composer.json index 226458dacc1e2acfe398cfea0d658fb0ec2ab22e..ec04084fa01e1bcf75a405787a4ff23ddba93c29 100644 --- a/app/code/Magento/Log/composer.json +++ b/app/code/Magento/Log/composer.json @@ -3,15 +3,15 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-customer": "0.74.0-beta14", - "magento/module-eav": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-customer": "0.74.0-beta15", + "magento/module-eav": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/MediaStorage/composer.json b/app/code/Magento/MediaStorage/composer.json index da20bf9f3dc3d8790f4710a3027cbd22335b0d34..0eb5bea42958863eea1b3175863a35c182f790a2 100644 --- a/app/code/Magento/MediaStorage/composer.json +++ b/app/code/Magento/MediaStorage/composer.json @@ -3,14 +3,14 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/module-config": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/module-config": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Msrp/composer.json b/app/code/Magento/Msrp/composer.json index 552af5d5da3518251046821ba504ab4608661fd3..19ff9e0fcb40ef3e710a1f0ef5d2e24a63a66b0b 100644 --- a/app/code/Magento/Msrp/composer.json +++ b/app/code/Magento/Msrp/composer.json @@ -3,19 +3,19 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-bundle": "0.74.0-beta14", - "magento/module-catalog": "0.74.0-beta14", - "magento/module-downloadable": "0.74.0-beta14", - "magento/module-eav": "0.74.0-beta14", - "magento/module-grouped-product": "0.74.0-beta14", - "magento/module-tax": "0.74.0-beta14", - "magento/module-quote": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-bundle": "0.74.0-beta15", + "magento/module-catalog": "0.74.0-beta15", + "magento/module-downloadable": "0.74.0-beta15", + "magento/module-eav": "0.74.0-beta15", + "magento/module-grouped-product": "0.74.0-beta15", + "magento/module-tax": "0.74.0-beta15", + "magento/module-quote": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Multishipping/composer.json b/app/code/Magento/Multishipping/composer.json index 3f6d9e22a139d0932d538424871afc49b49baa40..1ab4ff46d8bf15e58386db852e6c4843ae394921 100644 --- a/app/code/Magento/Multishipping/composer.json +++ b/app/code/Magento/Multishipping/composer.json @@ -3,19 +3,19 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-checkout": "0.74.0-beta14", - "magento/module-sales": "0.74.0-beta14", - "magento/module-payment": "0.74.0-beta14", - "magento/module-tax": "0.74.0-beta14", - "magento/module-customer": "0.74.0-beta14", - "magento/module-theme": "0.74.0-beta14", - "magento/module-quote": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-checkout": "0.74.0-beta15", + "magento/module-sales": "0.74.0-beta15", + "magento/module-payment": "0.74.0-beta15", + "magento/module-tax": "0.74.0-beta15", + "magento/module-customer": "0.74.0-beta15", + "magento/module-theme": "0.74.0-beta15", + "magento/module-quote": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Newsletter/composer.json b/app/code/Magento/Newsletter/composer.json index 1ac1fb8c9d929acbe852fb2c8c0fa93ee1e42409..ef5f2f74bf54e87f256c5b9d81fece403b531c0e 100644 --- a/app/code/Magento/Newsletter/composer.json +++ b/app/code/Magento/Newsletter/composer.json @@ -3,20 +3,20 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-customer": "0.74.0-beta14", - "magento/module-widget": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/module-cms": "0.74.0-beta14", - "magento/module-email": "0.74.0-beta14", - "magento/module-cron": "0.74.0-beta14", - "magento/module-eav": "0.74.0-beta14", - "magento/module-require-js": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-customer": "0.74.0-beta15", + "magento/module-widget": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/module-cms": "0.74.0-beta15", + "magento/module-email": "0.74.0-beta15", + "magento/module-cron": "0.74.0-beta15", + "magento/module-eav": "0.74.0-beta15", + "magento/module-require-js": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/OfflinePayments/composer.json b/app/code/Magento/OfflinePayments/composer.json index 5118d798b7ee7a9f2a5c5f1291afd3a9f9ade93d..952c1c5ac6ced0ac0a4ce024a35bcc5bb4ddd8a5 100644 --- a/app/code/Magento/OfflinePayments/composer.json +++ b/app/code/Magento/OfflinePayments/composer.json @@ -3,13 +3,13 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-checkout": "0.74.0-beta14", - "magento/module-payment": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-checkout": "0.74.0-beta15", + "magento/module-payment": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/OfflineShipping/composer.json b/app/code/Magento/OfflineShipping/composer.json index 5a4bc6de203315f49cc562f6c3561279bc5febe8..fc5dadb866578cd97d33d0c093d06fac159545d2 100644 --- a/app/code/Magento/OfflineShipping/composer.json +++ b/app/code/Magento/OfflineShipping/composer.json @@ -3,21 +3,21 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-config": "0.74.0-beta14", - "magento/module-store": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/module-shipping": "0.74.0-beta14", - "magento/module-catalog": "0.74.0-beta14", - "magento/module-sales": "0.74.0-beta14", - "magento/module-sales-rule": "0.74.0-beta14", - "magento/module-directory": "0.74.0-beta14", - "magento/module-checkout": "0.74.0-beta14", - "magento/module-quote": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-config": "0.74.0-beta15", + "magento/module-store": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/module-shipping": "0.74.0-beta15", + "magento/module-catalog": "0.74.0-beta15", + "magento/module-sales": "0.74.0-beta15", + "magento/module-sales-rule": "0.74.0-beta15", + "magento/module-directory": "0.74.0-beta15", + "magento/module-checkout": "0.74.0-beta15", + "magento/module-quote": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/PageCache/Block/Javascript.php b/app/code/Magento/PageCache/Block/Javascript.php index bfc3b4a1a1e8b64e376b0889fa5bd75a4bfb08fe..980436b677bd3b51b23aaff170c32994e4b312a6 100644 --- a/app/code/Magento/PageCache/Block/Javascript.php +++ b/app/code/Magento/PageCache/Block/Javascript.php @@ -27,9 +27,10 @@ class Javascript extends \Magento\Framework\View\Element\Template ), 'handles' => $this->_layout->getUpdate()->getHandles(), 'originalRequest' => [ - 'route' => $this->getRequest()->getRouteName(), + 'route' => $this->getRequest()->getRouteName(), 'controller' => $this->getRequest()->getControllerName(), - 'action' => $this->getRequest()->getActionName(), + 'action' => $this->getRequest()->getActionName(), + 'uri' => $this->getRequest()->getRequestUri(), ], 'versionCookieName' => \Magento\Framework\App\PageCache\Version::COOKIE_NAME ]; diff --git a/app/code/Magento/PageCache/Controller/Block/Render.php b/app/code/Magento/PageCache/Controller/Block/Render.php index 1544cca2cfacb36dfa57fa75fd8ae1138e42a8f5..789fb1b696fe0b824666f3f19a0e22dc0f3ea7a2 100644 --- a/app/code/Magento/PageCache/Controller/Block/Render.php +++ b/app/code/Magento/PageCache/Controller/Block/Render.php @@ -24,12 +24,15 @@ class Render extends \Magento\PageCache\Controller\Block $currentRoute = $this->getRequest()->getRouteName(); $currentControllerName = $this->getRequest()->getControllerName(); $currentActionName = $this->getRequest()->getActionName(); + $currentRequestUri = $this->getRequest()->getRequestUri(); $origRequest = $this->getRequest()->getParam('originalRequest'); $origRequest = json_decode($origRequest, true); $this->getRequest()->setRouteName($origRequest['route']); $this->getRequest()->setControllerName($origRequest['controller']); $this->getRequest()->setActionName($origRequest['action']); + $this->getRequest()->setRequestUri($origRequest['uri']); + /** @var \Magento\Framework\View\Element\BlockInterface[] $blocks */ $blocks = $this->_getBlocks(); $data = []; @@ -41,6 +44,7 @@ class Render extends \Magento\PageCache\Controller\Block $this->getRequest()->setRouteName($currentRoute); $this->getRequest()->setControllerName($currentControllerName); $this->getRequest()->setActionName($currentActionName); + $this->getRequest()->setRequestUri($currentRequestUri); $this->getResponse()->setPrivateHeaders(\Magento\PageCache\Helper\Data::PRIVATE_MAX_AGE_CACHE); $this->translateInline->processResponseBody($data); diff --git a/app/code/Magento/PageCache/Test/Unit/Block/JavascriptTest.php b/app/code/Magento/PageCache/Test/Unit/Block/JavascriptTest.php index 56a23aa1ac84f28e78958214c2e6db5b2c190e70..5cac08b148cf2c401bf2b58fc2b7450b805be74b 100644 --- a/app/code/Magento/PageCache/Test/Unit/Block/JavascriptTest.php +++ b/app/code/Magento/PageCache/Test/Unit/Block/JavascriptTest.php @@ -54,12 +54,14 @@ class JavascriptTest extends \PHPUnit_Framework_TestCase 'getControllerName', 'getModuleName', 'getActionName', + 'getRequestUri', 'getParam', 'setParams', 'getParams', 'setModuleName', 'isSecure', 'setActionName', + 'setRequestUri', 'getCookie' ], [], @@ -122,6 +124,9 @@ class JavascriptTest extends \PHPUnit_Framework_TestCase $this->requestMock->expects($this->once()) ->method('getActionName') ->will($this->returnValue('action')); + $this->requestMock->expects($this->once()) + ->method('getRequestUri') + ->will($this->returnValue('uri')); $this->urlBuilderMock->expects($this->once()) ->method('getUrl') ->willReturn($url); @@ -153,10 +158,11 @@ class JavascriptTest extends \PHPUnit_Framework_TestCase * @param string $route * @param string $controller * @param string $action + * @param string $uri * @param string $expectedResult * @dataProvider getScriptOptionsPrivateContentDataProvider */ - public function testGetScriptOptionsPrivateContent($url, $route, $controller, $action, $expectedResult) + public function testGetScriptOptionsPrivateContent($url, $route, $controller, $action, $uri, $expectedResult) { $handles = [ 'some', @@ -179,6 +185,10 @@ class JavascriptTest extends \PHPUnit_Framework_TestCase ->method('getActionName') ->will($this->returnValue($action)); + $this->requestMock->expects($this->once()) + ->method('getRequestUri') + ->will($this->returnValue($uri)); + $this->urlBuilderMock->expects($this->once()) ->method('getUrl') ->willReturn($url); @@ -191,14 +201,17 @@ class JavascriptTest extends \PHPUnit_Framework_TestCase public function getScriptOptionsPrivateContentDataProvider() { + // @codingStandardsIgnoreStart return [ 'http' => [ - 'url' => 'http://some-name.com/page_cache/block/render', - 'route' => 'route', - 'controller' => 'controller', - 'action' => 'action', - 'expectedResult' => '~"originalRequest":{"route":"route","controller":"controller","action":"action"}~' + 'url' => 'http://some-name.com/page_cache/block/render', + 'route' => 'route', + 'controller' => 'controller', + 'action' => 'action', + 'uri' => 'uri', + 'expectedResult' => '~"originalRequest":{"route":"route","controller":"controller","action":"action","uri":"uri"}~' ], ]; + //@codingStandardsIgnoreEnd } } diff --git a/app/code/Magento/PageCache/Test/Unit/Controller/Block/RenderTest.php b/app/code/Magento/PageCache/Test/Unit/Controller/Block/RenderTest.php index 0bd7fcee22587e778d4cf4d8a849cfa9b030d11a..a9493a7a4c3abb2b6ff6472ccfce3007d0089ea2 100644 --- a/app/code/Magento/PageCache/Test/Unit/Controller/Block/RenderTest.php +++ b/app/code/Magento/PageCache/Test/Unit/Controller/Block/RenderTest.php @@ -88,11 +88,11 @@ class RenderTest extends \PHPUnit_Framework_TestCase public function testExecuteNoParams() { $this->requestMock->expects($this->once())->method('isAjax')->will($this->returnValue(true)); - $this->requestMock->expects($this->at(8)) + $this->requestMock->expects($this->at(10)) ->method('getParam') ->with($this->equalTo('blocks'), $this->equalTo('')) ->will($this->returnValue('')); - $this->requestMock->expects($this->at(9)) + $this->requestMock->expects($this->at(11)) ->method('getParam') ->with($this->equalTo('handles'), $this->equalTo('')) ->will($this->returnValue('')); @@ -103,7 +103,7 @@ class RenderTest extends \PHPUnit_Framework_TestCase { $blocks = ['block1', 'block2']; $handles = ['handle1', 'handle2']; - $originalRequest = '{"route":"route","controller":"controller","action":"action"}'; + $originalRequest = '{"route":"route","controller":"controller","action":"action","uri":"uri"}'; $expectedData = ['block1' => 'data1', 'block2' => 'data2']; $blockInstance1 = $this->getMock( @@ -136,15 +136,18 @@ class RenderTest extends \PHPUnit_Framework_TestCase ->method('getActionName') ->will($this->returnValue('render')); $this->requestMock->expects($this->at(4)) + ->method('getRequestUri') + ->will($this->returnValue('uri')); + $this->requestMock->expects($this->at(5)) ->method('getParam') ->with($this->equalTo('originalRequest')) ->will($this->returnValue($originalRequest)); - $this->requestMock->expects($this->at(8)) + $this->requestMock->expects($this->at(10)) ->method('getParam') ->with($this->equalTo('blocks'), $this->equalTo('')) ->will($this->returnValue(json_encode($blocks))); - $this->requestMock->expects($this->at(9)) + $this->requestMock->expects($this->at(11)) ->method('getParam') ->with($this->equalTo('handles'), $this->equalTo('')) ->will($this->returnValue(json_encode($handles))); diff --git a/app/code/Magento/PageCache/composer.json b/app/code/Magento/PageCache/composer.json index ce7896f50957edfc63dc32ca1c2b335c880bd0d9..177149ae0507f0740580835e539ed2d580463e07 100644 --- a/app/code/Magento/PageCache/composer.json +++ b/app/code/Magento/PageCache/composer.json @@ -3,14 +3,14 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-config": "0.74.0-beta14", - "magento/module-store": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-config": "0.74.0-beta15", + "magento/module-store": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Payment/composer.json b/app/code/Magento/Payment/composer.json index b78f45d789049bbd5d2a03a892e688dbd0d40535..14ac37fb3841d3b2484bcc845eb6c3a3b007209a 100644 --- a/app/code/Magento/Payment/composer.json +++ b/app/code/Magento/Payment/composer.json @@ -3,16 +3,16 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-config": "0.74.0-beta14", - "magento/module-store": "0.74.0-beta14", - "magento/module-sales": "0.74.0-beta14", - "magento/module-checkout": "0.74.0-beta14", - "magento/module-quote": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-config": "0.74.0-beta15", + "magento/module-store": "0.74.0-beta15", + "magento/module-sales": "0.74.0-beta15", + "magento/module-checkout": "0.74.0-beta15", + "magento/module-quote": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Persistent/composer.json b/app/code/Magento/Persistent/composer.json index b81c38561e3dfc1e24c9565dec1988e79ff43715..89ec0fa6a5f609f96b50618f6808d0226b64d88b 100644 --- a/app/code/Magento/Persistent/composer.json +++ b/app/code/Magento/Persistent/composer.json @@ -3,17 +3,17 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-checkout": "0.74.0-beta14", - "magento/module-customer": "0.74.0-beta14", - "magento/module-cron": "0.74.0-beta14", - "magento/module-page-cache": "0.74.0-beta14", - "magento/module-quote": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-checkout": "0.74.0-beta15", + "magento/module-customer": "0.74.0-beta15", + "magento/module-cron": "0.74.0-beta15", + "magento/module-page-cache": "0.74.0-beta15", + "magento/module-quote": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/ProductAlert/composer.json b/app/code/Magento/ProductAlert/composer.json index 715f9607506075b3e7fd70a2f1f691c63f78f3f5..c1b9888b1a664c25cd95cd21c01deb06e3391ab7 100644 --- a/app/code/Magento/ProductAlert/composer.json +++ b/app/code/Magento/ProductAlert/composer.json @@ -3,14 +3,14 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-catalog": "0.74.0-beta14", - "magento/module-customer": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-catalog": "0.74.0-beta15", + "magento/module-customer": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Quote/composer.json b/app/code/Magento/Quote/composer.json index 05d09f86f706c1689b7d04bf1f05527d584c2ff2..feb3c2a305eb11d5628536ff6db8c4d4edbd3cdb 100644 --- a/app/code/Magento/Quote/composer.json +++ b/app/code/Magento/Quote/composer.json @@ -3,26 +3,26 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-catalog": "0.74.0-beta14", - "magento/module-catalog-rule": "0.74.0-beta14", - "magento/module-customer": "0.74.0-beta14", - "magento/module-checkout": "0.74.0-beta14", - "magento/module-authorization": "0.74.0-beta14", - "magento/module-payment": "0.74.0-beta14", - "magento/module-sales": "0.74.0-beta14", - "magento/module-shipping": "0.74.0-beta14", - "magento/module-sales-sequence": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/module-directory": "0.74.0-beta14", - "magento/module-eav": "0.74.0-beta14", - "magento/module-tax": "0.74.0-beta14", - "magento/module-catalog-inventory": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-catalog": "0.74.0-beta15", + "magento/module-catalog-rule": "0.74.0-beta15", + "magento/module-customer": "0.74.0-beta15", + "magento/module-checkout": "0.74.0-beta15", + "magento/module-authorization": "0.74.0-beta15", + "magento/module-payment": "0.74.0-beta15", + "magento/module-sales": "0.74.0-beta15", + "magento/module-shipping": "0.74.0-beta15", + "magento/module-sales-sequence": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/module-directory": "0.74.0-beta15", + "magento/module-eav": "0.74.0-beta15", + "magento/module-tax": "0.74.0-beta15", + "magento/module-catalog-inventory": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Reports/composer.json b/app/code/Magento/Reports/composer.json index 89ac5cea8d624dd0d8c836196cda54c80b9daa21..3cc7e89699a26e62961a8f9d8bccad58fd3bfe80 100644 --- a/app/code/Magento/Reports/composer.json +++ b/app/code/Magento/Reports/composer.json @@ -3,28 +3,28 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-config": "0.74.0-beta14", - "magento/module-store": "0.74.0-beta14", - "magento/module-eav": "0.74.0-beta14", - "magento/module-customer": "0.74.0-beta14", - "magento/module-catalog": "0.74.0-beta14", - "magento/module-sales": "0.74.0-beta14", - "magento/module-cms": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/module-widget": "0.74.0-beta14", - "magento/module-log": "0.74.0-beta14", - "magento/module-wishlist": "0.74.0-beta14", - "magento/module-review": "0.74.0-beta14", - "magento/module-catalog-inventory": "0.74.0-beta14", - "magento/module-tax": "0.74.0-beta14", - "magento/module-downloadable": "0.74.0-beta14", - "magento/module-sales-rule": "0.74.0-beta14", - "magento/module-quote": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-config": "0.74.0-beta15", + "magento/module-store": "0.74.0-beta15", + "magento/module-eav": "0.74.0-beta15", + "magento/module-customer": "0.74.0-beta15", + "magento/module-catalog": "0.74.0-beta15", + "magento/module-sales": "0.74.0-beta15", + "magento/module-cms": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/module-widget": "0.74.0-beta15", + "magento/module-log": "0.74.0-beta15", + "magento/module-wishlist": "0.74.0-beta15", + "magento/module-review": "0.74.0-beta15", + "magento/module-catalog-inventory": "0.74.0-beta15", + "magento/module-tax": "0.74.0-beta15", + "magento/module-downloadable": "0.74.0-beta15", + "magento/module-sales-rule": "0.74.0-beta15", + "magento/module-quote": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/RequireJs/composer.json b/app/code/Magento/RequireJs/composer.json index f36ff58438ce0c1b827ee011308bdf0710623bf6..0fc9194a0947da6360fac6428e4213e1da62e872 100644 --- a/app/code/Magento/RequireJs/composer.json +++ b/app/code/Magento/RequireJs/composer.json @@ -3,11 +3,11 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/framework": "0.74.0-beta14", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Review/composer.json b/app/code/Magento/Review/composer.json index b8bb07beb0f6fc1ba9a59a47a57b2329e504a074..14feee694679037a59fdcf4e3dca5b6443564732 100644 --- a/app/code/Magento/Review/composer.json +++ b/app/code/Magento/Review/composer.json @@ -3,22 +3,22 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-catalog": "0.74.0-beta14", - "magento/module-customer": "0.74.0-beta14", - "magento/module-eav": "0.74.0-beta14", - "magento/module-theme": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/module-newsletter": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", - "magento/module-ui": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-catalog": "0.74.0-beta15", + "magento/module-customer": "0.74.0-beta15", + "magento/module-eav": "0.74.0-beta15", + "magento/module-theme": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/module-newsletter": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", + "magento/module-ui": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "suggest": { - "magento/module-cookie": "0.74.0-beta14" + "magento/module-cookie": "0.74.0-beta15" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Rss/composer.json b/app/code/Magento/Rss/composer.json index ca4231a1f2e5bd6127a2792c31677aca56da011a..0447b0bebdf0cc709578c91ba181a0e77a740623 100644 --- a/app/code/Magento/Rss/composer.json +++ b/app/code/Magento/Rss/composer.json @@ -3,14 +3,14 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", - "magento/module-customer": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", + "magento/module-customer": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Rule/composer.json b/app/code/Magento/Rule/composer.json index 5d0a656ebc0bb6db836a97268ddecc99906ad595..c36aaa58007967ca66a23806342c93c98daa4b66 100644 --- a/app/code/Magento/Rule/composer.json +++ b/app/code/Magento/Rule/composer.json @@ -3,16 +3,16 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-eav": "0.74.0-beta14", - "magento/module-catalog": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-eav": "0.74.0-beta15", + "magento/module-catalog": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "lib-libxml": "*", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Sales/composer.json b/app/code/Magento/Sales/composer.json index e9850b28b5ebbefd68476b14a55a1ea6f8bb63af..e6aa2aa21e933a73bf9e758b74af7541e6b4e447 100644 --- a/app/code/Magento/Sales/composer.json +++ b/app/code/Magento/Sales/composer.json @@ -3,35 +3,35 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-catalog": "0.74.0-beta14", - "magento/module-customer": "0.74.0-beta14", - "magento/module-authorization": "0.74.0-beta14", - "magento/module-payment": "0.74.0-beta14", - "magento/module-checkout": "0.74.0-beta14", - "magento/module-theme": "0.74.0-beta14", - "magento/module-sales-rule": "0.74.0-beta14", - "magento/module-sales-sequence": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/module-widget": "0.74.0-beta14", - "magento/module-directory": "0.74.0-beta14", - "magento/module-eav": "0.74.0-beta14", - "magento/module-tax": "0.74.0-beta14", - "magento/module-gift-message": "0.74.0-beta14", - "magento/module-reports": "0.74.0-beta14", - "magento/module-catalog-inventory": "0.74.0-beta14", - "magento/module-wishlist": "0.74.0-beta14", - "magento/module-email": "0.74.0-beta14", - "magento/module-shipping": "0.74.0-beta14", - "magento/module-config": "0.74.0-beta14", - "magento/module-media-storage": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", - "magento/module-ui": "0.74.0-beta14", - "magento/module-quote": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-catalog": "0.74.0-beta15", + "magento/module-customer": "0.74.0-beta15", + "magento/module-authorization": "0.74.0-beta15", + "magento/module-payment": "0.74.0-beta15", + "magento/module-checkout": "0.74.0-beta15", + "magento/module-theme": "0.74.0-beta15", + "magento/module-sales-rule": "0.74.0-beta15", + "magento/module-sales-sequence": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/module-widget": "0.74.0-beta15", + "magento/module-directory": "0.74.0-beta15", + "magento/module-eav": "0.74.0-beta15", + "magento/module-tax": "0.74.0-beta15", + "magento/module-gift-message": "0.74.0-beta15", + "magento/module-reports": "0.74.0-beta15", + "magento/module-catalog-inventory": "0.74.0-beta15", + "magento/module-wishlist": "0.74.0-beta15", + "magento/module-email": "0.74.0-beta15", + "magento/module-shipping": "0.74.0-beta15", + "magento/module-config": "0.74.0-beta15", + "magento/module-media-storage": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", + "magento/module-ui": "0.74.0-beta15", + "magento/module-quote": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Sales/etc/extension_attributes.xml b/app/code/Magento/Sales/etc/extension_attributes.xml deleted file mode 100644 index 970a003625928f218f2073cbb4262cd7d3876499..0000000000000000000000000000000000000000 --- a/app/code/Magento/Sales/etc/extension_attributes.xml +++ /dev/null @@ -1,14 +0,0 @@ -<?xml version="1.0"?> -<!-- -/** - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ ---> -<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Api/etc/extension_attributes.xsd"> - <extension_attributes for="Magento\Sales\Api\Data\OrderInterface"> - <attribute code="applied_taxes" type="Magento\Tax\Api\Data\OrderTaxDetailsAppliedTaxInterface[]" /> - <attribute code="item_applied_taxes" type="Magento\Tax\Api\Data\OrderTaxDetailsItemInterface[]" /> - <attribute code="converting_from_quote" type="boolean" /> - </extension_attributes> -</config> diff --git a/app/code/Magento/SalesRule/composer.json b/app/code/Magento/SalesRule/composer.json index e842b73e7b207cacc55274b6f11cb78df5d008ab..5623e73c6e5030c07a23b41f61470a63eb779210 100644 --- a/app/code/Magento/SalesRule/composer.json +++ b/app/code/Magento/SalesRule/composer.json @@ -3,26 +3,26 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-config": "0.74.0-beta14", - "magento/module-store": "0.74.0-beta14", - "magento/module-rule": "0.74.0-beta14", - "magento/module-catalog": "0.74.0-beta14", - "magento/module-sales": "0.74.0-beta14", - "magento/module-eav": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/module-customer": "0.74.0-beta14", - "magento/module-directory": "0.74.0-beta14", - "magento/module-shipping": "0.74.0-beta14", - "magento/module-payment": "0.74.0-beta14", - "magento/module-reports": "0.74.0-beta14", - "magento/module-catalog-rule": "0.74.0-beta14", - "magento/module-widget": "0.74.0-beta14", - "magento/module-quote": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-config": "0.74.0-beta15", + "magento/module-store": "0.74.0-beta15", + "magento/module-rule": "0.74.0-beta15", + "magento/module-catalog": "0.74.0-beta15", + "magento/module-sales": "0.74.0-beta15", + "magento/module-eav": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/module-customer": "0.74.0-beta15", + "magento/module-directory": "0.74.0-beta15", + "magento/module-shipping": "0.74.0-beta15", + "magento/module-payment": "0.74.0-beta15", + "magento/module-reports": "0.74.0-beta15", + "magento/module-catalog-rule": "0.74.0-beta15", + "magento/module-widget": "0.74.0-beta15", + "magento/module-quote": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/SalesSequence/composer.json b/app/code/Magento/SalesSequence/composer.json index 825a8e16713a027df4ea0dd1da8d58e2af16c7ea..00619abdd4ccc375066864103e2f2594e5de9eb7 100644 --- a/app/code/Magento/SalesSequence/composer.json +++ b/app/code/Magento/SalesSequence/composer.json @@ -3,11 +3,11 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/framework": "0.74.0-beta14", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Search/composer.json b/app/code/Magento/Search/composer.json index 98e1ce97eda1a03ced7574846f0a8d0d3efc2722..898482de7d85fbc0c0f4ebba192853c5ac88896a 100644 --- a/app/code/Magento/Search/composer.json +++ b/app/code/Magento/Search/composer.json @@ -3,15 +3,15 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/framework": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/module-catalog-search": "0.74.0-beta14", - "magento/module-store": "0.74.0-beta14", - "magento/module-reports": "0.74.0-beta14", + "magento/framework": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/module-catalog-search": "0.74.0-beta15", + "magento/module-store": "0.74.0-beta15", + "magento/module-reports": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/SendFriend/composer.json b/app/code/Magento/SendFriend/composer.json index b6712222a0c651e7a30e4186b029c40789fd30ae..9ccd7790f6db459b2bbfb5d2b3016b3d68611ed0 100644 --- a/app/code/Magento/SendFriend/composer.json +++ b/app/code/Magento/SendFriend/composer.json @@ -3,15 +3,15 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-catalog": "0.74.0-beta14", - "magento/module-customer": "0.74.0-beta14", - "magento/module-theme": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-catalog": "0.74.0-beta15", + "magento/module-customer": "0.74.0-beta15", + "magento/module-theme": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Shipping/composer.json b/app/code/Magento/Shipping/composer.json index 26e8e039f88d70c2292afe9ffeae4601a4f1ea4a..62cb5208ad210c275d76e2a2c5d639ee489ffd14 100644 --- a/app/code/Magento/Shipping/composer.json +++ b/app/code/Magento/Shipping/composer.json @@ -3,27 +3,27 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-catalog": "0.74.0-beta14", - "magento/module-sales": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/module-directory": "0.74.0-beta14", - "magento/module-contact": "0.74.0-beta14", - "magento/module-customer": "0.74.0-beta14", - "magento/module-payment": "0.74.0-beta14", - "magento/module-tax": "0.74.0-beta14", - "magento/module-catalog-inventory": "0.74.0-beta14", - "magento/module-quote": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-catalog": "0.74.0-beta15", + "magento/module-sales": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/module-directory": "0.74.0-beta15", + "magento/module-contact": "0.74.0-beta15", + "magento/module-customer": "0.74.0-beta15", + "magento/module-payment": "0.74.0-beta15", + "magento/module-tax": "0.74.0-beta15", + "magento/module-catalog-inventory": "0.74.0-beta15", + "magento/module-quote": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "ext-gd": "*", "magento/magento-composer-installer": "*" }, "suggest": { - "magento/module-fedex": "0.74.0-beta14", - "magento/module-ups": "0.74.0-beta14" + "magento/module-fedex": "0.74.0-beta15", + "magento/module-ups": "0.74.0-beta15" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Sitemap/composer.json b/app/code/Magento/Sitemap/composer.json index 6e9cd7ca7d1d8f9a280952fcccdd76c9b45a844c..8f90104dde46560271d479946fbd291437c32623 100644 --- a/app/code/Magento/Sitemap/composer.json +++ b/app/code/Magento/Sitemap/composer.json @@ -3,18 +3,18 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-catalog": "0.74.0-beta14", - "magento/module-eav": "0.74.0-beta14", - "magento/module-cms": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/module-catalog-url-rewrite": "0.74.0-beta14", - "magento/module-media-storage": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-catalog": "0.74.0-beta15", + "magento/module-eav": "0.74.0-beta15", + "magento/module-cms": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/module-catalog-url-rewrite": "0.74.0-beta15", + "magento/module-media-storage": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Store/composer.json b/app/code/Magento/Store/composer.json index 3bb80c7c21ec85900b2c9c7ec5b15ce3a6c99176..a99890e03fc5a37af4abca38b6f045cc7237e1d4 100644 --- a/app/code/Magento/Store/composer.json +++ b/app/code/Magento/Store/composer.json @@ -3,15 +3,15 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-directory": "0.74.0-beta14", - "magento/module-ui": "0.74.0-beta14", - "magento/module-config": "0.74.0-beta14", - "magento/module-media-storage": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-directory": "0.74.0-beta15", + "magento/module-ui": "0.74.0-beta15", + "magento/module-config": "0.74.0-beta15", + "magento/module-media-storage": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Tax/Model/App/Action/ContextPlugin.php b/app/code/Magento/Tax/Model/App/Action/ContextPlugin.php index 0d5f9de2e47c25c3261c4322fe94226c12058b70..9e9227adffd3487bf3f12b21966caee4fedd922d 100644 --- a/app/code/Magento/Tax/Model/App/Action/ContextPlugin.php +++ b/app/code/Magento/Tax/Model/App/Action/ContextPlugin.php @@ -84,7 +84,8 @@ class ContextPlugin \Closure $proceed, \Magento\Framework\App\RequestInterface $request ) { - if (!$this->moduleManager->isEnabled('Magento_PageCache') || + if (!$this->customerSession->isLoggedIn() || + !$this->moduleManager->isEnabled('Magento_PageCache') || !$this->cacheConfig->isEnabled() || !$this->taxHelper->isCatalogPriceDisplayAffectedByTax()) { return $proceed($request); diff --git a/app/code/Magento/Tax/Model/Observer.php b/app/code/Magento/Tax/Model/Observer.php index 6f8d41fbb17e96ece0bcaad9c87cb57e14498fac..25bf3ea1b56461e019947d147ca109ca6297151a 100644 --- a/app/code/Magento/Tax/Model/Observer.php +++ b/app/code/Magento/Tax/Model/Observer.php @@ -20,16 +20,6 @@ class Observer */ protected $_taxData; - /** - * @var \Magento\Tax\Model\Sales\Order\TaxFactory - */ - protected $_orderTaxFactory; - - /** - * @var \Magento\Sales\Model\Order\Tax\ItemFactory - */ - protected $_taxItemFactory; - /** * @var \Magento\Tax\Model\Calculation */ @@ -57,8 +47,6 @@ class Observer /** * @param \Magento\Tax\Helper\Data $taxData - * @param \Magento\Tax\Model\Sales\Order\TaxFactory $orderTaxFactory - * @param \Magento\Sales\Model\Order\Tax\ItemFactory $taxItemFactory * @param \Magento\Tax\Model\Calculation $calculation * @param \Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate * @param \Magento\Tax\Model\Resource\Report\TaxFactory $reportTaxFactory @@ -67,8 +55,6 @@ class Observer */ public function __construct( \Magento\Tax\Helper\Data $taxData, - \Magento\Tax\Model\Sales\Order\TaxFactory $orderTaxFactory, - \Magento\Sales\Model\Order\Tax\ItemFactory $taxItemFactory, \Magento\Tax\Model\Calculation $calculation, \Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate, \Magento\Tax\Model\Resource\Report\TaxFactory $reportTaxFactory, @@ -76,8 +62,6 @@ class Observer \Magento\Framework\Registry $registry ) { $this->_taxData = $taxData; - $this->_orderTaxFactory = $orderTaxFactory; - $this->_taxItemFactory = $taxItemFactory; $this->_calculation = $calculation; $this->_localeDate = $localeDate; $this->_reportTaxFactory = $reportTaxFactory; @@ -114,145 +98,6 @@ class Observer } } - /** - * Save order tax information - * - * @param \Magento\Framework\Event\Observer $observer - * @return void - * @SuppressWarnings(PHPMD.CyclomaticComplexity) - * @SuppressWarnings(PHPMD.NPathComplexity) - * @SuppressWarnings(PHPMD.ExcessiveMethodLength) - */ - public function salesEventOrderAfterSave(\Magento\Framework\Event\Observer $observer) - { - $order = $observer->getEvent()->getOrder(); - - if (!$order->getConvertingFromQuote() || $order->getAppliedTaxIsSaved()) { - return; - } - - $taxesAttr = $order->getCustomAttribute('applied_taxes'); - if (is_null($taxesAttr) || !is_array($taxesAttr->getValue())) { - $taxes = []; - } else { - $taxes = $taxesAttr->getValue(); - } - - $getTaxesForItemsAttr = $order->getCustomAttribute('item_applied_taxes'); - if (is_null($getTaxesForItemsAttr) || !is_array($getTaxesForItemsAttr->getValue())) { - $getTaxesForItems = []; - } else { - $getTaxesForItems = $getTaxesForItemsAttr->getValue(); - } - - $ratesIdQuoteItemId = []; - foreach ($getTaxesForItems as $taxesArray) { - foreach ($taxesArray as $rates) { - if (count($rates['rates']) == 1) { - $ratesIdQuoteItemId[$rates['id']][] = [ - 'id' => $rates['item_id'], - 'percent' => $rates['percent'], - 'code' => $rates['rates'][0]['code'], - 'associated_item_id' => $rates['associated_item_id'], - 'item_type' => $rates['item_type'], - 'amount' => $rates['amount'], - 'base_amount' => $rates['base_amount'], - 'real_amount' => $rates['amount'], - 'real_base_amount' => $rates['base_amount'], - ]; - } else { - $percentSum = 0; - foreach ($rates['rates'] as $rate) { - $real_amount = $rates['amount'] * $rate['percent'] / $rates['percent']; - $real_base_amount = $rates['base_amount'] * $rate['percent'] / $rates['percent']; - $ratesIdQuoteItemId[$rates['id']][] = [ - 'id' => $rates['item_id'], - 'percent' => $rate['percent'], - 'code' => $rate['code'], - 'associated_item_id' => $rates['associated_item_id'], - 'item_type' => $rates['item_type'], - 'amount' => $rates['amount'], - 'base_amount' => $rates['base_amount'], - 'real_amount' => $real_amount, - 'real_base_amount' => $real_base_amount, - ]; - $percentSum += $rate['percent']; - } - } - } - } - - foreach ($taxes as $row) { - $id = $row['id']; - foreach ($row['rates'] as $tax) { - if (is_null($row['percent'])) { - $baseRealAmount = $row['base_amount']; - } else { - if ($row['percent'] == 0 || $tax['percent'] == 0) { - continue; - } - $baseRealAmount = $row['base_amount'] / $row['percent'] * $tax['percent']; - } - $hidden = isset($row['hidden']) ? $row['hidden'] : 0; - $priority = isset($tax['priority']) ? $tax['priority'] : 0; - $position = isset($tax['position']) ? $tax['position'] : 0; - $process = isset($row['process']) ? $row['process'] : 0; - $data = [ - 'order_id' => $order->getId(), - 'code' => $tax['code'], - 'title' => $tax['title'], - 'hidden' => $hidden, - 'percent' => $tax['percent'], - 'priority' => $priority, - 'position' => $position, - 'amount' => $row['amount'], - 'base_amount' => $row['base_amount'], - 'process' => $process, - 'base_real_amount' => $baseRealAmount, - ]; - - /** @var $orderTax \Magento\Tax\Model\Sales\Order\Tax */ - $orderTax = $this->_orderTaxFactory->create(); - $result = $orderTax->setData($data)->save(); - - if (isset($ratesIdQuoteItemId[$id])) { - foreach ($ratesIdQuoteItemId[$id] as $quoteItemId) { - if ($quoteItemId['code'] == $tax['code']) { - $itemId = null; - $associatedItemId = null; - if (isset($quoteItemId['id'])) { - //This is a product item - $item = $order->getItemByQuoteItemId($quoteItemId['id']); - $itemId = $item->getId(); - } elseif (isset($quoteItemId['associated_item_id'])) { - //This item is associated with a product item - $item = $order->getItemByQuoteItemId($quoteItemId['associated_item_id']); - $associatedItemId = $item->getId(); - } - - $data = [ - 'item_id' => $itemId, - 'tax_id' => $result->getTaxId(), - 'tax_percent' => $quoteItemId['percent'], - 'associated_item_id' => $associatedItemId, - 'amount' => $quoteItemId['amount'], - 'base_amount' => $quoteItemId['base_amount'], - 'real_amount' => $quoteItemId['real_amount'], - 'real_base_amount' => $quoteItemId['real_base_amount'], - 'taxable_item_type' => $quoteItemId['item_type'], - ]; - /** @var $taxItem \Magento\Sales\Model\Order\Tax\Item */ - $taxItem = $this->_taxItemFactory->create(); - $taxItem->setData($data)->save(); - } - } - } - } - } - - $order->setAppliedTaxIsSaved(true); - } - /** * Refresh sales tax report statistics for last day * diff --git a/app/code/Magento/Tax/Model/Plugin/OrderSave.php b/app/code/Magento/Tax/Model/Plugin/OrderSave.php new file mode 100644 index 0000000000000000000000000000000000000000..145c98ad60e38784b8c52cc9818ffff9fa5cd6bc --- /dev/null +++ b/app/code/Magento/Tax/Model/Plugin/OrderSave.php @@ -0,0 +1,184 @@ +<?php +/** + * + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + +namespace Magento\Tax\Model\Plugin; + +class OrderSave +{ + /** + * @var \Magento\Tax\Model\Sales\Order\TaxFactory + */ + protected $orderTaxFactory; + + /** + * @var \Magento\Sales\Model\Order\Tax\ItemFactory + */ + protected $taxItemFactory; + + /** + * @param \Magento\Tax\Model\Sales\Order\TaxFactory $orderTaxFactory + * @param \Magento\Sales\Model\Order\Tax\ItemFactory $taxItemFactory + */ + public function __construct( + \Magento\Tax\Model\Sales\Order\TaxFactory $orderTaxFactory, + \Magento\Sales\Model\Order\Tax\ItemFactory $taxItemFactory + ) { + $this->orderTaxFactory = $orderTaxFactory; + $this->taxItemFactory = $taxItemFactory; + } + + /** + * Save order tax + * + * @param \Magento\Sales\Api\OrderRepositoryInterface $subject + * @param \Magento\Sales\Api\Data\OrderInterface $order + * @return \Magento\Sales\Api\Data\OrderInterface + * @SuppressWarnings(PHPMD.UnusedFormalParameter) + */ + public function afterSave( + \Magento\Sales\Api\OrderRepositoryInterface $subject, + \Magento\Sales\Api\Data\OrderInterface $order + ) { + $this->saveOrderTax($order); + return $order; + } + + /** + * @param \Magento\Sales\Api\Data\OrderInterface $order + * @return $this + * @SuppressWarnings(PHPMD.CyclomaticComplexity) + * @SuppressWarnings(PHPMD.NPathComplexity) + * @SuppressWarnings(PHPMD.ExcessiveMethodLength) + */ + protected function saveOrderTax(\Magento\Sales\Api\Data\OrderInterface $order) + { + $extensionAttribute = $order->getExtensionAttributes(); + if (!$extensionAttribute || + !$extensionAttribute->getConvertingFromQuote() || + $order->getAppliedTaxIsSaved()) { + return; + } + + $taxes = $extensionAttribute->getAppliedTaxes(); + if ($taxes == null) { + $taxes = []; + } + + $taxesForItems = $extensionAttribute->getItemAppliedTaxes(); + if ($taxesForItems == null) { + $taxesForItems = []; + } + + $ratesIdQuoteItemId = []; + foreach ($taxesForItems as $taxesArray) { + foreach ($taxesArray as $rates) { + if (count($rates['rates']) == 1) { + $ratesIdQuoteItemId[$rates['id']][] = [ + 'id' => $rates['item_id'], + 'percent' => $rates['percent'], + 'code' => $rates['rates'][0]['code'], + 'associated_item_id' => $rates['associated_item_id'], + 'item_type' => $rates['item_type'], + 'amount' => $rates['amount'], + 'base_amount' => $rates['base_amount'], + 'real_amount' => $rates['amount'], + 'real_base_amount' => $rates['base_amount'], + ]; + } else { + $percentSum = 0; + foreach ($rates['rates'] as $rate) { + $realAmount = $rates['amount'] * $rate['percent'] / $rates['percent']; + $realBaseAmount = $rates['base_amount'] * $rate['percent'] / $rates['percent']; + $ratesIdQuoteItemId[$rates['id']][] = [ + 'id' => $rates['item_id'], + 'percent' => $rate['percent'], + 'code' => $rate['code'], + 'associated_item_id' => $rates['associated_item_id'], + 'item_type' => $rates['item_type'], + 'amount' => $rates['amount'], + 'base_amount' => $rates['base_amount'], + 'real_amount' => $realAmount, + 'real_base_amount' => $realBaseAmount, + ]; + $percentSum += $rate['percent']; + } + } + } + } + + foreach ($taxes as $row) { + $id = $row['id']; + foreach ($row['rates'] as $tax) { + if ($row['percent'] == null) { + $baseRealAmount = $row['base_amount']; + } else { + if ($row['percent'] == 0 || $tax['percent'] == 0) { + continue; + } + $baseRealAmount = $row['base_amount'] / $row['percent'] * $tax['percent']; + } + $hidden = isset($row['hidden']) ? $row['hidden'] : 0; + $priority = isset($tax['priority']) ? $tax['priority'] : 0; + $position = isset($tax['position']) ? $tax['position'] : 0; + $process = isset($row['process']) ? $row['process'] : 0; + $data = [ + 'order_id' => $order->getEntityId(), + 'code' => $tax['code'], + 'title' => $tax['title'], + 'hidden' => $hidden, + 'percent' => $tax['percent'], + 'priority' => $priority, + 'position' => $position, + 'amount' => $row['amount'], + 'base_amount' => $row['base_amount'], + 'process' => $process, + 'base_real_amount' => $baseRealAmount, + ]; + + /** @var $orderTax \Magento\Tax\Model\Sales\Order\Tax */ + $orderTax = $this->orderTaxFactory->create(); + $result = $orderTax->setData($data)->save(); + + if (isset($ratesIdQuoteItemId[$id])) { + foreach ($ratesIdQuoteItemId[$id] as $quoteItemId) { + if ($quoteItemId['code'] == $tax['code']) { + $itemId = null; + $associatedItemId = null; + if (isset($quoteItemId['id'])) { + //This is a product item + $item = $order->getItemByQuoteItemId($quoteItemId['id']); + $itemId = $item->getId(); + } elseif (isset($quoteItemId['associated_item_id'])) { + //This item is associated with a product item + $item = $order->getItemByQuoteItemId($quoteItemId['associated_item_id']); + $associatedItemId = $item->getId(); + } + + $data = [ + 'item_id' => $itemId, + 'tax_id' => $result->getTaxId(), + 'tax_percent' => $quoteItemId['percent'], + 'associated_item_id' => $associatedItemId, + 'amount' => $quoteItemId['amount'], + 'base_amount' => $quoteItemId['base_amount'], + 'real_amount' => $quoteItemId['real_amount'], + 'real_base_amount' => $quoteItemId['real_base_amount'], + 'taxable_item_type' => $quoteItemId['item_type'], + ]; + /** @var $taxItem \Magento\Sales\Model\Order\Tax\Item */ + $taxItem = $this->taxItemFactory->create(); + $taxItem->setData($data)->save(); + } + } + } + } + } + + $order->setAppliedTaxIsSaved(true); + return $this; + } +} diff --git a/app/code/Magento/Tax/Model/Quote/ToOrderConverter.php b/app/code/Magento/Tax/Model/Quote/ToOrderConverter.php index c269ee02dad4e39942e757265796d51cd4f095fd..f45aebc00cbbc60b9c0b60da06024f69f23b7c0d 100644 --- a/app/code/Magento/Tax/Model/Quote/ToOrderConverter.php +++ b/app/code/Magento/Tax/Model/Quote/ToOrderConverter.php @@ -16,6 +16,20 @@ class ToOrderConverter */ protected $quoteAddress; + /** + * @var \Magento\Sales\Api\Data\OrderExtensionFactory + */ + protected $orderExtensionFactory; + + /** + * @param \Magento\Sales\Api\Data\OrderExtensionFactory $orderExtensionFactory + */ + public function __construct( + \Magento\Sales\Api\Data\OrderExtensionFactory $orderExtensionFactory + ) { + $this->orderExtensionFactory = $orderExtensionFactory; + } + /** * @param QuoteAddressToOrder $subject * @param QuoteAddress $address @@ -39,21 +53,20 @@ class ToOrderConverter { /** @var \Magento\Sales\Model\Order $order */ $taxes = $this->quoteAddress->getAppliedTaxes(); - if (is_array($taxes)) { - if (is_array($order->getAppliedTaxes())) { - $taxes = array_merge($order->getAppliedTaxes(), $taxes); - } - $order->setCustomAttribute('applied_taxes', $taxes); - $order->setCustomAttribute('converting_from_quote', true); + $extensionAttributes = $order->getExtensionAttributes(); + if ($extensionAttributes == null) { + $extensionAttributes = $this->orderExtensionFactory->create(); + } + if (!empty($taxes)) { + $extensionAttributes->setAppliedTaxes($taxes); + $extensionAttributes->setConvertingFromQuote(true); } $itemAppliedTaxes = $this->quoteAddress->getItemsAppliedTaxes(); - if (is_array($itemAppliedTaxes)) { - if (is_array($order->getItemAppliedTaxes())) { - $itemAppliedTaxes = array_merge($order->getItemAppliedTaxes(), $itemAppliedTaxes); - } - $order->setCustomAttribute('item_applied_taxes', $itemAppliedTaxes); + if (!empty($itemAppliedTaxes)) { + $extensionAttributes->setItemAppliedTaxes($itemAppliedTaxes); } + $order->setExtensionAttributes($extensionAttributes); return $order; } } diff --git a/app/code/Magento/Tax/Test/Unit/App/Action/ContextPluginTest.php b/app/code/Magento/Tax/Test/Unit/App/Action/ContextPluginTest.php index 66ad1afdbcad98f745caad2d25bc55af4ab53a91..a220173520494df90e106aa9c76734c667a83024 100644 --- a/app/code/Magento/Tax/Test/Unit/App/Action/ContextPluginTest.php +++ b/app/code/Magento/Tax/Test/Unit/App/Action/ContextPluginTest.php @@ -12,6 +12,16 @@ class ContextPluginTest extends \PHPUnit_Framework_TestCase */ protected $taxHelperMock; + /** + * @var \Magento\Weee\Helper\Data + */ + protected $weeeHelperMock; + + /** + * @var \Magento\Weee\Model\Tax + */ + protected $weeeTaxMock; + /** * @var \Magento\Framework\App\Http\Context */ @@ -49,6 +59,14 @@ class ContextPluginTest extends \PHPUnit_Framework_TestCase ->disableOriginalConstructor() ->getMock(); + $this->weeeHelperMock = $this->getMockBuilder('Magento\Weee\Helper\Data') + ->disableOriginalConstructor() + ->getMock(); + + $this->weeeTaxMock = $this->getMockBuilder('\Magento\Weee\Model\Tax') + ->disableOriginalConstructor() + ->getMock(); + $this->httpContextMock = $this->getMockBuilder('Magento\Framework\App\Http\Context') ->disableOriginalConstructor() ->getMock(); @@ -60,7 +78,8 @@ class ContextPluginTest extends \PHPUnit_Framework_TestCase $this->customerSessionMock = $this->getMockBuilder('Magento\Customer\Model\Session') ->disableOriginalConstructor() ->setMethods([ - 'getDefaultTaxBillingAddress', 'getDefaultTaxShippingAddress', 'getCustomerTaxClassId' + 'getDefaultTaxBillingAddress', 'getDefaultTaxShippingAddress', 'getCustomerTaxClassId', + 'getWebsiteId', 'isLoggedIn' ]) ->getMock(); @@ -78,57 +97,87 @@ class ContextPluginTest extends \PHPUnit_Framework_TestCase 'customerSession' => $this->customerSessionMock, 'httpContext' => $this->httpContextMock, 'calculation' => $this->taxCalculationMock, + 'weeeTax' => $this->weeeTaxMock, 'taxHelper' => $this->taxHelperMock, + 'weeeHelper' => $this->weeeHelperMock, 'moduleManager' => $this->moduleManagerMock, 'cacheConfig' => $this->cacheConfigMock ] ); } - public function testAroundDispatch() + /** + * @param bool $cache + * @param bool $taxEnabled + * @param bool $loggedIn + * @dataProvider dataProviderAroundDispatch + */ + public function testAroundDispatch($cache, $taxEnabled, $loggedIn) { + $this->customerSessionMock->expects($this->any()) + ->method('isLoggedIn') + ->willReturn($loggedIn); + $this->moduleManagerMock->expects($this->any()) ->method('isEnabled') ->with('Magento_PageCache') - ->willReturn(true); + ->willReturn($cache); $this->cacheConfigMock->expects($this->any()) ->method('isEnabled') - ->willReturn(true); - - $this->taxHelperMock->expects($this->any()) - ->method('isCatalogPriceDisplayAffectedByTax') - ->willReturn(true); - - $this->customerSessionMock->expects($this->once()) - ->method('getDefaultTaxBillingAddress') - ->willReturn(['country_id' => 1, 'region_id' => null, 'postcode' => 11111]); - $this->customerSessionMock->expects($this->once()) - ->method('getDefaultTaxShippingAddress') - ->willReturn(['country_id' => 1, 'region_id' => null, 'postcode' => 11111]); - $this->customerSessionMock->expects($this->once()) - ->method('getCustomerTaxClassId') - ->willReturn(1); - - $this->taxCalculationMock->expects($this->once()) - ->method('getTaxRates') - ->with( - ['country_id' => 1, 'region_id' => null, 'postcode' => 11111], - ['country_id' => 1, 'region_id' => null, 'postcode' => 11111], - 1 - ) - ->willReturn([]); - - $this->httpContextMock->expects($this->once()) - ->method('setValue') - ->with('tax_rates', [], 0); - - $action = $this->objectManager->getObject('Magento\Framework\App\Action\Action'); - $request = $this->getMock('\Magento\Framework\App\Request\Http', ['getActionName'], [], '', false); - $expectedResult = 'expectedResult'; - $proceed = function ($request) use ($expectedResult) { - return $expectedResult; - }; - $this->contextPlugin->aroundDispatch($action, $proceed, $request); + ->willReturn($cache); + + if ($cache && $loggedIn) { + $this->taxHelperMock->expects($this->any()) + ->method('isCatalogPriceDisplayAffectedByTax') + ->willReturn($taxEnabled); + + if ($taxEnabled) { + $this->customerSessionMock->expects($this->once()) + ->method('getDefaultTaxBillingAddress') + ->willReturn(['country_id' => 1, 'region_id' => 1, 'postcode' => 11111]); + $this->customerSessionMock->expects($this->once()) + ->method('getDefaultTaxShippingAddress') + ->willReturn(['country_id' => 1, 'region_id' => 1, 'postcode' => 11111]); + $this->customerSessionMock->expects($this->once()) + ->method('getCustomerTaxClassId') + ->willReturn(1); + + $this->taxCalculationMock->expects($this->once()) + ->method('getTaxRates') + ->with( + ['country_id' => 1, 'region_id' => 1, 'postcode' => 11111], + ['country_id' => 1, 'region_id' => 1, 'postcode' => 11111], + 1 + ) + ->willReturn([]); + + $this->httpContextMock->expects($this->any()) + ->method('setValue') + ->with('tax_rates', [], 0); + } + + $action = $this->objectManager->getObject('Magento\Framework\App\Action\Action'); + $request = $this->getMock('\Magento\Framework\App\Request\Http', ['getActionName'], [], '', false); + $expectedResult = 'expectedResult'; + $proceed = function ($request) use ($expectedResult) { + return $expectedResult; + }; + $this->contextPlugin->aroundDispatch($action, $proceed, $request); + } + } + + /** + * @return array + */ + public function dataProviderAroundDispatch() + { + return [ + [false, false, false], + [true, true, false], + [true, true, true], + [true, false, true], + [true, true, true] + ]; } } diff --git a/app/code/Magento/Tax/Test/Unit/Model/Observer/SessionTest.php b/app/code/Magento/Tax/Test/Unit/Model/Observer/SessionTest.php index 8ef95ead2e386d8e95a03ff03d02a76b8350c89b..1226fa6e9d35d62140f1abe8bae59273c496910d 100755 --- a/app/code/Magento/Tax/Test/Unit/Model/Observer/SessionTest.php +++ b/app/code/Magento/Tax/Test/Unit/Model/Observer/SessionTest.php @@ -64,7 +64,7 @@ class SessionTest extends \PHPUnit_Framework_TestCase $this->customerSessionMock = $this->getMockBuilder('Magento\Customer\Model\Session') ->disableOriginalConstructor() ->setMethods([ - 'setCustomerTaxClassId', 'setDefaultTaxBillingAddress', 'setDefaultTaxShippingAddress' + 'setCustomerTaxClassId', 'setDefaultTaxBillingAddress', 'setDefaultTaxShippingAddress', 'setWebsiteId' ]) ->getMock(); diff --git a/app/code/Magento/Tax/Test/Unit/Model/Plugin/OrderSaveTest.php b/app/code/Magento/Tax/Test/Unit/Model/Plugin/OrderSaveTest.php new file mode 100644 index 0000000000000000000000000000000000000000..f50e79c9658b377c088ab51aed488d2494ee8f82 --- /dev/null +++ b/app/code/Magento/Tax/Test/Unit/Model/Plugin/OrderSaveTest.php @@ -0,0 +1,463 @@ +<?php +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + +namespace Magento\Tax\Test\Unit\Model\Plugin; + +use \Magento\Framework\TestFramework\Unit\Helper\ObjectManager; + +class OrderSaveTest extends \PHPUnit_Framework_TestCase +{ + const ORDERID = 123; + const ITEMID = 151; + const ORDER_ITEM_ID = 116; + + /** + * @var \Magento\Tax\Model\Sales\Order\TaxFactory|\PHPUnit_Framework_MockObject_MockObject + */ + protected $orderTaxFactoryMock; + + /** + * @var \Magento\Sales\Model\Order\Tax\ItemFactory|\PHPUnit_Framework_MockObject_MockObject + */ + protected $taxItemFactoryMock; + + /** + * @var \Magento\Sales\Api\OrderRepositoryInterface|\PHPUnit_Framework_MockObject_MockObject + */ + protected $subjectMock; + + /** + * @var \Magento\Framework\TestFramework\Unit\Helper\ObjectManager + */ + protected $objectManagerHelper; + + /** + * @var \Magento\Tax\Model\Plugin\OrderSave + */ + protected $model; + + public function setUp() + { + $this->orderTaxFactoryMock = $this->getMockBuilder( + '\Magento\Tax\Model\Sales\Order\TaxFactory' + )->disableOriginalConstructor() + ->setMethods(['create']) + ->getMock(); + + $this->taxItemFactoryMock = $this->getMockBuilder('\Magento\Sales\Model\Order\Tax\ItemFactory') + ->disableOriginalConstructor() + ->setMethods(['create']) + ->getMock(); + $this->subjectMock = $this->getMockForAbstractClass('\Magento\Sales\Api\OrderRepositoryInterface'); + + $this->objectManagerHelper = new ObjectManager($this); + $this->model = $this->objectManagerHelper->getObject( + '\Magento\Tax\Model\Plugin\OrderSave', + [ + 'orderTaxFactory' => $this->orderTaxFactoryMock, + 'taxItemFactory' => $this->taxItemFactoryMock, + ] + ); + } + + protected function setupOrderMock() + { + $orderMock = $this->getMockBuilder('\Magento\Sales\Model\Order') + ->disableOriginalConstructor() + ->setMethods( + [ + 'getExtensionAttributes', + 'getAppliedTaxIsSaved', + 'getItemByQuoteItemId', + 'setAppliedTaxIsSaved', + 'getEntityId', + ] + )->getMock(); + + return $orderMock; + } + + protected function setupExtensionAttributeMock() + { + $orderExtensionAttributeMock = $this->getMockBuilder('\Magento\Sales\Api\Data\OrderExtensionInterface') + ->disableOriginalConstructor() + ->setMethods( + [ + 'getAppliedTaxes', + 'getConvertingFromQuote', + 'getItemAppliedTaxes', + ] + )->getMock(); + + return $orderExtensionAttributeMock; + } + + protected function verifyOrderTaxes($expectedTaxes) + { + $index = 0; + $orderTaxes = []; + foreach ($expectedTaxes as $orderTaxId => $orderTaxData) { + $orderTaxMock = $this->getMockBuilder('\Magento\Tax\Model\Sales\Order\Tax') + ->disableOriginalConstructor() + ->setMethods( + [ + 'getTaxId', + 'setData', + 'save', + ] + )->getMock(); + $orderTaxMock->expects($this->once()) + ->method('setData') + ->with($orderTaxData) + ->willReturnSelf(); + $orderTaxMock->expects($this->once()) + ->method('save') + ->willReturnSelf(); + $orderTaxMock->expects($this->atLeastOnce()) + ->method('getTaxId') + ->willReturn($orderTaxId); + $this->orderTaxFactoryMock->expects($this->at($index)) + ->method('create') + ->willReturn($orderTaxMock); + $orderTaxes[] = $orderTaxMock; + $index++; + } + } + + public function verifyItemTaxes($expectedItemTaxes) + { + $index = 0; + $itemTaxes = []; + foreach ($expectedItemTaxes as $itemTax) { + $itemTaxMock = $this->getMockBuilder('\Magento\Tax\Model\Sales\Order\Tax\Item') + ->disableOriginalConstructor() + ->setMethods( + [ + 'setData', + 'save', + ] + )->getMock(); + $itemTaxMock->expects($this->once()) + ->method('setData') + ->with($itemTax) + ->willReturnSelf(); + $itemTaxMock->expects($this->once()) + ->method('save') + ->willReturnSelf(); + $this->taxItemFactoryMock->expects($this->at($index)) + ->method('create') + ->willReturn($itemTaxMock); + $itemTaxes[] = $itemTaxMock; + $index++; + } + } + + /** + * @dataProvider afterSaveDataProvider + */ + public function testAfterSave( + $appliedTaxes, + $itemAppliedTaxes, + $expectedTaxes, + $expectedItemTaxes + ) { + $orderMock = $this->setupOrderMock(); + + $extensionAttributeMock = $this->setupExtensionAttributeMock(); + $extensionAttributeMock->expects($this->any()) + ->method('getConvertingFromQuote') + ->willReturn(true); + $extensionAttributeMock->expects($this->any()) + ->method('getAppliedTaxes') + ->willReturn($appliedTaxes); + $extensionAttributeMock->expects($this->any()) + ->method('getItemAppliedTaxes') + ->willReturn($itemAppliedTaxes); + + + $orderItemMock = $this->getMockBuilder('\Magento\Sales\Model\Order\Item') + ->disableOriginalConstructor() + ->setMethods(['getId', ]) + ->getMock(); + $orderItemMock->expects($this->atLeastOnce()) + ->method('getId') + ->willReturn(self::ORDER_ITEM_ID); + $orderMock->expects($this->once()) + ->method('getAppliedTaxIsSaved') + ->willReturn(false); + $orderMock->expects($this->once()) + ->method('getExtensionAttributes') + ->willReturn($extensionAttributeMock); + $orderMock->expects($this->atLeastOnce()) + ->method('getItemByQuoteItemId') + ->with(self::ITEMID) + ->willReturn($orderItemMock); + $orderMock->expects($this->atLeastOnce()) + ->method('getEntityId') + ->willReturn(self::ORDERID); + + $orderMock->expects($this->once()) + ->method('setAppliedTaxIsSaved') + ->with(true); + + $this->verifyOrderTaxes($expectedTaxes); + $this->verifyItemTaxes($expectedItemTaxes); + + $this->assertEquals($orderMock, $this->model->afterSave($this->subjectMock, $orderMock)); + } + + /** + * @return array + * @SuppressWarnings(PHPMD.ExcessiveMethodLength) + */ + public function afterSaveDataProvider() + { + return [ + //one item with shipping + //three tax rates: state and national tax rates of 6 and 5 percent with priority 0 + //city tax rate of 3 percent with priority 1 + 'item_with_shipping_three_tax' => [ + 'applied_taxes' => [ + [ + 'amount' => 0.66, + 'base_amount' => 0.66, + 'percent' => 11, + 'id' => 'ILUS', + 'rates' => [ + [ + 'percent' => 6, + 'code' => 'IL', + 'title' => 'IL', + ], + [ + 'percent' => 5, + 'code' => 'US', + 'title' => 'US', + ], + ], + ], + [ + 'amount' => 0.2, + 'base_amount' => 0.2, + 'percent' => 3.33, + 'id' => 'CityTax', + 'rates' => [ + [ + 'percent' => 3, + 'code' => 'CityTax', + 'title' => 'CityTax', + ], + ], + ], + ], + 'item_applied_taxes' => [ + //item tax, three tax rates + [ + //first two taxes are combined + [ + 'amount' => 0.11, + 'base_amount' => 0.11, + 'percent' => 11, + 'id' => 'ILUS', + 'rates' => [ + [ + 'percent' => 6, + 'code' => 'IL', + 'title' => 'IL', + ], + [ + 'percent' => 5, + 'code' => 'US', + 'title' => 'US', + ], + ], + 'item_id' => self::ITEMID, + 'item_type' => 'product', + 'associated_item_id' => null, + ], + //city tax + [ + 'amount' => 0.03, + 'base_amount' => 0.03, + 'percent' => 3.33, + 'id' => 'CityTax', + 'rates' => [ + [ + 'percent' => 3, + 'code' => 'CityTax', + 'title' => 'CityTax', + ], + ], + 'item_id' => self::ITEMID, + 'item_type' => 'product', + 'associated_item_id' => null, + ], + ], + //shipping tax + [ + //first two taxes are combined + [ + 'amount' => 0.55, + 'base_amount' => 0.55, + 'percent' => 11, + 'id' => 'ILUS', + 'rates' => [ + [ + 'percent' => 6, + 'code' => 'IL', + 'title' => 'IL', + ], + [ + 'percent' => 5, + 'code' => 'US', + 'title' => 'US', + ], + ], + 'item_id' => null, + 'item_type' => 'shipping', + 'associated_item_id' => null, + ], + //city tax + [ + 'amount' => 0.17, + 'base_amount' => 0.17, + 'percent' => 3.33, + 'id' => 'CityTax', + 'rates' => [ + [ + 'percent' => 3, + 'code' => 'CityTax', + 'title' => 'CityTax', + ], + ], + 'item_id' => null, + 'item_type' => 'shipping', + 'associated_item_id' => null, + ], + ], + ], + 'expected_order_taxes' => [ + //state tax + '35' => [ + 'order_id' => self::ORDERID, + 'code' => 'IL', + 'title' => 'IL', + 'hidden' => 0, + 'percent' => 6, + 'priority' => 0, + 'position' => 0, + 'amount' => 0.66, + 'base_amount' => 0.66, + 'process' => 0, + 'base_real_amount' => 0.36, + ], + //federal tax + '36' => [ + 'order_id' => self::ORDERID, + 'code' => 'US', + 'title' => 'US', + 'hidden' => 0, + 'percent' => 5, + 'priority' => 0, + 'position' => 0, + 'amount' => 0.66, //combined amount + 'base_amount' => 0.66, + 'process' => 0, + 'base_real_amount' => 0.3, //portion for specific rate + ], + //city tax + '37' => [ + 'order_id' => self::ORDERID, + 'code' => 'CityTax', + 'title' => 'CityTax', + 'hidden' => 0, + 'percent' => 3, + 'priority' => 0, + 'position' => 0, + 'amount' => 0.2, //combined amount + 'base_amount' => 0.2, + 'process' => 0, + 'base_real_amount' => 0.18018018018018, //this number is meaningless since this is single rate + ], + ], + 'expected_item_taxes' => [ + [ + //state tax for item + 'item_id' => self::ORDER_ITEM_ID, + 'tax_id' => '35', + 'tax_percent' => 6, + 'associated_item_id' => null, + 'amount' => 0.11, + 'base_amount' => 0.11, + 'real_amount' => 0.06, + 'real_base_amount' => 0.06, + 'taxable_item_type' => 'product', + ], + [ + //state tax for shipping + 'item_id' => null, + 'tax_id' => '35', + 'tax_percent' => 6, + 'associated_item_id' => null, + 'amount' => 0.55, + 'base_amount' => 0.55, + 'real_amount' => 0.3, + 'real_base_amount' => 0.3, + 'taxable_item_type' => 'shipping', + ], + [ + //federal tax for item + 'item_id' => self::ORDER_ITEM_ID, + 'tax_id' => '36', + 'tax_percent' => 5, + 'associated_item_id' => null, + 'amount' => 0.11, + 'base_amount' => 0.11, + 'real_amount' => 0.05, + 'real_base_amount' => 0.05, + 'taxable_item_type' => 'product', + ], + [ + //federal tax for shipping + 'item_id' => null, + 'tax_id' => '36', + 'tax_percent' => 5, + 'associated_item_id' => null, + 'amount' => 0.55, + 'base_amount' => 0.55, + 'real_amount' => 0.25, + 'real_base_amount' => 0.25, + 'taxable_item_type' => 'shipping', + ], + [ + //city tax for item + 'item_id' => self::ORDER_ITEM_ID, + 'tax_id' => '37', + 'tax_percent' => 3.33, + 'associated_item_id' => null, + 'amount' => 0.03, + 'base_amount' => 0.03, + 'real_amount' => 0.03, + 'real_base_amount' => 0.03, + 'taxable_item_type' => 'product', + ], + [ + //city tax for shipping + 'item_id' => null, + 'tax_id' => '37', + 'tax_percent' => 3.33, + 'associated_item_id' => null, + 'amount' => 0.17, + 'base_amount' => 0.17, + 'real_amount' => 0.17, + 'real_base_amount' => 0.17, + 'taxable_item_type' => 'shipping', + ], + ], + ], + ]; + } +} diff --git a/app/code/Magento/Tax/Test/Unit/Model/Quote/ToOrderConverterTest.php b/app/code/Magento/Tax/Test/Unit/Model/Quote/ToOrderConverterTest.php new file mode 100644 index 0000000000000000000000000000000000000000..cc72250a496783692451f8c12ecc610f9de28d43 --- /dev/null +++ b/app/code/Magento/Tax/Test/Unit/Model/Quote/ToOrderConverterTest.php @@ -0,0 +1,195 @@ +<?php +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + +namespace Magento\Tax\Test\Unit\Model\Quote; + +use \Magento\Framework\TestFramework\Unit\Helper\ObjectManager; + +class ToOrderConverterTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var \Magento\Sales\Api\Data\OrderExtensionFactory|\PHPUnit_Framework_MockObject_MockObject + */ + protected $orderExtensionFactoryMock; + + /** + * @var \Magento\Quote\Model\Quote\Address|\PHPUnit_Framework_MockObject_MockObject + */ + protected $quoteAddressMock; + + /** + * @var \Magento\Quote\Model\Quote\Address\ToOrder|\PHPUnit_Framework_MockObject_MockObject + */ + protected $subjectMock; + + /** + * @var \Magento\Framework\TestFramework\Unit\Helper\ObjectManager + */ + protected $objectManagerHelper; + + /** + * @var \Magento\Tax\Model\Quote\ToOrderConverter + */ + protected $model; + + public function setUp() + { + $this->orderExtensionFactoryMock = $this->getMockBuilder( + '\Magento\Sales\Api\Data\OrderExtensionFactory' + )->disableOriginalConstructor() + ->setMethods(['create']) + ->getMock(); + + $this->quoteAddressMock = $this->getMockBuilder('\Magento\Quote\Model\Quote\Address') + ->disableOriginalConstructor() + ->setMethods(['getAppliedTaxes', 'getItemsAppliedTaxes']) + ->getMock(); + $this->subjectMock = $this->getMockBuilder('\Magento\Quote\Model\Quote\Address\ToOrder') + ->disableOriginalConstructor() + ->getMock(); + + $this->objectManagerHelper = new ObjectManager($this); + $this->model = $this->objectManagerHelper->getObject( + '\Magento\Tax\Model\Quote\ToOrderConverter', + [ + 'orderExtensionFactory' => $this->orderExtensionFactoryMock, + ] + ); + } + + protected function setupOrderExtensionAttributeMock() + { + $orderExtensionAttributeMock = $this->getMockBuilder('\Magento\Sales\Api\Data\OrderExtensionInterface') + ->setMethods( + [ + 'setAppliedTaxes', + 'setConvertingFromQuote', + 'setItemAppliedTaxes' + ] + )->getMock(); + + return $orderExtensionAttributeMock; + } + + /** + * @dataProvider afterConvertDataProvider + */ + public function testAfterConvert($appliedTaxes, $itemsAppliedTaxes) + { + $this->model->beforeConvert($this->subjectMock, $this->quoteAddressMock); + + $this->quoteAddressMock->expects($this->once()) + ->method('getAppliedTaxes') + ->willReturn($appliedTaxes); + $this->quoteAddressMock->expects($this->once()) + ->method('getItemsAppliedTaxes') + ->willReturn($itemsAppliedTaxes); + + $orderMock = $this->getMockBuilder('\Magento\Sales\Model\Order') + ->disableOriginalConstructor() + ->getMock(); + + $orderExtensionAttributeMock = $this->setupOrderExtensionAttributeMock(); + + $orderMock->expects($this->once()) + ->method('getExtensionAttributes') + ->willReturn($orderExtensionAttributeMock); + + $orderExtensionAttributeMock->expects($this->once()) + ->method('setAppliedTaxes') + ->with($appliedTaxes); + $orderExtensionAttributeMock->expects($this->once()) + ->method('setConvertingFromQuote') + ->with(true); + $orderExtensionAttributeMock->expects($this->once()) + ->method('setItemAppliedTaxes') + ->with($itemsAppliedTaxes); + $orderMock->expects($this->once()) + ->method('setExtensionAttributes') + ->with($orderExtensionAttributeMock); + + $this->assertEquals($orderMock, $this->model->afterConvert($this->subjectMock, $orderMock)); + } + + /** + * @dataProvider afterConvertDataProvider + */ + public function testAfterConvertNullExtensionAttribute($appliedTaxes, $itemsAppliedTaxes) + { + $this->model->beforeConvert($this->subjectMock, $this->quoteAddressMock); + + $this->quoteAddressMock->expects($this->once()) + ->method('getAppliedTaxes') + ->willReturn($appliedTaxes); + $this->quoteAddressMock->expects($this->once()) + ->method('getItemsAppliedTaxes') + ->willReturn($itemsAppliedTaxes); + + $orderExtensionAttributeMock = $this->setupOrderExtensionAttributeMock(); + + $orderMock = $this->getMockBuilder('\Magento\Sales\Model\Order') + ->disableOriginalConstructor() + ->getMock(); + + $orderMock->expects($this->once()) + ->method('getExtensionAttributes') + ->willReturn(null); + + $this->orderExtensionFactoryMock->expects($this->once()) + ->method('create') + ->willReturn($orderExtensionAttributeMock); + + $orderExtensionAttributeMock->expects($this->once()) + ->method('setAppliedTaxes') + ->with($appliedTaxes); + $orderExtensionAttributeMock->expects($this->once()) + ->method('setConvertingFromQuote') + ->with(true); + $orderExtensionAttributeMock->expects($this->once()) + ->method('setItemAppliedTaxes') + ->with($itemsAppliedTaxes); + $orderMock->expects($this->once()) + ->method('setExtensionAttributes') + ->with($orderExtensionAttributeMock); + + $this->assertEquals($orderMock, $this->model->afterConvert($this->subjectMock, $orderMock)); + } + + public function afterConvertDataProvider() + { + return [ + 'afterConvert' => [ + 'applied_taxes' => [ + 'IL' => [ + 'amount' => 0.36, + 'percent' => 6, + 'rates' => [ + [ + 'percent' => 6, + 'code' => 'IL', + 'title' => 'IL', + ] + ] + ] + ], + 'item_applied_taxes' => [ + 'sequence-1' => [ + [ + 'amount' => 0.06, + 'item_id' => 146, + ], + ], + 'shipping' => [ + [ + 'amount' => 0.30, + 'item_type' => 'shipping', + ] + ], + ], + ], + ]; + } +} diff --git a/app/code/Magento/Tax/composer.json b/app/code/Magento/Tax/composer.json index b2d4d6faad79318556340971f6dd6d832e89af6c..4318d6c1941543fddb8ac9817117b3680c9399b7 100644 --- a/app/code/Magento/Tax/composer.json +++ b/app/code/Magento/Tax/composer.json @@ -3,24 +3,24 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-config": "0.74.0-beta14", - "magento/module-store": "0.74.0-beta14", - "magento/module-catalog": "0.74.0-beta14", - "magento/module-customer": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/module-directory": "0.74.0-beta14", - "magento/module-checkout": "0.74.0-beta14", - "magento/module-shipping": "0.74.0-beta14", - "magento/module-eav": "0.74.0-beta14", - "magento/module-sales": "0.74.0-beta14", - "magento/module-reports": "0.74.0-beta14", - "magento/module-page-cache": "0.74.0-beta14", - "magento/module-quote": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-config": "0.74.0-beta15", + "magento/module-store": "0.74.0-beta15", + "magento/module-catalog": "0.74.0-beta15", + "magento/module-customer": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/module-directory": "0.74.0-beta15", + "magento/module-checkout": "0.74.0-beta15", + "magento/module-shipping": "0.74.0-beta15", + "magento/module-eav": "0.74.0-beta15", + "magento/module-sales": "0.74.0-beta15", + "magento/module-reports": "0.74.0-beta15", + "magento/module-page-cache": "0.74.0-beta15", + "magento/module-quote": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Tax/etc/di.xml b/app/code/Magento/Tax/etc/di.xml index 1873c509f6e792e252170a35897ca45d2283ba8a..12dd5b270fc3c2740cf0f272bcd38fdb812d9b0d 100644 --- a/app/code/Magento/Tax/etc/di.xml +++ b/app/code/Magento/Tax/etc/di.xml @@ -77,4 +77,7 @@ <argument name="resourcePrefix" xsi:type="string">sales</argument> </arguments> </type> + <type name="Magento\Sales\Api\OrderRepositoryInterface"> + <plugin name="save_order_tax" type="Magento\Tax\Model\Plugin\OrderSave"/> + </type> </config> diff --git a/app/code/Magento/Tax/etc/events.xml b/app/code/Magento/Tax/etc/events.xml index 4d2c2d3ba60da356a557d9c5f87e6fc33df14cd2..b523cf565dd000c1b1e0877911973ca364534642 100644 --- a/app/code/Magento/Tax/etc/events.xml +++ b/app/code/Magento/Tax/etc/events.xml @@ -6,9 +6,6 @@ */ --> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Event/etc/events.xsd"> - <event name="sales_order_save_after"> - <observer name="tax" instance="Magento\Tax\Model\Observer" method="salesEventOrderAfterSave" /> - </event> <event name="sales_quote_collect_totals_before"> <observer name="tax" instance="Magento\Tax\Model\Observer" method="quoteCollectTotalsBefore" /> </event> diff --git a/app/code/Magento/Tax/etc/extension_attributes.xml b/app/code/Magento/Tax/etc/extension_attributes.xml index 0302ae2fcd16a12a2f270d5f7e04fda059c52af4..810c04b8c1917e9230db99faeac529445844b019 100644 --- a/app/code/Magento/Tax/etc/extension_attributes.xml +++ b/app/code/Magento/Tax/etc/extension_attributes.xml @@ -9,4 +9,9 @@ <extension_attributes for="Magento\Quote\Api\Data\TotalsInterface"> <attribute code="tax_grandtotal_details" type="Magento\Tax\Api\Data\GrandTotalDetailsInterface[]" /> </extension_attributes> + <extension_attributes for="Magento\Sales\Api\Data\OrderInterface"> + <attribute code="applied_taxes" type="Magento\Tax\Api\Data\OrderTaxDetailsAppliedTaxInterface[]" /> + <attribute code="item_applied_taxes" type="Magento\Tax\Api\Data\OrderTaxDetailsItemInterface[]" /> + <attribute code="converting_from_quote" type="boolean" /> + </extension_attributes> </config> diff --git a/app/code/Magento/TaxImportExport/composer.json b/app/code/Magento/TaxImportExport/composer.json index 2642b8587938955bd7b651a9485560794002064f..36629c619cd0106f03d270e71c8d2662fe7b903a 100644 --- a/app/code/Magento/TaxImportExport/composer.json +++ b/app/code/Magento/TaxImportExport/composer.json @@ -3,15 +3,15 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-tax": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/module-directory": "0.74.0-beta14", - "magento/module-store": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-tax": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/module-directory": "0.74.0-beta15", + "magento/module-store": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Theme/composer.json b/app/code/Magento/Theme/composer.json index 9fbb0bd754d2cc08791507e25ca35d5d013776d9..a9cd25b0194302174803c3b620111f92b527f530 100644 --- a/app/code/Magento/Theme/composer.json +++ b/app/code/Magento/Theme/composer.json @@ -3,23 +3,23 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-customer": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/module-cms": "0.74.0-beta14", - "magento/module-eav": "0.74.0-beta14", - "magento/module-widget": "0.74.0-beta14", - "magento/module-config": "0.74.0-beta14", - "magento/module-media-storage": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", - "magento/module-require-js": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-customer": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/module-cms": "0.74.0-beta15", + "magento/module-eav": "0.74.0-beta15", + "magento/module-widget": "0.74.0-beta15", + "magento/module-config": "0.74.0-beta15", + "magento/module-media-storage": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", + "magento/module-require-js": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "suggest": { - "magento/module-translation": "0.74.0-beta14" + "magento/module-translation": "0.74.0-beta15" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Translation/composer.json b/app/code/Magento/Translation/composer.json index 7de19b36d8a93d4c6640246a5098e529c27e1860..5c79e40d52acd35b52658273c6d3f8f6a68bd4ae 100644 --- a/app/code/Magento/Translation/composer.json +++ b/app/code/Magento/Translation/composer.json @@ -3,15 +3,15 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-backend": "0.74.0-beta14", - "magento/module-developer": "0.74.0-beta14", - "magento/module-store": "0.74.0-beta14", - "magento/module-theme": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-backend": "0.74.0-beta15", + "magento/module-developer": "0.74.0-beta15", + "magento/module-store": "0.74.0-beta15", + "magento/module-theme": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Ui/composer.json b/app/code/Magento/Ui/composer.json index 35d8c625925fde44598e7b8524c3e574d51f309e..4138d9f2507c47f012b5ba5972e895932e52ac16 100644 --- a/app/code/Magento/Ui/composer.json +++ b/app/code/Magento/Ui/composer.json @@ -3,14 +3,14 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-backend": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", - "magento/module-eav": "0.74.0-beta14", - "magento/module-authorization": "0.74.0-beta14", + "magento/module-backend": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", + "magento/module-eav": "0.74.0-beta15", + "magento/module-authorization": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Ups/composer.json b/app/code/Magento/Ups/composer.json index 871fbcdc12c1d2a6a3055ac20e0b5370575a5489..8cdcff8d4de70370db4f54d74eae86ba955e7088 100644 --- a/app/code/Magento/Ups/composer.json +++ b/app/code/Magento/Ups/composer.json @@ -3,18 +3,18 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/module-sales": "0.74.0-beta14", - "magento/module-shipping": "0.74.0-beta14", - "magento/module-directory": "0.74.0-beta14", - "magento/module-catalog-inventory": "0.74.0-beta14", - "magento/module-quote": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/module-sales": "0.74.0-beta15", + "magento/module-shipping": "0.74.0-beta15", + "magento/module-directory": "0.74.0-beta15", + "magento/module-catalog-inventory": "0.74.0-beta15", + "magento/module-quote": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/UrlRewrite/composer.json b/app/code/Magento/UrlRewrite/composer.json index 24a2772e11a3c6bf97a534c2fa44c09e672e3d6d..fb57d5793c08abd344c9117ef2ccd8aa18ba767a 100644 --- a/app/code/Magento/UrlRewrite/composer.json +++ b/app/code/Magento/UrlRewrite/composer.json @@ -3,17 +3,17 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-catalog": "0.74.0-beta14", - "magento/module-store": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/module-catalog-url-rewrite": "0.74.0-beta14", - "magento/module-cms": "0.74.0-beta14", - "magento/module-cms-url-rewrite": "0.74.0-beta14", + "magento/module-catalog": "0.74.0-beta15", + "magento/module-store": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/module-catalog-url-rewrite": "0.74.0-beta15", + "magento/module-cms": "0.74.0-beta15", + "magento/module-cms-url-rewrite": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/User/composer.json b/app/code/Magento/User/composer.json index b16f88f04a4c5b9cec2efb70b688923490d10226..add8cb809cc92db648f94ac35f2f97cdd7ca2467 100644 --- a/app/code/Magento/User/composer.json +++ b/app/code/Magento/User/composer.json @@ -3,15 +3,15 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-authorization": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/module-integration": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-authorization": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/module-integration": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Usps/composer.json b/app/code/Magento/Usps/composer.json index 59b75138b5be4d8cb021390eec32bc8747c00f8e..290d060ec4f9cc215f324450561911d0afb564b3 100644 --- a/app/code/Magento/Usps/composer.json +++ b/app/code/Magento/Usps/composer.json @@ -3,20 +3,20 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-shipping": "0.74.0-beta14", - "magento/module-directory": "0.74.0-beta14", - "magento/module-catalog": "0.74.0-beta14", - "magento/module-sales": "0.74.0-beta14", - "magento/module-catalog-inventory": "0.74.0-beta14", - "magento/module-quote": "0.74.0-beta14", - "magento/module-config": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-shipping": "0.74.0-beta15", + "magento/module-directory": "0.74.0-beta15", + "magento/module-catalog": "0.74.0-beta15", + "magento/module-sales": "0.74.0-beta15", + "magento/module-catalog-inventory": "0.74.0-beta15", + "magento/module-quote": "0.74.0-beta15", + "magento/module-config": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "lib-libxml": "*", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Variable/composer.json b/app/code/Magento/Variable/composer.json index 58eb8dbd4b6c0be1e41c82dd72972cde940dfe8c..54e469e6183bbf4e4fbf8dc87664bc225cb94203 100644 --- a/app/code/Magento/Variable/composer.json +++ b/app/code/Magento/Variable/composer.json @@ -3,14 +3,14 @@ "description": "N/A", "require": { "php": "~5.4.11|~5.5.0|~5.6.0", - "magento/module-backend": "0.74.0-beta14", - "magento/module-email": "0.74.0-beta14", - "magento/module-store": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-backend": "0.74.0-beta15", + "magento/module-email": "0.74.0-beta15", + "magento/module-store": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Version/composer.json b/app/code/Magento/Version/composer.json index 07feda54cfd8fcfa810c79f28b9775b8abd4951b..9e21c3965e33e496f65a068a047400cca3a6ffa0 100644 --- a/app/code/Magento/Version/composer.json +++ b/app/code/Magento/Version/composer.json @@ -3,11 +3,11 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/framework": "0.74.0-beta14", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Webapi/composer.json b/app/code/Magento/Webapi/composer.json index 7c018de1b3b051d135d1fe69741e44a94185723c..041ad6295d148297a86c738e3254e8a8709e2937 100644 --- a/app/code/Magento/Webapi/composer.json +++ b/app/code/Magento/Webapi/composer.json @@ -3,18 +3,18 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-authorization": "0.74.0-beta14", - "magento/module-integration": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-authorization": "0.74.0-beta15", + "magento/module-integration": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "suggest": { - "magento/module-user": "0.74.0-beta14" + "magento/module-user": "0.74.0-beta15" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Weee/Model/App/Action/ContextPlugin.php b/app/code/Magento/Weee/Model/App/Action/ContextPlugin.php new file mode 100644 index 0000000000000000000000000000000000000000..2fcb1aa0e363166b4b39e7cb4296a165b02ab123 --- /dev/null +++ b/app/code/Magento/Weee/Model/App/Action/ContextPlugin.php @@ -0,0 +1,205 @@ +<?php +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + +namespace Magento\Weee\Model\App\Action; + +/** + * Class ContextPlugin + * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + */ +class ContextPlugin +{ + /** + * @var \Magento\Customer\Model\Session + */ + protected $customerSession; + + /** + * @var \Magento\Framework\App\Http\Context + */ + protected $httpContext; + + /** + * @var \Magento\Tax\Helper\Data + */ + protected $taxHelper; + + /** + * @var \Magento\Weee\Helper\Data + */ + protected $weeeHelper; + + /** + * @var \Magento\Framework\Module\Manager + */ + protected $moduleManager; + + /** + * @var \Magento\Weee\Model\Tax + */ + protected $weeeTax; + + /** + * @var \Magento\PageCache\Model\Config + */ + protected $cacheConfig; + + /** + * @var \Magento\Store\Model\StoreManagerInterface + */ + protected $storeManager; + + /** + * @var \Magento\Framework\App\Config\ScopeConfigInterface + */ + protected $scopeConfig; + + /** + * @param \Magento\Customer\Model\Session $customerSession + * @param \Magento\Framework\App\Http\Context $httpContext + * @param \Magento\Weee\Model\Tax $weeeTax + * @param \Magento\Tax\Helper\Data $taxHelper + * @param \Magento\Weee\Helper\Data $weeeHelper + * @param \Magento\Framework\Module\Manager $moduleManager + * @param \Magento\PageCache\Model\Config $cacheConfig + * @param \Magento\Store\Model\StoreManagerInterface $storeManager + * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig + */ + public function __construct( + \Magento\Customer\Model\Session $customerSession, + \Magento\Framework\App\Http\Context $httpContext, + \Magento\Weee\Model\Tax $weeeTax, + \Magento\Tax\Helper\Data $taxHelper, + \Magento\Weee\Helper\Data $weeeHelper, + \Magento\Framework\Module\Manager $moduleManager, + \Magento\PageCache\Model\Config $cacheConfig, + \Magento\Store\Model\StoreManagerInterface $storeManager, + \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig + ) { + $this->customerSession = $customerSession; + $this->httpContext = $httpContext; + $this->weeeTax = $weeeTax; + $this->taxHelper = $taxHelper; + $this->weeeHelper = $weeeHelper; + $this->moduleManager = $moduleManager; + $this->cacheConfig = $cacheConfig; + $this->storeManager = $storeManager; + $this->scopeConfig = $scopeConfig; + } + + /** + * @param \Magento\Framework\App\Action\Action $subject + * @param callable $proceed + * @param \Magento\Framework\App\RequestInterface $request + * @return mixed + * @SuppressWarnings(PHPMD.UnusedFormalParameter) + * @SuppressWarnings(PHPMD.CyclomaticComplexity) + * @SuppressWarnings(PHPMD.NPathComplexity) + * @SuppressWarnings(PHPMD.ExcessiveMethodLength) + */ + public function aroundDispatch( + \Magento\Framework\App\Action\Action $subject, + \Closure $proceed, + \Magento\Framework\App\RequestInterface $request + ) { + if (!$this->weeeHelper->isEnabled() || + !$this->customerSession->isLoggedIn() || + !$this->moduleManager->isEnabled('Magento_PageCache') || + !$this->cacheConfig->isEnabled()) { + return $proceed($request); + } + + $basedOn = $this->taxHelper->getTaxBasedOn(); + if ($basedOn != 'shipping' && $basedOn != 'billing') { + return $proceed($request); + } + + $weeeTaxRegion = $this->getWeeeTaxRegion($basedOn); + $websiteId = $this->storeManager->getStore()->getWebsiteId(); + $countryId = $weeeTaxRegion['countryId']; + $regionId = $weeeTaxRegion['regionId']; + + if (!$countryId && !$regionId) { + // country and region does not exist + return $proceed($request); + } else if ($countryId && !$regionId) { + // country exist and region does not exist + $regionId = 0; + $exist = $this->weeeTax->isWeeeInLocation( + $countryId, + $regionId, + $websiteId + ); + } else { + // country and region exist + $exist = $this->weeeTax->isWeeeInLocation( + $countryId, + $regionId, + $websiteId + ); + if (!$exist) { + // just check the country for weee + $regionId = 0; + $exist = $this->weeeTax->isWeeeInLocation( + $countryId, + $regionId, + $websiteId + ); + } + } + + if ($exist) { + $this->httpContext->setValue( + 'weee_tax_region', + ['countryId' => $countryId, 'regionId' => $regionId], + 0 + ); + } + return $proceed($request); + } + + /** + * @param string $basedOn + * @return array + */ + protected function getWeeeTaxRegion($basedOn) + { + $countryId = null; + $regionId = null; + $defaultCountryId = $this->scopeConfig->getValue( + \Magento\Tax\Model\Config::CONFIG_XML_PATH_DEFAULT_COUNTRY, + \Magento\Store\Model\ScopeInterface::SCOPE_STORE, + null + ); + $defaultRegionId = $this->scopeConfig->getValue( + \Magento\Tax\Model\Config::CONFIG_XML_PATH_DEFAULT_REGION, + \Magento\Store\Model\ScopeInterface::SCOPE_STORE, + null + ); + + if ($basedOn == 'shipping') { + $defaultShippingAddress = $this->customerSession->getDefaultTaxShippingAddress(); + if (empty($defaultShippingAddress)) { + $countryId = $defaultCountryId; + $regionId = $defaultRegionId; + } else { + $countryId = $defaultShippingAddress['country_id']; + $regionId = $defaultShippingAddress['region_id']; + } + + } else if ($basedOn == 'billing') { + $defaultBillingAddress = $this->customerSession->getDefaultTaxBillingAddress(); + if (empty($defaultBillingAddress)) { + $countryId = $defaultCountryId; + $regionId = $defaultRegionId; + } else { + $countryId = $defaultBillingAddress['country_id']; + $regionId = $defaultBillingAddress['region_id']; + } + } + return ['countryId' => $countryId, 'regionId' => $regionId]; + } +} diff --git a/app/code/Magento/Weee/Model/Observer/Session.php b/app/code/Magento/Weee/Model/Observer/Session.php new file mode 100644 index 0000000000000000000000000000000000000000..7f72b64c6bf792eff2d650191fa8016cb5ad2325 --- /dev/null +++ b/app/code/Magento/Weee/Model/Observer/Session.php @@ -0,0 +1,139 @@ +<?php +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + +/** + * Customer Session Event Observer + */ +namespace Magento\Weee\Model\Observer; + +class Session +{ + /** + * @var \Magento\Customer\Model\Session + */ + protected $customerSession; + + /** + * @var \Magento\Weee\Helper\Data + */ + protected $weeeHelper; + + /** + * Module manager + * + * @var \Magento\Framework\Module\Manager + */ + private $moduleManager; + + /** + * Cache config + * + * @var \Magento\PageCache\Model\Config + */ + private $cacheConfig; + + /** + * @param \Magento\Customer\Model\Session $customerSession + * @param \Magento\Weee\Helper\Data $weeeHelper + * @param \Magento\Framework\Module\Manager $moduleManager + * @param \Magento\PageCache\Model\Config $cacheConfig + */ + public function __construct( + \Magento\Customer\Model\Session $customerSession, + \Magento\Weee\Helper\Data $weeeHelper, + \Magento\Framework\Module\Manager $moduleManager, + \Magento\PageCache\Model\Config $cacheConfig + ) { + $this->customerSession = $customerSession; + $this->weeeHelper = $weeeHelper; + $this->moduleManager = $moduleManager; + $this->cacheConfig = $cacheConfig; + } + + /** + * @param \Magento\Framework\Event\Observer $observer + * @return void + * @SuppressWarnings(PHPMD.CyclomaticComplexity) + * @SuppressWarnings(PHPMD.NPathComplexity) + */ + public function customerLoggedIn(\Magento\Framework\Event\Observer $observer) + { + if ($this->moduleManager->isEnabled('Magento_PageCache') && $this->cacheConfig->isEnabled() && + $this->weeeHelper->isEnabled()) { + /** @var \Magento\Customer\Model\Data\Customer $customer */ + $customer = $observer->getData('customer'); + + /** @var \Magento\Customer\Api\Data\AddressInterface[] $addresses */ + $addresses = $customer->getAddresses(); + if (isset($addresses)) { + $defaultShippingFound = false; + $defaultBillingFound = false; + foreach ($addresses as $address) { + if ($address->isDefaultBilling()) { + $defaultBillingFound = true; + $this->customerSession->setDefaultTaxBillingAddress( + [ + 'country_id' => $address->getCountryId(), + 'region_id' => $address->getRegion() ? $address->getRegion()->getRegionId() : null, + 'postcode' => $address->getPostcode(), + ] + ); + } + if ($address->isDefaultShipping()) { + $defaultShippingFound = true; + $this->customerSession->setDefaultTaxShippingAddress( + [ + 'country_id' => $address->getCountryId(), + 'region_id' => $address->getRegion() ? $address->getRegion()->getRegionId() : null, + 'postcode' => $address->getPostcode(), + ] + ); + } + if ($defaultShippingFound && $defaultBillingFound) { + break; + } + } + } + } + } + + /** + * Address after save event handler + * + * @param \Magento\Framework\Event\Observer $observer + * @return void + * @SuppressWarnings(PHPMD.CyclomaticComplexity) + */ + public function afterAddressSave($observer) + { + if ($this->moduleManager->isEnabled('Magento_PageCache') && $this->cacheConfig->isEnabled() && + $this->weeeHelper->isEnabled()) { + /** @var $customerAddress Address */ + $address = $observer->getCustomerAddress(); + + // Check if the address is either the default billing, shipping, or both + if ($address->getIsPrimaryBilling() || $address->getIsDefaultBilling()) { + $this->customerSession->setDefaultTaxBillingAddress( + [ + 'country_id' => $address->getCountryId(), + 'region_id' => $address->getRegion() ? $address->getRegionId() : null, + 'postcode' => $address->getPostcode(), + ] + ); + } + + if ($address->getIsPrimaryShipping() || $address->getIsDefaultShipping()) { + $this->customerSession->setDefaultTaxShippingAddress( + [ + 'country_id' => $address->getCountryId(), + 'region_id' => $address->getRegion() ? $address->getRegionId() : null, + 'postcode' => $address->getPostcode(), + ] + ); + } + } + } +} diff --git a/app/code/Magento/Weee/Model/Resource/Tax.php b/app/code/Magento/Weee/Model/Resource/Tax.php index e55e57340028adefa033fe7f02ba45e081ed9fcc..ee7e3783b9d62d0e305c28d03097f990be3d24c3 100644 --- a/app/code/Magento/Weee/Model/Resource/Tax.php +++ b/app/code/Magento/Weee/Model/Resource/Tax.php @@ -52,4 +52,38 @@ class Tax extends \Magento\Framework\Model\Resource\Db\AbstractDb { return $this->_getReadAdapter()->fetchOne($select); } + + /** + * @param int $countryId + * @param int $regionId + * @param int $websiteId + * @return boolean + */ + public function isWeeeInLocation($countryId, $regionId, $websiteId) + { + // Check if there is a weee_tax for the country and region + $attributeSelect = $this->getReadConnection()->select(); + $attributeSelect->from( + $this->getTable('weee_tax'), + 'value' + )->where( + 'website_id IN(?)', + [$websiteId, 0] + )->where( + 'country = ?', + $countryId + )->where( + 'state = ?', + $regionId + )->limit( + 1 + ); + + $value = $this->getReadConnection()->fetchOne($attributeSelect); + if ($value) { + return true; + } + + return false; + } } diff --git a/app/code/Magento/Weee/Model/Tax.php b/app/code/Magento/Weee/Model/Tax.php index 3b41cdeeb598382ab50aa542c442c0d672e0da65..91dd14ffa3f1f26d0607b862f2eae95544d20431 100644 --- a/app/code/Magento/Weee/Model/Tax.php +++ b/app/code/Magento/Weee/Model/Tax.php @@ -232,8 +232,18 @@ class Tax extends \Magento\Framework\Model\AbstractModel if ($customerId = $this->_customerSession->getCustomerId()) { $shipping = $this->accountManagement->getDefaultShippingAddress($customerId); $billing = $this->accountManagement->getDefaultBillingAddress($customerId); + $customerTaxClass = null; + } else { + $shippingAddressArray = $this->_customerSession->getDefaultTaxShippingAddress(); + $billingAddressArray = $this->_customerSession->getDefaultTaxBillingAddress(); + if (!empty($billingAddressArray)) { + $billing = new \Magento\Framework\Object($billingAddressArray); + } + if (!empty($shippingAddressArray)) { + $shipping = new \Magento\Framework\Object($shippingAddressArray); + } + $customerTaxClass = $this->_customerSession->getCustomerTaxClassId(); } - $customerTaxClass = null; } $rateRequest = $calculator->getRateRequest( @@ -322,4 +332,15 @@ class Tax extends \Magento\Framework\Model\AbstractModel } return $result; } + + /** + * @param int $countryId + * @param int $regionId + * @param int $websiteId + * @return boolean + */ + public function isWeeeInLocation($countryId, $regionId, $websiteId) + { + return $this->getResource()->isWeeeInLocation($countryId, $regionId, $websiteId); + } } diff --git a/app/code/Magento/Weee/Test/Unit/App/Action/ContextPluginTest.php b/app/code/Magento/Weee/Test/Unit/App/Action/ContextPluginTest.php new file mode 100644 index 0000000000000000000000000000000000000000..0f7a3ad75fb91b47bdcd3a62aea9ca32b7495586 --- /dev/null +++ b/app/code/Magento/Weee/Test/Unit/App/Action/ContextPluginTest.php @@ -0,0 +1,378 @@ +<?php +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +namespace Magento\Weee\Test\Unit\App\Action; + +/** + * Class ContextPluginTest + * + * @package Magento\Weee\Test\Unit\App\Action + * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + */ +class ContextPluginTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var \Magento\Tax\Helper\Data + */ + protected $taxHelperMock; + + /** + * @var \Magento\Weee\Helper\Data + */ + protected $weeeHelperMock; + + /** + * @var \Magento\Weee\Model\Tax + */ + protected $weeeTaxMock; + + /** + * @var \Magento\Framework\App\Http\Context + */ + protected $httpContextMock; + + /** + * @var \Magento\Tax\Model\Calculation\Proxy + */ + protected $taxCalculationMock; + + /** + * @var \Magento\Framework\Module\Manager + */ + protected $moduleManagerMock; + + /** + * @var \Magento\PageCache\Model\Config + */ + protected $cacheConfigMock; + + /** + * @var \Magento\Store\Model\StoreManager + */ + protected $storeManageMock; + + /** + * @var \Magento\Framework\App\Config\ScopeConfig + */ + protected $scopeConfigMock; + + /** + * @var \Magento\Tax\Model\App\Action\ContextPlugin + */ + protected $contextPlugin; + + protected function setUp() + { + $this->objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this); + + $this->taxHelperMock = $this->getMockBuilder('Magento\Tax\Helper\Data') + ->disableOriginalConstructor() + ->getMock(); + + $this->weeeHelperMock = $this->getMockBuilder('Magento\Weee\Helper\Data') + ->disableOriginalConstructor() + ->getMock(); + + $this->weeeTaxMock = $this->getMockBuilder('\Magento\Weee\Model\Tax') + ->disableOriginalConstructor() + ->getMock(); + + $this->httpContextMock = $this->getMockBuilder('Magento\Framework\App\Http\Context') + ->disableOriginalConstructor() + ->getMock(); + + $this->customerSessionMock = $this->getMockBuilder('Magento\Customer\Model\Session') + ->disableOriginalConstructor() + ->setMethods([ + 'getDefaultTaxBillingAddress', 'getDefaultTaxShippingAddress', 'getCustomerTaxClassId', + 'getWebsiteId', 'isLoggedIn' + ]) + ->getMock(); + + $this->moduleManagerMock = $this->getMockBuilder('Magento\Framework\Module\Manager') + ->disableOriginalConstructor() + ->getMock(); + + $this->cacheConfigMock = $this->getMockBuilder('Magento\PageCache\Model\Config') + ->disableOriginalConstructor() + ->getMock(); + + $this->storeManagerMock = $this->getMockBuilder('Magento\Store\Model\StoreManager') + ->disableOriginalConstructor() + ->getMock(); + + $this->scopeConfigMock = $this->getMockBuilder('Magento\Framework\App\Config') + ->disableOriginalConstructor() + ->getMock(); + + $this->contextPlugin = $this->objectManager->getObject( + 'Magento\Weee\Model\App\Action\ContextPlugin', + [ + 'customerSession' => $this->customerSessionMock, + 'httpContext' => $this->httpContextMock, + 'weeeTax' => $this->weeeTaxMock, + 'taxHelper' => $this->taxHelperMock, + 'weeeHelper' => $this->weeeHelperMock, + 'moduleManager' => $this->moduleManagerMock, + 'cacheConfig' => $this->cacheConfigMock, + 'storeManager' => $this->storeManagerMock, + 'scopeConfig' => $this->scopeConfigMock + ] + ); + } + + public function testAroundDispatchBasedOnDefault() + { + $this->customerSessionMock->expects($this->once()) + ->method('isLoggedIn') + ->willReturn(true); + + $this->moduleManagerMock->expects($this->once()) + ->method('isEnabled') + ->with('Magento_PageCache') + ->willReturn(true); + + $this->cacheConfigMock->expects($this->once()) + ->method('isEnabled') + ->willReturn(true); + + $this->weeeHelperMock->expects($this->once()) + ->method('isEnabled') + ->willReturn(true); + + $this->taxHelperMock->expects($this->once()) + ->method('getTaxBasedOn') + ->willReturn('billing'); + + $storeMock = $this->getMockBuilder('Magento\Store\Model\Store') + ->disableOriginalConstructor() + ->getMock(); + + $storeMock->expects($this->once()) + ->method('getWebsiteId') + ->willReturn(1); + + $this->storeManagerMock->expects($this->once()) + ->method('getStore') + ->willReturn($storeMock); + + $this->scopeConfigMock->expects($this->at(0)) + ->method('getValue') + ->with( + \Magento\Tax\Model\Config::CONFIG_XML_PATH_DEFAULT_COUNTRY, + \Magento\Store\Model\ScopeInterface::SCOPE_STORE, + null + ) + ->willReturn('US'); + + $this->scopeConfigMock->expects($this->at(1)) + ->method('getValue') + ->with( + \Magento\Tax\Model\Config::CONFIG_XML_PATH_DEFAULT_REGION, + \Magento\Store\Model\ScopeInterface::SCOPE_STORE, + null + ) + ->willReturn(0); + + $this->weeeTaxMock->expects($this->once()) + ->method('isWeeeInLocation') + ->with('US', 0, 1) + ->willReturn(true); + + $this->httpContextMock->expects($this->once()) + ->method('setValue') + ->with('weee_tax_region', ['countryId' => 'US', 'regionId' => 0], 0); + + $action = $this->objectManager->getObject('Magento\Framework\App\Action\Action'); + $request = $this->getMock('\Magento\Framework\App\Request\Http', ['getActionName'], [], '', false); + $expectedResult = 'expectedResult'; + $proceed = function ($request) use ($expectedResult) { + return $expectedResult; + }; + $this->contextPlugin->aroundDispatch($action, $proceed, $request); + } + + public function testAroundDispatchBasedOnOrigin() + { + $this->customerSessionMock->expects($this->once()) + ->method('isLoggedIn') + ->willReturn(true); + + $this->moduleManagerMock->expects($this->once()) + ->method('isEnabled') + ->with('Magento_PageCache') + ->willReturn(true); + + $this->cacheConfigMock->expects($this->once()) + ->method('isEnabled') + ->willReturn(true); + + $this->weeeHelperMock->expects($this->once()) + ->method('isEnabled') + ->willReturn(true); + + $this->taxHelperMock->expects($this->once()) + ->method('getTaxBasedOn') + ->willReturn('origin'); + + $action = $this->objectManager->getObject('Magento\Framework\App\Action\Action'); + $request = $this->getMock('\Magento\Framework\App\Request\Http', ['getActionName'], [], '', false); + $expectedResult = 'expectedResult'; + $proceed = function ($request) use ($expectedResult) { + return $expectedResult; + }; + $this->contextPlugin->aroundDispatch($action, $proceed, $request); + } + + public function testAroundDispatchBasedOnBilling() + { + $this->customerSessionMock->expects($this->once()) + ->method('isLoggedIn') + ->willReturn(true); + + $this->moduleManagerMock->expects($this->once()) + ->method('isEnabled') + ->with('Magento_PageCache') + ->willReturn(true); + + $this->cacheConfigMock->expects($this->once()) + ->method('isEnabled') + ->willReturn(true); + + $this->weeeHelperMock->expects($this->once()) + ->method('isEnabled') + ->willReturn(true); + + $this->taxHelperMock->expects($this->once()) + ->method('getTaxBasedOn') + ->willReturn('billing'); + + $storeMock = $this->getMockBuilder('Magento\Store\Model\Store') + ->disableOriginalConstructor() + ->getMock(); + + $storeMock->expects($this->once()) + ->method('getWebsiteId') + ->willReturn(1); + + $this->storeManagerMock->expects($this->once()) + ->method('getStore') + ->willReturn($storeMock); + + $this->scopeConfigMock->expects($this->at(0)) + ->method('getValue') + ->with( + \Magento\Tax\Model\Config::CONFIG_XML_PATH_DEFAULT_COUNTRY, + \Magento\Store\Model\ScopeInterface::SCOPE_STORE, + null + ) + ->willReturn('US'); + + $this->scopeConfigMock->expects($this->at(1)) + ->method('getValue') + ->with( + \Magento\Tax\Model\Config::CONFIG_XML_PATH_DEFAULT_REGION, + \Magento\Store\Model\ScopeInterface::SCOPE_STORE, + null + ) + ->willReturn(0); + + $this->customerSessionMock->expects($this->once()) + ->method('getDefaultTaxBillingAddress') + ->willReturn(['country_id' => 'US', 'region_id' => 1]); + + $this->weeeTaxMock->expects($this->once()) + ->method('isWeeeInLocation') + ->with('US', 1, 1) + ->willReturn(true); + + $this->httpContextMock->expects($this->once()) + ->method('setValue') + ->with('weee_tax_region', ['countryId' => 'US', 'regionId' => 1], 0); + + $action = $this->objectManager->getObject('Magento\Framework\App\Action\Action'); + $request = $this->getMock('\Magento\Framework\App\Request\Http', ['getActionName'], [], '', false); + $expectedResult = 'expectedResult'; + $proceed = function ($request) use ($expectedResult) { + return $expectedResult; + }; + $this->contextPlugin->aroundDispatch($action, $proceed, $request); + } + + public function testAroundDispatchBasedOnShipping() + { + $this->customerSessionMock->expects($this->once()) + ->method('isLoggedIn') + ->willReturn(true); + + $this->moduleManagerMock->expects($this->once()) + ->method('isEnabled') + ->with('Magento_PageCache') + ->willReturn(true); + + $this->cacheConfigMock->expects($this->once()) + ->method('isEnabled') + ->willReturn(true); + + $this->weeeHelperMock->expects($this->once()) + ->method('isEnabled') + ->willReturn(true); + + $this->taxHelperMock->expects($this->once()) + ->method('getTaxBasedOn') + ->willReturn('shipping'); + + $storeMock = $this->getMockBuilder('Magento\Store\Model\Store') + ->disableOriginalConstructor() + ->getMock(); + + $storeMock->expects($this->once()) + ->method('getWebsiteId') + ->willReturn(1); + + $this->storeManagerMock->expects($this->once()) + ->method('getStore') + ->willReturn($storeMock); + + $this->scopeConfigMock->expects($this->at(0)) + ->method('getValue') + ->with( + \Magento\Tax\Model\Config::CONFIG_XML_PATH_DEFAULT_COUNTRY, + \Magento\Store\Model\ScopeInterface::SCOPE_STORE, + null + ) + ->willReturn('US'); + + $this->scopeConfigMock->expects($this->at(1)) + ->method('getValue') + ->with( + \Magento\Tax\Model\Config::CONFIG_XML_PATH_DEFAULT_REGION, + \Magento\Store\Model\ScopeInterface::SCOPE_STORE, + null + ) + ->willReturn(0); + + $this->customerSessionMock->expects($this->once()) + ->method('getDefaultTaxShippingAddress') + ->willReturn(['country_id' => 'US', 'region_id' => 1]); + + $this->weeeTaxMock->expects($this->once()) + ->method('isWeeeInLocation') + ->with('US', 1, 1) + ->willReturn(true); + + $this->httpContextMock->expects($this->once()) + ->method('setValue') + ->with('weee_tax_region', ['countryId' => 'US', 'regionId' => 1], 0); + + $action = $this->objectManager->getObject('Magento\Framework\App\Action\Action'); + $request = $this->getMock('\Magento\Framework\App\Request\Http', ['getActionName'], [], '', false); + $expectedResult = 'expectedResult'; + $proceed = function ($request) use ($expectedResult) { + return $expectedResult; + }; + $this->contextPlugin->aroundDispatch($action, $proceed, $request); + } +} diff --git a/app/code/Magento/Weee/Test/Unit/Model/Observer/SessionTest.php b/app/code/Magento/Weee/Test/Unit/Model/Observer/SessionTest.php new file mode 100644 index 0000000000000000000000000000000000000000..db31c7931bedab29ca21223702a8b8cd035a3070 --- /dev/null +++ b/app/code/Magento/Weee/Test/Unit/Model/Observer/SessionTest.php @@ -0,0 +1,166 @@ +<?php +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +namespace Magento\Weee\Test\Unit\Model\Observer; + +class SessionTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var \Magento\Framework\Event\Observer + */ + protected $observerMock; + + /** + * @var \Magento\Customer\Model\Session + */ + protected $customerSessionMock; + + /** + * Module manager + * + * @var \Magento\Framework\Module\Manager + */ + private $moduleManagerMock; + + /** + * Cache config + * + * @var \Magento\PageCache\Model\Config + */ + private $cacheConfigMock; + + /** + * @var \Magento\Weee\Helper\Data + */ + protected $weeeHelperMock; + + /** + * @var \Magento\Tax\Model\Observer\Session + */ + protected $session; + + + protected function setUp() + { + $this->objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this); + $this->observerMock = $this->getMockBuilder('Magento\Framework\Event\Observer') + ->disableOriginalConstructor() + ->setMethods([ + 'getCustomerAddress', 'getData' + ]) + ->getMock(); + + $this->customerSessionMock = $this->getMockBuilder('Magento\Customer\Model\Session') + ->disableOriginalConstructor() + ->setMethods([ + 'setDefaultTaxBillingAddress', 'setDefaultTaxShippingAddress', 'setWebsiteId' + ]) + ->getMock(); + + $this->moduleManagerMock = $this->getMockBuilder('Magento\Framework\Module\Manager') + ->disableOriginalConstructor() + ->getMock(); + + $this->cacheConfigMock = $this->getMockBuilder('Magento\PageCache\Model\Config') + ->disableOriginalConstructor() + ->getMock(); + + $this->weeeHelperMock = $this->getMockBuilder('Magento\Weee\Helper\Data') + ->disableOriginalConstructor() + ->getMock(); + + $this->session = $this->objectManager->getObject( + 'Magento\Weee\Model\Observer\Session', + [ + 'customerSession' => $this->customerSessionMock, + 'weeeHelper' => $this->weeeHelperMock, + 'moduleManager' => $this->moduleManagerMock, + 'cacheConfig' => $this->cacheConfigMock + ] + ); + } + + public function testCustomerLoggedIn() + { + $this->moduleManagerMock->expects($this->once()) + ->method('isEnabled') + ->with('Magento_PageCache') + ->willReturn(true); + + $this->cacheConfigMock->expects($this->once()) + ->method('isEnabled') + ->willReturn(true); + + $this->weeeHelperMock->expects($this->any()) + ->method('isEnabled') + ->willReturn(true); + + $customerMock = $this->getMockBuilder('Magento\Customer\Model\Data\Customer') + ->disableOriginalConstructor() + ->getMock(); + + $this->observerMock->expects($this->once()) + ->method('getData') + ->with('customer') + ->willReturn($customerMock); + + $address = $this->objectManager->getObject('Magento\Customer\Model\Data\Address'); + $address->setIsDefaultShipping(true); + $address->setIsDefaultBilling(true); + $address->setCountryId(1); + $address->setPostCode(11111); + + $addresses = [$address]; + $customerMock->expects($this->once()) + ->method('getAddresses') + ->willReturn($addresses); + + $this->customerSessionMock->expects($this->once()) + ->method('setDefaultTaxBillingAddress') + ->with(['country_id' => 1, 'region_id' => null, 'postcode' => 11111]); + $this->customerSessionMock->expects($this->once()) + ->method('setDefaultTaxShippingAddress') + ->with(['country_id' => 1, 'region_id' => null, 'postcode' => 11111]); + + $this->session->customerLoggedIn($this->observerMock); + } + + public function testAfterAddressSave() + { + $this->moduleManagerMock->expects($this->once()) + ->method('isEnabled') + ->with('Magento_PageCache') + ->willReturn(true); + + $this->cacheConfigMock->expects($this->once()) + ->method('isEnabled') + ->willReturn(true); + + $this->weeeHelperMock->expects($this->any()) + ->method('isEnabled') + ->willReturn(true); + + $address = $this->objectManager->getObject('Magento\Customer\Model\Address'); + $address->setIsDefaultShipping(true); + $address->setIsDefaultBilling(true); + $address->setIsPrimaryBilling(true); + $address->setIsPrimaryShipping(true); + $address->setCountryId(1); + $address->setData('postcode', 11111); + + $this->customerSessionMock->expects($this->once()) + ->method('setDefaultTaxBillingAddress') + ->with(['country_id' => 1, 'region_id' => null, 'postcode' => 11111]); + $this->customerSessionMock->expects($this->once()) + ->method('setDefaultTaxShippingAddress') + ->with(['country_id' => 1, 'region_id' => null, 'postcode' => 11111]); + + $this->observerMock->expects($this->once()) + ->method('getCustomerAddress') + ->willReturn($address); + + $this->session->afterAddressSave($this->observerMock); + } +} diff --git a/app/code/Magento/Weee/Test/Unit/Model/Resource/TaxTest.php b/app/code/Magento/Weee/Test/Unit/Model/Resource/TaxTest.php new file mode 100644 index 0000000000000000000000000000000000000000..27a4dedc845dd2b530a082088417a4412686faa0 --- /dev/null +++ b/app/code/Magento/Weee/Test/Unit/Model/Resource/TaxTest.php @@ -0,0 +1,93 @@ +<?php +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +namespace Magento\Weee\Test\Unit\Model\Resource; + +class TaxTest extends \PHPUnit_Framework_TestCase +{ + /** + * @var \Magento\Weee\Model\Resource\Tax + */ + protected $model; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $resourceMock; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $storeManagerMock; + + /** + * @var \PHPUnit_Framework_MockObject_MockObject + */ + protected $adapterMock; + + protected function setUp() + { + $this->objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this); + + $this->storeManagerMock = $this->getMock('\Magento\Store\Model\StoreManagerInterface'); + + $this->selectMock = $this->getMock('\Magento\Framework\DB\Select', [], [], '', false); + + $this->adapterMock = $this->getMock('\Magento\Framework\DB\Adapter\AdapterInterface', [], [], '', false); + $this->adapterMock->expects($this->once()) + ->method('select') + ->willReturn($this->selectMock); + + $this->resourceMock = $this->getMock('\Magento\Framework\App\Resource', [], [], '', false); + $this->resourceMock->expects($this->at(0)) + ->method('getConnection') + ->with('core_write') + ->willReturn($this->adapterMock); + + $this->resourceMock->expects($this->at(1)) + ->method('getConnection') + ->with('core_read') + ->willReturn($this->adapterMock); + + $this->resourceMock->expects($this->once()) + ->method('getTableName') + ->willReturn('table_name'); + + $contextMock = $this->getMock('\Magento\Framework\Model\Resource\Db\Context', [], [], '', false); + $contextMock->expects($this->once())->method('getResources')->willReturn($this->resourceMock); + + $this->model = $this->objectManager->getObject( + 'Magento\Weee\Model\Resource\Tax', + [ + 'context' => $contextMock, + ] + ); + } + + public function testInWeeeLocation() + { + $this->selectMock->expects($this->at(1)) + ->method('where') + ->with('website_id IN(?)', [1, 0]) + ->willReturn($this->selectMock); + + $this->selectMock->expects($this->at(2)) + ->method('where') + ->with('country = ?', 'US') + ->willReturn($this->selectMock); + + $this->selectMock->expects($this->at(3)) + ->method('where') + ->with('state = ?', 0) + ->willReturn($this->selectMock); + + $this->selectMock->expects($this->any()) + ->method('from') + ->with('table_name', 'value') + ->willReturn($this->selectMock); + + $this->model->isWeeeInLocation('US', 0, 1); + } +} diff --git a/app/code/Magento/Weee/composer.json b/app/code/Magento/Weee/composer.json index 7102e797d034a46b70b9724af86c42669e9a8d1b..6fe75a545c2e3d77c698cfc70bbd201305e99d51 100644 --- a/app/code/Magento/Weee/composer.json +++ b/app/code/Magento/Weee/composer.json @@ -3,21 +3,22 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-catalog": "0.74.0-beta14", - "magento/module-tax": "0.74.0-beta14", - "magento/module-sales": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/module-directory": "0.74.0-beta14", - "magento/module-eav": "0.74.0-beta14", - "magento/module-customer": "0.74.0-beta14", - "magento/module-quote": "0.74.0-beta14", - "magento/module-checkout": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-catalog": "0.74.0-beta15", + "magento/module-tax": "0.74.0-beta15", + "magento/module-sales": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/module-directory": "0.74.0-beta15", + "magento/module-eav": "0.74.0-beta15", + "magento/module-customer": "0.74.0-beta15", + "magento/module-page-cache": "0.74.0-beta15", + "magento/module-quote": "0.74.0-beta15", + "magento/module-checkout": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Weee/etc/frontend/di.xml b/app/code/Magento/Weee/etc/frontend/di.xml index 274af56fa7134cb28eb908da6c486daa4c45b333..c9b706532877b79db60711a610859a92117c4fe7 100644 --- a/app/code/Magento/Weee/etc/frontend/di.xml +++ b/app/code/Magento/Weee/etc/frontend/di.xml @@ -13,4 +13,8 @@ </argument> </arguments> </type> + <type name="Magento\Framework\App\Action\Action"> + <plugin name="weee-app-action-dispatchController-context-plugin" + type="Magento\Weee\Model\App\Action\ContextPlugin"/> + </type> </config> diff --git a/app/code/Magento/Weee/etc/frontend/events.xml b/app/code/Magento/Weee/etc/frontend/events.xml new file mode 100644 index 0000000000000000000000000000000000000000..2bc96ce0399341f63d40f814ee72e061f54d205c --- /dev/null +++ b/app/code/Magento/Weee/etc/frontend/events.xml @@ -0,0 +1,16 @@ +<?xml version="1.0"?> +<!-- +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +--> +<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/Framework/Event/etc/events.xsd"> + <event name="customer_data_object_login"> + <observer name="customer_weee_logged_in" instance="Magento\Weee\Model\Observer\Session" method="customerLoggedIn" /> + </event> + <event name="customer_address_save_after"> + <observer name="customer_weee_after_address_save" instance="Magento\Weee\Model\Observer\Session" method="afterAddressSave" /> + </event> +</config> diff --git a/app/code/Magento/Widget/composer.json b/app/code/Magento/Widget/composer.json index 53ed15c7b6fb5644a930350c0ef7825766161645..bc523c4dfc4fb7ce6cf7f8557171d4150713d5a5 100644 --- a/app/code/Magento/Widget/composer.json +++ b/app/code/Magento/Widget/composer.json @@ -3,17 +3,17 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-cms": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/module-catalog": "0.74.0-beta14", - "magento/module-theme": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", - "magento/module-variable": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-cms": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/module-catalog": "0.74.0-beta15", + "magento/module-theme": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", + "magento/module-variable": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/code/Magento/Wishlist/composer.json b/app/code/Magento/Wishlist/composer.json index 31d183b64bb0ae5cafd1f548adcc4c776cf12132..6420024f7fe65a5009e19b1494cfe23e1470a9ec 100644 --- a/app/code/Magento/Wishlist/composer.json +++ b/app/code/Magento/Wishlist/composer.json @@ -3,28 +3,28 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/module-store": "0.74.0-beta14", - "magento/module-customer": "0.74.0-beta14", - "magento/module-catalog": "0.74.0-beta14", - "magento/module-checkout": "0.74.0-beta14", - "magento/module-theme": "0.74.0-beta14", - "magento/module-catalog-inventory": "0.74.0-beta14", - "magento/module-rss": "0.74.0-beta14", - "magento/module-backend": "0.74.0-beta14", - "magento/module-sales": "0.74.0-beta14", - "magento/module-grouped-product": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", - "magento/module-ui": "0.74.0-beta14", + "magento/module-store": "0.74.0-beta15", + "magento/module-customer": "0.74.0-beta15", + "magento/module-catalog": "0.74.0-beta15", + "magento/module-checkout": "0.74.0-beta15", + "magento/module-theme": "0.74.0-beta15", + "magento/module-catalog-inventory": "0.74.0-beta15", + "magento/module-rss": "0.74.0-beta15", + "magento/module-backend": "0.74.0-beta15", + "magento/module-sales": "0.74.0-beta15", + "magento/module-grouped-product": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", + "magento/module-ui": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "suggest": { - "magento/module-configurable-product": "0.74.0-beta14", - "magento/module-downloadable": "0.74.0-beta14", - "magento/module-bundle": "0.74.0-beta14", - "magento/module-cookie": "0.74.0-beta14" + "magento/module-configurable-product": "0.74.0-beta15", + "magento/module-downloadable": "0.74.0-beta15", + "magento/module-bundle": "0.74.0-beta15", + "magento/module-cookie": "0.74.0-beta15" }, "type": "magento2-module", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/design/adminhtml/Magento/backend/composer.json b/app/design/adminhtml/Magento/backend/composer.json index a635d2f6368d6f8d066d468efc7a6056820e06e4..994aa5c930a775f5a3ec975cc75a335cb5d605c1 100644 --- a/app/design/adminhtml/Magento/backend/composer.json +++ b/app/design/adminhtml/Magento/backend/composer.json @@ -3,11 +3,11 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/framework": "0.74.0-beta14", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-theme", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/design/frontend/Magento/blank/composer.json b/app/design/frontend/Magento/blank/composer.json index e715b5304c3a39ca06f52c98c37a438a68cf839d..72d53a5c015e815232790bc9b4f1adbc0c796104 100644 --- a/app/design/frontend/Magento/blank/composer.json +++ b/app/design/frontend/Magento/blank/composer.json @@ -3,11 +3,11 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/framework": "0.74.0-beta14", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-theme", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/design/frontend/Magento/luma/composer.json b/app/design/frontend/Magento/luma/composer.json index 011484f9abf79fb35ffa25a064e3debc221029ee..24dde37d5609594df501e8d9b0f026b86028789c 100644 --- a/app/design/frontend/Magento/luma/composer.json +++ b/app/design/frontend/Magento/luma/composer.json @@ -3,12 +3,12 @@ "description": "N/A", "require": { "php": "~5.5.0|~5.6.0", - "magento/theme-frontend-blank": "0.74.0-beta14", - "magento/framework": "0.74.0-beta14", + "magento/theme-frontend-blank": "0.74.0-beta15", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-theme", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/app/i18n/magento/de_de/composer.json b/app/i18n/magento/de_de/composer.json index 752d5584e51535511fc382bd1edfad901affa4fd..3e9d723ba1e9571b8ea58bb261587566375e1923 100644 --- a/app/i18n/magento/de_de/composer.json +++ b/app/i18n/magento/de_de/composer.json @@ -1,13 +1,13 @@ { "name": "magento/language-de_de", "description": "German (Germany) language", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" ], "require": { - "magento/framework": "0.74.0-beta14", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-language", diff --git a/app/i18n/magento/en_us/composer.json b/app/i18n/magento/en_us/composer.json index 4feb2ced23f3e909170d222c43410ff08edc5cd7..8743ec39e77badf5d2ddce2850899dcc9cd19d58 100644 --- a/app/i18n/magento/en_us/composer.json +++ b/app/i18n/magento/en_us/composer.json @@ -1,13 +1,13 @@ { "name": "magento/language-en_us", "description": "English (United States) language", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" ], "require": { - "magento/framework": "0.74.0-beta14", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-language", diff --git a/app/i18n/magento/es_es/composer.json b/app/i18n/magento/es_es/composer.json index c2a70d39babadc84b11b03652e750d590ffd15fa..9f039e8e7f96eee37f839065ad7d055c8b7acd90 100644 --- a/app/i18n/magento/es_es/composer.json +++ b/app/i18n/magento/es_es/composer.json @@ -1,13 +1,13 @@ { "name": "magento/language-es_es", "description": "Spanish (Spain) language", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" ], "require": { - "magento/framework": "0.74.0-beta14", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-language", diff --git a/app/i18n/magento/fr_fr/composer.json b/app/i18n/magento/fr_fr/composer.json index b6c40d9c8fa9be5d193c4f81534ab9cf0bebdd89..89b782484baffebf357f63c56b5ad5e437e07a1f 100644 --- a/app/i18n/magento/fr_fr/composer.json +++ b/app/i18n/magento/fr_fr/composer.json @@ -1,13 +1,13 @@ { "name": "magento/language-fr_fr", "description": "French (France) language", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" ], "require": { - "magento/framework": "0.74.0-beta14", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-language", diff --git a/app/i18n/magento/nl_nl/composer.json b/app/i18n/magento/nl_nl/composer.json index c905b708215fd32745c8c1313fca3649c31f4c7c..01ab7abdb18c0487f89b02cb327e418818f2d7f8 100644 --- a/app/i18n/magento/nl_nl/composer.json +++ b/app/i18n/magento/nl_nl/composer.json @@ -1,13 +1,13 @@ { "name": "magento/language-nl_nl", "description": "Dutch (Netherlands) language", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" ], "require": { - "magento/framework": "0.74.0-beta14", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-language", diff --git a/app/i18n/magento/pt_br/composer.json b/app/i18n/magento/pt_br/composer.json index 4f80afff03c0adbfab31185741fdb201c6391b50..a52d0be442954404ec0fd3ab5c2105df23bb6c4e 100644 --- a/app/i18n/magento/pt_br/composer.json +++ b/app/i18n/magento/pt_br/composer.json @@ -1,13 +1,13 @@ { "name": "magento/language-pt_br", "description": "Portuguese (Brazil) language", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" ], "require": { - "magento/framework": "0.74.0-beta14", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-language", diff --git a/app/i18n/magento/zh_cn/composer.json b/app/i18n/magento/zh_cn/composer.json index 63c14d0af900801962fcaa32f179cf375fa451f9..f2b0c7803c9498a07dbfe603b8a58fcee58118a0 100644 --- a/app/i18n/magento/zh_cn/composer.json +++ b/app/i18n/magento/zh_cn/composer.json @@ -1,13 +1,13 @@ { "name": "magento/language-zh_cn", "description": "Chinese (China) language", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" ], "require": { - "magento/framework": "0.74.0-beta14", + "magento/framework": "0.74.0-beta15", "magento/magento-composer-installer": "*" }, "type": "magento2-language", diff --git a/composer.json b/composer.json index de38e5f9054eaa949f908c24667d2eca249f0c4b..46f9532c0fc0c658a6857a6cbc3e639d34d92075 100644 --- a/composer.json +++ b/composer.json @@ -2,7 +2,7 @@ "name": "magento/magento2ce", "description": "Magento 2 (Community Edition)", "type": "project", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/composer.lock b/composer.lock index ad898f081b37863b7058659247c2f9facb8c4a70..3edd20fd60b9ab37eebc62bb027fb7d6f8ab8691 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "abd337bce9c7d09a56c1c40b3d2e4092", + "hash": "0c8183878a902922b635912a4ca71bdd", "packages": [ { "name": "composer/composer", @@ -1757,18 +1757,21 @@ "source": { "type": "git", "url": "https://github.com/zendframework/zend-stdlib.git", - "reference": "eab586f4c18af3fa63c977611939f1f4a3cf1030" + "reference": "cf05c5ba75606e47ffee91cedc72778da46f74c3" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/zendframework/zend-stdlib/zipball/cf05c5ba75606e47ffee91cedc72778da46f74c3", - "reference": "eab586f4c18af3fa63c977611939f1f4a3cf1030", + "reference": "cf05c5ba75606e47ffee91cedc72778da46f74c3", "shasum": "" }, "require": { "php": ">=5.3.23" }, "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0", + "satooshi/php-coveralls": "dev-master", "zendframework/zend-eventmanager": "self.version", "zendframework/zend-filter": "self.version", "zendframework/zend-serializer": "self.version", @@ -1789,19 +1792,19 @@ }, "autoload": { "psr-4": { - "Zend\\Stdlib\\": "" + "Zend\\Stdlib\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], - "homepage": "https://github.com/zendframework/zf2", + "homepage": "https://github.com/zendframework/zend-stdlib", "keywords": [ "stdlib", "zf2" ], - "time": "2015-04-01 18:09:29" + "time": "2015-03-25 20:55:48" }, { "name": "zendframework/zend-text", @@ -1894,12 +1897,12 @@ "source": { "type": "git", "url": "https://github.com/zendframework/zend-validator.git", - "reference": "eb678d20256f120a72ca27276bbb2875841701ab" + "reference": "45fac2545a0f2eb66d71cb7966feee481e7c475f" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/zendframework/zend-validator/zipball/45fac2545a0f2eb66d71cb7966feee481e7c475f", - "reference": "eb678d20256f120a72ca27276bbb2875841701ab", + "reference": "45fac2545a0f2eb66d71cb7966feee481e7c475f", "shasum": "" }, "require": { @@ -1907,6 +1910,9 @@ "zendframework/zend-stdlib": "self.version" }, "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0", + "satooshi/php-coveralls": "dev-master", "zendframework/zend-db": "self.version", "zendframework/zend-filter": "self.version", "zendframework/zend-i18n": "self.version", @@ -1934,7 +1940,7 @@ }, "autoload": { "psr-4": { - "Zend\\Validator\\": "" + "Zend\\Validator\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1942,12 +1948,12 @@ "BSD-3-Clause" ], "description": "provides a set of commonly needed validators", - "homepage": "https://github.com/zendframework/zf2", + "homepage": "https://github.com/zendframework/zend-validator", "keywords": [ "validator", "zf2" ], - "time": "2015-04-01 18:09:30" + "time": "2015-03-25 20:55:48" }, { "name": "zendframework/zend-view", diff --git a/dev/tests/integration/testsuite/Magento/Framework/Url/Helper/DataTest.php b/dev/tests/integration/testsuite/Magento/Framework/Url/Helper/DataTest.php index ce94b1e855a8acbcf54132c42c930a80783fa932..d40ef433bcc0a6c958bded00ad3a9a6bc78e7173 100644 --- a/dev/tests/integration/testsuite/Magento/Framework/Url/Helper/DataTest.php +++ b/dev/tests/integration/testsuite/Magento/Framework/Url/Helper/DataTest.php @@ -14,8 +14,6 @@ class DataTest extends \PHPUnit_Framework_TestCase protected function setUp() { - $_SERVER['HTTP_HOST'] = 'example.com'; - $_SERVER['REQUEST_URI'] = '/fancy_uri'; $this->_helper = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get( 'Magento\Framework\Url\Helper\Data' ); @@ -23,12 +21,12 @@ class DataTest extends \PHPUnit_Framework_TestCase public function testGetCurrentBase64Url() { - $this->assertEquals('aHR0cDovL2xvY2FsaG9zdDo4MQ,,', $this->_helper->getCurrentBase64Url()); + $this->assertEquals('aHR0cDovL2xvY2FsaG9zdDo4MS8,', $this->_helper->getCurrentBase64Url()); } public function testGetEncodedUrl() { - $this->assertEquals('aHR0cDovL2xvY2FsaG9zdDo4MQ,,', $this->_helper->getEncodedUrl()); + $this->assertEquals('aHR0cDovL2xvY2FsaG9zdDo4MS8,', $this->_helper->getEncodedUrl()); $this->assertEquals('aHR0cDovL2V4YW1wbGUuY29tLw,,', $this->_helper->getEncodedUrl('http://example.com/')); } } diff --git a/dev/tools/performance-toolkit/fixtures/orders.php b/dev/tools/performance-toolkit/fixtures/orders.php deleted file mode 100644 index e2aa2c832e0fb6390dda692fce7b5b831329b047..0000000000000000000000000000000000000000 --- a/dev/tools/performance-toolkit/fixtures/orders.php +++ /dev/null @@ -1,314 +0,0 @@ -<?php -/** - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ - -/** - * Class OrdersFixture - */ -class OrdersFixture extends \Magento\ToolkitFramework\Fixture -{ - /** - * @var int - */ - protected $priority = 135; - - /** - * {@inheritdoc} - */ - public function execute() - { - $ordersCount = \Magento\ToolkitFramework\Config::getInstance()->getValue('orders', 0); - if ($ordersCount < 1) { - return; - } - $this->application->resetObjectManager(); - - $writeAdapter = $this->getConnection('write'); - - $quoteTableName = $this->getTableName( - 'quote', - 'Magento\Quote\Model\Resource\Quote' - ); - $quoteAddressTableName = $this->getTableName( - 'quote_address', - 'Magento\Quote\Model\Resource\Quote\Address' - ); - $quoteItemTableName = $this->getTableName( - 'quote_item', - 'Magento\Quote\Model\Resource\Quote\Item' - ); - $quoteItemOptionTableName = $this->getTableName( - 'quote_item_option', - 'Magento\Quote\Model\Resource\Quote\Item\Option' - ); - $quotePaymentTableName = $this->getTableName( - 'quote_payment', - 'Magento\Quote\Model\Resource\Quote\Payment' - ); - $quoteAddressRateTableName = $this->getTableName( - 'quote_shipping_rate', - 'Magento\Quote\Model\Resource\Quote\Address\Rate' - ); - $reportEventTableName = $this->getTableName( - 'report_event', - 'Magento\Reports\Model\Resource\Event' - ); - $salesOrderTableName = $this->getTableName( - 'sales_order', - 'Magento\Sales\Model\Resource\Order' - ); - $salesOrderAddressTableName = $this->getTableName( - 'sales_order_address', - 'Magento\Sales\Model\Resource\Order' - ); - $salesOrderGridTableName = $this->getTableName( - 'sales_order_grid', - 'Magento\Sales\Model\Resource\Order\Grid' - ); - $salesOrderItemTableName = $this->getTableName( - 'sales_order_item', - 'Magento\Sales\Model\Resource\Order\Item' - ); - $salesOrderPaymentTableName = $this->getTableName( - 'sales_order_payment', - 'Magento\Sales\Model\Resource\Order\Payment' - ); - $salesOrderStatusHistoryTableName = $this->getTableName( - 'sales_order_status_history', - 'Magento\Sales\Model\Resource\Order\Status\History' - ); - $eavEntityStoreTableName = $this->getTableName( - 'eav_entity_store', - '\Magento\Eav\Model\Resource\Entity\Store' - ); - /** @var \Magento\Store\Model\StoreManager $storeManager */ - $storeManager = $this->application->getObjectManager()->create('Magento\Store\Model\StoreManager'); - /** @var $category \Magento\Catalog\Model\Category */ - $category = $this->application->getObjectManager()->get('Magento\Catalog\Model\Category'); - /** @var $product \Magento\Catalog\Model\Product */ - $product = $this->application->getObjectManager()->get('Magento\Catalog\Model\Product'); - - $result = []; - $stores = $storeManager->getStores(); - foreach ($stores as $store) { - $storeId = $store->getStoreId(); - $websiteId = $store->getWebsite()->getId(); - $websiteName = $store->getWebsite()->getName(); - $groupName = $store->getGroup()->getName(); - $storeName = $store->getName(); - $storeRootCategory = $store->getRootCategoryId(); - $category->load($storeRootCategory); - $categoryResource = $category->getResource(); - //Get all categories - $resultsCategories = $categoryResource->getAllChildren($category); - foreach ($resultsCategories as $resultsCategory) { - $category->load($resultsCategory); - $structure = explode('/', $category->getPath()); - $pathSize = count($structure); - if ($pathSize > 1) { - $path = []; - for ($i = 1; $i < $pathSize; $i++) { - $path[] = $category->load($structure[$i])->getName(); - } - array_shift($path); - $resultsCategoryName = implode('/', $path); - } else { - $resultsCategoryName = $category->getName(); - } - //Not use root categories - if (trim($resultsCategoryName) != '') { - /** @var $productCategory \Magento\Catalog\Model\Category */ - $productCategory = $this->application->getObjectManager()->get('Magento\Catalog\Model\Category'); - - /** @var $simpleProductCollection \Magento\Catalog\Model\Resource\Product\Collection */ - $simpleProductCollection = $this->application->getObjectManager()->create( - 'Magento\Catalog\Model\Resource\Product\Collection' - ); - - $simpleProductCollection->addStoreFilter($storeId); - $simpleProductCollection->addWebsiteFilter($websiteId); - $simpleProductCollection->addCategoryFilter($productCategory->load($resultsCategory)); - $simpleProductCollection->getSelect()->where(" type_id = 'simple' "); - $simpleIds = $simpleProductCollection->getAllIds(2); - $simpleProductsResult = []; - foreach ($simpleIds as $key => $simpleId) { - $simpleProduct = $product->load($simpleId); - $simpleProductsResult[$key]['simpleProductId'] = $simpleId; - $simpleProductsResult[$key]['simpleProductSku'] = $simpleProduct->getSku(); - $simpleProductsResult[$key]['simpleProductName'] = $simpleProduct->getName(); - } - - $result[] = [ - $storeId, - $websiteName. '\n'. $groupName . '\n' . $storeName, - $simpleProductsResult - ]; - } - } - } - - $productStoreId = function ($index) use ($result) { - return $result[$index % count($result)][0]; - }; - $productStoreName = function ($index) use ($result) { - return $result[$index % count($result)][1]; - }; - - $simpleProductId[0] = function ($index) use ($result) { - return $result[$index % count($result)][2][0]['simpleProductId']; - }; - $simpleProductId[1] = function ($index) use ($result) { - return $result[$index % count($result)][2][1]['simpleProductId']; - }; - $simpleProductSku[0] = function ($index) use ($result) { - return $result[$index % count($result)][2][0]['simpleProductSku']; - }; - $simpleProductSku[1] = function ($index) use ($result) { - return $result[$index % count($result)][2][1]['simpleProductSku']; - }; - $simpleProductName[0] = function ($index) use ($result) { - return $result[$index % count($result)][2][0]['simpleProductName']; - }; - $simpleProductName[1] = function ($index) use ($result) { - return $result[$index % count($result)][2][1]['simpleProductName']; - }; - - $entityId = 1; - while ($entityId <= $ordersCount) { - $queries = ""; - - $orderNumber = 100000000 * $productStoreId($entityId) + $entityId; - $email = 'order_' . $entityId . '@example.com'; - $firstName = 'First Name'; - $lastName = 'Last Name'; - $company = 'Company'; - $address = 'Address'; - $city = 'City'; - $state = 'Alabama'; - $country = 'US'; - $zip = '11111'; - $phone = '911'; - $time = date("Y-m-d h:i:s"); - - $simpleProductIdLen[0] = strlen($simpleProductId[0]($entityId)); - $simpleProductIdLen[1] = strlen($simpleProductId[1]($entityId)); - - $queries .= "INSERT INTO `{$eavEntityStoreTableName}` (`entity_store_id`, `entity_type_id`, `store_id`, `increment_prefix`, `increment_last_id`) VALUES ({$productStoreId($entityId)}, 5, {$productStoreId($entityId)}, '{$productStoreId($entityId)}', '{$orderNumber}') ON DUPLICATE KEY UPDATE `increment_last_id`='{$orderNumber}';"; - - $quoteId = $entityId; - $queries .= "INSERT INTO `{$quoteTableName}` (`entity_id`, `store_id`, `created_at`, `updated_at`, `converted_at`, `is_active`, `is_virtual`, `is_multi_shipping`, `items_count`, `items_qty`, `orig_order_id`, `store_to_base_rate`, `store_to_quote_rate`, `base_currency_code`, `store_currency_code`, `quote_currency_code`, `grand_total`, `base_grand_total`, `checkout_method`, `customer_id`, `customer_tax_class_id`, `customer_group_id`, `customer_email`, `customer_prefix`, `customer_firstname`, `customer_middlename`, `customer_lastname`, `customer_suffix`, `customer_dob`, `customer_note`, `customer_note_notify`, `customer_is_guest`, `remote_ip`, `applied_rule_ids`, `reserved_order_id`, `password_hash`, `coupon_code`, `global_currency_code`, `base_to_global_rate`, `base_to_quote_rate`, `customer_taxvat`, `customer_gender`, `subtotal`, `base_subtotal`, `subtotal_with_discount`, `base_subtotal_with_discount`, `is_changed`, `trigger_recollect`, `ext_shipping_info`, `is_persistent`, `gift_message_id`) VALUES ({$quoteId}, {$productStoreId($entityId)}, '{$time}', '1970-01-01 03:00:00', NULL, 0, 0, 0, 2, 2.0000, 0, 0.0000, 0.0000, 'USD', 'USD', 'USD', 25.3000, 25.3000, 'guest', NULL, 3, 0, '{$email}', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 1, '127.0.0.1', '1', NULL, NULL, NULL, 'USD', 1.0000, 1.0000, NULL, NULL, 17.0000, 17.0000, 15.3000, 15.3000, 1, 0, NULL, 0, NULL);"; - - $quoteAddressId[0] = $entityId * 2 - 1; - $quoteAddressId[1] = $entityId * 2; - $queries .= "INSERT INTO `{$quoteAddressTableName}` (`address_id`, `quote_id`, `created_at`, `updated_at`, `customer_id`, `save_in_address_book`, `customer_address_id`, `address_type`, `email`, `prefix`, `firstname`, `middlename`, `lastname`, `suffix`, `company`, `street`, `city`, `region`, `region_id`, `postcode`, `country_id`, `telephone`, `fax`, `same_as_billing`, `collect_shipping_rates`, `shipping_method`, `shipping_description`, `weight`, `subtotal`, `base_subtotal`, `subtotal_with_discount`, `base_subtotal_with_discount`, `tax_amount`, `base_tax_amount`, `shipping_amount`, `base_shipping_amount`, `shipping_tax_amount`, `base_shipping_tax_amount`, `discount_amount`, `base_discount_amount`, `grand_total`, `base_grand_total`, `customer_notes`, `applied_taxes`, `discount_description`, `shipping_discount_amount`, `base_shipping_discount_amount`, `subtotal_incl_tax`, `base_subtotal_total_incl_tax`, `discount_tax_compensation_amount`, `base_discount_tax_compensation_amount`, `shipping_discount_tax_compensation_amount`, `base_shipping_discount_tax_compensation_amnt`, `shipping_incl_tax`, `base_shipping_incl_tax`, `free_shipping`, `vat_id`, `vat_is_valid`, `vat_request_id`, `vat_request_date`, `vat_request_success`, `gift_message_id`) VALUES ({$quoteAddressId[0]}, {$quoteId}, '{$time}', '1970-01-01 03:00:00', NULL, 1, NULL, 'billing', '{$email}', NULL, '{$firstName}', NULL, '{$lastName}', NULL, '{$company}', '{$address}', '{$city}', '{$state}', 1, '{$zip}', '{$country}', '{$phone}', NULL, 0, 0, NULL, NULL, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, NULL, NULL, 0.0000, 0.0000, 0.0000, 0.0000, NULL, NULL, NULL, NULL, NULL, 0.0000, NULL, 0.0000, 0.0000, 0.0000, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL);"; - $queries .= "INSERT INTO `{$quoteAddressTableName}` (`address_id`, `quote_id`, `created_at`, `updated_at`, `customer_id`, `save_in_address_book`, `customer_address_id`, `address_type`, `email`, `prefix`, `firstname`, `middlename`, `lastname`, `suffix`, `company`, `street`, `city`, `region`, `region_id`, `postcode`, `country_id`, `telephone`, `fax`, `same_as_billing`, `collect_shipping_rates`, `shipping_method`, `shipping_description`, `weight`, `subtotal`, `base_subtotal`, `subtotal_with_discount`, `base_subtotal_with_discount`, `tax_amount`, `base_tax_amount`, `shipping_amount`, `base_shipping_amount`, `shipping_tax_amount`, `base_shipping_tax_amount`, `discount_amount`, `base_discount_amount`, `grand_total`, `base_grand_total`, `customer_notes`, `applied_taxes`, `discount_description`, `shipping_discount_amount`, `base_shipping_discount_amount`, `subtotal_incl_tax`, `base_subtotal_total_incl_tax`, `discount_tax_compensation_amount`, `base_discount_tax_compensation_amount`, `shipping_discount_tax_compensation_amount`, `base_shipping_discount_tax_compensation_amnt`, `shipping_incl_tax`, `base_shipping_incl_tax`, `free_shipping`, `vat_id`, `vat_is_valid`, `vat_request_id`, `vat_request_date`, `vat_request_success`, `gift_message_id`) VALUES ({$quoteAddressId[1]}, {$quoteId}, '{$time}', '1970-01-01 03:00:00', NULL, 0, NULL, 'shipping', '{$email}', NULL, '{$firstName}', NULL, '{$lastName}', NULL, '{$company}', '{$address}', '{$city}', '{$state}', 1, '{$zip}', '{$country}', '{$phone}', NULL, 1, 0, 'flatrate_flatrate', 'Flat Rate - Fixed', 2.0000, 17.0000, 17.0000, 0.0000, 0.0000, 0.0000, 0.0000, 10.0000, 10.0000, 0.0000, 0.0000, -1.7000, -1.7000, 25.3000, 25.3000, NULL, 'a:0:{}', NULL, 0.0000, 0.0000, 17.0000, NULL, 0.0000, 0.0000, 0.0000, NULL, 10.0000, 10.0000, 0, NULL, NULL, NULL, NULL, NULL, NULL);"; - - $quoteItemId[0] = $entityId * 4 - 3; - $quoteItemId[1] = $entityId * 4 - 2; - $quoteItemId[2] = $entityId * 4 - 1; - $quoteItemId[3] = $entityId * 4; - $queries .= "INSERT INTO `{$quoteItemTableName}` (`item_id`, `quote_id`, `created_at`, `updated_at`, `product_id`, `store_id`, `parent_item_id`, `is_virtual`, `sku`, `name`, `description`, `applied_rule_ids`, `additional_data`, `is_qty_decimal`, `no_discount`, `weight`, `qty`, `price`, `base_price`, `custom_price`, `discount_percent`, `discount_amount`, `base_discount_amount`, `tax_percent`, `tax_amount`, `base_tax_amount`, `row_total`, `base_row_total`, `row_total_with_discount`, `row_weight`, `product_type`, `base_tax_before_discount`, `tax_before_discount`, `original_custom_price`, `redirect_url`, `base_cost`, `price_incl_tax`, `base_price_incl_tax`, `row_total_incl_tax`, `base_row_total_incl_tax`, `discount_tax_compensation_amount`, `base_discount_tax_compensation_amount`, `free_shipping`, `gift_message_id`, `weee_tax_applied`, `weee_tax_applied_amount`, `weee_tax_applied_row_amount`, `weee_tax_disposition`, `weee_tax_row_disposition`, `base_weee_tax_applied_amount`, `base_weee_tax_applied_row_amnt`, `base_weee_tax_disposition`, `base_weee_tax_row_disposition`) VALUES ({$quoteItemId[0]}, {$quoteId}, '1970-01-01 03:00:00', '1970-01-01 03:00:00', {$simpleProductId[0]($entityId)}, {$productStoreId($entityId)}, NULL, 0, '{$simpleProductSku[0]($entityId)}', '{$simpleProductName[0]($entityId)}', NULL, '1', NULL, 0, 0, 1.0000, 1.0000, 8.5000, 8.5000, NULL, 10.0000, 0.8500, 0.8500, 0.0000, 0.0000, 0.0000, 8.5000, 8.5000, 0.0000, 1.0000, 'simple', NULL, NULL, NULL, NULL, NULL, 8.5000, 8.5000, 8.5000, 8.5000, 0.0000, 0.0000, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);"; - $queries .= "INSERT INTO `{$quoteItemTableName}` (`item_id`, `quote_id`, `created_at`, `updated_at`, `product_id`, `store_id`, `parent_item_id`, `is_virtual`, `sku`, `name`, `description`, `applied_rule_ids`, `additional_data`, `is_qty_decimal`, `no_discount`, `weight`, `qty`, `price`, `base_price`, `custom_price`, `discount_percent`, `discount_amount`, `base_discount_amount`, `tax_percent`, `tax_amount`, `base_tax_amount`, `row_total`, `base_row_total`, `row_total_with_discount`, `row_weight`, `product_type`, `base_tax_before_discount`, `tax_before_discount`, `original_custom_price`, `redirect_url`, `base_cost`, `price_incl_tax`, `base_price_incl_tax`, `row_total_incl_tax`, `base_row_total_incl_tax`, `discount_tax_compensation_amount`, `base_discount_tax_compensation_amount`, `free_shipping`, `gift_message_id`, `weee_tax_applied`, `weee_tax_applied_amount`, `weee_tax_applied_row_amount`, `weee_tax_disposition`, `weee_tax_row_disposition`, `base_weee_tax_applied_amount`, `base_weee_tax_applied_row_amnt`, `base_weee_tax_disposition`, `base_weee_tax_row_disposition`) VALUES ({$quoteItemId[1]}, {$quoteId}, '1970-01-01 03:00:00', '1970-01-01 03:00:00', {$simpleProductId[1]($entityId)}, {$productStoreId($entityId)}, NULL, 0, '{$simpleProductSku[1]($entityId)}', '{$simpleProductName[1]($entityId)}', NULL, '1', NULL, 0, 0, 1.0000, 1.0000, 8.5000, 8.5000, NULL, 10.0000, 0.8500, 0.8500, 0.0000, 0.0000, 0.0000, 8.5000, 8.5000, 0.0000, 1.0000, 'simple', NULL, NULL, NULL, NULL, NULL, 8.5000, 8.5000, 8.5000, 8.5000, 0.0000, 0.0000, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);"; - - $quoteItemOptionId[0] = $entityId * 8 - 7; - $quoteItemOptionId[1] = $entityId * 8 - 6; - $quoteItemOptionId[2] = $entityId * 8 - 5; - $quoteItemOptionId[3] = $entityId * 8 - 4; - $quoteItemOptionId[4] = $entityId * 8 - 3; - $quoteItemOptionId[5] = $entityId * 8 - 2; - $quoteItemOptionId[6] = $entityId * 8 - 1; - $quoteItemOptionId[7] = $entityId * 8; - $queries .= "INSERT INTO `{$quoteItemOptionTableName}` (`option_id`, `item_id`, `product_id`, `code`, `value`) VALUES ({$quoteItemOptionId[0]}, {$quoteItemId[0]}, {$simpleProductId[0]($entityId)}, 'info_buyRequest', 'a:3:{s:4:\"uenc\";s:44:\"aHR0cDovL21hZ2UyLmNvbS9jYXRlZ29yeS0xLmh0bWw,\";s:7:\"product\";s:{$simpleProductIdLen[0]}:\"{$simpleProductId[0]($entityId)}\";s:3:\"qty\";i:1;}');"; - $queries .= "INSERT INTO `{$quoteItemOptionTableName}` (`option_id`, `item_id`, `product_id`, `code`, `value`) VALUES ({$quoteItemOptionId[1]}, {$quoteItemId[1]}, {$simpleProductId[1]($entityId)}, 'info_buyRequest', 'a:3:{s:4:\"uenc\";s:44:\"aHR0cDovL21hZ2UyLmNvbS9jYXRlZ29yeS0xLmh0bWw,\";s:7:\"product\";s:{$simpleProductIdLen[1]}:\"{$simpleProductId[1]($entityId)}\";s:3:\"qty\";i:1;}');"; - - $quotePaymentId = $quoteId; - $queries .= "INSERT INTO `{$quotePaymentTableName}` (`payment_id`, `quote_id`, `created_at`, `updated_at`, `method`, `cc_type`, `cc_number_enc`, `cc_last_4`, `cc_cid_enc`, `cc_owner`, `cc_exp_month`, `cc_exp_year`, `cc_ss_owner`, `cc_ss_start_month`, `cc_ss_start_year`, `po_number`, `additional_data`, `cc_ss_issue`, `additional_information`) VALUES ({$quotePaymentId}, {$quoteId}, '{$time}', '1970-01-01 03:00:00', 'checkmo', NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, 0, 0, NULL, NULL, NULL, NULL);"; - - $quoteShippingRateId = $quoteAddressId[1]; - $queries .= "INSERT INTO `{$quoteAddressRateTableName}` (`rate_id`, `address_id`, `created_at`, `updated_at`, `carrier`, `carrier_title`, `code`, `method`, `method_description`, `price`, `error_message`, `method_title`) VALUES ({$quoteShippingRateId}, {$quoteAddressId[1]}, '{$time}', '1970-01-01 03:00:00', 'flatrate', 'Flat Rate', 'flatrate_flatrate', 'flatrate', NULL, 10.0000, NULL, 'Fixed');"; - - $reportEventId[0] = $quoteItemId[0]; - $reportEventId[1] = $quoteItemId[1]; - $reportEventId[2] = $quoteItemId[2]; - $reportEventId[3] = $quoteItemId[3]; - $queries .= "INSERT INTO `{$reportEventTableName}` (`event_id`, `logged_at`, `event_type_id`, `object_id`, `subject_id`, `subtype`, `store_id`) VALUES ({$reportEventId[0]}, '{$time}', 4, {$simpleProductId[0]($entityId)}, 2, 1, {$productStoreId($entityId)});"; - $queries .= "INSERT INTO `{$reportEventTableName}` (`event_id`, `logged_at`, `event_type_id`, `object_id`, `subject_id`, `subtype`, `store_id`) VALUES ({$reportEventId[1]}, '{$time}', 4, {$simpleProductId[1]($entityId)}, 2, 1, {$productStoreId($entityId)});"; - - $salesOrderId = $quoteId; - $queries .= "INSERT INTO `{$salesOrderTableName}` (`entity_id`, `state`, `status`, `coupon_code`, `protect_code`, `shipping_description`, `is_virtual`, `store_id`, `customer_id`, `base_discount_amount`, `base_discount_canceled`, `base_discount_invoiced`, `base_discount_refunded`, `base_grand_total`, `base_shipping_amount`, `base_shipping_canceled`, `base_shipping_invoiced`, `base_shipping_refunded`, `base_shipping_tax_amount`, `base_shipping_tax_refunded`, `base_subtotal`, `base_subtotal_canceled`, `base_subtotal_invoiced`, `base_subtotal_refunded`, `base_tax_amount`, `base_tax_canceled`, `base_tax_invoiced`, `base_tax_refunded`, `base_to_global_rate`, `base_to_order_rate`, `base_total_canceled`, `base_total_invoiced`, `base_total_invoiced_cost`, `base_total_offline_refunded`, `base_total_online_refunded`, `base_total_paid`, `base_total_qty_ordered`, `base_total_refunded`, `discount_amount`, `discount_canceled`, `discount_invoiced`, `discount_refunded`, `grand_total`, `shipping_amount`, `shipping_canceled`, `shipping_invoiced`, `shipping_refunded`, `shipping_tax_amount`, `shipping_tax_refunded`, `store_to_base_rate`, `store_to_order_rate`, `subtotal`, `subtotal_canceled`, `subtotal_invoiced`, `subtotal_refunded`, `tax_amount`, `tax_canceled`, `tax_invoiced`, `tax_refunded`, `total_canceled`, `total_invoiced`, `total_offline_refunded`, `total_online_refunded`, `total_paid`, `total_qty_ordered`, `total_refunded`, `can_ship_partially`, `can_ship_partially_item`, `customer_is_guest`, `customer_note_notify`, `billing_address_id`, `customer_group_id`, `edit_increment`, `email_sent`, `send_email`, `forced_shipment_with_invoice`, `payment_auth_expiration`, `quote_address_id`, `quote_id`, `shipping_address_id`, `adjustment_negative`, `adjustment_positive`, `base_adjustment_negative`, `base_adjustment_positive`, `base_shipping_discount_amount`, `base_subtotal_incl_tax`, `base_total_due`, `payment_authorization_amount`, `shipping_discount_amount`, `subtotal_incl_tax`, `total_due`, `weight`, `customer_dob`, `increment_id`, `applied_rule_ids`, `base_currency_code`, `customer_email`, `customer_firstname`, `customer_lastname`, `customer_middlename`, `customer_prefix`, `customer_suffix`, `customer_taxvat`, `discount_description`, `ext_customer_id`, `ext_order_id`, `global_currency_code`, `hold_before_state`, `hold_before_status`, `order_currency_code`, `original_increment_id`, `relation_child_id`, `relation_child_real_id`, `relation_parent_id`, `relation_parent_real_id`, `remote_ip`, `shipping_method`, `store_currency_code`, `store_name`, `x_forwarded_for`, `customer_note`, `created_at`, `updated_at`, `total_item_count`, `customer_gender`, `discount_tax_compensation_amount`, `base_discount_tax_compensation_amount`, `shipping_discount_tax_compensation_amount`, `base_shipping_discount_tax_compensation_amnt`, `discount_tax_compensation_invoiced`, `base_discount_tax_compensation_invoiced`, `discount_tax_compensation_refunded`, `base_discount_tax_compensation_refunded`, `shipping_incl_tax`, `base_shipping_incl_tax`, `coupon_rule_name`, `gift_message_id`) VALUES ({$salesOrderId}, 'new', 'pending', NULL, '272ecb', 'Flat Rate - Fixed', 0, {$productStoreId($entityId)}, NULL, -1.7000, NULL, NULL, NULL, 25.3000, 10.0000, NULL, NULL, NULL, 0.0000, NULL, 17.0000, NULL, NULL, NULL, 0.0000, NULL, NULL, NULL, 1.0000, 1.0000, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, -1.7000, NULL, NULL, NULL, 25.3000, 10.0000, NULL, NULL, NULL, 0.0000, NULL, 0.0000, 0.0000, 17.0000, NULL, NULL, NULL, 0.0000, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 2.0000, NULL, NULL, NULL, 1, 1, 2, 0, NULL, 1, 1, NULL, NULL, NULL, 1, 1, NULL, NULL, NULL, NULL, NULL, 17.0000, 25.3000, NULL, NULL, 17.0000, 25.3000, 2.0000, NULL, {$orderNumber}, '1', 'USD', '{$email}', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'USD', NULL, NULL, 'USD', NULL, NULL, NULL, NULL, NULL, '127.0.0.1', 'flatrate_flatrate', 'USD', '{$productStoreName($entityId)}', NULL, NULL, '{$time}', '{$time}', 2, NULL, 0.0000, 0.0000, 0.0000, NULL, NULL, NULL, NULL, NULL, 10.0000, 10.0000, NULL, NULL);"; - - $salesOrderAddressId[0] = $quoteAddressId[0]; - $salesOrderAddressId[1] = $quoteAddressId[1]; - $queries .= "INSERT INTO `{$salesOrderAddressTableName}` (`entity_id`, `parent_id`, `customer_address_id`, `quote_address_id`, `region_id`, `customer_id`, `fax`, `region`, `postcode`, `lastname`, `street`, `city`, `email`, `telephone`, `country_id`, `firstname`, `address_type`, `prefix`, `middlename`, `suffix`, `company`, `vat_id`, `vat_is_valid`, `vat_request_id`, `vat_request_date`, `vat_request_success`) VALUES ({$salesOrderAddressId[0]}, {$salesOrderId}, NULL, NULL, 1, NULL, NULL, '{$state}', '{$zip}', '{$lastName}', '{$address}', '{$city}', '{$email}', '{$phone}', '{$country}', '{$firstName}', 'shipping', NULL, NULL, NULL, '{$company}', NULL, NULL, NULL, NULL, NULL);"; - $queries .= "INSERT INTO `{$salesOrderAddressTableName}` (`entity_id`, `parent_id`, `customer_address_id`, `quote_address_id`, `region_id`, `customer_id`, `fax`, `region`, `postcode`, `lastname`, `street`, `city`, `email`, `telephone`, `country_id`, `firstname`, `address_type`, `prefix`, `middlename`, `suffix`, `company`, `vat_id`, `vat_is_valid`, `vat_request_id`, `vat_request_date`, `vat_request_success`) VALUES ({$salesOrderAddressId[1]}, {$salesOrderId}, NULL, NULL, 1, NULL, NULL, '{$state}', '{$zip}', '{$lastName}', '{$address}', '{$city}', '{$email}', '{$phone}', '{$country}', '{$firstName}', 'billing', NULL, NULL, NULL, '{$company}', NULL, NULL, NULL, NULL, NULL);"; - - $salesOrderGridId = $salesOrderId; - $queries .= "INSERT INTO `{$salesOrderGridTableName}` (`entity_id`, `status`, `store_id`, `store_name`, `customer_id`, `base_grand_total`, `base_total_paid`, `grand_total`, `total_paid`, `increment_id`, `base_currency_code`, `order_currency_code`, `shipping_name`, `billing_name`, `created_at`, `updated_at`) VALUES ({$salesOrderGridId}, 'pending', {$productStoreId($entityId)}, '{$productStoreName($entityId)}', NULL, 25.3000, NULL, 25.3000, NULL, {$orderNumber}, 'USD', 'USD', '', '', '{$time}', NULL);"; - - $salesOrderItemId[0] = $quoteItemId[0]; - $salesOrderItemId[1] = $quoteItemId[1]; - $salesOrderItemId[2] = $quoteItemId[2]; - $salesOrderItemId[3] = $quoteItemId[3]; - $queries .= "INSERT INTO `{$salesOrderItemTableName}` (`item_id`, `order_id`, `parent_item_id`, `quote_item_id`, `store_id`, `created_at`, `updated_at`, `product_id`, `product_type`, `product_options`, `weight`, `is_virtual`, `sku`, `name`, `description`, `applied_rule_ids`, `additional_data`, `is_qty_decimal`, `no_discount`, `qty_backordered`, `qty_canceled`, `qty_invoiced`, `qty_ordered`, `qty_refunded`, `qty_shipped`, `base_cost`, `price`, `base_price`, `original_price`, `base_original_price`, `tax_percent`, `tax_amount`, `base_tax_amount`, `tax_invoiced`, `base_tax_invoiced`, `discount_percent`, `discount_amount`, `base_discount_amount`, `discount_invoiced`, `base_discount_invoiced`, `amount_refunded`, `base_amount_refunded`, `row_total`, `base_row_total`, `row_invoiced`, `base_row_invoiced`, `row_weight`, `base_tax_before_discount`, `tax_before_discount`, `ext_order_item_id`, `locked_do_invoice`, `locked_do_ship`, `price_incl_tax`, `base_price_incl_tax`, `row_total_incl_tax`, `base_row_total_incl_tax`, `discount_tax_compensation_amount`, `base_discount_tax_compensation_amount`, `discount_tax_compensation_invoiced`, `base_discount_tax_compensation_invoiced`, `discount_tax_compensation_refunded`, `base_discount_tax_compensation_refunded`, `tax_canceled`, `discount_tax_compensation_canceled`, `tax_refunded`, `base_tax_refunded`, `discount_refunded`, `base_discount_refunded`, `free_shipping`, `gift_message_id`, `gift_message_available`, `weee_tax_applied`, `weee_tax_applied_amount`, `weee_tax_applied_row_amount`, `weee_tax_disposition`, `weee_tax_row_disposition`, `base_weee_tax_applied_amount`, `base_weee_tax_applied_row_amnt`, `base_weee_tax_disposition`, `base_weee_tax_row_disposition`) VALUES ({$salesOrderItemId[0]}, {$salesOrderId}, NULL, {$quoteItemId[0]}, {$productStoreId($entityId)}, '{$time}', '0000-00-00 00:00:00', {$simpleProductId[0]($entityId)}, 'simple', 'a:1:{s:15:\"info_buyRequest\";a:3:{s:4:\"uenc\";s:44:\"aHR0cDovL21hZ2UyLmNvbS9jYXRlZ29yeS0xLmh0bWw,\";s:7:\"product\";s:{$simpleProductIdLen[0]}:\"{$simpleProductId[0]($entityId)}\";s:3:\"qty\";i:1;}}', 1.0000, 0, '{$simpleProductSku[0]($entityId)}', '{$simpleProductName[0]($entityId)}', NULL, '1', NULL, 0, 0, NULL, 0.0000, 0.0000, 1.0000, 0.0000, 0.0000, NULL, 8.5000, 8.5000, 10.0000, 10.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 10.0000, 0.8500, 0.8500, 0.0000, 0.0000, 0.0000, 0.0000, 8.5000, 8.5000, 0.0000, 0.0000, 1.0000, NULL, NULL, NULL, NULL, NULL, 8.5000, 8.5000, 8.5000, 8.5000, 0.0000, 0.0000, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);"; - $queries .= "INSERT INTO `{$salesOrderItemTableName}` (`item_id`, `order_id`, `parent_item_id`, `quote_item_id`, `store_id`, `created_at`, `updated_at`, `product_id`, `product_type`, `product_options`, `weight`, `is_virtual`, `sku`, `name`, `description`, `applied_rule_ids`, `additional_data`, `is_qty_decimal`, `no_discount`, `qty_backordered`, `qty_canceled`, `qty_invoiced`, `qty_ordered`, `qty_refunded`, `qty_shipped`, `base_cost`, `price`, `base_price`, `original_price`, `base_original_price`, `tax_percent`, `tax_amount`, `base_tax_amount`, `tax_invoiced`, `base_tax_invoiced`, `discount_percent`, `discount_amount`, `base_discount_amount`, `discount_invoiced`, `base_discount_invoiced`, `amount_refunded`, `base_amount_refunded`, `row_total`, `base_row_total`, `row_invoiced`, `base_row_invoiced`, `row_weight`, `base_tax_before_discount`, `tax_before_discount`, `ext_order_item_id`, `locked_do_invoice`, `locked_do_ship`, `price_incl_tax`, `base_price_incl_tax`, `row_total_incl_tax`, `base_row_total_incl_tax`, `discount_tax_compensation_amount`, `base_discount_tax_compensation_amount`, `discount_tax_compensation_invoiced`, `base_discount_tax_compensation_invoiced`, `discount_tax_compensation_refunded`, `base_discount_tax_compensation_refunded`, `tax_canceled`, `discount_tax_compensation_canceled`, `tax_refunded`, `base_tax_refunded`, `discount_refunded`, `base_discount_refunded`, `free_shipping`, `gift_message_id`, `gift_message_available`, `weee_tax_applied`, `weee_tax_applied_amount`, `weee_tax_applied_row_amount`, `weee_tax_disposition`, `weee_tax_row_disposition`, `base_weee_tax_applied_amount`, `base_weee_tax_applied_row_amnt`, `base_weee_tax_disposition`, `base_weee_tax_row_disposition`) VALUES ({$salesOrderItemId[1]}, {$salesOrderId}, NULL, {$quoteItemId[1]}, {$productStoreId($entityId)}, '{$time}', '0000-00-00 00:00:00', {$simpleProductId[1]($entityId)}, 'simple', 'a:1:{s:15:\"info_buyRequest\";a:3:{s:4:\"uenc\";s:44:\"aHR0cDovL21hZ2UyLmNvbS9jYXRlZ29yeS0xLmh0bWw,\";s:7:\"product\";s:{$simpleProductIdLen[1]}:\"{$simpleProductId[1]($entityId)}\";s:3:\"qty\";i:1;}}', 1.0000, 0, '{$simpleProductSku[1]($entityId)}', '{$simpleProductName[1]($entityId)}', NULL, '1', NULL, 0, 0, NULL, 0.0000, 0.0000, 1.0000, 0.0000, 0.0000, NULL, 8.5000, 8.5000, 10.0000, 10.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 10.0000, 0.8500, 0.8500, 0.0000, 0.0000, 0.0000, 0.0000, 8.5000, 8.5000, 0.0000, 0.0000, 1.0000, NULL, NULL, NULL, NULL, NULL, 8.5000, 8.5000, 8.5000, 8.5000, 0.0000, 0.0000, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);"; - - $salesOrderPaymentId = $salesOrderId; - $queries .= "INSERT INTO `{$salesOrderPaymentTableName}` (`entity_id`, `parent_id`, `base_shipping_captured`, `shipping_captured`, `amount_refunded`, `base_amount_paid`, `amount_canceled`, `base_amount_authorized`, `base_amount_paid_online`, `base_amount_refunded_online`, `base_shipping_amount`, `shipping_amount`, `amount_paid`, `amount_authorized`, `base_amount_ordered`, `base_shipping_refunded`, `shipping_refunded`, `base_amount_refunded`, `amount_ordered`, `base_amount_canceled`, `quote_payment_id`, `additional_data`, `cc_exp_month`, `cc_ss_start_year`, `echeck_bank_name`, `method`, `cc_debug_request_body`, `cc_secure_verify`, `protection_eligibility`, `cc_approval`, `cc_last_4`, `cc_status_description`, `echeck_type`, `cc_debug_response_serialized`, `cc_ss_start_month`, `echeck_account_type`, `last_trans_id`, `cc_cid_status`, `cc_owner`, `cc_type`, `po_number`, `cc_exp_year`, `cc_status`, `echeck_routing_number`, `account_status`, `anet_trans_method`, `cc_debug_response_body`, `cc_ss_issue`, `echeck_account_name`, `cc_avs_status`, `cc_number_enc`, `cc_trans_id`, `address_status`, `additional_information`) VALUES ({$salesOrderPaymentId}, {$salesOrderId}, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10.0000, 10.0000, NULL, NULL, 25.3000, NULL, NULL, NULL, 25.3000, NULL, NULL, NULL, NULL, '0', NULL, 'checkmo', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '0', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'a:1:{s:53:\"a:1:{s:12:\"method_title\";s:19:\"Check / Money order\";}\";N;}');"; - - $salesOrderStatusHistoryId = $salesOrderId; - $queries .= "INSERT INTO `{$salesOrderStatusHistoryTableName}` (`entity_id`, `parent_id`, `is_customer_notified`, `is_visible_on_front`, `comment`, `status`, `created_at`, `entity_name`) VALUES ({$salesOrderStatusHistoryId}, {$salesOrderId}, 1, 0, NULL, 'pending', '{$time}', 'order');"; - - $writeAdapter->multiQuery($queries); - - $entityId++; - } - } - - /** - * {@inheritdoc} - */ - public function getActionTitle() - { - return 'Generating orders'; - } - - /** - * {@inheritdoc} - */ - public function introduceParamLabels() - { - return [ - 'orders' => 'Orders' - ]; - } - - /** - * Get real table name for db table, validated by db adapter - * - * @param string $tableName - * @param string $resourceName - * @return string - */ - public function getTableName($tableName, $resourceName) - { - $resource = $this->application->getObjectManager()->get($resourceName); - return $this->getConnection('write')->getTableName($resource->getTable($tableName)); - } - - /** - * Retrieve connection to resource specified by $resourceName - * - * @param string $resourceName - * @return \Magento\Framework\DB\Adapter\AdapterInterface|false - */ - public function getConnection($resourceName) - { - return $this->application->getObjectManager()->get( - 'Magento\Framework\App\Resource' - )->getConnection($resourceName); - } -} - -return new OrdersFixture($this); diff --git a/lib/internal/Magento/Framework/Api/DataObjectHelper.php b/lib/internal/Magento/Framework/Api/DataObjectHelper.php index 2fb75d5f841613fb0523cc88e7062112d1fc6729..70a7b79c71b8b9b011aae799e4e3b76f6c7027f2 100644 --- a/lib/internal/Magento/Framework/Api/DataObjectHelper.php +++ b/lib/internal/Magento/Framework/Api/DataObjectHelper.php @@ -176,7 +176,7 @@ class DataObjectHelper $object = $this->objectFactory->create($returnType, []); $this->populateWithArray($object, $value, $returnType); } else if (is_subclass_of($returnType, '\Magento\Framework\Api\ExtensionAttributesInterface')) { - $object = $this->extensionFactory->create(get_class($dataObject), $value); + $object = $this->extensionFactory->create(get_class($dataObject), ['data' => $value]); } else { $object = $this->objectFactory->create($returnType, $value); } diff --git a/lib/internal/Magento/Framework/AppInterface.php b/lib/internal/Magento/Framework/AppInterface.php index fb61d6803b3681c56a7af5ad3a29cc8468484e27..76de8c573539c2d3a51ba2c7275525fc78100f03 100644 --- a/lib/internal/Magento/Framework/AppInterface.php +++ b/lib/internal/Magento/Framework/AppInterface.php @@ -17,7 +17,7 @@ interface AppInterface /** * Magento version */ - const VERSION = '0.74.0-beta14'; + const VERSION = '0.74.0-beta15'; /** * Launch application diff --git a/lib/internal/Magento/Framework/Filter/Template.php b/lib/internal/Magento/Framework/Filter/Template.php index 50db67715c20e9c3dd1adaea1bbb8e98a181cb4e..5c6fede1d57b6cf4f5a0faeaebec9360322bbf1d 100644 --- a/lib/internal/Magento/Framework/Filter/Template.php +++ b/lib/internal/Magento/Framework/Filter/Template.php @@ -32,13 +32,6 @@ class Template implements \Zend_Filter_Interface */ protected $_templateVars = []; - /** - * Include processor - * - * @var callable|null - */ - protected $_includeProcessor = null; - /** * @var \Magento\Framework\Stdlib\String */ @@ -68,28 +61,6 @@ class Template implements \Zend_Filter_Interface return $this; } - /** - * Sets the processor of includes. - * - * @param callable $callback it must return string - * @return $this - */ - public function setIncludeProcessor(array $callback) - { - $this->_includeProcessor = $callback; - return $this; - } - - /** - * Sets the processor of includes. - * - * @return callable|null - */ - public function getIncludeProcessor() - { - return is_callable($this->_includeProcessor) ? $this->_includeProcessor : null; - } - /** * Filter the string as template. * @@ -153,27 +124,6 @@ class Template implements \Zend_Filter_Interface return $replacedValue; } - /** - * @param string[] $construction - * @return mixed - */ - public function includeDirective($construction) - { - // Processing of {include template=... [...]} statement - $includeParameters = $this->_getIncludeParameters($construction[2]); - if (!isset($includeParameters['template']) or !$this->getIncludeProcessor()) { - // Not specified template or not set include processor - $replacedValue = '{Error in include processing}'; - } else { - // Including of template - $templateCode = $includeParameters['template']; - unset($includeParameters['template']); - $includeParameters = array_merge_recursive($includeParameters, $this->_templateVars); - $replacedValue = call_user_func($this->getIncludeProcessor(), $templateCode, $includeParameters); - } - return $replacedValue; - } - /** * @param string[] $construction * @return string diff --git a/lib/internal/Magento/Framework/Test/Unit/UrlTest.php b/lib/internal/Magento/Framework/Test/Unit/UrlTest.php index baa556bb19f789d773d6c48fdf9ac454ac19f951..c5bcc5175ab5dbe63db53e0ea4fcad888e96c8fa 100644 --- a/lib/internal/Magento/Framework/Test/Unit/UrlTest.php +++ b/lib/internal/Magento/Framework/Test/Unit/UrlTest.php @@ -121,7 +121,7 @@ class UrlTest extends \PHPUnit_Framework_TestCase public function testGetCurrentUrl($httpHost, $url) { $requestMock = $this->getRequestMock(); - $requestMock->expects($this->once())->method('getServer')->with('REQUEST_URI')->willReturn('/fancy_uri'); + $requestMock->expects($this->once())->method('getRequestUri')->willReturn('/fancy_uri'); $requestMock->expects($this->once())->method('getScheme')->will($this->returnValue('http')); $requestMock->expects($this->once())->method('getHttpHost')->will($this->returnValue($httpHost)); $model = $this->getUrlModel(['request' => $requestMock]); diff --git a/lib/internal/Magento/Framework/Url.php b/lib/internal/Magento/Framework/Url.php index 7d4c4c33399ac0ae5ee53379727681a291cc7bfd..a300ebe01f4858c06dd598d769d1352ed79394d8 100644 --- a/lib/internal/Magento/Framework/Url.php +++ b/lib/internal/Magento/Framework/Url.php @@ -1045,7 +1045,7 @@ class Url extends \Magento\Framework\Object implements \Magento\Framework\UrlInt $port = ':' . $httpHostWithPort[1]; } } - return $this->_request->getScheme() . '://' . $httpHost . $port . $this->_request->getServer('REQUEST_URI'); + return $this->_request->getScheme() . '://' . $httpHost . $port . $this->_request->getRequestUri(); } /** diff --git a/lib/internal/Magento/Framework/composer.json b/lib/internal/Magento/Framework/composer.json index 29ca6222b30be7c45122ac19c9f1c48c04c408fc..65ab1eb321eb7010afe26da3948acb78c93bdb01 100644 --- a/lib/internal/Magento/Framework/composer.json +++ b/lib/internal/Magento/Framework/composer.json @@ -2,7 +2,7 @@ "name": "magento/framework", "description": "N/A", "type": "magento2-library", - "version": "0.74.0-beta14", + "version": "0.74.0-beta15", "license": [ "OSL-3.0", "AFL-3.0" diff --git a/lib/web/mage/apply/main.js b/lib/web/mage/apply/main.js index 6a5e99560244cf1f24b5b23ed2a9b88c9ad7a3fe..37a12873c3335e7cb2a3afee00770ec5ce5effdd 100644 --- a/lib/web/mage/apply/main.js +++ b/lib/web/mage/apply/main.js @@ -13,7 +13,7 @@ define([ nodeSelector = '[' + dataAttr + ']'; /** - * Initializes components assigned to a specfied element via data-* attribute. + * Initializes components assigned to a specified element via data-* attribute. * * @param {HTMLElement} el - Element to initialize components with. * @param {Object|String} config - Initial components' config. @@ -21,6 +21,7 @@ define([ */ function init(el, config, component) { require([component], function (fn) { + if (typeof fn === 'object') { fn = fn[component]; } @@ -65,11 +66,29 @@ define([ _.toArray(nodes) .map(getData) .concat(virtuals) - .forEach(function (item) { - _.each(item.data, init.bind(null, item.el)); + .forEach(function (itemContainer) { + var configStack, + element = itemContainer.el; + + _.each(itemContainer.data, function (obj, key) { + if (obj.mixins) { + require(obj.mixins, function () { + for (var i = 0, len = arguments.length; i < len; i++) { + $.extend(true, itemContainer.data[key], arguments[i](itemContainer.data[key], element)); + } + + delete obj.mixins; + _.each(itemContainer.data, init.bind(null, element)); + }) + } else { + _.each(itemContainer.data, init.bind(null, element)); + } + + } + ); + }); }, - applyFor: init }; }); diff --git a/lib/web/mage/apply/scripts.js b/lib/web/mage/apply/scripts.js index d9448fe1468e8245ded0b339fe0f9ac43b8c89f8..593d0bba6fd05b1ca86ff288934c93e674345b71 100644 --- a/lib/web/mage/apply/scripts.js +++ b/lib/web/mage/apply/scripts.js @@ -28,23 +28,30 @@ define([ * Merges provided data with a current data * of a elements' "data-mage-init" attribute. * - * @param {Object} components - Object with compoenets and theirs configuration. + * @param {Object} components - Object with components and theirs configuration. * @param {HTMLElement} elem - Element whose data should be modified. */ function setData(components, elem) { var data = elem.getAttribute(dataAttr); data = !!data ? JSON.parse(data) : {}; + _.each(components, function(obj, key) { + if (_.has(obj, 'mixins')) { + data[key].mixins = data[key].mixins || []; + data[key].mixins = data[key].mixins.concat(obj.mixins); + delete obj.mixins; + } + }); + data = $.extend(true, data, components); data = JSON.stringify(data); - elem.setAttribute(dataAttr, data); } /** * Search for the elements by privded selector and extends theirs data. * - * @param {Object} components - Object with compoenets and theirs configuration. + * @param {Object} components - Object with components and theirs configuration. * @param {String} selector - Selector for the elements. */ function processElems(components, selector) {