Files
Masterarbeit/QuellCode/CentronERP/tests/backend/Centron.Tests.BL/Sales/Receipts/Internal/ReceiptAddressAndContactPersonHelperBLTest.cs
T
Christoph Schwörer f045b99a25 Codebasis als Dateien ins Arbeitsrepo statt als Gitlink
QuellCode/CentronERP war nur als Gitlink (Submodul-Referenz auf 79c1142)
getrackt, ohne .gitmodules und ohne erreichbares Remote. Der
Untersuchungsgegenstand der Versuchsreihe war damit nicht reproduzierbar
gesichert: Ein Klon haette ein leeres Verzeichnis erhalten, und die Belege
der 3.287 Anforderungen waeren nicht ueberpruefbar gewesen.

Umstellung:
- Historie nach c:\DEV\CentronERP_git_snapshot_79c1142 ausgelagert
  (vollstaendig lesbar, enthaelt 79c1142 und Vorgaenger 89ccfd6)
- Gitlink aus dem Index entfernt
- Dateiinhalt aufgenommen: 24.557 Dateien, rund 333 MB

Die verschachtelte .gitignore der Codebasis gilt weiter, Build-Artefakte
bleiben ausgeschlossen. Details in Versuche/Versuch_01/_Codebasis-Nachweis.md
2026-08-26 07:43:51 +02:00

688 lines
24 KiB
C#

