GeneralRepositoryTest.cs 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. using Microsoft.EntityFrameworkCore;
  2. using qdr.fnd.core.test.Repositories.Fakes;
  3. using Quadarax.Foundation.Core.Data;
  4. using Quadarax.Foundation.Core.Data.Domain;
  5. namespace qdr.fnd.core.test.Repositories
  6. {
  7. [TestFixture(Category = "Dao")]
  8. public class GeneralRepositoryTest : RepositoryDbContextTest<TestRepo, TestDbContext>
  9. {
  10. private const string DaoName1 = "Name1";
  11. private const string DaoName2 = "Name2";
  12. private const string DaoValue1 = "Value1";
  13. private const string DaoValue2 = "Value2";
  14. [Test]
  15. public void AddEntity()
  16. {
  17. using (var uow = new UnitOfWork<TestDbContext>(_dbcResolver))
  18. {
  19. var repo = new TestRepo(uow.As<IDataDomain>());
  20. var dao = repo.New();
  21. dao.Name = DaoName1;
  22. dao.Value = DaoValue1;
  23. uow.Commit();
  24. // read check inside UOW
  25. dao = repo.Get(1);
  26. Assert.IsNotNull(dao, "Cannot obtain created dao inside UOW.");
  27. Assert.That(dao.Name, Is.EqualTo(DaoName1));
  28. Assert.That(dao.Value, Is.EqualTo(DaoValue1));
  29. }
  30. // read check outside UOW
  31. using (var uow = new UnitOfWork<TestDbContext>(_dbcResolver))
  32. {
  33. var repo = new TestRepo(uow.As<IDataDomain>());
  34. var dao = repo.Get(1);
  35. Assert.IsNotNull(dao, "Cannot obtain created dao outside UOW.");
  36. Assert.That(dao.Name, Is.EqualTo(DaoName1));
  37. Assert.That(dao.Value, Is.EqualTo(DaoValue1));
  38. }
  39. }
  40. [Test]
  41. public void UpdateEntity()
  42. {
  43. using (var uow = new UnitOfWork<TestDbContext>(_dbcResolver))
  44. {
  45. var repo = new TestRepo(uow.As<IDataDomain>());
  46. var dao = repo.New();
  47. dao.Name = DaoName1;
  48. dao.Value = DaoValue1;
  49. uow.Commit();
  50. dao.Value = DaoValue2;
  51. uow.Commit();
  52. }
  53. // read check outside UOW
  54. using (var uow = new UnitOfWork<TestDbContext>(_dbcResolver))
  55. {
  56. var repo = new TestRepo(uow.As<IDataDomain>());
  57. var dao = repo.Get(1);
  58. Assert.IsNotNull(dao, "Cannot obtain created dao outside UOW.");
  59. Assert.That(dao.Name, Is.EqualTo(DaoName1));
  60. Assert.That(dao.Value, Is.EqualTo(DaoValue2));
  61. }
  62. }
  63. [Test]
  64. public void RemoveEntity()
  65. {
  66. var result = false;
  67. using (var uow = new UnitOfWork<TestDbContext>(_dbcResolver))
  68. {
  69. var repo = new TestRepo(uow.As<IDataDomain>());
  70. var dao = repo.New();
  71. dao.Name = DaoName1;
  72. dao.Value = DaoValue1;
  73. uow.Commit();
  74. result = repo.Remove(1);
  75. uow.Commit();
  76. }
  77. // read check outside UOW
  78. using (var uow = new UnitOfWork<TestDbContext>(_dbcResolver))
  79. {
  80. var repo = new TestRepo(uow.As<IDataDomain>());
  81. var dao = repo.Get(1);
  82. Assert.IsNull(dao, "Dao doesn't remove outside UOW.");
  83. result = repo.Remove(1);
  84. Assert.IsFalse(result);
  85. }
  86. }
  87. [Test]
  88. public void QueryEntity()
  89. {
  90. var context = new TestDbContext(new DbContextOptions<TestDbContext>());
  91. context.Database.EnsureCreated();
  92. var dbcResolver = new DomainContextResolver<TestDbContext>(context);
  93. var result = false;
  94. using (var uow = new UnitOfWork<TestDbContext>(_dbcResolver))
  95. {
  96. var repo = new TestRepo(uow.As<IDataDomain>());
  97. var dao = repo.New();
  98. dao.Name = DaoName1;
  99. dao.Value = DaoValue1;
  100. dao = repo.New();
  101. dao.Name = DaoName2;
  102. dao.Value = DaoValue2;
  103. uow.Commit();
  104. // read check inside UOW
  105. var list = repo.Query(Paging.NoPaging());
  106. Assert.IsNotNull(list);
  107. Assert.That(list.Count(), Is.EqualTo(2));
  108. }
  109. // read check outside UOW
  110. using (var uow = new UnitOfWork<TestDbContext>(_dbcResolver))
  111. {
  112. var repo = new TestRepo(uow.As<IDataDomain>());
  113. var list = repo.Query(Paging.NoPaging());
  114. Assert.IsNotNull(list);
  115. Assert.That(list.Count(), Is.EqualTo(2));
  116. }
  117. }
  118. [Test]
  119. public void QueryPagingEntity()
  120. {
  121. var result = false;
  122. using (var uow = new UnitOfWork<TestDbContext>(_dbcResolver))
  123. {
  124. var repo = new TestRepo(uow.As<IDataDomain>());
  125. var dao = repo.New();
  126. dao.Name = DaoName1;
  127. dao.Value = DaoValue1;
  128. dao = repo.New();
  129. dao.Name = DaoName2;
  130. dao.Value = DaoValue2;
  131. uow.Commit();
  132. }
  133. // read check outside UOW
  134. using (var uow = new UnitOfWork<TestDbContext>(_dbcResolver))
  135. {
  136. var repo = new TestRepo(uow.As<IDataDomain>());
  137. var list = repo.Query(new Paging(0,1))?.ToArray();
  138. Assert.IsNotNull(list);
  139. Assert.That(list.Count(), Is.EqualTo(1));
  140. Assert.That(list[0].Name, Is.EqualTo(DaoName1));
  141. list = repo.Query(new Paging(1,1))?.ToArray();
  142. Assert.IsNotNull(list);
  143. Assert.That(list[0].Name, Is.EqualTo(DaoName2));
  144. }
  145. }
  146. [Test]
  147. public void RollbackEntity()
  148. {
  149. using (var uow = new UnitOfWork<TestDbContext>(_dbcResolver))
  150. {
  151. var repo = new TestRepo(uow.As<IDataDomain>());
  152. var dao = repo.New();
  153. dao.Name = DaoName1;
  154. dao.Value = DaoValue1;
  155. uow.Commit();
  156. dao = repo.Get(1);
  157. Assert.IsNotNull(dao);
  158. Assert.That(dao.Name, Is.EqualTo(DaoName1));
  159. dao.Name = DaoName2;
  160. }
  161. // read check outside UOW
  162. using (var uow = new UnitOfWork<TestDbContext>(_dbcResolver))
  163. {
  164. var repo = new TestRepo(uow.As<IDataDomain>());
  165. var dao = repo.Get(1);
  166. Assert.IsNotNull(dao);
  167. Assert.That(dao.Name, Is.EqualTo(DaoName1));
  168. }
  169. }
  170. protected override TestRepo GetRepository()
  171. {
  172. throw new NotImplementedException();
  173. }
  174. }
  175. }