diff --git a/src/lib/PhpCsFixer/Sets/AbstractIbexaRuleSet.php b/src/lib/PhpCsFixer/Sets/AbstractIbexaRuleSet.php index f85aad0..7e9be6e 100644 --- a/src/lib/PhpCsFixer/Sets/AbstractIbexaRuleSet.php +++ b/src/lib/PhpCsFixer/Sets/AbstractIbexaRuleSet.php @@ -130,7 +130,10 @@ public function getRules(): array 'non_printable_character' => true, 'normalize_index_brace' => true, 'object_operator_without_whitespace' => true, - 'ordered_imports' => true, + 'ordered_imports' => [ + 'imports_order' => ['class', 'function', 'const'], + 'sort_algorithm' => 'alpha', + ], 'php_unit_construct' => true, 'php_unit_fqcn_annotation' => true, 'php_unit_mock_short_will_return' => false, diff --git a/tests/lib/PhpCsFixer/Rule/OrderedImportsFixerTest.php b/tests/lib/PhpCsFixer/Rule/OrderedImportsFixerTest.php new file mode 100644 index 0000000..07432ec --- /dev/null +++ b/tests/lib/PhpCsFixer/Rule/OrderedImportsFixerTest.php @@ -0,0 +1,122 @@ +getRules()['ordered_imports']; + self::assertIsArray($orderedImportsRule); + + $orderedImportsFixer = new OrderedImportsFixer(); + $orderedImportsFixer->configure($orderedImportsRule); + + /** @var array $fixers */ + $fixers = [ + $orderedImportsFixer, + new BlankLineBetweenImportGroupsFixer(), + ]; + + $tokens = Tokens::fromCode($input); + + foreach ($fixers as $fixer) { + if (!$fixer->isCandidate($tokens)) { + continue; + } + + $fixer->fix(new SplFileInfo(__FILE__), $tokens); + } + + self::assertSame($expected, $tokens->generateCode()); + } + + /** + * @return iterable + */ + public static function provideFixCases(): iterable + { + $ruleSets = [ + '50 ruleset' => new Ibexa50RuleSet(), + '46 ruleset' => new Ibexa46RuleSet(), + ]; + + foreach ($ruleSets as $ruleSetName => $ruleSet) { + yield $ruleSetName . ' function import is moved to its own group after class imports' => [ + $ruleSet, + <<<'PHP' + [ + $ruleSet, + <<<'PHP' + [ + $ruleSet, + <<<'PHP' + true, 'normalize_index_brace' => true, 'object_operator_without_whitespace' => true, - 'ordered_imports' => true, + 'ordered_imports' => [ + 'imports_order' => ['class', 'function', 'const'], + 'sort_algorithm' => 'alpha', + ], 'php_unit_construct' => true, 'php_unit_fqcn_annotation' => true, 'php_unit_mock_short_will_return' => false, diff --git a/tests/lib/PhpCsFixer/Sets/expected_rules/4_6_rule_set/php_cs_fixer_rules.php b/tests/lib/PhpCsFixer/Sets/expected_rules/4_6_rule_set/php_cs_fixer_rules.php index b5f4b39..eed8e65 100644 --- a/tests/lib/PhpCsFixer/Sets/expected_rules/4_6_rule_set/php_cs_fixer_rules.php +++ b/tests/lib/PhpCsFixer/Sets/expected_rules/4_6_rule_set/php_cs_fixer_rules.php @@ -15,7 +15,10 @@ 'no_blank_lines_after_class_opening' => true, 'no_leading_import_slash' => true, 'no_whitespace_in_blank_line' => true, - 'ordered_imports' => true, + 'ordered_imports' => [ + 'imports_order' => ['class', 'function', 'const'], + 'sort_algorithm' => 'alpha', + ], 'return_type_declaration' => true, 'short_scalar_cast' => true, 'single_import_per_statement' => true, diff --git a/tests/lib/PhpCsFixer/Sets/expected_rules/5_0_rule_set/local_rules.php b/tests/lib/PhpCsFixer/Sets/expected_rules/5_0_rule_set/local_rules.php index b254e30..37b7b1c 100644 --- a/tests/lib/PhpCsFixer/Sets/expected_rules/5_0_rule_set/local_rules.php +++ b/tests/lib/PhpCsFixer/Sets/expected_rules/5_0_rule_set/local_rules.php @@ -132,7 +132,10 @@ 'non_printable_character' => true, 'normalize_index_brace' => true, 'object_operator_without_whitespace' => true, - 'ordered_imports' => true, + 'ordered_imports' => [ + 'imports_order' => ['class', 'function', 'const'], + 'sort_algorithm' => 'alpha', + ], 'php_unit_construct' => true, 'php_unit_fqcn_annotation' => true, 'php_unit_mock_short_will_return' => false, diff --git a/tests/lib/PhpCsFixer/Sets/expected_rules/5_0_rule_set/php_cs_fixer_rules.php b/tests/lib/PhpCsFixer/Sets/expected_rules/5_0_rule_set/php_cs_fixer_rules.php index 3232db4..8592751 100644 --- a/tests/lib/PhpCsFixer/Sets/expected_rules/5_0_rule_set/php_cs_fixer_rules.php +++ b/tests/lib/PhpCsFixer/Sets/expected_rules/5_0_rule_set/php_cs_fixer_rules.php @@ -24,7 +24,10 @@ 'no_blank_lines_after_class_opening' => true, 'no_leading_import_slash' => true, 'no_whitespace_in_blank_line' => true, - 'ordered_imports' => true, + 'ordered_imports' => [ + 'imports_order' => ['class', 'function', 'const'], + 'sort_algorithm' => 'alpha', + ], 'return_type_declaration' => true, 'short_scalar_cast' => true, 'single_import_per_statement' => true,