1 use lemmy_db_schema::{ListingType, RegistrationMode};
2 use lemmy_utils::error::{LemmyErrorType, LemmyResult};
8 /// Checks whether the default post listing type is valid for a site.
9 pub fn site_default_post_listing_type_check(
10 default_post_listing_type: &Option<ListingType>,
11 ) -> LemmyResult<()> {
12 if let Some(listing_type) = default_post_listing_type {
13 // Only allow all or local as default listing types...
14 if listing_type != &ListingType::All && listing_type != &ListingType::Local {
15 Err(LemmyErrorType::InvalidDefaultPostListingType)?
24 /// Checks whether the application question and registration mode align.
25 pub fn application_question_check(
26 current_application_question: &Option<String>,
27 new_application_question: &Option<String>,
28 registration_mode: RegistrationMode,
29 ) -> LemmyResult<()> {
30 let has_no_question: bool =
31 current_application_question.is_none() && new_application_question.is_none();
32 let is_nullifying_question: bool = new_application_question == &Some(String::new());
34 if registration_mode == RegistrationMode::RequireApplication
35 && (has_no_question || is_nullifying_question)
37 Err(LemmyErrorType::ApplicationQuestionRequired)?
45 #![allow(clippy::unwrap_used)]
46 #![allow(clippy::indexing_slicing)]
48 use crate::site::{application_question_check, site_default_post_listing_type_check};
49 use lemmy_db_schema::{ListingType, RegistrationMode};
52 fn test_site_default_post_listing_type_check() {
53 assert!(site_default_post_listing_type_check(&None::<ListingType>).is_ok());
54 assert!(site_default_post_listing_type_check(&Some(ListingType::All)).is_ok());
55 assert!(site_default_post_listing_type_check(&Some(ListingType::Local)).is_ok());
56 assert!(site_default_post_listing_type_check(&Some(ListingType::Subscribed)).is_err());
60 fn test_application_question_check() {
62 application_question_check(&Some(String::from("q")), &Some(String::new()), RegistrationMode::RequireApplication).is_err(),
63 "Expected application to be invalid because an application is required, current question: {:?}, new question: {:?}",
68 application_question_check(&None, &None, RegistrationMode::RequireApplication).is_err(),
69 "Expected application to be invalid because an application is required, current question: {:?}, new question: {:?}",
75 application_question_check(&None, &None, RegistrationMode::Open).is_ok(),
76 "Expected application to be valid because no application required, current question: {:?}, new question: {:?}, mode: {:?}",
79 RegistrationMode::Open
82 application_question_check(&None, &Some(String::from("q")), RegistrationMode::RequireApplication).is_ok(),
83 "Expected application to be valid because new application provided, current question: {:?}, new question: {:?}, mode: {:?}",
85 Some(String::from("q")),
86 RegistrationMode::RequireApplication
89 application_question_check(&Some(String::from("q")), &None, RegistrationMode::RequireApplication).is_ok(),
90 "Expected application to be valid because application existed, current question: {:?}, new question: {:?}, mode: {:?}",
91 Some(String::from("q")),
93 RegistrationMode::RequireApplication