You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

LuEfCreateDataAccessTest.cs 14KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using Luticate2.Utils.Dbo.Result;
  5. using TestUtils.DataAccess;
  6. using TestUtils.Dbo.FkPkGuid;
  7. using TestUtils.Dbo.PkBigSerial;
  8. using TestUtils.Dbo.PkGuid;
  9. using Xunit;
  10. namespace TestUtils.EfCrudDataAccess
  11. {
  12. public class LuEfCreateDataAccessTest
  13. {
  14. [Fact]
  15. public void TestAddMultiple1()
  16. {
  17. Tests.TestRealDb(context =>
  18. {
  19. var dbos = new List<PkBigSerialAddDbo>
  20. {
  21. new PkBigSerialAddDbo
  22. {
  23. SomeInt = 42,
  24. SomeText = "42"
  25. },
  26. new PkBigSerialAddDbo
  27. {
  28. SomeInt = 21,
  29. SomeText = "24"
  30. }
  31. };
  32. var service = new LuUtilsPkBigSerialDataAccess(context);
  33. var res = service.Add(dbos, enumerable => enumerable);
  34. Assert.Equal(LuStatus.Success, res.Status);
  35. foreach (var dbo in dbos.Zip(res.Data, (dbo, serialDbo) => new KeyValuePair<PkBigSerialAddDbo, PkBigSerialDbo>(dbo, serialDbo)))
  36. {
  37. Assert.NotNull(dbo.Key);
  38. Assert.NotNull(dbo.Value);
  39. Assert.NotEqual(0, dbo.Value.Id);
  40. Assert.Equal(dbo.Key.SomeText, dbo.Value.SomeText);
  41. Assert.Equal(dbo.Key.SomeInt, dbo.Value.SomeInt);
  42. var get = service.GetSingleById(dbo.Value.Id);
  43. Assert.Equal(LuStatus.Success, get.Status);
  44. Assert.Equal(dbo.Key.SomeText, get.Data.SomeText);
  45. Assert.Equal(dbo.Key.SomeInt, get.Data.SomeInt);
  46. Assert.Equal(dbo.Value.Id, get.Data.Id);
  47. }
  48. });
  49. }
  50. [Fact]
  51. public void TestAddMultiple2()
  52. {
  53. Tests.TestRealDb(context =>
  54. {
  55. var dbos = new List<PkBigSerialAddDbo>
  56. {
  57. new PkBigSerialAddDbo
  58. {
  59. SomeInt = 42,
  60. SomeText = "42"
  61. },
  62. new PkBigSerialAddDbo
  63. {
  64. SomeInt = 21,
  65. SomeText = "24"
  66. }
  67. };
  68. var service = new LuUtilsPkBigSerialDataAccess(context);
  69. var res = service.Add(dbos, enumerable => enumerable.Select(dbo => dbo.Id));
  70. Assert.Equal(LuStatus.Success, res.Status);
  71. foreach (var dbo in dbos.Zip(res.Data, (dbo, serialDbo) => new KeyValuePair<PkBigSerialAddDbo, long>(dbo, serialDbo)))
  72. {
  73. Assert.NotNull(dbo.Key);
  74. Assert.NotNull(dbo.Value);
  75. Assert.NotEqual(0, dbo.Value);
  76. var get = service.GetSingleById(dbo.Value);
  77. Assert.Equal(LuStatus.Success, get.Status);
  78. Assert.Equal(dbo.Key.SomeText, get.Data.SomeText);
  79. Assert.Equal(dbo.Key.SomeInt, get.Data.SomeInt);
  80. Assert.Equal(dbo.Value, get.Data.Id);
  81. }
  82. });
  83. }
  84. [Fact]
  85. public void TestAddMultiple3()
  86. {
  87. Tests.TestRealDb(context =>
  88. {
  89. var dbos = new List<PkBigSerialAddDbo>
  90. {
  91. new PkBigSerialAddDbo
  92. {
  93. SomeInt = 42,
  94. SomeText = "42"
  95. },
  96. new PkBigSerialAddDbo
  97. {
  98. SomeInt = 21,
  99. SomeText = "24"
  100. }
  101. };
  102. var service = new LuUtilsPkBigSerialDataAccess(context);
  103. var res = service.Add(dbos, enumerable => enumerable.Select(dbo => dbo.CreatedAt));
  104. Assert.Equal(LuStatus.Success, res.Status);
  105. foreach (var dbo in res.Data)
  106. {
  107. Assert.NotEqual(default(DateTime), dbo);
  108. }
  109. });
  110. }
  111. [Fact]
  112. public void TestAddMultiple4()
  113. {
  114. Tests.TestRealDb(context =>
  115. {
  116. var dbos = new List<PkBigSerialAddDbo>
  117. {
  118. new PkBigSerialAddDbo
  119. {
  120. SomeInt = 42,
  121. SomeText = "42"
  122. },
  123. new PkBigSerialAddDbo
  124. {
  125. SomeInt = 21,
  126. SomeText = "42"
  127. }
  128. };
  129. var service = new LuUtilsPkBigSerialDataAccess(context);
  130. var res = service.Add(dbos, enumerable => enumerable.Select(dbo => dbo.CreatedAt));
  131. Assert.Equal(LuStatus.DbError, res.Status);
  132. });
  133. }
  134. [Fact]
  135. public void TestAddSingle1()
  136. {
  137. Tests.TestRealDb(context =>
  138. {
  139. var service = new LuUtilsPkBigSerialDataAccess(context);
  140. var res = service.Add(new PkBigSerialAddDbo
  141. {
  142. SomeInt = 42,
  143. SomeText = "42"
  144. }, dbo => dbo);
  145. Assert.Equal(LuStatus.Success, res.Status);
  146. Assert.NotEqual(0, res.Data.Id);
  147. Assert.Equal("42", res.Data.SomeText);
  148. Assert.Equal(42, res.Data.SomeInt);
  149. var get = service.GetSingleById(res.Data.Id);
  150. Assert.Equal(LuStatus.Success, get.Status);
  151. Assert.Equal("42", get.Data.SomeText);
  152. Assert.Equal(42, get.Data.SomeInt);
  153. Assert.Equal(res.Data.Id, get.Data.Id);
  154. });
  155. }
  156. [Fact]
  157. public void TestAddSingle2()
  158. {
  159. Tests.TestRealDb(context =>
  160. {
  161. var service = new LuUtilsPkBigSerialDataAccess(context);
  162. var res = service.Add(new PkBigSerialAddDbo
  163. {
  164. SomeInt = 42,
  165. SomeText = "42"
  166. }, dbo => dbo.Id);
  167. Assert.Equal(LuStatus.Success, res.Status);
  168. Assert.NotEqual(0, res.Data);
  169. var get = service.GetSingleById(res.Data);
  170. Assert.Equal(LuStatus.Success, get.Status);
  171. Assert.Equal("42", get.Data.SomeText);
  172. Assert.Equal(42, get.Data.SomeInt);
  173. Assert.Equal(res.Data, get.Data.Id);
  174. });
  175. }
  176. [Fact]
  177. public void TestAddSingle3()
  178. {
  179. Tests.TestRealDb(context =>
  180. {
  181. var service = new LuUtilsPkBigSerialDataAccess(context);
  182. var res = service.Add(new PkBigSerialAddDbo
  183. {
  184. SomeInt = 42,
  185. SomeText = "42"
  186. }, dbo => dbo.CreatedAt);
  187. Assert.Equal(LuStatus.Success, res.Status);
  188. Assert.NotEqual(default(DateTime), res.Data);
  189. });
  190. }
  191. [Fact]
  192. public void TestAddGuidMultiple1()
  193. {
  194. Tests.TestRealDb(context =>
  195. {
  196. var dbos = new List<PkGuidAddDbo>
  197. {
  198. new PkGuidAddDbo
  199. {
  200. SomeInt = 42,
  201. SomeText = "42"
  202. },
  203. new PkGuidAddDbo
  204. {
  205. SomeInt = 21,
  206. SomeText = "24"
  207. }
  208. };
  209. var service = new LuUtilsPkGuidDataAccess(context);
  210. var res = service.AddId(dbos);
  211. Assert.Equal(LuStatus.Success, res.Status);
  212. foreach (var dbo in dbos.Zip(res.Data, (dbo, serialDbo) => new KeyValuePair<PkGuidAddDbo, string>(dbo, serialDbo)))
  213. {
  214. Assert.NotNull(dbo.Key);
  215. Assert.NotNull(dbo.Value);
  216. Assert.NotEqual(new Guid().ToString(), dbo.Value);
  217. var get = service.GetSingleById(dbo.Value);
  218. Assert.Equal(LuStatus.Success, get.Status);
  219. Assert.Equal(dbo.Key.SomeText, get.Data.SomeText);
  220. Assert.Equal(dbo.Key.SomeInt, get.Data.SomeInt);
  221. Assert.Equal(dbo.Value, get.Data.Id);
  222. }
  223. });
  224. }
  225. [Fact]
  226. public void TestAddGuidSingle1()
  227. {
  228. Tests.TestRealDb(context =>
  229. {
  230. var service = new LuUtilsPkGuidDataAccess(context);
  231. var res = service.AddId(new PkGuidAddDbo
  232. {
  233. SomeInt = 42,
  234. SomeText = "42"
  235. });
  236. Assert.Equal(LuStatus.Success, res.Status);
  237. Assert.NotEqual(new Guid().ToString(), res.Data);
  238. var get = service.GetSingleById(res.Data);
  239. Assert.Equal(LuStatus.Success, get.Status);
  240. Assert.Equal("42", get.Data.SomeText);
  241. Assert.Equal(42, get.Data.SomeInt);
  242. Assert.Equal(res.Data, get.Data.Id);
  243. });
  244. }
  245. [Fact]
  246. public void TestAddIdMultiple1()
  247. {
  248. Tests.TestRealDb(context =>
  249. {
  250. var dbos = new List<PkBigSerialAddDbo>
  251. {
  252. new PkBigSerialAddDbo
  253. {
  254. SomeInt = 42,
  255. SomeText = "42"
  256. },
  257. new PkBigSerialAddDbo
  258. {
  259. SomeInt = 21,
  260. SomeText = "24"
  261. }
  262. };
  263. var service = new LuUtilsPkBigSerialDataAccess(context);
  264. var res = service.AddId(dbos);
  265. Assert.Equal(LuStatus.Success, res.Status);
  266. foreach (var dbo in dbos.Zip(res.Data, (dbo, serialDbo) => new KeyValuePair<PkBigSerialAddDbo, long>(dbo, serialDbo)))
  267. {
  268. Assert.NotNull(dbo.Key);
  269. Assert.NotNull(dbo.Value);
  270. Assert.NotEqual(0, dbo.Value);
  271. var get = service.GetSingleById(dbo.Value);
  272. Assert.Equal(LuStatus.Success, get.Status);
  273. Assert.Equal(dbo.Key.SomeText, get.Data.SomeText);
  274. Assert.Equal(dbo.Key.SomeInt, get.Data.SomeInt);
  275. Assert.Equal(dbo.Value, get.Data.Id);
  276. }
  277. });
  278. }
  279. [Fact]
  280. public void TestAddIdSingle1()
  281. {
  282. Tests.TestRealDb(context =>
  283. {
  284. var service = new LuUtilsPkBigSerialDataAccess(context);
  285. var res = service.AddId(new PkBigSerialAddDbo
  286. {
  287. SomeInt = 42,
  288. SomeText = "42"
  289. });
  290. Assert.Equal(LuStatus.Success, res.Status);
  291. Assert.NotEqual(0, res.Data);
  292. var get = service.GetSingleById(res.Data);
  293. Assert.Equal(LuStatus.Success, get.Status);
  294. Assert.Equal("42", get.Data.SomeText);
  295. Assert.Equal(42, get.Data.SomeInt);
  296. Assert.Equal(res.Data, get.Data.Id);
  297. });
  298. }
  299. [Fact]
  300. public void TestAddDboMultiple1()
  301. {
  302. Tests.TestRealDb(context =>
  303. {
  304. var dbos = new List<PkBigSerialAddDbo>
  305. {
  306. new PkBigSerialAddDbo
  307. {
  308. SomeInt = 42,
  309. SomeText = "42"
  310. },
  311. new PkBigSerialAddDbo
  312. {
  313. SomeInt = 21,
  314. SomeText = "24"
  315. }
  316. };
  317. var service = new LuUtilsPkBigSerialDataAccess(context);
  318. var res = service.AddDbo(dbos);
  319. Assert.Equal(LuStatus.Success, res.Status);
  320. foreach (var dbo in dbos.Zip(res.Data, (dbo, serialDbo) => new KeyValuePair<PkBigSerialAddDbo, PkBigSerialDbo>(dbo, serialDbo)))
  321. {
  322. Assert.NotNull(dbo.Key);
  323. Assert.NotNull(dbo.Value);
  324. Assert.NotEqual(0, dbo.Value.Id);
  325. var get = service.GetSingleById(dbo.Value.Id);
  326. Assert.Equal(LuStatus.Success, get.Status);
  327. Assert.Equal(dbo.Key.SomeText, get.Data.SomeText);
  328. Assert.Equal(dbo.Key.SomeInt, get.Data.SomeInt);
  329. Assert.Equal(dbo.Value.Id, get.Data.Id);
  330. }
  331. });
  332. }
  333. [Fact]
  334. public void TestAddDboSingle1()
  335. {
  336. Tests.TestRealDb(context =>
  337. {
  338. var service = new LuUtilsPkBigSerialDataAccess(context);
  339. var res = service.AddDbo(new PkBigSerialAddDbo
  340. {
  341. SomeInt = 42,
  342. SomeText = "42"
  343. });
  344. Assert.Equal(LuStatus.Success, res.Status);
  345. Assert.NotEqual(0, res.Data.Id);
  346. var get = service.GetSingleById(res.Data.Id);
  347. Assert.Equal(LuStatus.Success, get.Status);
  348. Assert.Equal("42", get.Data.SomeText);
  349. Assert.Equal(42, get.Data.SomeInt);
  350. Assert.Equal(res.Data.Id, get.Data.Id);
  351. });
  352. }
  353. [Fact]
  354. public void TestAddDboSingleFk1()
  355. {
  356. Tests.TestRealDb(context =>
  357. {
  358. var pkGuidDataAccess = new LuUtilsPkGuidDataAccess(context);
  359. var fkPkGuidDataAccess = new LuUtilsFkPkGuidDataAccess(context);
  360. var pkGuidDbo = pkGuidDataAccess.AddDbo(new PkGuidAddDbo
  361. {
  362. SomeInt = 42,
  363. SomeText = "Test."
  364. });
  365. Assert.Equal(LuStatus.Success, pkGuidDbo.Status);
  366. var fkPkGuidDbo = fkPkGuidDataAccess.AddDbo(new FkPkGuidAddDbo
  367. {
  368. Name = "Test.",
  369. PkGuidId = pkGuidDbo.Data.Id
  370. });
  371. Assert.Equal(LuStatus.Success, fkPkGuidDbo.Status);
  372. Assert.NotNull(fkPkGuidDbo.Data.PkGuid);
  373. Assert.Equal(pkGuidDbo.Data.Id, fkPkGuidDbo.Data.PkGuid.Id);
  374. });
  375. }
  376. }
  377. }