|
2 | 2 |
|
3 | 3 | namespace MagicLink\Test; |
4 | 4 |
|
| 5 | +use Illuminate\Support\Collection; |
| 6 | +use Illuminate\Support\Facades\Event; |
5 | 7 | use MagicLink\Actions\LoginAction; |
| 8 | +use MagicLink\Actions\ResponseAction; |
| 9 | +use MagicLink\Events\MagicLinkWasDeleted; |
6 | 10 | use MagicLink\MagicLink; |
7 | 11 | use MagicLink\Test\TestSupport\User; |
8 | 12 |
|
@@ -80,4 +84,51 @@ public function test_delete_all_magiclink() |
80 | 84 |
|
81 | 85 | $this->assertEquals(0, MagicLink::count()); |
82 | 86 | } |
| 87 | + |
| 88 | + public function test_delete_all_magiclink_expired_one_and_one_dispatch_event_deleted() |
| 89 | + { |
| 90 | + Event::fake([MagicLinkWasDeleted::class]); |
| 91 | + |
| 92 | + config(['magiclink.delete_massive' => false]); |
| 93 | + |
| 94 | + $this->createMagicLinkExpired(3); |
| 95 | + |
| 96 | + MagicLink::deleteMagicLinkExpired(); |
| 97 | + |
| 98 | + Event::assertDispatched(MagicLinkWasDeleted::class, 3); |
| 99 | + |
| 100 | + Event::assertDispatched(MagicLinkWasDeleted::class,function (MagicLinkWasDeleted $event) { |
| 101 | + return $event->magiclink->action->run()['message'] === 'Hello World 1'; |
| 102 | + }); |
| 103 | + |
| 104 | + $this->assertEquals(0, MagicLink::count()); |
| 105 | + } |
| 106 | + |
| 107 | + public function test_delete_all_magiclink_expired_all_not_dispatch_event_deleted() |
| 108 | + { |
| 109 | + Event::fake([MagicLinkWasDeleted::class]); |
| 110 | + |
| 111 | + config(['magiclink.delete_massive' => true]); |
| 112 | + |
| 113 | + $this->createMagicLinkExpired(3); |
| 114 | + |
| 115 | + MagicLink::deleteMagicLinkExpired(); |
| 116 | + |
| 117 | + Event::assertDispatched(MagicLinkWasDeleted::class, 0); |
| 118 | + |
| 119 | + $this->assertEquals(0, MagicLink::count()); |
| 120 | + } |
| 121 | + |
| 122 | + private function createMagicLinkExpired(int $count = 1): Collection |
| 123 | + { |
| 124 | + return collect(range(1, $count)) |
| 125 | + ->map(function ($index) { |
| 126 | + $magiclink = MagicLink::create(new ResponseAction(['message' => 'Hello World ' . $index])); |
| 127 | + |
| 128 | + $magiclink->available_at = now()->subMinute(); |
| 129 | + $magiclink->save(); |
| 130 | + |
| 131 | + return $magiclink; |
| 132 | + }); |
| 133 | + } |
83 | 134 | } |
0 commit comments