added tests for send email

This commit is contained in:
Denis Duliçi
2023-03-22 01:33:33 +03:00
parent 318082228e
commit 31c5891025
9 changed files with 161 additions and 21 deletions

View File

@ -4,6 +4,7 @@ namespace Tests\Feature\Banking;
use App\Exports\Banking\Transactions as Export;
use App\Jobs\Banking\CreateTransaction;
use App\Notifications\Banking\Transaction as Notification;
use App\Models\Banking\Transaction;
use Illuminate\Http\UploadedFile;
use Illuminate\Support\Facades\File;
@ -70,6 +71,37 @@ class TransactionsTest extends FeatureTestCase
]);
}
public function testItShouldSendTransactionEmail()
{
config(['mail.default' => 'array']);
$transaction = $this->dispatch(new CreateTransaction($this->getRequest()));
$this->loginAs()
->post(route('modals.transactions.emails.store', $transaction->id), $this->getEmailRequest($transaction))
->assertStatus(200);
$this->assertFlashLevel('success');
}
public function testItShouldHitRateLimitForSendTransactionEmail()
{
config(['mail.default' => 'array']);
$transaction = $this->dispatch(new CreateTransaction($this->getRequest()));
for ($i = 0; $i < config('app.throttles.email.minute'); $i++) {
$this->loginAs()
->post(route('modals.transactions.emails.store', $transaction->id), $this->getEmailRequest($transaction));
}
$this->loginAs()
->post(route('modals.transactions.emails.store', $transaction->id), $this->getEmailRequest($transaction))
->assertJson([
'success' => false,
]);
}
public function testItShouldSeeTransactionUpdatePage()
{
$request = $this->getRequest();
@ -192,4 +224,18 @@ class TransactionsTest extends FeatureTestCase
return $factory->raw();
}
public function getEmailRequest($transaction)
{
$email_template = config('type.transaction.' . $transaction->type . '.email_template');
$notification = new Notification($transaction, $email_template, true);
return [
'transaction_id' => $transaction->id,
'to' => $transaction->contact->email,
'subject' => $notification->getSubject(),
'body' => $notification->getBody(),
];
}
}