MigratorEventsTest.php 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <?php
  2. namespace Illuminate\Tests\Integration\Database;
  3. use Illuminate\Database\Events\MigrationEnded;
  4. use Illuminate\Database\Events\MigrationsEnded;
  5. use Illuminate\Database\Events\MigrationsStarted;
  6. use Illuminate\Database\Events\MigrationStarted;
  7. use Illuminate\Database\Events\NoPendingMigrations;
  8. use Illuminate\Database\Migrations\Migration;
  9. use Illuminate\Support\Facades\Event;
  10. use Orchestra\Testbench\TestCase;
  11. class MigratorEventsTest extends TestCase
  12. {
  13. protected function migrateOptions()
  14. {
  15. return [
  16. '--path' => realpath(__DIR__.'/stubs/'),
  17. '--realpath' => true,
  18. ];
  19. }
  20. public function testMigrationEventsAreFired()
  21. {
  22. Event::fake();
  23. $this->artisan('migrate', $this->migrateOptions());
  24. $this->artisan('migrate:rollback', $this->migrateOptions());
  25. Event::assertDispatched(MigrationsStarted::class, 2);
  26. Event::assertDispatched(MigrationsEnded::class, 2);
  27. Event::assertDispatched(MigrationStarted::class, 2);
  28. Event::assertDispatched(MigrationEnded::class, 2);
  29. }
  30. public function testMigrationEventsContainTheMigrationAndMethod()
  31. {
  32. Event::fake();
  33. $this->artisan('migrate', $this->migrateOptions());
  34. $this->artisan('migrate:rollback', $this->migrateOptions());
  35. Event::assertDispatched(MigrationsStarted::class, function ($event) {
  36. return $event->method === 'up';
  37. });
  38. Event::assertDispatched(MigrationsStarted::class, function ($event) {
  39. return $event->method === 'down';
  40. });
  41. Event::assertDispatched(MigrationsEnded::class, function ($event) {
  42. return $event->method === 'up';
  43. });
  44. Event::assertDispatched(MigrationsEnded::class, function ($event) {
  45. return $event->method === 'down';
  46. });
  47. Event::assertDispatched(MigrationStarted::class, function ($event) {
  48. return $event->method === 'up' && $event->migration instanceof Migration;
  49. });
  50. Event::assertDispatched(MigrationStarted::class, function ($event) {
  51. return $event->method === 'down' && $event->migration instanceof Migration;
  52. });
  53. Event::assertDispatched(MigrationEnded::class, function ($event) {
  54. return $event->method === 'up' && $event->migration instanceof Migration;
  55. });
  56. Event::assertDispatched(MigrationEnded::class, function ($event) {
  57. return $event->method === 'down' && $event->migration instanceof Migration;
  58. });
  59. }
  60. public function testTheNoMigrationEventIsFiredWhenNothingToMigrate()
  61. {
  62. Event::fake();
  63. $this->artisan('migrate');
  64. $this->artisan('migrate:rollback');
  65. Event::assertDispatched(NoPendingMigrations::class, function ($event) {
  66. return $event->method === 'up';
  67. });
  68. Event::assertDispatched(NoPendingMigrations::class, function ($event) {
  69. return $event->method === 'down';
  70. });
  71. }
  72. }