using Centron.BusinessLogic.WebServices; using Centron.DAO.Mappings.Accounts; using Centron.DAO.Mappings.Sales.Receipts; using Centron.Data.Entities.Accounts; using Centron.Data.Entities.Sales.Receipts; using Centron.Tests.BL.DatabaseMappings; using CentronSoftware.Centron.WebServices.Entities.Accounts; using CentronSoftware.Centron.WebServices.Entities.Sales.Receipts.ReceiptReceiver; using FluentNHibernate.Cfg; using FluentNHibernate.Cfg.Db; using JetBrains.Annotations; using NHibernate; using NHibernate.Tool.hbm2ddl; namespace Centron.Tests.DAO.Mappings.Accounts; [TestSubject(typeof(AccountCustomerMaps))] public class AccountCustomerMapsTest { [Fact] public void ReceiptReceiverCanBeMapped() { var session = CreateSession(); var receipt = new AccountCustomer { I3D = 1, Number = 2, ReceiptReceiverDelivery = new ReceiptReceiver() { CompanyName = "Company", Department = "Department", ContactName = "Contact", ContactDepartment = "C Department", Street = "Street", HouseNumber = "1", Zip = "12345", City = "City", Country = "Country", CountryI3D = 4, PostOfficeBox = "", HasPostOfficeBox = false, AdditionalAddressSupplement = "" }, ReceiptReceiverInvoice = new ReceiptReceiver() { CompanyName = "Company Invoice", Department = "Department", ContactName = "Contact", ContactDepartment = "C Department", Street = "Street Invoice", HouseNumber = "1", Zip = "12345", City = "City", Country = "Country", CountryI3D = 4, PostOfficeBox = "", HasPostOfficeBox = false, AdditionalAddressSupplement = "" } , }; session.Save(receipt); session.Flush(); var savedEntity = session.Get(1); Assert.NotNull(savedEntity); var dto = ObjectMapper.Map(savedEntity); Assert.NotNull(dto); Assert.Equal("Company Invoice", dto.ReceiptReceiverInvoice.CompanyName); var savedReceiptReceivers = session.Query().ToList(); Assert.Equal(2, savedReceiptReceivers.Count); dto.ReceiptReceiverDelivery = new ReceiptReceiverDTO() { CompanyName = "New Company Delivery", Department = "Department", ContactName = "Contact", ContactDepartment = "C Department", Street = "New Street Delivery", HouseNumber = "1", Zip = "12345", City = "City", Country = "Country", CountryI3D = 4, PostOfficeBox = "", HasPostOfficeBox = false, AdditionalAddressSupplement = "" }; savedEntity.ReceiptReceiverDelivery = null; savedEntity = ObjectMapper.Map(dto, savedEntity); session.Save(savedEntity); session.Flush(); var newSavedEntity = session.Get(1); Assert.NotNull(newSavedEntity); dto = ObjectMapper.Map(newSavedEntity); Assert.NotNull(dto); Assert.Equal("New Company Delivery", dto.ReceiptReceiverDelivery.CompanyName); savedReceiptReceivers = session.Query().ToList(); Assert.Equal(3, savedReceiptReceivers.Count); } public ISession CreateSession() { var fluentConfiguration = Fluently.Configure() .Database(SQLiteConfiguration.Standard.InMemory) .Mappings(m => m.FluentMappings.Add()) .Mappings(m => m.FluentMappings.Add()) ; ISessionFactory sessionFactory = fluentConfiguration.BuildSessionFactory(); ISession session = sessionFactory.OpenSession(); new SchemaExport(fluentConfiguration.BuildConfiguration()).Execute(true, true, false, session.Connection, Console.Out); return session; } }