CRUD_Test.cs 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281
  1. using Microsoft.VisualStudio.TestTools.UnitTesting;
  2. using Vit.Extensions.Vitorm_Extensions;
  3. using System.Data;
  4. namespace Vitorm.MsTest.CommonTest
  5. {
  6. [TestClass]
  7. public class CRUD_Test
  8. {
  9. #region #1 Create
  10. [TestMethod]
  11. public void Test_Create()
  12. {
  13. var user = new User { id = 7, name = "testUser7", birth = DateTime.Now, fatherId = 1, motherId = 2 };
  14. var user2 = new User { id = 8, name = "testUser8", birth = DateTime.Now, fatherId = 3, motherId = 4 };
  15. // #1 Add
  16. {
  17. using var dbContext = DataSource.CreateDbContext();
  18. var userQuery = dbContext.Query<User>();
  19. dbContext.Add(user);
  20. Assert.AreEqual(7, userQuery.Count());
  21. var newUser = userQuery.FirstOrDefault(m => m.id == 7);
  22. Assert.AreEqual(user.id, newUser?.id);
  23. Assert.AreEqual(user.name, newUser?.name);
  24. }
  25. // #2 AddRange
  26. {
  27. using var dbContext = DataSource.CreateDbContext();
  28. var userQuery = dbContext.Query<User>();
  29. dbContext.AddRange(new[] { user, user2 });
  30. Assert.AreEqual(8, userQuery.Count());
  31. var newUsers = userQuery.Where(m => m.id >= 7).ToList();
  32. Assert.AreEqual(2, newUsers.Count());
  33. Assert.AreEqual(user.id, newUsers[0]?.id);
  34. Assert.AreEqual(user2.id, newUsers[1]?.id);
  35. }
  36. }
  37. #endregion
  38. #region #3 Update
  39. [TestMethod]
  40. public void Test_Update()
  41. {
  42. var birth = DateTime.Parse("2021-03-01 00:00:00");
  43. var user = new User { id = 4, name = "testUser4", birth = birth, fatherId = 14 };
  44. var user2 = new User { id = 5, name = "testUser5", birth = DateTime.Now, fatherId = 15 };
  45. #region Update
  46. {
  47. using var dbContext = DataSource.CreateDbContext();
  48. var userQuery = dbContext.Query<User>();
  49. var rowCount = dbContext.Update(user);
  50. Assert.AreEqual(1, rowCount);
  51. var newUser = userQuery.FirstOrDefault(m => m.id == 4);
  52. Assert.AreEqual(4, newUser.id);
  53. Assert.AreEqual(user.name, newUser.name);
  54. Assert.AreEqual(user.birth, newUser.birth);
  55. Assert.AreEqual(user.fatherId, newUser.fatherId);
  56. }
  57. #endregion
  58. #region UpdateRange
  59. {
  60. using var dbContext = DataSource.CreateDbContext();
  61. var userQuery = dbContext.Query<User>();
  62. var rowCount = dbContext.UpdateRange(new[] { user, user2 });
  63. Assert.AreEqual(2, rowCount);
  64. var newUsers = userQuery.Where(m => m.id == 4 || m.id == 5).ToList();
  65. Assert.AreEqual(user.id, newUsers[0].id);
  66. Assert.AreEqual(user.name, newUsers[0].name);
  67. Assert.AreEqual(user2.id, newUsers[1].id);
  68. Assert.AreEqual(user2.name, newUsers[1].name);
  69. }
  70. #endregion
  71. }
  72. [TestMethod]
  73. public void Test_ExecuteUpdate()
  74. {
  75. using var dbContext = DataSource.CreateDbContext();
  76. var userQuery = dbContext.Query<User>();
  77. {
  78. var count = userQuery.ExecuteUpdate(row => new User
  79. {
  80. name = "u_" + row.id + "_" + (row.fatherId.ToString() ?? "") + "_" + (row.motherId.ToString() ?? ""),
  81. birth = DateTime.Parse("2021-01-11 00:00:00")
  82. });
  83. Assert.AreEqual(6, count);
  84. var userList = userQuery.ToList();
  85. Assert.AreEqual("u_1_4_6", userList.First().name);
  86. Assert.AreEqual(DateTime.Parse("2021-01-11 00:00:00"), userList.First().birth);
  87. Assert.AreEqual("u_6__", userList.Last().name);
  88. }
  89. {
  90. var query = from user in userQuery
  91. from father in userQuery.Where(father => user.fatherId == father.id).DefaultIfEmpty()
  92. select new
  93. {
  94. user,
  95. father,
  96. user.motherId
  97. };
  98. var count = query.ExecuteUpdate(row => new User
  99. {
  100. name = "u2_" + row.user.id + "_" + (row.father.id.ToString() ?? "") + "_" + (row.motherId.ToString() ?? "")
  101. });
  102. Assert.AreEqual(6, count);
  103. var userList = userQuery.ToList();
  104. Assert.AreEqual("u2_1_4_6", userList.First().name);
  105. Assert.AreEqual("u2_6__", userList.Last().name);
  106. }
  107. {
  108. var query = from user in userQuery
  109. from father in userQuery.Where(father => user.fatherId == father.id).DefaultIfEmpty()
  110. where user.id <= 5 && father != null
  111. select new
  112. {
  113. user,
  114. father,
  115. user.motherId
  116. };
  117. var count = query.ExecuteUpdate(row => new User
  118. {
  119. name = "u3_" + row.user.id + "_" + (row.father.id.ToString() ?? "") + "_" + (row.motherId.ToString() ?? "")
  120. });
  121. Assert.AreEqual(3, count);
  122. var userList = userQuery.ToList();
  123. Assert.AreEqual("u3_1_4_6", userList[0].name);
  124. Assert.AreEqual("u3_3_5_6", userList[2].name);
  125. Assert.AreEqual("u2_4__", userList[3].name);
  126. }
  127. }
  128. #endregion
  129. #region #4 Delete
  130. [TestMethod]
  131. public void Test_Delete()
  132. {
  133. #region #1 Delete
  134. {
  135. using var dbContext = DataSource.CreateDbContext();
  136. var userQuery = dbContext.Query<User>();
  137. var rowCount = dbContext.Delete(new User { id = 5 });
  138. Assert.AreEqual(1, rowCount);
  139. Assert.AreEqual(5, userQuery.Count());
  140. }
  141. #endregion
  142. #region #2 DeleteRange
  143. {
  144. using var dbContext = DataSource.CreateDbContext();
  145. var userQuery = dbContext.Query<User>();
  146. var rowCount = dbContext.DeleteRange(new[] { new User { id = 5 }, new User { id = 6 }, new User { id = 10 } });
  147. Assert.AreEqual(2, rowCount);
  148. Assert.AreEqual(4, userQuery.Count());
  149. }
  150. #endregion
  151. #region #3 DeleteByKey
  152. {
  153. using var dbContext = DataSource.CreateDbContext();
  154. var userQuery = dbContext.Query<User>();
  155. var rowCount = dbContext.DeleteByKey<User>(4);
  156. Assert.AreEqual(1, rowCount);
  157. Assert.AreEqual(5, userQuery.Count());
  158. }
  159. {
  160. using var dbContext = DataSource.CreateDbContext();
  161. var userQuery = dbContext.Query<User>();
  162. var rowCount = dbContext.DeleteByKey<User>(7);
  163. Assert.AreEqual(0, rowCount);
  164. Assert.AreEqual(6, userQuery.Count());
  165. }
  166. #endregion
  167. #region #4 DeleteByKeys
  168. {
  169. using var dbContext = DataSource.CreateDbContext();
  170. var userSet = dbContext.DbSet<User>();
  171. var rowCount = userSet.DeleteByKeys(new[] { 5, 6, 10 });
  172. Assert.AreEqual(2, rowCount);
  173. Assert.AreEqual(4, userSet.Query().Count());
  174. }
  175. #endregion
  176. }
  177. [TestMethod]
  178. public void Test_ExecuteDelete()
  179. {
  180. if (1 == 1)
  181. {
  182. using var dbContext = DataSource.CreateDbContext();
  183. var userQuery = dbContext.Query<User>();
  184. var query = from user in userQuery
  185. from father in userQuery.Where(father => user.fatherId == father.id).DefaultIfEmpty()
  186. where user.id <= 5 && father != null
  187. select new
  188. {
  189. user,
  190. father
  191. };
  192. var rowCount = query.ExecuteDelete();
  193. Assert.AreEqual(3, rowCount);
  194. var newUsers = userQuery.ToList();
  195. Assert.AreEqual(3, newUsers.Count());
  196. Assert.AreEqual(4, newUsers.First().id);
  197. Assert.AreEqual(6, newUsers.Last().id);
  198. }
  199. if (1 == 1)
  200. {
  201. using var dbContext = DataSource.CreateDbContext();
  202. var userQuery = dbContext.Query<User>();
  203. var rowCount = userQuery.Where(m => m.id == 2 || m.id == 4).ExecuteDelete();
  204. Assert.AreEqual(2, rowCount);
  205. var newUsers = userQuery.ToList();
  206. Assert.AreEqual(4, newUsers.Count());
  207. Assert.AreEqual(1, newUsers.First().id);
  208. Assert.AreEqual(3, newUsers[1].id);
  209. Assert.AreEqual(5, newUsers[2].id);
  210. }
  211. }
  212. #endregion
  213. }
  214. }