Files
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

315 lines
12 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System;
using System.Collections.Generic;
using System.Linq;
using Centron.BusinessLogic;
using Centron.BusinessLogic.Sales.Support;
using Centron.BusinessLogic.ToDoArea;
using Centron.BusinessLogic.WebServices.Sales.Support;
using Centron.BusinessLogic.WebServices.ToDoArea;
using Centron.BusinessLogic.WebServices.Warehousing;
using Centron.Data.Entities.Administration;
using Centron.Data.Entities.Administration.Logins;
using Centron.Data.Entities.Sales.Support;
using Centron.Data.Entities.Ticketing;
using Centron.Data.Entities.ToDoArea;
using Centron.Data.WebServices.Sales.Support;
using Centron.Interfaces;
using Centron.Interfaces.Sales.Helpdesks;
using Centron.Tests.EndToEnd.Infrastructure;
using CentronSoftware.Centron.WebServices.Entities.ToDoArea;
using CentronSoftware.Centron.WebServices.Entities.Warehousing;
using Xunit;
using Xunit.Abstractions;
namespace Centron.Tests.EndToEnd.Tests.Helpdesk
{
public class HelpdeskTests : EndToEndTest
{
private readonly int _referenceCustomerI3D = 10000;
private readonly int _referenceHelpdeskI3D = 10491;
private int _referenceArticleWorkItemI3D;
public HelpdeskTests(ITestOutputHelper testOutputHelper)
: base(testOutputHelper)
{
Verifier.Settings.IgnoreProperties<ToDoOverviewDTO>(f => f.ChangedVersion, f => f.CreatedVersion);
}
public override void Execute()
{
this.PrepareDatabase();
this.GetHelpdesksThroughPaging();
this.GetHelpdesk();
this.GetHelpdeskHistory();
this.NewTicket();
this.UpdateHelpdesk();
this.ClosedTicket();
this.SaveAction();
this.ShowOnlyOwn();
this.GetConnectionNumberGroups();
this.GetNextConnectionNumber();
this.UpdateHelpdeskConectionNumbers();
this.NewTicketWithChangedTicketDefaultContact();
}
private void PrepareDatabase()
{
using (var session = new BLSession())
{
this._referenceArticleWorkItemI3D = session.GetBL<ArticleWorkItemWebserviceBL>().SaveArticleWorkItem(new ArticleWorkItemDTO
{
Caption = "Charlotte de Witte ‘New Form’ III: Rave On Time"
}, this.GetLoggedInUser()).Data.I3D;
}
this.Sql($"UPDATE hlpdsk_requests SET ArticleWorkItemI3D = {this._referenceArticleWorkItemI3D} WHERE I3D = {this._referenceHelpdeskI3D}");
}
private void GetConnectionNumberGroups()
{
using (var session = new BLSession())
{
var groups = session.GetBL<HelpdeskWebServiceBL>().GetHelpdeskConnectionNumberGroups(new HelpdeskConnectionNumberGroupFilter());
this.Verifier.Verify("HelpdeskConnectionNumberGroups", groups);
}
}
private void GetNextConnectionNumber()
{
using (var session = new BLSession())
{
var number = session.GetBL<HelpdeskWebServiceBL>().GetNextHelpdeskConnectionNumber();
this.Verifier.Verify("NextHelpdeskConnectionNumber", number);
}
}
private void UpdateHelpdeskConectionNumbers()
{
HelpdeskDTO helpdesk = null;
using (var session = new BLSession())
{
helpdesk = (session.GetBL<HelpdeskWebServiceBL>().GetHelpdeskByI3D(this._referenceHelpdeskI3D, this.GetLoggedInUser())).Data;
session.GetBL<HelpdeskWebServiceBL>().UpdateConnectionNumberForHelpdesks(new List<int>()
{
this._referenceHelpdeskI3D
}, 2, this.GetLoggedInUser());
}
using (var session = new BLSession())
{
var helpdeskAfterUpdate = session.GetBL<HelpdeskWebServiceBL>().GetHelpdeskByI3D(this._referenceHelpdeskI3D, this.GetLoggedInUser());
Assert.True(helpdesk.ConnectionNumber != helpdeskAfterUpdate.Data.ConnectionNumber);
}
}
private void GetHelpdesksThroughPaging()
{
using (var session = new BLSession())
{
VerifyGetHelpdesksThroughPaging("Helpdesks", new HelpdeskFilter());
VerifyGetHelpdesksThroughPaging("HelpdesksByCustomer", new HelpdeskFilter
{
CustomerI3D = this._referenceCustomerI3D
});
VerifyGetHelpdesksThroughPaging("HelpdesksByCreatedBy", new HelpdeskFilter
{
CreatedDateStart = new DateTime(2017, 10, 22),
CreatedDateEnd = new DateTime(2017, 10, 23)
});
VerifyGetHelpdesksThroughPaging("HelpdesksByDueDate", new HelpdeskFilter
{
DueDateStart = new DateTime(2017, 10, 20),
DueDateEnd = new DateTime(2017, 10, 23)
});
VerifyGetHelpdesksThroughPaging("HelpdesksByOnlyOwn", new HelpdeskFilter
{
OnlyOwn = true
});
VerifyGetHelpdesksThroughPaging("HelpdesksByOnlyActive", new HelpdeskFilter
{
OnlyActive = true
});
VerifyGetHelpdesksThroughPaging("AllEditors", new HelpdeskFilter
{
AllEditorI3Ds = [22, 23],
});
void VerifyGetHelpdesksThroughPaging(string name, HelpdeskFilter filter)
{
var result = session.GetBL<HelpdeskSearchWebServiceBL>().GetHelpdesksThroughPaging(
filter,
HelpdeskSort.Number,
false,
1,
int.MaxValue,
this.GetLoggedInUser());
this.Verifier.Verify(name, result);
}
}
}
private void GetHelpdesk()
{
using (var session = new BLSession())
{
var ticket = session.GetBL<HelpdeskWebServiceBL>().GetTicket(this.GetLoggedInUser(), this._referenceHelpdeskI3D);
this.Verifier.Verify("Helpdesk", ticket);
}
}
private void GetHelpdeskHistory()
{
using (var session = new BLSession())
{
var helpdeskHistory = session.GetBL<HelpdeskWebServiceBL>().GetHelpdeskHistory(this._referenceHelpdeskI3D, this.GetLoggedInUser());
this.Verifier.Verify("HelpdeskHistory", helpdeskHistory);
}
}
private void NewTicket()
{
using (var session = new BLSession())
{
var newHelpdesk = session.GetBL<HelpdeskWebServiceBL>().GetNewTicketFromCustomer(this.GetLoggedInUser().User, this._referenceCustomerI3D);
this.Verifier.Verify("NewHelpdesk", newHelpdesk);
}
}
private void NewTicketWithChangedTicketDefaultContact()
{
//make Markus Fischer the default contact person for tickets
this.Sql("UPDATE AccountAddressContacts SET DefaultTicket = 1 WHERE I3D = 3");
var newHelpdesk = this.WithSession(f => f.GetBL<HelpdeskWebServiceBL>().GetNewTicketFromCustomer(this.GetLoggedInUser().User, this._referenceCustomerI3D));
this.Verifier.Verify("NewHelpdesk_with_TicketDefault_Contact", newHelpdesk);
}
private void ClosedTicket()
{
using (var session = new BLSession())
{
var newHelpdesk = session.GetBL<HelpdeskWebServiceBL>().CloseHelpdesk(this.GetLoggedInUser().User, this._referenceHelpdeskI3D);
this.Verifier.Verify("ClosedHelpdesk", newHelpdesk);
var todoEntries = session.GetBL<ToDoWebserviceBL>().SearchTodoList(
base.GetLoggedInUser().User,
ToDoSort.Number,
false,
new ToDoFilter()
{
ObjectKinds = new List<int> { (int)CentronObjectKindNumeric.HelpdeskClass },
ObjectI3Ds = new List<int>() { this._referenceHelpdeskI3D }
});
this.Verifier.Verify("ClosedHelpdesk_CheckTodoEntries", todoEntries.OrderBy(o => o.I3D).ToList());
}
}
private void UpdateHelpdesk()
{
using (var session = new BLSession())
{
var todoEntries = session.GetBL<ToDoWebserviceBL>().SearchTodoList(
base.GetLoggedInUser().User,
ToDoSort.Number,
false,
new ToDoFilter()
{
ObjectKinds = new List<int> { (int)CentronObjectKindNumeric.HelpdeskClass },
ObjectI3Ds = new List<int>() { this._referenceHelpdeskI3D }
});
this.Verifier.Verify("UpdatedHelpdesk_CheckTodoEntriesBeforeUpdate", todoEntries.OrderBy(o => o.I3D).ToList());
}
var oldHelpdesk = this.GetHelpdeskInternal();
oldHelpdesk.ShortDescription = "new short description";
oldHelpdesk.Description = "new description";
oldHelpdesk.InternalNote = "new internal note";
oldHelpdesk.CustomerI3D = this._referenceCustomerI3D;
oldHelpdesk.ArticleWorkItemI3D = this._referenceArticleWorkItemI3D;
using (var session = new BLSession())
session.GetBL<HelpdeskWebServiceBL>().SaveHelpdesk(oldHelpdesk, this.GetLoggedInUser());
var newHelpdesk = this.GetHelpdeskInternal();
this.Verifier.Verify("UpdatedHelpdesk", newHelpdesk);
using (var session = new BLSession())
{
var todoEntries = session.GetBL<ToDoWebserviceBL>().SearchTodoList(
base.GetLoggedInUser().User,
ToDoSort.Number,
false,
new ToDoFilter()
{
ObjectKinds = new List<int> { (int)CentronObjectKindNumeric.HelpdeskClass },
ObjectI3Ds = new List<int>() { newHelpdesk.I3D }
});
this.Verifier.Verify("UpdatedHelpdesk_CheckTodoEntries", todoEntries.OrderBy(o => o.I3D).ToList());
}
}
private HelpdeskDTO GetHelpdeskInternal()
{
using (var session = new BLSession())
return session.GetBL<HelpdeskWebServiceBL>().GetHelpdeskByI3D(this._referenceHelpdeskI3D, this.GetLoggedInUser()).Data;
}
private void SaveAction()
{
int actionI3D;
using (var session = new BLSession())
{
var result = session.GetBL<HelpdeskWebServiceBL>().SaveHelpdeskAction(this.GetLoggedInUser(),
"I am the caption",
"I am the description",
this._referenceHelpdeskI3D);
actionI3D = result.Data;
}
using (var session = new BLSession())
{
var helpdeskHistory = session.GetBL<HelpdeskWebServiceBL>().GetHelpdeskHistory(this._referenceHelpdeskI3D, this.GetLoggedInUser());
this.Verifier.Verify("HistoryEntry", helpdeskHistory.First(f => f.I3D == actionI3D));
}
}
private void ShowOnlyOwn()
{
using (var session = new BLSession())
{
var helpdeskBL = session.GetBL<HelpdeskBL>();
var result = helpdeskBL.GetLoggedInUserShowHelpdeskRight(this.GetLoggedInUser());
Assert.Equal(ShowHelpdeskRight.All, result);
var user2 = new LoggedInUser(new AppUser(), new Ticket
{
WebAccount = new WebAccount
{
I3D = 1
},
WebAccountI3D = 1
});
var resultWebAccount = helpdeskBL.GetLoggedInUserShowHelpdeskRight(user2);
Assert.Equal(ShowHelpdeskRight.All, resultWebAccount);
}
}
}
}