Skip to content

Commit 01a7cd0

Browse files
committed
PrettierPreCommitHookTest implemented
1 parent ef37bb8 commit 01a7cd0

13 files changed

+149
-31
lines changed

package-lock.json

Lines changed: 5 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
{
22
"devDependencies": {
3-
"blade-formatter": "^1.32.9"
3+
"blade-formatter": "^1.32.9",
4+
"prettier": "2.8.7"
45
}
56
}

src/Console/Commands/Hooks/BaseCodeAnalyzerPreCommitHook.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ protected function commitFailMessage()
150150

151151
$message = '<bg=red;fg=white> COMMIT FAILED </> ';
152152
$message .= sprintf("Your commit contains files that should pass %s but do not. Please fix the errors in the files above and try again.\n", $this->getName());
153-
$message .= sprintf("You can check which %s errors happened in them by executing: <comment>%s {filePath}</comment>", $this->getName(), $this->analyzerCommand());
153+
$message .= sprintf('You can check which %s errors happened in them by executing: <comment>%s {filePath}</comment>', $this->getName(), $this->analyzerCommand());
154154

155155
$this->command->getOutput()->writeln($message);
156156

src/Console/Commands/Hooks/PrettierPreCommitHook.php

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,14 +71,12 @@ protected function configParam(): string
7171
/**
7272
* Retrieves additional parameters for the Prettier code analyzer from the configuration file,
7373
* filters out pre-defined parameters to avoid conflicts, and returns them as a string.
74-
*
75-
* @return string
7674
*/
7775
protected function additionalParams(): string
7876
{
7977
$additionalParams = config('git-hooks.code_analyzers.prettier.additional_params');
8078

81-
if (!empty($additionalParams)) {
79+
if (! empty($additionalParams)) {
8280
$additionalParams = preg_replace('/\s*--(config|find-config-path|write|check)\b(=\S*)?\s*/', '', $additionalParams);
8381
}
8482

tests/Datasets/GitLogsDataset.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,15 @@
2424
'List Of Changed Files' => 'AM src/ChangedFiles.php',
2525
]);
2626

27-
dataset('listOfFixableFiles', [
27+
dataset('listOfFixablePhpFiles', [
2828
'List of Fixable Files' => implode(PHP_EOL, [
2929
'AM temp/ClassWithFixableIssues.php',
3030
'AM temp/fixable-blade-file.blade.php',
3131
]),
3232
]);
33+
34+
dataset('listOfFixableJSFiles', [
35+
'List of Fixable Files' => implode(PHP_EOL, [
36+
'AM temp/fixable-js-file.js',
37+
]),
38+
]);

tests/Datasets/PreCommitHooksDataset.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
use Igorsgm\GitHooks\Console\Commands\Hooks\LarastanPreCommitHook;
55
use Igorsgm\GitHooks\Console\Commands\Hooks\PHPCodeSnifferPreCommitHook;
66
use Igorsgm\GitHooks\Console\Commands\Hooks\PintPreCommitHook;
7+
use Igorsgm\GitHooks\Console\Commands\Hooks\PrettierPreCommitHook;
78

89
dataset('pintConfigurations', [
910
'Config File' => [
@@ -49,6 +50,16 @@
4950
],
5051
]);
5152

53+
dataset('prettierConfiguration', [
54+
'.prettierrc.json file & additional params' => [
55+
[
56+
'path' => '../../../../node_modules/.bin/prettier',
57+
'config' => __DIR__.'/../Fixtures/.prettierrcFixture.json',
58+
'additional_params' => '--config --find-config-path',
59+
],
60+
],
61+
]);
62+
5263
$nonExistentPath = [
5364
'path' => 'nonexistent/path',
5465
'phpcs_path' => 'nonexistent/path',
@@ -75,4 +86,9 @@
7586
$nonExistentPath,
7687
LarastanPreCommitHook::class,
7788
],
89+
'Prettier' => [
90+
'prettier',
91+
$nonExistentPath,
92+
PrettierPreCommitHook::class,
93+
],
7894
]);

tests/Features/Commands/Hooks/BaseCodeAnalyzerPreCommitHookTest.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,18 +40,18 @@
4040
})->with('modifiedFilesList');
4141

