Added tests to cover test email sends

- Also tweaked wording of 'E-mail' to 'Email' to remain consistent with
the rest of the app.

Related to #1696 and #1719
This commit is contained in:
Dan Brown 2019-10-23 20:25:51 +01:00
parent a2370f7c9d
commit 1366fc45ce
No known key found for this signature in database
GPG Key ID: 46D9F943C24A2EF9
2 changed files with 50 additions and 7 deletions

View File

@ -63,13 +63,13 @@ return [
'maint_image_cleanup_warning' => ':count potentially unused images were found. Are you sure you want to delete these images?',
'maint_image_cleanup_success' => ':count potentially unused images found and deleted!',
'maint_image_cleanup_nothing_found' => 'No unused images found, Nothing deleted!',
'maint_send_test_email' => 'Send a Test E-Mail',
'maint_send_test_email_desc' => 'This sends a test e-mail to your e-mail address specified in your profile.',
'maint_send_test_email_run' => 'Send test e-mail',
'maint_send_test_email_success' => 'E-Mail sent to :address',
'maint_send_test_email_mail_subject' => 'Test E-Mail',
'maint_send_test_email_mail_greeting' => 'E-Mail delivery seems to work!',
'maint_send_test_email_mail_text' => 'Congratulations! As you received this e-mail notification, your e-mail settings seem to be configured properly.',
'maint_send_test_email' => 'Send a Test Email',
'maint_send_test_email_desc' => 'This sends a test email to your email address specified in your profile.',
'maint_send_test_email_run' => 'Send test email',
'maint_send_test_email_success' => 'Email sent to :address',
'maint_send_test_email_mail_subject' => 'Test Email',
'maint_send_test_email_mail_greeting' => 'Email delivery seems to work!',
'maint_send_test_email_mail_text' => 'Congratulations! As you received this email notification, your email settings seem to be configured properly.',
// Role Settings
'roles' => 'Roles',

43
tests/TestEmailTest.php Normal file
View File

@ -0,0 +1,43 @@
<?php namespace Tests;
use BookStack\Notifications\TestEmail;
use Illuminate\Support\Facades\Notification;
class TestEmailTest extends TestCase
{
public function test_a_send_test_button_shows()
{
$pageView = $this->asAdmin()->get('/settings/maintenance');
$formCssSelector = 'form[action$="/settings/maintenance/send-test-email"]';
$pageView->assertElementExists($formCssSelector);
$pageView->assertElementContains($formCssSelector . ' button', 'Send Test Email');
}
public function test_send_test_email_endpoint_sends_email_and_redirects_user_and_shows_notification()
{
Notification::fake();
$admin = $this->getAdmin();
$sendReq = $this->actingAs($admin)->post('/settings/maintenance/send-test-email');
$sendReq->assertRedirect('/settings/maintenance#image-cleanup');
$this->assertSessionHas('success', 'Email sent to ' . $admin->email);
Notification::assertSentTo($admin, TestEmail::class);
}
public function test_send_test_email_requires_settings_manage_permission()
{
Notification::fake();
$user = $this->getViewer();
$sendReq = $this->actingAs($user)->post('/settings/maintenance/send-test-email');
Notification::assertNothingSent();
$this->giveUserPermissions($user, ['settings-manage']);
$sendReq = $this->actingAs($user)->post('/settings/maintenance/send-test-email');
Notification::assertSentTo($user, TestEmail::class);
}
}