1 | <?php |
||||
2 | |||||
3 | namespace Shamaseen\Repository\Tests; |
||||
4 | |||||
5 | use DirectoryIterator; |
||||
6 | use FilesystemIterator; |
||||
7 | use Illuminate\Database\Schema\Blueprint; |
||||
8 | use Illuminate\Support\Facades\Schema; |
||||
9 | use Shamaseen\Generator\Generator as GeneratorService; |
||||
10 | use Shamaseen\Repository\PathResolver; |
||||
11 | use Shamaseen\Repository\RepositoryServiceProvider; |
||||
12 | |||||
13 | class TestCase extends \Orchestra\Testbench\TestCase |
||||
14 | { |
||||
15 | protected PathResolver $pathResolver; |
||||
16 | protected GeneratorService $generator; |
||||
17 | |||||
18 | protected string $databaseName = 'tests'; |
||||
19 | protected string $modelName = 'Test'; |
||||
20 | protected string $userPath = 'Tests'; |
||||
21 | |||||
22 | protected array $configs = [ |
||||
23 | 'repository.stubs_path' => __DIR__.'/results/resources/stubs', |
||||
24 | 'repository.lang_path' => __DIR__.'/results/resources/lang', |
||||
25 | ]; |
||||
26 | |||||
27 | public function setUp(): void |
||||
28 | { |
||||
29 | parent::setUp(); |
||||
30 | |||||
31 | $this->app->setBasePath(realpath(__DIR__).'/results'); |
||||
0 ignored issues
–
show
|
|||||
32 | $this->deletePathContentsIfExists(realpath(__DIR__).'/results'); |
||||
33 | $this->makePathIfNotExist(realpath(__DIR__).'/results/app'); |
||||
34 | $this->alterConfig(); |
||||
35 | $this->makePathIfNotExist(config('repository.stubs_path')); |
||||
36 | $this->makePathIfNotExist(config('repository.lang_path')); |
||||
37 | $this->publishStubs(); |
||||
38 | |||||
39 | |||||
40 | $this->generator = $this->app->make(GeneratorService::class); |
||||
41 | config(['generator.base_path' => base_path(config('repository.base_path'))]); |
||||
42 | |||||
43 | $this->pathResolver = new PathResolver($this->modelName, $this->userPath, config('repository.base_path')); |
||||
44 | } |
||||
45 | |||||
46 | protected function getPackageProviders($app): array |
||||
0 ignored issues
–
show
The parameter
$app is not used and could be removed.
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
This check looks for parameters that have been defined for a function or method, but which are not used in the method body. ![]() |
|||||
47 | { |
||||
48 | return [ |
||||
49 | RepositoryServiceProvider::class, |
||||
50 | ]; |
||||
51 | } |
||||
52 | |||||
53 | protected function getEnvironmentSetUp($app) |
||||
0 ignored issues
–
show
The parameter
$app is not used and could be removed.
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
This check looks for parameters that have been defined for a function or method, but which are not used in the method body. ![]() |
|||||
54 | { |
||||
55 | // perform environment setup |
||||
56 | } |
||||
57 | |||||
58 | public function makePathIfNotExist(string $path) |
||||
59 | { |
||||
60 | if (!is_dir($path)) { |
||||
61 | mkdir($path, 0775, true); |
||||
62 | } |
||||
63 | } |
||||
64 | |||||
65 | public function deletePathContentsIfExists($dir): void |
||||
66 | { |
||||
67 | if (!is_dir($dir)) { |
||||
68 | return; |
||||
69 | } |
||||
70 | |||||
71 | $files = scandir($dir); |
||||
72 | foreach ($files as $file) { |
||||
73 | if ($file[0] != '.') { |
||||
74 | $path = $dir . '/' . $file; |
||||
75 | if (is_dir($path)) { |
||||
76 | $this->deletePathContentsIfExists($path); // Recursively delete subdirectories |
||||
77 | } else { |
||||
78 | unlink($path); // Delete files |
||||
79 | } |
||||
80 | } |
||||
81 | } |
||||
82 | } |
||||
83 | |||||
84 | /** |
||||
85 | * Using `vendor:publish --tag="repository-stubs"` didn't work as the test config path is not set yet. |
||||
86 | */ |
||||
87 | public function publishStubs() |
||||
88 | { |
||||
89 | $iterator = new FilesystemIterator(__DIR__.'/../src/stubs'); |
||||
90 | foreach ($iterator as $i) { |
||||
91 | /** |
||||
92 | * @var DirectoryIterator $i |
||||
93 | */ |
||||
94 | if ($i->isFile()) { |
||||
95 | copy($i->getPathname(), $this->configs['repository.stubs_path'].'/'.$i->getFilename()); |
||||
96 | } |
||||
97 | } |
||||
98 | |||||
99 | // change fillable to guarded for the next test. |
||||
100 | $path = base_path('resources/stubs/Model.stub'); |
||||
101 | $modelContent = file_get_contents($path); |
||||
102 | $modelContent = str_replace('$fillable', '$guarded', $modelContent); |
||||
103 | file_put_contents($path, $modelContent); |
||||
104 | } |
||||
105 | |||||
106 | public function alterConfig() |
||||
107 | { |
||||
108 | foreach ($this->configs as $key => $value) { |
||||
109 | config()->set($key, $value); |
||||
110 | } |
||||
111 | } |
||||
112 | |||||
113 | public function createDatabase(): void |
||||
114 | { |
||||
115 | Schema::create($this->databaseName, function (Blueprint $blueprint) { |
||||
116 | $blueprint->id(); |
||||
117 | $blueprint->string('name'); |
||||
118 | $blueprint->string('type'); |
||||
119 | $blueprint->timestamps(); |
||||
120 | }); |
||||
121 | } |
||||
122 | |||||
123 | public function dropDatabase(): void |
||||
124 | { |
||||
125 | Schema::drop($this->databaseName); |
||||
126 | } |
||||
127 | } |
||||
128 |
This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.
This is most likely a typographical error or the method has been renamed.