diff --git a/src/identity/application/services/delete_user/command.rs b/src/identity/application/services/delete_user/command.rs index 2002859..d753a9d 100644 --- a/src/identity/application/services/delete_user/command.rs +++ b/src/identity/application/services/delete_user/command.rs @@ -25,6 +25,12 @@ impl DeleteUserCommand { mod tests { use super::*; + impl DeleteUserCommand { + pub fn get_cmd() -> Self { + DeleteUserCommand + } + } + #[test] fn test_cmd() { let config = argon2_creds::Config::default(); diff --git a/src/identity/application/services/delete_user/mod.rs b/src/identity/application/services/delete_user/mod.rs index 4f54d62..d0184a0 100644 --- a/src/identity/application/services/delete_user/mod.rs +++ b/src/identity/application/services/delete_user/mod.rs @@ -1,6 +1,8 @@ // SPDX-FileCopyrightText: 2024 Aravinth Manivannan // // SPDX-License-Identifier: AGPL-3.0-or-later +use mockall::predicate::*; +use mockall::*; pub mod command; pub mod events; @@ -8,6 +10,7 @@ pub mod service; use super::errors::*; +#[automock] #[async_trait::async_trait] pub trait DeleteUserUseCase: Send + Sync { async fn delete_user( diff --git a/src/identity/application/services/delete_user/service.rs b/src/identity/application/services/delete_user/service.rs index e8141cb..e3bcd91 100644 --- a/src/identity/application/services/delete_user/service.rs +++ b/src/identity/application/services/delete_user/service.rs @@ -20,6 +20,23 @@ impl DeleteUserUseCase for DeleteUserService { mod tests { use super::*; + impl DeleteUserService { + pub fn mock_service( + times: Option, + cmd: command::DeleteUserCommand, + ) -> DeleteUserServiceObj { + let mut m = MockDeleteUserUseCase::default(); + + if let Some(times) = times { + m.expect_delete_user().times(times).return_const(()); + } else { + m.expect_delete_user().return_const(()); + } + + std::sync::Arc::new(m) + } + } + #[actix_rt::test] async fn test_service() { let config = argon2_creds::Config::default(); diff --git a/src/identity/domain/aggregate.rs b/src/identity/domain/aggregate.rs index 7919af5..1e91383 100644 --- a/src/identity/domain/aggregate.rs +++ b/src/identity/domain/aggregate.rs @@ -217,6 +217,7 @@ mod tests { use super::*; use crate::identity::{ application::services::{ + delete_user::{command::DeleteUserCommand, service::DeleteUserService}, events::IdentityEvent, owner_manage_store_employee_service::*, register_user::{ @@ -252,6 +253,26 @@ mod tests { .then_expect_events(vec![expected]); } + #[test] + fn test_user_aggregate_delete_user() { + let cmd = DeleteUserCommand::get_cmd(); + let expected = IdentityEvent::UserDeleted; + + let mut services = MockIdentityServicesInterface::new(); + services + .expect_delete_user() + .times(IS_CALLED_ONLY_ONCE.unwrap()) + .return_const(DeleteUserService::mock_service( + IS_CALLED_ONLY_ONCE, + cmd.clone(), + )); + + UserTestFramework::with(Arc::new(services)) + .given_no_previous_events() + .when(IdentityCommand::DeleteUser(cmd)) + .then_expect_events(vec![expected]); + } + #[test] fn test_user_aggregate_owner_added_employee_to_store() { let cmd = OwnerAddEmployeeToStoreCommand::get_cmd();