Files
Masterarbeit/QuellCode/CentronERP/tests/Centron.Tests.EndToEnd/Tests/Serialization/SerializationTests.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

116 lines
6.9 KiB
C#

using Centron.BusinessLogic;
using Centron.BusinessLogic.WebServices.Administration.FileManagement;
using Centron.BusinessLogic.WebServices.Sales.Receipts;
using Centron.BusinessLogic.WebServices.Sales.Support;
using Centron.Data.WebServices.Administration.FileManagement;
using Centron.Interfaces.BL;
using Centron.Tests.EndToEnd.Infrastructure;
using CentronSoftware.Centron.WebServices.Connections.Serializer;
using System;
using System.IO;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Xunit.Abstractions;
namespace Centron.Tests.EndToEnd.Tests.Serialization
{
public class SerializationTests : EndToEndTest
{
private int _documentI3D;
public SerializationTests(ITestOutputHelper testOutputHelper) : base(testOutputHelper)
{
this.Verifier.Settings.IgnoreProperties<DocumentDTO>(f => f.ChangedDate, f => f.ChangedVersion, f => f.CreatedDate, f => f.CreatedVersion);
}
public override void Execute()
{
this.PrepareDatabase();
// this should not have any polymorphism and is a simple test
using (var session = new BLSession())
{
var helpdesk = session.GetBL<HelpdeskWebServiceBL>()
.GetHelpdeskByI3D(10491, this.GetLoggedInUser())
.ThrowIfError();
this.Test(helpdesk, "Helpdesk", new CentronJsonSerializer()).Wait();
}
// here we're testing for the correct encoding for byte arrays
using(var session = new BLSession())
{
var document = session.GetBL<DocumentWebServiceBL>()
.GetDocument(this.GetLoggedInUser(), this._documentI3D)
.ThrowIfError();
// we need to manually reset these values, so they don't get serialized at all
document.ChangedDate = new DateTime(2020, 1, 1);
document.ChangedVersion = "1";
document.CreatedDate = new DateTime(2020, 1, 1);
document.CreatedVersion = "2";
this.Test(document, "Document", new CentronJsonSerializer()).Wait();
}
using (var session = new BLSession())
{
var receipt = session.GetBL<ReceiptWebServiceBL>()
.GetReceiptByI3D(51, Interfaces.CentronObjectKindNumeric.InvoiceClass, this.GetLoggedInUser())
.ThrowIfError();
this.Test(receipt, "Invoice", new CentronJsonSerializer()).Wait();
}
}
public void PrepareDatabase()
{
// there are no documents here, so we create one
using(var session = new BLSession())
{
var text = @"
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam elit diam, tempus eget molestie eget, iaculis ut velit. Vivamus efficitur blandit arcu eget varius. Vivamus sed ornare lorem. Integer condimentum libero in sapien interdum, vel faucibus felis bibendum. In sit amet metus at arcu dapibus ultrices. Pellentesque et dictum ex. Suspendisse fringilla lorem eget tempor facilisis. Quisque volutpat ullamcorper quam vel finibus. Morbi enim ligula, efficitur vel lacus ac, vehicula varius justo. Mauris eros felis, feugiat ut vestibulum nec, tempus eu felis. Aenean faucibus, augue sed pretium consequat, dolor nisl gravida massa, quis viverra augue libero non leo. Vivamus id porttitor lectus. Aliquam ut orci in est auctor tincidunt nec sed purus. Cras ex nisi, sollicitudin ac augue in, pulvinar aliquam enim.
Proin lacus eros, consequat id porttitor sit amet, congue vel ante. Nam id est quis urna dignissim mollis. Nam tempor nec dui ut ultricies. Proin mollis ornare faucibus. Sed at justo ipsum. Ut placerat orci bibendum, rhoncus est eget, varius nunc. Maecenas hendrerit metus libero, eget tempor eros consectetur at. Mauris finibus facilisis ultrices. Phasellus ut ligula efficitur, convallis orci eget, ornare est. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Aliquam porttitor ex non lectus cursus, sit amet cursus orci venenatis. Duis condimentum nisl quam, vel gravida nisi malesuada vitae.
Proin est massa, posuere suscipit semper at, ullamcorper in nunc. Integer ultricies fermentum lacus sit amet finibus. Praesent ultrices, nisl ut sagittis blandit, felis magna eleifend lorem, vitae egestas ligula odio in tortor. Nam vel consequat nunc, vitae porta ante. In ac lectus accumsan, pellentesque libero vehicula, rhoncus neque. Sed nec nunc ullamcorper purus dignissim varius. Aenean pretium augue nec porttitor finibus. Aliquam porttitor sit amet purus euismod gravida. Cras porta eu enim at dapibus. Donec semper ultrices magna eget mollis. Duis dolor urna, posuere ac justo vitae, pretium consectetur quam. Aliquam sit amet turpis elementum, accumsan massa sed, volutpat tellus.
Nulla gravida lacus a fringilla sollicitudin. In pharetra fringilla tortor nec dignissim. Phasellus non mauris consectetur dolor rutrum laoreet quis vitae risus. Ut volutpat tempor diam at molestie. Proin congue erat elementum, fringilla turpis sed, tincidunt massa. Sed ullamcorper est erat, ac auctor lorem aliquam et. Donec eget fringilla arcu. Donec egestas, est eu viverra elementum, justo felis tincidunt mauris, ut aliquam ligula sem ut lacus. Suspendisse tempor neque non ante viverra lacinia.
Quisque vestibulum lobortis dapibus. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aenean rhoncus lacus et est vestibulum placerat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Praesent at placerat tortor, in hendrerit augue. Sed egestas metus velit, mattis semper nulla finibus in. Vestibulum eget nisl ut diam mollis interdum. Proin id elit dictum justo elementum laoreet.
";
text = text.Replace("\r", "");
var document = session.GetBL<DocumentWebServiceBL>()
.AddDocumentToDirectory(this.GetLoggedInUser(),
2,// customer main directory
Encoding.UTF8.GetBytes(text),
"iamafile.txt");
this._documentI3D = document.I3D;
}
}
private async Task Test<T>(T instance, string name, ISerializer serializer)
{
this.Verifier.Verify(name, instance);
using var memestream = new MemoryStream();
await serializer.Serialize(typeof(T), instance, memestream, CancellationToken.None);
memestream.Position = 0;
using var streamReader = new StreamReader(memestream);
this.Verifier.Verify(name + "RawJson", streamReader.ReadToEnd());
memestream.Position = 0;
var copiedInstance = (T)await serializer.Deserialize(typeof(T), memestream, CancellationToken.None);
// we intenionally compare it to the one before
this.Verifier.Verify(name, copiedInstance);
}
}
}