using Centron.BusinessLogic; using Centron.BusinessLogic.EmployeeArea; using Centron.BusinessLogic.WebServices.Monitoring.NAble.Asset; using Centron.BusinessLogic.WebServices.Warehousing.ArticleManagement; using Centron.Data.Entities.Administration.Logins; using Centron.Interfaces.BL; using Centron.Tests.EndToEnd.Infrastructure; using CentronSoftware.Centron.WebServices.Entities.Warehousing.ArticleManagement; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Xunit.Abstractions; namespace Centron.Tests.EndToEnd.Tests.PLM { public class PlmTest : EndToEndTest { public PlmTest(ITestOutputHelper testOutputHelper) : base(testOutputHelper) { } public override void Execute() { var productFamilyGroupsBefore = this.GetProductFamilyGroups("GetProductFamilyGroups_Before"); this.SaveProductFamilyGroup(productFamilyGroupsBefore.FirstOrDefault()); this.GetProductFamilyGroups("GetProductFamilyGroups_After"); var productFamilies = this.GetProductFamilies("GetProductFamilies_Before"); this.SaveProductFamily(productFamilies.FirstOrDefault()); this.GetProductFamilies("GetProductFamilies_After"); foreach (var item in productFamilies) this.ImportReceiptLicenses(item.I3D); var productLifecycleInfosIvoice = this.GetProductLifecycleInformations("GetProductLifecycleInformations_Before_Invoice", ProductLifecycleInformationSource.Invoice); this.UpdateProductLifecycleInfo(productLifecycleInfosIvoice.First(), "Invoice"); this.ProductLifecycleInformationsDataImport(productLifecycleInfosIvoice.First(), "DataImport"); this.GetProductLifecycleInformations("GetProductLifecycleInformations_After_Invoice", ProductLifecycleInformationSource.Invoice); } private List GetProductFamilyGroups(string testName) { using (var session = new BLSession()) { var result = session.GetBL().GetAllProductFamilyGroups(); this.Verifier.Verify(testName, result); return (List)result.Data; } } private void SaveProductFamilyGroup(ProductFamilyGroupDTO productFamilyGroup) { productFamilyGroup.LifetimeMonths = 24; productFamilyGroup.Caption = "Microsoft"; productFamilyGroup.RememberDays = 30; using (var session = new BLSession()) { var result = session.GetBL().SaveAllProductFamilyGroups(new List() { productFamilyGroup }); this.Verifier.Verify("SaveProductFamilyGroup", result); } } private List GetProductFamilies(string testName) { using (var session = new BLSession()) { var result = session.GetBL().GetAllProductFamilies(); this.Verifier.Verify(testName, result); return (List)result.Data; } } private void SaveProductFamily(ProductFamilyDTO productFamily) { productFamily.LifetimeMonths = 24; productFamily.Description = "Office 2021"; productFamily.RememberDays = 30; using (var session = new BLSession()) { var result = session.GetBL().SaveAllProductFamilies(new List() { productFamily }); this.Verifier.Verify("SaveProductFamily", result); } } private void ImportReceiptLicenses(int productFamilyI3D) { using (var session = new BLSession()) { var result = session.GetBL().ImportProductLifecycleInformations(productFamilyI3D, ProductLifecycleInformationSource.Invoice, this.GetLoggedInUser().User).ThrowIfError(); this.Verifier.Verify($"ImportReceiptLicenses_{productFamilyI3D}", result.ToList()); } } private List GetProductLifecycleInformations(string testName, ProductLifecycleInformationSource source) { using (var session = new BLSession()) { var result = session.GetBL().GetProductLifecycleInformations(new GetProductLifecycleInformationsFilter() { Source = (int)source }, this.GetLoggedInUser()); this.Verifier.Verify(testName, result); return (List)result.Data; } } private void UpdateProductLifecycleInfo(ProductLifecycleInformationDTO productLifecycleInfo, string name) { productLifecycleInfo.StartDate = DateTime.Now; productLifecycleInfo.EndDate = DateTime.Now.AddMonths(12); productLifecycleInfo.IsDeactivated = true; using (var session = new BLSession()) { var result = session.GetBL() .SaveProductLifecycleInformations(new List() { productLifecycleInfo }, this.GetLoggedInUser().User); this.Verifier.Verify($"UpdateProductLifecycleInfo_{name}", result); } } private void ProductLifecycleInformationsDataImport(ProductLifecycleInformationDTO productLifecycleInfo, string name) { productLifecycleInfo.StartDate = DateTime.Now; productLifecycleInfo.EndDate = DateTime.Now.AddMonths(12); productLifecycleInfo.IsFromDataImport = true; using var session = new BLSession(); var result = session.GetBL() .SaveProductLifecycleInformations(new List() { productLifecycleInfo }, this.GetLoggedInUser().User); this.Verifier.Verify($"UpdateProductLifecycleInfo_{name}", result); } } }