using System; using System.Linq; using LCU.Library.Internal.MemberPreferencesApiModels.Entities; using LCU.Library.Internal.MemberPreferencesApiModels.Enums; using NUnit.Framework; namespace LCU.API.Internal.MemberPreferencesApi.UnitTests { public class XdiBatchTest { private XdiBatchItem _item; [SetUp] public void Setup() { _item = new XdiBatchItem() { Created = DateTime.Now, BatchState = BatchState.New, LastUpdated = DateTime.Now, UserId = "99" }; } [Test] public void TestEmptyBatch() { var batch = new Models.XdiBatch(); var files = batch.GetNonEmptyFiles(); Assert.NotNull(files); Assert.False(files.Any()); } [Test] public void Test_Enrollment_UpdateToPrint() { var batch = new Models.XdiBatch(); var settings = new MemberOptInSettings() { Id = 1000, UniversalOptIn = DeliveryPreference.Paper, ENotifications = DeliveryPreference.Electronic, EStatements = DeliveryPreference.Electronic, UnifiedOptInEmail = "test@test.com", ENotificationsEmail = "test@test.com", EStatementsEmail = "test@test.com", LastUpdated = DateTime.Now, LegalDate = DateTime.Now, LegalVersion = "1.2.3", UserId = "99", CreatedByType = UserType.Associate, LastUpdatedByType = UserType.System, CreatedBy = "test", Created = DateTime.Now, LastUpdatedBy = "test" }; var result = batch.ProcessItem(_item, settings); Assert.True(result); var files = batch.GetNonEmptyFiles(); Assert.NotNull(files); Assert.AreEqual(1, files.Count); Assert.AreEqual(XdiFileType.UpdateMemberToPrint, files.First().Type); } [Test] public void Test_DoNothing() { var batch = new Models.XdiBatch(); var settings = new MemberOptInSettings() { Id = 1000, UniversalOptIn = DeliveryPreference.Paper, ENotifications = null, EStatements = DeliveryPreference.Electronic, UnifiedOptInEmail = "test@test.com", ENotificationsEmail = null, EStatementsEmail = "test@test.com", UserId = "99" }; var result = batch.ProcessItem(_item, settings); Assert.False(result); var files = batch.GetNonEmptyFiles(); Assert.NotNull(files); Assert.False(files.Any()); } [Test] public void Test_Enrollment_UpdateToElectronic() { var batch = new Models.XdiBatch(); var settings = new MemberOptInSettings() { Id = 1000, UniversalOptIn = DeliveryPreference.Electronic, ENotifications = DeliveryPreference.Paper, EStatements = DeliveryPreference.Paper, UnifiedOptInEmail = "test@test.com", ENotificationsEmail = "test@test.com", EStatementsEmail = "test@test.com", UserId = "99" }; var result = batch.ProcessItem(_item, settings); Assert.True(result); var files = batch.GetNonEmptyFiles(); Assert.NotNull(files); Assert.AreEqual(1, files.Count); Assert.AreEqual(XdiFileType.UpdateMemberToElectronic, files.First().Type); } [Test] public void Test_Enrollment_AddElectronic() { var batch = new Models.XdiBatch(); var settings = new MemberOptInSettings() { Id = 1000, UniversalOptIn = DeliveryPreference.Electronic, ENotifications = null, EStatements = DeliveryPreference.Paper, UnifiedOptInEmail = "test@test.com", ENotificationsEmail = null, EStatementsEmail = null, UserId = "99" }; var result = batch.ProcessItem(_item, settings); Assert.True(result); var files = batch.GetNonEmptyFiles(); Assert.NotNull(files); Assert.AreEqual(1, files.Count); Assert.AreEqual(XdiFileType.AddMemberElectronic, files.First().Type); } [Test] public void Test_Enrollment_UpdateEmail() { var batch = new Models.XdiBatch(); var settings = new MemberOptInSettings() { Id = 1000, UniversalOptIn = DeliveryPreference.Electronic, ENotifications = DeliveryPreference.Electronic, EStatements = DeliveryPreference.Electronic, UnifiedOptInEmail = "updated_email@test.com", ENotificationsEmail = "test@test.com", EStatementsEmail = "test@test.com", UserId = "99" }; var result = batch.ProcessItem(_item, settings); Assert.True(result); var files = batch.GetNonEmptyFiles(); Assert.NotNull(files); Assert.AreEqual(1, files.Count); Assert.AreEqual(XdiFileType.UpdateMemberEmail, files.First().Type); } } }