mirror of
https://github.com/barryvdh/laravel-ide-helper.git
synced 2026-08-17 17:47:13 +00:00
Add ignored_models as config option (#890)
* Add ignored_models as config option
* Add README.md entry
* Add tests
* Change name of test class
* Add Ignored to the return values from the mocked filesystem
* Improve test speed by adding prestissimo
* Revert "Improve test speed by adding prestissimo"
This reverts commit 246a9f2a78.
This commit is contained in:
@@ -95,6 +95,18 @@ return array(
|
||||
'app',
|
||||
),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Models to ignore
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Define which models should be ignored.
|
||||
|
|
||||
*/
|
||||
|
||||
'ignored_models' => array(
|
||||
|
||||
),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|
||||
@@ -149,6 +149,14 @@ Models can be ignored using the `--ignore (-I)` option
|
||||
php artisan ide-helper:models --ignore="Post,User"
|
||||
```
|
||||
|
||||
Or can be ignored by setting the `ignored_models` config
|
||||
```php
|
||||
'ignored_models' => array(
|
||||
Post::class,
|
||||
Api\User::class
|
||||
),
|
||||
```
|
||||
|
||||
Note: With namespaces, wrap your model name in double-quotes (`"`): `php artisan ide-helper:models "API\User"`, or escape the slashes (`Api\\User`)
|
||||
|
||||
For properly recognition of `Model` methods (i.e. `paginate`, `findOrFail`) you should extend `\Eloquent` or add
|
||||
|
||||
@@ -185,7 +185,10 @@ class ModelsCommand extends Command
|
||||
}
|
||||
}
|
||||
|
||||
$ignore = explode(',', $ignore);
|
||||
$ignore = array_merge(
|
||||
explode(',', $ignore),
|
||||
$this->laravel['config']->get('ide-helper.ignored_models', array())
|
||||
);
|
||||
|
||||
foreach ($models as $name) {
|
||||
if (in_array($name, $ignore)) {
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
<?php declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Ignored\Models;
|
||||
|
||||
use DateTime;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Ignored extends Model
|
||||
{
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
<?php declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Ignored\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class NotIgnored extends Model
|
||||
{
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
<?php declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Ignored;
|
||||
|
||||
use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\AbstractModelsCommand;
|
||||
use Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Ignored\Models\Ignored;
|
||||
use Illuminate\Filesystem\Filesystem;
|
||||
use Mockery;
|
||||
|
||||
class Test extends AbstractModelsCommand
|
||||
{
|
||||
protected function getEnvironmentSetUp($app)
|
||||
{
|
||||
parent::getEnvironmentSetUp($app);
|
||||
|
||||
$app['config']->set('ide-helper', [
|
||||
'model_locations' => [
|
||||
// This is calculated from the base_path() which points to
|
||||
// vendor/orchestra/testbench-core/laravel
|
||||
'/../../../../tests/Console/ModelsCommand/Ignored/Models',
|
||||
],
|
||||
'ignored_models' => [
|
||||
Ignored::class
|
||||
]
|
||||
]);
|
||||
}
|
||||
|
||||
public function test(): void
|
||||
{
|
||||
$actualContent = null;
|
||||
$mockFilesystem = Mockery::mock(Filesystem::class);
|
||||
$mockFilesystem
|
||||
->shouldReceive('get')
|
||||
->andReturn(file_get_contents(__DIR__ . '/Models/Ignored.php'))
|
||||
->andReturn(file_get_contents(__DIR__ . '/Models/NotIgnored.php'))
|
||||
->once();
|
||||
$mockFilesystem
|
||||
->shouldReceive('put')
|
||||
->with(
|
||||
Mockery::any(),
|
||||
Mockery::capture($actualContent)
|
||||
)
|
||||
->andReturn(1) // Simulate we wrote _something_ to the file
|
||||
->once();
|
||||
|
||||
$this->instance(Filesystem::class, $mockFilesystem);
|
||||
|
||||
$command = $this->app->make(ModelsCommand::class);
|
||||
|
||||
$tester = $this->runCommand($command, [
|
||||
'--write' => true,
|
||||
]);
|
||||
|
||||
$this->assertSame(0, $tester->getStatusCode());
|
||||
$this->assertEmpty($tester->getDisplay());
|
||||
|
||||
$expectedContent = <<<'PHP'
|
||||
<?php declare(strict_types=1);
|
||||
|
||||
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Ignored\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
/**
|
||||
* Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Ignored\Models\NotIgnored
|
||||
*
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Ignored\Models\NotIgnored newModelQuery()
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Ignored\Models\NotIgnored newQuery()
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand\Ignored\Models\NotIgnored query()
|
||||
* @mixin \Eloquent
|
||||
*/
|
||||
class NotIgnored extends Model
|
||||
{
|
||||
}
|
||||
|
||||
PHP;
|
||||
|
||||
$this->assertSame($expectedContent, $actualContent);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user