OXDEV-3103 Update to reflect latest changes
This commit is contained in:
parent
4509d3b871
commit
118c2f00ae
15
.php_cs
15
.php_cs
@ -1,15 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
$finder = PhpCsFixer\Finder::create()
|
|
||||||
->in('src/')
|
|
||||||
;
|
|
||||||
|
|
||||||
return PhpCsFixer\Config::create()
|
|
||||||
->setRules([
|
|
||||||
'@PSR2' => true,
|
|
||||||
'ordered_imports' => true,
|
|
||||||
'no_unused_imports' => true,
|
|
||||||
'array_syntax' => ['syntax' => 'short'],
|
|
||||||
])
|
|
||||||
->setFinder($finder)
|
|
||||||
;
|
|
231
.php_cs.dist
Normal file
231
.php_cs.dist
Normal file
@ -0,0 +1,231 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
$header = <<<'EOF'
|
||||||
|
All rights reserved.
|
||||||
|
See LICENSE file for license details.
|
||||||
|
EOF;
|
||||||
|
|
||||||
|
$finder = PhpCsFixer\Finder::create()
|
||||||
|
->files()
|
||||||
|
->in(__DIR__ . '/src')
|
||||||
|
->in(__DIR__ . '/tests/');
|
||||||
|
|
||||||
|
return PhpCsFixer\Config::create()
|
||||||
|
->setFinder($finder)
|
||||||
|
->setRiskyAllowed(true)
|
||||||
|
->setRules([
|
||||||
|
'@PSR2' => true,
|
||||||
|
'blank_line_after_opening_tag' => true,
|
||||||
|
'compact_nullable_typehint' => true,
|
||||||
|
'declare_equal_normalize' => [
|
||||||
|
'space' => 'none'
|
||||||
|
],
|
||||||
|
'function_typehint_space' => true,
|
||||||
|
'method_argument_space' => [
|
||||||
|
'on_multiline' => 'ensure_fully_multiline',
|
||||||
|
],
|
||||||
|
'new_with_braces' => true,
|
||||||
|
'no_empty_statement' => true,
|
||||||
|
'no_leading_import_slash' => true,
|
||||||
|
'no_leading_namespace_whitespace' => true,
|
||||||
|
'no_whitespace_in_blank_line' => true,
|
||||||
|
'return_type_declaration' => [
|
||||||
|
'space_before' => 'none'
|
||||||
|
],
|
||||||
|
'single_trait_insert_per_statement' => true,
|
||||||
|
|
||||||
|
'align_multiline_comment' => [
|
||||||
|
'comment_type' => 'all_multiline'
|
||||||
|
],
|
||||||
|
'array_indentation' => true,
|
||||||
|
'array_syntax' => [
|
||||||
|
'syntax' => 'short'
|
||||||
|
],
|
||||||
|
'backtick_to_shell_exec' => true,
|
||||||
|
'binary_operator_spaces' => [
|
||||||
|
'operators' => [
|
||||||
|
'=' => 'align',
|
||||||
|
'=>' => 'align',
|
||||||
|
],
|
||||||
|
],
|
||||||
|
'blank_line_before_statement' => [
|
||||||
|
'statements' => [
|
||||||
|
'break',
|
||||||
|
'case',
|
||||||
|
'continue',
|
||||||
|
'declare',
|
||||||
|
'default',
|
||||||
|
'die',
|
||||||
|
'do',
|
||||||
|
'exit',
|
||||||
|
'for',
|
||||||
|
'foreach',
|
||||||
|
'if',
|
||||||
|
'include',
|
||||||
|
'include_once',
|
||||||
|
'require',
|
||||||
|
'require_once',
|
||||||
|
'return',
|
||||||
|
'switch',
|
||||||
|
'throw',
|
||||||
|
'try',
|
||||||
|
'while',
|
||||||
|
'yield',
|
||||||
|
],
|
||||||
|
],
|
||||||
|
'cast_spaces' => true,
|
||||||
|
'class_attributes_separation' => [
|
||||||
|
'elements' => [
|
||||||
|
'const',
|
||||||
|
'method',
|
||||||
|
'property'
|
||||||
|
]
|
||||||
|
],
|
||||||
|
'combine_consecutive_issets' => true,
|
||||||
|
'combine_consecutive_unsets' => true,
|
||||||
|
'concat_space' => [
|
||||||
|
'spacing' => 'one'
|
||||||
|
],
|
||||||
|
'declare_strict_types' => true,
|
||||||
|
'dir_constant' => true,
|
||||||
|
'global_namespace_import' => [
|
||||||
|
'import_classes' => true,
|
||||||
|
'import_constants' => true,
|
||||||
|
'import_functions' => true
|
||||||
|
],
|
||||||
|
'header_comment' => [
|
||||||
|
'header' => $header,
|
||||||
|
'separate' => 'both',
|
||||||
|
'location' => 'after_open',
|
||||||
|
'comment_type' => 'PHPDoc'
|
||||||
|
],
|
||||||
|
'is_null' => true,
|
||||||
|
'list_syntax' => [
|
||||||
|
'syntax' => 'short'
|
||||||
|
],
|
||||||
|
'logical_operators' => true,
|
||||||
|
'lowercase_cast' => true,
|
||||||
|
'lowercase_constants' => true,
|
||||||
|
'lowercase_keywords' => true,
|
||||||
|
'lowercase_static_reference' => true,
|
||||||
|
'magic_constant_casing' => true,
|
||||||
|
'modernize_types_casting' => true,
|
||||||
|
'multiline_comment_opening_closing' => false,
|
||||||
|
'multiline_whitespace_before_semicolons' => true,
|
||||||
|
'native_function_casing' => true,
|
||||||
|
'no_alias_functions' => true,
|
||||||
|
'no_alternative_syntax' => true,
|
||||||
|
'no_blank_lines_after_class_opening' => true,
|
||||||
|
'no_blank_lines_after_phpdoc' => true,
|
||||||
|
'no_empty_comment' => true,
|
||||||
|
'no_empty_phpdoc' => true,
|
||||||
|
'no_extra_blank_lines' => true,
|
||||||
|
'no_homoglyph_names' => true,
|
||||||
|
'no_mixed_echo_print' => [
|
||||||
|
'use' => 'print'
|
||||||
|
],
|
||||||
|
'no_multiline_whitespace_around_double_arrow' => true,
|
||||||
|
'no_null_property_initialization' => true,
|
||||||
|
'no_php4_constructor' => true,
|
||||||
|
'no_short_bool_cast' => true,
|
||||||
|
'no_short_echo_tag' => true,
|
||||||
|
'no_singleline_whitespace_before_semicolons' => true,
|
||||||
|
'no_superfluous_elseif' => true,
|
||||||
|
'no_superfluous_phpdoc_tags' => [
|
||||||
|
'allow_mixed' => true
|
||||||
|
],
|
||||||
|
'no_trailing_comma_in_list_call' => true,
|
||||||
|
'no_trailing_comma_in_singleline_array' => true,
|
||||||
|
'no_unneeded_control_parentheses' => true,
|
||||||
|
'no_unneeded_curly_braces' => true,
|
||||||
|
'no_unneeded_final_method' => true,
|
||||||
|
'no_unreachable_default_argument_value' => true,
|
||||||
|
'no_unset_on_property' => true,
|
||||||
|
'no_unused_imports' => true,
|
||||||
|
'no_useless_else' => true,
|
||||||
|
'no_useless_return' => true,
|
||||||
|
'no_whitespace_before_comma_in_array' => true,
|
||||||
|
'non_printable_character' => true,
|
||||||
|
'normalize_index_brace' => true,
|
||||||
|
'nullable_type_declaration_for_default_null_value' => true,
|
||||||
|
'object_operator_without_whitespace' => true,
|
||||||
|
'ordered_class_elements' => [
|
||||||
|
'order' => [
|
||||||
|
'use_trait',
|
||||||
|
'constant_public',
|
||||||
|
'constant_protected',
|
||||||
|
'constant_private',
|
||||||
|
'property_public_static',
|
||||||
|
'property_protected_static',
|
||||||
|
'property_private_static',
|
||||||
|
'property_public',
|
||||||
|
'property_protected',
|
||||||
|
'property_private',
|
||||||
|
'construct',
|
||||||
|
'destruct',
|
||||||
|
'magic',
|
||||||
|
'phpunit',
|
||||||
|
'method_public',
|
||||||
|
'method_protected',
|
||||||
|
'method_private',
|
||||||
|
'method_static',
|
||||||
|
'method_public_static',
|
||||||
|
'method_protected_static',
|
||||||
|
'method_private_static',
|
||||||
|
]
|
||||||
|
],
|
||||||
|
'ordered_imports' => [
|
||||||
|
'imports_order' => [
|
||||||
|
'const',
|
||||||
|
'class',
|
||||||
|
'function'
|
||||||
|
],
|
||||||
|
'sort_algorithm' => 'alpha'
|
||||||
|
],
|
||||||
|
'ordered_interfaces' => [
|
||||||
|
'direction' => 'ascend',
|
||||||
|
'order' => 'alpha',
|
||||||
|
],
|
||||||
|
'phpdoc_add_missing_param_annotation' => true,
|
||||||
|
'phpdoc_align' => true,
|
||||||
|
'phpdoc_annotation_without_dot' => true,
|
||||||
|
'phpdoc_indent' => true,
|
||||||
|
'phpdoc_no_access' => true,
|
||||||
|
'phpdoc_no_empty_return' => true,
|
||||||
|
'phpdoc_no_package' => true,
|
||||||
|
'phpdoc_order' => true,
|
||||||
|
'phpdoc_return_self_reference' => true,
|
||||||
|
'phpdoc_scalar' => true,
|
||||||
|
'phpdoc_separation' => true,
|
||||||
|
'phpdoc_single_line_var_spacing' => true,
|
||||||
|
'phpdoc_to_comment' => false,
|
||||||
|
'phpdoc_trim' => true,
|
||||||
|
'phpdoc_trim_consecutive_blank_line_separation' => true,
|
||||||
|
'phpdoc_types' => [
|
||||||
|
'groups' => [
|
||||||
|
'simple',
|
||||||
|
'meta'
|
||||||
|
]
|
||||||
|
],
|
||||||
|
'phpdoc_types_order' => true,
|
||||||
|
'phpdoc_var_without_name' => true,
|
||||||
|
'pow_to_exponentiation' => true,
|
||||||
|
'protected_to_private' => true,
|
||||||
|
'return_assignment' => true,
|
||||||
|
'self_accessor' => true,
|
||||||
|
'semicolon_after_instruction' => true,
|
||||||
|
'set_type_to_cast' => true,
|
||||||
|
'short_scalar_cast' => true,
|
||||||
|
'simplified_null_return' => false,
|
||||||
|
'single_blank_line_before_namespace' => true,
|
||||||
|
'single_quote' => true,
|
||||||
|
'standardize_not_equals' => true,
|
||||||
|
'ternary_to_null_coalescing' => true,
|
||||||
|
'trailing_comma_in_multiline_array' => true,
|
||||||
|
'trim_array_spaces' => true,
|
||||||
|
'unary_operator_spaces' => true,
|
||||||
|
'void_return' => true,
|
||||||
|
'whitespace_after_comma_in_array' => true,
|
||||||
|
]);
|
@ -9,7 +9,7 @@ php:
|
|||||||
- "7.1"
|
- "7.1"
|
||||||
- "7.2"
|
- "7.2"
|
||||||
- "7.3"
|
- "7.3"
|
||||||
- "7.4snapshot"
|
- "7.4"
|
||||||
|
|
||||||
cache:
|
cache:
|
||||||
directories:
|
directories:
|
||||||
@ -17,8 +17,6 @@ cache:
|
|||||||
|
|
||||||
matrix:
|
matrix:
|
||||||
fast_finish: true
|
fast_finish: true
|
||||||
allow_failures:
|
|
||||||
- php: "7.4snapshot"
|
|
||||||
|
|
||||||
before_script:
|
before_script:
|
||||||
- composer create-project oxid-esales/graphql-module --repository packages.json --remove-vcs -n
|
- composer create-project oxid-esales/graphql-module --repository packages.json --remove-vcs -n
|
||||||
@ -27,4 +25,6 @@ script:
|
|||||||
- cd graphql-module
|
- cd graphql-module
|
||||||
- composer test:syntax
|
- composer test:syntax
|
||||||
- composer test:lint
|
- composer test:lint
|
||||||
|
- composer test:lint-fixer
|
||||||
- composer test:static
|
- composer test:static
|
||||||
|
- composer test:unit
|
||||||
|
@ -9,7 +9,7 @@ php:
|
|||||||
- "7.1"
|
- "7.1"
|
||||||
- "7.2"
|
- "7.2"
|
||||||
- "7.3"
|
- "7.3"
|
||||||
- "7.4snapshot"
|
- "7.4"
|
||||||
|
|
||||||
cache:
|
cache:
|
||||||
directories:
|
directories:
|
||||||
@ -17,8 +17,6 @@ cache:
|
|||||||
|
|
||||||
matrix:
|
matrix:
|
||||||
fast_finish: true
|
fast_finish: true
|
||||||
allow_failures:
|
|
||||||
- php: "7.4snapshot"
|
|
||||||
|
|
||||||
before_script:
|
before_script:
|
||||||
- composer install --prefer-dist
|
- composer install --prefer-dist
|
||||||
@ -26,4 +24,6 @@ before_script:
|
|||||||
script:
|
script:
|
||||||
- composer test:syntax
|
- composer test:syntax
|
||||||
- composer test:lint
|
- composer test:lint
|
||||||
|
- composer test:lint-fixer
|
||||||
- composer test:static
|
- composer test:static
|
||||||
|
- composer test:unit
|
||||||
|
@ -11,7 +11,7 @@ This skeleton will set you up with a
|
|||||||
- including a sane `README.md`
|
- including a sane `README.md`
|
||||||
- pre setup `NamespaceMapper`
|
- pre setup `NamespaceMapper`
|
||||||
- simple example controller
|
- simple example controller
|
||||||
- nice developement expirience
|
- nice developement experience
|
||||||
|
|
||||||
## How to use
|
## How to use
|
||||||
|
|
||||||
|
@ -21,13 +21,13 @@ TBD
|
|||||||
|
|
||||||
## Testing
|
## Testing
|
||||||
|
|
||||||
### Linting, Syntax and static analysis
|
### Linting, syntax, static analysis and unit tests
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ composer test
|
$ composer test
|
||||||
```
|
```
|
||||||
|
|
||||||
### Unit tests
|
### Integration tests
|
||||||
|
|
||||||
- install this module into a running OXID eShop
|
- install this module into a running OXID eShop
|
||||||
- change the `test_config.yml`
|
- change the `test_config.yml`
|
||||||
|
@ -15,15 +15,16 @@
|
|||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"php": "^7.1",
|
"php": "^7.1",
|
||||||
"oxid-esales/graphql-base": "^1.2"
|
"oxid-esales/graphql-base": "^2.3"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"phpunit/phpunit": "^7.5",
|
"phpunit/phpunit": "^7.5",
|
||||||
"squizlabs/php_codesniffer": "^3.5.1",
|
"squizlabs/php_codesniffer": "^3.5.2",
|
||||||
"jakub-onderka/php-parallel-lint": "^1.0",
|
"jakub-onderka/php-parallel-lint": "^1.0",
|
||||||
"phpstan/phpstan": "^0.12",
|
"phpstan/phpstan": "^0.12",
|
||||||
"oxid-esales/oxideshop-ce": "6.5",
|
"oxid-esales/oxideshop-ce": "^6.5",
|
||||||
"oxid-esales/oxideshop-unified-namespace-generator": "^2.0"
|
"oxid-esales/oxideshop-unified-namespace-generator": "^2.0",
|
||||||
|
"friendsofphp/php-cs-fixer": "^2.16"
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
"psr-4": {
|
"psr-4": {
|
||||||
@ -44,16 +45,24 @@
|
|||||||
],
|
],
|
||||||
"post-create-project-cmd": [
|
"post-create-project-cmd": [
|
||||||
"OxidEsales\\GraphQL\\Skeleton\\Installer::postInstall",
|
"OxidEsales\\GraphQL\\Skeleton\\Installer::postInstall",
|
||||||
"composer update"
|
"composer update",
|
||||||
|
"@fix"
|
||||||
|
],
|
||||||
|
"fix:cbf": "phpcbf",
|
||||||
|
"fix:fixer": "php-cs-fixer fix",
|
||||||
|
"fix": [
|
||||||
|
"@fix:cbf",
|
||||||
|
"@fix:fixer"
|
||||||
],
|
],
|
||||||
"fix": "phpcbf --standard=PSR12 --extensions=php -p src/ tests/",
|
|
||||||
"test:lint": "phpcs --standard=PSR12 --extensions=php -p src/ tests/",
|
|
||||||
"test:syntax": "parallel-lint src/",
|
"test:syntax": "parallel-lint src/",
|
||||||
|
"test:lint": "phpcs",
|
||||||
|
"test:lint-fixer": "php-cs-fixer fix --dry-run",
|
||||||
"test:static": "phpstan analyse src/",
|
"test:static": "phpstan analyse src/",
|
||||||
"test:unit": "phpunit -c tests/phpunit.xml tests/Unit/",
|
"test:unit": "phpunit -c tests/phpunit.xml tests/Unit/",
|
||||||
"test": [
|
"test": [
|
||||||
"@test:lint",
|
|
||||||
"@test:syntax",
|
"@test:syntax",
|
||||||
|
"@test:lint",
|
||||||
|
"@test:lint-fixer",
|
||||||
"@test:static",
|
"@test:static",
|
||||||
"@test:unit"
|
"@test:unit"
|
||||||
]
|
]
|
||||||
|
10
phpcs.xml.dist
Normal file
10
phpcs.xml.dist
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<ruleset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="PHP_CodeSniffer" xsi:noNamespaceSchemaLocation="phpcs.xsd">
|
||||||
|
<file>src/</file>
|
||||||
|
<file>tests/</file>
|
||||||
|
<arg name="colors"/>
|
||||||
|
<arg name="parallel" value="75"/>
|
||||||
|
<arg name="extensions" value="php"/>
|
||||||
|
<arg value="np"/>
|
||||||
|
<rule ref="PSR12" />
|
||||||
|
</ruleset>
|
@ -1,6 +0,0 @@
|
|||||||
parameters:
|
|
||||||
ignoreErrors:
|
|
||||||
-
|
|
||||||
message: "#^Access to an undefined property OxidEsales\\\\EshopCommunity\\\\Application\\\\Model\\\\Category\\:\\:\\$oxcategories__.+\\.$#"
|
|
||||||
count: 3
|
|
||||||
path: src/DataObject/Category.php
|
|
@ -1,8 +1,6 @@
|
|||||||
includes:
|
|
||||||
- phpstan.baseline.neon
|
|
||||||
|
|
||||||
parameters:
|
parameters:
|
||||||
level: max
|
level: max
|
||||||
inferPrivatePropertyTypeFromConstructor: true
|
inferPrivatePropertyTypeFromConstructor: true
|
||||||
autoload_files:
|
autoload_files:
|
||||||
- vendor/oxid-esales/oxideshop-ce/source/oxfunctions.php
|
- vendor/oxid-esales/oxideshop-ce/source/oxfunctions.php
|
||||||
|
- vendor/oxid-esales/oxideshop-ce/source/overridablefunctions.php
|
||||||
|
@ -1,11 +1,17 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* All rights reserved.
|
||||||
|
* See LICENSE file for license details.
|
||||||
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace __Vendor__\GraphQL\__Package__\Controller;
|
namespace __Vendor__\GraphQL\__Package__\Controller;
|
||||||
|
|
||||||
use OxidEsales\EshopCommunity\Application\Model\Category as CategoryModel;
|
use OxidEsales\Eshop\Application\Model\Category as CategoryEshopModel;
|
||||||
use __Vendor__\GraphQL\__Package__\DataObject\Category as CategoryDataObject;
|
use __Vendor__\GraphQL\__Package__\DataObject\Category as CategoryDataObject;
|
||||||
|
use __Vendor__\GraphQL\__Package__\Exception\CategoryNotFound;
|
||||||
use TheCodingMachine\GraphQLite\Annotations\Query;
|
use TheCodingMachine\GraphQLite\Annotations\Query;
|
||||||
|
|
||||||
class Category
|
class Category
|
||||||
@ -15,14 +21,17 @@ class Category
|
|||||||
*
|
*
|
||||||
* @Query()
|
* @Query()
|
||||||
*/
|
*/
|
||||||
public function category(string $id): ?CategoryDataObject
|
public function category(string $id): CategoryDataObject
|
||||||
{
|
{
|
||||||
/** @var CategoryModel */
|
/** @var CategoryEshopModel */
|
||||||
$category = oxNew(CategoryModel::class);
|
$category = oxNew(CategoryEshopModel::class);
|
||||||
|
|
||||||
if (!$category->load($id)) {
|
if (!$category->load($id)) {
|
||||||
return null;
|
throw CategoryNotFound::byId($id);
|
||||||
}
|
}
|
||||||
$category = CategoryDataObject::createFromModel($category);
|
|
||||||
return $category;
|
return new CategoryDataObject(
|
||||||
|
$category
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,78 +1,48 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* All rights reserved.
|
||||||
|
* See LICENSE file for license details.
|
||||||
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace __Vendor__\GraphQL\__Package__\DataObject;
|
namespace __Vendor__\GraphQL\__Package__\DataObject;
|
||||||
|
|
||||||
use OxidEsales\EshopCommunity\Application\Model\Category as CategoryModel;
|
use OxidEsales\Eshop\Application\Model\Category as CategoryEshopModel;
|
||||||
use TheCodingMachine\GraphQLite\Annotations\Field;
|
use TheCodingMachine\GraphQLite\Annotations\Field;
|
||||||
use TheCodingMachine\GraphQLite\Annotations\Type;
|
use TheCodingMachine\GraphQLite\Annotations\Type;
|
||||||
|
use TheCodingMachine\GraphQLite\Types\ID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Type()
|
* @Type()
|
||||||
*/
|
*/
|
||||||
class Category
|
class Category
|
||||||
{
|
{
|
||||||
/** @var string */
|
/** @var CategoryEshopModel */
|
||||||
private $id;
|
private $category;
|
||||||
|
|
||||||
/** @var string */
|
|
||||||
private $name;
|
|
||||||
|
|
||||||
/** @var string */
|
|
||||||
private $parentid;
|
|
||||||
|
|
||||||
/** @var \DateTimeInterface */
|
|
||||||
private $timestamp;
|
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
string $id,
|
CategoryEshopModel $category
|
||||||
string $name,
|
|
||||||
string $parentid,
|
|
||||||
\DateTimeInterface $timestamp
|
|
||||||
) {
|
) {
|
||||||
$this->id = $id;
|
$this->category = $category;
|
||||||
$this->name = $name;
|
|
||||||
$this->parentid = $parentid;
|
|
||||||
$this->timestamp = $timestamp;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function createFromModel(CategoryModel $category): self
|
/**
|
||||||
|
* @Field
|
||||||
|
*/
|
||||||
|
public function getId(): ID
|
||||||
{
|
{
|
||||||
return new self(
|
return new ID(
|
||||||
$category->getId(),
|
$this->category->getId()
|
||||||
(string)$category->oxcategories__oxtitle,
|
|
||||||
(string)$category->oxcategories__oxpartentid,
|
|
||||||
new \DateTimeImmutable((string)$category->oxcategories__oxtimestamp)
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Field(outputType="ID")
|
* @Field
|
||||||
*/
|
*/
|
||||||
public function getId(): string
|
public function getTitle(): string
|
||||||
{
|
{
|
||||||
return $this->id;
|
return (string) $this->category->getFieldData('oxtitle');
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @Field()
|
|
||||||
*/
|
|
||||||
public function getName(): string
|
|
||||||
{
|
|
||||||
return $this->name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getParentid(): string
|
|
||||||
{
|
|
||||||
return $this->parentid;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @Field()
|
|
||||||
*/
|
|
||||||
public function getTimestamp(): \DateTimeInterface
|
|
||||||
{
|
|
||||||
return $this->timestamp;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
22
src/Exception/CategoryNotFound.php
Normal file
22
src/Exception/CategoryNotFound.php
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* All rights reserved.
|
||||||
|
* See LICENSE file for license details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace __Vendor__\GraphQL\__Package__\Exception;
|
||||||
|
|
||||||
|
use OxidEsales\GraphQL\Base\Exception\NotFound;
|
||||||
|
|
||||||
|
use function sprintf;
|
||||||
|
|
||||||
|
final class CategoryNotFound extends NotFound
|
||||||
|
{
|
||||||
|
public static function byId(string $id): self
|
||||||
|
{
|
||||||
|
return new self(sprintf('Category was not found by id: %s', $id));
|
||||||
|
}
|
||||||
|
}
|
@ -1,7 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Copyright © OXID eSales AG. All rights reserved.
|
* All rights reserved.
|
||||||
* See LICENSE file for license details.
|
* See LICENSE file for license details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -16,14 +16,14 @@ class NamespaceMapper implements NamespaceMapperInterface
|
|||||||
public function getControllerNamespaceMapping(): array
|
public function getControllerNamespaceMapping(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'\\__Vendor__\\GraphQL\\__Package__\\Controller' => __DIR__ . '/../Controller/'
|
'\\__Vendor__\\GraphQL\\__Package__\\Controller' => __DIR__ . '/../Controller/',
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getTypeNamespaceMapping(): array
|
public function getTypeNamespaceMapping(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'\\__Vendor__\\GraphQL\\__Package__\\DataObject' => __DIR__ . '/../DataObject/'
|
'\\__Vendor__\\GraphQL\\__Package__\\DataObject' => __DIR__ . '/../DataObject/',
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,10 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* All rights reserved.
|
||||||
|
* See LICENSE file for license details.
|
||||||
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace __Vendor__\GraphQL\__Package__\Tests\Integration\Controller;
|
namespace __Vendor__\GraphQL\__Package__\Tests\Integration\Controller;
|
||||||
@ -8,12 +13,12 @@ use OxidEsales\GraphQL\Base\Tests\Integration\TestCase;
|
|||||||
|
|
||||||
class CategoryTest extends TestCase
|
class CategoryTest extends TestCase
|
||||||
{
|
{
|
||||||
public function testGetSingleCategoryWithoutParam()
|
public function testGetSingleCategoryWithoutParam(): void
|
||||||
{
|
{
|
||||||
$this->execQuery('query { category }');
|
$result = $this->execQuery('query { category }');
|
||||||
$this->assertEquals(
|
$this->assertSame(
|
||||||
400,
|
400,
|
||||||
static::$queryResult['status']
|
$result['status']
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,10 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* All rights reserved.
|
||||||
|
* See LICENSE file for license details.
|
||||||
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace __Vendor__\GraphQL\__Package__\Tests\Unit\Framework;
|
namespace __Vendor__\GraphQL\__Package__\Tests\Unit\Framework;
|
||||||
@ -7,12 +12,12 @@ namespace __Vendor__\GraphQL\__Package__\Tests\Unit\Framework;
|
|||||||
use PHPUnit\Framework\TestCase;
|
use PHPUnit\Framework\TestCase;
|
||||||
use __Vendor__\GraphQL\__Package__\Framework\NamespaceMapper;
|
use __Vendor__\GraphQL\__Package__\Framework\NamespaceMapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @covers __Vendor__\GraphQL\__Package__\Framework\NamespaceMapper
|
||||||
|
*/
|
||||||
class NamespaceMapperTest extends TestCase
|
class NamespaceMapperTest extends TestCase
|
||||||
{
|
{
|
||||||
/**
|
public function testFooBar(): void
|
||||||
* @covers __Vendor__\GraphQL\__Package__\Framework\NamespaceMapper
|
|
||||||
*/
|
|
||||||
public function testFooBar()
|
|
||||||
{
|
{
|
||||||
$namespaceMapper = new NamespaceMapper();
|
$namespaceMapper = new NamespaceMapper();
|
||||||
$this->assertCount(
|
$this->assertCount(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user