mirror of
https://github.com/barryvdh/laravel-ide-helper.git
synced 2026-08-18 10:07:12 +00:00
* install spatie/phpunit-snapshot-assertions * switch GenerateBasicPhpdocFinal test to snapshot assertion * use v3 of spatie/phpunit-snapshot-assertions to be PHP7.2 compatible * add txt snapshot driver * fix EloquentCommandTest * replace all heredocs by snapshots * make test compatible with old/deprecated versions * Update composer.json * normalize composer.json * fix merge conflict * Allow older snapshot versions * normalize composer.json Co-authored-by: Barry vd. Heuvel <[email protected]> Co-authored-by: barryvdh <[email protected]>
64 lines
2.1 KiB
PHP
64 lines
2.1 KiB
PHP
<?php
|
|
|
|
namespace Barryvdh\LaravelIdeHelper\Tests\Console;
|
|
|
|
use Barryvdh\LaravelIdeHelper\Console\EloquentCommand;
|
|
use Barryvdh\LaravelIdeHelper\Tests\TestCase;
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use Illuminate\Filesystem\Filesystem;
|
|
use Mockery;
|
|
use ReflectionClass;
|
|
|
|
class EloquentCommandTest extends TestCase
|
|
{
|
|
public function testCommand()
|
|
{
|
|
$modelFilename = $this->getVendorModelFilename();
|
|
$modelSource = file_get_contents($modelFilename);
|
|
if (false !== strpos($modelSource, '* @mixin')) {
|
|
$msg = sprintf('Class %s already contains the @mixin markers', Model::class);
|
|
$this->markTestSkipped($msg);
|
|
}
|
|
|
|
$actualContent = null;
|
|
$mockFilesystem = Mockery::mock(Filesystem::class);
|
|
$mockFilesystem
|
|
->shouldReceive('get')
|
|
// We don't care about actual args (filename)
|
|
->andReturn('abstract class Model implements'); // This is enough to trigger the replacement logic
|
|
$mockFilesystem
|
|
->shouldReceive('put')
|
|
->with(
|
|
Mockery::any(), // First arg is path, we don't care
|
|
Mockery::capture($actualContent)
|
|
)
|
|
->andReturn(1) // Simulate we wrote _something_ to the file
|
|
->once();
|
|
|
|
$this->instance(Filesystem::class, $mockFilesystem);
|
|
$command = $this->app->make(EloquentCommand::class);
|
|
|
|
$tester = $this->runCommand($command);
|
|
|
|
$this->assertMatchesTxtSnapshot($actualContent);
|
|
|
|
$display = $tester->getDisplay();
|
|
$this->assertRegExp(
|
|
';Unexpected no document on Illuminate\\\Database\\\Eloquent\\\Model;',
|
|
$display
|
|
);
|
|
$this->assertRegExp(
|
|
';Wrote expected docblock to .*/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php;',
|
|
$display
|
|
);
|
|
}
|
|
|
|
private function getVendorModelFilename(): string
|
|
{
|
|
$class = Model::class;
|
|
$reflectedClass = new ReflectionClass($class);
|
|
|
|
return $reflectedClass->getFileName();
|
|
}
|
|
}
|