using System.Linq; using Centron.Core.Extensions; using Centron.Interfaces; using Centron.Interfaces.Mail.Enums; using Centron.Interfaces.Mail.Templates; using Centron.Tests.EndToEnd.Infrastructure; using Xunit; using Xunit.Abstractions; namespace Centron.Tests.EndToEnd.Tests.MailTemplateRefs; public class MailTemplateReferenceTests : CentronTest { public MailTemplateReferenceTests(ITestOutputHelper testOutputHelper) : base(testOutputHelper) { } [Fact] public void CanLoadAllReferences() { int? objectI3D = 17; var references = MailTemplateReferences.GetAllMailTemplateReferences(objectI3D); this.Verifier.Verify($"AllMailTemplateReferences_ObjectI3D_{objectI3D}", references); } [Fact] public void CanCreateMailTemplateReferencesTree() { var groups = MailTemplateReferences.CreateMailTemplateReferencesTree(); Assert.NotNull(groups); this.Verifier.Verify($"AllMailTemplateGroups_WithReferences", groups); } [Fact] public void LoadReferenceGroupByObjectKind() { var objectKind = CentronObjectKindNumeric.PLM; var group = MailTemplateReferences.CreateMailTemplateReferencesTree(objectKind); Assert.NotNull(group); this.Verifier.Verify($"MailTemplateGroup_WithReferences_ObjectKind_{objectKind}", group); } [Fact] public void CanLoadSpecificReferenceWithObjectI3D() { var reference = MailTemplateReferences.TryFindMailTemplateReference(CentronObjectKindNumeric.ContractClass, (int)ContractSubObjectKind.ContractType, objectI3D: 222); Assert.NotNull(reference); } [Fact] public void GetReferenceBasedOnReferenceObjectValues() { CentronObjectKindNumeric objectKind = CentronObjectKindNumeric.Account; int? subObjectKind = null; int? objectI3D = (int)CentronObjectKindNumeric.AccountNotification; var reference = MailTemplateReferences.TryFindMailTemplateReference(objectKind, subObjectKind, objectI3D); Assert.NotNull(reference); Assert.Equal(objectKind, reference.ObjectKind); Assert.Equal(subObjectKind, reference.SubObjectKind); Assert.Equal(objectI3D, reference.ObjectI3D); this.Verifier.Verify($"ReferenceBasedOnReferenceObjectValues", reference); } [Fact] public void NoDuplicateReferences() { Test(1); Test(10); Test((int)CentronObjectKindNumeric.HelpdeskClass); void Test(int objectI3D) { var references = MailTemplateReferences.GetAllMailTemplateReferences(objectI3D); var hasDuplicates = references .GroupBy(f => (f.ObjectKind, f.SubObjectKind, f.ObjectI3D)) .Where(f => f.Count() > 1) .ToList(); Assert.Empty(hasDuplicates); } } [Fact] public void NoDuplicateReferenceGroups() { Test(CentronObjectKindNumeric.HelpdeskClass); Test(CentronObjectKindNumeric.PLM); void Test(CentronObjectKindNumeric objectKind) { var referenceGroups = MailTemplateReferences.CreateMailTemplateReferencesTree(objectKind); var hasDuplicates = referenceGroups .GroupBy(f => (f.ObjectKind)) .Where(f => f.Count() > 1) .ToList(); Assert.Empty(hasDuplicates); } } }