From a00df27e896747ebe2444b27bb8fe8c28ade2dab Mon Sep 17 00:00:00 2001 From: vitaliyboyko Date: Tue, 24 Jul 2018 18:31:23 +0000 Subject: [PATCH 01/31] graphql-ce-128: added extended store config dataprovider --- .../Store/ExtendedStoreConfigDataProvider.php | 53 +++++++++++++++++++ .../Model/Resolver/StoreConfigResolver.php | 14 ++++- .../Magento/StoreGraphQl/etc/graphql/di.xml | 44 +++++++++++++++ .../Magento/StoreGraphQl/etc/schema.graphqls | 21 ++++++++ 4 files changed, 131 insertions(+), 1 deletion(-) create mode 100644 app/code/Magento/StoreGraphQl/Model/Resolver/Store/ExtendedStoreConfigDataProvider.php create mode 100644 app/code/Magento/StoreGraphQl/etc/graphql/di.xml diff --git a/app/code/Magento/StoreGraphQl/Model/Resolver/Store/ExtendedStoreConfigDataProvider.php b/app/code/Magento/StoreGraphQl/Model/Resolver/Store/ExtendedStoreConfigDataProvider.php new file mode 100644 index 000000000000..b9ab3d0daac4 --- /dev/null +++ b/app/code/Magento/StoreGraphQl/Model/Resolver/Store/ExtendedStoreConfigDataProvider.php @@ -0,0 +1,53 @@ +scopeConfig = $scopeConfig; + $this->extendedConfigs = $extendedConfigs; + } + + /** + * Get data from ScopeConfig by path's defined in DI config + * @return array + */ + public function getExtendedConfigs() + { + $extendedConfigsData = []; + foreach ($this->extendedConfigs as $key => $path) { + $extendedConfigsData[$key] = $this->scopeConfig->getValue($path, ScopeInterface::SCOPE_STORE); + } + + return $extendedConfigsData; + } +} diff --git a/app/code/Magento/StoreGraphQl/Model/Resolver/StoreConfigResolver.php b/app/code/Magento/StoreGraphQl/Model/Resolver/StoreConfigResolver.php index 8e5bf0120b8b..f6c9e92d17f1 100644 --- a/app/code/Magento/StoreGraphQl/Model/Resolver/StoreConfigResolver.php +++ b/app/code/Magento/StoreGraphQl/Model/Resolver/StoreConfigResolver.php @@ -12,6 +12,7 @@ use Magento\Framework\GraphQl\Query\Resolver\ValueFactory; use Magento\Framework\GraphQl\Query\ResolverInterface; use Magento\Framework\GraphQl\Schema\Type\ResolveInfo; +use Magento\StoreGraphQl\Model\Resolver\Store\ExtendedStoreConfigDataProvider; use Magento\StoreGraphQl\Model\Resolver\Store\StoreConfigDataProvider; /** @@ -24,6 +25,11 @@ class StoreConfigResolver implements ResolverInterface */ private $storeConfigDataProvider; + /** + * @var ExtendedStoreConfigDataProvider + */ + private $extendedStoreConfigsDataProvider; + /** * @var ValueFactory */ @@ -31,14 +37,17 @@ class StoreConfigResolver implements ResolverInterface /** * @param StoreConfigDataProvider $storeConfigsDataProvider + * @param ExtendedStoreConfigDataProvider $extendedStoreConfigsDataProvider * @param ValueFactory $valueFactory */ public function __construct( StoreConfigDataProvider $storeConfigsDataProvider, + ExtendedStoreConfigDataProvider $extendedStoreConfigsDataProvider, ValueFactory $valueFactory ) { $this->valueFactory = $valueFactory; $this->storeConfigDataProvider = $storeConfigsDataProvider; + $this->extendedStoreConfigsDataProvider = $extendedStoreConfigsDataProvider; } /** @@ -52,7 +61,10 @@ public function resolve( array $args = null ) : Value { - $storeConfigData = $this->storeConfigDataProvider->getStoreConfig(); + $storeConfigData = array_merge( + $this->storeConfigDataProvider->getStoreConfig(), + $this->extendedStoreConfigsDataProvider->getExtendedConfigs() + ); $result = function () use ($storeConfigData) { return !empty($storeConfigData) ? $storeConfigData : []; diff --git a/app/code/Magento/StoreGraphQl/etc/graphql/di.xml b/app/code/Magento/StoreGraphQl/etc/graphql/di.xml new file mode 100644 index 000000000000..8c9b71c638f0 --- /dev/null +++ b/app/code/Magento/StoreGraphQl/etc/graphql/di.xml @@ -0,0 +1,44 @@ + + + + + + + + web/default/front + web/default/cms_home_page + web/default/no_route + web/default/cms_no_route + web/default/cms_no_cookies + web/default/show_cms_breadcrumbs + + + design/head/head_shortcut_icon + design/head/default_title + design/head/title_prefix + design/head/title_suffix + design/head/default_description + design/head/default_keywords + design/head/includes + design/head/demonotice + + + design/header/header_logo_src + design/header/logo_width + design/header/logo_height + design/header/welcome + design/header/logo_alt + + + design/footer/copyright + design/footer/absolute_footer + + + + + diff --git a/app/code/Magento/StoreGraphQl/etc/schema.graphqls b/app/code/Magento/StoreGraphQl/etc/schema.graphqls index af79d0e3e28b..607f74f2bdde 100644 --- a/app/code/Magento/StoreGraphQl/etc/schema.graphqls +++ b/app/code/Magento/StoreGraphQl/etc/schema.graphqls @@ -30,4 +30,25 @@ type StoreConfig @doc(description: "The type contains information about a store secure_base_link_url : String @doc(description: "Secure base link URL for the store") secure_base_static_url : String @doc(description: "Secure base static URL for the store") secure_base_media_url : String @doc(description: "Secure base media URL for the store") + front : String @doc(description: "Default Web URL") + cms_home_page : String @doc(description: "CMS Home Page") + no_route : String @doc(description: "Default No-route URL") + cms_no_route : String @doc(description: "CMS No Route Page") + cms_no_cookies : String @doc(description: "CMS No Cookies Page") + show_cms_breadcrumbs : String @doc(description: "Show Breadcrumbs for CMS Pages") + head_shortcut_icon : String @doc(description: "Favicon Icon") + default_title : String @doc(description: "Default Page Title") + title_prefix : String @doc(description: "Page Title Prefix") + title_suffix : String @doc(description: "Page Title Suffix") + default_description : String @doc(description: "Default Meta Description") + default_keywords : String @doc(description: "Default Meta Keywords") + head_includes : String @doc(description: "Scripts and Style Sheets") + demonotice : String @doc(description: "Display Demo Store Notice") + header_logo_src : String @doc(description: "Logo Image") + logo_width : String @doc(description: "Logo Attribute Width") + logo_height : String @doc(description: "Logo Attribute Height") + welcome : String @doc(description: "Welcome Text") + logo_alt : String @doc(description: "Logo Image Alt") + absolute_footer : String @doc(description: "Footer Miscellaneous HTML") + copyright : String @doc(description: "Copyright") } From 38721875bb957e30696e99c862469459237df4d5 Mon Sep 17 00:00:00 2001 From: vitaliyboyko Date: Tue, 24 Jul 2018 18:38:24 +0000 Subject: [PATCH 02/31] graphql-ce-128: fixed return types --- app/code/Magento/StoreGraphQl/etc/schema.graphqls | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/code/Magento/StoreGraphQl/etc/schema.graphqls b/app/code/Magento/StoreGraphQl/etc/schema.graphqls index 607f74f2bdde..673e0383f76e 100644 --- a/app/code/Magento/StoreGraphQl/etc/schema.graphqls +++ b/app/code/Magento/StoreGraphQl/etc/schema.graphqls @@ -35,7 +35,7 @@ type StoreConfig @doc(description: "The type contains information about a store no_route : String @doc(description: "Default No-route URL") cms_no_route : String @doc(description: "CMS No Route Page") cms_no_cookies : String @doc(description: "CMS No Cookies Page") - show_cms_breadcrumbs : String @doc(description: "Show Breadcrumbs for CMS Pages") + show_cms_breadcrumbs : Int @doc(description: "Show Breadcrumbs for CMS Pages") head_shortcut_icon : String @doc(description: "Favicon Icon") default_title : String @doc(description: "Default Page Title") title_prefix : String @doc(description: "Page Title Prefix") @@ -43,10 +43,10 @@ type StoreConfig @doc(description: "The type contains information about a store default_description : String @doc(description: "Default Meta Description") default_keywords : String @doc(description: "Default Meta Keywords") head_includes : String @doc(description: "Scripts and Style Sheets") - demonotice : String @doc(description: "Display Demo Store Notice") + demonotice : Int @doc(description: "Display Demo Store Notice") header_logo_src : String @doc(description: "Logo Image") - logo_width : String @doc(description: "Logo Attribute Width") - logo_height : String @doc(description: "Logo Attribute Height") + logo_width : Int @doc(description: "Logo Attribute Width") + logo_height : Int @doc(description: "Logo Attribute Height") welcome : String @doc(description: "Welcome Text") logo_alt : String @doc(description: "Logo Image Alt") absolute_footer : String @doc(description: "Footer Miscellaneous HTML") From efe6091918ab2e83f0bada30166efee6bc96a3ea Mon Sep 17 00:00:00 2001 From: vitaliyboyko Date: Tue, 24 Jul 2018 18:44:05 +0000 Subject: [PATCH 03/31] graphql-ce-128: added test for extended configs --- .../GraphQl/Store/StoreConfigResolverTest.php | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/dev/tests/api-functional/testsuite/Magento/GraphQl/Store/StoreConfigResolverTest.php b/dev/tests/api-functional/testsuite/Magento/GraphQl/Store/StoreConfigResolverTest.php index 4657a1e763ae..d6a175783f4a 100644 --- a/dev/tests/api-functional/testsuite/Magento/GraphQl/Store/StoreConfigResolverTest.php +++ b/dev/tests/api-functional/testsuite/Magento/GraphQl/Store/StoreConfigResolverTest.php @@ -90,4 +90,31 @@ public function testGetStoreConfig() ); $this->assertEquals($storeConfig->getSecureBaseMediaUrl(), $response['storeConfig']['secure_base_media_url']); } + + /** + * @magentoConfigFixture default_store web/default/front 'test_page' + * @magentoConfigFixture default_store design/head/default_title 'Test Title' + * @magentoConfigFixture default_store design/footer/copyright 'Test Copyright' + */ + public function testExtendedStoreConfig() + { + $front = 'test_page'; + $default_title = 'Test Title'; + $copyright = 'Test Copyright'; + + $query = <<graphQlQuery($query); + $this->assertArrayHasKey('storeConfig', $response); + $this->assertEquals($front, $response['storeConfig']['front']); + $this->assertEquals($default_title, $response['storeConfig']['default_title']); + $this->assertEquals($copyright, $response['storeConfig']['copyright']); + } } From f82bd47da3226bf1caa032c38875b07a1b8e1131 Mon Sep 17 00:00:00 2001 From: vitaliyboyko Date: Thu, 26 Jul 2018 10:20:21 +0000 Subject: [PATCH 04/31] graphql-ce-128: fixed the way to define current store --- .../Store/StoreConfigDataProvider.php | 24 ++++++------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/app/code/Magento/StoreGraphQl/Model/Resolver/Store/StoreConfigDataProvider.php b/app/code/Magento/StoreGraphQl/Model/Resolver/Store/StoreConfigDataProvider.php index 0252d7898bee..a5f37f65d0c8 100644 --- a/app/code/Magento/StoreGraphQl/Model/Resolver/Store/StoreConfigDataProvider.php +++ b/app/code/Magento/StoreGraphQl/Model/Resolver/Store/StoreConfigDataProvider.php @@ -9,8 +9,7 @@ use Magento\Store\Api\Data\StoreConfigInterface; use Magento\Store\Api\StoreConfigManagerInterface; -use Magento\Store\Api\StoreRepositoryInterface; -use Magento\Store\Api\StoreResolverInterface; +use Magento\Store\Model\StoreManagerInterface; /** * StoreConfig field data provider, used for GraphQL request processing. @@ -23,28 +22,20 @@ class StoreConfigDataProvider private $storeConfigManager; /** - * @var StoreResolverInterface + * @var StoreManagerInterface */ - private $storeResolver; - - /** - * @var StoreRepositoryInterface - */ - private $storeRepository; + private $storeManager; /** * @param StoreConfigManagerInterface $storeConfigManager - * @param StoreResolverInterface $storeResolver - * @param StoreRepositoryInterface $storeRepository + * @param StoreManagerInterface $storeManager */ public function __construct( StoreConfigManagerInterface $storeConfigManager, - StoreResolverInterface $storeResolver, - StoreRepositoryInterface $storeRepository + StoreManagerInterface $storeManager ) { $this->storeConfigManager = $storeConfigManager; - $this->storeResolver = $storeResolver; - $this->storeRepository = $storeRepository; + $this->storeManager = $storeManager; } /** @@ -54,8 +45,7 @@ public function __construct( */ public function getStoreConfig() : array { - $storeId = $this->storeResolver->getCurrentStoreId(); - $store = $this->storeRepository->getById($storeId); + $store = $this->storeManager->getStore(); $storeConfig = current($this->storeConfigManager->getStoreConfigs([$store->getCode()])); return $this->hidrateStoreConfig($storeConfig); From 9d7f2177c402370d84f2a6f2c5c85ca4979bd283 Mon Sep 17 00:00:00 2001 From: vitaliyboyko Date: Mon, 30 Jul 2018 18:55:04 +0000 Subject: [PATCH 05/31] GraphQL-128: refactored extended configs, added CmsGraphQl and ThemeGraphQL modules --- app/code/Magento/CmsGraphQl/README.md | 4 +++ app/code/Magento/CmsGraphQl/composer.json | 25 +++++++++++++++++++ .../Magento/CmsGraphQl/etc/graphql/di.xml | 21 ++++++++++++++++ app/code/Magento/CmsGraphQl/etc/module.xml | 14 +++++++++++ .../Magento/CmsGraphQl/etc/schema.graphqls | 10 ++++++++ app/code/Magento/CmsGraphQl/registration.php | 10 ++++++++ .../Store/StoreConfigDataProvider.php | 4 +-- .../Magento/StoreGraphQl/etc/schema.graphqls | 21 ---------------- app/code/Magento/ThemeGraphQl/README.md | 4 +++ app/code/Magento/ThemeGraphQl/composer.json | 25 +++++++++++++++++++ .../etc/graphql/di.xml | 10 +------- app/code/Magento/ThemeGraphQl/etc/module.xml | 14 +++++++++++ .../Magento/ThemeGraphQl/etc/schema.graphqls | 19 ++++++++++++++ .../Magento/ThemeGraphQl/registration.php | 10 ++++++++ 14 files changed, 159 insertions(+), 32 deletions(-) create mode 100644 app/code/Magento/CmsGraphQl/README.md create mode 100644 app/code/Magento/CmsGraphQl/composer.json create mode 100644 app/code/Magento/CmsGraphQl/etc/graphql/di.xml create mode 100644 app/code/Magento/CmsGraphQl/etc/module.xml create mode 100644 app/code/Magento/CmsGraphQl/etc/schema.graphqls create mode 100644 app/code/Magento/CmsGraphQl/registration.php create mode 100644 app/code/Magento/ThemeGraphQl/README.md create mode 100644 app/code/Magento/ThemeGraphQl/composer.json rename app/code/Magento/{StoreGraphQl => ThemeGraphQl}/etc/graphql/di.xml (74%) create mode 100644 app/code/Magento/ThemeGraphQl/etc/module.xml create mode 100644 app/code/Magento/ThemeGraphQl/etc/schema.graphqls create mode 100644 app/code/Magento/ThemeGraphQl/registration.php diff --git a/app/code/Magento/CmsGraphQl/README.md b/app/code/Magento/CmsGraphQl/README.md new file mode 100644 index 000000000000..759a5b882c7b --- /dev/null +++ b/app/code/Magento/CmsGraphQl/README.md @@ -0,0 +1,4 @@ +# CmsGraphQl + +**CmsGraphQl** provides type information for the GraphQl module +to generate CMS fields information endpoints. diff --git a/app/code/Magento/CmsGraphQl/composer.json b/app/code/Magento/CmsGraphQl/composer.json new file mode 100644 index 000000000000..503e5a67207a --- /dev/null +++ b/app/code/Magento/CmsGraphQl/composer.json @@ -0,0 +1,25 @@ +{ + "name": "magento/module-cms-graph-ql", + "description": "N/A", + "type": "magento2-module", + "require": { + "php": "~7.1.3||~7.2.0", + "magento/framework": "*" + }, + "suggest": { + "magento/module-graph-ql": "*", + "magento/module-store-graph-ql": "*" + }, + "license": [ + "OSL-3.0", + "AFL-3.0" + ], + "autoload": { + "files": [ + "registration.php" + ], + "psr-4": { + "Magento\\CmsGraphQl\\": "" + } + } +} diff --git a/app/code/Magento/CmsGraphQl/etc/graphql/di.xml b/app/code/Magento/CmsGraphQl/etc/graphql/di.xml new file mode 100644 index 000000000000..43e280015e1c --- /dev/null +++ b/app/code/Magento/CmsGraphQl/etc/graphql/di.xml @@ -0,0 +1,21 @@ + + + + + + + web/default/front + web/default/cms_home_page + web/default/no_route + web/default/cms_no_route + web/default/cms_no_cookies + web/default/show_cms_breadcrumbs + + + + diff --git a/app/code/Magento/CmsGraphQl/etc/module.xml b/app/code/Magento/CmsGraphQl/etc/module.xml new file mode 100644 index 000000000000..4fca42430d16 --- /dev/null +++ b/app/code/Magento/CmsGraphQl/etc/module.xml @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/app/code/Magento/CmsGraphQl/etc/schema.graphqls b/app/code/Magento/CmsGraphQl/etc/schema.graphqls new file mode 100644 index 000000000000..52afb3708d48 --- /dev/null +++ b/app/code/Magento/CmsGraphQl/etc/schema.graphqls @@ -0,0 +1,10 @@ +# Copyright © Magento, Inc. All rights reserved. +# See COPYING.txt for license details. +type StoreConfig @doc(description: "The type contains information about a store config") { + front : String @doc(description: "Default Web URL") + cms_home_page : String @doc(description: "CMS Home Page") + no_route : String @doc(description: "Default No-route URL") + cms_no_route : String @doc(description: "CMS No Route Page") + cms_no_cookies : String @doc(description: "CMS No Cookies Page") + show_cms_breadcrumbs : Int @doc(description: "Show Breadcrumbs for CMS Pages") +} diff --git a/app/code/Magento/CmsGraphQl/registration.php b/app/code/Magento/CmsGraphQl/registration.php new file mode 100644 index 000000000000..9a3fabf6c95e --- /dev/null +++ b/app/code/Magento/CmsGraphQl/registration.php @@ -0,0 +1,10 @@ +storeManager->getStore(); $storeConfig = current($this->storeConfigManager->getStoreConfigs([$store->getCode()])); - return $this->hidrateStoreConfig($storeConfig); + return $this->hydrateStoreConfig($storeConfig); } /** @@ -57,7 +57,7 @@ public function getStoreConfig() : array * @param StoreConfigInterface $storeConfig * @return array */ - private function hidrateStoreConfig($storeConfig): array + private function hydrateStoreConfig($storeConfig): array { /** @var StoreConfigInterface $storeConfig */ $storeConfigData = [ diff --git a/app/code/Magento/StoreGraphQl/etc/schema.graphqls b/app/code/Magento/StoreGraphQl/etc/schema.graphqls index 673e0383f76e..af79d0e3e28b 100644 --- a/app/code/Magento/StoreGraphQl/etc/schema.graphqls +++ b/app/code/Magento/StoreGraphQl/etc/schema.graphqls @@ -30,25 +30,4 @@ type StoreConfig @doc(description: "The type contains information about a store secure_base_link_url : String @doc(description: "Secure base link URL for the store") secure_base_static_url : String @doc(description: "Secure base static URL for the store") secure_base_media_url : String @doc(description: "Secure base media URL for the store") - front : String @doc(description: "Default Web URL") - cms_home_page : String @doc(description: "CMS Home Page") - no_route : String @doc(description: "Default No-route URL") - cms_no_route : String @doc(description: "CMS No Route Page") - cms_no_cookies : String @doc(description: "CMS No Cookies Page") - show_cms_breadcrumbs : Int @doc(description: "Show Breadcrumbs for CMS Pages") - head_shortcut_icon : String @doc(description: "Favicon Icon") - default_title : String @doc(description: "Default Page Title") - title_prefix : String @doc(description: "Page Title Prefix") - title_suffix : String @doc(description: "Page Title Suffix") - default_description : String @doc(description: "Default Meta Description") - default_keywords : String @doc(description: "Default Meta Keywords") - head_includes : String @doc(description: "Scripts and Style Sheets") - demonotice : Int @doc(description: "Display Demo Store Notice") - header_logo_src : String @doc(description: "Logo Image") - logo_width : Int @doc(description: "Logo Attribute Width") - logo_height : Int @doc(description: "Logo Attribute Height") - welcome : String @doc(description: "Welcome Text") - logo_alt : String @doc(description: "Logo Image Alt") - absolute_footer : String @doc(description: "Footer Miscellaneous HTML") - copyright : String @doc(description: "Copyright") } diff --git a/app/code/Magento/ThemeGraphQl/README.md b/app/code/Magento/ThemeGraphQl/README.md new file mode 100644 index 000000000000..fed6b54fa5cf --- /dev/null +++ b/app/code/Magento/ThemeGraphQl/README.md @@ -0,0 +1,4 @@ +# ThemeGraphQlhQl + +**ThemeGraphQlhQl** provides type information for the GraphQl module +to generate theme fields information endpoints. diff --git a/app/code/Magento/ThemeGraphQl/composer.json b/app/code/Magento/ThemeGraphQl/composer.json new file mode 100644 index 000000000000..e17a76d62035 --- /dev/null +++ b/app/code/Magento/ThemeGraphQl/composer.json @@ -0,0 +1,25 @@ +{ + "name": "magento/module-theme-graph-ql", + "description": "N/A", + "type": "magento2-module", + "require": { + "php": "~7.1.3||~7.2.0", + "magento/framework": "*" + }, + "suggest": { + "magento/module-graph-ql": "*", + "magento/module-store-graph-ql": "*" + }, + "license": [ + "OSL-3.0", + "AFL-3.0" + ], + "autoload": { + "files": [ + "registration.php" + ], + "psr-4": { + "Magento\\ThemeGraphQlhQl\\": "" + } + } +} diff --git a/app/code/Magento/StoreGraphQl/etc/graphql/di.xml b/app/code/Magento/ThemeGraphQl/etc/graphql/di.xml similarity index 74% rename from app/code/Magento/StoreGraphQl/etc/graphql/di.xml rename to app/code/Magento/ThemeGraphQl/etc/graphql/di.xml index 8c9b71c638f0..c44c2741b566 100644 --- a/app/code/Magento/StoreGraphQl/etc/graphql/di.xml +++ b/app/code/Magento/ThemeGraphQl/etc/graphql/di.xml @@ -6,17 +6,9 @@ */ --> - + - - web/default/front - web/default/cms_home_page - web/default/no_route - web/default/cms_no_route - web/default/cms_no_cookies - web/default/show_cms_breadcrumbs - design/head/head_shortcut_icon design/head/default_title diff --git a/app/code/Magento/ThemeGraphQl/etc/module.xml b/app/code/Magento/ThemeGraphQl/etc/module.xml new file mode 100644 index 000000000000..e1aacfaf360d --- /dev/null +++ b/app/code/Magento/ThemeGraphQl/etc/module.xml @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/app/code/Magento/ThemeGraphQl/etc/schema.graphqls b/app/code/Magento/ThemeGraphQl/etc/schema.graphqls new file mode 100644 index 000000000000..325fcc8bd983 --- /dev/null +++ b/app/code/Magento/ThemeGraphQl/etc/schema.graphqls @@ -0,0 +1,19 @@ +# Copyright © Magento, Inc. All rights reserved. +# See COPYING.txt for license details. +type StoreConfig @doc(description: "The type contains information about a store config") { + head_shortcut_icon : String @doc(description: "Favicon Icon") + default_title : String @doc(description: "Default Page Title") + title_prefix : String @doc(description: "Page Title Prefix") + title_suffix : String @doc(description: "Page Title Suffix") + default_description : String @doc(description: "Default Meta Description") + default_keywords : String @doc(description: "Default Meta Keywords") + head_includes : String @doc(description: "Scripts and Style Sheets") + demonotice : Int @doc(description: "Display Demo Store Notice") + header_logo_src : String @doc(description: "Logo Image") + logo_width : Int @doc(description: "Logo Attribute Width") + logo_height : Int @doc(description: "Logo Attribute Height") + welcome : String @doc(description: "Welcome Text") + logo_alt : String @doc(description: "Logo Image Alt") + absolute_footer : String @doc(description: "Footer Miscellaneous HTML") + copyright : String @doc(description: "Copyright") +} diff --git a/app/code/Magento/ThemeGraphQl/registration.php b/app/code/Magento/ThemeGraphQl/registration.php new file mode 100644 index 000000000000..e320fbc9868e --- /dev/null +++ b/app/code/Magento/ThemeGraphQl/registration.php @@ -0,0 +1,10 @@ + Date: Thu, 2 Aug 2018 06:17:08 +0000 Subject: [PATCH 06/31] GraphQL-128: static fixes, removed test --- .../Magento/CmsGraphQl/etc/graphql/di.xml | 2 +- .../Magento/ThemeGraphQl/etc/graphql/di.xml | 2 +- app/code/Magento/ThemeGraphQl/etc/module.xml | 2 +- .../GraphQl/Store/StoreConfigResolverTest.php | 30 ------------------- 4 files changed, 3 insertions(+), 33 deletions(-) diff --git a/app/code/Magento/CmsGraphQl/etc/graphql/di.xml b/app/code/Magento/CmsGraphQl/etc/graphql/di.xml index 43e280015e1c..7764ec136900 100644 --- a/app/code/Magento/CmsGraphQl/etc/graphql/di.xml +++ b/app/code/Magento/CmsGraphQl/etc/graphql/di.xml @@ -6,7 +6,7 @@ */ --> - + web/default/front diff --git a/app/code/Magento/ThemeGraphQl/etc/graphql/di.xml b/app/code/Magento/ThemeGraphQl/etc/graphql/di.xml index c44c2741b566..3aabaf84c45d 100644 --- a/app/code/Magento/ThemeGraphQl/etc/graphql/di.xml +++ b/app/code/Magento/ThemeGraphQl/etc/graphql/di.xml @@ -6,7 +6,7 @@ */ --> - + diff --git a/app/code/Magento/ThemeGraphQl/etc/module.xml b/app/code/Magento/ThemeGraphQl/etc/module.xml index e1aacfaf360d..9dee9031e703 100644 --- a/app/code/Magento/ThemeGraphQl/etc/module.xml +++ b/app/code/Magento/ThemeGraphQl/etc/module.xml @@ -6,7 +6,7 @@ */ --> - + diff --git a/dev/tests/api-functional/testsuite/Magento/GraphQl/Store/StoreConfigResolverTest.php b/dev/tests/api-functional/testsuite/Magento/GraphQl/Store/StoreConfigResolverTest.php index d6a175783f4a..c7426caef711 100644 --- a/dev/tests/api-functional/testsuite/Magento/GraphQl/Store/StoreConfigResolverTest.php +++ b/dev/tests/api-functional/testsuite/Magento/GraphQl/Store/StoreConfigResolverTest.php @@ -28,9 +28,6 @@ protected function setUp() $this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager(); } - /** - * @magentoApiDataFixture Magento/Store/_files/store.php - */ public function testGetStoreConfig() { /** @var StoreConfigManagerInterface $storeConfigsManager */ @@ -90,31 +87,4 @@ public function testGetStoreConfig() ); $this->assertEquals($storeConfig->getSecureBaseMediaUrl(), $response['storeConfig']['secure_base_media_url']); } - - /** - * @magentoConfigFixture default_store web/default/front 'test_page' - * @magentoConfigFixture default_store design/head/default_title 'Test Title' - * @magentoConfigFixture default_store design/footer/copyright 'Test Copyright' - */ - public function testExtendedStoreConfig() - { - $front = 'test_page'; - $default_title = 'Test Title'; - $copyright = 'Test Copyright'; - - $query = <<graphQlQuery($query); - $this->assertArrayHasKey('storeConfig', $response); - $this->assertEquals($front, $response['storeConfig']['front']); - $this->assertEquals($default_title, $response['storeConfig']['default_title']); - $this->assertEquals($copyright, $response['storeConfig']['copyright']); - } } From 8355529c30a3f2d758a791300b57a00f68d650bc Mon Sep 17 00:00:00 2001 From: vitaliyboyko Date: Thu, 2 Aug 2018 07:49:34 +0000 Subject: [PATCH 07/31] GraphQL-128: added new modules to root composer json --- composer.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/composer.json b/composer.json index f8182c96f78a..2442e4965066 100644 --- a/composer.json +++ b/composer.json @@ -119,6 +119,7 @@ "magento/module-checkout": "*", "magento/module-checkout-agreements": "*", "magento/module-cms": "*", + "magento/module-cms-graph-ql": "*", "magento/module-cms-url-rewrite": "*", "magento/module-config": "*", "magento/module-configurable-import-export": "*", @@ -213,6 +214,7 @@ "magento/module-tax": "*", "magento/module-tax-import-export": "*", "magento/module-theme": "*", + "magento/module-theme-graph-ql": "*", "magento/module-translation": "*", "magento/module-ui": "*", "magento/module-ups": "*", From 43b178ee81eb03b8466fe865e03963d5cc351194 Mon Sep 17 00:00:00 2001 From: vitaliyboyko Date: Thu, 2 Aug 2018 09:28:17 +0000 Subject: [PATCH 08/31] GraphQL-128: updated composer.lock --- composer.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.lock b/composer.lock index 0966aee19489..2627ab446853 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "c6ae2be0f066e566e8280b2954aad257", + "content-hash": "5c8e786ec3daaabbc40f33b38bc0dffb", "packages": [ { "name": "braintree/braintree_php", From 1a8fef4b5d7d69bc3d65d45c611dbee5c46c5b9c Mon Sep 17 00:00:00 2001 From: TomashKhamlai Date: Tue, 21 Aug 2018 10:47:45 +0300 Subject: [PATCH 09/31] Test coverage for CMS page --- .../Magento/GraphQl/Cms/CmsPageTest.php | 136 ++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 dev/tests/api-functional/testsuite/Magento/GraphQl/Cms/CmsPageTest.php diff --git a/dev/tests/api-functional/testsuite/Magento/GraphQl/Cms/CmsPageTest.php b/dev/tests/api-functional/testsuite/Magento/GraphQl/Cms/CmsPageTest.php new file mode 100644 index 000000000000..fa115a8a49bc --- /dev/null +++ b/dev/tests/api-functional/testsuite/Magento/GraphQl/Cms/CmsPageTest.php @@ -0,0 +1,136 @@ +get(GetPageByIdentifier::class)->execute('page100', 0); + $pageId = $cmsPage->getPageId(); + $cmsPageData = $cmsPage->getData(); + $query = + <<graphQlQuery($query); + $this->assertEquals($cmsPageData['identifier'], $response['cmsPage']['url_key']); + $this->assertEquals($cmsPageData['title'], $response['cmsPage']['title']); + $this->assertEquals($cmsPageData['content'], $response['cmsPage']['content']); + $this->assertEquals($cmsPageData['content_heading'], $response['cmsPage']['content_heading']); + $this->assertEquals($cmsPageData['page_layout'], $response['cmsPage']['page_layout']); + $this->assertEquals($cmsPageData['meta_title'], $response['cmsPage']['meta_title']); + $this->assertEquals($cmsPageData['meta_description'], $response['cmsPage']['meta_description']); + $this->assertEquals($cmsPageData['meta_keywords'], $response['cmsPage']['meta_keywords']); + } + + /** + * Verify the message when page_id is not specified. + */ + public function testGetCmsPageWithoutId() + { + $query = + <<expectException(\Exception::class); + $this->expectExceptionMessage('Page id should be specified'); + $this->graphQlQuery($query); + } + + /** + * Verify the message when page_id does not exist. + */ + public function testGetCmsPageByNonExistentId() + { + $query = + <<expectException(\Exception::class); + $this->expectExceptionMessage('The CMS page with the "0" ID doesn\'t exist.'); + $this->graphQlQuery($query); + + } + + /** + * Verify the message when CMS Page selected by page_id is disabled + * + * @magentoApiDataFixture Magento/Cms/_files/noroute.php + */ + public function testGetDisabledCmsPageById() + { + $cmsPageId = ObjectManager::getInstance()->get(GetPageByIdentifier::class)->execute('no-route', 0)->getPageId(); + $query = + <<expectException(\Exception::class); + $this->expectExceptionMessage('No such entity.'); + $this->graphQlQuery($query); + } + +} From 8f936acfed88007e5bc03d440f7965b7576c0f5a Mon Sep 17 00:00:00 2001 From: TomashKhamlai Date: Tue, 21 Aug 2018 11:59:41 +0300 Subject: [PATCH 10/31] Fix problems reported by testCodeStyle --- .../testsuite/Magento/GraphQl/Cms/CmsPageTest.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/dev/tests/api-functional/testsuite/Magento/GraphQl/Cms/CmsPageTest.php b/dev/tests/api-functional/testsuite/Magento/GraphQl/Cms/CmsPageTest.php index fa115a8a49bc..86145fafa62f 100644 --- a/dev/tests/api-functional/testsuite/Magento/GraphQl/Cms/CmsPageTest.php +++ b/dev/tests/api-functional/testsuite/Magento/GraphQl/Cms/CmsPageTest.php @@ -11,7 +11,6 @@ use Magento\TestFramework\ObjectManager; use Magento\TestFramework\TestCase\GraphQlAbstract; - class CmsPageTest extends GraphQlAbstract { /** @@ -101,7 +100,6 @@ public function testGetCmsPageByNonExistentId() $this->expectException(\Exception::class); $this->expectExceptionMessage('The CMS page with the "0" ID doesn\'t exist.'); $this->graphQlQuery($query); - } /** @@ -132,5 +130,4 @@ public function testGetDisabledCmsPageById() $this->expectExceptionMessage('No such entity.'); $this->graphQlQuery($query); } - } From 56d6801c81889adc3656a7f59dbd35e050f74d95 Mon Sep 17 00:00:00 2001 From: Tomash Khamlai Date: Tue, 21 Aug 2018 19:06:55 +0300 Subject: [PATCH 11/31] Test coverage for CMS block --- .../Magento/GraphQl/Cms/CmsBlockTest.php | 138 ++++++++++++++++++ 1 file changed, 138 insertions(+) create mode 100644 dev/tests/api-functional/testsuite/Magento/GraphQl/Cms/CmsBlockTest.php diff --git a/dev/tests/api-functional/testsuite/Magento/GraphQl/Cms/CmsBlockTest.php b/dev/tests/api-functional/testsuite/Magento/GraphQl/Cms/CmsBlockTest.php new file mode 100644 index 000000000000..9ca1ba381d94 --- /dev/null +++ b/dev/tests/api-functional/testsuite/Magento/GraphQl/Cms/CmsBlockTest.php @@ -0,0 +1,138 @@ +objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager(); + } + + /** + * Verify the fields of CMS Block selected by identifiers + * + * @magentoApiDataFixture Magento/Cms/_files/block.php + */ + public function testGetCmsBlocksByIdentifiers() + { + /** @var StoreManagerInterface $storeManager */ + $storeManager = $this->objectManager->get(StoreManagerInterface::class); + $storeId = (int)$storeManager->getStore()->getId(); + $cmsBlock = $this->objectManager->get(GetBlockByIdentifier::class)->execute("fixture_block", $storeId); + $cmsBlockData = $cmsBlock->getData(); + /** @var FilterEmulate $widgetFilter */ + $widgetFilter = $this->objectManager->get(FilterEmulate::class); + $renderedContent = $widgetFilter->setUseSessionInUrl(false)->filter($cmsBlock->getContent()); + $query = + <<graphQlQuery($query); + $this->assertArrayHasKey('cmsBlocks', $response); + $this->assertArrayHasKey('items', $response['cmsBlocks']); + $this->assertArrayHasKey('content', $response['cmsBlocks']['items'][0]); + $this->assertEquals($cmsBlockData['identifier'], $response['cmsBlocks']['items'][0]['identifier']); + $this->assertEquals($cmsBlockData['title'], $response['cmsBlocks']['items'][0]['title']); + $this->assertEquals($renderedContent, $response['cmsBlocks']['items'][0]['content']); + } + + /** + * Verify the message when CMS Block is disabled + */ + public function testGetDisabledCmsBlockByIdentifiers() + { + /** @var StoreManagerInterface $storeManager */ + $storeManager = $this->objectManager->get(StoreManagerInterface::class); + $storeId = (int)$storeManager->getStore()->getId(); + $cmsBlockId = $this->objectManager->get(GetBlockByIdentifier::class)->execute("fixture_block", $storeId)->getId(); + $this->objectManager->get(Block::class)->load($cmsBlockId)->setIsActive(0)->save(); + $query = + <<expectException(\Exception::class); + $this->expectExceptionMessage('No such entity.'); + $this->graphQlQuery($query); + } + + /** + * Verify the message when identifiers were not specified + */ + public function testGetCmsBlockBypassingIdentifiers() + { + $query = + <<expectException(\Exception::class); + $this->expectExceptionMessage('"identifiers" of CMS blocks should be specified'); + $this->graphQlQuery($query); + } + + /** + * Verify the message when CMS Block with such identifiers does not exist + */ + public function testGetCmsBlockByNonExistentIdentifier() + { + $query = + <<expectException(\Exception::class); + $this->expectExceptionMessage('The CMS block with the "0" ID doesn\'t exist.'); + $this->graphQlQuery($query); + } +} From b85ec3fdd59a3542e50dc87ff8773105f0f33b9a Mon Sep 17 00:00:00 2001 From: Tomash Khamlai Date: Wed, 22 Aug 2018 11:27:08 +0300 Subject: [PATCH 12/31] Reformat code --- .../testsuite/Magento/GraphQl/Cms/CmsBlockTest.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dev/tests/api-functional/testsuite/Magento/GraphQl/Cms/CmsBlockTest.php b/dev/tests/api-functional/testsuite/Magento/GraphQl/Cms/CmsBlockTest.php index 9ca1ba381d94..b128fa9e75cb 100644 --- a/dev/tests/api-functional/testsuite/Magento/GraphQl/Cms/CmsBlockTest.php +++ b/dev/tests/api-functional/testsuite/Magento/GraphQl/Cms/CmsBlockTest.php @@ -70,7 +70,8 @@ public function testGetDisabledCmsBlockByIdentifiers() /** @var StoreManagerInterface $storeManager */ $storeManager = $this->objectManager->get(StoreManagerInterface::class); $storeId = (int)$storeManager->getStore()->getId(); - $cmsBlockId = $this->objectManager->get(GetBlockByIdentifier::class)->execute("fixture_block", $storeId)->getId(); + $cmsBlockId = $this->objectManager->get(GetBlockByIdentifier::class)->execute("fixture_block", + $storeId)->getId(); $this->objectManager->get(Block::class)->load($cmsBlockId)->setIsActive(0)->save(); $query = << Date: Wed, 22 Aug 2018 18:41:56 +0300 Subject: [PATCH 13/31] Reformat again --- .../testsuite/Magento/GraphQl/Cms/CmsBlockTest.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/dev/tests/api-functional/testsuite/Magento/GraphQl/Cms/CmsBlockTest.php b/dev/tests/api-functional/testsuite/Magento/GraphQl/Cms/CmsBlockTest.php index b128fa9e75cb..41bb98d24bfe 100644 --- a/dev/tests/api-functional/testsuite/Magento/GraphQl/Cms/CmsBlockTest.php +++ b/dev/tests/api-functional/testsuite/Magento/GraphQl/Cms/CmsBlockTest.php @@ -70,8 +70,9 @@ public function testGetDisabledCmsBlockByIdentifiers() /** @var StoreManagerInterface $storeManager */ $storeManager = $this->objectManager->get(StoreManagerInterface::class); $storeId = (int)$storeManager->getStore()->getId(); - $cmsBlockId = $this->objectManager->get(GetBlockByIdentifier::class)->execute("fixture_block", - $storeId)->getId(); + $cmsBlockId = $this->objectManager->get(GetBlockByIdentifier::class) + ->execute("fixture_block", $storeId) + ->getId(); $this->objectManager->get(Block::class)->load($cmsBlockId)->setIsActive(0)->save(); $query = << Date: Thu, 23 Aug 2018 16:15:01 +0300 Subject: [PATCH 14/31] Test coverage for added breadcrumbs support #158 --- .../GraphQl/Catalog/BreadcrumbsTest.php | 175 ++++++++++++++++++ 1 file changed, 175 insertions(+) create mode 100644 dev/tests/api-functional/testsuite/Magento/GraphQl/Catalog/BreadcrumbsTest.php diff --git a/dev/tests/api-functional/testsuite/Magento/GraphQl/Catalog/BreadcrumbsTest.php b/dev/tests/api-functional/testsuite/Magento/GraphQl/Catalog/BreadcrumbsTest.php new file mode 100644 index 000000000000..d0879ae5864e --- /dev/null +++ b/dev/tests/api-functional/testsuite/Magento/GraphQl/Catalog/BreadcrumbsTest.php @@ -0,0 +1,175 @@ +get(CollectionFactory::class)->create(); + $categoryCollection->addAttributeToFilter('name', ['eq' => 'Category 1.1.1']); + $selectedCategoryId = (int)$categoryCollection->getFirstItem()->getId(); + $query = + <<graphQlQuery($query); + $this->assertArrayHasKey('category', $response); + $this->assertArrayHasKey('breadcrumbs', $response['category']); + $this->assertBaseFields($selectedCategoryId, $response); + } + + /** + * Verify the fields of CMS Block selected by identifiers. + * + * @magentoApiDataFixture Magento/Catalog/_files/category_tree.php + * @return void + */ + public function testGetBreadcrumbsForNonExistingCategory(): void + { + $query = + <<graphQlQuery($query); + $this->assertArrayHasKey('category', $response); + $this->assertNull( + $response['category'], + 'Value of "category" field must be NULL if requested category doesn\'t exist' + ); + $this->assertCount( + 1, + $response, + 'There should be only "category" field if requested category doesn\'t exist ' + ); + } + + /** + * Asserts the equality of the response fields to the fields given in assertion map. + * Assert that values of the fields are different from NULL + * + * @param array $actualResponse + * @param array $assertionMap + * @return void + */ + private function assertResponseFields(array $actualResponse, array $assertionMap): void + { + foreach ($assertionMap as $key => $assertionData) { + $expectedValue = isset($assertionData['expected_value']) + ? $assertionData['expected_value'] + : $assertionData; + $responseField = isset($assertionData['response_field']) ? $assertionData['response_field'] : $key; + $this->assertNotNull( + $expectedValue, + "Value of '{$responseField}' field must not be NULL" + ); + $this->assertEquals( + $expectedValue[$key], + $actualResponse[$responseField], + "Value of '{$responseField}' field in response does not match expected value: " + . var_export($expectedValue, true) + ); + } + } + + /** + * Get breadcrumbs for given category. + * + * @param Category $category + * @return array + */ + private function getBreadcrumbs(Category $category): array + { + $breadcrumbs = []; + $rootId = Bootstrap::getObjectManager()->get(StoreManagerInterface::class) + ->getStore() + ->getRootCategoryId(); + foreach ($category->getParentCategories() as $parentCategory) { + if ($parentCategory->getId() !== $rootId) { + $breadcrumbs[] = [ + 'category_id' => $parentCategory->getId(), + 'category_name' => $parentCategory->getName(), + 'category_level' => $parentCategory->getLevel(), + 'category_url_key' => $parentCategory->getUrlKey(), + ]; + } + } + + return $breadcrumbs; + } + + /** + * Asserts base fields + * + * @param int $categoryId + * @param array $actualResponse + * @return void + */ + private function assertBaseFields(int $categoryId, array $actualResponse): void + { + $category = Bootstrap::getObjectManager()->create(Category::class)->load($categoryId); + $assertionMap = [ + [ + 'response_field' => 'category', + 'expected_value' => + [ + [ + 'name' => $category->getName(), + 'breadcrumbs' => $this->getBreadcrumbs($category->getParentCategory()), + ], + + ], + ], + ]; + + /** + * @param array $actualResponse + * @param array $assertionMap ['response_field_name' => 'response_field_value', ...] + * OR [['response_field' => $field, 'expected_value' => $value], ...] + */ + $this->assertResponseFields($actualResponse, $assertionMap); + } +} From af69563af6d01faade250723ef2be8bb233cfb13 Mon Sep 17 00:00:00 2001 From: Sourabh Modi Date: Sun, 26 Aug 2018 15:08:40 +0800 Subject: [PATCH 15/31] Allow scalars as resolver return type. --- .../Model/Resolver/BundleItemLinks.php | 2 +- .../Model/Resolver/BundleItems.php | 2 +- .../Model/Resolver/Options/Label.php | 2 +- .../Resolver/Product/Fields/DynamicPrice.php | 2 +- .../Resolver/Product/Fields/DynamicSku.php | 23 ++------------- .../Resolver/Product/Fields/DynamicWeight.php | 22 ++------------- .../Resolver/Product/Fields/PriceView.php | 18 ++---------- .../Product/Fields/ShipBundleItems.php | 18 ++---------- .../Model/Resolver/Categories.php | 2 +- .../Model/Resolver/Category/Breadcrumbs.php | 5 +--- .../Model/Resolver/Category/Products.php | 17 ++--------- .../Model/Resolver/Category/SortFields.php | 17 ++--------- .../Model/Resolver/CategoryTree.php | 2 +- .../CatalogGraphQl/Model/Resolver/Product.php | 2 +- .../Model/Resolver/Product/CanonicalUrl.php | 28 +++---------------- .../Model/Resolver/Product/EntityIdToId.php | 19 ++++--------- .../Resolver/Product/MediaGalleryEntries.php | 28 +++---------------- .../Model/Resolver/Product/NewFromTo.php | 27 ++---------------- .../Model/Resolver/Product/Options.php | 28 +++---------------- .../Model/Resolver/Product/Price.php | 20 ++++--------- .../Model/Resolver/Product/ProductLinks.php | 28 +++---------------- .../Model/Resolver/Product/TierPrices.php | 28 +++---------------- .../Model/Resolver/Product/Websites.php | 2 +- .../Model/Resolver/Products.php | 17 ++--------- .../Model/Resolver/ConfigurableVariant.php | 2 +- .../Model/Resolver/Options.php | 2 +- .../Model/Resolver/Variant/Attributes.php | 2 +- .../Model/Resolver/Customer.php | 2 +- .../Resolver/Product/DownloadableOptions.php | 25 ++++------------- .../Resolver/CustomAttributeMetadata.php | 15 ++-------- .../Model/Resolver/GroupedItems.php | 23 +++------------ .../Model/Resolver/StoreConfigResolver.php | 2 +- 32 files changed, 77 insertions(+), 355 deletions(-) diff --git a/app/code/Magento/BundleGraphQl/Model/Resolver/BundleItemLinks.php b/app/code/Magento/BundleGraphQl/Model/Resolver/BundleItemLinks.php index f90945d19f94..ca3c391f3de3 100644 --- a/app/code/Magento/BundleGraphQl/Model/Resolver/BundleItemLinks.php +++ b/app/code/Magento/BundleGraphQl/Model/Resolver/BundleItemLinks.php @@ -44,7 +44,7 @@ public function __construct( /** * {@inheritDoc} */ - public function resolve(Field $field, $context, ResolveInfo $info, array $value = null, array $args = null) : Value + public function resolve(Field $field, $context, ResolveInfo $info, array $value = null, array $args = null) { if (!isset($value['option_id']) || !isset($value['parent_id'])) { $result = function () { diff --git a/app/code/Magento/BundleGraphQl/Model/Resolver/BundleItems.php b/app/code/Magento/BundleGraphQl/Model/Resolver/BundleItems.php index 9474f825fe5e..e2a4be11e861 100644 --- a/app/code/Magento/BundleGraphQl/Model/Resolver/BundleItems.php +++ b/app/code/Magento/BundleGraphQl/Model/Resolver/BundleItems.php @@ -57,7 +57,7 @@ public function __construct( * * {@inheritDoc} */ - public function resolve(Field $field, $context, ResolveInfo $info, array $value = null, array $args = null) : Value + public function resolve(Field $field, $context, ResolveInfo $info, array $value = null, array $args = null) { $linkField = $this->metdataPool->getMetadata(ProductInterface::class)->getLinkField(); if ($value['type_id'] !== Type::TYPE_CODE diff --git a/app/code/Magento/BundleGraphQl/Model/Resolver/Options/Label.php b/app/code/Magento/BundleGraphQl/Model/Resolver/Options/Label.php index a4757108ee5a..9a1adf2fd4f0 100644 --- a/app/code/Magento/BundleGraphQl/Model/Resolver/Options/Label.php +++ b/app/code/Magento/BundleGraphQl/Model/Resolver/Options/Label.php @@ -49,7 +49,7 @@ public function resolve( ResolveInfo $info, array $value = null, array $args = null - ): Value { + ) { if (!isset($value['sku'])) { $result = function () { return null; diff --git a/app/code/Magento/BundleGraphQl/Model/Resolver/Product/Fields/DynamicPrice.php b/app/code/Magento/BundleGraphQl/Model/Resolver/Product/Fields/DynamicPrice.php index e8dc3decc2ad..b2005b6e6e91 100644 --- a/app/code/Magento/BundleGraphQl/Model/Resolver/Product/Fields/DynamicPrice.php +++ b/app/code/Magento/BundleGraphQl/Model/Resolver/Product/Fields/DynamicPrice.php @@ -42,7 +42,7 @@ public function resolve( ResolveInfo $info, array $value = null, array $args = null - ): Value { + ) { $result = null; if ($value['type_id'] === Bundle::TYPE_CODE) { $result = isset($value['price_type']) ? !$value['price_type'] : null; diff --git a/app/code/Magento/BundleGraphQl/Model/Resolver/Product/Fields/DynamicSku.php b/app/code/Magento/BundleGraphQl/Model/Resolver/Product/Fields/DynamicSku.php index 37e1557d36df..3d90e6bb2b60 100644 --- a/app/code/Magento/BundleGraphQl/Model/Resolver/Product/Fields/DynamicSku.php +++ b/app/code/Magento/BundleGraphQl/Model/Resolver/Product/Fields/DynamicSku.php @@ -12,7 +12,6 @@ use Magento\Bundle\Model\Product\Type as Bundle; use Magento\Framework\GraphQl\Config\Element\Field; use Magento\Framework\GraphQl\Query\Resolver\Value; -use Magento\Framework\GraphQl\Query\Resolver\ValueFactory; use Magento\Framework\GraphQl\Query\ResolverInterface; /** @@ -20,29 +19,17 @@ */ class DynamicSku implements ResolverInterface { - /** - * @var ValueFactory - */ - private $valueFactory; - - /** - * @param ValueFactory $valueFactory - */ - public function __construct(ValueFactory $valueFactory) - { - $this->valueFactory = $valueFactory; - } /** * {@inheritdoc} */ - public function resolve( +public function resolve( Field $field, $context, ResolveInfo $info, array $value = null, array $args = null - ): Value { + ){ $result = function () { return null; }; @@ -50,10 +37,6 @@ public function resolve( $result = isset($value['sku_type']) ? !$value['sku_type'] : null; } - return $this->valueFactory->create( - function () use ($result) { - return $result; - } - ); + return $result; } } diff --git a/app/code/Magento/BundleGraphQl/Model/Resolver/Product/Fields/DynamicWeight.php b/app/code/Magento/BundleGraphQl/Model/Resolver/Product/Fields/DynamicWeight.php index 5f79bba449e5..0d5fd730906d 100644 --- a/app/code/Magento/BundleGraphQl/Model/Resolver/Product/Fields/DynamicWeight.php +++ b/app/code/Magento/BundleGraphQl/Model/Resolver/Product/Fields/DynamicWeight.php @@ -12,7 +12,6 @@ use Magento\Bundle\Model\Product\Type as Bundle; use Magento\Framework\GraphQl\Config\Element\Field; use Magento\Framework\GraphQl\Query\Resolver\Value; -use Magento\Framework\GraphQl\Query\Resolver\ValueFactory; use Magento\Framework\GraphQl\Query\ResolverInterface; /** @@ -20,19 +19,6 @@ */ class DynamicWeight implements ResolverInterface { - /** - * @var ValueFactory - */ - private $valueFactory; - - /** - * @param ValueFactory $valueFactory - */ - public function __construct(ValueFactory $valueFactory) - { - $this->valueFactory = $valueFactory; - } - /** * {@inheritdoc} */ @@ -42,7 +28,7 @@ public function resolve( ResolveInfo $info, array $value = null, array $args = null - ): Value { + ) { $result = function () { return null; }; @@ -50,10 +36,6 @@ public function resolve( $result = isset($value['weight_type']) ? !$value['weight_type'] : null; } - return $this->valueFactory->create( - function () use ($result) { - return $result; - } - ); + return $result; } } diff --git a/app/code/Magento/BundleGraphQl/Model/Resolver/Product/Fields/PriceView.php b/app/code/Magento/BundleGraphQl/Model/Resolver/Product/Fields/PriceView.php index ef8e93748c73..783ea66eaa24 100644 --- a/app/code/Magento/BundleGraphQl/Model/Resolver/Product/Fields/PriceView.php +++ b/app/code/Magento/BundleGraphQl/Model/Resolver/Product/Fields/PriceView.php @@ -13,7 +13,6 @@ use Magento\Framework\GraphQl\Config\Element\Field; use Magento\Framework\GraphQl\Query\EnumLookup; use Magento\Framework\GraphQl\Query\Resolver\Value; -use Magento\Framework\GraphQl\Query\Resolver\ValueFactory; use Magento\Framework\GraphQl\Query\ResolverInterface; /** @@ -26,19 +25,12 @@ class PriceView implements ResolverInterface */ private $enumLookup; - /** - * @var ValueFactory - */ - private $valueFactory; - /** * @param EnumLookup $enumLookup - * @param ValueFactory $valueFactory */ - public function __construct(EnumLookup $enumLookup, ValueFactory $valueFactory) + public function __construct(EnumLookup $enumLookup) { $this->enumLookup = $enumLookup; - $this->valueFactory = $valueFactory; } /** @@ -50,7 +42,7 @@ public function resolve( ResolveInfo $info, array $value = null, array $args = null - ): Value { + ) { $result = function () { return null; }; @@ -59,10 +51,6 @@ public function resolve( ? $this->enumLookup->getEnumValueFromField('PriceViewEnum', $value['price_view']) : null; } - return $this->valueFactory->create( - function () use ($result) { - return $result; - } - ); + return $result; } } diff --git a/app/code/Magento/BundleGraphQl/Model/Resolver/Product/Fields/ShipBundleItems.php b/app/code/Magento/BundleGraphQl/Model/Resolver/Product/Fields/ShipBundleItems.php index e2bd12a84e2b..43bad2c4acb9 100644 --- a/app/code/Magento/BundleGraphQl/Model/Resolver/Product/Fields/ShipBundleItems.php +++ b/app/code/Magento/BundleGraphQl/Model/Resolver/Product/Fields/ShipBundleItems.php @@ -13,7 +13,6 @@ use Magento\Framework\GraphQl\Config\Element\Field; use Magento\Framework\GraphQl\Query\EnumLookup; use Magento\Framework\GraphQl\Query\Resolver\Value; -use Magento\Framework\GraphQl\Query\Resolver\ValueFactory; use Magento\Framework\GraphQl\Query\ResolverInterface; /** @@ -26,19 +25,12 @@ class ShipBundleItems implements ResolverInterface */ private $enumLookup; - /** - * @var ValueFactory - */ - private $valueFactory; - /** * @param EnumLookup $enumLookup - * @param ValueFactory $valueFactory */ - public function __construct(EnumLookup $enumLookup, ValueFactory $valueFactory) + public function __construct(EnumLookup $enumLookup) { $this->enumLookup = $enumLookup; - $this->valueFactory = $valueFactory; } /** @@ -50,7 +42,7 @@ public function resolve( ResolveInfo $info, array $value = null, array $args = null - ): Value { + ) { $result = function () { return null; }; @@ -59,10 +51,6 @@ public function resolve( ? $this->enumLookup->getEnumValueFromField('ShipBundleItemsEnum', $value['shipment_type']) : null; } - return $this->valueFactory->create( - function () use ($result) { - return $result; - } - ); + return $result; } } diff --git a/app/code/Magento/CatalogGraphQl/Model/Resolver/Categories.php b/app/code/Magento/CatalogGraphQl/Model/Resolver/Categories.php index 378e7cb4c367..d261173b78a5 100644 --- a/app/code/Magento/CatalogGraphQl/Model/Resolver/Categories.php +++ b/app/code/Magento/CatalogGraphQl/Model/Resolver/Categories.php @@ -82,7 +82,7 @@ public function __construct( * {@inheritdoc} * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ - public function resolve(Field $field, $context, ResolveInfo $info, array $value = null, array $args = null) : Value + public function resolve(Field $field, $context, ResolveInfo $info, array $value = null, array $args = null) { /** @var \Magento\Catalog\Model\Product $product */ $product = $value['model']; diff --git a/app/code/Magento/CatalogGraphQl/Model/Resolver/Category/Breadcrumbs.php b/app/code/Magento/CatalogGraphQl/Model/Resolver/Category/Breadcrumbs.php index d49c7f5e5674..1d2220b96316 100644 --- a/app/code/Magento/CatalogGraphQl/Model/Resolver/Category/Breadcrumbs.php +++ b/app/code/Magento/CatalogGraphQl/Model/Resolver/Category/Breadcrumbs.php @@ -47,10 +47,7 @@ public function __construct( public function resolve(Field $field, $context, ResolveInfo $info, array $value = null, array $args = null): Value { if (!isset($value['path'])) { - $result = function () { - return null; - }; - return $this->valueFactory->create($result); + return null; } $result = function () use ($value) { diff --git a/app/code/Magento/CatalogGraphQl/Model/Resolver/Category/Products.php b/app/code/Magento/CatalogGraphQl/Model/Resolver/Category/Products.php index 406b4173e68e..9ed707289650 100644 --- a/app/code/Magento/CatalogGraphQl/Model/Resolver/Category/Products.php +++ b/app/code/Magento/CatalogGraphQl/Model/Resolver/Category/Products.php @@ -10,7 +10,6 @@ use Magento\Catalog\Api\ProductRepositoryInterface; use Magento\Framework\GraphQl\Config\Element\Field; use Magento\Framework\GraphQl\Query\Resolver\Value; -use Magento\Framework\GraphQl\Query\Resolver\ValueFactory; use Magento\Framework\GraphQl\Query\ResolverInterface; use Magento\Framework\GraphQl\Schema\Type\ResolveInfo; use Magento\Framework\GraphQl\Query\Resolver\Argument\SearchCriteria\Builder; @@ -31,25 +30,19 @@ class Products implements ResolverInterface /** @var Filter */ private $filterQuery; - /** @var ValueFactory */ - private $valueFactory; - /** * @param ProductRepositoryInterface $productRepository * @param Builder $searchCriteriaBuilder * @param Filter $filterQuery - * @param ValueFactory $valueFactory */ public function __construct( ProductRepositoryInterface $productRepository, Builder $searchCriteriaBuilder, - Filter $filterQuery, - ValueFactory $valueFactory + Filter $filterQuery ) { $this->productRepository = $productRepository; $this->searchCriteriaBuilder = $searchCriteriaBuilder; $this->filterQuery = $filterQuery; - $this->valueFactory = $valueFactory; } /** @@ -61,7 +54,7 @@ public function resolve( ResolveInfo $info, array $value = null, array $args = null - ): Value { + ) { $args['filter'] = [ 'category_id' => [ 'eq' => $value['id'] @@ -98,10 +91,6 @@ public function resolve( ] ]; - $result = function () use ($data) { - return $data; - }; - - return $this->valueFactory->create($result); + return $result; } } diff --git a/app/code/Magento/CatalogGraphQl/Model/Resolver/Category/SortFields.php b/app/code/Magento/CatalogGraphQl/Model/Resolver/Category/SortFields.php index ca68b2991011..7e94b5e18c02 100644 --- a/app/code/Magento/CatalogGraphQl/Model/Resolver/Category/SortFields.php +++ b/app/code/Magento/CatalogGraphQl/Model/Resolver/Category/SortFields.php @@ -10,7 +10,6 @@ use Magento\Framework\GraphQl\Schema\Type\ResolveInfo; use Magento\Framework\GraphQl\Config\Element\Field; use Magento\Framework\GraphQl\Query\Resolver\Value; -use Magento\Framework\GraphQl\Query\Resolver\ValueFactory; use Magento\Framework\GraphQl\Query\ResolverInterface; /** @@ -18,11 +17,6 @@ */ class SortFields implements ResolverInterface { - /** - * @var ValueFactory - */ - private $valueFactory; - /** * @var \Magento\Catalog\Model\Config */ @@ -39,18 +33,15 @@ class SortFields implements ResolverInterface private $sortbyAttributeSource; /** - * @param ValueFactory $valueFactory * @param \Magento\Catalog\Model\Config $catalogConfig * @param \Magento\Store\Model\StoreManagerInterface $storeManager * @oaram \Magento\Catalog\Model\Category\Attribute\Source\Sortby $sortbyAttributeSource */ public function __construct( - ValueFactory $valueFactory, \Magento\Catalog\Model\Config $catalogConfig, \Magento\Store\Model\StoreManagerInterface $storeManager, \Magento\Catalog\Model\Category\Attribute\Source\Sortby $sortbyAttributeSource ) { - $this->valueFactory = $valueFactory; $this->catalogConfig = $catalogConfig; $this->storeManager = $storeManager; $this->sortbyAttributeSource = $sortbyAttributeSource; @@ -59,7 +50,7 @@ public function __construct( /** * {@inheritDoc} */ - public function resolve(Field $field, $context, ResolveInfo $info, array $value = null, array $args = null) : Value + public function resolve(Field $field, $context, ResolveInfo $info, array $value = null, array $args = null) { $sortFieldsOptions = $this->sortbyAttributeSource->getAllOptions(); array_walk( @@ -73,10 +64,6 @@ function (&$option) { 'options' => $sortFieldsOptions, ]; - $result = function () use ($data) { - return $data; - }; - - return $this->valueFactory->create($result); + return $data; } } diff --git a/app/code/Magento/CatalogGraphQl/Model/Resolver/CategoryTree.php b/app/code/Magento/CatalogGraphQl/Model/Resolver/CategoryTree.php index f631e5ff61d2..dba6ff5f4a14 100644 --- a/app/code/Magento/CatalogGraphQl/Model/Resolver/CategoryTree.php +++ b/app/code/Magento/CatalogGraphQl/Model/Resolver/CategoryTree.php @@ -65,7 +65,7 @@ private function assertFiltersAreValidAndGetCategoryRootIds(array $args) : int /** * {@inheritdoc} */ - public function resolve(Field $field, $context, ResolveInfo $info, array $value = null, array $args = null) : Value + public function resolve(Field $field, $context, ResolveInfo $info, array $value = null, array $args = null) { return $this->valueFactory->create(function () use ($value, $args, $field, $info) { if (isset($value[$field->getName()])) { diff --git a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product.php b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product.php index 8bf3335bbb9d..0607cd42fb62 100644 --- a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product.php +++ b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product.php @@ -54,7 +54,7 @@ public function __construct( /** * {@inheritDoc} */ - public function resolve(Field $field, $context, ResolveInfo $info, array $value = null, array $args = null) : Value + public function resolve(Field $field, $context, ResolveInfo $info, array $value = null, array $args = null) { if (!isset($value['sku'])) { throw new GraphQlInputException(__('No child sku found for product link.')); diff --git a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/CanonicalUrl.php b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/CanonicalUrl.php index d2675848c2d2..03b41a1105c0 100644 --- a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/CanonicalUrl.php +++ b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/CanonicalUrl.php @@ -10,7 +10,6 @@ use Magento\Catalog\Model\Product; use Magento\Framework\GraphQl\Config\Element\Field; use Magento\Framework\GraphQl\Query\Resolver\Value; -use Magento\Framework\GraphQl\Query\Resolver\ValueFactory; use Magento\Framework\GraphQl\Query\ResolverInterface; use Magento\Framework\GraphQl\Schema\Type\ResolveInfo; @@ -19,20 +18,6 @@ */ class CanonicalUrl implements ResolverInterface { - /** - * @var ValueFactory - */ - private $valueFactory; - - /** - * @param ValueFactory $valueFactory - */ - public function __construct( - ValueFactory $valueFactory - ) { - $this->valueFactory = $valueFactory; - } - /** * {@inheritdoc} */ @@ -44,19 +29,14 @@ public function resolve( array $args = null ): Value { if (!isset($value['model'])) { - $result = function () { - return null; - }; - return $this->valueFactory->create($result); + + return null; } /* @var $product Product */ $product = $value['model']; $url = $product->getUrlModel()->getUrl($product, ['_ignore_category' => true]); - $result = function () use ($url) { - return $url; - }; - - return $this->valueFactory->create($result); + + return $url; } } diff --git a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/EntityIdToId.php b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/EntityIdToId.php index 4c101f68eb4d..5971b223746c 100644 --- a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/EntityIdToId.php +++ b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/EntityIdToId.php @@ -13,7 +13,6 @@ use Magento\Framework\EntityManager\MetadataPool; use Magento\Framework\GraphQl\Config\Element\Field; use Magento\Framework\GraphQl\Query\Resolver\Value; -use Magento\Framework\GraphQl\Query\Resolver\ValueFactory; use Magento\Framework\GraphQl\Query\ResolverInterface; /** @@ -35,12 +34,10 @@ class EntityIdToId implements ResolverInterface /** * @param MetadataPool $metadataPool - * @param ValueFactory $valueFactory */ - public function __construct(MetadataPool $metadataPool, ValueFactory $valueFactory) + public function __construct(MetadataPool $metadataPool) { $this->metadataPool = $metadataPool; - $this->valueFactory = $valueFactory; } /** @@ -52,12 +49,10 @@ public function resolve( ResolveInfo $info, array $value = null, array $args = null - ): Value { + ) { if (!isset($value['model'])) { - $result = function () { - return null; - }; - return $this->valueFactory->create($result); + + return null; } /** @var Product $product */ @@ -67,10 +62,6 @@ public function resolve( $this->metadataPool->getMetadata(ProductInterface::class)->getLinkField() ); - $result = function () use ($productId) { - return $productId; - }; - - return $this->valueFactory->create($result); + return $productId; } } diff --git a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/MediaGalleryEntries.php b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/MediaGalleryEntries.php index ac028eef1fb1..1b70bf0ca577 100644 --- a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/MediaGalleryEntries.php +++ b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/MediaGalleryEntries.php @@ -11,7 +11,6 @@ use Magento\Catalog\Model\Product; use Magento\Framework\GraphQl\Config\Element\Field; use Magento\Framework\GraphQl\Query\Resolver\Value; -use Magento\Framework\GraphQl\Query\Resolver\ValueFactory; use Magento\Framework\GraphQl\Query\ResolverInterface; /** @@ -19,19 +18,6 @@ */ class MediaGalleryEntries implements ResolverInterface { - /** - * @var ValueFactory - */ - private $valueFactory; - - /** - * @param ValueFactory $valueFactory - */ - public function __construct(ValueFactory $valueFactory) - { - $this->valueFactory = $valueFactory; - } - /** * Format product's media gallery entry data to conform to GraphQL schema * @@ -43,12 +29,10 @@ public function resolve( ResolveInfo $info, array $value = null, array $args = null - ): Value { + ){ if (!isset($value['model'])) { - $result = function () { - return null; - }; - return $this->valueFactory->create($result); + + return null; } /** @var Product $product */ @@ -65,10 +49,6 @@ public function resolve( } } - $result = function () use ($mediaGalleryEntries) { - return $mediaGalleryEntries; - }; - - return $this->valueFactory->create($result); + return $mediaGalleryEntries; } } diff --git a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/NewFromTo.php b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/NewFromTo.php index 34fb58b97b15..b6a96fe538ea 100644 --- a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/NewFromTo.php +++ b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/NewFromTo.php @@ -11,7 +11,6 @@ use Magento\Catalog\Model\Product; use Magento\Framework\GraphQl\Config\Element\Field; use Magento\Framework\GraphQl\Query\Resolver\Value; -use Magento\Framework\GraphQl\Query\Resolver\ValueFactory; use Magento\Framework\GraphQl\Query\ResolverInterface; /** @@ -19,19 +18,6 @@ */ class NewFromTo implements ResolverInterface { - /** - * @var ValueFactory - */ - private $valueFactory; - - /** - * @param ValueFactory $valueFactory - */ - public function __construct(ValueFactory $valueFactory) - { - $this->valueFactory = $valueFactory; - } - /** * Transfer data from legacy news_from_date and news_to_date to new names corespondent fields * @@ -43,12 +29,9 @@ public function resolve( ResolveInfo $info, array $value = null, array $args = null - ): Value { + ) { if (!isset($value['model'])) { - $result = function () { - return null; - }; - return $this->valueFactory->create($result); + return null; } /** @var Product $product */ @@ -60,10 +43,6 @@ public function resolve( $data = $product->getData($attributeName); } - $result = function () use ($data) { - return $data; - }; - - return $this->valueFactory->create($result); + return $data; } } diff --git a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/Options.php b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/Options.php index 8e06877452ff..2fbc09a6528c 100644 --- a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/Options.php +++ b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/Options.php @@ -12,7 +12,6 @@ use Magento\Catalog\Model\Product\Option; use Magento\Framework\GraphQl\Config\Element\Field; use Magento\Framework\GraphQl\Query\Resolver\Value; -use Magento\Framework\GraphQl\Query\Resolver\ValueFactory; use Magento\Framework\GraphQl\Query\ResolverInterface; /** @@ -20,19 +19,6 @@ */ class Options implements ResolverInterface { - /** - * @var ValueFactory - */ - private $valueFactory; - - /** - * @param ValueFactory $valueFactory - */ - public function __construct(ValueFactory $valueFactory) - { - $this->valueFactory = $valueFactory; - } - /** * Format product's option data to conform to GraphQL schema * @@ -44,12 +30,10 @@ public function resolve( ResolveInfo $info, array $value = null, array $args = null - ): Value { + ) { if (!isset($value['model'])) { - $result = function () { - return null; - }; - return $this->valueFactory->create($result); + + return null; } /** @var Product $product */ @@ -80,10 +64,6 @@ public function resolve( } } - $result = function () use ($options) { - return $options; - }; - - return $this->valueFactory->create($result); + return $options; } } diff --git a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/Price.php b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/Price.php index 29b693abc266..2e09d20cb678 100644 --- a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/Price.php +++ b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/Price.php @@ -13,7 +13,6 @@ use Magento\Catalog\Pricing\Price\RegularPrice; use Magento\Framework\GraphQl\Config\Element\Field; use Magento\Framework\GraphQl\Query\Resolver\Value; -use Magento\Framework\GraphQl\Query\Resolver\ValueFactory; use Magento\Framework\GraphQl\Query\ResolverInterface; use Magento\Framework\Pricing\Adjustment\AdjustmentInterface; use Magento\Framework\Pricing\Amount\AmountInterface; @@ -43,16 +42,13 @@ class Price implements ResolverInterface /** * @param StoreManagerInterface $storeManager * @param PriceInfoFactory $priceInfoFactory - * @param ValueFactory $valueFactory */ public function __construct( StoreManagerInterface $storeManager, - PriceInfoFactory $priceInfoFactory, - ValueFactory $valueFactory + PriceInfoFactory $priceInfoFactory ) { $this->storeManager = $storeManager; $this->priceInfoFactory = $priceInfoFactory; - $this->valueFactory = $valueFactory; } /** @@ -66,12 +62,10 @@ public function resolve( ResolveInfo $info, array $value = null, array $args = null - ): Value { + ) { if (!isset($value['model'])) { - $result = function () { - return null; - }; - return $this->valueFactory->create($result); + + return null; } /** @var Product $product */ @@ -90,11 +84,7 @@ public function resolve( 'maximalPrice' => $this->createAdjustmentsArray($priceInfo->getAdjustments(), $maximalPriceAmount) ]; - $result = function () use ($prices) { - return $prices; - }; - - return $this->valueFactory->create($result); + return $prices; } /** diff --git a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/ProductLinks.php b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/ProductLinks.php index 181371f16d3a..c64fe1d4693f 100644 --- a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/ProductLinks.php +++ b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/ProductLinks.php @@ -12,7 +12,6 @@ use Magento\Catalog\Model\ProductLink\Link; use Magento\Framework\GraphQl\Config\Element\Field; use Magento\Framework\GraphQl\Query\Resolver\Value; -use Magento\Framework\GraphQl\Query\Resolver\ValueFactory; use Magento\Framework\GraphQl\Query\ResolverInterface; /** @@ -27,19 +26,6 @@ class ProductLinks implements ResolverInterface */ private $linkTypes = ['related', 'upsell', 'crosssell']; - /** - * @var ValueFactory - */ - private $valueFactory; - - /** - * @param ValueFactory $valueFactory - */ - public function __construct(ValueFactory $valueFactory) - { - $this->valueFactory = $valueFactory; - } - /** * Format product links data to conform to GraphQL schema * @@ -51,12 +37,10 @@ public function resolve( ResolveInfo $info, array $value = null, array $args = null - ): Value { + ){ if (!isset($value['model'])) { - $result = function () { - return null; - }; - return $this->valueFactory->create($result); + + return null; } /** @var Product $product */ @@ -73,10 +57,6 @@ public function resolve( } } - $result = function () use ($links) { - return $links; - }; - - return $this->valueFactory->create($result); + return $links; } } diff --git a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/TierPrices.php b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/TierPrices.php index 0b7811d4f743..42e6187a94ee 100644 --- a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/TierPrices.php +++ b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/TierPrices.php @@ -12,7 +12,6 @@ use Magento\Catalog\Model\Product\TierPrice; use Magento\Framework\GraphQl\Config\Element\Field; use Magento\Framework\GraphQl\Query\Resolver\Value; -use Magento\Framework\GraphQl\Query\Resolver\ValueFactory; use Magento\Framework\GraphQl\Query\ResolverInterface; /** @@ -22,19 +21,6 @@ */ class TierPrices implements ResolverInterface { - /** - * @var ValueFactory - */ - private $valueFactory; - - /** - * @param ValueFactory $valueFactory - */ - public function __construct(ValueFactory $valueFactory) - { - $this->valueFactory = $valueFactory; - } - /** * Format product's tier price data to conform to GraphQL schema * @@ -46,12 +32,10 @@ public function resolve( ResolveInfo $info, array $value = null, array $args = null - ): Value { + ){ if (!isset($value['model'])) { - $result = function () { - return null; - }; - return $this->valueFactory->create($result); + + return null; } /** @var Product $product */ @@ -66,10 +50,6 @@ public function resolve( } } - $result = function () use ($tierPrices) { - return $tierPrices; - }; - - return $this->valueFactory->create($result); + return $tierPrices; } } diff --git a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/Websites.php b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/Websites.php index 867f1fa0d0b0..76ecce4c732d 100644 --- a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/Websites.php +++ b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/Websites.php @@ -45,7 +45,7 @@ public function __construct( /** * {@inheritDoc} */ - public function resolve(Field $field, $context, ResolveInfo $info, array $value = null, array $args = null) : Value + public function resolve(Field $field, $context, ResolveInfo $info, array $value = null, array $args = null) { if (!isset($value['entity_id'])) { $result = function () { diff --git a/app/code/Magento/CatalogGraphQl/Model/Resolver/Products.php b/app/code/Magento/CatalogGraphQl/Model/Resolver/Products.php index cc791ce780c1..ab9a54e73a04 100644 --- a/app/code/Magento/CatalogGraphQl/Model/Resolver/Products.php +++ b/app/code/Magento/CatalogGraphQl/Model/Resolver/Products.php @@ -15,7 +15,6 @@ use Magento\Framework\GraphQl\Query\Resolver\Argument\SearchCriteria\Builder; use Magento\Framework\GraphQl\Query\Resolver\Argument\SearchCriteria\SearchFilter; use Magento\Framework\GraphQl\Query\Resolver\Value; -use Magento\Framework\GraphQl\Query\Resolver\ValueFactory; use Magento\Framework\GraphQl\Query\ResolverInterface; use Magento\Catalog\Model\Layer\Resolver; @@ -44,11 +43,6 @@ class Products implements ResolverInterface */ private $searchFilter; - /** - * @var ValueFactory - */ - private $valueFactory; - /** * @var Layer\DataProvider\Filters */ @@ -58,21 +52,18 @@ class Products implements ResolverInterface * @param Builder $searchCriteriaBuilder * @param Search $searchQuery * @param Filter $filterQuery - * @param ValueFactory $valueFactory */ public function __construct( Builder $searchCriteriaBuilder, Search $searchQuery, Filter $filterQuery, SearchFilter $searchFilter, - ValueFactory $valueFactory, \Magento\CatalogGraphQl\Model\Resolver\Layer\DataProvider\Filters $filtersDataProvider ) { $this->searchCriteriaBuilder = $searchCriteriaBuilder; $this->searchQuery = $searchQuery; $this->filterQuery = $filterQuery; $this->searchFilter = $searchFilter; - $this->valueFactory = $valueFactory; $this->filtersDataProvider = $filtersDataProvider; } @@ -85,7 +76,7 @@ public function resolve( ResolveInfo $info, array $value = null, array $args = null - ) : Value { + ) { $searchCriteria = $this->searchCriteriaBuilder->build($field->getName(), $args); $searchCriteria->setCurrentPage($args['currentPage']); $searchCriteria->setPageSize($args['pageSize']); @@ -128,10 +119,6 @@ public function resolve( 'filters' => $this->filtersDataProvider->getData($layerType) ]; - $result = function () use ($data) { - return $data; - }; - - return $this->valueFactory->create($result); + return $data; } } diff --git a/app/code/Magento/ConfigurableProductGraphQl/Model/Resolver/ConfigurableVariant.php b/app/code/Magento/ConfigurableProductGraphQl/Model/Resolver/ConfigurableVariant.php index e63c75d50032..e6ad4528eaec 100644 --- a/app/code/Magento/ConfigurableProductGraphQl/Model/Resolver/ConfigurableVariant.php +++ b/app/code/Magento/ConfigurableProductGraphQl/Model/Resolver/ConfigurableVariant.php @@ -76,7 +76,7 @@ public function __construct( * * {@inheritDoc} */ - public function resolve(Field $field, $context, ResolveInfo $info, array $value = null, array $args = null) : Value + public function resolve(Field $field, $context, ResolveInfo $info, array $value = null, array $args = null) { $linkField = $this->metadataPool->getMetadata(ProductInterface::class)->getLinkField(); if ($value['type_id'] !== Type::TYPE_CODE || !isset($value[$linkField])) { diff --git a/app/code/Magento/ConfigurableProductGraphQl/Model/Resolver/Options.php b/app/code/Magento/ConfigurableProductGraphQl/Model/Resolver/Options.php index 53912f7029e5..5195cfde04da 100644 --- a/app/code/Magento/ConfigurableProductGraphQl/Model/Resolver/Options.php +++ b/app/code/Magento/ConfigurableProductGraphQl/Model/Resolver/Options.php @@ -57,7 +57,7 @@ public function __construct( * * {@inheritDoc} */ - public function resolve(Field $field, $context, ResolveInfo $info, array $value = null, array $args = null) : Value + public function resolve(Field $field, $context, ResolveInfo $info, array $value = null, array $args = null) { $linkField = $this->metadataPool->getMetadata(ProductInterface::class)->getLinkField(); if ($value['type_id'] !== Type::TYPE_CODE || !isset($value[$linkField])) { diff --git a/app/code/Magento/ConfigurableProductGraphQl/Model/Resolver/Variant/Attributes.php b/app/code/Magento/ConfigurableProductGraphQl/Model/Resolver/Variant/Attributes.php index 9c275de3f096..91bb1dc40602 100644 --- a/app/code/Magento/ConfigurableProductGraphQl/Model/Resolver/Variant/Attributes.php +++ b/app/code/Magento/ConfigurableProductGraphQl/Model/Resolver/Variant/Attributes.php @@ -42,7 +42,7 @@ public function resolve( ResolveInfo $info, array $value = null, array $args = null - ): Value { + ) { if (!isset($value['options']) || !isset($value['product'])) { $result = function () { return null; diff --git a/app/code/Magento/CustomerGraphQl/Model/Resolver/Customer.php b/app/code/Magento/CustomerGraphQl/Model/Resolver/Customer.php index 1cf85381d346..af1dad1c4a22 100644 --- a/app/code/Magento/CustomerGraphQl/Model/Resolver/Customer.php +++ b/app/code/Magento/CustomerGraphQl/Model/Resolver/Customer.php @@ -55,7 +55,7 @@ public function resolve( ResolveInfo $info, array $value = null, array $args = null - ) : Value { + ) { /** @var ContextInterface $context */ if ((!$context->getUserId()) || $context->getUserType() == UserContextInterface::USER_TYPE_GUEST) { throw new GraphQlAuthorizationException( diff --git a/app/code/Magento/DownloadableGraphQl/Model/Resolver/Product/DownloadableOptions.php b/app/code/Magento/DownloadableGraphQl/Model/Resolver/Product/DownloadableOptions.php index cda853a16afa..f18ae0d84381 100644 --- a/app/code/Magento/DownloadableGraphQl/Model/Resolver/Product/DownloadableOptions.php +++ b/app/code/Magento/DownloadableGraphQl/Model/Resolver/Product/DownloadableOptions.php @@ -17,7 +17,6 @@ use Magento\Framework\GraphQl\Config\Element\Field; use Magento\Framework\GraphQl\Query\EnumLookup; use Magento\Framework\GraphQl\Query\Resolver\Value; -use Magento\Framework\GraphQl\Query\Resolver\ValueFactory; use Magento\Framework\GraphQl\Query\ResolverInterface; /** @@ -47,30 +46,22 @@ class DownloadableOptions implements ResolverInterface */ private $linkCollection; - /** - * @var ValueFactory - */ - private $valueFactory; - /** * @param EnumLookup $enumLookup * @param DownloadableHelper $downloadableHelper * @param SampleCollection $sampleCollection * @param LinkCollection $linkCollection - * @param ValueFactory $valueFactory */ public function __construct( EnumLookup $enumLookup, DownloadableHelper $downloadableHelper, SampleCollection $sampleCollection, - LinkCollection $linkCollection, - ValueFactory $valueFactory + LinkCollection $linkCollection ) { $this->enumLookup = $enumLookup; $this->downloadableHelper = $downloadableHelper; $this->sampleCollection = $sampleCollection; $this->linkCollection = $linkCollection; - $this->valueFactory = $valueFactory; } /** @@ -84,12 +75,10 @@ public function resolve( ResolveInfo $info, array $value = null, array $args = null - ): Value { + ) { if (!isset($value['model'])) { - $result = function () { - return null; - }; - return $this->valueFactory->create($result); + + return null; } /** @var Product $product */ @@ -113,11 +102,7 @@ public function resolve( } } - $result = function () use ($data) { - return $data; - }; - - return $this->valueFactory->create($result); + return $data; } /** diff --git a/app/code/Magento/EavGraphQl/Model/Resolver/CustomAttributeMetadata.php b/app/code/Magento/EavGraphQl/Model/Resolver/CustomAttributeMetadata.php index 89d2ab9f9d05..144bc8ccad59 100644 --- a/app/code/Magento/EavGraphQl/Model/Resolver/CustomAttributeMetadata.php +++ b/app/code/Magento/EavGraphQl/Model/Resolver/CustomAttributeMetadata.php @@ -15,7 +15,6 @@ use Magento\Framework\GraphQl\Exception\GraphQlInputException; use Magento\Framework\GraphQl\Exception\GraphQlNoSuchEntityException; use Magento\Framework\GraphQl\Query\Resolver\Value; -use Magento\Framework\GraphQl\Query\Resolver\ValueFactory; use Magento\Framework\GraphQl\Query\ResolverInterface; /** @@ -28,16 +27,12 @@ class CustomAttributeMetadata implements ResolverInterface */ private $type; - private $valueFactory; - /** * @param Type $type - * @param ValueFactory $valueFactory */ - public function __construct(Type $type, ValueFactory $valueFactory) + public function __construct(Type $type) { $this->type = $type; - $this->valueFactory = $valueFactory; } /** @@ -49,7 +44,7 @@ public function resolve( ResolveInfo $info, array $value = null, array $args = null - ) : Value { + ) { $attributes['items'] = null; $attributeInputs = $args['attributes']; foreach ($attributeInputs as $attribute) { @@ -88,11 +83,7 @@ public function resolve( ]; } - $result = function () use ($attributes) { - return $attributes; - }; - - return $this->valueFactory->create($result); + return $attributes; } /** diff --git a/app/code/Magento/GroupedProductGraphQl/Model/Resolver/GroupedItems.php b/app/code/Magento/GroupedProductGraphQl/Model/Resolver/GroupedItems.php index fafbbcf436e6..d8f4069559fd 100644 --- a/app/code/Magento/GroupedProductGraphQl/Model/Resolver/GroupedItems.php +++ b/app/code/Magento/GroupedProductGraphQl/Model/Resolver/GroupedItems.php @@ -11,7 +11,6 @@ use Magento\CatalogGraphQl\Model\Resolver\Products\DataProvider\Deferred\Product; use Magento\Framework\GraphQl\Config\Element\Field; use Magento\Framework\GraphQl\Query\Resolver\Value; -use Magento\Framework\GraphQl\Query\Resolver\ValueFactory; use Magento\Framework\GraphQl\Query\ResolverInterface; use Magento\GroupedProduct\Model\Product\Initialization\Helper\ProductLinks\Plugin\Grouped; @@ -20,25 +19,17 @@ */ class GroupedItems implements ResolverInterface { - /** - * @var ValueFactory - */ - private $valueFactory; - /** * @var Product */ private $productResolver; /** - * @param ValueFactory $valueFactory * @param Product $productResolver */ public function __construct( - ValueFactory $valueFactory, Product $productResolver ) { - $this->valueFactory = $valueFactory; $this->productResolver = $productResolver; } @@ -51,12 +42,10 @@ public function resolve( ResolveInfo $info, array $value = null, array $args = null - ): Value { + ) { if (!isset($value['model'])) { - $result = function () { - return null; - }; - return $this->valueFactory->create($result); + + return null; } $productModel = $value['model']; @@ -73,10 +62,6 @@ public function resolve( ]; } - $result = function () use ($data) { - return $data; - }; - - return $this->valueFactory->create($result); + return $data; } } diff --git a/app/code/Magento/StoreGraphQl/Model/Resolver/StoreConfigResolver.php b/app/code/Magento/StoreGraphQl/Model/Resolver/StoreConfigResolver.php index 8e5bf0120b8b..9533296dc359 100644 --- a/app/code/Magento/StoreGraphQl/Model/Resolver/StoreConfigResolver.php +++ b/app/code/Magento/StoreGraphQl/Model/Resolver/StoreConfigResolver.php @@ -50,7 +50,7 @@ public function resolve( ResolveInfo $info, array $value = null, array $args = null - ) : Value { + ) { $storeConfigData = $this->storeConfigDataProvider->getStoreConfig(); From fbff94b906644cd203cee6afc56e5701ac322702 Mon Sep 17 00:00:00 2001 From: Sourabh Modi Date: Sun, 26 Aug 2018 16:13:19 +0800 Subject: [PATCH 16/31] Modified to allow scalars as resolver return type --- .../Model/Resolver/Category/Breadcrumbs.php | 2 +- .../Model/Resolver/Category/Products.php | 2 +- .../Model/Resolver/Product/CanonicalUrl.php | 2 +- .../config/install-config-mysql.php_1.dist | 30 +++++++++++++++++++ 4 files changed, 33 insertions(+), 3 deletions(-) create mode 100644 dev/tests/api-functional/config/install-config-mysql.php_1.dist diff --git a/app/code/Magento/CatalogGraphQl/Model/Resolver/Category/Breadcrumbs.php b/app/code/Magento/CatalogGraphQl/Model/Resolver/Category/Breadcrumbs.php index 1d2220b96316..0e6bd099d591 100644 --- a/app/code/Magento/CatalogGraphQl/Model/Resolver/Category/Breadcrumbs.php +++ b/app/code/Magento/CatalogGraphQl/Model/Resolver/Category/Breadcrumbs.php @@ -44,7 +44,7 @@ public function __construct( /** * @inheritdoc */ - public function resolve(Field $field, $context, ResolveInfo $info, array $value = null, array $args = null): Value + public function resolve(Field $field, $context, ResolveInfo $info, array $value = null, array $args = null) { if (!isset($value['path'])) { return null; diff --git a/app/code/Magento/CatalogGraphQl/Model/Resolver/Category/Products.php b/app/code/Magento/CatalogGraphQl/Model/Resolver/Category/Products.php index 9ed707289650..fa85c9399d49 100644 --- a/app/code/Magento/CatalogGraphQl/Model/Resolver/Category/Products.php +++ b/app/code/Magento/CatalogGraphQl/Model/Resolver/Category/Products.php @@ -91,6 +91,6 @@ public function resolve( ] ]; - return $result; + return $data; } } diff --git a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/CanonicalUrl.php b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/CanonicalUrl.php index 03b41a1105c0..2a8466401205 100644 --- a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/CanonicalUrl.php +++ b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/CanonicalUrl.php @@ -27,7 +27,7 @@ public function resolve( ResolveInfo $info, array $value = null, array $args = null - ): Value { + ) { if (!isset($value['model'])) { return null; diff --git a/dev/tests/api-functional/config/install-config-mysql.php_1.dist b/dev/tests/api-functional/config/install-config-mysql.php_1.dist new file mode 100644 index 000000000000..04519d6c4777 --- /dev/null +++ b/dev/tests/api-functional/config/install-config-mysql.php_1.dist @@ -0,0 +1,30 @@ + 'en_US', + 'timezone' => 'America/Los_Angeles', + 'currency' => 'USD', + 'db-host' => 'localhost', + 'db-name' => 'magento_functional_tests', + 'db-user' => 'root', + 'db-password' => '', + 'backend-frontname' => 'backend', + 'base-url' => 'http://localhost/', + 'use-secure' => '0', + 'use-rewrites' => '0', + 'admin-lastname' => 'Admin', + 'admin-firstname' => 'Admin', + 'admin-email' => 'admin@example.com', + 'admin-user' => 'admin', + 'admin-password' => '123123q', + 'admin-use-security-key' => '0', + /* PayPal has limitation for order number - 20 characters. 10 digits prefix + 8 digits number is good enough */ + 'sales-order-increment-prefix' => time(), + 'session-save' => 'db', + 'cleanup-database' => true, +]; From d49ef9361d9e50f4e72ab116e26a34474ddf8332 Mon Sep 17 00:00:00 2001 From: Sourabh Modi Date: Sun, 26 Aug 2018 16:18:09 +0800 Subject: [PATCH 17/31] Changes to allow scalars as resolver return type. --- .../config/install-config-mysql.php_1.dist | 30 ------------------- 1 file changed, 30 deletions(-) delete mode 100644 dev/tests/api-functional/config/install-config-mysql.php_1.dist diff --git a/dev/tests/api-functional/config/install-config-mysql.php_1.dist b/dev/tests/api-functional/config/install-config-mysql.php_1.dist deleted file mode 100644 index 04519d6c4777..000000000000 --- a/dev/tests/api-functional/config/install-config-mysql.php_1.dist +++ /dev/null @@ -1,30 +0,0 @@ - 'en_US', - 'timezone' => 'America/Los_Angeles', - 'currency' => 'USD', - 'db-host' => 'localhost', - 'db-name' => 'magento_functional_tests', - 'db-user' => 'root', - 'db-password' => '', - 'backend-frontname' => 'backend', - 'base-url' => 'http://localhost/', - 'use-secure' => '0', - 'use-rewrites' => '0', - 'admin-lastname' => 'Admin', - 'admin-firstname' => 'Admin', - 'admin-email' => 'admin@example.com', - 'admin-user' => 'admin', - 'admin-password' => '123123q', - 'admin-use-security-key' => '0', - /* PayPal has limitation for order number - 20 characters. 10 digits prefix + 8 digits number is good enough */ - 'sales-order-increment-prefix' => time(), - 'session-save' => 'db', - 'cleanup-database' => true, -]; From b2d22d0d1807738f00be61adc465b342983c5820 Mon Sep 17 00:00:00 2001 From: Valeriy Nayda Date: Wed, 5 Sep 2018 12:56:28 +0300 Subject: [PATCH 18/31] GraphQL-152: Allow scalars as resolver return type --- .../Model/Resolver/BundleItemLinks.php | 13 +-- .../Model/Resolver/BundleItems.php | 7 +- .../Model/Resolver/Options/Label.php | 18 ++-- .../Resolver/Product/Fields/DynamicPrice.php | 26 +----- .../Resolver/Product/Fields/DynamicSku.php | 13 +-- .../Resolver/Product/Fields/DynamicWeight.php | 10 +- .../Resolver/Product/Fields/PriceView.php | 10 +- .../Product/Fields/ShipBundleItems.php | 15 +-- .../Model/Resolver/Categories.php | 6 +- .../Model/Resolver/Category/Breadcrumbs.php | 24 ++--- .../Model/Resolver/Category/Products.php | 16 ++-- .../Model/Resolver/Category/SortFields.php | 3 +- .../Model/Resolver/CategoryTree.php | 46 ++++------ .../CatalogGraphQl/Model/Resolver/Product.php | 4 +- .../Model/Resolver/Product/CanonicalUrl.php | 7 +- .../Model/Resolver/Product/EntityIdToId.php | 12 +-- .../Resolver/Product/MediaGalleryEntries.php | 6 +- .../Model/Resolver/Product/NewFromTo.php | 4 +- .../Model/Resolver/Product/Options.php | 5 +- .../Model/Resolver/Product/Price.php | 10 +- .../Model/Resolver/Product/ProductLinks.php | 5 +- .../Model/Resolver/Product/TierPrices.php | 5 +- .../Model/Resolver/Product/Websites.php | 10 +- .../Model/Resolver/Products.php | 3 +- .../Resolver/Product/CanonicalUrlTest.php | 92 ------------------- .../Model/Resolver/ConfigurableVariant.php | 3 +- .../Model/Resolver/Options.php | 5 +- .../Model/Resolver/Variant/Attributes.php | 59 ++++-------- .../Model/Resolver/Customer.php | 19 +--- .../Resolver/Product/DownloadableOptions.php | 5 +- .../Resolver/CustomAttributeMetadata.php | 3 +- .../Model/Resolver/GroupedItems.php | 10 +- .../Store/StoreConfigDataProvider.php | 13 --- .../Model/Resolver/StoreConfigResolver.php | 25 +---- .../Model/Resolver/UrlRewrite.php | 57 +++++------- .../Model/Resolver/Item.php | 26 +----- .../Model/Resolver/IntegerList.php | 30 +----- .../GraphQl/Query/ResolverInterface.php | 4 +- 38 files changed, 161 insertions(+), 468 deletions(-) delete mode 100644 app/code/Magento/CatalogGraphQl/Test/Unit/Model/Resolver/Product/CanonicalUrlTest.php diff --git a/app/code/Magento/BundleGraphQl/Model/Resolver/BundleItemLinks.php b/app/code/Magento/BundleGraphQl/Model/Resolver/BundleItemLinks.php index ca3c391f3de3..bdad27452db1 100644 --- a/app/code/Magento/BundleGraphQl/Model/Resolver/BundleItemLinks.php +++ b/app/code/Magento/BundleGraphQl/Model/Resolver/BundleItemLinks.php @@ -7,15 +7,15 @@ namespace Magento\BundleGraphQl\Model\Resolver; +use Magento\Framework\GraphQl\Exception\GraphQlInputException; use Magento\Framework\GraphQl\Schema\Type\ResolveInfo; use Magento\BundleGraphQl\Model\Resolver\Links\Collection; use Magento\Framework\GraphQl\Config\Element\Field; -use Magento\Framework\GraphQl\Query\Resolver\Value; use Magento\Framework\GraphQl\Query\Resolver\ValueFactory; use Magento\Framework\GraphQl\Query\ResolverInterface; /** - * {@inheritdoc} + * @inheritdoc */ class BundleItemLinks implements ResolverInterface { @@ -38,20 +38,17 @@ public function __construct( ValueFactory $valueFactory ) { $this->linkCollection = $linkCollection; - $this->valueFactory = $valueFactory; } /** - * {@inheritDoc} + * @inheritdoc */ public function resolve(Field $field, $context, ResolveInfo $info, array $value = null, array $args = null) { if (!isset($value['option_id']) || !isset($value['parent_id'])) { - $result = function () { - return null; - }; - return $this->valueFactory->create($result); + throw new GraphQlInputException(__('"option_id" and "parent_id" values should be specified')); } + $this->linkCollection->addIdFilters((int)$value['option_id'], (int)$value['parent_id']); $result = function () use ($value) { return $this->linkCollection->getLinksForOptionId((int)$value['option_id']); diff --git a/app/code/Magento/BundleGraphQl/Model/Resolver/BundleItems.php b/app/code/Magento/BundleGraphQl/Model/Resolver/BundleItems.php index e2a4be11e861..a402ee6d4c29 100644 --- a/app/code/Magento/BundleGraphQl/Model/Resolver/BundleItems.php +++ b/app/code/Magento/BundleGraphQl/Model/Resolver/BundleItems.php @@ -13,12 +13,11 @@ use Magento\Catalog\Api\Data\ProductInterface; use Magento\Framework\EntityManager\MetadataPool; use Magento\Framework\GraphQl\Config\Element\Field; -use Magento\Framework\GraphQl\Query\Resolver\Value; use Magento\Framework\GraphQl\Query\Resolver\ValueFactory; use Magento\Framework\GraphQl\Query\ResolverInterface; /** - * {@inheritdoc} + * @inheritdoc */ class BundleItems implements ResolverInterface { @@ -35,7 +34,7 @@ class BundleItems implements ResolverInterface /** * @var MetadataPool */ - private $metdataPool; + private $metadataPool; /** * @param Collection $bundleOptionCollection @@ -59,7 +58,7 @@ public function __construct( */ public function resolve(Field $field, $context, ResolveInfo $info, array $value = null, array $args = null) { - $linkField = $this->metdataPool->getMetadata(ProductInterface::class)->getLinkField(); + $linkField = $this->metadataPool->getMetadata(ProductInterface::class)->getLinkField(); if ($value['type_id'] !== Type::TYPE_CODE || !isset($value[$linkField]) || !isset($value[ProductInterface::SKU]) diff --git a/app/code/Magento/BundleGraphQl/Model/Resolver/Options/Label.php b/app/code/Magento/BundleGraphQl/Model/Resolver/Options/Label.php index 9a1adf2fd4f0..bcddd5d08462 100644 --- a/app/code/Magento/BundleGraphQl/Model/Resolver/Options/Label.php +++ b/app/code/Magento/BundleGraphQl/Model/Resolver/Options/Label.php @@ -7,10 +7,10 @@ namespace Magento\BundleGraphQl\Model\Resolver\Options; +use Magento\Framework\GraphQl\Exception\GraphQlInputException; use Magento\Framework\GraphQl\Schema\Type\ResolveInfo; -use Magento\CatalogGraphQl\Model\Resolver\Products\DataProvider\Deferred\Product; +use Magento\CatalogGraphQl\Model\Resolver\Products\DataProvider\Deferred\Product as ProductDataProvider; use Magento\Framework\GraphQl\Config\Element\Field; -use Magento\Framework\GraphQl\Query\Resolver\Value; use Magento\Framework\GraphQl\Query\Resolver\ValueFactory; use Magento\Framework\GraphQl\Query\ResolverInterface; @@ -19,29 +19,28 @@ */ class Label implements ResolverInterface { - /** * @var ValueFactory */ private $valueFactory; /** - * @var Product + * @var ProductDataProvider */ private $product; /** * @param ValueFactory $valueFactory - * @param Product $product + * @param ProductDataProvider $product */ - public function __construct(ValueFactory $valueFactory, Product $product) + public function __construct(ValueFactory $valueFactory, ProductDataProvider $product) { $this->valueFactory = $valueFactory; $this->product = $product; } /** - * @inheritDoc + * @inheritdoc */ public function resolve( Field $field, @@ -51,10 +50,7 @@ public function resolve( array $args = null ) { if (!isset($value['sku'])) { - $result = function () { - return null; - }; - return $this->valueFactory->create($result); + throw new GraphQlInputException(__('"sku" value should be specified')); } $this->product->addProductSku($value['sku']); diff --git a/app/code/Magento/BundleGraphQl/Model/Resolver/Product/Fields/DynamicPrice.php b/app/code/Magento/BundleGraphQl/Model/Resolver/Product/Fields/DynamicPrice.php index b2005b6e6e91..978e1c455fc0 100644 --- a/app/code/Magento/BundleGraphQl/Model/Resolver/Product/Fields/DynamicPrice.php +++ b/app/code/Magento/BundleGraphQl/Model/Resolver/Product/Fields/DynamicPrice.php @@ -5,36 +5,20 @@ */ declare(strict_types=1); - namespace Magento\BundleGraphQl\Model\Resolver\Product\Fields; use Magento\Framework\GraphQl\Schema\Type\ResolveInfo; use Magento\Bundle\Model\Product\Type as Bundle; use Magento\Framework\GraphQl\Config\Element\Field; -use Magento\Framework\GraphQl\Query\Resolver\Value; -use Magento\Framework\GraphQl\Query\Resolver\ValueFactory; use Magento\Framework\GraphQl\Query\ResolverInterface; /** - * {@inheritdoc} + * @inheritdoc */ class DynamicPrice implements ResolverInterface { /** - * @var ValueFactory - */ - private $valueFactory; - - /** - * @param ValueFactory $valueFactory - */ - public function __construct(ValueFactory $valueFactory) - { - $this->valueFactory = $valueFactory; - } - - /** - * {@inheritdoc} + * @inheritdoc */ public function resolve( Field $field, @@ -48,10 +32,6 @@ public function resolve( $result = isset($value['price_type']) ? !$value['price_type'] : null; } - return $this->valueFactory->create( - function () use ($result) { - return $result; - } - ); + return $result; } } diff --git a/app/code/Magento/BundleGraphQl/Model/Resolver/Product/Fields/DynamicSku.php b/app/code/Magento/BundleGraphQl/Model/Resolver/Product/Fields/DynamicSku.php index 3d90e6bb2b60..8aa63e1f8780 100644 --- a/app/code/Magento/BundleGraphQl/Model/Resolver/Product/Fields/DynamicSku.php +++ b/app/code/Magento/BundleGraphQl/Model/Resolver/Product/Fields/DynamicSku.php @@ -5,34 +5,29 @@ */ declare(strict_types=1); - namespace Magento\BundleGraphQl\Model\Resolver\Product\Fields; use Magento\Framework\GraphQl\Schema\Type\ResolveInfo; use Magento\Bundle\Model\Product\Type as Bundle; use Magento\Framework\GraphQl\Config\Element\Field; -use Magento\Framework\GraphQl\Query\Resolver\Value; use Magento\Framework\GraphQl\Query\ResolverInterface; /** - * {@inheritdoc} + * @inheritdoc */ class DynamicSku implements ResolverInterface { - /** - * {@inheritdoc} + * @inheritdoc */ -public function resolve( + public function resolve( Field $field, $context, ResolveInfo $info, array $value = null, array $args = null ){ - $result = function () { - return null; - }; + $result = null; if ($value['type_id'] === Bundle::TYPE_CODE) { $result = isset($value['sku_type']) ? !$value['sku_type'] : null; } diff --git a/app/code/Magento/BundleGraphQl/Model/Resolver/Product/Fields/DynamicWeight.php b/app/code/Magento/BundleGraphQl/Model/Resolver/Product/Fields/DynamicWeight.php index 0d5fd730906d..a4bb8ef64fc9 100644 --- a/app/code/Magento/BundleGraphQl/Model/Resolver/Product/Fields/DynamicWeight.php +++ b/app/code/Magento/BundleGraphQl/Model/Resolver/Product/Fields/DynamicWeight.php @@ -5,22 +5,20 @@ */ declare(strict_types=1); - namespace Magento\BundleGraphQl\Model\Resolver\Product\Fields; use Magento\Framework\GraphQl\Schema\Type\ResolveInfo; use Magento\Bundle\Model\Product\Type as Bundle; use Magento\Framework\GraphQl\Config\Element\Field; -use Magento\Framework\GraphQl\Query\Resolver\Value; use Magento\Framework\GraphQl\Query\ResolverInterface; /** - * {@inheritdoc} + * @inheritdoc */ class DynamicWeight implements ResolverInterface { /** - * {@inheritdoc} + * @inheritdoc */ public function resolve( Field $field, @@ -29,9 +27,7 @@ public function resolve( array $value = null, array $args = null ) { - $result = function () { - return null; - }; + $result = null; if ($value['type_id'] === Bundle::TYPE_CODE) { $result = isset($value['weight_type']) ? !$value['weight_type'] : null; } diff --git a/app/code/Magento/BundleGraphQl/Model/Resolver/Product/Fields/PriceView.php b/app/code/Magento/BundleGraphQl/Model/Resolver/Product/Fields/PriceView.php index 783ea66eaa24..b7351b09d437 100644 --- a/app/code/Magento/BundleGraphQl/Model/Resolver/Product/Fields/PriceView.php +++ b/app/code/Magento/BundleGraphQl/Model/Resolver/Product/Fields/PriceView.php @@ -5,18 +5,16 @@ */ declare(strict_types=1); - namespace Magento\BundleGraphQl\Model\Resolver\Product\Fields; use Magento\Framework\GraphQl\Schema\Type\ResolveInfo; use Magento\Bundle\Model\Product\Type as Bundle; use Magento\Framework\GraphQl\Config\Element\Field; use Magento\Framework\GraphQl\Query\EnumLookup; -use Magento\Framework\GraphQl\Query\Resolver\Value; use Magento\Framework\GraphQl\Query\ResolverInterface; /** - * {@inheritdoc} + * @inheritdoc */ class PriceView implements ResolverInterface { @@ -34,7 +32,7 @@ public function __construct(EnumLookup $enumLookup) } /** - * {@inheritdoc} + * @inheritdoc */ public function resolve( Field $field, @@ -43,9 +41,7 @@ public function resolve( array $value = null, array $args = null ) { - $result = function () { - return null; - }; + $result = null; if ($value['type_id'] === Bundle::TYPE_CODE) { $result = isset($value['price_view']) ? $this->enumLookup->getEnumValueFromField('PriceViewEnum', $value['price_view']) : null; diff --git a/app/code/Magento/BundleGraphQl/Model/Resolver/Product/Fields/ShipBundleItems.php b/app/code/Magento/BundleGraphQl/Model/Resolver/Product/Fields/ShipBundleItems.php index 43bad2c4acb9..6babf6520e10 100644 --- a/app/code/Magento/BundleGraphQl/Model/Resolver/Product/Fields/ShipBundleItems.php +++ b/app/code/Magento/BundleGraphQl/Model/Resolver/Product/Fields/ShipBundleItems.php @@ -5,18 +5,16 @@ */ declare(strict_types=1); - namespace Magento\BundleGraphQl\Model\Resolver\Product\Fields; use Magento\Framework\GraphQl\Schema\Type\ResolveInfo; use Magento\Bundle\Model\Product\Type as Bundle; use Magento\Framework\GraphQl\Config\Element\Field; use Magento\Framework\GraphQl\Query\EnumLookup; -use Magento\Framework\GraphQl\Query\Resolver\Value; use Magento\Framework\GraphQl\Query\ResolverInterface; /** - * {@inheritdoc} + * @inheritdoc */ class ShipBundleItems implements ResolverInterface { @@ -34,7 +32,7 @@ public function __construct(EnumLookup $enumLookup) } /** - * {@inheritdoc} + * @inheritdoc */ public function resolve( Field $field, @@ -43,13 +41,8 @@ public function resolve( array $value = null, array $args = null ) { - $result = function () { - return null; - }; - if ($value['type_id'] === Bundle::TYPE_CODE) { - $result = isset($value['shipment_type']) - ? $this->enumLookup->getEnumValueFromField('ShipBundleItemsEnum', $value['shipment_type']) : null; - } + $result = isset($value['shipment_type']) && $value['type_id'] === Bundle::TYPE_CODE + ? $this->enumLookup->getEnumValueFromField('ShipBundleItemsEnum', $value['shipment_type']) : null; return $result; } diff --git a/app/code/Magento/CatalogGraphQl/Model/Resolver/Categories.php b/app/code/Magento/CatalogGraphQl/Model/Resolver/Categories.php index d261173b78a5..5ab9e0ad273e 100644 --- a/app/code/Magento/CatalogGraphQl/Model/Resolver/Categories.php +++ b/app/code/Magento/CatalogGraphQl/Model/Resolver/Categories.php @@ -7,6 +7,7 @@ namespace Magento\CatalogGraphQl\Model\Resolver; +use Magento\Framework\GraphQl\Exception\GraphQlInputException; use Magento\Framework\GraphQl\Schema\Type\ResolveInfo; use Magento\Catalog\Api\Data\CategoryInterface; use Magento\Catalog\Model\ResourceModel\Category\Collection; @@ -15,7 +16,6 @@ use Magento\CatalogGraphQl\Model\Resolver\Products\DataProvider\CustomAttributesFlattener; use Magento\Framework\GraphQl\Config\Element\Field; use Magento\Framework\GraphQl\Query\ResolverInterface; -use Magento\Framework\GraphQl\Query\Resolver\Value; use Magento\Framework\GraphQl\Query\Resolver\ValueFactory; use Magento\Framework\Reflection\DataObjectProcessor; @@ -84,6 +84,10 @@ public function __construct( */ public function resolve(Field $field, $context, ResolveInfo $info, array $value = null, array $args = null) { + if (!isset($value['model'])) { + throw new GraphQlInputException(__('"model" value should be specified')); + } + /** @var \Magento\Catalog\Model\Product $product */ $product = $value['model']; $categoryIds = $product->getCategoryIds(); diff --git a/app/code/Magento/CatalogGraphQl/Model/Resolver/Category/Breadcrumbs.php b/app/code/Magento/CatalogGraphQl/Model/Resolver/Category/Breadcrumbs.php index 0e6bd099d591..9e966a060e5c 100644 --- a/app/code/Magento/CatalogGraphQl/Model/Resolver/Category/Breadcrumbs.php +++ b/app/code/Magento/CatalogGraphQl/Model/Resolver/Category/Breadcrumbs.php @@ -7,12 +7,11 @@ namespace Magento\CatalogGraphQl\Model\Resolver\Category; -use \Magento\CatalogGraphQl\Model\Resolver\Category\DataProvider\Breadcrumbs as BreadcrumbsDataProvider; +use Magento\CatalogGraphQl\Model\Resolver\Category\DataProvider\Breadcrumbs as BreadcrumbsDataProvider; +use Magento\Framework\GraphQl\Exception\GraphQlInputException; use Magento\Framework\GraphQl\Schema\Type\ResolveInfo; use Magento\Framework\GraphQl\Config\Element\Field; use Magento\Framework\GraphQl\Query\ResolverInterface; -use Magento\Framework\GraphQl\Query\Resolver\Value; -use Magento\Framework\GraphQl\Query\Resolver\ValueFactory; /** * Retrieves breadcrumbs @@ -24,21 +23,13 @@ class Breadcrumbs implements ResolverInterface */ private $breadcrumbsDataProvider; - /** - * @var ValueFactory - */ - private $valueFactory; - /** * @param BreadcrumbsDataProvider $breadcrumbsDataProvider - * @param ValueFactory $valueFactory */ public function __construct( - BreadcrumbsDataProvider $breadcrumbsDataProvider, - ValueFactory $valueFactory + BreadcrumbsDataProvider $breadcrumbsDataProvider ) { $this->breadcrumbsDataProvider = $breadcrumbsDataProvider; - $this->valueFactory = $valueFactory; } /** @@ -47,13 +38,10 @@ public function __construct( public function resolve(Field $field, $context, ResolveInfo $info, array $value = null, array $args = null) { if (!isset($value['path'])) { - return null; + throw new GraphQlInputException(__('"path" value should be specified')); } - $result = function () use ($value) { - $breadcrumbsData = $this->breadcrumbsDataProvider->getData($value['path']); - return count($breadcrumbsData) ? $breadcrumbsData : null; - }; - return $this->valueFactory->create($result); + $breadcrumbsData = $this->breadcrumbsDataProvider->getData($value['path']); + return count($breadcrumbsData) ? $breadcrumbsData : null; } } diff --git a/app/code/Magento/CatalogGraphQl/Model/Resolver/Category/Products.php b/app/code/Magento/CatalogGraphQl/Model/Resolver/Category/Products.php index fa85c9399d49..557c7e08ff43 100644 --- a/app/code/Magento/CatalogGraphQl/Model/Resolver/Category/Products.php +++ b/app/code/Magento/CatalogGraphQl/Model/Resolver/Category/Products.php @@ -9,7 +9,6 @@ use Magento\Catalog\Api\ProductRepositoryInterface; use Magento\Framework\GraphQl\Config\Element\Field; -use Magento\Framework\GraphQl\Query\Resolver\Value; use Magento\Framework\GraphQl\Query\ResolverInterface; use Magento\Framework\GraphQl\Schema\Type\ResolveInfo; use Magento\Framework\GraphQl\Query\Resolver\Argument\SearchCriteria\Builder; @@ -21,13 +20,19 @@ */ class Products implements ResolverInterface { - /** @var \Magento\Catalog\Api\ProductRepositoryInterface */ + /** + * @var \Magento\Catalog\Api\ProductRepositoryInterface + */ private $productRepository; - /** @var Builder */ + /** + * @var Builder + */ private $searchCriteriaBuilder; - /** @var Filter */ + /** + * @var Filter + */ private $filterQuery; /** @@ -46,7 +51,7 @@ public function __construct( } /** - * {@inheritdoc} + * @inheritdoc */ public function resolve( Field $field, @@ -90,7 +95,6 @@ public function resolve( 'current_page' => $currentPage ] ]; - return $data; } } diff --git a/app/code/Magento/CatalogGraphQl/Model/Resolver/Category/SortFields.php b/app/code/Magento/CatalogGraphQl/Model/Resolver/Category/SortFields.php index 7e94b5e18c02..cb5553bb0370 100644 --- a/app/code/Magento/CatalogGraphQl/Model/Resolver/Category/SortFields.php +++ b/app/code/Magento/CatalogGraphQl/Model/Resolver/Category/SortFields.php @@ -9,7 +9,6 @@ use Magento\Framework\GraphQl\Schema\Type\ResolveInfo; use Magento\Framework\GraphQl\Config\Element\Field; -use Magento\Framework\GraphQl\Query\Resolver\Value; use Magento\Framework\GraphQl\Query\ResolverInterface; /** @@ -48,7 +47,7 @@ public function __construct( } /** - * {@inheritDoc} + * @inheritdoc */ public function resolve(Field $field, $context, ResolveInfo $info, array $value = null, array $args = null) { diff --git a/app/code/Magento/CatalogGraphQl/Model/Resolver/CategoryTree.php b/app/code/Magento/CatalogGraphQl/Model/Resolver/CategoryTree.php index dba6ff5f4a14..6d9f5e33dd55 100644 --- a/app/code/Magento/CatalogGraphQl/Model/Resolver/CategoryTree.php +++ b/app/code/Magento/CatalogGraphQl/Model/Resolver/CategoryTree.php @@ -11,8 +11,6 @@ use Magento\Framework\GraphQl\Config\Element\Field; use Magento\Framework\GraphQl\Exception\GraphQlInputException; use Magento\Framework\GraphQl\Query\ResolverInterface; -use Magento\Framework\GraphQl\Query\Resolver\Value; -use Magento\Framework\GraphQl\Query\Resolver\ValueFactory; /** * Category tree field resolver, used for GraphQL request processing. @@ -25,60 +23,48 @@ class CategoryTree implements ResolverInterface const CATEGORY_INTERFACE = 'CategoryInterface'; /** - * @var Products\DataProvider\CategoryTree + * @var \Magento\CatalogGraphQl\Model\Resolver\Products\DataProvider\CategoryTree */ private $categoryTree; /** - * @var ValueFactory - */ - private $valueFactory; - - /** - * @param Products\DataProvider\CategoryTree $categoryTree - * @param ValueFactory $valueFactory + * @param \Magento\CatalogGraphQl\Model\Resolver\Products\DataProvider\CategoryTree $categoryTree */ public function __construct( - \Magento\CatalogGraphQl\Model\Resolver\Products\DataProvider\CategoryTree $categoryTree, - ValueFactory $valueFactory + \Magento\CatalogGraphQl\Model\Resolver\Products\DataProvider\CategoryTree $categoryTree ) { $this->categoryTree = $categoryTree; - $this->valueFactory = $valueFactory; } /** - * Assert that filters from search criteria are valid and retrieve root category id - * * @param array $args * @return int * @throws GraphQlInputException */ - private function assertFiltersAreValidAndGetCategoryRootIds(array $args) : int + private function getCategoryId(array $args) : int { if (!isset($args['id'])) { throw new GraphQlInputException(__('"id for category should be specified')); } - return (int) $args['id']; + return (int)$args['id']; } /** - * {@inheritdoc} + * @inheritdoc */ public function resolve(Field $field, $context, ResolveInfo $info, array $value = null, array $args = null) { - return $this->valueFactory->create(function () use ($value, $args, $field, $info) { - if (isset($value[$field->getName()])) { - return $value[$field->getName()]; - } + if (isset($value[$field->getName()])) { + return $value[$field->getName()]; + } - $rootCategoryId = $this->assertFiltersAreValidAndGetCategoryRootIds($args); - $categoriesTree = $this->categoryTree->getTree($info, $rootCategoryId); - if (!empty($categoriesTree)) { - return current($categoriesTree); - } else { - return null; - } - }); + $rootCategoryId = $this->getCategoryId($args); + $categoriesTree = $this->categoryTree->getTree($info, $rootCategoryId); + if (!empty($categoriesTree)) { + return current($categoriesTree); + } else { + return null; + } } } diff --git a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product.php b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product.php index 0607cd42fb62..40aa54fd9387 100644 --- a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product.php +++ b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product.php @@ -17,7 +17,7 @@ use Magento\Framework\GraphQl\Query\ResolverInterface; /** - * {@inheritdoc} + * @inheritdoc */ class Product implements ResolverInterface { @@ -52,7 +52,7 @@ public function __construct( } /** - * {@inheritDoc} + * @inheritdoc */ public function resolve(Field $field, $context, ResolveInfo $info, array $value = null, array $args = null) { diff --git a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/CanonicalUrl.php b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/CanonicalUrl.php index 2a8466401205..0f1a7d8ee9da 100644 --- a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/CanonicalUrl.php +++ b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/CanonicalUrl.php @@ -9,7 +9,7 @@ use Magento\Catalog\Model\Product; use Magento\Framework\GraphQl\Config\Element\Field; -use Magento\Framework\GraphQl\Query\Resolver\Value; +use Magento\Framework\GraphQl\Exception\GraphQlInputException; use Magento\Framework\GraphQl\Query\ResolverInterface; use Magento\Framework\GraphQl\Schema\Type\ResolveInfo; @@ -19,7 +19,7 @@ class CanonicalUrl implements ResolverInterface { /** - * {@inheritdoc} + * @inheritdoc */ public function resolve( Field $field, @@ -29,8 +29,7 @@ public function resolve( array $args = null ) { if (!isset($value['model'])) { - - return null; + throw new GraphQlInputException(__('"model" value should be specified')); } /* @var $product Product */ diff --git a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/EntityIdToId.php b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/EntityIdToId.php index 5971b223746c..a09510be8bc7 100644 --- a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/EntityIdToId.php +++ b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/EntityIdToId.php @@ -7,12 +7,12 @@ namespace Magento\CatalogGraphQl\Model\Resolver\Product; +use Magento\Framework\GraphQl\Exception\GraphQlInputException; use Magento\Framework\GraphQl\Schema\Type\ResolveInfo; use Magento\Catalog\Api\Data\ProductInterface; use Magento\Catalog\Model\Product; use Magento\Framework\EntityManager\MetadataPool; use Magento\Framework\GraphQl\Config\Element\Field; -use Magento\Framework\GraphQl\Query\Resolver\Value; use Magento\Framework\GraphQl\Query\ResolverInterface; /** @@ -27,11 +27,6 @@ class EntityIdToId implements ResolverInterface */ private $metadataPool; - /** - * @var ValueFactory - */ - private $valueFactory; - /** * @param MetadataPool $metadataPool */ @@ -41,7 +36,7 @@ public function __construct(MetadataPool $metadataPool) } /** - * {@inheritDoc} + * @inheritdoc */ public function resolve( Field $field, @@ -51,8 +46,7 @@ public function resolve( array $args = null ) { if (!isset($value['model'])) { - - return null; + throw new GraphQlInputException(__('"model" value should be specified')); } /** @var Product $product */ diff --git a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/MediaGalleryEntries.php b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/MediaGalleryEntries.php index 1b70bf0ca577..1938e27a8287 100644 --- a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/MediaGalleryEntries.php +++ b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/MediaGalleryEntries.php @@ -7,10 +7,10 @@ namespace Magento\CatalogGraphQl\Model\Resolver\Product; +use Magento\Framework\GraphQl\Exception\GraphQlInputException; use Magento\Framework\GraphQl\Schema\Type\ResolveInfo; use Magento\Catalog\Model\Product; use Magento\Framework\GraphQl\Config\Element\Field; -use Magento\Framework\GraphQl\Query\Resolver\Value; use Magento\Framework\GraphQl\Query\ResolverInterface; /** @@ -31,8 +31,7 @@ public function resolve( array $args = null ){ if (!isset($value['model'])) { - - return null; + throw new GraphQlInputException(__('"model" value should be specified')); } /** @var Product $product */ @@ -48,7 +47,6 @@ public function resolve( } } } - return $mediaGalleryEntries; } } diff --git a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/NewFromTo.php b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/NewFromTo.php index b6a96fe538ea..2fa47f86ecb9 100644 --- a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/NewFromTo.php +++ b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/NewFromTo.php @@ -7,10 +7,10 @@ namespace Magento\CatalogGraphQl\Model\Resolver\Product; +use Magento\Framework\GraphQl\Exception\GraphQlInputException; use Magento\Framework\GraphQl\Schema\Type\ResolveInfo; use Magento\Catalog\Model\Product; use Magento\Framework\GraphQl\Config\Element\Field; -use Magento\Framework\GraphQl\Query\Resolver\Value; use Magento\Framework\GraphQl\Query\ResolverInterface; /** @@ -31,7 +31,7 @@ public function resolve( array $args = null ) { if (!isset($value['model'])) { - return null; + throw new GraphQlInputException(__('"model" value should be specified')); } /** @var Product $product */ diff --git a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/Options.php b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/Options.php index 2fbc09a6528c..7c7e4ef117a5 100644 --- a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/Options.php +++ b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/Options.php @@ -7,11 +7,11 @@ namespace Magento\CatalogGraphQl\Model\Resolver\Product; +use Magento\Framework\GraphQl\Exception\GraphQlInputException; use Magento\Framework\GraphQl\Schema\Type\ResolveInfo; use Magento\Catalog\Model\Product; use Magento\Catalog\Model\Product\Option; use Magento\Framework\GraphQl\Config\Element\Field; -use Magento\Framework\GraphQl\Query\Resolver\Value; use Magento\Framework\GraphQl\Query\ResolverInterface; /** @@ -32,8 +32,7 @@ public function resolve( array $args = null ) { if (!isset($value['model'])) { - - return null; + throw new GraphQlInputException(__('"model" value should be specified')); } /** @var Product $product */ diff --git a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/Price.php b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/Price.php index 2e09d20cb678..6f4f8553a324 100644 --- a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/Price.php +++ b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/Price.php @@ -7,12 +7,12 @@ namespace Magento\CatalogGraphQl\Model\Resolver\Product; +use Magento\Framework\GraphQl\Exception\GraphQlInputException; use Magento\Framework\GraphQl\Schema\Type\ResolveInfo; use Magento\Catalog\Model\Product; use Magento\Catalog\Pricing\Price\FinalPrice; use Magento\Catalog\Pricing\Price\RegularPrice; use Magento\Framework\GraphQl\Config\Element\Field; -use Magento\Framework\GraphQl\Query\Resolver\Value; use Magento\Framework\GraphQl\Query\ResolverInterface; use Magento\Framework\Pricing\Adjustment\AdjustmentInterface; use Magento\Framework\Pricing\Amount\AmountInterface; @@ -34,11 +34,6 @@ class Price implements ResolverInterface */ private $priceInfoFactory; - /** - * @var ValueFactory - */ - private $valueFactory; - /** * @param StoreManagerInterface $storeManager * @param PriceInfoFactory $priceInfoFactory @@ -64,8 +59,7 @@ public function resolve( array $args = null ) { if (!isset($value['model'])) { - - return null; + throw new GraphQlInputException(__('"model" value should be specified')); } /** @var Product $product */ diff --git a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/ProductLinks.php b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/ProductLinks.php index c64fe1d4693f..e24bf4e55f86 100644 --- a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/ProductLinks.php +++ b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/ProductLinks.php @@ -7,11 +7,11 @@ namespace Magento\CatalogGraphQl\Model\Resolver\Product; +use Magento\Framework\GraphQl\Exception\GraphQlInputException; use Magento\Framework\GraphQl\Schema\Type\ResolveInfo; use Magento\Catalog\Model\Product; use Magento\Catalog\Model\ProductLink\Link; use Magento\Framework\GraphQl\Config\Element\Field; -use Magento\Framework\GraphQl\Query\Resolver\Value; use Magento\Framework\GraphQl\Query\ResolverInterface; /** @@ -39,8 +39,7 @@ public function resolve( array $args = null ){ if (!isset($value['model'])) { - - return null; + throw new GraphQlInputException(__('"model" value should be specified')); } /** @var Product $product */ diff --git a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/TierPrices.php b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/TierPrices.php index 42e6187a94ee..82a7e9579f8a 100644 --- a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/TierPrices.php +++ b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/TierPrices.php @@ -7,11 +7,11 @@ namespace Magento\CatalogGraphQl\Model\Resolver\Product; +use Magento\Framework\GraphQl\Exception\GraphQlInputException; use Magento\Framework\GraphQl\Schema\Type\ResolveInfo; use Magento\Catalog\Model\Product; use Magento\Catalog\Model\Product\TierPrice; use Magento\Framework\GraphQl\Config\Element\Field; -use Magento\Framework\GraphQl\Query\Resolver\Value; use Magento\Framework\GraphQl\Query\ResolverInterface; /** @@ -34,8 +34,7 @@ public function resolve( array $args = null ){ if (!isset($value['model'])) { - - return null; + throw new GraphQlInputException(__('"model" value should be specified')); } /** @var Product $product */ diff --git a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/Websites.php b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/Websites.php index 76ecce4c732d..9fe64a16935c 100644 --- a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/Websites.php +++ b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/Websites.php @@ -7,10 +7,9 @@ namespace Magento\CatalogGraphQl\Model\Resolver\Product; +use Magento\Framework\GraphQl\Exception\GraphQlInputException; use Magento\Framework\GraphQl\Schema\Type\ResolveInfo; -use Magento\Catalog\Model\Product; use Magento\Framework\GraphQl\Config\Element\Field; -use Magento\Framework\GraphQl\Query\Resolver\Value; use Magento\Framework\GraphQl\Query\Resolver\ValueFactory; use Magento\Framework\GraphQl\Query\ResolverInterface; use Magento\CatalogGraphQl\Model\Resolver\Product\Websites\Collection; @@ -43,15 +42,12 @@ public function __construct( } /** - * {@inheritDoc} + * @inheritdoc */ public function resolve(Field $field, $context, ResolveInfo $info, array $value = null, array $args = null) { if (!isset($value['entity_id'])) { - $result = function () { - return null; - }; - return $this->valueFactory->create($result); + throw new GraphQlInputException(__('"model" value should be specified')); } $this->productWebsitesCollection->addIdFilters((int)$value['entity_id']); $result = function () use ($value) { diff --git a/app/code/Magento/CatalogGraphQl/Model/Resolver/Products.php b/app/code/Magento/CatalogGraphQl/Model/Resolver/Products.php index ab9a54e73a04..0f618058e06d 100644 --- a/app/code/Magento/CatalogGraphQl/Model/Resolver/Products.php +++ b/app/code/Magento/CatalogGraphQl/Model/Resolver/Products.php @@ -14,7 +14,6 @@ use Magento\Framework\GraphQl\Exception\GraphQlInputException; use Magento\Framework\GraphQl\Query\Resolver\Argument\SearchCriteria\Builder; use Magento\Framework\GraphQl\Query\Resolver\Argument\SearchCriteria\SearchFilter; -use Magento\Framework\GraphQl\Query\Resolver\Value; use Magento\Framework\GraphQl\Query\ResolverInterface; use Magento\Catalog\Model\Layer\Resolver; @@ -68,7 +67,7 @@ public function __construct( } /** - * {@inheritdoc} + * @inheritdoc */ public function resolve( Field $field, diff --git a/app/code/Magento/CatalogGraphQl/Test/Unit/Model/Resolver/Product/CanonicalUrlTest.php b/app/code/Magento/CatalogGraphQl/Test/Unit/Model/Resolver/Product/CanonicalUrlTest.php deleted file mode 100644 index ae01c67eb522..000000000000 --- a/app/code/Magento/CatalogGraphQl/Test/Unit/Model/Resolver/Product/CanonicalUrlTest.php +++ /dev/null @@ -1,92 +0,0 @@ -getMockBuilder(\Magento\Framework\GraphQl\Config\Element\Field::class) - ->disableOriginalConstructor() - ->getMock(); - $mockInfo = $this->getMockBuilder(\Magento\Framework\GraphQl\Schema\Type\ResolveInfo::class) - ->disableOriginalConstructor() - ->getMock(); - - $this->mockValueFactory->method('create')->with( - $this->callback( - function ($param) { - return $param() === null; - } - ) - ); - - $this->subject->resolve($mockField, '', $mockInfo, [], []); - } - - protected function setUp() - { - parent::setUp(); - $this->objectManager = new ObjectManager($this); - $this->mockStoreManager = $this->getMockBuilder(StoreManagerInterface::class)->getMock(); - $this->mockValueFactory = $this->getMockBuilder(ValueFactory::class) - ->disableOriginalConstructor() - ->getMock(); - - $this->mockValueFactory->method('create')->willReturn( - $this->objectManager->getObject( - Value::class, - ['callback' => function () { - return ''; - }] - ) - ); - - $mockProductUrlPathGenerator = $this->getMockBuilder(ProductUrlPathGenerator::class) - ->disableOriginalConstructor() - ->getMock(); - $mockProductUrlPathGenerator->method('getUrlPathWithSuffix')->willReturn('product_url.html'); - - $this->subject = $this->objectManager->getObject( - CanonicalUrl::class, - [ - 'valueFactory' => $this->mockValueFactory, - 'storeManager' => $this->mockStoreManager, - 'productUrlPathGenerator' => $mockProductUrlPathGenerator - ] - ); - } -} diff --git a/app/code/Magento/ConfigurableProductGraphQl/Model/Resolver/ConfigurableVariant.php b/app/code/Magento/ConfigurableProductGraphQl/Model/Resolver/ConfigurableVariant.php index e6ad4528eaec..a6e39f693b0e 100644 --- a/app/code/Magento/ConfigurableProductGraphQl/Model/Resolver/ConfigurableVariant.php +++ b/app/code/Magento/ConfigurableProductGraphQl/Model/Resolver/ConfigurableVariant.php @@ -16,12 +16,11 @@ use Magento\ConfigurableProductGraphQl\Model\Variant\Collection; use Magento\Framework\EntityManager\MetadataPool; use Magento\Framework\GraphQl\Config\Element\Field; -use Magento\Framework\GraphQl\Query\Resolver\Value; use Magento\Framework\GraphQl\Query\Resolver\ValueFactory; use Magento\Framework\GraphQl\Query\ResolverInterface; /** - * {@inheritdoc} + * @inheritdoc */ class ConfigurableVariant implements ResolverInterface { diff --git a/app/code/Magento/ConfigurableProductGraphQl/Model/Resolver/Options.php b/app/code/Magento/ConfigurableProductGraphQl/Model/Resolver/Options.php index 5195cfde04da..aa7ed6f55254 100644 --- a/app/code/Magento/ConfigurableProductGraphQl/Model/Resolver/Options.php +++ b/app/code/Magento/ConfigurableProductGraphQl/Model/Resolver/Options.php @@ -13,12 +13,11 @@ use Magento\ConfigurableProductGraphQl\Model\Options\Collection as OptionCollection; use Magento\Framework\EntityManager\MetadataPool; use Magento\Framework\GraphQl\Config\Element\Field; -use Magento\Framework\GraphQl\Query\Resolver\Value; use Magento\Framework\GraphQl\Query\Resolver\ValueFactory; use Magento\Framework\GraphQl\Query\ResolverInterface; /** - * {@inheritdoc} + * @inheritdoc */ class Options implements ResolverInterface { @@ -55,7 +54,7 @@ public function __construct( /** * Fetch and format configurable variants. * - * {@inheritDoc} + * {@inheritdoc} */ public function resolve(Field $field, $context, ResolveInfo $info, array $value = null, array $args = null) { diff --git a/app/code/Magento/ConfigurableProductGraphQl/Model/Resolver/Variant/Attributes.php b/app/code/Magento/ConfigurableProductGraphQl/Model/Resolver/Variant/Attributes.php index 91bb1dc40602..658e898f09f8 100644 --- a/app/code/Magento/ConfigurableProductGraphQl/Model/Resolver/Variant/Attributes.php +++ b/app/code/Magento/ConfigurableProductGraphQl/Model/Resolver/Variant/Attributes.php @@ -9,8 +9,6 @@ use Magento\Framework\GraphQl\Schema\Type\ResolveInfo; use Magento\Framework\GraphQl\Config\Element\Field; -use Magento\Framework\GraphQl\Query\Resolver\Value; -use Magento\Framework\GraphQl\Query\Resolver\ValueFactory; use Magento\Framework\GraphQl\Query\ResolverInterface; /** @@ -18,19 +16,6 @@ */ class Attributes implements ResolverInterface { - /** - * @var ValueFactory - */ - private $valueFactory; - - /** - * @param ValueFactory $valueFactory - */ - public function __construct(ValueFactory $valueFactory) - { - $this->valueFactory = $valueFactory; - } - /** * Format product's option data to conform to GraphQL schema * @@ -44,36 +29,28 @@ public function resolve( array $args = null ) { if (!isset($value['options']) || !isset($value['product'])) { - $result = function () { - return null; - }; - return $this->valueFactory->create($result); + return null; } - $result = function () use ($value) { - $data = []; - foreach ($value['options'] as $option) { - $code = $option['attribute_code']; - if (!isset($value['product'][$code])) { - continue; - } + $data = []; + foreach ($value['options'] as $option) { + $code = $option['attribute_code']; + if (!isset($value['product'][$code])) { + continue; + } - foreach ($option['values'] as $optionValue) { - if ($optionValue['value_index'] != $value['product'][$code]) { - continue; - } - $data[] = [ - 'label' => $optionValue['label'], - 'code' => $code, - 'use_default_value' => $optionValue['use_default_value'], - 'value_index' => $optionValue['value_index'] - ]; + foreach ($option['values'] as $optionValue) { + if ($optionValue['value_index'] != $value['product'][$code]) { + continue; } + $data[] = [ + 'label' => $optionValue['label'], + 'code' => $code, + 'use_default_value' => $optionValue['use_default_value'], + 'value_index' => $optionValue['value_index'] + ]; } - - return $data; - }; - - return $this->valueFactory->create($result); + } + return $data; } } diff --git a/app/code/Magento/CustomerGraphQl/Model/Resolver/Customer.php b/app/code/Magento/CustomerGraphQl/Model/Resolver/Customer.php index af1dad1c4a22..98941af3b73d 100644 --- a/app/code/Magento/CustomerGraphQl/Model/Resolver/Customer.php +++ b/app/code/Magento/CustomerGraphQl/Model/Resolver/Customer.php @@ -15,8 +15,6 @@ use Magento\Framework\GraphQl\Exception\GraphQlAuthorizationException; use Magento\Framework\GraphQl\Exception\GraphQlNoSuchEntityException; use Magento\Framework\GraphQl\Query\Resolver\ContextInterface; -use Magento\Framework\GraphQl\Query\Resolver\Value; -use Magento\Framework\GraphQl\Query\Resolver\ValueFactory; use Magento\Framework\GraphQl\Query\ResolverInterface; /** @@ -29,25 +27,17 @@ class Customer implements ResolverInterface */ private $customerResolver; - /** - * @var ValueFactory - */ - private $valueFactory; - /** * @param CustomerDataProvider $customerResolver - * @param ValueFactory $valueFactory */ public function __construct( - CustomerDataProvider $customerResolver, - ValueFactory $valueFactory + CustomerDataProvider $customerResolver ) { $this->customerResolver = $customerResolver; - $this->valueFactory = $valueFactory; } /** - * {@inheritdoc} + * @inheritdoc */ public function resolve( Field $field, @@ -68,10 +58,7 @@ public function resolve( try { $data = $this->customerResolver->getCustomerById($context->getUserId()); - $result = function () use ($data) { - return !empty($data) ? $data : []; - }; - return $this->valueFactory->create($result); + return !empty($data) ? $data : []; } catch (NoSuchEntityException $exception) { throw new GraphQlNoSuchEntityException(__('Customer id %1 does not exist.', [$context->getUserId()])); } diff --git a/app/code/Magento/DownloadableGraphQl/Model/Resolver/Product/DownloadableOptions.php b/app/code/Magento/DownloadableGraphQl/Model/Resolver/Product/DownloadableOptions.php index f18ae0d84381..5141361fecc0 100644 --- a/app/code/Magento/DownloadableGraphQl/Model/Resolver/Product/DownloadableOptions.php +++ b/app/code/Magento/DownloadableGraphQl/Model/Resolver/Product/DownloadableOptions.php @@ -7,6 +7,7 @@ namespace Magento\DownloadableGraphQl\Model\Resolver\Product; +use Magento\Framework\GraphQl\Exception\GraphQlInputException; use Magento\Framework\GraphQl\Schema\Type\ResolveInfo; use Magento\Catalog\Model\Product; use Magento\Downloadable\Helper\Data as DownloadableHelper; @@ -16,7 +17,6 @@ use Magento\Framework\Data\Collection; use Magento\Framework\GraphQl\Config\Element\Field; use Magento\Framework\GraphQl\Query\EnumLookup; -use Magento\Framework\GraphQl\Query\Resolver\Value; use Magento\Framework\GraphQl\Query\ResolverInterface; /** @@ -77,8 +77,7 @@ public function resolve( array $args = null ) { if (!isset($value['model'])) { - - return null; + throw new GraphQlInputException(__('"model" value should be specified')); } /** @var Product $product */ diff --git a/app/code/Magento/EavGraphQl/Model/Resolver/CustomAttributeMetadata.php b/app/code/Magento/EavGraphQl/Model/Resolver/CustomAttributeMetadata.php index 144bc8ccad59..62e3f0183661 100644 --- a/app/code/Magento/EavGraphQl/Model/Resolver/CustomAttributeMetadata.php +++ b/app/code/Magento/EavGraphQl/Model/Resolver/CustomAttributeMetadata.php @@ -14,7 +14,6 @@ use Magento\Framework\GraphQl\Config\Element\Field; use Magento\Framework\GraphQl\Exception\GraphQlInputException; use Magento\Framework\GraphQl\Exception\GraphQlNoSuchEntityException; -use Magento\Framework\GraphQl\Query\Resolver\Value; use Magento\Framework\GraphQl\Query\ResolverInterface; /** @@ -36,7 +35,7 @@ public function __construct(Type $type) } /** - * {@inheritDoc} + * @inheritdoc */ public function resolve( Field $field, diff --git a/app/code/Magento/GroupedProductGraphQl/Model/Resolver/GroupedItems.php b/app/code/Magento/GroupedProductGraphQl/Model/Resolver/GroupedItems.php index d8f4069559fd..fee4063affef 100644 --- a/app/code/Magento/GroupedProductGraphQl/Model/Resolver/GroupedItems.php +++ b/app/code/Magento/GroupedProductGraphQl/Model/Resolver/GroupedItems.php @@ -7,15 +7,15 @@ namespace Magento\GroupedProductGraphQl\Model\Resolver; +use Magento\Framework\GraphQl\Exception\GraphQlInputException; use Magento\Framework\GraphQl\Schema\Type\ResolveInfo; use Magento\CatalogGraphQl\Model\Resolver\Products\DataProvider\Deferred\Product; use Magento\Framework\GraphQl\Config\Element\Field; -use Magento\Framework\GraphQl\Query\Resolver\Value; use Magento\Framework\GraphQl\Query\ResolverInterface; use Magento\GroupedProduct\Model\Product\Initialization\Helper\ProductLinks\Plugin\Grouped; /** - * {@inheritdoc} + * @inheritdoc */ class GroupedItems implements ResolverInterface { @@ -34,7 +34,7 @@ public function __construct( } /** - * {@inheritDoc} + * @inheritdoc */ public function resolve( Field $field, @@ -44,10 +44,10 @@ public function resolve( array $args = null ) { if (!isset($value['model'])) { - - return null; + throw new GraphQlInputException(__('"model" value should be specified')); } + $data = []; $productModel = $value['model']; $links = $productModel->getProductLinks(); foreach ($links as $link) { diff --git a/app/code/Magento/StoreGraphQl/Model/Resolver/Store/StoreConfigDataProvider.php b/app/code/Magento/StoreGraphQl/Model/Resolver/Store/StoreConfigDataProvider.php index 0252d7898bee..92926c12e86d 100644 --- a/app/code/Magento/StoreGraphQl/Model/Resolver/Store/StoreConfigDataProvider.php +++ b/app/code/Magento/StoreGraphQl/Model/Resolver/Store/StoreConfigDataProvider.php @@ -58,18 +58,6 @@ public function getStoreConfig() : array $store = $this->storeRepository->getById($storeId); $storeConfig = current($this->storeConfigManager->getStoreConfigs([$store->getCode()])); - return $this->hidrateStoreConfig($storeConfig); - } - - /** - * Transform StoreConfig object to in array format - * - * @param StoreConfigInterface $storeConfig - * @return array - */ - private function hidrateStoreConfig($storeConfig): array - { - /** @var StoreConfigInterface $storeConfig */ $storeConfigData = [ 'id' => $storeConfig->getId(), 'code' => $storeConfig->getCode(), @@ -88,7 +76,6 @@ private function hidrateStoreConfig($storeConfig): array 'secure_base_static_url' => $storeConfig->getSecureBaseStaticUrl(), 'secure_base_media_url' => $storeConfig->getSecureBaseMediaUrl() ]; - return $storeConfigData; } } diff --git a/app/code/Magento/StoreGraphQl/Model/Resolver/StoreConfigResolver.php b/app/code/Magento/StoreGraphQl/Model/Resolver/StoreConfigResolver.php index 9533296dc359..39fcd1bf2792 100644 --- a/app/code/Magento/StoreGraphQl/Model/Resolver/StoreConfigResolver.php +++ b/app/code/Magento/StoreGraphQl/Model/Resolver/StoreConfigResolver.php @@ -8,8 +8,6 @@ namespace Magento\StoreGraphQl\Model\Resolver; use Magento\Framework\GraphQl\Config\Element\Field; -use Magento\Framework\GraphQl\Query\Resolver\Value; -use Magento\Framework\GraphQl\Query\Resolver\ValueFactory; use Magento\Framework\GraphQl\Query\ResolverInterface; use Magento\Framework\GraphQl\Schema\Type\ResolveInfo; use Magento\StoreGraphQl\Model\Resolver\Store\StoreConfigDataProvider; @@ -25,24 +23,16 @@ class StoreConfigResolver implements ResolverInterface private $storeConfigDataProvider; /** - * @var ValueFactory - */ - private $valueFactory; - - /** - * @param StoreConfigDataProvider $storeConfigsDataProvider - * @param ValueFactory $valueFactory + * @param StoreConfigDataProvider $storeConfigDataProvider */ public function __construct( - StoreConfigDataProvider $storeConfigsDataProvider, - ValueFactory $valueFactory + StoreConfigDataProvider $storeConfigDataProvider ) { - $this->valueFactory = $valueFactory; - $this->storeConfigDataProvider = $storeConfigsDataProvider; + $this->storeConfigDataProvider = $storeConfigDataProvider; } /** - * {@inheritdoc} + * @inheritdoc */ public function resolve( Field $field, @@ -53,11 +43,6 @@ public function resolve( ) { $storeConfigData = $this->storeConfigDataProvider->getStoreConfig(); - - $result = function () use ($storeConfigData) { - return !empty($storeConfigData) ? $storeConfigData : []; - }; - - return $this->valueFactory->create($result); + return $storeConfigData; } } diff --git a/app/code/Magento/UrlRewriteGraphQl/Model/Resolver/UrlRewrite.php b/app/code/Magento/UrlRewriteGraphQl/Model/Resolver/UrlRewrite.php index 3f07edc60190..488f1281ce30 100644 --- a/app/code/Magento/UrlRewriteGraphQl/Model/Resolver/UrlRewrite.php +++ b/app/code/Magento/UrlRewriteGraphQl/Model/Resolver/UrlRewrite.php @@ -7,10 +7,9 @@ namespace Magento\UrlRewriteGraphQl\Model\Resolver; +use Magento\Framework\GraphQl\Exception\GraphQlInputException; use Magento\Framework\GraphQl\Schema\Type\ResolveInfo; use Magento\Framework\GraphQl\Config\Element\Field; -use Magento\Framework\GraphQl\Query\Resolver\Value; -use Magento\Framework\GraphQl\Query\Resolver\ValueFactory; use Magento\Framework\GraphQl\Query\ResolverInterface; use Magento\Store\Model\StoreManagerInterface; use Magento\UrlRewrite\Model\UrlFinderInterface; @@ -31,11 +30,6 @@ class UrlRewrite implements ResolverInterface */ private $storeManager; - /** - * @var ValueFactory - */ - private $valueFactory; - /** * @var CustomUrlLocatorInterface */ @@ -44,23 +38,20 @@ class UrlRewrite implements ResolverInterface /** * @param UrlFinderInterface $urlFinder * @param StoreManagerInterface $storeManager - * @param ValueFactory $valueFactory * @param CustomUrlLocatorInterface $customUrlLocator */ public function __construct( UrlFinderInterface $urlFinder, StoreManagerInterface $storeManager, - ValueFactory $valueFactory, CustomUrlLocatorInterface $customUrlLocator ) { $this->urlFinder = $urlFinder; $this->storeManager = $storeManager; - $this->valueFactory = $valueFactory; $this->customUrlLocator = $customUrlLocator; } /** - * {@inheritdoc} + * @inheritdoc */ public function resolve( Field $field, @@ -68,31 +59,27 @@ public function resolve( ResolveInfo $info, array $value = null, array $args = null - ) : Value { - $result = function () { - return null; - }; - - if (isset($args['url'])) { - $url = $args['url']; - if (substr($url, 0, 1) === '/' && $url !== '/') { - $url = ltrim($url, '/'); - } - $customUrl = $this->customUrlLocator->locateUrl($url); - $url = $customUrl ?: $url; - $urlRewrite = $this->findCanonicalUrl($url); - if ($urlRewrite) { - $urlRewriteReturnArray = [ - 'id' => $urlRewrite->getEntityId(), - 'canonical_url' => $urlRewrite->getTargetPath(), - 'type' => $this->sanitizeType($urlRewrite->getEntityType()) - ]; - $result = function () use ($urlRewriteReturnArray) { - return $urlRewriteReturnArray; - }; - } + ) { + if (!isset($args['url']) || empty(trim($args['url']))) { + throw new GraphQlInputException(__('"url" argument should be specified and not empty')); + } + + $result = null; + $url = $args['url']; + if (substr($url, 0, 1) === '/' && $url !== '/') { + $url = ltrim($url, '/'); + } + $customUrl = $this->customUrlLocator->locateUrl($url); + $url = $customUrl ?: $url; + $urlRewrite = $this->findCanonicalUrl($url); + if ($urlRewrite) { + $result = [ + 'id' => $urlRewrite->getEntityId(), + 'canonical_url' => $urlRewrite->getTargetPath(), + 'type' => $this->sanitizeType($urlRewrite->getEntityType()) + ]; } - return $this->valueFactory->create($result); + return $result; } /** diff --git a/dev/tests/api-functional/_files/Magento/TestModuleGraphQlQuery/Model/Resolver/Item.php b/dev/tests/api-functional/_files/Magento/TestModuleGraphQlQuery/Model/Resolver/Item.php index 6170c8dea3dd..1731a974aaed 100644 --- a/dev/tests/api-functional/_files/Magento/TestModuleGraphQlQuery/Model/Resolver/Item.php +++ b/dev/tests/api-functional/_files/Magento/TestModuleGraphQlQuery/Model/Resolver/Item.php @@ -9,27 +9,10 @@ use Magento\Framework\GraphQl\Schema\Type\ResolveInfo; use Magento\Framework\GraphQl\Config\Element\Field; -use Magento\Framework\GraphQl\Query\PostFetchProcessorInterface; -use Magento\Framework\GraphQl\Query\Resolver\Value; -use Magento\Framework\GraphQl\Query\Resolver\ValueFactory; use Magento\Framework\GraphQl\Query\ResolverInterface; class Item implements ResolverInterface { - /** - * @var ValueFactory - */ - private $valueFactory; - - /** - * @param ValueFactory $valueFactory - */ - public function __construct( - ValueFactory $valueFactory - ) { - $this->valueFactory = $valueFactory; - } - /** * @inheritdoc */ @@ -39,7 +22,7 @@ public function resolve( ResolveInfo $info, array $value = null, array $args = null - ) : Value { + ) { $id = 0; foreach ($args as $key => $argValue) { if ($key === "id") { @@ -50,11 +33,6 @@ public function resolve( 'item_id' => $id, 'name' => "itemName" ]; - - $result = function () use ($itemData) { - return $itemData; - }; - - return $this->valueFactory->create($result); + return $itemData; } } diff --git a/dev/tests/api-functional/_files/Magento/TestModuleGraphQlQueryExtension/Model/Resolver/IntegerList.php b/dev/tests/api-functional/_files/Magento/TestModuleGraphQlQueryExtension/Model/Resolver/IntegerList.php index 878212f49421..34dc92fcbbaa 100644 --- a/dev/tests/api-functional/_files/Magento/TestModuleGraphQlQueryExtension/Model/Resolver/IntegerList.php +++ b/dev/tests/api-functional/_files/Magento/TestModuleGraphQlQueryExtension/Model/Resolver/IntegerList.php @@ -9,8 +9,6 @@ use Magento\Framework\GraphQl\Schema\Type\ResolveInfo; use Magento\Framework\GraphQl\Config\Element\Field; -use Magento\Framework\GraphQl\Query\Resolver\Value; -use Magento\Framework\GraphQl\Query\Resolver\ValueFactory; use Magento\Framework\GraphQl\Query\ResolverInterface; /** @@ -19,20 +17,7 @@ class IntegerList implements ResolverInterface { /** - * @var ValueFactory - */ - private $valueFactory; - - /** - * @param ValueFactory $valueFactory - */ - public function __construct(ValueFactory $valueFactory) - { - $this->valueFactory = $valueFactory; - } - - /** - * {@inheritdoc} + * @inheritdoc */ public function resolve( Field $field, @@ -40,21 +25,14 @@ public function resolve( ResolveInfo $info, array $value = null, array $args = null - ): Value { + ) { if (!isset($value['item_id'])) { - return $this->valueFactory->create(function () { - return null; - }); + return null; } $itemId = $value['item_id']; $resultData = [$itemId + 1, $itemId + 2, $itemId + 3]; - - $result = function () use ($resultData) { - return $resultData; - }; - - return $this->valueFactory->create($result); + return $resultData; } } diff --git a/lib/internal/Magento/Framework/GraphQl/Query/ResolverInterface.php b/lib/internal/Magento/Framework/GraphQl/Query/ResolverInterface.php index ec59f132cc7c..295113a98e46 100644 --- a/lib/internal/Magento/Framework/GraphQl/Query/ResolverInterface.php +++ b/lib/internal/Magento/Framework/GraphQl/Query/ResolverInterface.php @@ -25,7 +25,7 @@ interface ResolverInterface * @param array|null $value * @param array|null $args * @throws \Exception - * @return Value + * @return mixed|Value */ public function resolve( Field $field, @@ -33,5 +33,5 @@ public function resolve( ResolveInfo $info, array $value = null, array $args = null - ) : Value; + ); } From b6c6cba99f91fa056b2447e2bfdc7b585d97799a Mon Sep 17 00:00:00 2001 From: Valeriy Nayda Date: Wed, 5 Sep 2018 14:31:16 +0300 Subject: [PATCH 19/31] GraphQL-152: Allow scalars as resolver return type --- .../BundleGraphQl/Model/Resolver/Product/Fields/DynamicSku.php | 2 +- .../Model/Resolver/Product/MediaGalleryEntries.php | 2 +- .../CatalogGraphQl/Model/Resolver/Product/ProductLinks.php | 2 +- .../CatalogGraphQl/Model/Resolver/Product/TierPrices.php | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/code/Magento/BundleGraphQl/Model/Resolver/Product/Fields/DynamicSku.php b/app/code/Magento/BundleGraphQl/Model/Resolver/Product/Fields/DynamicSku.php index 8aa63e1f8780..73f84c278a63 100644 --- a/app/code/Magento/BundleGraphQl/Model/Resolver/Product/Fields/DynamicSku.php +++ b/app/code/Magento/BundleGraphQl/Model/Resolver/Product/Fields/DynamicSku.php @@ -26,7 +26,7 @@ public function resolve( ResolveInfo $info, array $value = null, array $args = null - ){ + ) { $result = null; if ($value['type_id'] === Bundle::TYPE_CODE) { $result = isset($value['sku_type']) ? !$value['sku_type'] : null; diff --git a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/MediaGalleryEntries.php b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/MediaGalleryEntries.php index 1938e27a8287..a54cb62c1652 100644 --- a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/MediaGalleryEntries.php +++ b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/MediaGalleryEntries.php @@ -29,7 +29,7 @@ public function resolve( ResolveInfo $info, array $value = null, array $args = null - ){ + ) { if (!isset($value['model'])) { throw new GraphQlInputException(__('"model" value should be specified')); } diff --git a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/ProductLinks.php b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/ProductLinks.php index e24bf4e55f86..4d5622bd5c6d 100644 --- a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/ProductLinks.php +++ b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/ProductLinks.php @@ -37,7 +37,7 @@ public function resolve( ResolveInfo $info, array $value = null, array $args = null - ){ + ) { if (!isset($value['model'])) { throw new GraphQlInputException(__('"model" value should be specified')); } diff --git a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/TierPrices.php b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/TierPrices.php index 82a7e9579f8a..63599a88c79a 100644 --- a/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/TierPrices.php +++ b/app/code/Magento/CatalogGraphQl/Model/Resolver/Product/TierPrices.php @@ -32,7 +32,7 @@ public function resolve( ResolveInfo $info, array $value = null, array $args = null - ){ + ) { if (!isset($value['model'])) { throw new GraphQlInputException(__('"model" value should be specified')); } From 820157ae3d6dc84c8945d25c61e9862123d8aeb0 Mon Sep 17 00:00:00 2001 From: Valeriy Nayda Date: Wed, 5 Sep 2018 14:56:07 +0300 Subject: [PATCH 20/31] GraphQL-152: Allow scalars as resolver return type --- .../Resolver/OnlyXLeftInStockResolver.php | 31 +++++-------------- .../Model/Resolver/StockStatusProvider.php | 30 +++++------------- .../CmsGraphQl/Model/Resolver/Blocks.php | 29 +++++------------ .../CmsGraphQl/Model/Resolver/Page.php | 24 +++----------- .../Model/Resolver/Cart/CreateEmptyCart.php | 18 ++--------- 5 files changed, 30 insertions(+), 102 deletions(-) diff --git a/app/code/Magento/CatalogInventoryGraphQl/Model/Resolver/OnlyXLeftInStockResolver.php b/app/code/Magento/CatalogInventoryGraphQl/Model/Resolver/OnlyXLeftInStockResolver.php index e6966b7663b3..169456f7d4bb 100644 --- a/app/code/Magento/CatalogInventoryGraphQl/Model/Resolver/OnlyXLeftInStockResolver.php +++ b/app/code/Magento/CatalogInventoryGraphQl/Model/Resolver/OnlyXLeftInStockResolver.php @@ -11,23 +11,17 @@ use Magento\CatalogInventory\Api\StockRegistryInterface; use Magento\CatalogInventory\Model\Configuration; use Magento\Framework\App\Config\ScopeConfigInterface; +use Magento\Framework\GraphQl\Exception\GraphQlInputException; use Magento\Framework\GraphQl\Schema\Type\ResolveInfo; use Magento\Framework\GraphQl\Config\Element\Field; -use Magento\Framework\GraphQl\Query\Resolver\Value; -use Magento\Framework\GraphQl\Query\Resolver\ValueFactory; use Magento\Framework\GraphQl\Query\ResolverInterface; use Magento\Store\Model\ScopeInterface; /** - * {@inheritdoc} + * @inheritdoc */ class OnlyXLeftInStockResolver implements ResolverInterface { - /** - * @var ValueFactory - */ - private $valueFactory; - /** * @var ScopeConfigInterface */ @@ -39,42 +33,31 @@ class OnlyXLeftInStockResolver implements ResolverInterface private $stockRegistry; /** - * @param ValueFactory $valueFactory * @param ScopeConfigInterface $scopeConfig * @param StockRegistryInterface $stockRegistry */ public function __construct( - ValueFactory $valueFactory, ScopeConfigInterface $scopeConfig, StockRegistryInterface $stockRegistry ) { - $this->valueFactory = $valueFactory; $this->scopeConfig = $scopeConfig; $this->stockRegistry = $stockRegistry; } /** - * {@inheritdoc} + * @inheritdoc */ - public function resolve(Field $field, $context, ResolveInfo $info, array $value = null, array $args = null): Value + public function resolve(Field $field, $context, ResolveInfo $info, array $value = null, array $args = null) { if (!array_key_exists('model', $value) || !$value['model'] instanceof ProductInterface) { - $result = function () { - return null; - }; - - return $this->valueFactory->create($result); + throw new GraphQlInputException(__('"model" value should be specified')); } /* @var $product ProductInterface */ $product = $value['model']; $onlyXLeftQty = $this->getOnlyXLeftQty($product); - $result = function () use ($onlyXLeftQty) { - return $onlyXLeftQty; - }; - - return $this->valueFactory->create($result); + return $onlyXLeftQty; } /** @@ -109,7 +92,7 @@ private function getOnlyXLeftQty(ProductInterface $product): ?float ); if ($stockCurrentQty > 0 && $stockLeft <= $thresholdQty) { - return $stockLeft; + return (float)$stockLeft; } return null; diff --git a/app/code/Magento/CatalogInventoryGraphQl/Model/Resolver/StockStatusProvider.php b/app/code/Magento/CatalogInventoryGraphQl/Model/Resolver/StockStatusProvider.php index 936db3bc76a9..2f3d520c2cb8 100644 --- a/app/code/Magento/CatalogInventoryGraphQl/Model/Resolver/StockStatusProvider.php +++ b/app/code/Magento/CatalogInventoryGraphQl/Model/Resolver/StockStatusProvider.php @@ -10,48 +10,36 @@ use Magento\Catalog\Api\Data\ProductInterface; use Magento\CatalogInventory\Api\Data\StockStatusInterface; use Magento\CatalogInventory\Api\StockStatusRepositoryInterface; +use Magento\Framework\GraphQl\Exception\GraphQlInputException; use Magento\Framework\GraphQl\Schema\Type\ResolveInfo; use Magento\Framework\GraphQl\Config\Element\Field; -use Magento\Framework\GraphQl\Query\Resolver\Value; -use Magento\Framework\GraphQl\Query\Resolver\ValueFactory; use Magento\Framework\GraphQl\Query\ResolverInterface; /** - * {@inheritdoc} + * @inheritdoc */ class StockStatusProvider implements ResolverInterface { - /** - * @var ValueFactory - */ - private $valueFactory; - /** * @var StockStatusRepositoryInterface */ private $stockStatusRepository; /** - * @param ValueFactory $valueFactory * @param StockStatusRepositoryInterface $stockStatusRepository */ - public function __construct(ValueFactory $valueFactory, StockStatusRepositoryInterface $stockStatusRepository) + public function __construct(StockStatusRepositoryInterface $stockStatusRepository) { - $this->valueFactory = $valueFactory; $this->stockStatusRepository = $stockStatusRepository; } /** - * {@inheritdoc} + * @inheritdoc */ - public function resolve(Field $field, $context, ResolveInfo $info, array $value = null, array $args = null): Value + public function resolve(Field $field, $context, ResolveInfo $info, array $value = null, array $args = null) { if (!array_key_exists('model', $value) || !$value['model'] instanceof ProductInterface) { - $result = function () { - return null; - }; - - return $this->valueFactory->create($result); + throw new GraphQlInputException(__('"model" value should be specified')); } /* @var $product ProductInterface */ @@ -60,10 +48,6 @@ public function resolve(Field $field, $context, ResolveInfo $info, array $value $stockStatus = $this->stockStatusRepository->get($product->getId()); $productStockStatus = (int)$stockStatus->getStockStatus(); - $result = function () use ($productStockStatus) { - return $productStockStatus === StockStatusInterface::STATUS_IN_STOCK ? 'IN_STOCK' : 'OUT_OF_STOCK'; - }; - - return $this->valueFactory->create($result); + return $productStockStatus === StockStatusInterface::STATUS_IN_STOCK ? 'IN_STOCK' : 'OUT_OF_STOCK'; } } diff --git a/app/code/Magento/CmsGraphQl/Model/Resolver/Blocks.php b/app/code/Magento/CmsGraphQl/Model/Resolver/Blocks.php index ec387013ecfe..962127e16f71 100644 --- a/app/code/Magento/CmsGraphQl/Model/Resolver/Blocks.php +++ b/app/code/Magento/CmsGraphQl/Model/Resolver/Blocks.php @@ -12,8 +12,6 @@ use Magento\Framework\GraphQl\Config\Element\Field; use Magento\Framework\GraphQl\Exception\GraphQlInputException; use Magento\Framework\GraphQl\Exception\GraphQlNoSuchEntityException; -use Magento\Framework\GraphQl\Query\Resolver\Value; -use Magento\Framework\GraphQl\Query\Resolver\ValueFactory; use Magento\Framework\GraphQl\Query\ResolverInterface; use Magento\Framework\GraphQl\Schema\Type\ResolveInfo; @@ -27,21 +25,13 @@ class Blocks implements ResolverInterface */ private $blockDataProvider; - /** - * @var ValueFactory - */ - private $valueFactory; - /** * @param BlockDataProvider $blockDataProvider - * @param ValueFactory $valueFactory */ public function __construct( - BlockDataProvider $blockDataProvider, - ValueFactory $valueFactory + BlockDataProvider $blockDataProvider ) { $this->blockDataProvider = $blockDataProvider; - $this->valueFactory = $valueFactory; } /** @@ -53,18 +43,15 @@ public function resolve( ResolveInfo $info, array $value = null, array $args = null - ) : Value { + ) { - $result = function () use ($args) { - $blockIdentifiers = $this->getBlockIdentifiers($args); - $blocksData = $this->getBlocksData($blockIdentifiers); + $blockIdentifiers = $this->getBlockIdentifiers($args); + $blocksData = $this->getBlocksData($blockIdentifiers); - $resultData = [ - 'items' => $blocksData, - ]; - return $resultData; - }; - return $this->valueFactory->create($result); + $resultData = [ + 'items' => $blocksData, + ]; + return $resultData; } /** diff --git a/app/code/Magento/CmsGraphQl/Model/Resolver/Page.php b/app/code/Magento/CmsGraphQl/Model/Resolver/Page.php index 4c96ae26f6b7..1077ab81551c 100644 --- a/app/code/Magento/CmsGraphQl/Model/Resolver/Page.php +++ b/app/code/Magento/CmsGraphQl/Model/Resolver/Page.php @@ -12,8 +12,6 @@ use Magento\Framework\GraphQl\Config\Element\Field; use Magento\Framework\GraphQl\Exception\GraphQlInputException; use Magento\Framework\GraphQl\Exception\GraphQlNoSuchEntityException; -use Magento\Framework\GraphQl\Query\Resolver\Value; -use Magento\Framework\GraphQl\Query\Resolver\ValueFactory; use Magento\Framework\GraphQl\Query\ResolverInterface; use Magento\Framework\GraphQl\Schema\Type\ResolveInfo; @@ -27,21 +25,13 @@ class Page implements ResolverInterface */ private $pageDataProvider; - /** - * @var ValueFactory - */ - private $valueFactory; - /** * @param PageDataProvider $pageDataProvider - * @param ValueFactory $valueFactory */ public function __construct( - PageDataProvider $pageDataProvider, - ValueFactory $valueFactory + PageDataProvider $pageDataProvider ) { $this->pageDataProvider = $pageDataProvider; - $this->valueFactory = $valueFactory; } /** @@ -53,15 +43,11 @@ public function resolve( ResolveInfo $info, array $value = null, array $args = null - ) : Value { - - $result = function () use ($args) { - $pageId = $this->getPageId($args); - $pageData = $this->getPageData($pageId); + ) { + $pageId = $this->getPageId($args); + $pageData = $this->getPageData($pageId); - return $pageData; - }; - return $this->valueFactory->create($result); + return $pageData; } /** diff --git a/app/code/Magento/QuoteGraphQl/Model/Resolver/Cart/CreateEmptyCart.php b/app/code/Magento/QuoteGraphQl/Model/Resolver/Cart/CreateEmptyCart.php index a1e9160f9f50..fcf23dd9f682 100644 --- a/app/code/Magento/QuoteGraphQl/Model/Resolver/Cart/CreateEmptyCart.php +++ b/app/code/Magento/QuoteGraphQl/Model/Resolver/Cart/CreateEmptyCart.php @@ -9,8 +9,6 @@ use Magento\Authorization\Model\UserContextInterface; use Magento\Framework\GraphQl\Config\Element\Field; -use Magento\Framework\GraphQl\Query\Resolver\Value; -use Magento\Framework\GraphQl\Query\Resolver\ValueFactory; use Magento\Framework\GraphQl\Query\ResolverInterface; use Magento\Framework\GraphQl\Schema\Type\ResolveInfo; use Magento\Quote\Api\CartManagementInterface; @@ -32,11 +30,6 @@ class CreateEmptyCart implements ResolverInterface */ private $guestCartManagement; - /** - * @var ValueFactory - */ - private $valueFactory; - /** * @var QuoteIdToMaskedQuoteIdInterface */ @@ -50,28 +43,25 @@ class CreateEmptyCart implements ResolverInterface /** * @param CartManagementInterface $cartManagement * @param GuestCartManagementInterface $guestCartManagement - * @param ValueFactory $valueFactory * @param UserContextInterface $userContext * @param QuoteIdToMaskedQuoteIdInterface $quoteIdToMaskedId */ public function __construct( CartManagementInterface $cartManagement, GuestCartManagementInterface $guestCartManagement, - ValueFactory $valueFactory, UserContextInterface $userContext, QuoteIdToMaskedQuoteIdInterface $quoteIdToMaskedId ) { $this->cartManagement = $cartManagement; $this->guestCartManagement = $guestCartManagement; - $this->valueFactory = $valueFactory; $this->userContext = $userContext; $this->quoteIdToMaskedId = $quoteIdToMaskedId; } /** - * @inheritDoc + * @inheritdoc */ - public function resolve(Field $field, $context, ResolveInfo $info, array $value = null, array $args = null) : Value + public function resolve(Field $field, $context, ResolveInfo $info, array $value = null, array $args = null) { $customerId = $this->userContext->getUserId(); @@ -82,8 +72,6 @@ public function resolve(Field $field, $context, ResolveInfo $info, array $value $maskedQuoteId = $this->guestCartManagement->createEmptyCart(); } - return $this->valueFactory->create(function () use ($maskedQuoteId) { - return $maskedQuoteId; - }); + return $maskedQuoteId; } } From 7159ad222211c96547f990e7bd7356820023084e Mon Sep 17 00:00:00 2001 From: vitaliyboyko Date: Sun, 9 Sep 2018 18:57:59 +0000 Subject: [PATCH 21/31] GraphQL-128: added magentoApiConfig fixture annotation support in test and config tests --- .../Store/ExtendedStoreConfigDataProvider.php | 12 +- .../Annotation/ApiConfigFixture.php | 27 ++++ .../TestFramework/App/MutableScopeConfig.php | 125 ++++++++++++++ .../Bootstrap/WebapiDocBlock.php | 4 +- .../Magento/GraphQl/Cms/CmsConfigTest.php | 99 ++++++++++++ .../Magento/GraphQl/Theme/ThemeConfigTest.php | 153 ++++++++++++++++++ .../Annotation/ConfigFixture.php | 9 +- 7 files changed, 425 insertions(+), 4 deletions(-) create mode 100644 dev/tests/api-functional/framework/Magento/TestFramework/Annotation/ApiConfigFixture.php create mode 100644 dev/tests/api-functional/framework/Magento/TestFramework/App/MutableScopeConfig.php create mode 100644 dev/tests/api-functional/testsuite/Magento/GraphQl/Cms/CmsConfigTest.php create mode 100644 dev/tests/api-functional/testsuite/Magento/GraphQl/Theme/ThemeConfigTest.php diff --git a/app/code/Magento/StoreGraphQl/Model/Resolver/Store/ExtendedStoreConfigDataProvider.php b/app/code/Magento/StoreGraphQl/Model/Resolver/Store/ExtendedStoreConfigDataProvider.php index b9ab3d0daac4..142f178ad5bd 100644 --- a/app/code/Magento/StoreGraphQl/Model/Resolver/Store/ExtendedStoreConfigDataProvider.php +++ b/app/code/Magento/StoreGraphQl/Model/Resolver/Store/ExtendedStoreConfigDataProvider.php @@ -9,6 +9,7 @@ use Magento\Framework\App\Config\ScopeConfigInterface; use Magento\Store\Model\ScopeInterface; +use Magento\Store\Model\StoreManagerInterface; /** * Extends default StoreConfigInterface for GraphQL request processing. @@ -20,6 +21,11 @@ class ExtendedStoreConfigDataProvider */ private $scopeConfig; + /** + * @var StoreManagerInterface + */ + private $storeManager; + /** * @var array */ @@ -27,13 +33,16 @@ class ExtendedStoreConfigDataProvider /** * @param ScopeConfigInterface $scopeConfig + * @param StoreManagerInterface $storeManager * @param array $extendedConfigs */ public function __construct( ScopeConfigInterface $scopeConfig, + StoreManagerInterface $storeManager, array $extendedConfigs ) { $this->scopeConfig = $scopeConfig; + $this->storeManager = $storeManager; $this->extendedConfigs = $extendedConfigs; } @@ -43,9 +52,10 @@ public function __construct( */ public function getExtendedConfigs() { + $store = $this->storeManager->getStore(); $extendedConfigsData = []; foreach ($this->extendedConfigs as $key => $path) { - $extendedConfigsData[$key] = $this->scopeConfig->getValue($path, ScopeInterface::SCOPE_STORE); + $extendedConfigsData[$key] = $this->scopeConfig->getValue($path, ScopeInterface::SCOPE_STORE, $store->getId()); } return $extendedConfigsData; diff --git a/dev/tests/api-functional/framework/Magento/TestFramework/Annotation/ApiConfigFixture.php b/dev/tests/api-functional/framework/Magento/TestFramework/Annotation/ApiConfigFixture.php new file mode 100644 index 000000000000..0f87c274b78b --- /dev/null +++ b/dev/tests/api-functional/framework/Magento/TestFramework/Annotation/ApiConfigFixture.php @@ -0,0 +1,27 @@ +getTestAppConfig()->isSetFlag($path, $scopeType, $scopeCode); + } + + /** + * @inheritdoc + */ + public function getValue($path, $scopeType = ScopeConfigInterface::SCOPE_TYPE_DEFAULT, $scopeCode = null) + { + return $this->getTestAppConfig()->getValue($path, $scopeType, $scopeCode); + } + + /** + * @inheritdoc + */ + public function setValue( + $path, + $value, + $scopeType = \Magento\Framework\App\Config\ScopeConfigInterface::SCOPE_TYPE_DEFAULT, + $scopeCode = null + ) { + $this->persistConfig($path, $value, $scopeType, $scopeCode); + return $this->getTestAppConfig()->setValue($path, $value, $scopeType, $scopeCode); + } + + /** + * Clean app config cache + * + * @param string|null $type + * @return void + */ + public function clean() + { + $this->getTestAppConfig()->clean(); + } + + /** + * Retrieve test app config instance + * + * @return \Magento\TestFramework\App\Config + */ + private function getTestAppConfig() + { + if (!$this->testAppConfig) { + $this->testAppConfig = ObjectManager::getInstance()->get(ScopeConfigInterface::class); + } + + return $this->testAppConfig; + } + + /** + * Persist config in database + * + * @param string $path + * @param string $value + * @param string $scopeType + * @param string|null $scopeCode + */ + private function persistConfig($path, $value, $scopeType, $scopeCode): void + { + $pathParts = explode('/', $path); + $store = ''; + if ($scopeType === \Magento\Store\Model\ScopeInterface::SCOPE_STORE) { + if ($scopeCode !== null) { + $store = ObjectManager::getInstance() + ->get(\Magento\Store\Api\StoreRepositoryInterface::class) + ->get($scopeCode) + ->getId(); + } else { + $store = ObjectManager::getInstance() + ->get(\Magento\Store\Model\StoreManagerInterface::class) + ->getStore() + ->getId(); + } + } + $configData = [ + 'section' => $pathParts[0], + 'website' => '', + 'store' => $store, + 'groups' => [ + $pathParts[1] => [ + 'fields' => [ + $pathParts[2] => [ + 'value' => $value + ] + ] + ] + ] + ]; + ObjectManager::getInstance() + ->get(\Magento\Config\Model\Config\Factory::class) + ->create(['data' => $configData]) + ->save(); + } +} diff --git a/dev/tests/api-functional/framework/Magento/TestFramework/Bootstrap/WebapiDocBlock.php b/dev/tests/api-functional/framework/Magento/TestFramework/Bootstrap/WebapiDocBlock.php index 514d8e5344d5..336456de0ed2 100644 --- a/dev/tests/api-functional/framework/Magento/TestFramework/Bootstrap/WebapiDocBlock.php +++ b/dev/tests/api-functional/framework/Magento/TestFramework/Bootstrap/WebapiDocBlock.php @@ -10,7 +10,8 @@ class WebapiDocBlock extends \Magento\TestFramework\Bootstrap\DocBlock { /** - * Get list of subscribers. In addition, register magentoApiDataFixture annotation processing. + * Get list of subscribers. In addition, register magentoApiDataFixture and magentoApiConfigFixture + * annotation processors * * @param \Magento\TestFramework\Application $application * @return array @@ -19,6 +20,7 @@ protected function _getSubscribers(\Magento\TestFramework\Application $applicati { $subscribers = parent::_getSubscribers($application); $subscribers[] = new \Magento\TestFramework\Annotation\ApiDataFixture($this->_fixturesBaseDir); + $subscribers[] = new \Magento\TestFramework\Annotation\ApiConfigFixture($this->_fixturesBaseDir); return $subscribers; } } diff --git a/dev/tests/api-functional/testsuite/Magento/GraphQl/Cms/CmsConfigTest.php b/dev/tests/api-functional/testsuite/Magento/GraphQl/Cms/CmsConfigTest.php new file mode 100644 index 000000000000..9e512881f4a0 --- /dev/null +++ b/dev/tests/api-functional/testsuite/Magento/GraphQl/Cms/CmsConfigTest.php @@ -0,0 +1,99 @@ + 'Default Store Front', + 'cms_home_page' => 'Default Store Homepage', + 'no_route' => 'default_store_no_route', + 'cms_no_route' => 'default_store_cms_no_route', + 'cms_no_cookies' => 'default_store_cms_no_cookies', + 'show_cms_breadcrumbs' => 0 + ]; + + $query + = <<graphQlQuery($query); + + $this->assertArrayHasKey('storeConfig', $response); + foreach ($expectedConfigs as $key => $expectedConfigValue) { + $this->assertEquals($expectedConfigValue, $response['storeConfig'][$key]); + } + } + + /** + * @magentoApiDataFixture Magento/Store/_files/second_store.php + * @magentoApiConfigFixture fixture_second_store_store web/default/front Test Store Front + * @magentoApiConfigFixture fixture_second_store_store web/default/cms_home_page Test Store Homepage + * @magentoApiConfigFixture fixture_second_store_store web/default/no_route test_store_no_route + * @magentoApiConfigFixture fixture_second_store_store web/default/cms_no_route test_store_cms_no_route + * @magentoApiConfigFixture fixture_second_store_store web/default/cms_no_cookies test_store_cms_no_cookies + * @magentoApiConfigFixture fixture_second_store_store web/default/show_cms_breadcrumbs 1 + */ + public function testGetNotDefaultStoreCmsConfig() + { + $expectedConfigs = [ + 'front' => 'Test Store Front', + 'cms_home_page' => 'Test Store Homepage', + 'no_route' => 'test_store_no_route', + 'cms_no_route' => 'test_store_cms_no_route', + 'cms_no_cookies' => 'test_store_cms_no_cookies', + 'show_cms_breadcrumbs' => 1 + ]; + + $query + = << $storeCodeFromFixture]; + $response = $this->graphQlQuery($query, [], '', $headerMap); + + $this->assertArrayHasKey('storeConfig', $response); + foreach ($expectedConfigs as $key => $expectedConfigValue) { + $this->assertEquals($expectedConfigValue, $response['storeConfig'][$key]); + } + } +} diff --git a/dev/tests/api-functional/testsuite/Magento/GraphQl/Theme/ThemeConfigTest.php b/dev/tests/api-functional/testsuite/Magento/GraphQl/Theme/ThemeConfigTest.php new file mode 100644 index 000000000000..4232139da28b --- /dev/null +++ b/dev/tests/api-functional/testsuite/Magento/GraphQl/Theme/ThemeConfigTest.php @@ -0,0 +1,153 @@ + 'fixture_second_store_icon.ico', + 'default_title' => 'Default Store Title', + 'title_prefix' => 'Default Store Title Prefix', + 'title_suffix' => 'Default Store Suffix', + 'default_description' => 'Default Store Description', + 'default_keywords' => 'Default Store Keywords', + 'head_includes' => 'Default Store Scripts And Stylesheets', + 'demonotice' => 1, + 'header_logo_src' => 'fixture_second_store_logo.phg', + 'logo_width' => 200, + 'logo_height' => 300, + 'welcome' => 'Default Store Welcome', + 'logo_alt' => 'Default Store Alt', + 'copyright' => 'Default Store Copyright', + 'absolute_footer' => 'Default Store Footer' + ]; + + $query + = <<graphQlQuery($query); + + $this->assertArrayHasKey('storeConfig', $response); + foreach ($expectedConfigs as $key => $expectedConfigValue) { + $this->assertEquals($expectedConfigValue, $response['storeConfig'][$key]); + } + } + + /** + * @magentoApiDataFixture Magento/Store/_files/second_store.php + * @magentoApiConfigFixture fixture_second_store_store design/head/head_shortcut_icon test_store_icon.ico + * @magentoApiConfigFixture fixture_second_store_store design/head/default_title Test Store Title + * @magentoApiConfigFixture fixture_second_store_store design/head/title_prefix Test Store Title Prefix + * @magentoApiConfigFixture fixture_second_store_store design/head/title_suffix Test Store Suffix + * @magentoApiConfigFixture fixture_second_store_store design/head/default_description Test Store Description + * @magentoApiConfigFixture fixture_second_store_store design/head/default_keywords Test Store Keywords + * @magentoApiConfigFixture fixture_second_store_store design/head/includes Test Store Scripts And Stylesheets + * @magentoApiConfigFixture fixture_second_store_store design/head/demonotice 0 + * @magentoApiConfigFixture fixture_second_store_store design/header/header_logo_src test_store_logo.phg + * @magentoApiConfigFixture fixture_second_store_store design/header/logo_width 250 + * @magentoApiConfigFixture fixture_second_store_store design/header/logo_height 350 + * @magentoApiConfigFixture fixture_second_store_store design/header/welcome Test Store Welcome + * @magentoApiConfigFixture fixture_second_store_store design/header/logo_alt Test Store Alt + * @magentoApiConfigFixture fixture_second_store_store design/footer/copyright Test Store Copyright + * @magentoApiConfigFixture fixture_second_store_store design/footer/absolute_footer Test Store Footer + */ + public function testGetNotDefaultStoreThemeConfig() + { + $expectedConfigs = [ + 'head_shortcut_icon' => 'test_store_icon.ico', + 'default_title' => 'Test Store Title', + 'title_prefix' => 'Test Store Title Prefix', + 'title_suffix' => 'Test Store Suffix', + 'default_description' => 'Test Store Description', + 'default_keywords' => 'Test Store Keywords', + 'head_includes' => 'Test Store Scripts And Stylesheets', + 'demonotice' => 0, + 'header_logo_src' => 'test_store_logo.phg', + 'logo_width' => 250, + 'logo_height' => 350, + 'welcome' => 'Test Store Welcome', + 'logo_alt' => 'Test Store Alt', + 'copyright' => 'Test Store Copyright', + 'absolute_footer' => 'Test Store Footer' + ]; + + $query + = << $storeCodeFromFixture]; + $response = $this->graphQlQuery($query, [], '', $headerMap); + + $this->assertArrayHasKey('storeConfig', $response); + foreach ($expectedConfigs as $key => $expectedConfigValue) { + $this->assertEquals($expectedConfigValue, $response['storeConfig'][$key]); + } + } +} diff --git a/dev/tests/integration/framework/Magento/TestFramework/Annotation/ConfigFixture.php b/dev/tests/integration/framework/Magento/TestFramework/Annotation/ConfigFixture.php index dcac794703a5..1ec0b3eac6fc 100644 --- a/dev/tests/integration/framework/Magento/TestFramework/Annotation/ConfigFixture.php +++ b/dev/tests/integration/framework/Magento/TestFramework/Annotation/ConfigFixture.php @@ -39,6 +39,11 @@ class ConfigFixture */ private $_storeConfigValues = []; + /** + * @var string + */ + protected $annotation = 'magentoConfigFixture'; + /** * Retrieve configuration node value * @@ -104,10 +109,10 @@ protected function _setConfigValue($configPath, $value, $storeCode = false) protected function _assignConfigData(\PHPUnit\Framework\TestCase $test) { $annotations = $test->getAnnotations(); - if (!isset($annotations['method']['magentoConfigFixture'])) { + if (!isset($annotations['method'][$this->annotation])) { return; } - foreach ($annotations['method']['magentoConfigFixture'] as $configPathAndValue) { + foreach ($annotations['method'][$this->annotation] as $configPathAndValue) { if (preg_match('/^.+?(?=_store\s)/', $configPathAndValue, $matches)) { /* Store-scoped config value */ $storeCode = $matches[0] != 'current' ? $matches[0] : null; From 14cf51a339320291c5cd6fa16a318ed1c6e7149b Mon Sep 17 00:00:00 2001 From: vitaliyboyko Date: Mon, 10 Sep 2018 05:59:59 +0000 Subject: [PATCH 22/31] GraphQL-128: fixed static issue --- .../Resolver/Store/ExtendedStoreConfigDataProvider.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/code/Magento/StoreGraphQl/Model/Resolver/Store/ExtendedStoreConfigDataProvider.php b/app/code/Magento/StoreGraphQl/Model/Resolver/Store/ExtendedStoreConfigDataProvider.php index 142f178ad5bd..84f904fb7395 100644 --- a/app/code/Magento/StoreGraphQl/Model/Resolver/Store/ExtendedStoreConfigDataProvider.php +++ b/app/code/Magento/StoreGraphQl/Model/Resolver/Store/ExtendedStoreConfigDataProvider.php @@ -55,7 +55,11 @@ public function getExtendedConfigs() $store = $this->storeManager->getStore(); $extendedConfigsData = []; foreach ($this->extendedConfigs as $key => $path) { - $extendedConfigsData[$key] = $this->scopeConfig->getValue($path, ScopeInterface::SCOPE_STORE, $store->getId()); + $extendedConfigsData[$key] = $this->scopeConfig->getValue( + $path, + ScopeInterface::SCOPE_STORE, + $store->getId() + ); } return $extendedConfigsData; From 516a22d5b4c965c9431c9acf7ed4928c3b9888dd Mon Sep 17 00:00:00 2001 From: vitaliyboyko Date: Mon, 10 Sep 2018 17:16:29 +0000 Subject: [PATCH 23/31] GraphQL-167: added support for @magentoApiConfigFixture --- .../Annotation/ApiConfigFixture.php | 27 ++++ .../TestFramework/App/MutableScopeConfig.php | 125 ++++++++++++++++++ .../Bootstrap/WebapiDocBlock.php | 4 +- .../Annotation/ConfigFixture.php | 9 +- 4 files changed, 162 insertions(+), 3 deletions(-) create mode 100644 dev/tests/api-functional/framework/Magento/TestFramework/Annotation/ApiConfigFixture.php create mode 100644 dev/tests/api-functional/framework/Magento/TestFramework/App/MutableScopeConfig.php diff --git a/dev/tests/api-functional/framework/Magento/TestFramework/Annotation/ApiConfigFixture.php b/dev/tests/api-functional/framework/Magento/TestFramework/Annotation/ApiConfigFixture.php new file mode 100644 index 000000000000..0f87c274b78b --- /dev/null +++ b/dev/tests/api-functional/framework/Magento/TestFramework/Annotation/ApiConfigFixture.php @@ -0,0 +1,27 @@ +getTestAppConfig()->isSetFlag($path, $scopeType, $scopeCode); + } + + /** + * @inheritdoc + */ + public function getValue($path, $scopeType = ScopeConfigInterface::SCOPE_TYPE_DEFAULT, $scopeCode = null) + { + return $this->getTestAppConfig()->getValue($path, $scopeType, $scopeCode); + } + + /** + * @inheritdoc + */ + public function setValue( + $path, + $value, + $scopeType = \Magento\Framework\App\Config\ScopeConfigInterface::SCOPE_TYPE_DEFAULT, + $scopeCode = null + ) { + $this->persistConfig($path, $value, $scopeType, $scopeCode); + return $this->getTestAppConfig()->setValue($path, $value, $scopeType, $scopeCode); + } + + /** + * Clean app config cache + * + * @param string|null $type + * @return void + */ + public function clean() + { + $this->getTestAppConfig()->clean(); + } + + /** + * Retrieve test app config instance + * + * @return \Magento\TestFramework\App\Config + */ + private function getTestAppConfig() + { + if (!$this->testAppConfig) { + $this->testAppConfig = ObjectManager::getInstance()->get(ScopeConfigInterface::class); + } + + return $this->testAppConfig; + } + + /** + * Persist config in database + * + * @param string $path + * @param string $value + * @param string $scopeType + * @param string|null $scopeCode + */ + private function persistConfig($path, $value, $scopeType, $scopeCode): void + { + $pathParts = explode('/', $path); + $store = ''; + if ($scopeType === \Magento\Store\Model\ScopeInterface::SCOPE_STORE) { + if ($scopeCode !== null) { + $store = ObjectManager::getInstance() + ->get(\Magento\Store\Api\StoreRepositoryInterface::class) + ->get($scopeCode) + ->getId(); + } else { + $store = ObjectManager::getInstance() + ->get(\Magento\Store\Model\StoreManagerInterface::class) + ->getStore() + ->getId(); + } + } + $configData = [ + 'section' => $pathParts[0], + 'website' => '', + 'store' => $store, + 'groups' => [ + $pathParts[1] => [ + 'fields' => [ + $pathParts[2] => [ + 'value' => $value + ] + ] + ] + ] + ]; + ObjectManager::getInstance() + ->get(\Magento\Config\Model\Config\Factory::class) + ->create(['data' => $configData]) + ->save(); + } +} diff --git a/dev/tests/api-functional/framework/Magento/TestFramework/Bootstrap/WebapiDocBlock.php b/dev/tests/api-functional/framework/Magento/TestFramework/Bootstrap/WebapiDocBlock.php index 514d8e5344d5..336456de0ed2 100644 --- a/dev/tests/api-functional/framework/Magento/TestFramework/Bootstrap/WebapiDocBlock.php +++ b/dev/tests/api-functional/framework/Magento/TestFramework/Bootstrap/WebapiDocBlock.php @@ -10,7 +10,8 @@ class WebapiDocBlock extends \Magento\TestFramework\Bootstrap\DocBlock { /** - * Get list of subscribers. In addition, register magentoApiDataFixture annotation processing. + * Get list of subscribers. In addition, register magentoApiDataFixture and magentoApiConfigFixture + * annotation processors * * @param \Magento\TestFramework\Application $application * @return array @@ -19,6 +20,7 @@ protected function _getSubscribers(\Magento\TestFramework\Application $applicati { $subscribers = parent::_getSubscribers($application); $subscribers[] = new \Magento\TestFramework\Annotation\ApiDataFixture($this->_fixturesBaseDir); + $subscribers[] = new \Magento\TestFramework\Annotation\ApiConfigFixture($this->_fixturesBaseDir); return $subscribers; } } diff --git a/dev/tests/integration/framework/Magento/TestFramework/Annotation/ConfigFixture.php b/dev/tests/integration/framework/Magento/TestFramework/Annotation/ConfigFixture.php index dcac794703a5..1ec0b3eac6fc 100644 --- a/dev/tests/integration/framework/Magento/TestFramework/Annotation/ConfigFixture.php +++ b/dev/tests/integration/framework/Magento/TestFramework/Annotation/ConfigFixture.php @@ -39,6 +39,11 @@ class ConfigFixture */ private $_storeConfigValues = []; + /** + * @var string + */ + protected $annotation = 'magentoConfigFixture'; + /** * Retrieve configuration node value * @@ -104,10 +109,10 @@ protected function _setConfigValue($configPath, $value, $storeCode = false) protected function _assignConfigData(\PHPUnit\Framework\TestCase $test) { $annotations = $test->getAnnotations(); - if (!isset($annotations['method']['magentoConfigFixture'])) { + if (!isset($annotations['method'][$this->annotation])) { return; } - foreach ($annotations['method']['magentoConfigFixture'] as $configPathAndValue) { + foreach ($annotations['method'][$this->annotation] as $configPathAndValue) { if (preg_match('/^.+?(?=_store\s)/', $configPathAndValue, $matches)) { /* Store-scoped config value */ $storeCode = $matches[0] != 'current' ? $matches[0] : null; From ee9adad953600a88210e3b7e18ba8bd23194e169 Mon Sep 17 00:00:00 2001 From: Valeriy Nayda Date: Tue, 11 Sep 2018 12:10:15 +0300 Subject: [PATCH 24/31] GraphQL-172: GraphQL modules delivery -- add block_rollback fixture --- .../Magento/Cms/_files/block_rollback.php | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 dev/tests/integration/testsuite/Magento/Cms/_files/block_rollback.php diff --git a/dev/tests/integration/testsuite/Magento/Cms/_files/block_rollback.php b/dev/tests/integration/testsuite/Magento/Cms/_files/block_rollback.php new file mode 100644 index 000000000000..9214dd543bd3 --- /dev/null +++ b/dev/tests/integration/testsuite/Magento/Cms/_files/block_rollback.php @@ -0,0 +1,30 @@ +get(BlockRepositoryInterface::class); + +/** @var SearchCriteriaBuilder $searchCriteriaBuilder */ +$searchCriteriaBuilder = $objectManager->get(SearchCriteriaBuilder::class); +$searchCriteria = $searchCriteriaBuilder->addFilter(BlockInterface::IDENTIFIER, 'fixture_block') + ->create(); +$result = $blockRepository->getList($searchCriteria); + +/** + * Tests which are wrapped with MySQL transaction clear all data by transaction rollback. + * In that case there is "if" which checks that "fixture_block" still exists in database. + */ +foreach ($result->getItems() as $item) { + $blockRepository->delete($item); +} From 5d99845507940956ae1654e61408762a9bbf8ca6 Mon Sep 17 00:00:00 2001 From: vitaliyboyko Date: Tue, 11 Sep 2018 10:08:46 +0000 Subject: [PATCH 25/31] GraphQL-128: updated lock file Signed-off-by: vitaliyboyko --- composer.lock | 3057 +++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 2588 insertions(+), 469 deletions(-) diff --git a/composer.lock b/composer.lock index 2627ab446853..31e33806b81a 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "5c8e786ec3daaabbc40f33b38bc0dffb", + "content-hash": "8031bca6665c8a52a4d44009dbfda1a7", "packages": [ { "name": "braintree/braintree_php", @@ -201,16 +201,16 @@ }, { "name": "composer/ca-bundle", - "version": "1.1.1", + "version": "1.1.2", "source": { "type": "git", "url": "https://github.com/composer/ca-bundle.git", - "reference": "d2c0a83b7533d6912e8d516756ebd34f893e9169" + "reference": "46afded9720f40b9dc63542af4e3e43a1177acb0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/d2c0a83b7533d6912e8d516756ebd34f893e9169", - "reference": "d2c0a83b7533d6912e8d516756ebd34f893e9169", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/46afded9720f40b9dc63542af4e3e43a1177acb0", + "reference": "46afded9720f40b9dc63542af4e3e43a1177acb0", "shasum": "" }, "require": { @@ -253,30 +253,30 @@ "ssl", "tls" ], - "time": "2018-03-29T19:57:20+00:00" + "time": "2018-08-08T08:57:40+00:00" }, { "name": "composer/composer", - "version": "1.6.5", + "version": "1.7.2", "source": { "type": "git", "url": "https://github.com/composer/composer.git", - "reference": "b184a92419cc9a9c4c6a09db555a94d441cb11c9" + "reference": "576aab9b5abb2ed11a1c52353a759363216a4ad2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/b184a92419cc9a9c4c6a09db555a94d441cb11c9", - "reference": "b184a92419cc9a9c4c6a09db555a94d441cb11c9", + "url": "https://api.github.com/repos/composer/composer/zipball/576aab9b5abb2ed11a1c52353a759363216a4ad2", + "reference": "576aab9b5abb2ed11a1c52353a759363216a4ad2", "shasum": "" }, "require": { "composer/ca-bundle": "^1.0", "composer/semver": "^1.0", "composer/spdx-licenses": "^1.2", + "composer/xdebug-handler": "^1.1", "justinrainbow/json-schema": "^3.0 || ^4.0 || ^5.0", "php": "^5.3.2 || ^7.0", "psr/log": "^1.0", - "seld/cli-prompt": "^1.0", "seld/jsonlint": "^1.4", "seld/phar-utils": "^1.0", "symfony/console": "^2.7 || ^3.0 || ^4.0", @@ -302,7 +302,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.6-dev" + "dev-master": "1.7-dev" } }, "autoload": { @@ -333,7 +333,7 @@ "dependency", "package" ], - "time": "2018-05-04T09:44:59+00:00" + "time": "2018-08-16T14:57:12+00:00" }, { "name": "composer/semver", @@ -458,6 +458,50 @@ ], "time": "2018-04-30T10:33:04+00:00" }, + { + "name": "composer/xdebug-handler", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "b8e9745fb9b06ea6664d8872c4505fb16df4611c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/b8e9745fb9b06ea6664d8872c4505fb16df4611c", + "reference": "b8e9745fb9b06ea6664d8872c4505fb16df4611c", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0", + "psr/log": "^1.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Composer\\XdebugHandler\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "John Stevenson", + "email": "john-stevenson@blueyonder.co.uk" + } + ], + "description": "Restarts a process without xdebug.", + "keywords": [ + "Xdebug", + "performance" + ], + "time": "2018-08-31T19:07:57+00:00" + }, { "name": "container-interop/container-interop", "version": "1.2.0", @@ -546,16 +590,16 @@ }, { "name": "guzzlehttp/ringphp", - "version": "1.1.0", + "version": "1.1.1", "source": { "type": "git", "url": "https://github.com/guzzle/RingPHP.git", - "reference": "dbbb91d7f6c191e5e405e900e3102ac7f261bc0b" + "reference": "5e2a174052995663dd68e6b5ad838afd47dd615b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/RingPHP/zipball/dbbb91d7f6c191e5e405e900e3102ac7f261bc0b", - "reference": "dbbb91d7f6c191e5e405e900e3102ac7f261bc0b", + "url": "https://api.github.com/repos/guzzle/RingPHP/zipball/5e2a174052995663dd68e6b5ad838afd47dd615b", + "reference": "5e2a174052995663dd68e6b5ad838afd47dd615b", "shasum": "" }, "require": { @@ -593,7 +637,7 @@ } ], "description": "Provides a simple API and specification that abstracts away the details of HTTP into a single PHP function.", - "time": "2015-05-20T03:37:09+00:00" + "time": "2018-07-31T13:22:33+00:00" }, { "name": "guzzlehttp/streams", @@ -828,25 +872,18 @@ }, { "name": "magento/zendframework1", - "version": "1.14.0", + "version": "1.14.1", "source": { "type": "git", "url": "https://github.com/magento/zf1.git", - "reference": "68522e5768edc8e829d1f64b620a3de3753f1141" + "reference": "4df018254c70b5b998b00a8cb1a30760f831ff0d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/magento/zf1/zipball/68522e5768edc8e829d1f64b620a3de3753f1141", - "reference": "68522e5768edc8e829d1f64b620a3de3753f1141", + "url": "https://api.github.com/repos/magento/zf1/zipball/4df018254c70b5b998b00a8cb1a30760f831ff0d", + "reference": "4df018254c70b5b998b00a8cb1a30760f831ff0d", "shasum": "" }, - "archive": { - "exclude": [ - "/demos", - "/documentation", - "/tests" - ] - }, "require": { "php": ">=5.2.11" }, @@ -865,6 +902,7 @@ "Zend_": "library/" } }, + "notification-url": "https://packagist.org/downloads/", "include-path": [ "library/" ], @@ -874,14 +912,10 @@ "description": "Magento Zend Framework 1", "homepage": "http://framework.zend.com/", "keywords": [ - "framework", - "zf1" + "ZF1", + "framework" ], - "support": { - "source": "https://github.com/magento-engcom/zf1-php-7.2-support/tree/master", - "issues": "https://github.com/magento-engcom/zf1-php-7.2-support/issues" - }, - "time": "2018-04-06T17:12:22+00:00" + "time": "2018-08-09T15:03:40+00:00" }, { "name": "monolog/monolog", @@ -1025,16 +1059,16 @@ }, { "name": "paragonie/random_compat", - "version": "v2.0.15", + "version": "v2.0.17", "source": { "type": "git", "url": "https://github.com/paragonie/random_compat.git", - "reference": "10bcb46e8f3d365170f6de9d05245aa066b81f09" + "reference": "29af24f25bab834fcbb38ad2a69fa93b867e070d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/10bcb46e8f3d365170f6de9d05245aa066b81f09", - "reference": "10bcb46e8f3d365170f6de9d05245aa066b81f09", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/29af24f25bab834fcbb38ad2a69fa93b867e070d", + "reference": "29af24f25bab834fcbb38ad2a69fa93b867e070d", "shasum": "" }, "require": { @@ -1070,7 +1104,89 @@ "pseudorandom", "random" ], - "time": "2018-06-08T15:26:40+00:00" + "time": "2018-07-04T16:31:37+00:00" + }, + { + "name": "paragonie/sodium_compat", + "version": "v1.6.4", + "source": { + "type": "git", + "url": "https://github.com/paragonie/sodium_compat.git", + "reference": "3f2fd07977541b4d630ea0365ad0eceddee5179c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/3f2fd07977541b4d630ea0365ad0eceddee5179c", + "reference": "3f2fd07977541b4d630ea0365ad0eceddee5179c", + "shasum": "" + }, + "require": { + "paragonie/random_compat": ">=1", + "php": "^5.2.4|^5.3|^5.4|^5.5|^5.6|^7" + }, + "require-dev": { + "phpunit/phpunit": "^3|^4|^5" + }, + "suggest": { + "ext-libsodium": "PHP < 7.0: Better performance, password hashing (Argon2i), secure memory management (memzero), and better security.", + "ext-sodium": "PHP >= 7.0: Better performance, password hashing (Argon2i), secure memory management (memzero), and better security." + }, + "type": "library", + "autoload": { + "files": [ + "autoload.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "ISC" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com" + }, + { + "name": "Frank Denis", + "email": "jedisct1@pureftpd.org" + } + ], + "description": "Pure PHP implementation of libsodium; uses the PHP extension if it exists", + "keywords": [ + "Authentication", + "BLAKE2b", + "ChaCha20", + "ChaCha20-Poly1305", + "Chapoly", + "Curve25519", + "Ed25519", + "EdDSA", + "Edwards-curve Digital Signature Algorithm", + "Elliptic Curve Diffie-Hellman", + "Poly1305", + "Pure-PHP cryptography", + "RFC 7748", + "RFC 8032", + "Salpoly", + "Salsa20", + "X25519", + "XChaCha20-Poly1305", + "XSalsa20-Poly1305", + "Xchacha20", + "Xsalsa20", + "aead", + "cryptography", + "ecdh", + "elliptic curve", + "elliptic curve cryptography", + "encryption", + "libsodium", + "php", + "public-key cryptography", + "secret-key cryptography", + "side-channel resistant" + ], + "time": "2018-08-29T22:02:48+00:00" }, { "name": "pelago/emogrifier", @@ -1625,54 +1741,6 @@ ], "time": "2018-06-13T15:59:06+00:00" }, - { - "name": "seld/cli-prompt", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/cli-prompt.git", - "reference": "a19a7376a4689d4d94cab66ab4f3c816019ba8dd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/cli-prompt/zipball/a19a7376a4689d4d94cab66ab4f3c816019ba8dd", - "reference": "a19a7376a4689d4d94cab66ab4f3c816019ba8dd", - "shasum": "" - }, - "require": { - "php": ">=5.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Seld\\CliPrompt\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be" - } - ], - "description": "Allows you to prompt for user input on the command line, and optionally hide the characters they type", - "keywords": [ - "cli", - "console", - "hidden", - "input", - "prompt" - ], - "time": "2017-03-18T11:32:45+00:00" - }, { "name": "seld/jsonlint", "version": "1.7.1", @@ -1768,16 +1836,16 @@ }, { "name": "symfony/console", - "version": "v4.1.1", + "version": "v4.1.4", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "70591cda56b4b47c55776ac78e157c4bb6c8b43f" + "reference": "ca80b8ced97cf07390078b29773dc384c39eee1f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/70591cda56b4b47c55776ac78e157c4bb6c8b43f", - "reference": "70591cda56b4b47c55776ac78e157c4bb6c8b43f", + "url": "https://api.github.com/repos/symfony/console/zipball/ca80b8ced97cf07390078b29773dc384c39eee1f", + "reference": "ca80b8ced97cf07390078b29773dc384c39eee1f", "shasum": "" }, "require": { @@ -1832,20 +1900,20 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2018-05-31T10:17:53+00:00" + "time": "2018-07-26T11:24:31+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v4.1.1", + "version": "v4.1.4", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "2391ed210a239868e7256eb6921b1bd83f3087b5" + "reference": "bfb30c2ad377615a463ebbc875eba64a99f6aa3e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/2391ed210a239868e7256eb6921b1bd83f3087b5", - "reference": "2391ed210a239868e7256eb6921b1bd83f3087b5", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/bfb30c2ad377615a463ebbc875eba64a99f6aa3e", + "reference": "bfb30c2ad377615a463ebbc875eba64a99f6aa3e", "shasum": "" }, "require": { @@ -1895,20 +1963,20 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2018-04-06T07:35:57+00:00" + "time": "2018-07-26T09:10:45+00:00" }, { "name": "symfony/filesystem", - "version": "v4.1.1", + "version": "v4.1.4", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "562bf7005b55fd80d26b582d28e3e10f2dd5ae9c" + "reference": "c0f5f62db218fa72195b8b8700e4b9b9cf52eb5e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/562bf7005b55fd80d26b582d28e3e10f2dd5ae9c", - "reference": "562bf7005b55fd80d26b582d28e3e10f2dd5ae9c", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/c0f5f62db218fa72195b8b8700e4b9b9cf52eb5e", + "reference": "c0f5f62db218fa72195b8b8700e4b9b9cf52eb5e", "shasum": "" }, "require": { @@ -1945,20 +2013,20 @@ ], "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", - "time": "2018-05-30T07:26:09+00:00" + "time": "2018-08-18T16:52:46+00:00" }, { "name": "symfony/finder", - "version": "v4.1.1", + "version": "v4.1.4", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "84714b8417d19e4ba02ea78a41a975b3efaafddb" + "reference": "e162f1df3102d0b7472805a5a9d5db9fcf0a8068" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/84714b8417d19e4ba02ea78a41a975b3efaafddb", - "reference": "84714b8417d19e4ba02ea78a41a975b3efaafddb", + "url": "https://api.github.com/repos/symfony/finder/zipball/e162f1df3102d0b7472805a5a9d5db9fcf0a8068", + "reference": "e162f1df3102d0b7472805a5a9d5db9fcf0a8068", "shasum": "" }, "require": { @@ -1994,29 +2062,32 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2018-06-19T21:38:16+00:00" + "time": "2018-07-26T11:24:31+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.8.0", + "version": "v1.9.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "7cc359f1b7b80fc25ed7796be7d96adc9b354bae" + "reference": "e3d826245268269cd66f8326bd8bc066687b4a19" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/7cc359f1b7b80fc25ed7796be7d96adc9b354bae", - "reference": "7cc359f1b7b80fc25ed7796be7d96adc9b354bae", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19", + "reference": "e3d826245268269cd66f8326bd8bc066687b4a19", "shasum": "" }, "require": { "php": ">=5.3.3" }, + "suggest": { + "ext-ctype": "For best performance" + }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.8-dev" + "dev-master": "1.9-dev" } }, "autoload": { @@ -2049,20 +2120,20 @@ "polyfill", "portable" ], - "time": "2018-04-30T19:57:29+00:00" + "time": "2018-08-06T14:22:27+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.8.0", + "version": "v1.9.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "3296adf6a6454a050679cde90f95350ad604b171" + "reference": "d0cd638f4634c16d8df4508e847f14e9e43168b8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/3296adf6a6454a050679cde90f95350ad604b171", - "reference": "3296adf6a6454a050679cde90f95350ad604b171", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/d0cd638f4634c16d8df4508e847f14e9e43168b8", + "reference": "d0cd638f4634c16d8df4508e847f14e9e43168b8", "shasum": "" }, "require": { @@ -2074,7 +2145,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.8-dev" + "dev-master": "1.9-dev" } }, "autoload": { @@ -2108,20 +2179,20 @@ "portable", "shim" ], - "time": "2018-04-26T10:06:28+00:00" + "time": "2018-08-06T14:22:27+00:00" }, { "name": "symfony/process", - "version": "v4.1.1", + "version": "v4.1.4", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "1d1677391ecf00d1c5b9482d6050c0c27aa3ac3a" + "reference": "86cdb930a6a855b0ab35fb60c1504cb36184f843" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/1d1677391ecf00d1c5b9482d6050c0c27aa3ac3a", - "reference": "1d1677391ecf00d1c5b9482d6050c0c27aa3ac3a", + "url": "https://api.github.com/repos/symfony/process/zipball/86cdb930a6a855b0ab35fb60c1504cb36184f843", + "reference": "86cdb930a6a855b0ab35fb60c1504cb36184f843", "shasum": "" }, "require": { @@ -2157,7 +2228,7 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2018-05-31T10:17:53+00:00" + "time": "2018-08-03T11:13:38+00:00" }, { "name": "tedivm/jshrink", @@ -2411,16 +2482,16 @@ }, { "name": "zendframework/zend-code", - "version": "3.3.0", + "version": "3.3.1", "source": { "type": "git", "url": "https://github.com/zendframework/zend-code.git", - "reference": "6b1059db5b368db769e4392c6cb6cc139e56640d" + "reference": "c21db169075c6ec4b342149f446e7b7b724f95eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-code/zipball/6b1059db5b368db769e4392c6cb6cc139e56640d", - "reference": "6b1059db5b368db769e4392c6cb6cc139e56640d", + "url": "https://api.github.com/repos/zendframework/zend-code/zipball/c21db169075c6ec4b342149f446e7b7b724f95eb", + "reference": "c21db169075c6ec4b342149f446e7b7b724f95eb", "shasum": "" }, "require": { @@ -2441,8 +2512,8 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.2-dev", - "dev-develop": "3.3-dev" + "dev-master": "3.3.x-dev", + "dev-develop": "3.4.x-dev" } }, "autoload": { @@ -2460,7 +2531,7 @@ "code", "zf2" ], - "time": "2017-10-20T15:21:32+00:00" + "time": "2018-08-13T20:36:59+00:00" }, { "name": "zendframework/zend-config", @@ -2728,16 +2799,16 @@ }, { "name": "zendframework/zend-diactoros", - "version": "1.8.0", + "version": "1.8.6", "source": { "type": "git", "url": "https://github.com/zendframework/zend-diactoros.git", - "reference": "11c9c1835e60eef6f9234377a480fcec096ebd9e" + "reference": "20da13beba0dde8fb648be3cc19765732790f46e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/11c9c1835e60eef6f9234377a480fcec096ebd9e", - "reference": "11c9c1835e60eef6f9234377a480fcec096ebd9e", + "url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/20da13beba0dde8fb648be3cc19765732790f46e", + "reference": "20da13beba0dde8fb648be3cc19765732790f46e", "shasum": "" }, "require": { @@ -2750,7 +2821,8 @@ "require-dev": { "ext-dom": "*", "ext-libxml": "*", - "phpunit/phpunit": "^5.7.16 || ^6.0.8", + "php-http/psr7-integration-tests": "dev-master", + "phpunit/phpunit": "^5.7.16 || ^6.0.8 || ^7.2.7", "zendframework/zend-coding-standard": "~1.0" }, "type": "library", @@ -2787,7 +2859,7 @@ "psr", "psr-7" ], - "time": "2018-06-27T18:52:43+00:00" + "time": "2018-09-05T19:29:37+00:00" }, { "name": "zendframework/zend-escaper", @@ -2883,16 +2955,16 @@ }, { "name": "zendframework/zend-feed", - "version": "2.10.2", + "version": "2.10.3", "source": { "type": "git", "url": "https://github.com/zendframework/zend-feed.git", - "reference": "5253f949f4ad999086ab9b408908b6c6776f24db" + "reference": "6641f4cf3f4586c63f83fd70b6d19966025c8888" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-feed/zipball/5253f949f4ad999086ab9b408908b6c6776f24db", - "reference": "5253f949f4ad999086ab9b408908b6c6776f24db", + "url": "https://api.github.com/repos/zendframework/zend-feed/zipball/6641f4cf3f4586c63f83fd70b6d19966025c8888", + "reference": "6641f4cf3f4586c63f83fd70b6d19966025c8888", "shasum": "" }, "require": { @@ -2940,7 +3012,7 @@ "feed", "zf" ], - "time": "2018-06-18T20:14:01+00:00" + "time": "2018-08-01T13:53:20+00:00" }, { "name": "zendframework/zend-filter", @@ -3085,16 +3157,16 @@ }, { "name": "zendframework/zend-http", - "version": "2.8.0", + "version": "2.8.2", "source": { "type": "git", "url": "https://github.com/zendframework/zend-http.git", - "reference": "f48b276ffa11b48dd1ae3c6bc306d6ed7958ef51" + "reference": "2c8aed3d25522618573194e7cc51351f8cd4a45b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-http/zipball/f48b276ffa11b48dd1ae3c6bc306d6ed7958ef51", - "reference": "f48b276ffa11b48dd1ae3c6bc306d6ed7958ef51", + "url": "https://api.github.com/repos/zendframework/zend-http/zipball/2c8aed3d25522618573194e7cc51351f8cd4a45b", + "reference": "2c8aed3d25522618573194e7cc51351f8cd4a45b", "shasum": "" }, "require": { @@ -3136,7 +3208,7 @@ "zend", "zf" ], - "time": "2018-04-26T21:04:50+00:00" + "time": "2018-08-13T18:47:03+00:00" }, { "name": "zendframework/zend-hydrator", @@ -4446,150 +4518,142 @@ ], "packages-dev": [ { - "name": "composer/xdebug-handler", - "version": "1.1.0", + "name": "allure-framework/allure-codeception", + "version": "1.2.7", "source": { "type": "git", - "url": "https://github.com/composer/xdebug-handler.git", - "reference": "c919dc6c62e221fc6406f861ea13433c0aa24f08" + "url": "https://github.com/allure-framework/allure-codeception.git", + "reference": "48598f4b4603b50b663bfe977260113a40912131" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/c919dc6c62e221fc6406f861ea13433c0aa24f08", - "reference": "c919dc6c62e221fc6406f861ea13433c0aa24f08", + "url": "https://api.github.com/repos/allure-framework/allure-codeception/zipball/48598f4b4603b50b663bfe977260113a40912131", + "reference": "48598f4b4603b50b663bfe977260113a40912131", "shasum": "" }, "require": { - "php": "^5.3.2 || ^7.0", - "psr/log": "^1.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5" + "allure-framework/allure-php-api": "~1.1.0", + "codeception/codeception": "~2.1", + "php": ">=5.4.0", + "symfony/filesystem": ">=2.6", + "symfony/finder": ">=2.6" }, "type": "library", "autoload": { - "psr-4": { - "Composer\\XdebugHandler\\": "src" + "psr-0": { + "Yandex": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "Apache-2.0" ], "authors": [ { - "name": "John Stevenson", - "email": "john-stevenson@blueyonder.co.uk" + "name": "Ivan Krutov", + "email": "vania-pooh@yandex-team.ru", + "role": "Developer" } ], - "description": "Restarts a process without xdebug.", + "description": "A Codeception adapter for Allure report.", + "homepage": "http://allure.qatools.ru/", "keywords": [ - "Xdebug", - "performance" - ], - "time": "2018-04-11T15:42:36+00:00" + "allure", + "attachments", + "cases", + "codeception", + "report", + "steps", + "testing" + ], + "time": "2018-03-07T11:18:27+00:00" }, { - "name": "doctrine/annotations", - "version": "v1.6.0", + "name": "allure-framework/allure-php-api", + "version": "1.1.4", "source": { "type": "git", - "url": "https://github.com/doctrine/annotations.git", - "reference": "c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5" + "url": "https://github.com/allure-framework/allure-php-adapter-api.git", + "reference": "a462a0da121681577033e13c123b6cc4e89cdc64" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5", - "reference": "c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5", + "url": "https://api.github.com/repos/allure-framework/allure-php-adapter-api/zipball/a462a0da121681577033e13c123b6cc4e89cdc64", + "reference": "a462a0da121681577033e13c123b6cc4e89cdc64", "shasum": "" }, "require": { - "doctrine/lexer": "1.*", - "php": "^7.1" - }, - "require-dev": { - "doctrine/cache": "1.*", - "phpunit/phpunit": "^6.4" + "jms/serializer": ">=0.16.0", + "moontoast/math": ">=1.1.0", + "php": ">=5.4.0", + "phpunit/phpunit": ">=4.0.0", + "ramsey/uuid": ">=3.0.0", + "symfony/http-foundation": ">=2.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.6.x-dev" - } - }, "autoload": { - "psr-4": { - "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" + "psr-0": { + "Yandex": [ + "src/", + "test/" + ] } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "Apache-2.0" ], "authors": [ { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" + "name": "Ivan Krutov", + "email": "vania-pooh@yandex-team.ru", + "role": "Developer" } ], - "description": "Docblock Annotations Parser", - "homepage": "http://www.doctrine-project.org", + "description": "PHP API for Allure adapter", + "homepage": "http://allure.qatools.ru/", "keywords": [ - "annotations", - "docblock", - "parser" + "allure", + "api", + "php", + "report" ], - "time": "2017-12-06T07:11:42+00:00" + "time": "2016-12-07T12:15:46+00:00" }, { - "name": "doctrine/instantiator", - "version": "1.1.0", + "name": "behat/gherkin", + "version": "v4.4.5", "source": { "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" + "url": "https://github.com/Behat/Gherkin.git", + "reference": "5c14cff4f955b17d20d088dec1bde61c0539ec74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", - "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "url": "https://api.github.com/repos/Behat/Gherkin/zipball/5c14cff4f955b17d20d088dec1bde61c0539ec74", + "reference": "5c14cff4f955b17d20d088dec1bde61c0539ec74", "shasum": "" }, "require": { - "php": "^7.1" + "php": ">=5.3.1" }, "require-dev": { - "athletic/athletic": "~0.1.8", - "ext-pdo": "*", - "ext-phar": "*", - "phpunit/phpunit": "^6.2.3", - "squizlabs/php_codesniffer": "^3.0.2" + "phpunit/phpunit": "~4.5|~5", + "symfony/phpunit-bridge": "~2.7|~3", + "symfony/yaml": "~2.3|~3" + }, + "suggest": { + "symfony/yaml": "If you want to parse features, represented in YAML files" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2.x-dev" + "dev-master": "4.4-dev" } }, "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + "psr-0": { + "Behat\\Gherkin": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -4598,146 +4662,1534 @@ ], "authors": [ { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.com/" + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" } ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://github.com/doctrine/instantiator", + "description": "Gherkin DSL parser for PHP 5.3", + "homepage": "http://behat.org/", "keywords": [ - "constructor", - "instantiate" + "BDD", + "Behat", + "Cucumber", + "DSL", + "gherkin", + "parser" ], - "time": "2017-07-22T11:58:36+00:00" + "time": "2016-10-30T11:50:56+00:00" }, { - "name": "doctrine/lexer", - "version": "v1.0.1", + "name": "codeception/codeception", + "version": "2.3.9", "source": { "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" + "url": "https://github.com/Codeception/Codeception.git", + "reference": "104f46fa0bde339f1bcc3a375aac21eb36e65a1e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", - "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", + "url": "https://api.github.com/repos/Codeception/Codeception/zipball/104f46fa0bde339f1bcc3a375aac21eb36e65a1e", + "reference": "104f46fa0bde339f1bcc3a375aac21eb36e65a1e", "shasum": "" }, "require": { - "php": ">=5.3.2" + "behat/gherkin": "~4.4.0", + "codeception/stub": "^1.0", + "ext-json": "*", + "ext-mbstring": "*", + "facebook/webdriver": ">=1.1.3 <2.0", + "guzzlehttp/guzzle": ">=4.1.4 <7.0", + "guzzlehttp/psr7": "~1.0", + "php": ">=5.4.0 <8.0", + "phpunit/php-code-coverage": ">=2.2.4 <6.0", + "phpunit/phpunit": ">=4.8.28 <5.0.0 || >=5.6.3 <7.0", + "sebastian/comparator": ">1.1 <3.0", + "sebastian/diff": ">=1.4 <3.0", + "symfony/browser-kit": ">=2.7 <5.0", + "symfony/console": ">=2.7 <5.0", + "symfony/css-selector": ">=2.7 <5.0", + "symfony/dom-crawler": ">=2.7 <5.0", + "symfony/event-dispatcher": ">=2.7 <5.0", + "symfony/finder": ">=2.7 <5.0", + "symfony/yaml": ">=2.7 <5.0" + }, + "require-dev": { + "codeception/specify": "~0.3", + "facebook/graph-sdk": "~5.3", + "flow/jsonpath": "~0.2", + "monolog/monolog": "~1.8", + "pda/pheanstalk": "~3.0", + "php-amqplib/php-amqplib": "~2.4", + "predis/predis": "^1.0", + "squizlabs/php_codesniffer": "~2.0", + "symfony/process": ">=2.7 <5.0", + "vlucas/phpdotenv": "^2.4.0" + }, + "suggest": { + "aws/aws-sdk-php": "For using AWS Auth in REST module and Queue module", + "codeception/phpbuiltinserver": "Start and stop PHP built-in web server for your tests", + "codeception/specify": "BDD-style code blocks", + "codeception/verify": "BDD-style assertions", + "flow/jsonpath": "For using JSONPath in REST module", + "league/factory-muffin": "For DataFactory module", + "league/factory-muffin-faker": "For Faker support in DataFactory module", + "phpseclib/phpseclib": "for SFTP option in FTP Module", + "stecman/symfony-console-completion": "For BASH autocompletion", + "symfony/phpunit-bridge": "For phpunit-bridge support" }, + "bin": [ + "codecept" + ], "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } + "branch-alias": [] + }, + "autoload": { + "psr-4": { + "Codeception\\": "src\\Codeception", + "Codeception\\Extension\\": "ext" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Bodnarchuk", + "email": "davert@mail.ua", + "homepage": "http://codegyre.com" + } + ], + "description": "BDD-style testing framework", + "homepage": "http://codeception.com/", + "keywords": [ + "BDD", + "TDD", + "acceptance testing", + "functional testing", + "unit testing" + ], + "time": "2018-02-26T23:29:41+00:00" + }, + { + "name": "codeception/stub", + "version": "1.0.4", + "source": { + "type": "git", + "url": "https://github.com/Codeception/Stub.git", + "reference": "681b62348837a5ef07d10d8a226f5bc358cc8805" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Codeception/Stub/zipball/681b62348837a5ef07d10d8a226f5bc358cc8805", + "reference": "681b62348837a5ef07d10d8a226f5bc358cc8805", + "shasum": "" + }, + "require": { + "phpunit/phpunit-mock-objects": ">2.3 <7.0" + }, + "require-dev": { + "phpunit/phpunit": ">=4.8 <8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Codeception\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Flexible Stub wrapper for PHPUnit's Mock Builder", + "time": "2018-05-17T09:31:08+00:00" + }, + { + "name": "consolidation/annotated-command", + "version": "2.8.5", + "source": { + "type": "git", + "url": "https://github.com/consolidation/annotated-command.git", + "reference": "1e8ff512072422b850b44aa721b5b303e4a5ebb3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/consolidation/annotated-command/zipball/1e8ff512072422b850b44aa721b5b303e4a5ebb3", + "reference": "1e8ff512072422b850b44aa721b5b303e4a5ebb3", + "shasum": "" + }, + "require": { + "consolidation/output-formatters": "^3.1.12", + "php": ">=5.4.0", + "psr/log": "^1", + "symfony/console": "^2.8|^3|^4", + "symfony/event-dispatcher": "^2.5|^3|^4", + "symfony/finder": "^2.5|^3|^4" + }, + "require-dev": { + "g1a/composer-test-scenarios": "^2", + "phpunit/phpunit": "^6", + "satooshi/php-coveralls": "^2", + "squizlabs/php_codesniffer": "^2.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Consolidation\\AnnotatedCommand\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Greg Anderson", + "email": "greg.1.anderson@greenknowe.org" + } + ], + "description": "Initialize Symfony Console commands from annotated command class methods.", + "time": "2018-08-18T23:51:49+00:00" + }, + { + "name": "consolidation/config", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/consolidation/config.git", + "reference": "c9fc25e9088a708637e18a256321addc0670e578" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/consolidation/config/zipball/c9fc25e9088a708637e18a256321addc0670e578", + "reference": "c9fc25e9088a708637e18a256321addc0670e578", + "shasum": "" + }, + "require": { + "dflydev/dot-access-data": "^1.1.0", + "grasmash/expander": "^1", + "php": ">=5.4.0" + }, + "require-dev": { + "g1a/composer-test-scenarios": "^1", + "phpunit/phpunit": "^5", + "satooshi/php-coveralls": "^1.0", + "squizlabs/php_codesniffer": "2.*", + "symfony/console": "^2.5|^3|^4", + "symfony/yaml": "^2.8.11|^3|^4" + }, + "suggest": { + "symfony/yaml": "Required to use Consolidation\\Config\\Loader\\YamlConfigLoader" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Consolidation\\Config\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Greg Anderson", + "email": "greg.1.anderson@greenknowe.org" + } + ], + "description": "Provide configuration services for a commandline tool.", + "time": "2018-08-07T22:57:00+00:00" + }, + { + "name": "consolidation/log", + "version": "1.0.6", + "source": { + "type": "git", + "url": "https://github.com/consolidation/log.git", + "reference": "dfd8189a771fe047bf3cd669111b2de5f1c79395" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/consolidation/log/zipball/dfd8189a771fe047bf3cd669111b2de5f1c79395", + "reference": "dfd8189a771fe047bf3cd669111b2de5f1c79395", + "shasum": "" + }, + "require": { + "php": ">=5.5.0", + "psr/log": "~1.0", + "symfony/console": "^2.8|^3|^4" + }, + "require-dev": { + "g1a/composer-test-scenarios": "^1", + "phpunit/phpunit": "4.*", + "satooshi/php-coveralls": "^2", + "squizlabs/php_codesniffer": "2.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Consolidation\\Log\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Greg Anderson", + "email": "greg.1.anderson@greenknowe.org" + } + ], + "description": "Improved Psr-3 / Psr\\Log logger based on Symfony Console components.", + "time": "2018-05-25T18:14:39+00:00" + }, + { + "name": "consolidation/output-formatters", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/consolidation/output-formatters.git", + "reference": "d78ef59aea19d3e2e5a23f90a055155ee78a0ad5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/d78ef59aea19d3e2e5a23f90a055155ee78a0ad5", + "reference": "d78ef59aea19d3e2e5a23f90a055155ee78a0ad5", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "symfony/console": "^2.8|^3|^4", + "symfony/finder": "^2.5|^3|^4" + }, + "require-dev": { + "g1a/composer-test-scenarios": "^2", + "phpunit/phpunit": "^5.7.27", + "satooshi/php-coveralls": "^2", + "squizlabs/php_codesniffer": "^2.7", + "symfony/console": "3.2.3", + "symfony/var-dumper": "^2.8|^3|^4", + "victorjonsson/markdowndocs": "^1.3" + }, + "suggest": { + "symfony/var-dumper": "For using the var_dump formatter" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Consolidation\\OutputFormatters\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Greg Anderson", + "email": "greg.1.anderson@greenknowe.org" + } + ], + "description": "Format text by applying transformations provided by plug-in formatters.", + "time": "2018-05-25T18:02:34+00:00" + }, + { + "name": "consolidation/robo", + "version": "1.3.1", + "source": { + "type": "git", + "url": "https://github.com/consolidation/Robo.git", + "reference": "31f2d2562c4e1dcde70f2659eefd59aa9c7f5b2d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/consolidation/Robo/zipball/31f2d2562c4e1dcde70f2659eefd59aa9c7f5b2d", + "reference": "31f2d2562c4e1dcde70f2659eefd59aa9c7f5b2d", + "shasum": "" + }, + "require": { + "consolidation/annotated-command": "^2.8.2", + "consolidation/config": "^1.0.10", + "consolidation/log": "~1", + "consolidation/output-formatters": "^3.1.13", + "consolidation/self-update": "^1", + "g1a/composer-test-scenarios": "^2", + "grasmash/yaml-expander": "^1.3", + "league/container": "^2.2", + "php": ">=5.5.0", + "symfony/console": "^2.8|^3|^4", + "symfony/event-dispatcher": "^2.5|^3|^4", + "symfony/filesystem": "^2.5|^3|^4", + "symfony/finder": "^2.5|^3|^4", + "symfony/process": "^2.5|^3|^4" + }, + "replace": { + "codegyre/robo": "< 1.0" + }, + "require-dev": { + "codeception/aspect-mock": "^1|^2.1.1", + "codeception/base": "^2.3.7", + "codeception/verify": "^0.3.2", + "goaop/framework": "~2.1.2", + "goaop/parser-reflection": "^1.1.0", + "natxet/cssmin": "3.0.4", + "nikic/php-parser": "^3.1.5", + "patchwork/jsqueeze": "~2", + "pear/archive_tar": "^1.4.2", + "phpunit/php-code-coverage": "~2|~4", + "satooshi/php-coveralls": "^2", + "squizlabs/php_codesniffer": "^2.8" + }, + "suggest": { + "henrikbjorn/lurker": "For monitoring filesystem changes in taskWatch", + "natxet/CssMin": "For minifying CSS files in taskMinify", + "patchwork/jsqueeze": "For minifying JS files in taskMinify", + "pear/archive_tar": "Allows tar archives to be created and extracted in taskPack and taskExtract, respectively." + }, + "bin": [ + "robo" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev", + "dev-state": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Robo\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Davert", + "email": "davert.php@resend.cc" + } + ], + "description": "Modern task runner", + "time": "2018-08-17T18:44:18+00:00" + }, + { + "name": "consolidation/self-update", + "version": "1.1.3", + "source": { + "type": "git", + "url": "https://github.com/consolidation/self-update.git", + "reference": "de33822f907e0beb0ffad24cf4b1b4fae5ada318" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/consolidation/self-update/zipball/de33822f907e0beb0ffad24cf4b1b4fae5ada318", + "reference": "de33822f907e0beb0ffad24cf4b1b4fae5ada318", + "shasum": "" + }, + "require": { + "php": ">=5.5.0", + "symfony/console": "^2.8|^3|^4", + "symfony/filesystem": "^2.5|^3|^4" + }, + "bin": [ + "scripts/release" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "SelfUpdate\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Greg Anderson", + "email": "greg.1.anderson@greenknowe.org" + }, + { + "name": "Alexander Menk", + "email": "menk@mestrona.net" + } + ], + "description": "Provides a self:update command for Symfony Console applications.", + "time": "2018-08-24T17:01:46+00:00" + }, + { + "name": "dflydev/dot-access-data", + "version": "v1.1.0", + "source": { + "type": "git", + "url": "https://github.com/dflydev/dflydev-dot-access-data.git", + "reference": "3fbd874921ab2c041e899d044585a2ab9795df8a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/3fbd874921ab2c041e899d044585a2ab9795df8a", + "reference": "3fbd874921ab2c041e899d044585a2ab9795df8a", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-0": { + "Dflydev\\DotAccessData": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dragonfly Development Inc.", + "email": "info@dflydev.com", + "homepage": "http://dflydev.com" + }, + { + "name": "Beau Simensen", + "email": "beau@dflydev.com", + "homepage": "http://beausimensen.com" + }, + { + "name": "Carlos Frutos", + "email": "carlos@kiwing.it", + "homepage": "https://github.com/cfrutos" + } + ], + "description": "Given a deep data structure, access data by dot notation.", + "homepage": "https://github.com/dflydev/dflydev-dot-access-data", + "keywords": [ + "access", + "data", + "dot", + "notation" + ], + "time": "2017-01-20T21:14:22+00:00" + }, + { + "name": "doctrine/annotations", + "version": "v1.6.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/annotations.git", + "reference": "c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5", + "reference": "c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5", + "shasum": "" + }, + "require": { + "doctrine/lexer": "1.*", + "php": "^7.1" + }, + "require-dev": { + "doctrine/cache": "1.*", + "phpunit/phpunit": "^6.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.6.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Docblock Annotations Parser", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "annotations", + "docblock", + "parser" + ], + "time": "2017-12-06T07:11:42+00:00" + }, + { + "name": "doctrine/collections", + "version": "v1.5.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/collections.git", + "reference": "a01ee38fcd999f34d9bfbcee59dbda5105449cbf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/collections/zipball/a01ee38fcd999f34d9bfbcee59dbda5105449cbf", + "reference": "a01ee38fcd999f34d9bfbcee59dbda5105449cbf", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "doctrine/coding-standard": "~0.1@dev", + "phpunit/phpunit": "^5.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\Common\\Collections\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Collections Abstraction library", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "array", + "collections", + "iterator" + ], + "time": "2017-07-22T10:37:32+00:00" + }, + { + "name": "doctrine/instantiator", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "athletic/athletic": "~0.1.8", + "ext-pdo": "*", + "ext-phar": "*", + "phpunit/phpunit": "^6.2.3", + "squizlabs/php_codesniffer": "^3.0.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://github.com/doctrine/instantiator", + "keywords": [ + "constructor", + "instantiate" + ], + "time": "2017-07-22T11:58:36+00:00" + }, + { + "name": "doctrine/lexer", + "version": "v1.0.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", + "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\Common\\Lexer\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "lexer", + "parser" + ], + "time": "2014-09-09T13:34:57+00:00" + }, + { + "name": "epfremme/swagger-php", + "version": "v2.0.0", + "source": { + "type": "git", + "url": "https://github.com/epfremmer/swagger-php.git", + "reference": "eee28a442b7e6220391ec953d3c9b936354f23bc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/epfremmer/swagger-php/zipball/eee28a442b7e6220391ec953d3c9b936354f23bc", + "reference": "eee28a442b7e6220391ec953d3c9b936354f23bc", + "shasum": "" + }, + "require": { + "doctrine/annotations": "^1.2", + "doctrine/collections": "^1.3", + "jms/serializer": "^1.1", + "php": ">=5.5", + "phpoption/phpoption": "^1.1", + "symfony/yaml": "^2.7|^3.1" + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "~4.8|~5.0", + "satooshi/php-coveralls": "^1.0" + }, + "type": "package", + "autoload": { + "psr-4": { + "Epfremme\\Swagger\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Edward Pfremmer", + "email": "epfremme@nerdery.com" + } + ], + "description": "Library for parsing swagger documentation into PHP entities for use in testing and code generation", + "time": "2016-09-26T17:24:17+00:00" + }, + { + "name": "facebook/webdriver", + "version": "1.6.0", + "source": { + "type": "git", + "url": "https://github.com/facebook/php-webdriver.git", + "reference": "bd8c740097eb9f2fc3735250fc1912bc811a954e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/facebook/php-webdriver/zipball/bd8c740097eb9f2fc3735250fc1912bc811a954e", + "reference": "bd8c740097eb9f2fc3735250fc1912bc811a954e", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "ext-json": "*", + "ext-mbstring": "*", + "ext-zip": "*", + "php": "^5.6 || ~7.0", + "symfony/process": "^2.8 || ^3.1 || ^4.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.0", + "jakub-onderka/php-parallel-lint": "^0.9.2", + "php-coveralls/php-coveralls": "^2.0", + "php-mock/php-mock-phpunit": "^1.1", + "phpunit/phpunit": "^5.7", + "sebastian/environment": "^1.3.4 || ^2.0 || ^3.0", + "squizlabs/php_codesniffer": "^2.6", + "symfony/var-dumper": "^3.3 || ^4.0" + }, + "suggest": { + "ext-SimpleXML": "For Firefox profile creation" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-community": "1.5-dev" + } + }, + "autoload": { + "psr-4": { + "Facebook\\WebDriver\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "description": "A PHP client for Selenium WebDriver", + "homepage": "https://github.com/facebook/php-webdriver", + "keywords": [ + "facebook", + "php", + "selenium", + "webdriver" + ], + "time": "2018-05-16T17:37:13+00:00" + }, + { + "name": "flow/jsonpath", + "version": "0.4.0", + "source": { + "type": "git", + "url": "https://github.com/FlowCommunications/JSONPath.git", + "reference": "f0222818d5c938e4ab668ab2e2c079bd51a27112" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FlowCommunications/JSONPath/zipball/f0222818d5c938e4ab668ab2e2c079bd51a27112", + "reference": "f0222818d5c938e4ab668ab2e2c079bd51a27112", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "peekmo/jsonpath": "dev-master", + "phpunit/phpunit": "^4.0" + }, + "type": "library", + "autoload": { + "psr-0": { + "Flow\\JSONPath": "src/", + "Flow\\JSONPath\\Test": "tests/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Stephen Frank", + "email": "stephen@flowsa.com" + } + ], + "description": "JSONPath implementation for parsing, searching and flattening arrays", + "time": "2018-03-04T16:39:47+00:00" + }, + { + "name": "friendsofphp/php-cs-fixer", + "version": "v2.12.3", + "source": { + "type": "git", + "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", + "reference": "b23d49981cfc95497d03081aeb6df6575196a0d3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/b23d49981cfc95497d03081aeb6df6575196a0d3", + "reference": "b23d49981cfc95497d03081aeb6df6575196a0d3", + "shasum": "" + }, + "require": { + "composer/semver": "^1.4", + "composer/xdebug-handler": "^1.2", + "doctrine/annotations": "^1.2", + "ext-json": "*", + "ext-tokenizer": "*", + "php": "^5.6 || >=7.0 <7.3", + "php-cs-fixer/diff": "^1.3", + "symfony/console": "^3.2 || ^4.0", + "symfony/event-dispatcher": "^3.0 || ^4.0", + "symfony/filesystem": "^3.0 || ^4.0", + "symfony/finder": "^3.0 || ^4.0", + "symfony/options-resolver": "^3.0 || ^4.0", + "symfony/polyfill-php70": "^1.0", + "symfony/polyfill-php72": "^1.4", + "symfony/process": "^3.0 || ^4.0", + "symfony/stopwatch": "^3.0 || ^4.0" + }, + "conflict": { + "hhvm": "*" + }, + "require-dev": { + "johnkary/phpunit-speedtrap": "^1.1 || ^2.0 || ^3.0", + "justinrainbow/json-schema": "^5.0", + "keradus/cli-executor": "^1.1", + "mikey179/vfsstream": "^1.6", + "php-coveralls/php-coveralls": "^2.1", + "php-cs-fixer/accessible-object": "^1.0", + "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.0.1", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.0.1", + "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1", + "phpunitgoodpractices/traits": "^1.5.1", + "symfony/phpunit-bridge": "^4.0" + }, + "suggest": { + "ext-mbstring": "For handling non-UTF8 characters in cache signature.", + "php-cs-fixer/phpunit-constraint-isidenticalstring": "For IsIdenticalString constraint.", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "For XmlMatchesXsd constraint.", + "symfony/polyfill-mbstring": "When enabling `ext-mbstring` is not possible." + }, + "bin": [ + "php-cs-fixer" + ], + "type": "application", + "autoload": { + "psr-4": { + "PhpCsFixer\\": "src/" + }, + "classmap": [ + "tests/Test/AbstractFixerTestCase.php", + "tests/Test/AbstractIntegrationCaseFactory.php", + "tests/Test/AbstractIntegrationTestCase.php", + "tests/Test/Assert/AssertTokensTrait.php", + "tests/Test/IntegrationCase.php", + "tests/Test/IntegrationCaseFactory.php", + "tests/Test/IntegrationCaseFactoryInterface.php", + "tests/Test/InternalIntegrationCaseFactory.php", + "tests/TestCase.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dariusz Rumiński", + "email": "dariusz.ruminski@gmail.com" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "A tool to automatically fix PHP code style", + "time": "2018-08-19T22:33:38+00:00" + }, + { + "name": "fzaninotto/faker", + "version": "v1.8.0", + "source": { + "type": "git", + "url": "https://github.com/fzaninotto/Faker.git", + "reference": "f72816b43e74063c8b10357394b6bba8cb1c10de" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/f72816b43e74063c8b10357394b6bba8cb1c10de", + "reference": "f72816b43e74063c8b10357394b6bba8cb1c10de", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "ext-intl": "*", + "phpunit/phpunit": "^4.8.35 || ^5.7", + "squizlabs/php_codesniffer": "^1.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8-dev" + } + }, + "autoload": { + "psr-4": { + "Faker\\": "src/Faker/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "François Zaninotto" + } + ], + "description": "Faker is a PHP library that generates fake data for you.", + "keywords": [ + "data", + "faker", + "fixtures" + ], + "time": "2018-07-12T10:23:15+00:00" + }, + { + "name": "g1a/composer-test-scenarios", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/g1a/composer-test-scenarios.git", + "reference": "a166fd15191aceab89f30c097e694b7cf3db4880" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/g1a/composer-test-scenarios/zipball/a166fd15191aceab89f30c097e694b7cf3db4880", + "reference": "a166fd15191aceab89f30c097e694b7cf3db4880", + "shasum": "" + }, + "bin": [ + "scripts/create-scenario", + "scripts/dependency-licenses", + "scripts/install-scenario" + ], + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Greg Anderson", + "email": "greg.1.anderson@greenknowe.org" + } + ], + "description": "Useful scripts for testing multiple sets of Composer dependencies.", + "time": "2018-08-08T23:37:23+00:00" + }, + { + "name": "grasmash/expander", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/grasmash/expander.git", + "reference": "95d6037344a4be1dd5f8e0b0b2571a28c397578f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/grasmash/expander/zipball/95d6037344a4be1dd5f8e0b0b2571a28c397578f", + "reference": "95d6037344a4be1dd5f8e0b0b2571a28c397578f", + "shasum": "" + }, + "require": { + "dflydev/dot-access-data": "^1.1.0", + "php": ">=5.4" + }, + "require-dev": { + "greg-1-anderson/composer-test-scenarios": "^1", + "phpunit/phpunit": "^4|^5.5.4", + "satooshi/php-coveralls": "^1.0.2|dev-master", + "squizlabs/php_codesniffer": "^2.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Grasmash\\Expander\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Matthew Grasmick" + } + ], + "description": "Expands internal property references in PHP arrays file.", + "time": "2017-12-21T22:14:55+00:00" + }, + { + "name": "grasmash/yaml-expander", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/grasmash/yaml-expander.git", + "reference": "3f0f6001ae707a24f4d9733958d77d92bf9693b1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/grasmash/yaml-expander/zipball/3f0f6001ae707a24f4d9733958d77d92bf9693b1", + "reference": "3f0f6001ae707a24f4d9733958d77d92bf9693b1", + "shasum": "" + }, + "require": { + "dflydev/dot-access-data": "^1.1.0", + "php": ">=5.4", + "symfony/yaml": "^2.8.11|^3|^4" + }, + "require-dev": { + "greg-1-anderson/composer-test-scenarios": "^1", + "phpunit/phpunit": "^4.8|^5.5.4", + "satooshi/php-coveralls": "^1.0.2|dev-master", + "squizlabs/php_codesniffer": "^2.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Grasmash\\YamlExpander\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Matthew Grasmick" + } + ], + "description": "Expands internal property references in a yaml file.", + "time": "2017-12-16T16:06:03+00:00" + }, + { + "name": "guzzlehttp/guzzle", + "version": "6.3.3", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba", + "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba", + "shasum": "" + }, + "require": { + "guzzlehttp/promises": "^1.0", + "guzzlehttp/psr7": "^1.4", + "php": ">=5.5" + }, + "require-dev": { + "ext-curl": "*", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", + "psr/log": "^1.0" + }, + "suggest": { + "psr/log": "Required for using the Log middleware" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.3-dev" + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "homepage": "http://guzzlephp.org/", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "rest", + "web service" + ], + "time": "2018-04-22T15:46:56+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "v1.3.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646", + "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", + "shasum": "" + }, + "require": { + "php": ">=5.5.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "time": "2016-12-20T10:07:11+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "1.4.2", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/f5b8a8512e2b58b0071a7280e39f14f72e05d87c", + "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "psr/http-message": "~1.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Schultze", + "homepage": "https://github.com/Tobion" + } + ], + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "request", + "response", + "stream", + "uri", + "url" + ], + "time": "2017-03-20T17:10:46+00:00" + }, + { + "name": "jms/metadata", + "version": "1.6.0", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/metadata.git", + "reference": "6a06970a10e0a532fb52d3959547123b84a3b3ab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/metadata/zipball/6a06970a10e0a532fb52d3959547123b84a3b3ab", + "reference": "6a06970a10e0a532fb52d3959547123b84a3b3ab", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "doctrine/cache": "~1.0", + "symfony/cache": "~3.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.5.x-dev" + } }, "autoload": { "psr-0": { - "Doctrine\\Common\\Lexer\\": "lib/" + "Metadata\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "Apache-2.0" ], "authors": [ { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Johannes Schmitt", + "name": "Johannes M. Schmitt", "email": "schmittjoh@gmail.com" } ], - "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.", - "homepage": "http://www.doctrine-project.org", + "description": "Class/method/property metadata management in PHP", "keywords": [ - "lexer", - "parser" + "annotations", + "metadata", + "xml", + "yaml" ], - "time": "2014-09-09T13:34:57+00:00" + "time": "2016-12-05T10:18:33+00:00" }, { - "name": "friendsofphp/php-cs-fixer", - "version": "v2.12.1", + "name": "jms/parser-lib", + "version": "1.0.0", "source": { "type": "git", - "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", - "reference": "beef6cbe6dec7205edcd143842a49f9a691859a6" + "url": "https://github.com/schmittjoh/parser-lib.git", + "reference": "c509473bc1b4866415627af0e1c6cc8ac97fa51d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/beef6cbe6dec7205edcd143842a49f9a691859a6", - "reference": "beef6cbe6dec7205edcd143842a49f9a691859a6", + "url": "https://api.github.com/repos/schmittjoh/parser-lib/zipball/c509473bc1b4866415627af0e1c6cc8ac97fa51d", + "reference": "c509473bc1b4866415627af0e1c6cc8ac97fa51d", "shasum": "" }, "require": { - "composer/semver": "^1.4", - "composer/xdebug-handler": "^1.0", - "doctrine/annotations": "^1.2", - "ext-json": "*", - "ext-tokenizer": "*", - "php": "^5.6 || >=7.0 <7.3", - "php-cs-fixer/diff": "^1.3", - "symfony/console": "^3.2 || ^4.0", - "symfony/event-dispatcher": "^3.0 || ^4.0", - "symfony/filesystem": "^3.0 || ^4.0", - "symfony/finder": "^3.0 || ^4.0", - "symfony/options-resolver": "^3.0 || ^4.0", - "symfony/polyfill-php70": "^1.0", - "symfony/polyfill-php72": "^1.4", - "symfony/process": "^3.0 || ^4.0", - "symfony/stopwatch": "^3.0 || ^4.0" + "phpoption/phpoption": ">=0.9,<2.0-dev" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-0": { + "JMS\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache2" + ], + "description": "A library for easily creating recursive-descent parsers.", + "time": "2012-11-18T18:08:43+00:00" + }, + { + "name": "jms/serializer", + "version": "1.13.0", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/serializer.git", + "reference": "00863e1d55b411cc33ad3e1de09a4c8d3aae793c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/00863e1d55b411cc33ad3e1de09a4c8d3aae793c", + "reference": "00863e1d55b411cc33ad3e1de09a4c8d3aae793c", + "shasum": "" + }, + "require": { + "doctrine/annotations": "^1.0", + "doctrine/instantiator": "^1.0.3", + "jms/metadata": "^1.3", + "jms/parser-lib": "1.*", + "php": "^5.5|^7.0", + "phpcollection/phpcollection": "~0.1", + "phpoption/phpoption": "^1.1" }, "conflict": { - "hhvm": "*" + "twig/twig": "<1.12" }, "require-dev": { - "johnkary/phpunit-speedtrap": "^1.1 || ^2.0 || ^3.0", - "justinrainbow/json-schema": "^5.0", - "keradus/cli-executor": "^1.1", - "mikey179/vfsstream": "^1.6", - "php-coveralls/php-coveralls": "^2.1", - "php-cs-fixer/accessible-object": "^1.0", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.0.1", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.0.1", - "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1", - "phpunitgoodpractices/traits": "^1.5", - "symfony/phpunit-bridge": "^4.0" + "doctrine/orm": "~2.1", + "doctrine/phpcr-odm": "^1.3|^2.0", + "ext-pdo_sqlite": "*", + "jackalope/jackalope-doctrine-dbal": "^1.1.5", + "phpunit/phpunit": "^4.8|^5.0", + "propel/propel1": "~1.7", + "psr/container": "^1.0", + "symfony/dependency-injection": "^2.7|^3.3|^4.0", + "symfony/expression-language": "^2.6|^3.0", + "symfony/filesystem": "^2.1", + "symfony/form": "~2.1|^3.0", + "symfony/translation": "^2.1|^3.0", + "symfony/validator": "^2.2|^3.0", + "symfony/yaml": "^2.1|^3.0", + "twig/twig": "~1.12|~2.0" }, "suggest": { - "ext-mbstring": "For handling non-UTF8 characters in cache signature.", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "For IsIdenticalString constraint.", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "For XmlMatchesXsd constraint.", - "symfony/polyfill-mbstring": "When enabling `ext-mbstring` is not possible." + "doctrine/cache": "Required if you like to use cache functionality.", + "doctrine/collections": "Required if you like to use doctrine collection types as ArrayCollection.", + "symfony/yaml": "Required if you'd like to serialize data to YAML format." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-1.x": "1.13-dev" + } }, - "bin": [ - "php-cs-fixer" - ], - "type": "application", "autoload": { - "psr-4": { - "PhpCsFixer\\": "src/" - }, - "classmap": [ - "tests/Test/AbstractFixerTestCase.php", - "tests/Test/AbstractIntegrationCaseFactory.php", - "tests/Test/AbstractIntegrationTestCase.php", - "tests/Test/Assert/AssertTokensTrait.php", - "tests/Test/IntegrationCase.php", - "tests/Test/IntegrationCaseFactory.php", - "tests/Test/IntegrationCaseFactoryInterface.php", - "tests/Test/InternalIntegrationCaseFactory.php", - "tests/TestCase.php" - ] + "psr-0": { + "JMS\\Serializer": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4745,16 +6197,89 @@ ], "authors": [ { - "name": "Dariusz Rumiński", - "email": "dariusz.ruminski@gmail.com" + "name": "Asmir Mustafic", + "email": "goetas@gmail.com" }, { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com" } ], - "description": "A tool to automatically fix PHP code style", - "time": "2018-06-10T08:26:56+00:00" + "description": "Library for (de-)serializing data of any complexity; supports XML, JSON, and YAML.", + "homepage": "http://jmsyst.com/libs/serializer", + "keywords": [ + "deserialization", + "jaxb", + "json", + "serialization", + "xml" + ], + "time": "2018-07-25T13:58:54+00:00" + }, + { + "name": "league/container", + "version": "2.4.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/container.git", + "reference": "43f35abd03a12977a60ffd7095efd6a7808488c0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/container/zipball/43f35abd03a12977a60ffd7095efd6a7808488c0", + "reference": "43f35abd03a12977a60ffd7095efd6a7808488c0", + "shasum": "" + }, + "require": { + "container-interop/container-interop": "^1.2", + "php": "^5.4.0 || ^7.0" + }, + "provide": { + "container-interop/container-interop-implementation": "^1.2", + "psr/container-implementation": "^1.0" + }, + "replace": { + "orno/di": "~2.0" + }, + "require-dev": { + "phpunit/phpunit": "4.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-2.x": "2.x-dev", + "dev-1.x": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Container\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Phil Bennett", + "email": "philipobenito@gmail.com", + "homepage": "http://www.philipobenito.com", + "role": "Developer" + } + ], + "description": "A fast and intuitive dependency injection container.", + "homepage": "https://github.com/thephpleague/container", + "keywords": [ + "container", + "dependency", + "di", + "injection", + "league", + "provider", + "service" + ], + "time": "2017-05-10T09:20:27+00:00" }, { "name": "lusitanian/oauth", @@ -4823,6 +6348,172 @@ ], "time": "2018-02-14T22:37:14+00:00" }, + { + "name": "magento/magento2-functional-testing-framework", + "version": "2.3.5", + "source": { + "type": "git", + "url": "https://github.com/magento/magento2-functional-testing-framework.git", + "reference": "bb1518aab82464e25ff97874da939d13ba4b6fac" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/magento/magento2-functional-testing-framework/zipball/bb1518aab82464e25ff97874da939d13ba4b6fac", + "reference": "bb1518aab82464e25ff97874da939d13ba4b6fac", + "shasum": "" + }, + "require": { + "allure-framework/allure-codeception": "~1.2.6", + "codeception/codeception": "~2.3.4", + "consolidation/robo": "^1.0.0", + "epfremme/swagger-php": "^2.0", + "flow/jsonpath": ">0.2", + "fzaninotto/faker": "^1.6", + "monolog/monolog": "^1.0", + "mustache/mustache": "~2.5", + "php": "7.0.2|7.0.4|~7.0.6|~7.1.0|~7.2.0", + "symfony/process": "^2.8 || ^3.1 || ^4.0", + "vlucas/phpdotenv": "^2.4" + }, + "require-dev": { + "brainmaestro/composer-git-hooks": "^2.3", + "codacy/coverage": "^1.4", + "codeception/aspect-mock": "^3.0", + "doctrine/cache": "<1.7.0", + "goaop/framework": "2.2.0", + "php-coveralls/php-coveralls": "^1.0", + "phpmd/phpmd": "^2.6.0", + "rregeer/phpunit-coverage-check": "^0.1.4", + "sebastian/phpcpd": "~3.0 || ~4.0", + "squizlabs/php_codesniffer": "~3.2", + "symfony/stopwatch": "~3.4.6" + }, + "bin": [ + "bin/mftf" + ], + "type": "library", + "extra": { + "hooks": { + "pre-push": "bin/all-checks" + } + }, + "autoload": { + "files": [ + "src/Magento/FunctionalTestingFramework/_bootstrap.php" + ], + "psr-4": { + "Magento\\FunctionalTestingFramework\\": "src/Magento/FunctionalTestingFramework", + "MFTF\\": "dev/tests/functional/MFTF" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "AGPL-3.0" + ], + "description": "Magento2 Functional Testing Framework", + "keywords": [ + "automation", + "functional", + "magento", + "testing" + ], + "time": "2018-08-21T16:57:34+00:00" + }, + { + "name": "moontoast/math", + "version": "1.1.2", + "source": { + "type": "git", + "url": "https://github.com/ramsey/moontoast-math.git", + "reference": "c2792a25df5cad4ff3d760dd37078fc5b6fccc79" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/moontoast-math/zipball/c2792a25df5cad4ff3d760dd37078fc5b6fccc79", + "reference": "c2792a25df5cad4ff3d760dd37078fc5b6fccc79", + "shasum": "" + }, + "require": { + "ext-bcmath": "*", + "php": ">=5.3.3" + }, + "require-dev": { + "jakub-onderka/php-parallel-lint": "^0.9.0", + "phpunit/phpunit": "^4.7|>=5.0 <5.4", + "satooshi/php-coveralls": "^0.6.1", + "squizlabs/php_codesniffer": "^2.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Moontoast\\Math\\": "src/Moontoast/Math/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" + } + ], + "description": "A mathematics library, providing functionality for large numbers", + "homepage": "https://github.com/ramsey/moontoast-math", + "keywords": [ + "bcmath", + "math" + ], + "time": "2017-02-16T16:54:46+00:00" + }, + { + "name": "mustache/mustache", + "version": "v2.12.0", + "source": { + "type": "git", + "url": "https://github.com/bobthecow/mustache.php.git", + "reference": "fe8fe72e9d580591854de404cc59a1b83ca4d19e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bobthecow/mustache.php/zipball/fe8fe72e9d580591854de404cc59a1b83ca4d19e", + "reference": "fe8fe72e9d580591854de404cc59a1b83ca4d19e", + "shasum": "" + }, + "require": { + "php": ">=5.2.4" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "~1.11", + "phpunit/phpunit": "~3.7|~4.0|~5.0" + }, + "type": "library", + "autoload": { + "psr-0": { + "Mustache": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Justin Hileman", + "email": "justin@justinhileman.info", + "homepage": "http://justinhileman.com" + } + ], + "description": "A Mustache implementation in PHP.", + "homepage": "https://github.com/bobthecow/mustache.php", + "keywords": [ + "mustache", + "templating" + ], + "time": "2017-07-11T12:54:05+00:00" + }, { "name": "myclabs/deep-copy", "version": "1.8.1", @@ -5064,6 +6755,54 @@ ], "time": "2018-02-15T16:58:55+00:00" }, + { + "name": "phpcollection/phpcollection", + "version": "0.5.0", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-collection.git", + "reference": "f2bcff45c0da7c27991bbc1f90f47c4b7fb434a6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-collection/zipball/f2bcff45c0da7c27991bbc1f90f47c4b7fb434a6", + "reference": "f2bcff45c0da7c27991bbc1f90f47c4b7fb434a6", + "shasum": "" + }, + "require": { + "phpoption/phpoption": "1.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.4-dev" + } + }, + "autoload": { + "psr-0": { + "PhpCollection": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache2" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "General-Purpose Collection Library for PHP", + "keywords": [ + "collection", + "list", + "map", + "sequence", + "set" + ], + "time": "2015-05-17T12:39:23+00:00" + }, { "name": "phpdocumentor/reflection-common", "version": "1.0.1", @@ -5282,18 +7021,68 @@ ], "time": "2017-01-20T14:41:10+00:00" }, + { + "name": "phpoption/phpoption", + "version": "1.5.0", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/94e644f7d2051a5f0fcf77d81605f152eecff0ed", + "reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "4.7.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-0": { + "PhpOption\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache2" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Option Type for PHP", + "keywords": [ + "language", + "option", + "php", + "type" + ], + "time": "2015-07-25T16:39:46+00:00" + }, { "name": "phpspec/prophecy", - "version": "1.7.6", + "version": "1.8.0", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "33a7e3c4fda54e912ff6338c48823bd5c0f0b712" + "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/33a7e3c4fda54e912ff6338c48823bd5c0f0b712", - "reference": "33a7e3c4fda54e912ff6338c48823bd5c0f0b712", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06", + "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06", "shasum": "" }, "require": { @@ -5305,12 +7094,12 @@ }, "require-dev": { "phpspec/phpspec": "^2.5|^3.2", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5" + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.7.x-dev" + "dev-master": "1.8.x-dev" } }, "autoload": { @@ -5343,7 +7132,7 @@ "spy", "stub" ], - "time": "2018-04-18T13:57:24+00:00" + "time": "2018-08-05T17:53:17+00:00" }, { "name": "phpunit/php-code-coverage", @@ -5596,16 +7385,16 @@ }, { "name": "phpunit/phpunit", - "version": "6.5.8", + "version": "6.5.13", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "4f21a3c6b97c42952fd5c2837bb354ec0199b97b" + "reference": "0973426fb012359b2f18d3bd1e90ef1172839693" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/4f21a3c6b97c42952fd5c2837bb354ec0199b97b", - "reference": "4f21a3c6b97c42952fd5c2837bb354ec0199b97b", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0973426fb012359b2f18d3bd1e90ef1172839693", + "reference": "0973426fb012359b2f18d3bd1e90ef1172839693", "shasum": "" }, "require": { @@ -5623,7 +7412,7 @@ "phpunit/php-file-iterator": "^1.4.3", "phpunit/php-text-template": "^1.2.1", "phpunit/php-timer": "^1.0.9", - "phpunit/phpunit-mock-objects": "^5.0.5", + "phpunit/phpunit-mock-objects": "^5.0.9", "sebastian/comparator": "^2.1", "sebastian/diff": "^2.0", "sebastian/environment": "^3.1", @@ -5676,20 +7465,20 @@ "testing", "xunit" ], - "time": "2018-04-10T11:38:34+00:00" + "time": "2018-09-08T15:10:43+00:00" }, { "name": "phpunit/phpunit-mock-objects", - "version": "5.0.7", + "version": "5.0.10", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "3eaf040f20154d27d6da59ca2c6e28ac8fd56dce" + "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/3eaf040f20154d27d6da59ca2c6e28ac8fd56dce", - "reference": "3eaf040f20154d27d6da59ca2c6e28ac8fd56dce", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/cd1cf05c553ecfec36b170070573e540b67d3f1f", + "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f", "shasum": "" }, "require": { @@ -5702,7 +7491,7 @@ "phpunit/phpunit": "<6.0" }, "require-dev": { - "phpunit/phpunit": "^6.5" + "phpunit/phpunit": "^6.5.11" }, "suggest": { "ext-soap": "*" @@ -5735,7 +7524,7 @@ "mock", "xunit" ], - "time": "2018-05-29T13:50:43+00:00" + "time": "2018-08-09T05:50:03+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", @@ -6314,158 +8103,396 @@ "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", "shasum": "" }, - "require": { - "php": ">=5.6.0" + "require": { + "php": ">=5.6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "time": "2015-07-28T20:34:47+00:00" + }, + { + "name": "sebastian/version", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "time": "2016-10-03T07:35:21+00:00" + }, + { + "name": "squizlabs/php_codesniffer", + "version": "3.3.0", + "source": { + "type": "git", + "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", + "reference": "d86873af43b4aa9d1f39a3601cc0cfcf02b25266" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/d86873af43b4aa9d1f39a3601cc0cfcf02b25266", + "reference": "d86873af43b4aa9d1f39a3601cc0cfcf02b25266", + "shasum": "" + }, + "require": { + "ext-simplexml": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" + }, + "bin": [ + "bin/phpcs", + "bin/phpcbf" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Greg Sherwood", + "role": "lead" + } + ], + "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "homepage": "http://www.squizlabs.com/php-codesniffer", + "keywords": [ + "phpcs", + "standards" + ], + "time": "2018-06-06T23:58:19+00:00" + }, + { + "name": "symfony/browser-kit", + "version": "v4.1.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/browser-kit.git", + "reference": "c55fe9257003b2d95c0211b3f6941e8dfd26dffd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/c55fe9257003b2d95c0211b3f6941e8dfd26dffd", + "reference": "c55fe9257003b2d95c0211b3f6941e8dfd26dffd", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/dom-crawler": "~3.4|~4.0" + }, + "require-dev": { + "symfony/css-selector": "~3.4|~4.0", + "symfony/process": "~3.4|~4.0" + }, + "suggest": { + "symfony/process": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\BrowserKit\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony BrowserKit Component", + "homepage": "https://symfony.com", + "time": "2018-07-26T09:10:45+00:00" + }, + { + "name": "symfony/config", + "version": "v4.1.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/config.git", + "reference": "76015a3cc372b14d00040ff58e18e29f69eba717" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/config/zipball/76015a3cc372b14d00040ff58e18e29f69eba717", + "reference": "76015a3cc372b14d00040ff58e18e29f69eba717", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/filesystem": "~3.4|~4.0", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "symfony/finder": "<3.4" + }, + "require-dev": { + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/event-dispatcher": "~3.4|~4.0", + "symfony/finder": "~3.4|~4.0", + "symfony/yaml": "~3.4|~4.0" + }, + "suggest": { + "symfony/yaml": "To use the yaml reference dumper" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "4.1-dev" } }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\Config\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "time": "2015-07-28T20:34:47+00:00" + "description": "Symfony Config Component", + "homepage": "https://symfony.com", + "time": "2018-08-08T06:37:38+00:00" }, { - "name": "sebastian/version", - "version": "2.0.1", + "name": "symfony/css-selector", + "version": "v4.1.4", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" + "url": "https://github.com/symfony/css-selector.git", + "reference": "2a4df7618f869b456f9096781e78c57b509d76c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/2a4df7618f869b456f9096781e78c57b509d76c7", + "reference": "2a4df7618f869b456f9096781e78c57b509d76c7", "shasum": "" }, "require": { - "php": ">=5.6" + "php": "^7.1.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "4.1-dev" } }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\CssSelector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", - "time": "2016-10-03T07:35:21+00:00" + "description": "Symfony CssSelector Component", + "homepage": "https://symfony.com", + "time": "2018-07-26T09:10:45+00:00" }, { - "name": "squizlabs/php_codesniffer", - "version": "3.3.0", + "name": "symfony/dependency-injection", + "version": "v4.1.4", "source": { "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "d86873af43b4aa9d1f39a3601cc0cfcf02b25266" + "url": "https://github.com/symfony/dependency-injection.git", + "reference": "bae4983003c9d451e278504d7d9b9d7fc1846873" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/d86873af43b4aa9d1f39a3601cc0cfcf02b25266", - "reference": "d86873af43b4aa9d1f39a3601cc0cfcf02b25266", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/bae4983003c9d451e278504d7d9b9d7fc1846873", + "reference": "bae4983003c9d451e278504d7d9b9d7fc1846873", "shasum": "" }, "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" + "php": "^7.1.3", + "psr/container": "^1.0" + }, + "conflict": { + "symfony/config": "<4.1.1", + "symfony/finder": "<3.4", + "symfony/proxy-manager-bridge": "<3.4", + "symfony/yaml": "<3.4" + }, + "provide": { + "psr/container-implementation": "1.0" }, "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" + "symfony/config": "~4.1", + "symfony/expression-language": "~3.4|~4.0", + "symfony/yaml": "~3.4|~4.0" + }, + "suggest": { + "symfony/config": "", + "symfony/expression-language": "For using expressions in service container configuration", + "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required", + "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", + "symfony/yaml": "" }, - "bin": [ - "bin/phpcs", - "bin/phpcbf" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "3.x-dev" + "dev-master": "4.1-dev" } }, + "autoload": { + "psr-4": { + "Symfony\\Component\\DependencyInjection\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Greg Sherwood", - "role": "lead" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "http://www.squizlabs.com/php-codesniffer", - "keywords": [ - "phpcs", - "standards" - ], - "time": "2018-06-06T23:58:19+00:00" + "description": "Symfony DependencyInjection Component", + "homepage": "https://symfony.com", + "time": "2018-08-08T11:48:58+00:00" }, { - "name": "symfony/config", - "version": "v4.1.1", + "name": "symfony/dom-crawler", + "version": "v4.1.4", "source": { "type": "git", - "url": "https://github.com/symfony/config.git", - "reference": "e57e7b573df9d0eaa8c0152768c708ee7ea2b8e5" + "url": "https://github.com/symfony/dom-crawler.git", + "reference": "1c4519d257e652404c3aa550207ccd8ada66b38e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/e57e7b573df9d0eaa8c0152768c708ee7ea2b8e5", - "reference": "e57e7b573df9d0eaa8c0152768c708ee7ea2b8e5", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/1c4519d257e652404c3aa550207ccd8ada66b38e", + "reference": "1c4519d257e652404c3aa550207ccd8ada66b38e", "shasum": "" }, "require": { "php": "^7.1.3", - "symfony/filesystem": "~3.4|~4.0", - "symfony/polyfill-ctype": "~1.8" - }, - "conflict": { - "symfony/finder": "<3.4" + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.0" }, "require-dev": { - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/event-dispatcher": "~3.4|~4.0", - "symfony/finder": "~3.4|~4.0", - "symfony/yaml": "~3.4|~4.0" + "symfony/css-selector": "~3.4|~4.0" }, "suggest": { - "symfony/yaml": "To use the yaml reference dumper" + "symfony/css-selector": "" }, "type": "library", "extra": { @@ -6475,7 +8502,7 @@ }, "autoload": { "psr-4": { - "Symfony\\Component\\Config\\": "" + "Symfony\\Component\\DomCrawler\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -6495,48 +8522,31 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Config Component", + "description": "Symfony DomCrawler Component", "homepage": "https://symfony.com", - "time": "2018-06-20T11:15:17+00:00" + "time": "2018-07-26T11:00:49+00:00" }, { - "name": "symfony/dependency-injection", - "version": "v4.1.1", + "name": "symfony/http-foundation", + "version": "v4.1.4", "source": { "type": "git", - "url": "https://github.com/symfony/dependency-injection.git", - "reference": "e761828a85d7dfc00b927f94ccbe1851ce0b6535" + "url": "https://github.com/symfony/http-foundation.git", + "reference": "3a5c91e133b220bb882b3cd773ba91bf39989345" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/e761828a85d7dfc00b927f94ccbe1851ce0b6535", - "reference": "e761828a85d7dfc00b927f94ccbe1851ce0b6535", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/3a5c91e133b220bb882b3cd773ba91bf39989345", + "reference": "3a5c91e133b220bb882b3cd773ba91bf39989345", "shasum": "" }, "require": { "php": "^7.1.3", - "psr/container": "^1.0" - }, - "conflict": { - "symfony/config": "<4.1.1", - "symfony/finder": "<3.4", - "symfony/proxy-manager-bridge": "<3.4", - "symfony/yaml": "<3.4" - }, - "provide": { - "psr/container-implementation": "1.0" + "symfony/polyfill-mbstring": "~1.1" }, "require-dev": { - "symfony/config": "~4.1", - "symfony/expression-language": "~3.4|~4.0", - "symfony/yaml": "~3.4|~4.0" - }, - "suggest": { - "symfony/config": "", - "symfony/expression-language": "For using expressions in service container configuration", - "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required", - "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", - "symfony/yaml": "" + "predis/predis": "~1.0", + "symfony/expression-language": "~3.4|~4.0" }, "type": "library", "extra": { @@ -6546,7 +8556,7 @@ }, "autoload": { "psr-4": { - "Symfony\\Component\\DependencyInjection\\": "" + "Symfony\\Component\\HttpFoundation\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -6566,22 +8576,22 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony DependencyInjection Component", + "description": "Symfony HttpFoundation Component", "homepage": "https://symfony.com", - "time": "2018-06-25T11:12:43+00:00" + "time": "2018-08-27T17:47:02+00:00" }, { "name": "symfony/options-resolver", - "version": "v4.1.1", + "version": "v4.1.4", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "45cdcc8a96ef92b43a50723e6d1f5f83096e8cef" + "reference": "1913f1962477cdbb13df951f8147d5da1fe2412c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/45cdcc8a96ef92b43a50723e6d1f5f83096e8cef", - "reference": "45cdcc8a96ef92b43a50723e6d1f5f83096e8cef", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/1913f1962477cdbb13df951f8147d5da1fe2412c", + "reference": "1913f1962477cdbb13df951f8147d5da1fe2412c", "shasum": "" }, "require": { @@ -6622,30 +8632,30 @@ "configuration", "options" ], - "time": "2018-05-31T10:17:53+00:00" + "time": "2018-07-26T08:55:25+00:00" }, { "name": "symfony/polyfill-php70", - "version": "v1.8.0", + "version": "v1.9.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php70.git", - "reference": "77454693d8f10dd23bb24955cffd2d82db1007a6" + "reference": "1e24b0c4a56d55aaf368763a06c6d1c7d3194934" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/77454693d8f10dd23bb24955cffd2d82db1007a6", - "reference": "77454693d8f10dd23bb24955cffd2d82db1007a6", + "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/1e24b0c4a56d55aaf368763a06c6d1c7d3194934", + "reference": "1e24b0c4a56d55aaf368763a06c6d1c7d3194934", "shasum": "" }, "require": { - "paragonie/random_compat": "~1.0|~2.0", + "paragonie/random_compat": "~1.0|~2.0|~9.99", "php": ">=5.3.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.8-dev" + "dev-master": "1.9-dev" } }, "autoload": { @@ -6681,20 +8691,20 @@ "portable", "shim" ], - "time": "2018-04-26T10:06:28+00:00" + "time": "2018-08-06T14:22:27+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.8.0", + "version": "v1.9.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "a4576e282d782ad82397f3e4ec1df8e0f0cafb46" + "reference": "95c50420b0baed23852452a7f0c7b527303ed5ae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/a4576e282d782ad82397f3e4ec1df8e0f0cafb46", - "reference": "a4576e282d782ad82397f3e4ec1df8e0f0cafb46", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/95c50420b0baed23852452a7f0c7b527303ed5ae", + "reference": "95c50420b0baed23852452a7f0c7b527303ed5ae", "shasum": "" }, "require": { @@ -6703,7 +8713,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.8-dev" + "dev-master": "1.9-dev" } }, "autoload": { @@ -6736,20 +8746,20 @@ "portable", "shim" ], - "time": "2018-04-26T10:06:28+00:00" + "time": "2018-08-06T14:22:27+00:00" }, { "name": "symfony/stopwatch", - "version": "v4.1.1", + "version": "v4.1.4", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "07463bbbbbfe119045a24c4a516f92ebd2752784" + "reference": "966c982df3cca41324253dc0c7ffe76b6076b705" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/07463bbbbbfe119045a24c4a516f92ebd2752784", - "reference": "07463bbbbbfe119045a24c4a516f92ebd2752784", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/966c982df3cca41324253dc0c7ffe76b6076b705", + "reference": "966c982df3cca41324253dc0c7ffe76b6076b705", "shasum": "" }, "require": { @@ -6785,7 +8795,66 @@ ], "description": "Symfony Stopwatch Component", "homepage": "https://symfony.com", - "time": "2018-02-19T16:51:42+00:00" + "time": "2018-07-26T11:00:49+00:00" + }, + { + "name": "symfony/yaml", + "version": "v3.4.15", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "c2f4812ead9f847cb69e90917ca7502e6892d6b8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/c2f4812ead9f847cb69e90917ca7502e6892d6b8", + "reference": "c2f4812ead9f847cb69e90917ca7502e6892d6b8", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "symfony/console": "<3.4" + }, + "require-dev": { + "symfony/console": "~3.4|~4.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Yaml Component", + "homepage": "https://symfony.com", + "time": "2018-08-10T07:34:36+00:00" }, { "name": "theseer/fdomdocument", @@ -6867,6 +8936,56 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "time": "2017-04-07T12:08:54+00:00" }, + { + "name": "vlucas/phpdotenv", + "version": "v2.5.1", + "source": { + "type": "git", + "url": "https://github.com/vlucas/phpdotenv.git", + "reference": "8abb4f9aa89ddea9d52112c65bbe8d0125e2fa8e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/8abb4f9aa89ddea9d52112c65bbe8d0125e2fa8e", + "reference": "8abb4f9aa89ddea9d52112c65bbe8d0125e2fa8e", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev" + } + }, + "autoload": { + "psr-4": { + "Dotenv\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Vance Lucas", + "email": "vance@vancelucas.com", + "homepage": "http://www.vancelucas.com" + } + ], + "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", + "keywords": [ + "dotenv", + "env", + "environment" + ], + "time": "2018-07-29T20:33:41+00:00" + }, { "name": "webmozart/assert", "version": "1.3.0", From 6b492d58a2a3cf7c07b0a532b4d4d3f97fc2031c Mon Sep 17 00:00:00 2001 From: vitaliyboyko Date: Tue, 11 Sep 2018 10:14:46 +0000 Subject: [PATCH 26/31] GraphQL-128: removed accidentally added file Signed-off-by: vitaliyboyko --- .../AdminNotification/Test/Mftf/composer.json | 20 ------------------- 1 file changed, 20 deletions(-) delete mode 100644 app/code/Magento/AdminNotification/Test/Mftf/composer.json diff --git a/app/code/Magento/AdminNotification/Test/Mftf/composer.json b/app/code/Magento/AdminNotification/Test/Mftf/composer.json deleted file mode 100644 index 6dcd053378c1..000000000000 --- a/app/code/Magento/AdminNotification/Test/Mftf/composer.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "magento/functional-test-module-admin-notification", - "description": "N/A", - "config": { - "sort-packages": true - }, - "require": { - "php": "~7.1.3||~7.2.0", - "magento/magento2-functional-testing-framework": "2.2.0", - "magento/functional-test-module-backend": "100.0.0-dev", - "magento/functional-test-module-media-storage": "100.0.0-dev", - "magento/functional-test-module-store": "100.0.0-dev", - "magento/functional-test-module-ui": "100.0.0-dev" - }, - "type": "magento2-test", - "license": [ - "OSL-3.0", - "AFL-3.0" - ] -} From 2fda32ccef9c3d9cbfde6f2818f9a354d2fe5d6d Mon Sep 17 00:00:00 2001 From: vitaliyboyko Date: Tue, 11 Sep 2018 10:55:32 +0000 Subject: [PATCH 27/31] GraphQL-128: uskiped and fixed inventory test Signed-off-by: vitaliyboyko --- .../GraphQl/CatalogInventory/ProductOnlyXLeftInStockTest.php | 3 +-- .../GraphQl/CatalogInventory/ProductStockStatusTest.php | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/dev/tests/api-functional/testsuite/Magento/GraphQl/CatalogInventory/ProductOnlyXLeftInStockTest.php b/dev/tests/api-functional/testsuite/Magento/GraphQl/CatalogInventory/ProductOnlyXLeftInStockTest.php index 4e49bb63e49a..d45fa5d77d13 100644 --- a/dev/tests/api-functional/testsuite/Magento/GraphQl/CatalogInventory/ProductOnlyXLeftInStockTest.php +++ b/dev/tests/api-functional/testsuite/Magento/GraphQl/CatalogInventory/ProductOnlyXLeftInStockTest.php @@ -39,11 +39,10 @@ public function testQueryProductOnlyXLeftInStockDisabled() /** * @magentoApiDataFixture Magento/Catalog/_files/product_simple_with_all_fields.php - * @magentoConfigFixture default_store cataloginventory/options/stock_threshold_qty 120 + * @magentoApiConfigFixture default_store cataloginventory/options/stock_threshold_qty 120 */ public function testQueryProductOnlyXLeftInStockEnabled() { - $this->markTestIncomplete('https://github.com/magento/graphql-ce/issues/167'); $productSku = 'simple'; $query = <<markTestIncomplete('https://github.com/magento/graphql-ce/issues/167'); $productSku = 'simple'; $query = << Date: Tue, 11 Sep 2018 14:39:59 +0000 Subject: [PATCH 28/31] GraphQL-128: removed unused injection Signed-off-by: vitaliyboyko --- .../BundleGraphQl/Model/Resolver/BundleItemLinks.php | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/app/code/Magento/BundleGraphQl/Model/Resolver/BundleItemLinks.php b/app/code/Magento/BundleGraphQl/Model/Resolver/BundleItemLinks.php index bdad27452db1..7b1f51b43348 100644 --- a/app/code/Magento/BundleGraphQl/Model/Resolver/BundleItemLinks.php +++ b/app/code/Magento/BundleGraphQl/Model/Resolver/BundleItemLinks.php @@ -11,7 +11,6 @@ use Magento\Framework\GraphQl\Schema\Type\ResolveInfo; use Magento\BundleGraphQl\Model\Resolver\Links\Collection; use Magento\Framework\GraphQl\Config\Element\Field; -use Magento\Framework\GraphQl\Query\Resolver\ValueFactory; use Magento\Framework\GraphQl\Query\ResolverInterface; /** @@ -24,18 +23,11 @@ class BundleItemLinks implements ResolverInterface */ private $linkCollection; - /** - * @var ValueFactory - */ - private $valueFactory; - /** * @param Collection $linkCollection - * @param ValueFactory $valueFactory */ public function __construct( - Collection $linkCollection, - ValueFactory $valueFactory + Collection $linkCollection ) { $this->linkCollection = $linkCollection; } From 7bcd0ec7df473c93db6ba124900827b7bbd250e0 Mon Sep 17 00:00:00 2001 From: Valeriy Nayda Date: Wed, 12 Sep 2018 18:45:37 +0300 Subject: [PATCH 29/31] GraphQL-130: Extend store config coverage --- .../Magento/CmsGraphQl/etc/graphql/di.xml | 4 +- .../Store/ExtendedStoreConfigDataProvider.php | 67 ------------------ .../Store/StoreConfigDataProvider.php | 69 ++++++++++++++----- .../Model/Resolver/StoreConfigResolver.php | 18 +---- .../Magento/ThemeGraphQl/etc/graphql/di.xml | 4 +- 5 files changed, 58 insertions(+), 104 deletions(-) delete mode 100644 app/code/Magento/StoreGraphQl/Model/Resolver/Store/ExtendedStoreConfigDataProvider.php diff --git a/app/code/Magento/CmsGraphQl/etc/graphql/di.xml b/app/code/Magento/CmsGraphQl/etc/graphql/di.xml index 7764ec136900..78c1071d8e07 100644 --- a/app/code/Magento/CmsGraphQl/etc/graphql/di.xml +++ b/app/code/Magento/CmsGraphQl/etc/graphql/di.xml @@ -6,9 +6,9 @@ */ --> - + - + web/default/front web/default/cms_home_page web/default/no_route diff --git a/app/code/Magento/StoreGraphQl/Model/Resolver/Store/ExtendedStoreConfigDataProvider.php b/app/code/Magento/StoreGraphQl/Model/Resolver/Store/ExtendedStoreConfigDataProvider.php deleted file mode 100644 index 84f904fb7395..000000000000 --- a/app/code/Magento/StoreGraphQl/Model/Resolver/Store/ExtendedStoreConfigDataProvider.php +++ /dev/null @@ -1,67 +0,0 @@ -scopeConfig = $scopeConfig; - $this->storeManager = $storeManager; - $this->extendedConfigs = $extendedConfigs; - } - - /** - * Get data from ScopeConfig by path's defined in DI config - * @return array - */ - public function getExtendedConfigs() - { - $store = $this->storeManager->getStore(); - $extendedConfigsData = []; - foreach ($this->extendedConfigs as $key => $path) { - $extendedConfigsData[$key] = $this->scopeConfig->getValue( - $path, - ScopeInterface::SCOPE_STORE, - $store->getId() - ); - } - - return $extendedConfigsData; - } -} diff --git a/app/code/Magento/StoreGraphQl/Model/Resolver/Store/StoreConfigDataProvider.php b/app/code/Magento/StoreGraphQl/Model/Resolver/Store/StoreConfigDataProvider.php index e36c37b6205d..ef64750c6016 100644 --- a/app/code/Magento/StoreGraphQl/Model/Resolver/Store/StoreConfigDataProvider.php +++ b/app/code/Magento/StoreGraphQl/Model/Resolver/Store/StoreConfigDataProvider.php @@ -7,9 +7,10 @@ namespace Magento\StoreGraphQl\Model\Resolver\Store; +use Magento\Framework\App\Config\ScopeConfigInterface; use Magento\Store\Api\StoreConfigManagerInterface; -use Magento\Store\Api\StoreRepositoryInterface; -use Magento\Store\Api\StoreResolverInterface; +use Magento\Store\Model\ScopeInterface; +use Magento\Store\Model\StoreManagerInterface; /** * StoreConfig field data provider, used for GraphQL request processing. @@ -22,39 +23,56 @@ class StoreConfigDataProvider private $storeConfigManager; /** - * @var StoreResolverInterface + * @var StoreManagerInterface */ - private $storeResolver; + private $storeManager; /** - * @var StoreRepositoryInterface + * @var ScopeConfigInterface */ - private $storeRepository; + private $scopeConfig; + + /** + * @var array + */ + private $extendedConfigData; /** * @param StoreConfigManagerInterface $storeConfigManager - * @param StoreResolverInterface $storeResolver - * @param StoreRepositoryInterface $storeRepository + * @param StoreManagerInterface $storeManager + * @param ScopeConfigInterface $scopeConfig + * @param array $extendedConfigData */ public function __construct( StoreConfigManagerInterface $storeConfigManager, - StoreResolverInterface $storeResolver, - StoreRepositoryInterface $storeRepository + StoreManagerInterface $storeManager, + ScopeConfigInterface $scopeConfig, + array $extendedConfigData = [] ) { $this->storeConfigManager = $storeConfigManager; - $this->storeResolver = $storeResolver; - $this->storeRepository = $storeRepository; + $this->storeManager = $storeManager; + $this->scopeConfig = $scopeConfig; + $this->extendedConfigData = $extendedConfigData; + } + + /** + * @return array + */ + public function getStoreConfigData(): array + { + $storeConfigData = array_merge( + $this->getBaseConfigData(), + $this->getExtendedConfigData() + ); + return $storeConfigData; } /** - * Get store config for current store - * * @return array */ - public function getStoreConfig() : array + private function getBaseConfigData() : array { - $storeId = $this->storeResolver->getCurrentStoreId(); - $store = $this->storeRepository->getById($storeId); + $store = $this->storeManager->getStore(); $storeConfig = current($this->storeConfigManager->getStoreConfigs([$store->getCode()])); $storeConfigData = [ @@ -77,4 +95,21 @@ public function getStoreConfig() : array ]; return $storeConfigData; } + + /** + * @return array + */ + private function getExtendedConfigData() + { + $store = $this->storeManager->getStore(); + $extendedConfigData = []; + foreach ($this->extendedConfigData as $key => $path) { + $extendedConfigData[$key] = $this->scopeConfig->getValue( + $path, + ScopeInterface::SCOPE_STORE, + $store->getId() + ); + } + return $extendedConfigData; + } } diff --git a/app/code/Magento/StoreGraphQl/Model/Resolver/StoreConfigResolver.php b/app/code/Magento/StoreGraphQl/Model/Resolver/StoreConfigResolver.php index 95578084a737..9c426172de85 100644 --- a/app/code/Magento/StoreGraphQl/Model/Resolver/StoreConfigResolver.php +++ b/app/code/Magento/StoreGraphQl/Model/Resolver/StoreConfigResolver.php @@ -10,7 +10,6 @@ use Magento\Framework\GraphQl\Config\Element\Field; use Magento\Framework\GraphQl\Query\ResolverInterface; use Magento\Framework\GraphQl\Schema\Type\ResolveInfo; -use Magento\StoreGraphQl\Model\Resolver\Store\ExtendedStoreConfigDataProvider; use Magento\StoreGraphQl\Model\Resolver\Store\StoreConfigDataProvider; /** @@ -23,21 +22,13 @@ class StoreConfigResolver implements ResolverInterface */ private $storeConfigDataProvider; - /** - * @var ExtendedStoreConfigDataProvider - */ - private $extendedStoreConfigsDataProvider; - /** * @param StoreConfigDataProvider $storeConfigsDataProvider - * @param ExtendedStoreConfigDataProvider $extendedStoreConfigsDataProvider */ public function __construct( - StoreConfigDataProvider $storeConfigsDataProvider, - ExtendedStoreConfigDataProvider $extendedStoreConfigsDataProvider + StoreConfigDataProvider $storeConfigsDataProvider ) { $this->storeConfigDataProvider = $storeConfigsDataProvider; - $this->extendedStoreConfigsDataProvider = $extendedStoreConfigsDataProvider; } /** @@ -50,11 +41,6 @@ public function resolve( array $value = null, array $args = null ) { - - $storeConfigData = array_merge( - $this->storeConfigDataProvider->getStoreConfig(), - $this->extendedStoreConfigsDataProvider->getExtendedConfigs() - ); - return $storeConfigData; + return $this->storeConfigDataProvider->getStoreConfigData(); } } diff --git a/app/code/Magento/ThemeGraphQl/etc/graphql/di.xml b/app/code/Magento/ThemeGraphQl/etc/graphql/di.xml index 3aabaf84c45d..444bb9b817d4 100644 --- a/app/code/Magento/ThemeGraphQl/etc/graphql/di.xml +++ b/app/code/Magento/ThemeGraphQl/etc/graphql/di.xml @@ -6,9 +6,9 @@ */ --> - + - + design/head/head_shortcut_icon design/head/default_title From f6f673f4efae2608b26eac6ec648e4d25633f72d Mon Sep 17 00:00:00 2001 From: Valeriy Nayda Date: Wed, 12 Sep 2018 18:57:06 +0300 Subject: [PATCH 30/31] GraphQL-130: Extend store config coverage --- app/code/Magento/StoreGraphQl/composer.json | 3 +- app/code/Magento/ThemeGraphQl/composer.json | 1 - .../GraphQl/Catalog/BreadcrumbsTest.php | 175 ------------------ 3 files changed, 1 insertion(+), 178 deletions(-) delete mode 100644 dev/tests/api-functional/testsuite/Magento/GraphQl/Catalog/BreadcrumbsTest.php diff --git a/app/code/Magento/StoreGraphQl/composer.json b/app/code/Magento/StoreGraphQl/composer.json index d03d759babd2..d53ba9fbb002 100644 --- a/app/code/Magento/StoreGraphQl/composer.json +++ b/app/code/Magento/StoreGraphQl/composer.json @@ -8,8 +8,7 @@ "magento/module-store": "*" }, "suggest": { - "magento/module-graph-ql": "*", - "magento/module-catalog-graph-ql": "*" + "magento/module-graph-ql": "*" }, "license": [ "OSL-3.0", diff --git a/app/code/Magento/ThemeGraphQl/composer.json b/app/code/Magento/ThemeGraphQl/composer.json index e17a76d62035..3170d9c75387 100644 --- a/app/code/Magento/ThemeGraphQl/composer.json +++ b/app/code/Magento/ThemeGraphQl/composer.json @@ -7,7 +7,6 @@ "magento/framework": "*" }, "suggest": { - "magento/module-graph-ql": "*", "magento/module-store-graph-ql": "*" }, "license": [ diff --git a/dev/tests/api-functional/testsuite/Magento/GraphQl/Catalog/BreadcrumbsTest.php b/dev/tests/api-functional/testsuite/Magento/GraphQl/Catalog/BreadcrumbsTest.php deleted file mode 100644 index d0879ae5864e..000000000000 --- a/dev/tests/api-functional/testsuite/Magento/GraphQl/Catalog/BreadcrumbsTest.php +++ /dev/null @@ -1,175 +0,0 @@ -get(CollectionFactory::class)->create(); - $categoryCollection->addAttributeToFilter('name', ['eq' => 'Category 1.1.1']); - $selectedCategoryId = (int)$categoryCollection->getFirstItem()->getId(); - $query = - <<graphQlQuery($query); - $this->assertArrayHasKey('category', $response); - $this->assertArrayHasKey('breadcrumbs', $response['category']); - $this->assertBaseFields($selectedCategoryId, $response); - } - - /** - * Verify the fields of CMS Block selected by identifiers. - * - * @magentoApiDataFixture Magento/Catalog/_files/category_tree.php - * @return void - */ - public function testGetBreadcrumbsForNonExistingCategory(): void - { - $query = - <<graphQlQuery($query); - $this->assertArrayHasKey('category', $response); - $this->assertNull( - $response['category'], - 'Value of "category" field must be NULL if requested category doesn\'t exist' - ); - $this->assertCount( - 1, - $response, - 'There should be only "category" field if requested category doesn\'t exist ' - ); - } - - /** - * Asserts the equality of the response fields to the fields given in assertion map. - * Assert that values of the fields are different from NULL - * - * @param array $actualResponse - * @param array $assertionMap - * @return void - */ - private function assertResponseFields(array $actualResponse, array $assertionMap): void - { - foreach ($assertionMap as $key => $assertionData) { - $expectedValue = isset($assertionData['expected_value']) - ? $assertionData['expected_value'] - : $assertionData; - $responseField = isset($assertionData['response_field']) ? $assertionData['response_field'] : $key; - $this->assertNotNull( - $expectedValue, - "Value of '{$responseField}' field must not be NULL" - ); - $this->assertEquals( - $expectedValue[$key], - $actualResponse[$responseField], - "Value of '{$responseField}' field in response does not match expected value: " - . var_export($expectedValue, true) - ); - } - } - - /** - * Get breadcrumbs for given category. - * - * @param Category $category - * @return array - */ - private function getBreadcrumbs(Category $category): array - { - $breadcrumbs = []; - $rootId = Bootstrap::getObjectManager()->get(StoreManagerInterface::class) - ->getStore() - ->getRootCategoryId(); - foreach ($category->getParentCategories() as $parentCategory) { - if ($parentCategory->getId() !== $rootId) { - $breadcrumbs[] = [ - 'category_id' => $parentCategory->getId(), - 'category_name' => $parentCategory->getName(), - 'category_level' => $parentCategory->getLevel(), - 'category_url_key' => $parentCategory->getUrlKey(), - ]; - } - } - - return $breadcrumbs; - } - - /** - * Asserts base fields - * - * @param int $categoryId - * @param array $actualResponse - * @return void - */ - private function assertBaseFields(int $categoryId, array $actualResponse): void - { - $category = Bootstrap::getObjectManager()->create(Category::class)->load($categoryId); - $assertionMap = [ - [ - 'response_field' => 'category', - 'expected_value' => - [ - [ - 'name' => $category->getName(), - 'breadcrumbs' => $this->getBreadcrumbs($category->getParentCategory()), - ], - - ], - ], - ]; - - /** - * @param array $actualResponse - * @param array $assertionMap ['response_field_name' => 'response_field_value', ...] - * OR [['response_field' => $field, 'expected_value' => $value], ...] - */ - $this->assertResponseFields($actualResponse, $assertionMap); - } -} From fec5e1fb099b592a94ed6653156a0e497b57e2b6 Mon Sep 17 00:00:00 2001 From: Valeriy Nayda Date: Wed, 12 Sep 2018 19:13:46 +0300 Subject: [PATCH 31/31] GraphQL-130: Extend store config coverage --- app/code/Magento/ThemeGraphQl/etc/module.xml | 2 +- composer.json | 1 - composer.lock | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/app/code/Magento/ThemeGraphQl/etc/module.xml b/app/code/Magento/ThemeGraphQl/etc/module.xml index 9dee9031e703..06ba03c14fe8 100644 --- a/app/code/Magento/ThemeGraphQl/etc/module.xml +++ b/app/code/Magento/ThemeGraphQl/etc/module.xml @@ -8,7 +8,7 @@ - + diff --git a/composer.json b/composer.json index 607470c5eb18..9fc73bc8fbd8 100644 --- a/composer.json +++ b/composer.json @@ -125,7 +125,6 @@ "magento/module-checkout": "*", "magento/module-checkout-agreements": "*", "magento/module-cms": "*", - "magento/module-cms-graph-ql": "*", "magento/module-cms-url-rewrite": "*", "magento/module-config": "*", "magento/module-configurable-import-export": "*", diff --git a/composer.lock b/composer.lock index 86826f3b2d5a..177f1e86302d 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "ecd17c9b3713554b75fa656e0aecd96c", + "content-hash": "dd4e124e9aeb0765049ab4ab9629274d", "packages": [ { "name": "braintree/braintree_php",