Property_Guid_Test.cs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. using System.ComponentModel.DataAnnotations;
  2. using Microsoft.VisualStudio.TestTools.UnitTesting;
  3. namespace Vitorm.MsTest.CustomTest
  4. {
  5. [TestClass]
  6. public class Property_Guid_Test
  7. {
  8. [TestMethod]
  9. public void Test()
  10. {
  11. using var dbContext = DataSource.CreateDbContext();
  12. var dbSet = dbContext.DbSet<UserInfo>();
  13. dbSet.TryDropTable();
  14. dbSet.TryCreateTable();
  15. Guid guid; UserInfo user;
  16. {
  17. user = dbSet.Add(new UserInfo { name = "user1" });
  18. user = dbSet.Add(new UserInfo { name = "user2" });
  19. guid = user.guid;
  20. }
  21. DataSource.WaitForUpdate();
  22. {
  23. user = dbSet.Get(guid);
  24. Assert.AreEqual("user2", user?.name);
  25. }
  26. }
  27. class UserInfo
  28. {
  29. [Key]
  30. public Guid guid { get; set; } = Guid.NewGuid();
  31. public string name { get; set; }
  32. }
  33. [TestMethod]
  34. public void Test2()
  35. {
  36. using var dbContext = DataSource.CreateDbContext();
  37. var dbSet = dbContext.DbSet<UserInfo2>();
  38. dbSet.TryDropTable();
  39. dbSet.TryCreateTable();
  40. Guid guid = Guid.NewGuid();
  41. UserInfo2 user;
  42. {
  43. user = dbSet.Add(new UserInfo2 { guid = guid, name = "user1" });
  44. DataSource.WaitForUpdate();
  45. try
  46. {
  47. dbSet.Add(new UserInfo2 { guid = guid, name = "user1" });
  48. Assert.Fail("should not be able to add same key twice");
  49. }
  50. catch (Exception ex)
  51. { }
  52. try
  53. {
  54. user = dbSet.Add(new UserInfo2 { name = "user2" });
  55. Assert.Fail("should not be able to add entity without key");
  56. }
  57. catch (Exception ex)
  58. { }
  59. }
  60. {
  61. user = dbSet.Get(guid);
  62. Assert.AreEqual("user1", user?.name);
  63. }
  64. }
  65. class UserInfo2
  66. {
  67. [Key]
  68. public Guid guid { get; set; }
  69. public string name { get; set; }
  70. }
  71. }
  72. }