using Centron.BusinessLogic; using Centron.BusinessLogic.Services.DataQuality; using Centron.Interfaces.BL; using Centron.Tests.EndToEnd.Infrastructure; using Centron.Tests.EndToEnd.Infrastructure.Verifier; using Xunit; using Xunit.Abstractions; namespace Centron.Tests.EndToEnd.Tests.Services { public class DirectoryCheckTest : EndToEndTest { public DirectoryCheckTest(ITestOutputHelper testOutputHelper) : base(testOutputHelper) { } public override void Execute() { RunDirectoryCheck(); } private void RunDirectoryCheck() { using (var session = new BLSession()) { this.Sql("UPDATE Kunden SET MailDirI3D = NULL WHERE I3D = 10007"); var checkBL = session.GetBL(); var resultData = checkBL.ExecuteDirectoryCheck(this.GetLoggedInUser()).ThrowIfError(); this.Verifier.Verify("DirectoryCheck_result", resultData); this.Verifier.VerifySql("Customer_Verify_directories", _sqlCustomerVerifyer); this.Verifier.VerifySql("CustomerReceipts_Verify_directories", _sqlCustomerReceiptsVerifyer); this.Verifier.VerifySql("Employee_Verifyer_directories", _sqlEmployeeVerifyer); this.Verifier.VerifySql("Article_Verifyer_directories", _sqlArticleVerifyer); this.Verifier.VerifySql("Supplier_Verify_directories", _sqlSupplierVerifyer); this.Verifier.VerifySql("SupplierReceipts_Verify_directories", _sqlSupplierReceiptsVerifyer); } } private const string _sqlCustomerVerifyer = @"SELECT kd.I3D, mailDir.Name, CASE WHEN kd.RootDirI3D = ownerCustomerDir.I3D THEN 1 ELSE 0 END AS SameRoot, ownerCustomerDir.Name AS CustomerDirName, CASE WHEN setting.Wert = ownerCustomerRootDir.I3D THEN 1 ELSE 0 END AS SameCustomerRoot FROM Kunden kd LEFT OUTER JOIN Directorys mailDir ON mailDir.I3D = kd.MailDirI3D LEFT OUTER JOIN Directorys ownerCustomerDir ON ownerCustomerDir.I3D = mailDir.OwnerI3D LEFT OUTER JOIN Directorys ownerCustomerRootDir ON ownerCustomerRootDir.I3D = ownerCustomerDir.OwnerI3D LEFT OUTER JOIN Stammdat setting ON setting.I3D = 430 ORDER BY kd.I3D ASC"; private const string _sqlCustomerReceiptsVerifyer = @"SELECT rech.I3D, dir.Name, ownerDir.Name AS OwnerDirName, customerDir.Name AS CustomerDirName FROM RechKopf rech LEFT OUTER JOIN Directorys dir ON dir.I3D = rech.DocDirI3D LEFT OUTER JOIN Directorys ownerDir ON ownerDir.I3D = dir.OwnerI3D LEFT OUTER JOIN Directorys customerDir ON customerDir.I3D = ownerDir.OwnerI3D ORDER BY rech.I3D ASC"; private const string _sqlEmployeeVerifyer = @"SELECT obj.I3D, dir.Name, ownerDir.Name AS OwnerDirName FROM Personal obj LEFT OUTER JOIN Directorys dir ON dir.I3D = obj.RootDirI3D LEFT OUTER JOIN Directorys ownerDir ON ownerDir.I3D = dir.OwnerI3D ORDER BY obj.I3D ASC"; private const string _sqlArticleVerifyer = @"SELECT obj.I3D, dir.Name, ownerDir.Name AS OwnerDirName FROM ARTIK obj LEFT OUTER JOIN Directorys dir ON dir.I3D = obj.DocI3D LEFT OUTER JOIN Directorys ownerDir ON ownerDir.I3D = dir.OwnerI3D ORDER BY obj.I3D ASC"; private const string _sqlSupplierReceiptsVerifyer = @"SELECT obj.I3D, dir.Name, ownerDir.Name AS OwnerDirName, supplierDir.Name AS SupplierDirName FROM KalkKopf obj LEFT OUTER JOIN Directorys dir ON dir.I3D = obj.DocDirI3D LEFT OUTER JOIN Directorys ownerDir ON ownerDir.I3D = dir.OwnerI3D LEFT OUTER JOIN Directorys supplierDir ON supplierDir.I3D = ownerDir.OwnerI3D WHERE obj.AktuelleVersion = 1 ORDER BY obj.I3D ASC"; private const string _sqlSupplierVerifyer = @"SELECT kd.I3D, bestDirI3D.Name, CASE WHEN kd.RootDirI3D = ownerSupplierDir.I3D THEN 1 ELSE 0 END AS SameRoot, ownerSupplierDir.Name AS SupplierDirName, CASE WHEN setting.Wert = ownerSupplierRootDir.I3D THEN 1 ELSE 0 END AS SameSupplierRoot FROM Kreditor kd LEFT OUTER JOIN Directorys bestDirI3D ON bestDirI3D.I3D = kd.BestDirI3D LEFT OUTER JOIN Directorys ownerSupplierDir ON ownerSupplierDir.I3D = bestDirI3D.OwnerI3D LEFT OUTER JOIN Directorys ownerSupplierRootDir ON ownerSupplierRootDir.I3D = ownerSupplierDir.OwnerI3D LEFT OUTER JOIN Stammdat setting ON setting.I3D = 459 ORDER BY kd.I3D ASC"; } }