]> Untitled Git - lemmy.git/blob - crates/utils/src/test.rs
da38299a810f92d7fe477c38005754f43af392cc
[lemmy.git] / crates / utils / src / test.rs
1 use crate::utils::{
2   is_valid_community_name,
3   is_valid_display_name,
4   is_valid_matrix_id,
5   is_valid_post_title,
6   is_valid_username,
7   remove_slurs,
8   scrape_text_for_mentions,
9   slur_check,
10   slurs_vec_to_str,
11 };
12
13 #[test]
14 fn test_mentions_regex() {
15   let text = "Just read a great blog post by [@tedu@honk.teduangst.com](/u/test). And another by !test_community@fish.teduangst.com . Another [@lemmy@lemmy-alpha:8540](/u/fish)";
16   let mentions = scrape_text_for_mentions(text);
17
18   assert_eq!(mentions[0].name, "tedu".to_string());
19   assert_eq!(mentions[0].domain, "honk.teduangst.com".to_string());
20   assert_eq!(mentions[1].domain, "lemmy-alpha:8540".to_string());
21 }
22
23 #[test]
24 fn test_valid_register_username() {
25   assert!(is_valid_username("Hello_98"));
26   assert!(is_valid_username("ten"));
27   assert!(!is_valid_username("Hello-98"));
28   assert!(!is_valid_username("a"));
29   assert!(!is_valid_username(""));
30 }
31
32 #[test]
33 fn test_valid_display_name() {
34   assert!(is_valid_display_name("hello @there"));
35   assert!(!is_valid_display_name("@hello there"));
36
37   // Make sure zero-space with an @ doesn't work
38   assert!(!is_valid_display_name(&format!(
39     "{}@my name is",
40     '\u{200b}'
41   )));
42 }
43
44 #[test]
45 fn test_valid_community_name() {
46   assert!(is_valid_community_name("example"));
47   assert!(is_valid_community_name("example_community"));
48   assert!(!is_valid_community_name("Example"));
49   assert!(!is_valid_community_name("Ex"));
50   assert!(!is_valid_community_name(""));
51 }
52
53 #[test]
54 fn test_valid_post_title() {
55   assert!(is_valid_post_title("Post Title"));
56   assert!(is_valid_post_title("   POST TITLE ðŸ˜ƒðŸ˜ƒðŸ˜ƒðŸ˜ƒðŸ˜ƒ"));
57   assert!(!is_valid_post_title("\n \n \n \n             ")); // tabs/spaces/newlines
58 }
59
60 #[test]
61 fn test_valid_matrix_id() {
62   assert!(is_valid_matrix_id("@dess:matrix.org"));
63   assert!(!is_valid_matrix_id("dess:matrix.org"));
64   assert!(!is_valid_matrix_id(" @dess:matrix.org"));
65   assert!(!is_valid_matrix_id("@dess:matrix.org t"));
66 }
67
68 #[test]
69 fn test_slur_filter() {
70   let test =
71       "faggot test kike tranny cocksucker retardeds. Capitalized Niggerz. This is a bunch of other safe text.";
72   let slur_free = "No slurs here";
73   assert_eq!(
74       remove_slurs(&test),
75       "*removed* test *removed* *removed* *removed* *removed*. Capitalized *removed*. This is a bunch of other safe text."
76         .to_string()
77     );
78
79   let has_slurs_vec = vec![
80     "Niggerz",
81     "cocksucker",
82     "faggot",
83     "kike",
84     "retardeds",
85     "tranny",
86   ];
87   let has_slurs_err_str = "No slurs - Niggerz, cocksucker, faggot, kike, retardeds, tranny";
88
89   assert_eq!(slur_check(test), Err(has_slurs_vec));
90   assert_eq!(slur_check(slur_free), Ok(()));
91   if let Err(slur_vec) = slur_check(test) {
92     assert_eq!(&slurs_vec_to_str(slur_vec), has_slurs_err_str);
93   }
94 }
95
96 // These helped with testing
97 // #[test]
98 // fn test_send_email() {
99 //  let result =  send_email("not a subject", "test_email@gmail.com", "ur user", "<h1>HI there</h1>");
100 //   assert!(result.is_ok());
101 // }