BaseMapperDtoTest.cs 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. using qdr.fnd.core.test;
  2. using Quadarax.Application.QLiberace.Base.Dtos;
  3. using Quadarax.Application.QLiberace.Base.Entities;
  4. using Quadarax.Application.QLiberace.Base.Mapper;
  5. using Quadarax.Application.QLiberace.Common.Dtos;
  6. using Quadarax.Application.QLiberace.Common.Entities.Base;
  7. namespace Quadarax.Application.QLiberace.Base.Tests.Mapper
  8. {
  9. [TestFixture(Category = "Mapper")]
  10. public class BaseMapperDtoTest : BaseTest
  11. {
  12. #region *** Contants ***
  13. public const string EntityName = "TestName";
  14. public const string EntityCode = "TestCode";
  15. public const string EntityDescription = "TestDescription";
  16. public const string EntityModifier = "TestModifier";
  17. public const long EntityId = -123;
  18. #endregion
  19. [Test]
  20. public void Tenant2TenantDto()
  21. {
  22. var dao = new Tenant();
  23. dao.Code = EntityCode;
  24. dao.Name = EntityName;
  25. dao.LastAccess = DateTime.Now;
  26. dao.IsLocked = true;
  27. SetTrackedAttributes(dao);
  28. // dao -> dto
  29. var dtoR = dao.Map<Tenant, TenantRDto>();
  30. Assert.IsNotNull(dtoR);
  31. Assert.That(dao.Id,Is.EqualTo(dtoR.Id), $"Dao2Dto Mapping problem '{nameof(dtoR.Id)}'");
  32. Assert.That(dao.Name, Is.EqualTo(dtoR.Name), $"Dao2Dto Mapping problem '{nameof(dtoR.Name)}'");
  33. Assert.That(dao.LastAccess, Is.EqualTo(dtoR.LastAccess), $"Dao2Dto Mapping problem '{nameof(dtoR.LastAccess)}'");
  34. Assert.That(dao.IsLocked, Is.EqualTo(dtoR.IsLocked), $"Dao2Dto Mapping problem '{nameof(dtoR.IsLocked)}'");
  35. var dtoW = new TenantWDto();
  36. dtoW.Code = EntityCode + "X";
  37. dtoW.Name = EntityName + "X";
  38. // dto -> dao
  39. dtoW.CopyToDto(dao);
  40. Assert.IsNotNull(dao);
  41. Assert.IsNull(dtoW.GetType().GetInterface(nameof(ITracked)), $"Write possible base for {dtoW.GetType().Name} must not be ITracked");
  42. Assert.That(dtoW.Name, Is.EqualTo(dao?.Name), $"Dto2Dao Mapping problem '{nameof(dtoW.Name)}'");
  43. }
  44. [Test]
  45. public void TenantRDto2TenantWDto()
  46. {
  47. var dao = new Tenant();
  48. dao.Code = EntityCode;
  49. dao.Name = EntityName;
  50. dao.LastAccess = DateTime.Now;
  51. dao.IsLocked = true;
  52. SetTrackedAttributes(dao);
  53. // dao -> dtoR
  54. var dtoR = dao.Map<Tenant, TenantRDto>();
  55. Assert.IsNotNull(dtoR);
  56. Assert.That(dao.Id,Is.EqualTo(dtoR.Id), $"Dao2Dto Mapping problem '{nameof(dtoR.Id)}'");
  57. Assert.That(dao.Name, Is.EqualTo(dtoR.Name), $"Dao2Dto Mapping problem '{nameof(dtoR.Name)}'");
  58. Assert.That(dao.LastAccess, Is.EqualTo(dtoR.LastAccess), $"Dao2Dto Mapping problem '{nameof(dtoR.LastAccess)}'");
  59. Assert.That(dao.IsLocked, Is.EqualTo(dtoR.IsLocked), $"Dao2Dto Mapping problem '{nameof(dtoR.IsLocked)}'");
  60. // dtoR -> dtoW
  61. var dtoW = dtoR.MapDto2Dto<TenantRDto, TenantWDto>();
  62. Assert.IsNotNull(dtoW);
  63. Assert.That(dtoW?.Name, Is.EqualTo(dtoR.Name), $"Dto2Dto Mapping problem '{nameof(dtoR.Name)}'");
  64. Assert.That(dtoW?.Code, Is.EqualTo(dtoR.Code), $"Dto2Dto Mapping problem '{nameof(dtoR.Code)}'");
  65. }
  66. [Test]
  67. public void User2UserDto()
  68. {
  69. var dao = new User();
  70. dao.LoginName = EntityCode;
  71. dao.IsLocked = true;
  72. SetTrackedAttributes(dao);
  73. // dao -> dto
  74. var dtoR = dao.Map<User, UserRDto>();
  75. Assert.IsNotNull(dtoR);
  76. Assert.That(dao.Id,Is.EqualTo(dtoR.Id), $"Dao2Dto Mapping problem '{nameof(dtoR.Id)}'");
  77. Assert.That(dao.LoginName, Is.EqualTo(dtoR.LoginName), $"Dao2Dto Mapping problem '{nameof(dtoR.LoginName)}'");
  78. Assert.That(dao.IsLocked, Is.EqualTo(dtoR.IsLocked), $"Dao2Dto Mapping problem '{nameof(dtoR.IsLocked)}'");
  79. var dtoW = new UserWDto();
  80. dtoW.LoginName = EntityCode + "X";
  81. dtoW.IsLocked = !dtoR.IsLocked;
  82. // dto -> dao
  83. dtoW.CopyToDto(dao);
  84. Assert.IsNotNull(dao);
  85. Assert.IsNull(dtoW.GetType().GetInterface(nameof(ITracked)), $"Write possible base for {dtoW.GetType().Name} must not be ITracked");
  86. Assert.That(dtoW.LoginName, Is.EqualTo(dao?.LoginName), $"Dto2Dao Mapping problem '{nameof(dtoW.LoginName)}'");
  87. Assert.That(dtoW.IsLocked, Is.EqualTo(dao?.IsLocked), $"Dto2Dao Mapping problem '{nameof(dtoW.IsLocked)}'");
  88. }
  89. [Test]
  90. public void UserRDto2UserWDto()
  91. {
  92. var dao = new User();
  93. dao.LoginName = EntityCode;
  94. dao.IsLocked = true;
  95. SetTrackedAttributes(dao);
  96. // dao -> dto
  97. var dtoR = dao.Map<User, UserRDto>();
  98. Assert.IsNotNull(dtoR);
  99. Assert.That(dao.Id,Is.EqualTo(dtoR.Id), $"Dao2Dto Mapping problem '{nameof(dtoR.Id)}'");
  100. Assert.That(dao.LoginName, Is.EqualTo(dtoR.LoginName), $"Dao2Dto Mapping problem '{nameof(dtoR.LoginName)}'");
  101. Assert.That(dao.IsLocked, Is.EqualTo(dtoR.IsLocked), $"Dao2Dto Mapping problem '{nameof(dtoR.IsLocked)}'");
  102. // dtoR -> dtoW
  103. var dtoW = dtoR.MapDto2Dto<UserRDto, UserWDto>();
  104. Assert.IsNotNull(dtoW);
  105. Assert.That(dtoW?.LoginName, Is.EqualTo(dtoR.LoginName), $"Dto2Dto Mapping problem '{nameof(dtoR.LoginName)}'");
  106. Assert.That(dtoW?.IsLocked, Is.EqualTo(dtoR.IsLocked), $"Dto2Dto Mapping problem '{nameof(dtoR.IsLocked)}'");
  107. Assert.IsNull(dtoW.GetType().GetInterface(nameof(ITracked)), $"Write possible base for {dtoW.GetType().Name} must not be ITracked");
  108. Assert.That(dtoW.LoginName, Is.EqualTo(dao?.LoginName), $"Dto2Dao Mapping problem '{nameof(dtoW.LoginName)}'");
  109. Assert.That(dtoW.IsLocked, Is.EqualTo(dao?.IsLocked), $"Dto2Dao Mapping problem '{nameof(dtoW.IsLocked)}'");
  110. }
  111. private void SetTrackedAttributes(QlbrcEntityTracked entity)
  112. {
  113. entity.Id = EntityId;
  114. entity.SetCreated(DateTime.Now.AddHours(1));
  115. entity.SetModify(EntityModifier);
  116. }
  117. protected override void OnSetup()
  118. {
  119. }
  120. protected override void OnTearDown()
  121. {
  122. }
  123. }
  124. }