using System.Collections.Generic; using System.Linq; using Centron.BusinessLogic; using Centron.BusinessLogic.EmployeeArea; using Centron.BusinessLogic.WebServices.Mail.Templates; using Centron.Data.Entities.Administration; using Centron.Data.Entities.Administration.Logins; using Centron.Data.WebServices.Mail.Templates; using Centron.Interfaces.BL; using Centron.Interfaces.Mail.Templates; using Centron.Tests.EndToEnd.Infrastructure; using Xunit; using Xunit.Abstractions; using Centron.Core.Extensions; namespace Centron.Tests.EndToEnd.Tests.MailTemplateRelationshipKind { public class MailTemplateRelationshipKindTests : EndToEndTest { private AppUser GetUser() { using (var session = new BLSession()) return session.GetBL().GetAppUser(f => f.I3D == 11); } public MailTemplateRelationshipKindTests(ITestOutputHelper testOutputHelper) : base(testOutputHelper) { } public override void Execute() { var kinds = this.LoadMailTemplateRelationshipKinds(); var saved = this.AddNewMailTemplateRelationShipKinds(kinds); var afterDelete = this.DeleteMailTemplateRelationshipKinds(saved); this.FailSaveDuplicateDefault(afterDelete); this.FailSaveNoDefault(afterDelete); this.FailDeleteDefault(afterDelete); this.SaveContactToMailTemplateRelationshipKind(afterDelete); var loaded = this.GetContactToMailTemplateRelationshipKind(); this.DeleteContactToMailTemplateRelationshipKind(loaded); } private IList LoadMailTemplateRelationshipKinds() { using (var session = new BLSession()) { var result = session.GetBL().GetMailTemplateRelationshipKinds(); Assert.Equal(ResultStatus.Success, result.Status); Assert.NotNull(result.Data); this.Verifier.Verify("LoadMailTemplateRelationshipKinds", result.Data); return result.Data; } } private IList AddNewMailTemplateRelationShipKinds(IList kinds) { using (var session = new BLSession()) { kinds.Add(new MailTemplateRelationshipKindDTO { Caption = "Test", IsDefault = false, Description = "Test für Test" }); kinds.Add(new MailTemplateRelationshipKindDTO { Caption = "Banane", IsDefault = false, Description = "Test für Order" }); var result = session.GetBL().SaveMailTemplateRelationshipKinds(kinds); Assert.Equal(ResultStatus.Success, result.Status); Assert.NotNull(result.Data); this.Verifier.Verify("AddMailTemplateRelationshipKinds", result.Data); return result.Data; } } private IList DeleteMailTemplateRelationshipKinds(IList kinds) { using (var session = new BLSession()) { session.GetBL().DeleteMailTemplateRelationshipKind(kinds.Last().I3D); var result = session.GetBL().GetMailTemplateRelationshipKinds(); Assert.Equal(ResultStatus.Success, result.Status); Assert.NotNull(result.Data); this.Verifier.Verify("DeleteMailTemplateRelationshipKinds", result.Data); return result.Data; } } private void FailSaveDuplicateDefault(IList kinds) { using (var session = new BLSession()) { kinds.Add(new MailTemplateRelationshipKindDTO { Caption = "Test", IsDefault = true, Description = "Test für Test" }); var result = session.GetBL().SaveMailTemplateRelationshipKinds(kinds); Assert.Equal(ResultStatus.Error, result.Status); Verifier.Verify("FailDuplicateDefault", result); } } private void FailSaveNoDefault(IList kinds) { using (var session = new BLSession()) { var previousDefaultI3D = kinds.First(f => f.IsDefault).I3D; kinds.ForEach(f => f.IsDefault = false); var result = session.GetBL().SaveMailTemplateRelationshipKinds(kinds); Assert.Equal(ResultStatus.Error, result.Status); Verifier.Verify("FailNoDefault", result); kinds.First(f => f.I3D == previousDefaultI3D).IsDefault = true; } } private void FailDeleteDefault(IList kinds) { using (var session = new BLSession()) { var result = session.GetBL().DeleteMailTemplateRelationshipKind(kinds.First(f => f.IsDefault).I3D); Assert.Equal(ResultStatus.Error, result.Status); Verifier.Verify("FailDeleteDefault", result); } } private void SaveContactToMailTemplateRelationshipKind(IList kinds) { using (var session = new BLSession()) { var toSave = new List { new ContactToMailTemplateRelationshipKindDTO { EmployeeI3D = this.GetUser().Employee.I3D, AccountAddressContactI3D = 38, MailTemplateRelationshipKindI3D = kinds.First(f => f.IsDefault).I3D } }; var result = session.GetBL().SaveContactToMailTemplateRelationshipKind(toSave); Assert.Equal(ResultStatus.Success, result.Status); this.Verifier.Verify("SavedContactToMailTemplateRelationshipKind", result.Data); } } private IList GetContactToMailTemplateRelationshipKind() { using (var session = new BLSession()) { var filter = new ContactToMailTemplateRelationshipKindFilter { AccountAddressContactI3Ds = new List { 36, 37, 38, 39 } }; var result = session.GetBL().GetContactMailTemplateRelationshipKindByFilter(filter, this.GetUser().Employee.I3D); Assert.Equal(ResultStatus.Success, result.Status); this.Verifier.Verify("LoadedContactToMailTemplateRelationshipKind", result.Data); return result.Data; } } private void DeleteContactToMailTemplateRelationshipKind(IList relationships) { using (var session = new BLSession()) { var deleteResult = session.GetBL().DeleteContactToMailTemplateRelationshipKind(relationships.First().I3D); Assert.Equal(ResultStatus.Success, deleteResult.Status); var filter = new ContactToMailTemplateRelationshipKindFilter(); var result = session.GetBL().GetContactMailTemplateRelationshipKindByFilter(filter, this.GetUser().Employee.I3D); Assert.Equal(ResultStatus.Success, result.Status); this.Verifier.Verify("LoadAfterDeleteContactToMailTemplateRelationshipKind", result.Data); } } } }