added test for recurring
This commit is contained in:
60
tests/Feature/Commands/RecurringCheckTest.php
Normal file
60
tests/Feature/Commands/RecurringCheckTest.php
Normal file
@ -0,0 +1,60 @@
|
||||
<?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',
|
||||
]);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user