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
132 lines
4.2 KiB
C#
132 lines
4.2 KiB
C#
using Centron.BusinessLogic.EDI.AlsoCH;
|
|
using Centron.Data.WebServices.Administration.MasterData;
|
|
using CentronSoftware.Centron.WebServices.Entities.Sales.Receipts.ReceiptReceiver;
|
|
using CentronSoftware.Centron.WebServices.Entities.Sales.Receipts.SupplierOrders;
|
|
using CentronSoftware.Centron.WebServices.Entities.Warehousing;
|
|
using JetBrains.Annotations;
|
|
|
|
namespace Centron.Tests.BL.EDI.AlsoCH;
|
|
|
|
[TestSubject(typeof(AlsoOrderCH_BL))]
|
|
public class AlsoOrderCH_BLTest
|
|
{
|
|
private const string _orderSender = "L01";
|
|
private const string _customerNumberAtSupplier = "10776732";
|
|
|
|
private readonly List<CountryDTO> _testCountries = CreateTestCountries();
|
|
private readonly List<ReceiptSupplierOrderItemDTO> _testReceiptItems = CreateTestReceiptItems();
|
|
private readonly List<SpecialAgreementPreviewDTO> _testSpecialAgreements = new();
|
|
|
|
[Fact]
|
|
public void CreateOrderDocument_ShouldMapLicenseReceiverContact_WhenLicenseReceiverHasContactData()
|
|
{
|
|
// Arrange
|
|
var receipt = CreateTestReceipt();
|
|
receipt.ReceiptReceiverLicense = new ReceiptReceiverDTO
|
|
{
|
|
CompanyName = "Licence Company AG",
|
|
Email = "licence@example.ch",
|
|
Phone = "+41 44 1234567",
|
|
Fax = "+41 44 7654321"
|
|
};
|
|
|
|
var orderBL = new AlsoOrderCH_BL(receipt);
|
|
|
|
// Act
|
|
var xmlDoc = orderBL.CreateOrderDocument(
|
|
_orderSender,
|
|
_customerNumberAtSupplier,
|
|
_testReceiptItems,
|
|
_testSpecialAgreements,
|
|
_testCountries);
|
|
|
|
// Assert
|
|
var communicationInfo = xmlDoc.Descendants()
|
|
.FirstOrDefault(x => x.Name.LocalName == "licence_information")
|
|
?.Descendants().FirstOrDefault(x => x.Name.LocalName == "reseller_party")
|
|
?.Descendants().FirstOrDefault(x => x.Name.LocalName == "communication_info");
|
|
|
|
Assert.NotNull(communicationInfo);
|
|
|
|
var email = communicationInfo.Descendants().FirstOrDefault(x => x.Name.LocalName == "PAEA");
|
|
Assert.NotNull(email);
|
|
Assert.Equal("licence@example.ch", email.Value);
|
|
|
|
var phone = communicationInfo.Descendants().FirstOrDefault(x => x.Name.LocalName == "PPHN");
|
|
Assert.NotNull(phone);
|
|
Assert.Equal("+41 44 1234567", phone.Value);
|
|
|
|
var fax = communicationInfo.Descendants().FirstOrDefault(x => x.Name.LocalName == "PFAN");
|
|
Assert.NotNull(fax);
|
|
Assert.Equal("+41 44 7654321", fax.Value);
|
|
|
|
var name = communicationInfo.Descendants().FirstOrDefault(x => x.Name.LocalName == "CCNA");
|
|
Assert.NotNull(name);
|
|
Assert.Equal("Licence Company AG", name.Value);
|
|
}
|
|
|
|
[Fact]
|
|
public void CreateOrderDocument_ShouldNotEmitEmail_WhenLicenseReceiverHasNoEmail()
|
|
{
|
|
// Arrange
|
|
var receipt = CreateTestReceipt();
|
|
receipt.ReceiptReceiverLicense = new ReceiptReceiverDTO
|
|
{
|
|
CompanyName = "Licence Company AG"
|
|
};
|
|
|
|
var orderBL = new AlsoOrderCH_BL(receipt);
|
|
|
|
// Act
|
|
var xmlDoc = orderBL.CreateOrderDocument(
|
|
_orderSender,
|
|
_customerNumberAtSupplier,
|
|
_testReceiptItems,
|
|
_testSpecialAgreements,
|
|
_testCountries);
|
|
|
|
// Assert
|
|
var email = xmlDoc.Descendants().FirstOrDefault(x => x.Name.LocalName == "PAEA");
|
|
Assert.Null(email);
|
|
}
|
|
|
|
#region Test Data Creation Methods
|
|
|
|
private static ReceiptSupplierOrderDTO CreateTestReceipt()
|
|
{
|
|
return new ReceiptSupplierOrderDTO
|
|
{
|
|
Number = 12345,
|
|
Version = 1,
|
|
Date = new DateTime(2024, 10, 14)
|
|
};
|
|
}
|
|
|
|
private static List<CountryDTO> CreateTestCountries()
|
|
{
|
|
return
|
|
[
|
|
new CountryDTO { I3D = 1, CountryCode = "CH" }
|
|
];
|
|
}
|
|
|
|
private static List<ReceiptSupplierOrderItemDTO> CreateTestReceiptItems()
|
|
{
|
|
return
|
|
[
|
|
new ReceiptSupplierOrderItemDTO
|
|
{
|
|
I3D = 1001,
|
|
InternalPosition = 1,
|
|
ArticleI3D = 2001,
|
|
ArticleCode = "ART-001",
|
|
ManufacturerCode = "MFG-001",
|
|
QuantityComplete = 3m,
|
|
BasePrice = 10.50m
|
|
}
|
|
];
|
|
}
|
|
|
|
#endregion
|
|
}
|