using qdr.fnd.core.test; using Quadarax.Application.QLiberace.Base.Dtos; using Quadarax.Application.QLiberace.Base.Entities; using Quadarax.Application.QLiberace.Base.Mapper; using Quadarax.Application.QLiberace.Common.Dtos; using Quadarax.Application.QLiberace.Common.Entities.Base; namespace Quadarax.Application.QLiberace.Base.Tests.Mapper { [TestFixture(Category = "Mapper")] public class BaseMapperDtoTest : BaseTest { #region *** Contants *** public const string EntityName = "TestName"; public const string EntityCode = "TestCode"; public const string EntityDescription = "TestDescription"; public const string EntityModifier = "TestModifier"; public const long EntityId = -123; #endregion [Test] public void Tenant2TenantDto() { var dao = new Tenant(); dao.Code = EntityCode; dao.Name = EntityName; dao.LastAccess = DateTime.Now; dao.IsLocked = true; SetTrackedAttributes(dao); // dao -> dto var dtoR = dao.Map(); Assert.IsNotNull(dtoR); Assert.That(dao.Id,Is.EqualTo(dtoR.Id), $"Dao2Dto Mapping problem '{nameof(dtoR.Id)}'"); Assert.That(dao.Name, Is.EqualTo(dtoR.Name), $"Dao2Dto Mapping problem '{nameof(dtoR.Name)}'"); Assert.That(dao.LastAccess, Is.EqualTo(dtoR.LastAccess), $"Dao2Dto Mapping problem '{nameof(dtoR.LastAccess)}'"); Assert.That(dao.IsLocked, Is.EqualTo(dtoR.IsLocked), $"Dao2Dto Mapping problem '{nameof(dtoR.IsLocked)}'"); var dtoW = new TenantWDto(); dtoW.Code = EntityCode + "X"; dtoW.Name = EntityName + "X"; // dto -> dao dtoW.CopyToDto(dao); Assert.IsNotNull(dao); Assert.IsNull(dtoW.GetType().GetInterface(nameof(ITracked)), $"Write possible base for {dtoW.GetType().Name} must not be ITracked"); Assert.That(dtoW.Name, Is.EqualTo(dao?.Name), $"Dto2Dao Mapping problem '{nameof(dtoW.Name)}'"); } [Test] public void TenantRDto2TenantWDto() { var dao = new Tenant(); dao.Code = EntityCode; dao.Name = EntityName; dao.LastAccess = DateTime.Now; dao.IsLocked = true; SetTrackedAttributes(dao); // dao -> dtoR var dtoR = dao.Map(); Assert.IsNotNull(dtoR); Assert.That(dao.Id,Is.EqualTo(dtoR.Id), $"Dao2Dto Mapping problem '{nameof(dtoR.Id)}'"); Assert.That(dao.Name, Is.EqualTo(dtoR.Name), $"Dao2Dto Mapping problem '{nameof(dtoR.Name)}'"); Assert.That(dao.LastAccess, Is.EqualTo(dtoR.LastAccess), $"Dao2Dto Mapping problem '{nameof(dtoR.LastAccess)}'"); Assert.That(dao.IsLocked, Is.EqualTo(dtoR.IsLocked), $"Dao2Dto Mapping problem '{nameof(dtoR.IsLocked)}'"); // dtoR -> dtoW var dtoW = dtoR.MapDto2Dto(); Assert.IsNotNull(dtoW); Assert.That(dtoW?.Name, Is.EqualTo(dtoR.Name), $"Dto2Dto Mapping problem '{nameof(dtoR.Name)}'"); Assert.That(dtoW?.Code, Is.EqualTo(dtoR.Code), $"Dto2Dto Mapping problem '{nameof(dtoR.Code)}'"); } [Test] public void User2UserDto() { var dao = new User(); dao.LoginName = EntityCode; dao.IsLocked = true; SetTrackedAttributes(dao); // dao -> dto var dtoR = dao.Map(); Assert.IsNotNull(dtoR); Assert.That(dao.Id,Is.EqualTo(dtoR.Id), $"Dao2Dto Mapping problem '{nameof(dtoR.Id)}'"); Assert.That(dao.LoginName, Is.EqualTo(dtoR.LoginName), $"Dao2Dto Mapping problem '{nameof(dtoR.LoginName)}'"); Assert.That(dao.IsLocked, Is.EqualTo(dtoR.IsLocked), $"Dao2Dto Mapping problem '{nameof(dtoR.IsLocked)}'"); var dtoW = new UserWDto(); dtoW.LoginName = EntityCode + "X"; dtoW.IsLocked = !dtoR.IsLocked; // dto -> dao dtoW.CopyToDto(dao); Assert.IsNotNull(dao); Assert.IsNull(dtoW.GetType().GetInterface(nameof(ITracked)), $"Write possible base for {dtoW.GetType().Name} must not be ITracked"); Assert.That(dtoW.LoginName, Is.EqualTo(dao?.LoginName), $"Dto2Dao Mapping problem '{nameof(dtoW.LoginName)}'"); Assert.That(dtoW.IsLocked, Is.EqualTo(dao?.IsLocked), $"Dto2Dao Mapping problem '{nameof(dtoW.IsLocked)}'"); } [Test] public void UserRDto2UserWDto() { var dao = new User(); dao.LoginName = EntityCode; dao.IsLocked = true; SetTrackedAttributes(dao); // dao -> dto var dtoR = dao.Map(); Assert.IsNotNull(dtoR); Assert.That(dao.Id,Is.EqualTo(dtoR.Id), $"Dao2Dto Mapping problem '{nameof(dtoR.Id)}'"); Assert.That(dao.LoginName, Is.EqualTo(dtoR.LoginName), $"Dao2Dto Mapping problem '{nameof(dtoR.LoginName)}'"); Assert.That(dao.IsLocked, Is.EqualTo(dtoR.IsLocked), $"Dao2Dto Mapping problem '{nameof(dtoR.IsLocked)}'"); // dtoR -> dtoW var dtoW = dtoR.MapDto2Dto(); Assert.IsNotNull(dtoW); Assert.That(dtoW?.LoginName, Is.EqualTo(dtoR.LoginName), $"Dto2Dto Mapping problem '{nameof(dtoR.LoginName)}'"); Assert.That(dtoW?.IsLocked, Is.EqualTo(dtoR.IsLocked), $"Dto2Dto Mapping problem '{nameof(dtoR.IsLocked)}'"); Assert.IsNull(dtoW.GetType().GetInterface(nameof(ITracked)), $"Write possible base for {dtoW.GetType().Name} must not be ITracked"); Assert.That(dtoW.LoginName, Is.EqualTo(dao?.LoginName), $"Dto2Dao Mapping problem '{nameof(dtoW.LoginName)}'"); Assert.That(dtoW.IsLocked, Is.EqualTo(dao?.IsLocked), $"Dto2Dao Mapping problem '{nameof(dtoW.IsLocked)}'"); } private void SetTrackedAttributes(QlbrcEntityTracked entity) { entity.Id = EntityId; entity.SetCreated(DateTime.Now.AddHours(1)); entity.SetModify(EntityModifier); } protected override void OnSetup() { } protected override void OnTearDown() { } } }