/RepoDb.Core/RepoDb.Tests/RepoDb.IntegrationTests/InheritanceTest.cs

https://github.com/mikependon/RepoDb · C# · 376 lines · 222 code · 86 blank · 68 comment · 4 complexity · 6084eaceee06b92579ac44b11f555648 MD5 · raw file

  1. using System;
  2. using Microsoft.Data.SqlClient;
  3. using System.Linq;
  4. using Microsoft.VisualStudio.TestTools.UnitTesting;
  5. using RepoDb.IntegrationTests.Models;
  6. using RepoDb.IntegrationTests.Setup;
  7. namespace RepoDb.IntegrationTests
  8. {
  9. [TestClass]
  10. public class InheritedTest
  11. {
  12. [TestInitialize]
  13. public void Initialize()
  14. {
  15. Database.Initialize();
  16. Cleanup();
  17. }
  18. [TestCleanup]
  19. public void Cleanup()
  20. {
  21. Database.Cleanup();
  22. }
  23. #region Delete
  24. [TestMethod]
  25. public void TestSqlConnectionDeleteForInheritedViaDataEntity()
  26. {
  27. // Setup
  28. var entity = Helper.CreateInheritedIdentityTable();
  29. using (var connection = new SqlConnection(Database.ConnectionStringForRepoDb))
  30. {
  31. // Act
  32. connection.Insert<InheritedIdentityTable>(entity);
  33. // Act
  34. var deleteResult = connection.Delete<InheritedIdentityTable>(entity);
  35. // Assert
  36. Assert.IsTrue(deleteResult > 0);
  37. Assert.AreEqual(0, connection.CountAll<InheritedIdentityTable>());
  38. }
  39. }
  40. [TestMethod]
  41. public void TestSqlConnectionDeleteForInheritedViaPrimary()
  42. {
  43. // Setup
  44. var entity = Helper.CreateInheritedIdentityTable();
  45. using (var connection = new SqlConnection(Database.ConnectionStringForRepoDb))
  46. {
  47. // Act
  48. connection.Insert<InheritedIdentityTable>(entity);
  49. // Act
  50. var deleteResult = connection.Delete<InheritedIdentityTable>(entity.Id);
  51. // Assert
  52. Assert.IsTrue(deleteResult > 0);
  53. Assert.AreEqual(0, connection.CountAll<InheritedIdentityTable>());
  54. }
  55. }
  56. #endregion
  57. #region Insert
  58. [TestMethod]
  59. public void TestSqlConnectionInsertForInherited()
  60. {
  61. // Setup
  62. var entity = Helper.CreateInheritedIdentityTable();
  63. using (var connection = new SqlConnection(Database.ConnectionStringForRepoDb))
  64. {
  65. // Act
  66. var insertResult = connection.Insert<InheritedIdentityTable, long>(entity);
  67. // Assert
  68. Assert.IsTrue(insertResult > 0);
  69. Assert.AreEqual(entity.Id, insertResult);
  70. // Act
  71. var queryResult = connection.Query<InheritedIdentityTable>(entity.Id).FirstOrDefault();
  72. // Assert
  73. Helper.AssertPropertiesEquality(entity, queryResult);
  74. }
  75. }
  76. #endregion
  77. #region InsertAll
  78. [TestMethod]
  79. public void TestSqlConnectionInsertAllForInherited()
  80. {
  81. // Setup
  82. var entities = Helper.CreateInheritedIdentityTables(10);
  83. using (var connection = new SqlConnection(Database.ConnectionStringForRepoDb))
  84. {
  85. // Act
  86. var insertAllResult = connection.InsertAll<InheritedIdentityTable>(entities);
  87. // Assert
  88. Assert.AreEqual(entities.Count, insertAllResult);
  89. Assert.AreEqual(entities.Count, connection.CountAll<InheritedIdentityTable>());
  90. // Act
  91. var queryResult = connection.QueryAll<InheritedIdentityTable>();
  92. // Assert
  93. Assert.AreEqual(entities.Count, queryResult.Count());
  94. entities.ForEach(entity =>
  95. Helper.AssertPropertiesEquality(entity, queryResult.First(e => e.Id == entity.Id)));
  96. }
  97. }
  98. #endregion
  99. #region Merge
  100. [TestMethod]
  101. public void TestSqlConnectionMergeForInherited()
  102. {
  103. // Setup
  104. var entity = Helper.CreateInheritedIdentityTable();
  105. using (var connection = new SqlConnection(Database.ConnectionStringForRepoDb))
  106. {
  107. // Act
  108. var mergeResult = connection.Merge<InheritedIdentityTable, long>(entity);
  109. // Assert
  110. Assert.IsTrue(mergeResult > 0);
  111. Assert.AreEqual(entity.Id, mergeResult);
  112. // Act
  113. var queryResult = connection.Query<InheritedIdentityTable>(entity.Id).FirstOrDefault();
  114. // Assert
  115. Helper.AssertPropertiesEquality(entity, queryResult);
  116. }
  117. }
  118. [TestMethod]
  119. public void TestSqlConnectionMergeForInheritedWithNonEmptyTable()
  120. {
  121. // Setup
  122. var entity = Helper.CreateInheritedIdentityTable();
  123. using (var connection = new SqlConnection(Database.ConnectionStringForRepoDb))
  124. {
  125. // Act
  126. var insertResult = connection.Merge<InheritedIdentityTable, long>(entity);
  127. // Assert
  128. Assert.IsTrue(insertResult > 0);
  129. Assert.AreEqual(entity.Id, insertResult);
  130. Assert.AreEqual(1, connection.CountAll<InheritedIdentityTable>());
  131. // Setup
  132. entity.ColumnBit = false;
  133. entity.ColumnDateTime2 = DateTime.UtcNow;
  134. // Act
  135. var mergeResult = connection.Merge<InheritedIdentityTable, long>(entity);
  136. // Assert
  137. Assert.IsTrue(mergeResult > 0);
  138. Assert.AreEqual(entity.Id, mergeResult);
  139. // Act
  140. var queryResult = connection.Query<InheritedIdentityTable>(entity.Id).FirstOrDefault();
  141. // Assert
  142. Helper.AssertPropertiesEquality(entity, queryResult);
  143. }
  144. }
  145. #endregion
  146. #region MergeAll
  147. [TestMethod]
  148. public void TestSqlConnectionMergeAllForInherited()
  149. {
  150. // Setup
  151. var entities = Helper.CreateInheritedIdentityTables(10);
  152. using (var connection = new SqlConnection(Database.ConnectionStringForRepoDb))
  153. {
  154. // Act
  155. var mergeAllRequest = connection.MergeAll<InheritedIdentityTable>(entities);
  156. // Assert
  157. Assert.AreEqual(entities.Count, mergeAllRequest);
  158. // Act
  159. var queryResult = connection.QueryAll<InheritedIdentityTable>();
  160. // Assert
  161. Assert.AreEqual(entities.Count, queryResult.Count());
  162. entities.ForEach(entity =>
  163. Helper.AssertPropertiesEquality(entity, queryResult.First(e => e.Id == entity.Id)));
  164. }
  165. }
  166. [TestMethod]
  167. public void TestSqlConnectionMergeAllForInheritedWithNonEmptyTables()
  168. {
  169. // Setup
  170. var entities = Helper.CreateInheritedIdentityTables(10);
  171. using (var connection = new SqlConnection(Database.ConnectionStringForRepoDb))
  172. {
  173. // Act
  174. var insertAllResult = connection.InsertAll<InheritedIdentityTable>(entities);
  175. // Setup
  176. entities.ForEach(entity =>
  177. {
  178. entity.ColumnBit = false;
  179. entity.ColumnDateTime2 = DateTime.UtcNow;
  180. });
  181. // Act
  182. var mergeAllResult = connection.MergeAll<InheritedIdentityTable>(entities);
  183. // Assert
  184. Assert.AreEqual(entities.Count, mergeAllResult);
  185. // Act
  186. var queryResult = connection.QueryAll<InheritedIdentityTable>();
  187. // Assert
  188. Assert.AreEqual(entities.Count, queryResult.Count());
  189. entities.ForEach(entity =>
  190. Helper.AssertPropertiesEquality(entity, queryResult.First(e => e.Id == entity.Id)));
  191. }
  192. }
  193. #endregion
  194. #region Query
  195. [TestMethod]
  196. public void TestSqlConnectionQueryForInherited()
  197. {
  198. // Setup
  199. var entity = Helper.CreateInheritedIdentityTable();
  200. using (var connection = new SqlConnection(Database.ConnectionStringForRepoDb))
  201. {
  202. // Act
  203. connection.Insert<InheritedIdentityTable, long>(entity);
  204. // Act
  205. var queryResult = connection.Query<InheritedIdentityTable>(entity.Id).FirstOrDefault();
  206. // Assert
  207. Assert.IsNotNull(queryResult);
  208. Helper.AssertPropertiesEquality(entity, queryResult);
  209. }
  210. }
  211. #endregion
  212. #region Update
  213. [TestMethod]
  214. public void TestSqlConnectionUpdateForInheritedViaDataEntity()
  215. {
  216. // Setup
  217. var entity = Helper.CreateInheritedIdentityTable();
  218. using (var connection = new SqlConnection(Database.ConnectionStringForRepoDb))
  219. {
  220. // Act
  221. connection.Insert<InheritedIdentityTable, long>(entity);
  222. // Setup
  223. entity.ColumnBit = false;
  224. entity.ColumnDateTime2 = DateTime.UtcNow;
  225. // Act
  226. var updateResult = connection.Update<InheritedIdentityTable>(entity);
  227. // Assert
  228. Assert.IsTrue(updateResult > 0);
  229. // Act
  230. var queryResult = connection.Query<InheritedIdentityTable>(entity.Id).FirstOrDefault();
  231. // Assert
  232. Assert.IsNotNull(queryResult);
  233. Helper.AssertPropertiesEquality(entity, queryResult);
  234. }
  235. }
  236. [TestMethod]
  237. public void TestSqlConnectionUpdateForInheritedViaPrimaryKey()
  238. {
  239. // Setup
  240. var entity = Helper.CreateInheritedIdentityTable();
  241. using (var connection = new SqlConnection(Database.ConnectionStringForRepoDb))
  242. {
  243. // Act
  244. connection.Insert<InheritedIdentityTable, long>(entity);
  245. // Setup
  246. entity.ColumnBit = false;
  247. entity.ColumnDateTime2 = DateTime.UtcNow;
  248. // Act
  249. var updateResult = connection.Update<InheritedIdentityTable>(entity, entity.Id);
  250. // Assert
  251. Assert.IsTrue(updateResult > 0);
  252. // Act
  253. var queryResult = connection.Query<InheritedIdentityTable>(entity.Id).FirstOrDefault();
  254. // Assert
  255. Assert.IsNotNull(queryResult);
  256. Helper.AssertPropertiesEquality(entity, queryResult);
  257. }
  258. }
  259. #endregion
  260. #region UpdateAll
  261. [TestMethod]
  262. public void TestSqlConnectionUpdateAllForInherited()
  263. {
  264. // Setup
  265. var entities = Helper.CreateInheritedIdentityTables(10);
  266. using (var connection = new SqlConnection(Database.ConnectionStringForRepoDb))
  267. {
  268. // Act
  269. connection.InsertAll<InheritedIdentityTable>(entities);
  270. // Setup
  271. entities.ForEach(entity =>
  272. {
  273. entity.ColumnBit = false;
  274. entity.ColumnDateTime2 = DateTime.UtcNow;
  275. });
  276. // Act
  277. var updateAllResult = connection.UpdateAll<InheritedIdentityTable>(entities);
  278. // Assert
  279. Assert.AreEqual(entities.Count, updateAllResult);
  280. // Act
  281. var queryResult = connection.QueryAll<InheritedIdentityTable>();
  282. // Assert
  283. Assert.AreEqual(entities.Count, queryResult.Count());
  284. entities.ForEach(entity =>
  285. Helper.AssertPropertiesEquality(entity, queryResult.First(e => e.Id == entity.Id)));
  286. }
  287. }
  288. #endregion
  289. }
  290. }