4242
test('Throws HookFailException and notifies when Code Analyzer is not installed',
43-
function ($configName, $nonExistentPathConfig, $preCommitHookClass, $listOfFixableFiles) {
43+
function ($configName, $nonExistentPathConfig, $preCommitHookClass, $listOfFixablePhpFiles) {
4444
$this->config->set('git-hooks.code_analyzers.'.$configName, $nonExistentPathConfig);
4545

4646
$this->config->set('git-hooks.pre-commit', [
4747
$preCommitHookClass,
4848
]);
4949

5050
GitHooks::shouldReceive('isMergeInProgress')->andReturn(false);
51-
GitHooks::shouldReceive('getListOfChangedFiles')->andReturn($listOfFixableFiles);
51+
GitHooks::shouldReceive('getListOfChangedFiles')->andReturn($listOfFixablePhpFiles);
5252

5353
$preCommitHook = new $preCommitHookClass();
5454
$this->artisan('git-hooks:pre-commit')
5555
->expectsOutputToContain($preCommitHook->getName().' is not installed.')
5656
->assertExitCode(1);
57-
})->with('codeAnalyzersList', 'listOfFixableFiles');
57+
})->with('codeAnalyzersList', 'listOfFixablePhpFiles');

tests/Features/Commands/Hooks/BladeFormatterPreCommitHookTest.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
})->with('phpcsConfiguration');
2828

