use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum PageKind {
Article,
Folder,
}
impl PageKind {
pub fn is_listable_at_depth_all(self) -> bool {
matches!(self, PageKind::Article)
}
pub fn is_listable_at_depth_direct(self) -> bool {
matches!(self, PageKind::Article | PageKind::Folder)
}
}
impl Default for PageKind {
fn default() -> Self {
PageKind::Article
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn listable_at_depth_all_is_article_only() {
assert!(PageKind::Article.is_listable_at_depth_all());
assert!(!PageKind::Folder.is_listable_at_depth_all());
}
#[test]
fn listable_at_depth_direct_is_article_and_folder() {
assert!(PageKind::Article.is_listable_at_depth_direct());
assert!(PageKind::Folder.is_listable_at_depth_direct());
}
#[test]
fn default_is_article() {
assert_eq!(PageKind::default(), PageKind::Article);
}
}