using Centron.BusinessLogic.Sales.Receipts.Internal;
using Centron.BusinessLogic.WebServices;
using Centron.DAO;
using Centron.DAO.Mappings;
using Centron.DAO.Mappings.Accounts;
using Centron.DAO.Mappings.Administration;
using Centron.DAO.Mappings.Administration.Company;
using Centron.DAO.Mappings.Administration.Employees;
using Centron.DAO.Mappings.Administration.Settings;
using Centron.DAO.Mappings.CustomerArea;
using Centron.DAO.Mappings.CustomerArea.Support;
using Centron.DAO.Mappings.Sales.Receipts;
using Centron.DAO.Mappings.States;
using Centron.DAO.Mappings.TemporaryEntities;
using Centron.Data.Entities.Accounts;
using Centron.Data.Entities.Administration.MasterData;
using Centron.Data.Entities.BusinessPartner;
using Centron.Data.Entities.CustomerArea;
using Centron.Data.Entities.Sales.Receipts;
using Centron.Data.Entities.Sales.Receipts.Invoices;
using Centron.Data.Entities.Sales.Receipts.Offers;
using Centron.Data.Entities.Sales.Receipts.SupplierInvoices;
using Centron.Tests.BL.DatabaseMappings;
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.BL.Sales.Receipts.Internal;
[TestSubject(typeof(ReceiptAddressAndContactPersonHelperBL))]
public class ReceiptAddressAndContactPersonHelperBLTest
{
[Fact]
public void ReceiptCanBeConvertedToStructuredReceiptReceiver()
{
var session = CreateSession();
var country = new Country()
{
Name = "Deutschland"
};
session.Save(country, 1);
var address = new Address()
{
Street = "Main Street 123a",
Zip = "12345",
City = "Munich",
Country = country,
PrintType = true,
PrintContactPerson = true,
PrintDepartmentContact = 1,
PrintDepartment = true,
HasPostOfficeBox = false,
PostOfficeBox = "",
Department = "Department",
Language = country,
Currency = country,
VariableAddress = 0
};
session.Save(address, 2);
var department = new ContactDepartment()
{
Department = "Contact Department"
};
session.Save(department, 3);
var contact = new ContactPerson()
{
FirstName = "John",
LastName = "Doe",
Department = department,
Address = address
};
session.Save(contact, 4);
var customer = new CustomerCompact()
{
Name = "Tree"
};
session.Save(customer, 5);
session.Flush();
var daoSession = new DAOSession(session);
var receiptAddressAndContactPersonHelperBl = new ReceiptAddressAndContactPersonHelperBL(daoSession);
var expectedReceiptReceiver = new ReceiptReceiver()
{
CompanyName = "Tree",
Department = "Department",
ContactName = "John Doe",
ContactDepartment = "Contact Department",
Street = "Main Street",
HouseNumber = "123a",
HasPostOfficeBox = false,
PostOfficeBox = "",
Zip = "12345",
City = "Munich",
Country = "Deutschland",
CountryI3D = 1,
AdditionalAddressSupplement = ""
};
var receipt = "Tree\nDepartment \nJohn Doe\nContact Department\nMain Street 123a\n12345 Munich\n";
var result = receiptAddressAndContactPersonHelperBl.ConvertReceiverToReceiptReceiver(receipt, 2, 4, false);
Assert.Equivalent(expectedReceiptReceiver, result);
}
[Fact]
public void ReceiptReceiverCanBeUpdated()
{
var session = CreateSession();
var country = new Country()
{
Name = "Deutschland"
};
session.Save(country, 1);
var customer = new CustomerCompact()
{
Name = "Tree"
};
session.Save(customer, 5);
var address = new Address()
{
Street = "Main Street 123a",
Zip = "12345",
City = "Munich",
Country = country,
PrintType = true,
PrintContactPerson = true,
PrintDepartmentContact = 1,
PrintDepartment = true,
HasPostOfficeBox = false,
PostOfficeBox = "",
Department = "Department",
Language = country,
Currency = country,
VariableAddress = 0,
CustomerI3D = 5
};
session.Save(address, 2);
var department = new ContactDepartment()
{
Department = "Contact Department"
};
session.Save(department, 3);
var contact = new ContactPerson()
{
FirstName = "John",
LastName = "Doe",
Department = department,
Address = address
};
session.Save(contact, 4);
session.Flush();
var daoSession = new DAOSession(session);
var receiptAddressAndContactPersonHelperBl = new ReceiptAddressAndContactPersonHelperBL(daoSession);
var expectedReceiptReceiver = new ReceiptReceiver()
{
CompanyName = "Tree",
Department = "Department",
ContactName = "John Doe",
ContactDepartment = "Contact Department",
Street = "Main Street",
HouseNumber = "123a",
HasPostOfficeBox = false,
PostOfficeBox = "",
Zip = "12345",
City = "Munich",
Country = "Deutschland",
CountryI3D = 1,
AdditionalAddressSupplement = "",
CustomerNumber = 5,
AccountI3D = null,
SupplierNumber = null,
FederalState = string.Empty
};
var receipt = new ReceiptOffer() { CustomerI3D = 5 };
receiptAddressAndContactPersonHelperBl.UpdateReceiptReceiver(receipt, 5, 2, 4);
Assert.Equivalent(expectedReceiptReceiver, receipt.ReceiptReceiver);
var receiptReceiverDto = receiptAddressAndContactPersonHelperBl.CreateReceiverObject(false, true, 5, "Tree", 2, 4);
var expectedDto = ObjectMapper.Map<ReceiptReceiver, ReceiptReceiverDTO>(expectedReceiptReceiver);
expectedDto.ReceiverText = receiptAddressAndContactPersonHelperBl.CreateReceiverTextFromDTO(expectedDto);
Assert.Equivalent(expectedDto, receiptReceiverDto);
}
[Fact]
public void ReceiptReceiverCanHandleUniCode()
{
var session = CreateSession();
var country = new Country()
{
Name = "China"
};
session.Save(country, 1);
var address = new Address()
{
Street = "香港葵涌大連排金龙工业中心二期12楼L室",
Zip = "12345",
City = "HongKong",
Country = country,
PrintType = true,
PrintContactPerson = true,
PrintDepartment = true,
PrintDepartmentContact = 1,
HasPostOfficeBox = false,
PostOfficeBox = "",
Department = "Foreign",
Language = country,
Currency = country,
VariableAddress = 0
};
session.Save(address, 2);
var department = new ContactDepartment()
{
Department = "Foreign Contact Department"
};
session.Save(department, 3);
var contact = new ContactPerson()
{
FirstName = "John",
LastName = "Doe",
Department = department,
Address = address
};
session.Save(contact, 4);
var customer = new CustomerCompact()
{
Name = "Tree"
};
session.Save(customer, 5);
session.Flush();
var daoSession = new DAOSession(session);
var receiptAddressAndContactPersonHelperBl = new ReceiptAddressAndContactPersonHelperBL(daoSession);
var expectedReceiptReceiver = new ReceiptReceiver()
{
CompanyName = "Tree",
Department = "Foreign",
ContactName = "John Doe",
ContactDepartment = "Foreign Contact Department",
Street = "香港葵涌大連排金龙工业中心二期",
HouseNumber = "12楼L室",
HasPostOfficeBox = false,
PostOfficeBox = "",
Zip = "12345",
City = "HongKong",
Country = "China",
CountryI3D = 1,
AdditionalAddressSupplement = "",
CustomerNumber = 5,
AccountI3D = null,
SupplierNumber = null,
FederalState = string.Empty
};
var receipt = new ReceiptOffer() { CustomerI3D = 5 };
receiptAddressAndContactPersonHelperBl.UpdateReceiptReceiver(receipt, 5, 2, 4);
Assert.Equivalent(expectedReceiptReceiver, receipt.ReceiptReceiver);
}
[Fact]
public void UpdatingReceiptReceiverCanHandleAlternativeAddresses()
{
var session = CreateSession();
var expectedReceiptReceiverDelivery = new ReceiptReceiver()
{
CompanyName = "Tree",
Department = "Department Delivery",
ContactName = "John Doe",
ContactDepartment = "Contact Department",
Street = "Main Street",
HouseNumber = "123a",
HasPostOfficeBox = false,
PostOfficeBox = "",
Zip = "12345",
City = "Munich",
Country = "Deutschland",
CountryI3D = 1,
AdditionalAddressSupplement = "",
FederalState = string.Empty
};
var expectedReceiptReceiverInvoice = new ReceiptReceiver()
{
CompanyName = "Tree",
Department = "Department Invoice",
ContactName = "John Doe",
ContactDepartment = "Contact Department",
Street = "Main Street",
HouseNumber = "123a",
HasPostOfficeBox = false,
PostOfficeBox = "",
Zip = "12345",
City = "Munich",
Country = "Deutschland",
CountryI3D = 1,
AdditionalAddressSupplement = "",
FederalState = string.Empty
};
var country = new Country()
{
Name = "Deutschland"
};
session.Save(country, 1);
var address = new Address()
{
Street = "Main Street 123a",
Zip = "12345",
City = "Munich",
Country = country,
PrintType = true,
PrintContactPerson = true,
PrintDepartmentContact = 1,
PrintDepartment = true,
HasPostOfficeBox = false,
PostOfficeBox = "",
Department = "Department",
Language = country,
Currency = country,
VariableAddress = 0
};
session.Save(address, 2);
var department = new ContactDepartment()
{
Department = "Contact Department"
};
session.Save(department, 3);
var contact = new ContactPerson()
{
FirstName = "John",
LastName = "Doe",
Department = department,
Address = address
};
session.Save(contact, 4);
var customer = new CustomerCompact()
{
Name = "Tree"
};
session.Save(customer, 5);
var accountCustomer = new AccountCustomer
{
Number = 5,
ReceiptReceiverDelivery = expectedReceiptReceiverDelivery,
ReceiptReceiverInvoice = expectedReceiptReceiverInvoice
};
session.Save(accountCustomer, 7);
session.Flush();
var daoSession = new DAOSession(session);
var receiptAddressAndContactPersonHelperBl = new ReceiptAddressAndContactPersonHelperBL(daoSession);
var expectedReceiptReceiver = new ReceiptReceiver()
{
CompanyName = "Tree",
Department = "Department",
ContactName = "John Doe",
ContactDepartment = "Contact Department",
Street = "Main Street",
HouseNumber = "123a",
HasPostOfficeBox = false,
PostOfficeBox = "",
Zip = "12345",
City = "Munich",
Country = "Deutschland",
CountryI3D = 1,
AdditionalAddressSupplement = "",
CustomerNumber = 5,
AccountI3D = null,
SupplierNumber = null,
FederalState = string.Empty
};
var receipt = new ReceiptInvoice()
{
CustomerI3D = 5,
AddressI3D = 2,
ContactPersonI3D = 4,
InvoiceAddressAddressI3D = 1,
InvoiceAddressContactPersonI3D = 1,
DeliveryAddressAddressI3D = 1,
DeliveryAddressContactPersonI3D = 1,
Receiver = "receiver",
InvoiceAddress = "",
DeliveryAddress = "",
ReceiptReceiverInvoice = expectedReceiptReceiverInvoice,
ReceiptReceiverDelivery = expectedReceiptReceiverDelivery
};
receiptAddressAndContactPersonHelperBl.UpdateReceiptReceiver(receipt);
Assert.Equivalent(expectedReceiptReceiver, receipt.ReceiptReceiver);
var receiptWithInvoiceAddressUsed = new ReceiptInvoice()
{
CustomerI3D = 5,
AddressI3D = 1,
ContactPersonI3D = 1,
InvoiceAddressAddressI3D = 2,
InvoiceAddressContactPersonI3D = 4,
DeliveryAddressAddressI3D = 1,
DeliveryAddressContactPersonI3D = 1,
Receiver = "receiver",
InvoiceAddress = "receiver",
DeliveryAddress = "",
ReceiptReceiverInvoice = expectedReceiptReceiverInvoice,
ReceiptReceiverDelivery = expectedReceiptReceiverDelivery
};
receiptAddressAndContactPersonHelperBl.UpdateReceiptReceiver(receiptWithInvoiceAddressUsed);
Assert.Equivalent(expectedReceiptReceiverInvoice, receiptWithInvoiceAddressUsed.ReceiptReceiver);
var receiptWithDeliveryAddressUsed = new ReceiptInvoice()
{
CustomerI3D = 5,
AddressI3D = 1,
ContactPersonI3D = 1,
InvoiceAddressAddressI3D = 1,
InvoiceAddressContactPersonI3D = 1,
DeliveryAddressAddressI3D = 2,
DeliveryAddressContactPersonI3D = 4,
Receiver = "receiver",
InvoiceAddress = "",
DeliveryAddress = "receiver",
ReceiptReceiverInvoice = expectedReceiptReceiverInvoice,
ReceiptReceiverDelivery = expectedReceiptReceiverDelivery
};
receiptAddressAndContactPersonHelperBl.UpdateReceiptReceiver(receiptWithDeliveryAddressUsed);
Assert.Equivalent(expectedReceiptReceiverDelivery, receiptWithDeliveryAddressUsed.ReceiptReceiver);
}
[Fact]
public void HouseNumberCanBeBeforeStreet()
{
var session = CreateSession();
var country = new Country()
{
Name = "Deutschland"
};
session.Save(country, 1);
var address = new Address()
{
Street = "123b Main Street",
Zip = "12345",
City = "Munich",
Country = country,
PrintType = true,
PrintContactPerson = true,
PrintDepartmentContact = 1,
PrintDepartment = true,
HasPostOfficeBox = true,
PostOfficeBox = "Box",
Department = "Department",
Language = country,
Currency = country,
VariableAddress = 0
};
session.Save(address, 2);
var departement = new ContactDepartment()
{
Department = "Contact Department"
};
session.Save(departement, 3);
var contact = new ContactPerson()
{
FirstName = "John",
LastName = "Doe",
Department = departement,
Address = address
};
session.Save(contact, 4);
var supplier = new Supplier()
{
Name = "Tree"
};
session.Save(supplier, 5);
session.Flush();
var daoSession = new DAOSession(session);
var receiptAddressAndContactPersonHelperBl = new ReceiptAddressAndContactPersonHelperBL(daoSession);
var expectedReceiptReceiver = new ReceiptReceiver()
{
CompanyName = "Tree",
Department = "Department",
ContactName = "John Doe",
ContactDepartment = "Contact Department",
Street = "Main Street",
HouseNumber = "123b",
HasPostOfficeBox = true,
PostOfficeBox = "Box",
Zip = "12345",
City = "Munich",
Country = "Deutschland",
CountryI3D = 1,
AdditionalAddressSupplement = "",
CustomerNumber = null,
AccountI3D = null,
SupplierNumber = 5,
FederalState = string.Empty
};
var receipt = new ReceiptSupplierInvoice() { SupplierI3D = 5 };
receiptAddressAndContactPersonHelperBl.UpdateReceiptReceiver(receipt, 5, 2, 4);
Assert.Equivalent(expectedReceiptReceiver, receipt.ReceiptReceiver);
}
[Fact]
public void ContactPersonDepartmentAndCompanyNameCanBeSuppressed()
{
var session = CreateSession();
var country = new Country()
{
Name = "Deutschland"
};
session.Save(country, 1);
var customer = new CustomerCompact()
{
Name = "Tree"
};
session.Save(customer, 5);
var address = new Address()
{
Street = "Main Street 123a",
Zip = "12345",
City = "Munich",
Country = country,
PrintType = false,
PrintContactPerson = false,
PrintDepartment = false,
HasPostOfficeBox = false,
PostOfficeBox = "",
Department = "Department",
Language = country,
Currency = country,
VariableAddress = 0,
CustomerI3D = 5
};
session.Save(address, 2);
var departement = new ContactDepartment()
{
Department = "Contact Department"
};
session.Save(departement, 3);
var contact = new ContactPerson()
{
FirstName = "John",
LastName = "Doe",
Department = departement,
Address = address
};
session.Save(contact, 4);
session.Flush();
var daoSession = new DAOSession(session);
var receiptAddressAndContactPersonHelperBl = new ReceiptAddressAndContactPersonHelperBL(daoSession);
var expectedReceiptReceiver = new ReceiptReceiver()
{
CompanyName = "",
Department = "",
ContactName = "",
ContactDepartment = "",
Street = "Main Street",
HouseNumber = "123a",
HasPostOfficeBox = false,
PostOfficeBox = "",
Zip = "12345",
City = "Munich",
Country = "Deutschland",
CountryI3D = 1,
AdditionalAddressSupplement = "",
CustomerNumber = 5,
AccountI3D = null,
SupplierNumber = null,
FederalState = string.Empty
};
var receipt = new ReceiptInvoice() { CustomerI3D = 5 };
receiptAddressAndContactPersonHelperBl.UpdateReceiptReceiver(receipt, 5, 2, 4);
Assert.Equivalent(expectedReceiptReceiver, receipt.ReceiptReceiver);
var receiptReceiverDto = receiptAddressAndContactPersonHelperBl.CreateReceiverObject(false, true, 5, "", 2, 4);
var expectedDto = ObjectMapper.Map<ReceiptReceiver, ReceiptReceiverDTO>(expectedReceiptReceiver);
expectedDto.ReceiverText = receiptAddressAndContactPersonHelperBl.CreateReceiverTextFromDTO(expectedDto);
Assert.Equivalent(expectedDto, receiptReceiverDto);
}
[Fact]
public void ReceiptReceiverCanHandleMissingValues()
{
var session = CreateSession();
var customer = new CustomerCompact()
{
Name = "Tree"
};
session.Save(customer, 5);
session.Flush();
var daoSession = new DAOSession(session);
var receiptAddressAndContactPersonHelperBl = new ReceiptAddressAndContactPersonHelperBL(daoSession);
var expectedReceiptReceiver = new ReceiptReceiver()
{
CompanyName = "Tree",
Department = "",
ContactName = "",
ContactDepartment = "",
Street = "",
HouseNumber = "",
HasPostOfficeBox = false,
PostOfficeBox = "",
Zip = "",
City = "",
Country = "",
AdditionalAddressSupplement = "",
CustomerNumber = 5,
AccountI3D = null,
SupplierNumber = null,
FederalState = string.Empty
};
var receipt = new ReceiptOffer() { CustomerI3D = 5 };
receiptAddressAndContactPersonHelperBl.UpdateReceiptReceiver(receipt, 5, 2, 4);
Assert.Equivalent(expectedReceiptReceiver, receipt.ReceiptReceiver);
// Test with a different customer number (5 instead of 10000 to match the actual customer)
var receiptReceiverDto = receiptAddressAndContactPersonHelperBl.CreateReceiverObject(false, true, 5, "Tree", 2, 4);
var expectedDto = ObjectMapper.Map<ReceiptReceiver, ReceiptReceiverDTO>(expectedReceiptReceiver);
expectedDto.ReceiverText = receiptAddressAndContactPersonHelperBl.CreateReceiverTextFromDTO(expectedDto);
Assert.Equivalent(expectedDto, receiptReceiverDto);
}
public ISession CreateSession()
{
var fluentConfiguration = Fluently.Configure()
.Database(SQLiteConfiguration.Standard.InMemory)
.Mappings(m => m.FluentMappings.Add<AddressMaps>())
.Mappings(m => m.FluentMappings.Add<CountryMaps>())
.Mappings(m => m.FluentMappings.Add<ReceiptReceiverMaps>())
.Mappings(m => m.FluentMappings.Add<ContactPersonMaps>())
.Mappings(m => m.FluentMappings.Add<EmployeeCompactMaps>())
.Mappings(m => m.FluentMappings.Add<AppUserMaps>())
.Mappings(m => m.FluentMappings.Add<SupportLevelMaps>())
.Mappings(m => m.FluentMappings.Add<CustomerDepartmentMaps>())
.Mappings(m => m.FluentMappings.Add<CustomerSalutationMaps>())
.Mappings(m => m.FluentMappings.Add<MandatorMaps>())
.Mappings(m => m.FluentMappings.Add<FederalStateMaps>())
.Mappings(m => m.FluentMappings.Add<AppUserGroupMaps>())
.Mappings(m => m.FluentMappings.Add<AppRightMaps>())
.Mappings(m => m.FluentMappings.Add<CustomerCompactMaps>())
.Mappings(m => m.FluentMappings.Add<SupplierMaps>())
.Mappings(m => m.FluentMappings.Add<AccountCustomerMapsForTest>())
.Mappings(m => m.FluentMappings.Add<AppSettingMaps>())
.Mappings(m => m.FluentMappings.Add<AppSettingDataMaps>())
.Mappings(m => m.FluentMappings.Add<ApplicationSettingMaps>())
.Mappings(m => m.FluentMappings.Add<AccountSearchItemAccMapsForTest>())
.Mappings(m => m.FluentMappings.Add<AccountTypeToAccountMapsForTest>())
.Mappings(m => m.FluentMappings.Add<AccountSupplierMapsForTest>())
.Mappings(m => m.FluentMappings.Add<AccountAddressMaps>())
.Mappings(m => m.FluentMappings.Add<AccountAddressContactMaps>())
.Mappings(m => m.FluentMappings.Add<GeoInfoMaps>())
;
ISessionFactory sessionFactory = fluentConfiguration.BuildSessionFactory();
ISession session = sessionFactory.OpenSession();
new SchemaExport(fluentConfiguration.BuildConfiguration()).Execute(true, true, false, session.Connection, Console.Out);
return session;
}
}