PageRenderTime 49ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 1ms

/sandbox/simondud/Envers.NET.Spring/Envers.NET.SLN/NHibernate-Envers.Test/HibernateStartedTest.cs

https://bitbucket.org/dabide/nhcontrib
C# | 158 lines | 115 code | 33 blank | 10 comment | 6 complexity | 6c2b09bf216fbe159320b5d56648c0a3 MD5 | raw file
Possible License(s): BSD-3-Clause, MPL-2.0-no-copyleft-exception, CC-BY-SA-3.0, GPL-2.0, Apache-2.0, LGPL-3.0, LGPL-2.1
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using NHibernate.Proxy;
  7. using NUnit.Framework;
  8. using Spring.Context.Support;
  9. using Spring.Context;
  10. using NHibernate;
  11. using Envers.Net.Model;
  12. using Envers.Net.Repository;
  13. using Spring.Data.Common;
  14. using System.Data;
  15. using NHibernate.Envers.Event;
  16. using Spring.Data.NHibernate;
  17. using NHibernate.Impl;
  18. namespace APDRP_NHibernatePOC_Test
  19. {
  20. [TestFixture]
  21. public class HibernateStartedTest
  22. {
  23. private IApplicationContext applicationContext;
  24. private IRepository<Person> personRepository;
  25. private IRepository<Address> addressRepository;
  26. private IRepository<ContBancar> contRepository;
  27. [TestFixtureSetUp]
  28. public void SetUp()
  29. {
  30. applicationContext = new XmlApplicationContext("spring-config.xml");
  31. personRepository = (IRepository<Person>)applicationContext.GetObject("PersonRepository");
  32. addressRepository = (IRepository<Address>)applicationContext.GetObject("AddressRepository");
  33. contRepository = (IRepository<ContBancar>)applicationContext.GetObject("ContBancarRepository");
  34. }
  35. [TestFixtureTearDown]
  36. public void TearDown()
  37. {
  38. ((XmlApplicationContext)applicationContext).Dispose();
  39. }
  40. //[Test]
  41. public void testDbProvider()
  42. {
  43. IDbProvider dbProvider = (IDbProvider)applicationContext.GetObject("DbProvider");
  44. using(IDbConnection connection = dbProvider.CreateConnection())
  45. {
  46. Assert.NotNull(connection);
  47. }
  48. }
  49. //[Test]
  50. public void TestSessionFactoryStartedOk()
  51. {
  52. ISessionFactory sessionFactory = (ISessionFactory)applicationContext.GetObject("NHibernateSessionFactory");
  53. Assert.IsNotNull(sessionFactory);
  54. }
  55. [Test]
  56. public void TestSessionFactory()
  57. {
  58. //AuditEventListener lis = (AuditEventListener)applicationContext.GetObject("enversEventListener");
  59. Address adr = new Address { number = "16", street = "Diligentei" };
  60. addressRepository.Add(adr);
  61. ContBancar cnt = new ContBancar { NumeBanca = "BCR", IBAN = "RO212BCRO423455634", Adresa = adr };
  62. contRepository.Add(cnt);
  63. Person persoana = new Person { firstName = "Mihai", lastName = "Popa", cont = cnt};
  64. personRepository.Add(persoana);
  65. persoana.lastName = "Popatatu";
  66. personRepository.Update(persoana);
  67. IList personRevisionIds;
  68. //personRevisionIds = personRepository.GetAllRevisionIds(persoana);
  69. //foreach (object personRevId in personRevisionIds)
  70. //{
  71. // Person auditedPerson = personRepository.GetRevision(typeof(Person), persoana.id, (long)(int)personRevId);
  72. // Assert.IsTrue(auditedPerson.cont is SessionImpl);
  73. // System.Console.Write(personRevId + ":" + auditedPerson.firstName + " " + auditedPerson.lastName + " -> " + auditedPerson.address.street);
  74. //}
  75. Address address = new Address{number="22", street="Valea Calugareasca"};
  76. addressRepository.Add(address);
  77. Assert.IsTrue(address.id != 0);
  78. long id1 = address.id;
  79. address.number = "29";
  80. addressRepository.Update(address);
  81. Person pers = new Person{firstName = "Ion", lastName = "Gheorghe", address = address};
  82. personRepository.Add(pers);
  83. Assert.IsTrue(pers.id != 0);
  84. pers.firstName = "Ionel";
  85. personRepository.Update(pers);
  86. personRevisionIds = personRepository.GetAllRevisionIds( pers );
  87. foreach ( object personRevId in personRevisionIds )
  88. {
  89. Person auditedPerson = personRepository.GetRevision( typeof(Person), pers.id, (long)(int)personRevId );
  90. if (auditedPerson.address is INHibernateProxy)
  91. {
  92. Type tt = ((INHibernateProxy)auditedPerson.address).HibernateLazyInitializer.PersistentClass;
  93. object gigi = ((INHibernateProxy)auditedPerson.address).HibernateLazyInitializer.GetImplementation();
  94. }
  95. Type t = NHibernateUtil.GetClass(auditedPerson.address);
  96. System.Console.Write( personRevId + ":" + auditedPerson.firstName + " " + auditedPerson.lastName + " -> " + auditedPerson.address.street );
  97. }
  98. address.number = "23";
  99. addressRepository.Update(address);
  100. address.number = "24";
  101. addressRepository.Update(address);
  102. address = new Address { number = "45", street = "Strada Strada" };
  103. addressRepository.Add(address);
  104. ContBancar cont = new ContBancar{NumeBanca="BRD", IBAN = "RO212423455634",Adresa = address};
  105. contRepository.Add(cont);
  106. pers.cont = cont;
  107. personRepository.Update(pers);
  108. address = new Address { number = "55bis", street = "Alta strada" };
  109. addressRepository.Add(address);
  110. ContBancar cont2 = new ContBancar { NumeBanca = "BCR", IBAN = "RO33BCRO212423455634", Adresa = address };
  111. contRepository.Add(cont2);
  112. pers.cont = cont2;
  113. personRepository.Update(pers);
  114. cont.IBAN += "P2";
  115. contRepository.Update(cont);
  116. Person pers2 = new Person { firstName = "Mihai", lastName = "Trompetzescu", address = address, cont = cont};
  117. personRepository.Add(pers2);
  118. address = addressRepository.GetById(id1);
  119. Assert.IsTrue(address.number == "24" && address.street == "Valea Calugareasca");
  120. address = new Address { number = "123", street = "P-asta o stergem"};
  121. addressRepository.Add(address);
  122. addressRepository.Remove(address);
  123. }
  124. }
  125. }