SqliteReadOnly_Test.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. using Microsoft.VisualStudio.TestTools.UnitTesting;
  2. using Vitorm.Sql;
  3. using User = Vitorm.MsTest.Sqlite2.User;
  4. namespace Vitorm.MsTest.Sqlite2
  5. {
  6. public class User : Vitorm.MsTest.UserBase
  7. {
  8. }
  9. }
  10. namespace Vitorm.MsTest
  11. {
  12. [TestClass]
  13. public partial class SqliteReadOnly_Test
  14. {
  15. [TestMethod]
  16. public void Test()
  17. {
  18. Init("SqliteReadOnly_Test.db");
  19. Init("SqliteReadOnly_Test.readonly.db");
  20. // #1 get from ReadOnly node
  21. {
  22. var user = Data.Get<User>(1);
  23. Assert.AreEqual("SqliteReadOnly_Test.readonly.db", user.name);
  24. }
  25. // #2 get from ReadWrite node by transaction
  26. {
  27. using var dbContext = Data.DataProvider<User>().CreateSqlDbContext();
  28. using var tran = dbContext.BeginTransaction();
  29. var user = dbContext.Get<User>(1);
  30. Assert.AreEqual("SqliteReadOnly_Test.db", user.name);
  31. }
  32. // #3 update and check
  33. {
  34. // get from ReadOnly node
  35. var user = Data.Get<User>(1);
  36. Assert.AreEqual("SqliteReadOnly_Test.readonly.db", user.name);
  37. // update to ReadWrite node
  38. user.name = "NewName";
  39. Data.Update(user);
  40. // get from ReadOnly node
  41. user = Data.Get<User>(1);
  42. Assert.AreEqual("SqliteReadOnly_Test.readonly.db", user.name);
  43. // get from ReadWrite node
  44. using var dbContext = Data.DataProvider<User>().CreateSqlDbContext();
  45. using var tran = dbContext.BeginTransaction();
  46. user = dbContext.Get<User>(1);
  47. Assert.AreEqual("NewName", user.name);
  48. }
  49. }
  50. public void Init(string fileName)
  51. {
  52. var filePath = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, fileName);
  53. using var dbContext = new SqlDbContext().UseSqlite(connectionString: $"data source={fileName};");
  54. dbContext.Drop<User>();
  55. dbContext.Create<User>();
  56. dbContext.Add(new User { id = 1, name = fileName });
  57. }
  58. }
  59. }