2929
test('Fails commit when Blade Formatter is not passing and user does not autofix the files',
30-
function ($bladeFormatterConfiguration, $listOfFixableFiles) {
30+
function ($bladeFormatterConfiguration, $listOfFixablePhpFiles) {
3131
$this->config->set('git-hooks.code_analyzers.blade_formatter', $bladeFormatterConfiguration);
3232
$this->config->set('git-hooks.pre-commit', [
3333
BladeFormatterPreCommitHook::class,
@@ -38,16 +38,16 @@ function ($bladeFormatterConfiguration, $listOfFixableFiles) {
3838
);
3939

4040
GitHooks::shouldReceive('isMergeInProgress')->andReturn(false);
41-
GitHooks::shouldReceive('getListOfChangedFiles')->andReturn($listOfFixableFiles);
41+
GitHooks::shouldReceive('getListOfChangedFiles')->andReturn($listOfFixablePhpFiles);
4242

4343
$this->artisan('git-hooks:pre-commit')
4444
->expectsOutputToContain('Blade Formatter Failed')
4545
->expectsOutputToContain('COMMIT FAILED')
4646
->expectsConfirmation('Would you like to attempt to correct files automagically?', 'no')
4747
->assertExitCode(1);
48-
})->with('bladeFormatterConfiguration', 'listOfFixableFiles');
48+
})->with('bladeFormatterConfiguration', 'listOfFixablePhpFiles');
4949

50-
test('Commit passes when Blade Formatter fixes the files', function ($bladeFormatterConfiguration, $listOfFixableFiles) {
50+
test('Commit passes when Blade Formatter fixes the files', function ($bladeFormatterConfiguration, $listOfFixablePhpFiles) {
5151
$this->config->set('git-hooks.code_analyzers.blade_formatter', $bladeFormatterConfiguration);
5252
$this->config->set('git-hooks.pre-commit', [
5353
BladeFormatterPreCommitHook::class,
@@ -58,7 +58,7 @@ function ($bladeFormatterConfiguration, $listOfFixableFiles) {
5858
);
5959

6060
GitHooks::shouldReceive('isMergeInProgress')->andReturn(false);
61-
GitHooks::shouldReceive('getListOfChangedFiles')->andReturn($listOfFixableFiles);
61+
GitHooks::shouldReceive('getListOfChangedFiles')->andReturn($listOfFixablePhpFiles);
6262

6363
$this->artisan('git-hooks:pre-commit')
6464
->expectsOutputToContain('Blade Formatter Failed')
@@ -68,4 +68,4 @@ function ($bladeFormatterConfiguration, $listOfFixableFiles) {
6868
$this->artisan('git-hooks:pre-commit')
6969
->doesntExpectOutputToContain('Blade Formatter Failed')
7070
->assertSuccessful();
71-
})->with('bladeFormatterConfiguration', 'listOfFixableFiles');
71+
})->with('bladeFormatterConfiguration', 'listOfFixablePhpFiles');

tests/Features/Commands/Hooks/PHPCodeSnifferPreCommitHookTest.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
})->with('phpcsConfiguration');
2828

2929
test('Fails commit when PHPCS is not passing and user does not autofix the files',
30-
function ($phpCSConfiguration, $listOfFixableFiles) {
30+
function ($phpCSConfiguration, $listOfFixablePhpFiles) {
3131
$this->config->set('git-hooks.code_analyzers.php_code_sniffer', $phpCSConfiguration);
3232
$this->config->set('git-hooks.pre-commit', [
3333
PHPCodeSnifferPreCommitHook::class,
@@ -38,16 +38,16 @@ function ($phpCSConfiguration, $listOfFixableFiles) {
3838
);
3939

4040
GitHooks::shouldReceive('isMergeInProgress')->andReturn(false);
41-
GitHooks::shouldReceive('getListOfChangedFiles')->andReturn($listOfFixableFiles);
41+
GitHooks::shouldReceive('getListOfChangedFiles')->andReturn($listOfFixablePhpFiles);
4242

4343
$this->artisan('git-hooks:pre-commit')
4444
->expectsOutputToContain('PHP_CodeSniffer Failed')
4545
->expectsOutputToContain('COMMIT FAILED')
4646
->expectsConfirmation('Would you like to attempt to correct files automagically?', 'no')
4747
->assertExitCode(1);
48-
})->with('phpcsConfiguration', 'listOfFixableFiles');
48+
})->with('phpcsConfiguration', 'listOfFixablePhpFiles');
4949

50-
test('Commit passes when PHPCBF fixes the files', function ($phpCSConfiguration, $listOfFixableFiles) {
50+
test('Commit passes when PHPCBF fixes the files', function ($phpCSConfiguration, $listOfFixablePhpFiles) {
5151
$this->config->set('git-hooks.code_analyzers.php_code_sniffer', $phpCSConfiguration);
5252
$this->config->set('git-hooks.pre-commit', [
5353
PHPCodeSnifferPreCommitHook::class,
@@ -58,7 +58,7 @@ function ($phpCSConfiguration, $listOfFixableFiles) {
5858
);
5959

6060
GitHooks::shouldReceive('isMergeInProgress')->andReturn(false);
61-
GitHooks::shouldReceive('getListOfChangedFiles')->andReturn($listOfFixableFiles);
61+
GitHooks::shouldReceive('getListOfChangedFiles')->andReturn($listOfFixablePhpFiles);
6262

6363
$this->artisan('git-hooks:pre-commit')
6464
->expectsOutputToContain('PHP_CodeSniffer Failed')
@@ -68,4 +68,4 @@ function ($phpCSConfiguration, $listOfFixableFiles) {
6868
$this->artisan('git-hooks:pre-commit')
6969
->doesntExpectOutputToContain('PHP_CodeSniffer Failed')
7070
->assertSuccessful();
71-
})->with('phpcsConfiguration', 'listOfFixableFiles');
71+
})->with('phpcsConfiguration', 'listOfFixablePhpFiles');

tests/Features/Commands/Hooks/PintPreCommitHookTest.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
})->with('pintConfigurations');
2828

2929
test('Fails commit when Pint is not passing and user does not autofix the files',
30-
function ($pintConfiguration, $listOfFixableFiles) {
30+
function ($pintConfiguration, $listOfFixablePhpFiles) {
3131
$this->config->set('git-hooks.code_analyzers.laravel_pint', $pintConfiguration);
3232
$this->config->set('git-hooks.pre-commit', [
3333
PintPreCommitHook::class,
@@ -38,16 +38,16 @@ function ($pintConfiguration, $listOfFixableFiles) {
3838
);
3939

4040
GitHooks::shouldReceive('isMergeInProgress')->andReturn(false);
41-
GitHooks::shouldReceive('getListOfChangedFiles')->andReturn($listOfFixableFiles);
41+
GitHooks::shouldReceive('getListOfChangedFiles')->andReturn($listOfFixablePhpFiles);
4242

4343
$this->artisan('git-hooks:pre-commit')
4444
->expectsOutputToContain('Pint Failed')
4545
->expectsOutputToContain('COMMIT FAILED')
4646
->expectsConfirmation('Would you like to attempt to correct files automagically?', 'no')
4747
->assertExitCode(1);
48-
})->with('pintConfigurations', 'listOfFixableFiles');
48+
})->with('pintConfigurations', 'listOfFixablePhpFiles');
4949

50-
test('Commit passes when Pint fixes the files', function ($pintConfiguration, $listOfFixableFiles) {
50+
test('Commit passes when Pint fixes the files', function ($pintConfiguration, $listOfFixablePhpFiles) {
5151
$this->config->set('git-hooks.code_analyzers.laravel_pint', $pintConfiguration);
5252
$this->config->set('git-hooks.pre-commit', [
5353
PintPreCommitHook::class,
@@ -58,7 +58,7 @@ function ($pintConfiguration, $listOfFixableFiles) {
5858
);
5959

6060
GitHooks::shouldReceive('isMergeInProgress')->andReturn(false);
61-
GitHooks::shouldReceive('getListOfChangedFiles')->andReturn($listOfFixableFiles);
61+
GitHooks::shouldReceive('getListOfChangedFiles')->andReturn($listOfFixablePhpFiles);
6262

6363
$this->artisan('git-hooks:pre-commit')
6464
->expectsOutputToContain('Pint Failed')
@@ -68,4 +68,4 @@ function ($pintConfiguration, $listOfFixableFiles) {
6868
$this->artisan('git-hooks:pre-commit')
6969
->doesntExpectOutputToContain('Pint Failed')
7070
->assertSuccessful();
71-
})->with('pintConfigurations', 'listOfFixableFiles');
71+
})->with('pintConfigurations', 'listOfFixablePhpFiles');

0 commit comments

Comments
 (0)