CRUD_Test.cs 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. using Microsoft.VisualStudio.TestTools.UnitTesting;
  2. using System.Data;
  3. namespace Vitorm.MsTest.CommonTest
  4. {
  5. [TestClass]
  6. public partial class CRUD_Test
  7. {
  8. static DbContext CreateDbContext() => DataSource.CreateDbContextForWriting();
  9. #region #1 Create
  10. [TestMethod]
  11. public void Test_Create()
  12. {
  13. using var dbContext = CreateDbContext();
  14. var newUserList = User.NewUsers(7, 4);
  15. // #1 Add
  16. dbContext.Add(newUserList[0]);
  17. // #2 AddRange
  18. dbContext.AddRange(newUserList.Skip(1));
  19. Thread.Sleep(1000);
  20. // assert
  21. {
  22. var userList = dbContext.Query<User>().Where(user => user.id >= 7).ToList();
  23. Assert.AreEqual(newUserList.Count, userList.Count());
  24. Assert.AreEqual(0, userList.Select(m => m.id).Except(newUserList.Select(m => m.id)).Count());
  25. Assert.AreEqual(0, userList.Select(m => m.name).Except(newUserList.Select(m => m.name)).Count());
  26. }
  27. try
  28. {
  29. dbContext.Add(newUserList[0]);
  30. Assert.Fail("should not be able to add same key twice");
  31. }
  32. catch (Exception ex)
  33. {
  34. }
  35. }
  36. #endregion
  37. #region #3 Update
  38. [TestMethod]
  39. public void Test_Update()
  40. {
  41. using var dbContext = CreateDbContext();
  42. // Update
  43. {
  44. var rowCount = dbContext.Update(User.NewUser(4));
  45. Assert.AreEqual(1, rowCount);
  46. }
  47. // UpdateRange
  48. {
  49. var rowCount = dbContext.UpdateRange(User.NewUsers(5, 3));
  50. Assert.AreEqual(2, rowCount);
  51. }
  52. Thread.Sleep(1000);
  53. // assert
  54. {
  55. var newUserList = User.NewUsers(4, 3);
  56. var userList = dbContext.Query<User>().Where(m => m.id >= 4).ToList();
  57. Assert.AreEqual(newUserList.Count, userList.Count());
  58. Assert.AreEqual(0, userList.Select(m => m.id).Except(newUserList.Select(m => m.id)).Count());
  59. Assert.AreEqual(0, userList.Select(m => m.name).Except(newUserList.Select(m => m.name)).Count());
  60. }
  61. try
  62. {
  63. var newUser = User.NewUser(4);
  64. var key = dbContext.GetEntityDescriptor(typeof(User)).key;
  65. key.SetValue(newUser, null);
  66. dbContext.Update(newUser);
  67. Assert.Fail("should not be able to update entity with null key");
  68. }
  69. catch (Exception ex)
  70. {
  71. }
  72. }
  73. #endregion
  74. #region #4 Delete
  75. [TestMethod]
  76. public void Test_Delete()
  77. {
  78. using var dbContext = CreateDbContext();
  79. // #1 Delete
  80. {
  81. var rowCount = dbContext.Delete(User.NewUser(1));
  82. Assert.AreEqual(1, rowCount);
  83. }
  84. // #2 DeleteRange
  85. {
  86. var rowCount = dbContext.DeleteRange(User.NewUsers(2, 2));
  87. Assert.AreEqual(2, rowCount);
  88. }
  89. // #3 DeleteByKey
  90. {
  91. var user = User.NewUser(4);
  92. var key = dbContext.GetEntityDescriptor(typeof(User)).key;
  93. var keyValue = key.GetValue(user);
  94. var rowCount = dbContext.DeleteByKey<User>(keyValue);
  95. Assert.AreEqual(1, rowCount);
  96. }
  97. // #4 DeleteByKeys
  98. {
  99. var users = User.NewUsers(5, 2);
  100. var key = dbContext.GetEntityDescriptor(typeof(User)).key;
  101. var keyValues = users.Select(user => key.GetValue(user));
  102. var rowCount = dbContext.DeleteByKeys<User, object>(keyValues);
  103. Assert.AreEqual(2, rowCount);
  104. }
  105. Thread.Sleep(1000);
  106. // assert
  107. {
  108. var userList = dbContext.Query<User>().ToList();
  109. Assert.AreEqual(0, userList.Count());
  110. }
  111. }
  112. #endregion
  113. }
  114. }