CallbackEventTest.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <?php
  2. namespace Illuminate\Tests\Integration\Console\Scheduling;
  3. use Exception;
  4. use Illuminate\Console\Scheduling\CallbackEvent;
  5. use Illuminate\Console\Scheduling\EventMutex;
  6. use Mockery as m;
  7. use Orchestra\Testbench\TestCase;
  8. class CallbackEventTest extends TestCase
  9. {
  10. protected function tearDown(): void
  11. {
  12. parent::tearDown();
  13. m::close();
  14. }
  15. public function testDefaultResultIsSuccess()
  16. {
  17. $success = null;
  18. $event = (new CallbackEvent(m::mock(EventMutex::class), function () {
  19. }))->onSuccess(function () use (&$success) {
  20. $success = true;
  21. })->onFailure(function () use (&$success) {
  22. $success = false;
  23. });
  24. $event->run($this->app);
  25. $this->assertTrue($success);
  26. }
  27. public function testFalseResponseIsFailure()
  28. {
  29. $success = null;
  30. $event = (new CallbackEvent(m::mock(EventMutex::class), function () {
  31. return false;
  32. }))->onSuccess(function () use (&$success) {
  33. $success = true;
  34. })->onFailure(function () use (&$success) {
  35. $success = false;
  36. });
  37. $event->run($this->app);
  38. $this->assertFalse($success);
  39. }
  40. public function testExceptionIsFailure()
  41. {
  42. $success = null;
  43. $event = (new CallbackEvent(m::mock(EventMutex::class), function () {
  44. throw new Exception;
  45. }))->onSuccess(function () use (&$success) {
  46. $success = true;
  47. })->onFailure(function () use (&$success) {
  48. $success = false;
  49. });
  50. try {
  51. $event->run($this->app);
  52. } catch (Exception $e) {
  53. }
  54. $this->assertFalse($success);
  55. }
  56. public function testExceptionBubbles()
  57. {
  58. $event = new CallbackEvent(m::mock(EventMutex::class), function () {
  59. throw new Exception;
  60. });
  61. $this->expectException(Exception::class);
  62. $event->run($this->app);
  63. }
  64. }