toBe(MailLane::DIRECT) ->and(MailLane::for(MaintenanceAnnouncementMail::class))->toBe(MailLane::URGENT) ->and(MailLane::for(InvoiceMail::class))->toBe(MailLane::CALM) ->and(MailLane::for(DunningNoticeMail::class))->toBe(MailLane::CALM); }); it('schickt eine unbekannte Mailklasse in die ruhige Spur', function () { expect(MailLane::for('App\\Mail\\GibtEsNichtMail'))->toBe(MailLane::CALM); }); it('lässt den Betreiber eine Mail verschieben', function () { MailLane::assign(InvoiceMail::class, MailLane::URGENT); expect(MailLane::for(InvoiceMail::class))->toBe(MailLane::URGENT); }); it('sperrt die Mails, auf die jemand wartet', function () { expect(MailLane::isLocked(ResetPasswordMail::class))->toBeTrue() ->and(MailLane::isLocked(InvoiceMail::class))->toBeFalse(); expect(fn () => MailLane::assign(ResetPasswordMail::class, MailLane::CALM)) ->toThrow(RuntimeException::class); expect(MailLane::for(ResetPasswordMail::class))->toBe(MailLane::DIRECT); }); it('lässt eine gespeicherte Zuordnung eine gesperrte Klasse nicht überschreiben', function () { // Nicht über assign(), sondern direkt in die Einstellung geschrieben — so // sähe es aus, wenn jemand an der Prüfung vorbei schreibt. Settings::set('mail.lanes', [ResetPasswordMail::class => MailLane::CALM]); expect(MailLane::for(ResetPasswordMail::class))->toBe(MailLane::DIRECT); });