Procedure_Test.cs 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. using System.Data;
  2. using Microsoft.VisualStudio.TestTools.UnitTesting;
  3. namespace Vitorm.MsTest.CustomTest
  4. {
  5. [TestClass]
  6. public class Procedure_Test
  7. {
  8. [TestMethod]
  9. public void Procedure()
  10. {
  11. using var dbContext = DataSource.CreateDbContext();
  12. // create procedure
  13. {
  14. dbContext.Execute(@"
  15. DROP PROCEDURE IF EXISTS GetUser;
  16. CREATE PROCEDURE GetUser(IN uid INT)
  17. BEGIN
  18. SELECT * FROM `User` WHERE userId = uid order by userId;
  19. SELECT * FROM `User` WHERE userId != uid order by userId;
  20. END
  21. ");
  22. }
  23. // ExecuteReader
  24. {
  25. using var reader = dbContext.ExecuteReader("GetUser", new() { ["uid"] = 1 }, isProcedure: true);
  26. var userList = reader.ReadEntity<User>().ToList();
  27. Assert.AreEqual("1", String.Join(",", userList.Select(u => u.id)));
  28. }
  29. // ExecuteReader
  30. {
  31. using var reader = dbContext.ExecuteReader("GetUser", new() { ["uid"] = 1 }, isProcedure: true);
  32. {
  33. var userList = reader.ReadEntity<User>().ToList();
  34. Assert.AreEqual("1", String.Join(",", userList.Select(u => u.id)));
  35. }
  36. reader.NextResult();
  37. {
  38. var userList = reader.ReadEntity<User>().ToList();
  39. Assert.AreEqual("2,3,4,5,6", String.Join(",", userList.Select(u => u.id)));
  40. }
  41. }
  42. // ExecuteReader
  43. {
  44. using var reader = dbContext.ExecuteReader("GetUser", new() { ["uid"] = 0 }, isProcedure: true);
  45. {
  46. var userList = reader.ReadEntity<User>().ToList();
  47. Assert.AreEqual("", String.Join(",", userList.Select(u => u.id)));
  48. }
  49. reader.NextResult();
  50. {
  51. var userList = reader.ReadEntity<User>().ToList();
  52. Assert.AreEqual("1,2,3,4,5,6", String.Join(",", userList.Select(u => u.id)));
  53. }
  54. }
  55. // ExecuteReader
  56. {
  57. var userId = dbContext.ExecuteScalar("GetUser", new() { ["uid"] = 1 }, isProcedure: true);
  58. Assert.AreEqual(1, userId);
  59. }
  60. }
  61. [TestMethod]
  62. public async Task ProcedureAsync()
  63. {
  64. using var dbContext = DataSource.CreateDbContext();
  65. // create procedure
  66. {
  67. await dbContext.ExecuteAsync(@"
  68. DROP PROCEDURE IF EXISTS GetUser;
  69. CREATE PROCEDURE GetUser(IN uid INT)
  70. BEGIN
  71. SELECT * FROM `User` WHERE userId = uid order by userId;
  72. SELECT * FROM `User` WHERE userId != uid order by userId;
  73. END
  74. ");
  75. }
  76. // ExecuteReader
  77. {
  78. using var reader = await dbContext.ExecuteReaderAsync("GetUser", new() { ["uid"] = 1 }, isProcedure: true);
  79. var userList = reader.ReadEntity<User>().ToList();
  80. Assert.AreEqual("1", String.Join(",", userList.Select(u => u.id)));
  81. }
  82. // ExecuteReader
  83. {
  84. using var reader = await dbContext.ExecuteReaderAsync("GetUser", new() { ["uid"] = 1 }, isProcedure: true);
  85. {
  86. var userList = reader.ReadEntity<User>().ToList();
  87. Assert.AreEqual("1", String.Join(",", userList.Select(u => u.id)));
  88. }
  89. reader.NextResult();
  90. {
  91. var userList = reader.ReadEntity<User>().ToList();
  92. Assert.AreEqual("2,3,4,5,6", String.Join(",", userList.Select(u => u.id)));
  93. }
  94. }
  95. // ExecuteReader
  96. {
  97. using var reader = await dbContext.ExecuteReaderAsync("GetUser", new() { ["uid"] = 0 }, isProcedure: true);
  98. {
  99. var userList = reader.ReadEntity<User>().ToList();
  100. Assert.AreEqual("", String.Join(",", userList.Select(u => u.id)));
  101. }
  102. reader.NextResult();
  103. {
  104. var userList = reader.ReadEntity<User>().ToList();
  105. Assert.AreEqual("1,2,3,4,5,6", String.Join(",", userList.Select(u => u.id)));
  106. }
  107. }
  108. // ExecuteReader
  109. {
  110. var userId = await dbContext.ExecuteScalarAsync("GetUser", new() { ["uid"] = 1 }, isProcedure: true);
  111. Assert.AreEqual(1, userId);
  112. }
  113. }
  114. }
  115. }