using Centron.BusinessLogic; using Centron.BusinessLogic.EmployeeArea; using Centron.BusinessLogic.TaskManager; using Centron.BusinessLogic.WebServices.TaskManager; using Centron.Data.Entities.TaskManager; using Centron.Data.WebServices.Sales.Customers; using Centron.Data.WebServices.TaskManager; using Centron.Data.WebServices.TaskManager.Actions; using Centron.Data.WebServices.TaskManager.Recurrence; using Centron.Interfaces.CustomerArea; using Centron.Tests.EndToEnd.Infrastructure; using System; using System.Collections.Generic; using System.Linq; using Xunit.Abstractions; namespace Centron.Tests.EndToEnd.Tests.TaskReportAction { public class TaskReportActionTest : EndToEndTest { public const int CustomerI3D = 10022; public TaskReportActionTest(ITestOutputHelper testOutputHelper) : base(testOutputHelper) { // We have a bit of flakiness with this property, if the code is VERY FAST, it will be the same value as CreatedDate and ChangedDate // But if the code is a bit slower, it will get a different value, and the Verifier will treat it as an error // It's annoying, and I don't wanna deal with this issue right now, so ignore the property for now this.Verifier.Settings.IgnoreProperty(f => f.ChangedDate); this.Verifier.Settings.IgnoreProperty(f => f.CreatedDate); } public override void Execute() { var taskI3D = this.CreateTask(); var task = this.LoadTask(taskI3D); this.ChangeTask(task); } private int CreateTask() { using (var session = new BLSession()) { var user = session.GetBL().GetAppUser(f => f.I3D == 11); var task = new TaskManagementTaskDTO { Name = "Test-Task Report-Server", Description = "Test-Task mit Report-Action", Status = ProjectStatus.Finished, Action = new TaskManagementReportActionDTO { Customer = new CustomerPreviewDTO { I3D = CustomerI3D }, MailSubject = "Betreff", MailBodyAsRtf = "Some...body ONCE TOLD ME", Reports = new List { new TaskManagementActionReportDTO { ReportDataI3D = 123 }, new TaskManagementActionReportDTO { ReportDataI3D = 234 }, }, MailReceiver = new List { new TaskManagementActionCustomerMailRecipientDTO { ContactPersonI3D = 25, Adviser = null, EmailAddress = null, DepartmentI3D = null, }, new TaskManagementActionCustomerMailRecipientDTO { ContactPersonI3D = null, Adviser = AdviserType.Adviser1, EmailAddress = null, DepartmentI3D = null, }, new TaskManagementActionCustomerMailRecipientDTO { ContactPersonI3D = null, Adviser = null, EmailAddress = "test@c-entron.de", DepartmentI3D = null, }, new TaskManagementActionCustomerMailRecipientDTO { ContactPersonI3D = null, Adviser = null, EmailAddress = null, DepartmentI3D = 3, }, } }, Recurrence = new TaskManagementDailyRecurrenceDTO { AppointmentStart = new DateTime(2020, 2, 2, 13, 0, 0), StartTime = new DateTime(2020, 2, 2, 13, 0, 0), EveryWeekday = true }, }; var savedTask = session.GetBL().SaveOrUpdateTask(task, user); this.Verifier.Verify("SavedTask", savedTask); return savedTask.Data.I3D; } } private TaskManagementTaskDTO LoadTask(int taskI3D) { using (var session = new BLSession()) { var tasks = session.GetBL().GetTasks(1, 1, new GetTasksFilter { I3Ds = new[] { taskI3D } }); this.Verifier.Verify("LoadedTask", tasks); return tasks.Data.Result.Single(); } } private void ChangeTask(TaskManagementTaskDTO task) { using (var session = new BLSession()) { var action = (TaskManagementReportActionDTO)task.Action; action.Reports[0].ReportDataI3D = 999; //Edit action.Reports.Remove(action.Reports.Last()); //Delete action.Reports.Add(new TaskManagementActionReportDTO //Add { ReportDataI3D = 555 }); action.MailReceiver[0].ContactPersonI3D = 333; //Edit action.MailReceiver.Remove(action.MailReceiver.Last()); //Delete action.MailReceiver.Add(new TaskManagementActionCustomerMailRecipientDTO //Add { DepartmentI3D = 4 }); var user = session.GetBL().GetAppUser(f => f.I3D == 11); var updatedTask = session.GetBL().SaveOrUpdateTask(task, user); this.Verifier.Verify("UpdatedTask", updatedTask); } } } }