Updated tests
This commit is contained in:
@@ -8,7 +8,6 @@ use App\Mail\SendUpcomingAuditMail;
|
||||
use App\Models\Asset;
|
||||
use App\Models\License;
|
||||
use App\Models\Setting;
|
||||
use App\Models\User;
|
||||
use Illuminate\Support\Facades\Mail;
|
||||
use Tests\TestCase;
|
||||
|
||||
@@ -17,7 +16,6 @@ class ExpiringAlertsNotificationTest extends TestCase
|
||||
{
|
||||
public function testExpiringAssetsEmailNotification()
|
||||
{
|
||||
$this->markIncompleteIfSqlite();
|
||||
Mail::fake();
|
||||
|
||||
$this->settings->enableAlertEmail('admin@example.com');
|
||||
@@ -25,41 +23,55 @@ class ExpiringAlertsNotificationTest extends TestCase
|
||||
|
||||
$alert_email = Setting::first()->alert_email;
|
||||
|
||||
$expiringAsset = Asset::factory()->create([
|
||||
'purchase_date' => now()->subDays(350)->format('Y-m-d'),
|
||||
$expiringWarrantyAsset = Asset::factory()->create([
|
||||
'purchase_date' => now()->subDays(356)->format('Y-m-d'),
|
||||
'warranty_months' => 12,
|
||||
'archived' => 0,
|
||||
'deleted_at' => null,
|
||||
]);
|
||||
|
||||
$expiredAsset = Asset::factory()->create([
|
||||
'purchase_date' => now()->subDays(370)->format('Y-m-d'),
|
||||
|
||||
$alreadyExpiredAsset = Asset::factory()->create([
|
||||
'purchase_date' => now()->subDays(396)->format('Y-m-d'),
|
||||
'warranty_months' => 12,
|
||||
'archived' => 0,
|
||||
'deleted_at' => null,
|
||||
]);
|
||||
|
||||
// Asset has a manually entered EOL date that's coming up
|
||||
$expiringEOLAsset = Asset::factory()->create([
|
||||
'archived' => 0,
|
||||
]);
|
||||
|
||||
// We have to set this here because of the configure() method in the Asset factory :(
|
||||
$expiringEOLAsset->asset_eol_date = now()->addDays(5)->format('Y-m-d');
|
||||
$expiringEOLAsset->save();
|
||||
|
||||
$notExpiringAsset = Asset::factory()->create([
|
||||
'purchase_date' => now()->subDays(330)->format('Y-m-d'),
|
||||
'purchase_date' => now()->addDays(330)->format('Y-m-d'),
|
||||
'warranty_months' => 12,
|
||||
'archived' => 0,
|
||||
'deleted_at' => null,
|
||||
]);
|
||||
// We have to set this here because of the configure() method in the Asset factory :(
|
||||
$notExpiringAsset->asset_eol_date = null;
|
||||
$expiringEOLAsset->save();
|
||||
|
||||
|
||||
$this->artisan('snipeit:expiring-alerts')->assertExitCode(0);
|
||||
|
||||
Mail::assertSent(ExpiringAssetsMail::class, function($mail) use ($alert_email, $expiringAsset) {
|
||||
return $mail->hasTo($alert_email) && $mail->assets->contains($expiringAsset);
|
||||
Mail::assertSent(ExpiringAssetsMail::class, function($mail) use ($alert_email, $expiringWarrantyAsset) {
|
||||
return $mail->hasTo($alert_email) && $mail->assets->contains($expiringWarrantyAsset);
|
||||
});
|
||||
|
||||
Mail::assertNotSent(ExpiringAssetsMail::class, function($mail) use ($expiredAsset, $notExpiringAsset) {
|
||||
return $mail->assets->contains($expiredAsset) || $mail->assets->contains($notExpiringAsset);
|
||||
Mail::assertSent(ExpiringAssetsMail::class, function($mail) use ($alert_email, $expiringEOLAsset) {
|
||||
return $mail->hasTo($alert_email) && $mail->assets->contains($expiringEOLAsset);
|
||||
});
|
||||
|
||||
Mail::assertNotSent(ExpiringAssetsMail::class, function($mail) use ($alert_email, $notExpiringAsset, $alreadyExpiredAsset) {
|
||||
return $mail->assets->contains($alert_email) || ($mail->assets->contains($alreadyExpiredAsset) && ($mail->assets->contains($notExpiringAsset)));
|
||||
});
|
||||
}
|
||||
|
||||
public function testExpiringLicensesEmailNotification()
|
||||
{
|
||||
$this->markIncompleteIfSqlite();
|
||||
Mail::fake();
|
||||
$this->settings->enableAlertEmail('admin@example.com');
|
||||
$this->settings->setAlertInterval(60);
|
||||
@@ -69,6 +81,7 @@ class ExpiringAlertsNotificationTest extends TestCase
|
||||
$expiringLicense = License::factory()->create([
|
||||
'expiration_date' => now()->addDays(30)->format('Y-m-d'),
|
||||
'deleted_at' => null,
|
||||
'termination_date' => null,
|
||||
]);
|
||||
|
||||
$expiredLicense = License::factory()->create([
|
||||
@@ -80,20 +93,43 @@ class ExpiringAlertsNotificationTest extends TestCase
|
||||
'deleted_at' => null,
|
||||
]);
|
||||
|
||||
$expiringButTerminatedLicense = License::factory()->create([
|
||||
'termination_date' => now()->subDays(10)->format('Y-m-d'),
|
||||
'expiration_date' => now()->subDays(10)->format('Y-m-d'),
|
||||
'deleted_at' => null,
|
||||
]);
|
||||
|
||||
$deletedExpiringLicense = License::factory()->create([
|
||||
'expiration_date' => now()->addDays(30)->format('Y-m-d'),
|
||||
'deleted_at' => now()->subDays(10)->format('Y-m-d'),
|
||||
]);
|
||||
|
||||
$this->artisan('snipeit:expiring-alerts')->assertExitCode(0);
|
||||
|
||||
Mail::assertSent(ExpiringLicenseMail::class, function($mail) use ($alert_email, $expiringLicense) {
|
||||
return $mail->hasTo($alert_email) && $mail->licenses->contains($expiringLicense);
|
||||
});
|
||||
|
||||
Mail::assertNotSent(ExpiringLicenseMail::class, function($mail) use ($expiredLicense, $notExpiringLicense) {
|
||||
return $mail->licenses->contains($expiredLicense) || $mail->licenses->contains($notExpiringLicense);
|
||||
Mail::assertNotSent(ExpiringLicenseMail::class, function($mail) use ($alert_email, $expiredLicense) {
|
||||
return $mail->hasTo($alert_email) && $mail->licenses->contains($expiredLicense);
|
||||
});
|
||||
|
||||
Mail::assertNotSent(ExpiringLicenseMail::class, function($mail) use ($alert_email, $notExpiringLicense) {
|
||||
return $mail->licenses->contains($alert_email) || $mail->licenses->contains($notExpiringLicense);
|
||||
});
|
||||
|
||||
Mail::assertNotSent(ExpiringLicenseMail::class, function($mail) use ($alert_email, $expiringButTerminatedLicense) {
|
||||
return $mail->licenses->contains($alert_email) || $mail->licenses->contains($expiringButTerminatedLicense);
|
||||
});
|
||||
|
||||
Mail::assertNotSent(ExpiringLicenseMail::class, function($mail) use ($alert_email, $deletedExpiringLicense) {
|
||||
return $mail->licenses->contains($alert_email) || $mail->licenses->contains($deletedExpiringLicense);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
public function testAuditWarningThresholdEmailNotification()
|
||||
{
|
||||
$this->markIncompleteIfSqlite();
|
||||
Mail::fake();
|
||||
$this->settings->enableAlertEmail('admin@example.com');
|
||||
$this->settings->setAuditWarningDays(15);
|
||||
|
||||
Reference in New Issue
Block a user