using System; using NHibernate; using NHibernate.Cfg; using NHibernate.Tool.hbm2ddl; using NUnit.Framework; namespace TheAgileWorkshop.SQLiteWithSchemaSupport.Tests { [TestFixture] public class Can_persist_class { private ISessionFactory sessionFactory; private Configuration config; [TestFixtureSetUp] public void TestFixtureSetup() { config = new Configuration(); config.Configure(); sessionFactory = config.BuildSessionFactory(); } [SetUp] public void CreateDatabase() { var exporter = new SchemaExport(config); exporter.Execute(true, true, false, true); } [TestFixtureTearDown] public void Teardown() { sessionFactory.Close(); } [Test] public void Should_work_with_schema_to_persist() { using (var session = sessionFactory.OpenSession()) using (var transaction = session.BeginTransaction()) { var instance = new PersistedClass {Message = "Test Save"}; session.SaveOrUpdate(instance); transaction.Commit(); session.Flush(); } } [Test] public void Should_not_override_dots_used_in_the_parameter_values_themselves() { var message = "Test Save with a . in it"; var id = Guid.Empty; using (var session = sessionFactory.OpenSession()) { var instance = new PersistedClass { Message = message }; session.SaveOrUpdate(instance); session.Flush(); id = instance.Id; } using (var session = sessionFactory.OpenSession()) { var instance = session.Get(id); Assert.That(instance.Message, Is.EqualTo(message)); } } [Test] public void Should_not_override_dots_used_in_a_decimal_value() { var decimalValue = 0.1m; var id = Guid.Empty; using (var session = sessionFactory.OpenSession()) { var instance = new PersistedClass { DecimalValue = decimalValue }; session.SaveOrUpdate(instance); session.Flush(); id = instance.Id; } using (var session = sessionFactory.OpenSession()) { var instance = session.Get(id); Assert.That(instance.DecimalValue, Is.EqualTo(decimalValue)); } } } }