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
This commit is contained in:
Christoph Schwörer
2026-08-26 07:43:51 +02:00
parent 18edae75b6
commit f045b99a25
24664 changed files with 5846716 additions and 1 deletions
@@ -0,0 +1,493 @@
using Centron.BusinessLogic.Sales.Support;
using Centron.DAO;
using Centron.DAO.Mappings.Administration;
using Centron.DAO.Mappings.CustomerArea.Support;
using Centron.Data.Entities.Administration;
using Centron.Data.Entities.CustomerArea.Support;
using Centron.Data.Entities.EmployeeArea;
using Centron.Interfaces.BL;
using FluentNHibernate.Cfg;
using FluentNHibernate.Cfg.Db;
using JetBrains.Annotations;
using NHibernate;
using NHibernate.Tool.hbm2ddl;
namespace Centron.Tests.BL.Sales.Support;
[TestSubject(typeof(HelpdeskTimeRecordingBL))]
public class HelpdeskTimeRecordingBLTest
{
[Fact]
public void FreeRecordingCanBeStarted()
{
var session = CreateSession();
var daoSession = new DAOSession(session);
var helpdeskTimeRecordingBl = new HelpdeskTimeRecordingBL(daoSession);
var currentUser = new AppUser { Employee = new EmployeeCompact {I3D = 5} };
var result = helpdeskTimeRecordingBl.StartRecording(0, currentUser, false, false);
Assert.Equal(ResultStatus.Success, result.Status);
Assert.Equal(5, result.Data.EmployeeI3D);
Assert.Equal(0, result.Data.HelpdeskI3D);
var savedEntities = session.Query<HelpdeskTimeRecording>().ToList();
Assert.Single(savedEntities);
var savedEntity = savedEntities.First();
Assert.Equal(5, savedEntity.EmployeeI3D);
Assert.Equal(0, savedEntity.HelpdeskI3D);
Assert.Equal(RecordingKind.Start, savedEntity.Kind);
Assert.InRange(savedEntity.Date, DateTime.Now.AddMinutes(-1), DateTime.Now.AddMinutes(1));
}
[Fact]
public void FreeRecordingCanNotBePausedForOtherUsers()
{
var session = CreateSession();
var recording = new HelpdeskTimeRecording {
Guid = "GUID-123",
EmployeeI3D = 3,
HelpdeskI3D = 0,
Kind = RecordingKind.Start,
Date = DateTime.Now
};
session.Save(recording);
session.Flush();
var daoSession = new DAOSession(session);
var helpdeskTimeRecordingBl = new HelpdeskTimeRecordingBL(daoSession);
var currentUser = new AppUser { Employee = new EmployeeCompact {I3D = 5} };
var result = helpdeskTimeRecordingBl.PauseRecording("GUID-123", 0, currentUser, false);
Assert.Equal(ResultStatus.Error, result.Status);
var savedEntities = session.Query<HelpdeskTimeRecording>().ToList();
Assert.Single(savedEntities);
}
[Fact]
public void FreeRecordingCanNotBeResumedForOtherUsers()
{
var session = CreateSession();
var recording1 = new HelpdeskTimeRecording {
Guid = "GUID-123",
EmployeeI3D = 3,
HelpdeskI3D = 0,
Kind = RecordingKind.Start,
Date = DateTime.Now.AddMinutes(-5),
};
var recording2 = new HelpdeskTimeRecording {
Guid = "GUID-123",
EmployeeI3D = 3,
HelpdeskI3D = 0,
Kind = RecordingKind.Pause,
Date = DateTime.Now,
};
session.Save(recording1);
session.Save(recording2);
session.Flush();
var daoSession = new DAOSession(session);
var helpdeskTimeRecordingBl = new HelpdeskTimeRecordingBL(daoSession);
var currentUser = new AppUser { Employee = new EmployeeCompact {I3D = 5} };
var result = helpdeskTimeRecordingBl.ResumeRecording("GUID-123", 0, currentUser, false);
Assert.Equal(ResultStatus.Error, result.Status);
var savedEntities = session.Query<HelpdeskTimeRecording>().ToList();
Assert.Equal(2, savedEntities.Count);
}
[Fact]
public void FreeRecordingCanNotBeStoppedForOtherUsers()
{
var session = CreateSession();
var recording = new HelpdeskTimeRecording {
Guid = "GUID-123",
EmployeeI3D = 3,
HelpdeskI3D = 0,
Kind = RecordingKind.Start,
Date = DateTime.Now
};
session.Save(recording);
session.Flush();
var daoSession = new DAOSession(session);
var helpdeskTimeRecordingBl = new HelpdeskTimeRecordingBL(daoSession);
var currentUser = new AppUser { Employee = new EmployeeCompact {I3D = 5} };
var result = helpdeskTimeRecordingBl.StopRecording("GUID-123", 0, currentUser, false);
Assert.Equal(ResultStatus.Error, result.Status);
var savedEntities = session.Query<HelpdeskTimeRecording>().ToList();
Assert.Single(savedEntities);
}
[Fact]
public void RecordingCanBeStartedAtSpecificDate()
{
var session = CreateSession();
var daoSession = new DAOSession(session);
var helpdeskTimeRecordingBl = new HelpdeskTimeRecordingBL(daoSession);
var date = new DateTime(2020, 1, 1);
var currentUser = new AppUser { Employee = new EmployeeCompact {I3D = 5} };
var result = helpdeskTimeRecordingBl.StartRecording(0, currentUser, false, false, date);
Assert.Equal(ResultStatus.Success, result.Status);
Assert.Equal(5, result.Data.EmployeeI3D);
Assert.Equal(0, result.Data.HelpdeskI3D);
var savedEntities = session.Query<HelpdeskTimeRecording>().ToList();
Assert.Single(savedEntities);
var savedEntity = savedEntities.First();
Assert.Equal(5, savedEntity.EmployeeI3D);
Assert.Equal(0, savedEntity.HelpdeskI3D);
Assert.Equal(RecordingKind.Start, savedEntity.Kind);
Assert.Equal(savedEntity.Date, date);
}
[Fact]
public void FreeRecordingCanBeStartedPausedAndResumed()
{
var session = CreateSession();
var daoSession = new DAOSession(session);
var helpdeskTimeRecordingBl = new HelpdeskTimeRecordingBL(daoSession);
var currentUser = new AppUser { Employee = new EmployeeCompact {I3D = 5} };
var recording = helpdeskTimeRecordingBl.StartRecording(0, currentUser, false, false);
helpdeskTimeRecordingBl.PauseRecording(recording.Data.Guid, 0, currentUser);
var resultSecondPause = helpdeskTimeRecordingBl.PauseRecording(recording.Data.Guid, 0, currentUser);
helpdeskTimeRecordingBl.ResumeRecording(recording.Data.Guid, 0, currentUser);
var savedEntities = session.Query<HelpdeskTimeRecording>().ToList();
Assert.Equal(3, savedEntities.Count);
var savedEntity1 = savedEntities[0];
var savedEntity2 = savedEntities[1];
var savedEntity3 = savedEntities[2];
Assert.Equal(5, savedEntity1.EmployeeI3D);
Assert.Equal(5, savedEntity2.EmployeeI3D);
Assert.Equal(5, savedEntity3.EmployeeI3D);
Assert.Equal(recording.Data.Guid, savedEntity1.Guid);
Assert.Equal(recording.Data.Guid, savedEntity2.Guid);
Assert.Equal(recording.Data.Guid, savedEntity3.Guid);
Assert.Equal(RecordingKind.Start, savedEntity1.Kind);
Assert.Equal(RecordingKind.Pause, savedEntity2.Kind);
Assert.Equal(RecordingKind.Resume, savedEntity3.Kind);
}
[Fact]
public void CommentsToRecordingsCanBeAdded()
{
var date = new DateTime(2020, 1, 1);
var session = CreateSession();
var recording1 = new HelpdeskTimeRecording {
Guid = "GUID-123",
EmployeeI3D = 5,
HelpdeskI3D = 0,
Kind = RecordingKind.Start,
Date = date
};
var recording2 = new HelpdeskTimeRecording {
Guid = "GUID-123",
EmployeeI3D = 5,
HelpdeskI3D = 0,
Kind = RecordingKind.Start,
Date = date
};
session.Save(recording1);
session.Save(recording2);
session.Flush();
var daoSession = new DAOSession(session);
var helpdeskTimeRecordingBl = new HelpdeskTimeRecordingBL(daoSession);
var currentUser = new AppUser { Employee = new EmployeeCompact {I3D = 5} };
var result = helpdeskTimeRecordingBl.SaveTimeRecordingComment("GUID-123", 0, currentUser, "some comment");
Assert.Equal(ResultStatus.Success, result.Status);
var savedEntities = session.Query<HelpdeskTimeRecording>().ToList();
Assert.Equal(2, savedEntities.Count);
var savedEntity1 = savedEntities[0];
var savedEntity2 = savedEntities[1];
Assert.Equal(5, savedEntity1.EmployeeI3D);
Assert.Equal(5, savedEntity2.EmployeeI3D);
Assert.Equal(0, savedEntity1.HelpdeskI3D);
Assert.Equal(0, savedEntity2.HelpdeskI3D);
Assert.Equal(RecordingKind.Start, savedEntity1.Kind);
Assert.Equal(RecordingKind.Start, savedEntity2.Kind);
Assert.Equal(date, savedEntity1.Date);
Assert.Equal(date, savedEntity2.Date);
Assert.Equal("some comment", savedEntity1.Comment);
Assert.Equal("some comment", savedEntity2.Comment);
}
[Fact]
public void LastClosedCanBeSaved()
{
var date = new DateTime(2020, 1, 1);
var dateLastClosed = new DateTime(2022, 1, 1);
var helpdeskId = 1;
var session = CreateSession();
var recording1 = new HelpdeskTimeRecording {
Guid = "GUID-123",
EmployeeI3D = 5,
HelpdeskI3D = helpdeskId,
Kind = RecordingKind.Start,
Date = date
};
var recording2 = new HelpdeskTimeRecording {
Guid = "GUID-123",
EmployeeI3D = 5,
HelpdeskI3D = helpdeskId,
Kind = RecordingKind.Start,
Date = date
};
session.Save(recording1);
session.Save(recording2);
session.Flush();
var daoSession = new DAOSession(session);
var helpdeskTimeRecordingBl = new HelpdeskTimeRecordingBL(daoSession);
var currentUser = new AppUser { Employee = new EmployeeCompact {I3D = 5} };
var result = helpdeskTimeRecordingBl.SaveTimeRecordingLastClosed(helpdeskId, currentUser, dateLastClosed);
Assert.Equal(ResultStatus.Success, result.Status);
var savedEntities = session.Query<HelpdeskTimeRecording>().ToList();
Assert.Equal(2, savedEntities.Count);
var savedEntity1 = savedEntities[0];
var savedEntity2 = savedEntities[1];
Assert.Equal(5, savedEntity1.EmployeeI3D);
Assert.Equal(5, savedEntity2.EmployeeI3D);
Assert.Equal(helpdeskId, savedEntity1.HelpdeskI3D);
Assert.Equal(helpdeskId, savedEntity2.HelpdeskI3D);
Assert.Equal(RecordingKind.Start, savedEntity1.Kind);
Assert.Equal(RecordingKind.Start, savedEntity2.Kind);
Assert.Equal(date, savedEntity1.Date);
Assert.Equal(date, savedEntity2.Date);
Assert.Equal(dateLastClosed, savedEntity1.LastClosed);
Assert.Equal(dateLastClosed, savedEntity2.LastClosed);
}
[Fact]
public void RecordingCanBePaused()
{
var date = new DateTime(2020, 1, 1);
var session = CreateSession();
var recording = new HelpdeskTimeRecording {
Guid = "GUID-123",
EmployeeI3D = 5,
HelpdeskI3D = 1,
Kind = RecordingKind.Start,
Date = date
};
session.Save(recording);
session.Flush();
var daoSession = new DAOSession(session);
var helpdeskTimeRecordingBl = new HelpdeskTimeRecordingBL(daoSession);
var currentUser = new AppUser { Employee = new EmployeeCompact {I3D = 5} };
var result = helpdeskTimeRecordingBl.PauseRecording("GUID-123", 1, currentUser);
Assert.Equal(ResultStatus.Success, result.Status);
var savedEntities = session.Query<HelpdeskTimeRecording>().ToList();
Assert.Equal(2, savedEntities.Count);
var savedEntity1 = savedEntities[0];
var savedEntity2 = savedEntities[1];
Assert.Equal(5, savedEntity1.EmployeeI3D);
Assert.Equal(5, savedEntity2.EmployeeI3D);
Assert.Equal(1, savedEntity1.HelpdeskI3D);
Assert.Equal(1, savedEntity2.HelpdeskI3D);
Assert.Equal(RecordingKind.Start, savedEntity1.Kind);
Assert.Equal(RecordingKind.Pause, savedEntity2.Kind);
}
[Fact]
public void RecordingCanBeResumed()
{
var date = new DateTime(2020, 1, 1);
var session = CreateSession();
var recording1 = new HelpdeskTimeRecording {
Guid = "GUID-123",
EmployeeI3D = 5,
HelpdeskI3D = 1,
Kind = RecordingKind.Start,
Date = date.AddHours(-1)
};
var recording2 = new HelpdeskTimeRecording {
Guid = "GUID-123",
EmployeeI3D = 5,
HelpdeskI3D = 1,
Kind = RecordingKind.Pause,
Date = date
};
session.Save(recording1);
session.Save(recording2);
session.Flush();
var daoSession = new DAOSession(session);
var helpdeskTimeRecordingBl = new HelpdeskTimeRecordingBL(daoSession);
var currentUser = new AppUser { Employee = new EmployeeCompact {I3D = 5} };
var result = helpdeskTimeRecordingBl.ResumeRecording("GUID-123", 1, currentUser);
Assert.Equal(ResultStatus.Success, result.Status);
var savedEntities = session.Query<HelpdeskTimeRecording>().ToList();
Assert.Equal(3, savedEntities.Count);
var savedEntity1 = savedEntities[0];
var savedEntity2 = savedEntities[1];
var savedEntity3 = savedEntities[2];
Assert.Equal(5, savedEntity1.EmployeeI3D);
Assert.Equal(5, savedEntity2.EmployeeI3D);
Assert.Equal(5, savedEntity3.EmployeeI3D);
Assert.Equal(1, savedEntity1.HelpdeskI3D);
Assert.Equal(1, savedEntity2.HelpdeskI3D);
Assert.Equal(1, savedEntity3.HelpdeskI3D);
Assert.Equal(RecordingKind.Start, savedEntity1.Kind);
Assert.Equal(RecordingKind.Pause, savedEntity2.Kind);
Assert.Equal(RecordingKind.Resume, savedEntity3.Kind);
}
[Fact]
public void RecordingCanBeStopped()
{
var date = new DateTime(2020, 1, 1);
var session = CreateSession();
var recording1 = new HelpdeskTimeRecording {
Guid = "GUID-123",
EmployeeI3D = 5,
HelpdeskI3D = 1,
Kind = RecordingKind.Start,
Date = date.AddHours(-1)
};
var recording2 = new HelpdeskTimeRecording {
Guid = "GUID-123",
EmployeeI3D = 5,
HelpdeskI3D = 1,
Kind = RecordingKind.Pause,
Date = date
};
session.Save(recording1);
session.Save(recording2);
session.Flush();
var daoSession = new DAOSession(session);
var helpdeskTimeRecordingBl = new HelpdeskTimeRecordingBL(daoSession);
var currentUser = new AppUser { Employee = new EmployeeCompact {I3D = 5} };
var result = helpdeskTimeRecordingBl.StopRecording("GUID-123", 0, currentUser);
Assert.Equal(ResultStatus.Success, result.Status);
var savedEntities = session.Query<HelpdeskTimeRecording>().ToList();
Assert.Empty(savedEntities);
}
[Fact]
public void RecordingCanBeCleared()
{
var date = new DateTime(2020, 1, 1);
var session = CreateSession();
var recording1 = new HelpdeskTimeRecording {
Guid = "GUID-123",
EmployeeI3D = 5,
HelpdeskI3D = 1,
Kind = RecordingKind.Start,
Date = date.AddHours(-1)
};
var recording2 = new HelpdeskTimeRecording {
Guid = "GUID-123",
EmployeeI3D = 5,
HelpdeskI3D = 1,
Kind = RecordingKind.Pause,
Date = date
};
session.Save(recording1);
session.Save(recording2);
session.Flush();
var daoSession = new DAOSession(session);
var helpdeskTimeRecordingBl = new HelpdeskTimeRecordingBL(daoSession);
var currentUser = new AppUser { Employee = new EmployeeCompact {I3D = 5} };
var result = helpdeskTimeRecordingBl.ClearRecording("GUID-123", 0, currentUser);
Assert.Equal(ResultStatus.Success, result.Status);
var savedEntities = session.Query<HelpdeskTimeRecording>().ToList();
Assert.Empty(savedEntities);
}
[Fact]
public void RecordingsCanBeCleared()
{
var date = new DateTime(2020, 1, 1);
var session = CreateSession();
var recording1 = new HelpdeskTimeRecording {
Guid = "GUID-123",
EmployeeI3D = 1,
HelpdeskI3D = 1,
Kind = RecordingKind.Start,
Date = date.AddHours(-1)
};
var recording2 = new HelpdeskTimeRecording {
Guid = "GUID-345",
EmployeeI3D = 5,
HelpdeskI3D = 2,
Kind = RecordingKind.Start,
Date = date
};
var recording3 = new HelpdeskTimeRecording {
Guid = "GUID-345",
EmployeeI3D = 5,
HelpdeskI3D = 2,
Kind = RecordingKind.Pause,
Date = date
};
session.Save(recording1);
session.Save(recording2);
session.Save(recording3);
session.Flush();
var daoSession = new DAOSession(session);
var helpdeskTimeRecordingBl = new HelpdeskTimeRecordingBL(daoSession);
var currentUser = new AppUser { Employee = new EmployeeCompact {I3D = 5} };
var result = helpdeskTimeRecordingBl.ClearRecordings([new RecordingInformation { HelpdeskI3D = 2, EmployeeI3D = 1}], currentUser);
Assert.Equal(ResultStatus.Success, result.Status);
var savedEntities = session.Query<HelpdeskTimeRecording>().ToList();
Assert.Single(savedEntities);
Assert.Equal(recording1, savedEntities.First());
}
public ISession CreateSession()
{
var fluentConfiguration = Fluently.Configure()
.Database(SQLiteConfiguration.Standard.InMemory)
.Mappings(m => m.FluentMappings.Add<HelpdeskTimeRecordingMaps>())
.Mappings(m => m.FluentMappings.Add<StopwatchNotificationMaps>())
.Mappings(m => m.FluentMappings.Add<AppGroupRightAssignmentMaps>());
ISessionFactory sessionFactory = fluentConfiguration.BuildSessionFactory();
ISession session = sessionFactory.OpenSession();
new SchemaExport(fluentConfiguration.BuildConfiguration()).Execute(true, true, false, session.Connection, Console.Out);
return session;
}
}