feat: define service group and UserServicesInterface with mocking

This commit is contained in:
Aravinth Manivannan 2024-05-19 00:35:49 +05:30
parent 1f25754822
commit 86a66a420c
Signed by: realaravinth
GPG key ID: F8F50389936984FF

View file

@ -2,6 +2,9 @@
// //
// SPDX-License-Identifier: AGPL-3.0-or-later // SPDX-License-Identifier: AGPL-3.0-or-later
use derive_builder::Builder;
use mockall::predicate::*;
use mockall::*;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
mod delete_user; mod delete_user;
@ -35,3 +38,58 @@ pub enum UserCommand {
SetAdmin(SetAdminCommand), SetAdmin(SetAdminCommand),
ResendVerificationEmail(ResendVerificationEmailCommand), ResendVerificationEmail(ResendVerificationEmailCommand),
} }
#[automock]
pub trait UserServicesInterface: Send + Sync {
fn delete_user(&self) -> delete_user::DeleteUserServiceObj;
fn login(&self) -> login::LoginServiceObj;
fn mark_user_verified(&self) -> mark_user_verified::MarkUserVerifiedServiceObj;
fn register_user(&self) -> register_user::RegisterUserServiceObj;
fn resend_verification_email(
&self,
) -> resend_verification_email::ResendVerificationEmailServiceObj;
fn set_user_admin(&self) -> set_user_admin::SetUserAdminServiceObj;
fn update_email(&self) -> update_email::UpdateEmailServiceObj;
fn update_password(&self) -> update_password::UpdatePasswordServiceObj;
}
#[derive(Clone, Builder)]
pub struct UserServices {
delete_user: delete_user::DeleteUserServiceObj,
login: login::LoginServiceObj,
mark_user_verified: mark_user_verified::MarkUserVerifiedServiceObj,
register_user: register_user::RegisterUserServiceObj,
resend_verification_email: resend_verification_email::ResendVerificationEmailServiceObj,
set_user_admin: set_user_admin::SetUserAdminServiceObj,
update_email: update_email::UpdateEmailServiceObj,
update_password: update_password::UpdatePasswordServiceObj,
}
impl UserServicesInterface for UserServices {
fn delete_user(&self) -> delete_user::DeleteUserServiceObj {
self.delete_user.clone()
}
fn login(&self) -> login::LoginServiceObj {
self.login.clone()
}
fn mark_user_verified(&self) -> mark_user_verified::MarkUserVerifiedServiceObj {
self.mark_user_verified.clone()
}
fn register_user(&self) -> register_user::RegisterUserServiceObj {
self.register_user.clone()
}
fn resend_verification_email(
&self,
) -> resend_verification_email::ResendVerificationEmailServiceObj {
self.resend_verification_email.clone()
}
fn set_user_admin(&self) -> set_user_admin::SetUserAdminServiceObj {
self.set_user_admin.clone()
}
fn update_email(&self) -> update_email::UpdateEmailServiceObj {
self.update_email.clone()
}
fn update_password(&self) -> update_password::UpdatePasswordServiceObj {
self.update_password.clone()
}
}