mirror of
https://github.com/barryvdh/laravel-ide-helper.git
synced 2026-08-18 01:57:13 +00:00
103 lines
2.7 KiB
PHP
103 lines
2.7 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Barryvdh\LaravelIdeHelper\Tests\Console\ModelsCommand;
|
|
|
|
use Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider;
|
|
use Barryvdh\LaravelIdeHelper\Tests\SnapshotPhpDriver;
|
|
use Barryvdh\LaravelIdeHelper\Tests\SnapshotTxtDriver;
|
|
use Barryvdh\LaravelIdeHelper\Tests\TestCase;
|
|
use Illuminate\Filesystem\Filesystem;
|
|
use Illuminate\Foundation\Application;
|
|
use Mockery;
|
|
|
|
abstract class AbstractModelsCommand extends TestCase
|
|
{
|
|
protected $mockFilesystemOutput;
|
|
|
|
protected function setUp(): void
|
|
{
|
|
parent::setUp();
|
|
|
|
// Skip older Laravel version for these tests
|
|
if (version_compare(Application::VERSION, '6.0', '<')) {
|
|
$this->markTestSkipped('This test requires Laravel 6.0 or higher');
|
|
return;
|
|
}
|
|
|
|
$this->loadMigrationsFrom(__DIR__ . '/migrations');
|
|
$this->artisan('migrate');
|
|
|
|
|
|
|
|
$this->mockFilesystem();
|
|
}
|
|
|
|
/**
|
|
* Get package providers.
|
|
*
|
|
* @param \Illuminate\Foundation\Application $app
|
|
*
|
|
* @return array
|
|
*/
|
|
protected function getPackageProviders($app)
|
|
{
|
|
return [IdeHelperServiceProvider::class];
|
|
}
|
|
|
|
protected function getEnvironmentSetUp($app)
|
|
{
|
|
parent::getEnvironmentSetUp($app);
|
|
|
|
$config = $app['config'];
|
|
|
|
$config->set('database.default', 'sqlite');
|
|
$config->set('database.connections.sqlite', [
|
|
'driver' => 'sqlite',
|
|
'database' => ':memory:',
|
|
'prefix' => '',
|
|
]);
|
|
|
|
// Load the Models from the Test dir
|
|
$config->set('ide-helper.model_locations', [
|
|
dirname((new \ReflectionClass(static::class))->getFileName()) . '/Models',
|
|
]);
|
|
|
|
// Don't override integer -> int for tests
|
|
$config->set('ide-helper.type_overrides', []);
|
|
}
|
|
|
|
protected function mockFilesystem()
|
|
{
|
|
$this->mockOutput = '';
|
|
|
|
$mockFilesystem = Mockery::mock(Filesystem::class);
|
|
|
|
$mockFilesystem
|
|
->shouldReceive('get')
|
|
->andReturnUsing(function ($file) {
|
|
return file_get_contents($file);
|
|
});
|
|
|
|
$mockFilesystem
|
|
->shouldReceive('put')
|
|
->with(
|
|
Mockery::any(),
|
|
Mockery::any()
|
|
)
|
|
->andReturnUsing(function ($path, $contents) {
|
|
$this->mockFilesystemOutput .= $contents;
|
|
|
|
return strlen($contents);
|
|
});
|
|
|
|
$this->instance(Filesystem::class, $mockFilesystem);
|
|
}
|
|
|
|
protected function assertMatchesMockedSnapshot()
|
|
{
|
|
$this->assertMatchesSnapshot($this->mockFilesystemOutput, new SnapshotPhpDriver());
|
|
}
|
|
}
|