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
108 lines
4.3 KiB
C#
108 lines
4.3 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using Centron.BusinessLogic;
|
|
using Centron.BusinessLogic.WebServices.Sales.Receipts;
|
|
using Centron.Interfaces.Sales.Receipts;
|
|
using Centron.Tests.EndToEnd.Infrastructure;
|
|
using CentronSoftware.Centron.WebServices.Entities.Sales.Receipts;
|
|
using Xunit;
|
|
using Xunit.Abstractions;
|
|
|
|
namespace Centron.Tests.EndToEnd.Tests.ReceiptProvisionSchemaExpiration;
|
|
|
|
public class ReceiptProvisionSchemaExpirationTests : EndToEndTest
|
|
{
|
|
public ReceiptProvisionSchemaExpirationTests(ITestOutputHelper testOutputHelper)
|
|
: base(testOutputHelper)
|
|
{
|
|
}
|
|
|
|
public override void Execute()
|
|
{
|
|
this.CreateSchemas();
|
|
this.VerifySettings("Before");
|
|
|
|
this.UpdateExpiredSchemas();
|
|
this.VerifySettings("After");
|
|
|
|
this.CanDeleteNewSchema();
|
|
}
|
|
|
|
private void CreateSchemas()
|
|
{
|
|
using var session = new BLSession();
|
|
|
|
// Create Schemas
|
|
var newSchema = new ReceiptProvisionSchemaDTO
|
|
{
|
|
Name = "Neues Schema",
|
|
Items = new List<ReceiptProvisionSchemaItemDTO>
|
|
{
|
|
new() { Receiver = ReceiptProvisionReceiver.CustomerAdviser1, SharePercentage = 100, ProvisionPercentage = 10, Source = ReceiptProvisionSource.All, Value = ReceiptProvisionValue.Auto },
|
|
}
|
|
};
|
|
newSchema = session.GetBL<ReceiptProvisionSchemaWebServiceBL>().SaveProvisionSchema(newSchema, this.GetLoggedInUser());
|
|
|
|
var oldSchema = new ReceiptProvisionSchemaDTO
|
|
{
|
|
Name = "Altes Schema",
|
|
ExpiresAt = DateTime.Today.AddDays(-1), // Expired yesterday
|
|
NextSchemaI3D = newSchema.I3D,
|
|
Items = new List<ReceiptProvisionSchemaItemDTO>
|
|
{
|
|
new() { Receiver = ReceiptProvisionReceiver.CustomerAdviser2, SharePercentage = 100, ProvisionPercentage = 5, Source = ReceiptProvisionSource.All, Value = ReceiptProvisionValue.Earnings },
|
|
}
|
|
};
|
|
oldSchema = session.GetBL<ReceiptProvisionSchemaWebServiceBL>().SaveProvisionSchema(oldSchema, this.GetLoggedInUser());
|
|
|
|
// Assign global schema
|
|
var receiptSettings = session.GetBL<ReceiptWebServiceBL>().GetReceiptSettings(this.GetLoggedInUser().User);
|
|
receiptSettings.GlobalReceiptProvisionSchemaI3D = oldSchema.I3D;
|
|
session.GetBL<ReceiptWebServiceBL>().UpdateReceiptSettings(receiptSettings, this.GetLoggedInUser().User);
|
|
|
|
// Assign customer schema
|
|
var customerAssignments = new List<ReceiptProvisionSchemaDetailsDTO>
|
|
{
|
|
new()
|
|
{
|
|
SchemaI3D = oldSchema.I3D,
|
|
CustomerAssignments = new List<ReceiptProvisionSchemaCustomerAssignmentDTO>
|
|
{
|
|
new () { CustomerNumber = 10000 }
|
|
}
|
|
}
|
|
};
|
|
session.GetBL<ReceiptProvisionSchemaWebServiceBL>().UpdateProvisionSchemaCustomerAssignments(customerAssignments, this.GetLoggedInUser());
|
|
}
|
|
|
|
private void UpdateExpiredSchemas()
|
|
{
|
|
using var session = new BLSession();
|
|
var expiredSchema = session.GetBL<ReceiptProvisionSchemaWebServiceBL>().GetAllProvisionSchemas().FirstOrDefault(f => f.ExpiresAt is not null);
|
|
|
|
// Update the expired schema
|
|
session.GetBL<ReceiptProvisionSchemaWebServiceBL>().UpdateProvisionSchemaWithNextSchema(expiredSchema.I3D, expiredSchema.NextSchemaI3D.Value);
|
|
}
|
|
|
|
private void VerifySettings(string name)
|
|
{
|
|
using var session = new BLSession();
|
|
|
|
// Verify global schema is updated now
|
|
var receiptSettings = session.GetBL<ReceiptWebServiceBL>().GetReceiptSettings(this.GetLoggedInUser().User);
|
|
this.Verifier.Verify($"{name}_GlobalSchemaI3D", receiptSettings.GlobalReceiptProvisionSchemaI3D);
|
|
|
|
// Verify customer assignments
|
|
var schemaDetails = session.GetBL<ReceiptProvisionSchemaWebServiceBL>().GetAllProvisionSchemaDetails();
|
|
this.Verifier.Verify($"{name}_SchemaDetails", schemaDetails);
|
|
}
|
|
|
|
private void CanDeleteNewSchema()
|
|
{
|
|
const int NextSchemaI3D = 1;
|
|
|
|
using var session = new BLSession();
|
|
session.GetBL<ReceiptProvisionSchemaWebServiceBL>().DeleteProvisionSchema(NextSchemaI3D, this.GetLoggedInUser());
|
|
}
|
|
} |