SeedCommandTest.php 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <?php
  2. namespace Illuminate\Tests\Database;
  3. use Illuminate\Console\OutputStyle;
  4. use Illuminate\Container\Container;
  5. use Illuminate\Database\ConnectionResolverInterface;
  6. use Illuminate\Database\Console\Seeds\SeedCommand;
  7. use Illuminate\Database\Seeder;
  8. use Mockery as m;
  9. use PHPUnit\Framework\TestCase;
  10. use Symfony\Component\Console\Input\ArrayInput;
  11. use Symfony\Component\Console\Output\NullOutput;
  12. class SeedCommandTest extends TestCase
  13. {
  14. public function testHandle()
  15. {
  16. $input = new ArrayInput(['--force' => true, '--database' => 'sqlite']);
  17. $output = new NullOutput;
  18. $seeder = m::mock(Seeder::class);
  19. $seeder->shouldReceive('setContainer')->once()->andReturnSelf();
  20. $seeder->shouldReceive('setCommand')->once()->andReturnSelf();
  21. $seeder->shouldReceive('__invoke')->once();
  22. $resolver = m::mock(ConnectionResolverInterface::class);
  23. $resolver->shouldReceive('getDefaultConnection')->once();
  24. $resolver->shouldReceive('setDefaultConnection')->once()->with('sqlite');
  25. $container = m::mock(Container::class);
  26. $container->shouldReceive('call');
  27. $container->shouldReceive('environment')->once()->andReturn('testing');
  28. $container->shouldReceive('make')->with('DatabaseSeeder')->andReturn($seeder);
  29. $container->shouldReceive('make')->with(OutputStyle::class, m::any())->andReturn(
  30. new OutputStyle($input, $output)
  31. );
  32. $command = new SeedCommand($resolver);
  33. $command->setLaravel($container);
  34. // call run to set up IO, then fire manually.
  35. $command->run($input, $output);
  36. $command->handle();
  37. $container->shouldHaveReceived('call')->with([$command, 'handle']);
  38. }
  39. protected function tearDown(): void
  40. {
  41. m::close();
  42. }
  43. }