61 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace Tests\Feature\Commands;
 | |
| 
 | |
| use App\Jobs\Document\CreateDocument;
 | |
| use App\Models\Document\Document;
 | |
| use App\Notifications\Sale\Invoice as InvoiceNotification;
 | |
| use App\Utilities\Date;
 | |
| use Illuminate\Support\Facades\Notification;
 | |
| use Tests\Feature\FeatureTestCase;
 | |
| 
 | |
| class RecurringCheckTest extends FeatureTestCase
 | |
| {
 | |
|     public $recurring_count;
 | |
| 
 | |
|     protected function setUp(): void
 | |
|     {
 | |
|         parent::setUp();
 | |
| 
 | |
|         $this->recurring_count = 7;
 | |
|     }
 | |
| 
 | |
|     public function testItShouldCreateCorrectNumberOfRecurringInvoices(): void
 | |
|     {
 | |
|         Notification::fake();
 | |
| 
 | |
|         $this->dispatch(new CreateDocument($this->getRequest()));
 | |
| 
 | |
|         Date::setTestNow(Date::now());
 | |
| 
 | |
|         $this->artisan('recurring:check');
 | |
| 
 | |
|         $this->assertDatabaseCount('documents', $this->recurring_count + 1);
 | |
| 
 | |
|         Notification::assertSentToTimes($this->user, InvoiceNotification::class, $this->recurring_count);
 | |
|     }
 | |
| 
 | |
|     public function testItShouldNotCreateAnyRecurringInvoice(): void
 | |
|     {
 | |
|         Notification::fake();
 | |
| 
 | |
|         $this->dispatch(new CreateDocument($this->getRequest()));
 | |
| 
 | |
|         Date::setTestNow(Date::now()->subDays($this->recurring_count + 1));
 | |
| 
 | |
|         $this->artisan('recurring:check');
 | |
| 
 | |
|         $this->assertDatabaseCount('documents', 1);
 | |
| 
 | |
|         Notification::assertNotSentTo($this->user, InvoiceNotification::class);
 | |
|     }
 | |
| 
 | |
|     public function getRequest(): array
 | |
|     {
 | |
|         return Document::factory()->invoice()->items()->recurring()->sent()->raw([
 | |
|             'issued_at' => Date::now()->subDays($this->recurring_count + 1),
 | |
|             'recurring_count' => '20',
 | |
|         ]);
 | |
|     }
 | |
| }
 |