#[derive(Clone, Debug, PartialEq, Eq)]
pub struct SessionEntry {
pub id: String,
pub label: String,
pub detail: Option<String>,
}
impl SessionEntry {
pub fn new(id: impl Into<String>, label: impl Into<String>) -> Self {
Self {
id: id.into(),
label: label.into(),
detail: None,
}
}
pub fn detail(mut self, detail: impl Into<String>) -> Self {
self.detail = Some(detail.into());
self
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn a_session_carries_an_id_and_preformatted_text() {
let session = SessionEntry::new("s1", "3 turns").detail("yesterday");
assert_eq!(session.id, "s1");
assert_eq!(session.label, "3 turns");
assert_eq!(session.detail.as_deref(), Some("yesterday"));
}
}