Issues (25)

tests/Check/AbstractFileCheckTest.php (1 issue)

1
<?php
2
3
namespace SilverStripe\ModuleRatings\Tests\Check;
4
5
use PHPUnit\Framework\TestCase;
6
use SilverStripe\ModuleRatings\Check\ContributingFileCheck;
7
use SilverStripe\ModuleRatings\Check\EditorConfigFileCheck;
8
use SilverStripe\ModuleRatings\Check\GitAttributesFileCheck;
9
use SilverStripe\ModuleRatings\Check\LicenseCheck;
10
use SilverStripe\ModuleRatings\Check\ReadmeCheck;
11
use SilverStripe\ModuleRatings\CheckSuite;
12
use Symfony\Component\Finder\Finder;
13
14
/**
15
 * This test covers the same logic used in all file based checks
16
 */
17
class AbstractFileCheckTest extends TestCase
18
{
19
    /**
20
     * @param string $cleckClass
21
     * @param array $filenames
22
     * @param bool $expected
23
     * @dataProvider runProvider
24
     */
25
    public function testRun($checkClass, $filenames, $expected)
26
    {
27
        // Set up the Finder mock
28
        $finder = $this->getMockBuilder(Finder::class)
0 ignored issues
show
Deprecated Code introduced by
The function PHPUnit\Framework\MockOb...ckBuilder::setMethods() has been deprecated: https://github.com/sebastianbergmann/phpunit/pull/3687 ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

28
        $finder = /** @scrutinizer ignore-deprecated */ $this->getMockBuilder(Finder::class)

This function has been deprecated. The supplier of the function has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the function will be removed and what other function to use instead.

Loading history...
29
            ->setMethods(['files', 'in', 'name'])
30
            ->getMock();
31
32
        $finder->expects($this->once())->method('files')->will($this->returnSelf());
33
        $finder->expects($this->once())->method('in')->will($this->returnSelf());
34
        $finder->expects($this->once())->method('name')->willReturn($filenames);
35
36
        $check = new $checkClass();
37
        $check->setSuite(new CheckSuite());
38
        $check->setFinder($finder);
39
        $check->run();
40
41
        $this->assertSame($expected, $check->getSuccessful());
42
    }
43
44
    /**
45
     * @return array[]
46
     */
47
    public function runProvider()
48
    {
49
        return [
50
            // License check tests
51
            'markdown license uppercase' => [LicenseCheck::class, ['LICENSE.md'], true],
52
            'markdown license lowercase' => [LicenseCheck::class, ['license.md'], true],
53
            'text license uppercase' => [LicenseCheck::class, ['LICENSE.txt'], true],
54
            'text license lowercase' => [LicenseCheck::class, ['license.txt'], true],
55
            'license uppercase' => [LicenseCheck::class, ['LICENSE'], true],
56
            'license lowercase' => [LicenseCheck::class, ['license'], true],
57
            'no license' => [LicenseCheck::class, [], false],
58
59
            // Contributing check tests
60
            'markdown contributing mixed case' => [ContributingFileCheck::class, ['CoNtrIbUtIng.md'], true],
61
            'markdown contributing lowercase' => [ContributingFileCheck::class, ['contributing.md'], true],
62
            'text contributing uppercase' => [ContributingFileCheck::class, ['CONTRIBUTING.txt'], true],
63
            'text contributing lowercase' => [ContributingFileCheck::class, ['contributing.txt'], true],
64
            'contributing uppercase' => [ContributingFileCheck::class, ['CONTRIBUTING'], true],
65
            'contributing lowercase' => [ContributingFileCheck::class, ['contributing'], true],
66
            'no contributing' => [ContributingFileCheck::class, [], false],
67
68
            // Editorconfig check tests
69
            'editorconfig' => [EditorConfigFileCheck::class, ['.editorconfig'], true],
70
            'no editorconfig' => [EditorConfigFileCheck::class, [], false],
71
72
            // Gitattributes check tests
73
            'gitattributes' => [GitAttributesFileCheck::class, ['.gitattributes'], true],
74
            'no gitattributes' => [GitAttributesFileCheck::class, [], false],
75
76
            // Readme check tests
77
            'markdown readme uppercase' => [ReadmeCheck::class, ['README.md'], true],
78
            'markdown readme lowercase' => [ReadmeCheck::class, ['readme.md'], true],
79
            'text readme uppercase' => [ReadmeCheck::class, ['README.txt'], true],
80
            'text readme lowercase' => [ReadmeCheck::class, ['readme.txt'], true],
81
            'readme uppercase' => [ReadmeCheck::class, ['README'], true],
82
            'readme lowercase' => [ReadmeCheck::class, ['readme'], true],
83
            'no readme' => [ReadmeCheck::class, [], false],
84
        ];
85
    }
86
}
87