use rainier_support::setting_enum;
setting_enum! {
pub enum MailDriver: "mail driver" {
#[default]
Log = "log",
File = "file",
Memory = "memory",
Smtp = "smtp",
}
}
impl MailDriver {
pub fn delivers(&self) -> bool {
matches!(self, Self::Smtp)
}
pub fn is_inspectable(&self) -> bool {
matches!(self, Self::Memory | Self::File)
}
}
#[cfg(test)]
mod tests {
use super::*;
use rainier_support::Setting;
#[test]
fn only_smtp_actually_sends() {
assert!(MailDriver::Smtp.delivers());
for driver in MailDriver::ALL.iter().filter(|d| **d != MailDriver::Smtp) {
assert!(!driver.delivers(), "{driver} must not send real mail");
}
}
#[test]
fn the_default_sends_nothing() {
assert!(!MailDriver::default().delivers());
}
}