use chrono::{Datelike, Utc};
use crate::post::Post;
#[test]
pub fn test_add_keyword() {
let mut post = Post::new("Test post");
let result = post.metadata.opengraph.add_keyword("test".to_string());
assert!(result.is_ok());
assert_eq!(post.metadata.opengraph.keywords, vec!["test".to_string()]);
let result = post.metadata.opengraph.add_keyword("test".to_string());
assert!(result.is_err());
assert_eq!(post.metadata.opengraph.keywords, vec!["test".to_string()]);
let result = post.metadata.opengraph.add_keyword("another".to_string());
assert!(result.is_ok());
assert_eq!(
post.metadata.opengraph.keywords,
vec!["test".to_string(), "another".to_string()]
);
}
#[test]
pub fn test_remove_keyword() {
let mut post = Post::new("Test post");
let result = post.metadata.opengraph.add_keyword("test".to_string());
assert!(result.is_ok());
assert_eq!(post.metadata.opengraph.keywords, vec!["test".to_string()]);
let result = post.metadata.opengraph.remove_keyword("idontexist");
assert!(result.is_err());
assert_eq!(post.metadata.opengraph.keywords, vec!["test".to_string()]);
let result = post.metadata.opengraph.remove_keyword("test");
assert!(result.is_ok());
let expected: Vec<String> = Vec::new();
assert_eq!(post.metadata.opengraph.keywords, expected);
}
#[test]
pub fn test_add_tag() {
let mut post = Post::new("Test post");
let result = post.metadata.post.add_tag("test".to_string());
assert!(result.is_ok());
assert_eq!(post.metadata.post.tags, vec!["test".to_string()]);
let result = post.metadata.post.add_tag("test".to_string());
assert!(result.is_err());
assert_eq!(post.metadata.post.tags, vec!["test".to_string()]);
let result = post.metadata.post.add_tag("another".to_string());
assert!(result.is_ok());
assert_eq!(
post.metadata.post.tags,
vec!["test".to_string(), "another".to_string()]
);
}
#[test]
pub fn test_remove_tag() {
let mut post = Post::new("Test post");
let result = post.metadata.post.add_tag("test".to_string());
assert!(result.is_ok());
assert_eq!(post.metadata.post.tags, vec!["test".to_string()]);
let result = post.metadata.post.remove_tag("idontexist");
assert!(result.is_err());
assert_eq!(post.metadata.post.tags, vec!["test".to_string()]);
let result = post.metadata.post.remove_tag("test");
assert!(result.is_ok());
let expected: Vec<String> = Vec::new();
assert_eq!(post.metadata.post.tags, expected);
}
#[test]
pub fn test_post_path() {
let timestamp = Utc::now();
let post = Post::new("Test");
assert!(post.path.to_str().is_some());
assert!(post
.path
.to_str()
.unwrap()
.contains(&format!("{:04}", timestamp.year())));
assert!(post
.path
.to_str()
.unwrap()
.contains(&format!("{:02}", timestamp.month())));
assert!(post.path.ends_with("test"));
}