From f083a4039565c8c9a0204cea52a9ac71dbe77470 Mon Sep 17 00:00:00 2001 From: Aravinth Manivannan Date: Tue, 21 Jan 2025 15:38:55 +0530 Subject: [PATCH] feat: test add_role_to_store,set_role_to_employee,remove_employee_from_role --- src/identity/domain/aggregate.rs | 192 ++++++++++++++++++++++--------- 1 file changed, 136 insertions(+), 56 deletions(-) diff --git a/src/identity/domain/aggregate.rs b/src/identity/domain/aggregate.rs index 869c732..4cf2624 100644 --- a/src/identity/domain/aggregate.rs +++ b/src/identity/domain/aggregate.rs @@ -148,6 +148,24 @@ impl Aggregate for User { .await?; Ok(vec![IdentityEvent::OwnerRemovedEmployeeFromStore(res)]) } + IdentityCommand::AddRole(cmd) => { + let res = services.add_role_to_store().add_role_to_store(cmd).await?; + Ok(vec![IdentityEvent::RoleAdded(res)]) + } + IdentityCommand::SetRoleToEmployee(cmd) => { + let res = services + .owner_manage_employee() + .set_role_to_employee(cmd) + .await?; + Ok(vec![IdentityEvent::RoleSetToEmployee(res)]) + } + IdentityCommand::RemoveEmployeeFromRole(cmd) => { + let res = services + .owner_manage_employee() + .remove_employee_from_role(cmd) + .await?; + Ok(vec![IdentityEvent::EmployeeRemovedFromRole(res)]) + } _ => Ok(Vec::new()), } } @@ -217,20 +235,13 @@ mod tests { use super::*; use crate::identity::{ application::services::{ - delete_user::{command::DeleteUserCommand, service::DeleteUserService}, - events::IdentityEvent, - login::{command::LoginCommand, events::LoginEvent, service::LoginService}, - owner_manage_store_employee_service::*, - register_user::{ + add_role_to_store_service::AddRoleToStoreService, delete_user::{command::DeleteUserCommand, service::DeleteUserService}, events::IdentityEvent, login::{command::LoginCommand, events::LoginEvent, service::LoginService}, owner_manage_store_employee_service::*, register_user::{ command::RegisterUserCommand, events::UserRegisteredEvent, service::RegisterUserService, - }, - IdentityCommand, MockIdentityServicesInterface, + }, IdentityCommand, MockIdentityServicesInterface }, domain::{ - owner_add_employee_to_store_command::*, owner_added_employee_to_store_event::*, - owner_remove_employee_from_store_command::OwnerRemoveEmployeeFromStoreCommand, - owner_removed_employee_from_store_event::OwnerRemovedEmployeeFromStoreEvent, + add_role_command::AddRoleCommand, employee_removed_from_role::EmployeeRemovedFromRoleEvent, owner_add_employee_to_store_command::*, owner_added_employee_to_store_event::*, owner_remove_employee_from_store_command::OwnerRemoveEmployeeFromStoreCommand, owner_removed_employee_from_store_event::OwnerRemovedEmployeeFromStoreEvent, remove_employee_from_role_command::RemoveEmployeeFromRoleCommand, role_added_event::RoleAddedEvent, role_set_to_employee_event::RoleSetToEmployeeEvent, set_role_to_employee_command::SetRoleToEmployeeCommand }, }; use crate::tests::bdd::*; @@ -295,52 +306,6 @@ mod tests { .then_expect_events(vec![expected]); } - #[test] - fn test_user_aggregate_owner_added_employee_to_store() { - let cmd = OwnerAddEmployeeToStoreCommand::get_cmd(); - let expected = OwnerAddedEmployeeToStoreEvent::get_event(&cmd); - let expected = IdentityEvent::OwnerAddedEmployeeToStore(expected); - - let mut services = MockIdentityServicesInterface::new(); - services - .expect_owner_manage_employee() - .times(IS_CALLED_ONLY_ONCE.unwrap()) - .return_const( - OwnerManageStoreEmployeesService::mock_service_add_employee_to_store( - IS_CALLED_ONLY_ONCE, - cmd.clone(), - ), - ); - - UserTestFramework::with(Arc::new(services)) - .given_no_previous_events() - .when(IdentityCommand::OwnerAddEmployeeToStore(cmd)) - .then_expect_events(vec![expected]); - } - - #[test] - fn test_user_aggregate_owner_remove_employee_to_store() { - let cmd = OwnerRemoveEmployeeFromStoreCommand::get_cmd(); - let expected = OwnerRemovedEmployeeFromStoreEvent::get_event(&cmd); - let expected = IdentityEvent::OwnerRemovedEmployeeFromStore(expected); - - let mut services = MockIdentityServicesInterface::new(); - services - .expect_owner_manage_employee() - .times(IS_CALLED_ONLY_ONCE.unwrap()) - .return_const( - OwnerManageStoreEmployeesService::mock_service_remove_employee_from_store( - IS_CALLED_ONLY_ONCE, - cmd.clone(), - ), - ); - - UserTestFramework::with(Arc::new(services)) - .given_no_previous_events() - .when(IdentityCommand::OwnerRemoveEmployeeFromStore(cmd)) - .then_expect_events(vec![expected]); - } - #[test] fn test_user_aggregate_update_password() { use crate::identity::application::services::update_password::{ @@ -463,4 +428,119 @@ mod tests { .when(IdentityCommand::ResendVerificationEmail(cmd)) .then_expect_events(vec![expected]); } + + #[test] + fn test_user_aggregate_owner_added_employee_to_store() { + let cmd = OwnerAddEmployeeToStoreCommand::get_cmd(); + let expected = OwnerAddedEmployeeToStoreEvent::get_event(&cmd); + let expected = IdentityEvent::OwnerAddedEmployeeToStore(expected); + + let mut services = MockIdentityServicesInterface::new(); + services + .expect_owner_manage_employee() + .times(IS_CALLED_ONLY_ONCE.unwrap()) + .return_const( + OwnerManageStoreEmployeesService::mock_service_add_employee_to_store( + IS_CALLED_ONLY_ONCE, + cmd.clone(), + ), + ); + + UserTestFramework::with(Arc::new(services)) + .given_no_previous_events() + .when(IdentityCommand::OwnerAddEmployeeToStore(cmd)) + .then_expect_events(vec![expected]); + } + + #[test] + fn test_user_aggregate_owner_remove_employee_to_store() { + let cmd = OwnerRemoveEmployeeFromStoreCommand::get_cmd(); + let expected = OwnerRemovedEmployeeFromStoreEvent::get_event(&cmd); + let expected = IdentityEvent::OwnerRemovedEmployeeFromStore(expected); + + let mut services = MockIdentityServicesInterface::new(); + services + .expect_owner_manage_employee() + .times(IS_CALLED_ONLY_ONCE.unwrap()) + .return_const( + OwnerManageStoreEmployeesService::mock_service_remove_employee_from_store( + IS_CALLED_ONLY_ONCE, + cmd.clone(), + ), + ); + + UserTestFramework::with(Arc::new(services)) + .given_no_previous_events() + .when(IdentityCommand::OwnerRemoveEmployeeFromStore(cmd)) + .then_expect_events(vec![expected]); + } + + #[test] + fn test_user_aggregate_owner_set_role_to_employee() { + let cmd = SetRoleToEmployeeCommand::get_cmd(); + let expected = RoleSetToEmployeeEvent::get_event(&cmd); + let expected = IdentityEvent::RoleSetToEmployee(expected); + + let mut services = MockIdentityServicesInterface::new(); + services + .expect_owner_manage_employee() + .times(IS_CALLED_ONLY_ONCE.unwrap()) + .return_const( + OwnerManageStoreEmployeesService::mock_service_set_role_to_employee( + IS_CALLED_ONLY_ONCE, + cmd.clone(), + ), + ); + + UserTestFramework::with(Arc::new(services)) + .given_no_previous_events() + .when(IdentityCommand::SetRoleToEmployee(cmd)) + .then_expect_events(vec![expected]); + } + + #[test] + fn test_user_aggregate_owner_remove_employee_from_role() { + let cmd = RemoveEmployeeFromRoleCommand::get_cmd(); + let expected = EmployeeRemovedFromRoleEvent::get_event(&cmd); + let expected = IdentityEvent::EmployeeRemovedFromRole(expected); + + let mut services = MockIdentityServicesInterface::new(); + services + .expect_owner_manage_employee() + .times(IS_CALLED_ONLY_ONCE.unwrap()) + .return_const( + OwnerManageStoreEmployeesService::mock_service_remove_employee_from_role( + IS_CALLED_ONLY_ONCE, + cmd.clone(), + ), + ); + + UserTestFramework::with(Arc::new(services)) + .given_no_previous_events() + .when(IdentityCommand::RemoveEmployeeFromRole(cmd)) + .then_expect_events(vec![expected]); + } + + #[test] + fn test_user_aggregate_owner_add_roles_to_store() { + let cmd = AddRoleCommand::get_cmd(); + let expected = RoleAddedEvent::get_event(&cmd); + let expected = IdentityEvent::RoleAdded(expected); + + let mut services = MockIdentityServicesInterface::new(); + services + .expect_add_role_to_store() + .times(IS_CALLED_ONLY_ONCE.unwrap()) + .return_const( + AddRoleToStoreService::mock_service( + IS_CALLED_ONLY_ONCE, + cmd.clone(), + ), + ); + + UserTestFramework::with(Arc::new(services)) + .given_no_previous_events() + .when(IdentityCommand::AddRole(cmd)) + .then_expect_events(vec![expected]); + } }