This commit is contained in:
Zeeshaun
2026-03-31 16:43:12 -05:00
parent 9be174da46
commit d639027028
198 changed files with 111474 additions and 0 deletions
@@ -0,0 +1,395 @@
using System;
using System.Linq;
using LCU.Library.Internal.MemberPreferencesApiModels.Entities;
using LCU.Library.Internal.MemberPreferencesApiModels.Enums;
using NUnit.Framework;
namespace LCU.Library.Internal.MemberPreferencesApiModels.UnitTests.Entities
{
public class MemberOptInSettingsTests
{
private MemberOptInSettings _settings;
[SetUp]
public void SetUp()
{
_settings = new MemberOptInSettings();
}
[Test]
public void Apply_UnifiedOptIn_SetsUniversalOptInAndLegalVersionAndLegalDate()
{
_settings.UniversalOptIn = Guid.NewGuid().ToString();
_settings.LegalVersion = Guid.NewGuid().ToString();
_settings.LegalDate = DateTime.MinValue;
var preference = new MemberPreference
{
Preference = PreferenceType.UnifiedOptIn,
Value = Guid.NewGuid().ToString(),
LegalReference = Guid.NewGuid().ToString()
};
var actionStart = DateTime.Now;
_settings.Apply(preference);
var elapsedActionTime = DateTime.Now - actionStart;
Assert.AreEqual(preference.Value, _settings.UniversalOptIn);
Assert.AreEqual(preference.LegalReference, _settings.LegalVersion);
Assert.That(actionStart, Is.EqualTo(_settings.LegalDate).Within(elapsedActionTime));
}
[Test]
public void Apply_UnifiedOptInUnchanged_DoesNotClearEmailTracking()
{
var originalStatus = _settings.UnifiedOptInEmailStatus = RandomEnumValueFactory<EmailStatus>();
var originalFirstSent = _settings.UnifiedOptInEmailFirstSent = DateTime.Now.AddHours(-1);
var originalLastSent = _settings.UnifiedOptInEmailLastSent = DateTime.Now;
var originalCount = _settings.UnifiedOptInEmailStatusCount = DateTime.Now.Millisecond;
var preference = new MemberPreference
{
Preference = PreferenceType.UnifiedOptIn,
Value = _settings.UniversalOptIn = Guid.NewGuid().ToString(),
};
_settings.Apply(preference);
Assert.AreEqual(originalStatus, _settings.UnifiedOptInEmailStatus);
Assert.AreEqual(originalFirstSent, _settings.UnifiedOptInEmailFirstSent);
Assert.AreEqual(originalLastSent, _settings.UnifiedOptInEmailLastSent);
Assert.AreEqual(originalCount, _settings.UnifiedOptInEmailStatusCount);
}
[Test]
public void Apply_UnifiedOptInChanged_ClearsEmailTracking()
{
_settings.UniversalOptIn = Guid.NewGuid().ToString();
_settings.UnifiedOptInEmailStatus = RandomEnumValueFactory<EmailStatus>();
_settings.UnifiedOptInEmailFirstSent = DateTime.Now.AddHours(-1);
_settings.UnifiedOptInEmailLastSent = DateTime.Now;
_settings.UnifiedOptInEmailStatusCount = DateTime.Now.Millisecond;
var preference = new MemberPreference
{
Preference = PreferenceType.UnifiedOptIn,
Value = Guid.NewGuid().ToString(),
};
_settings.Apply(preference);
Assert.IsNull(_settings.UnifiedOptInEmailStatus);
Assert.IsNull(_settings.UnifiedOptInEmailFirstSent);
Assert.IsNull(_settings.UnifiedOptInEmailLastSent);
Assert.AreEqual(0, _settings.UnifiedOptInEmailStatusCount);
}
[Test]
public void Apply_UnifiedOptInEmail_SetsUnifiedOptInEmail()
{
_settings.UnifiedOptInEmail = Guid.NewGuid().ToString();
var preference = new MemberPreference
{
Preference = PreferenceType.UnifiedOptInEmail,
Value = Guid.NewGuid().ToString(),
};
_settings.Apply(preference);
Assert.AreEqual(preference.Value, _settings.UnifiedOptInEmail);
}
[Test]
public void Apply_UnifiedOptInEmailUnchanged_ClearsEmailTracking()
{
var originalStatus = _settings.UnifiedOptInEmailStatus = RandomEnumValueFactory<EmailStatus>();
var originalFirstSent = _settings.UnifiedOptInEmailFirstSent = DateTime.Now.AddHours(-1);
var originalLastSent = _settings.UnifiedOptInEmailLastSent = DateTime.Now;
var originalCount = _settings.UnifiedOptInEmailStatusCount = DateTime.Now.Millisecond;
var preference = new MemberPreference
{
Preference = PreferenceType.UnifiedOptInEmail,
Value = _settings.UnifiedOptInEmail = Guid.NewGuid().ToString(),
};
_settings.Apply(preference);
Assert.IsNull(_settings.UnifiedOptInEmailStatus);
Assert.IsNull(_settings.UnifiedOptInEmailFirstSent);
Assert.IsNull(_settings.UnifiedOptInEmailLastSent);
Assert.AreEqual(0, _settings.UnifiedOptInEmailStatusCount);
}
[Test]
public void Apply_UnifiedOptInEmailChanged_ClearsEmailTracking()
{
_settings.UnifiedOptInEmail = Guid.NewGuid().ToString();
_settings.UnifiedOptInEmailStatus = RandomEnumValueFactory<EmailStatus>();
_settings.UnifiedOptInEmailFirstSent = DateTime.Now.AddHours(-1);
_settings.UnifiedOptInEmailLastSent = DateTime.Now;
_settings.UnifiedOptInEmailStatusCount = DateTime.Now.Millisecond;
var preference = new MemberPreference
{
Preference = PreferenceType.UnifiedOptInEmail,
Value = Guid.NewGuid().ToString(),
};
_settings.Apply(preference);
Assert.IsNull(_settings.UnifiedOptInEmailStatus);
Assert.IsNull(_settings.UnifiedOptInEmailFirstSent);
Assert.IsNull(_settings.UnifiedOptInEmailLastSent);
Assert.AreEqual(0, _settings.UnifiedOptInEmailStatusCount);
}
[Test]
public void Apply_ENotification_SetsENotifications()
{
_settings.ENotifications = Guid.NewGuid().ToString();
var preference = new MemberPreference
{
Preference = PreferenceType.ENotification,
Value = Guid.NewGuid().ToString()
};
_settings.Apply(preference);
Assert.AreEqual(preference.Value, _settings.ENotifications);
}
[Test]
public void Apply_ENotificationsUnchanged_DoesNotClearEmailTracking()
{
var originalStatus = _settings.ENotificationsEmailStatus = RandomEnumValueFactory<EmailStatus>();
var originalFirstSent = _settings.ENotificationsEmailFirstSent = DateTime.Now.AddHours(-1);
var originalLastSent = _settings.ENotificationsEmailLastSent = DateTime.Now;
var originalCount = _settings.ENotificationsEmailStatusCount = DateTime.Now.Millisecond;
var preference = new MemberPreference
{
Preference = PreferenceType.ENotification,
Value = _settings.ENotifications = Guid.NewGuid().ToString(),
};
_settings.Apply(preference);
Assert.AreEqual(originalStatus, _settings.ENotificationsEmailStatus);
Assert.AreEqual(originalFirstSent, _settings.ENotificationsEmailFirstSent);
Assert.AreEqual(originalLastSent, _settings.ENotificationsEmailLastSent);
Assert.AreEqual(originalCount, _settings.ENotificationsEmailStatusCount);
}
[Test]
public void Apply_ENotificationsChanged_ClearsEmailTracking()
{
_settings.ENotifications = Guid.NewGuid().ToString();
_settings.ENotificationsEmailStatus = RandomEnumValueFactory<EmailStatus>();
_settings.ENotificationsEmailFirstSent = DateTime.Now.AddHours(-1);
_settings.ENotificationsEmailLastSent = DateTime.Now;
_settings.ENotificationsEmailStatusCount = DateTime.Now.Millisecond;
var preference = new MemberPreference
{
Preference = PreferenceType.ENotification,
Value = Guid.NewGuid().ToString(),
};
_settings.Apply(preference);
Assert.IsNull(_settings.ENotificationsEmailStatus);
Assert.IsNull(_settings.ENotificationsEmailFirstSent);
Assert.IsNull(_settings.ENotificationsEmailLastSent);
Assert.AreEqual(0, _settings.ENotificationsEmailStatusCount);
}
[Test]
public void Apply_ENotificationsEmail_SetsENotificationsEmail()
{
_settings.ENotificationsEmail = Guid.NewGuid().ToString();
var preference = new MemberPreference
{
Preference = PreferenceType.ENotificationsEmail,
Value = Guid.NewGuid().ToString(),
};
_settings.Apply(preference);
Assert.AreEqual(preference.Value, _settings.ENotificationsEmail);
}
[Test]
public void Apply_ENotificationsEmailUnchanged_ClearsEmailTracking()
{
var originalStatus = _settings.ENotificationsEmailStatus = RandomEnumValueFactory<EmailStatus>();
var originalFirstSent = _settings.ENotificationsEmailFirstSent = DateTime.Now.AddHours(-1);
var originalLastSent = _settings.ENotificationsEmailLastSent = DateTime.Now;
var originalCount = _settings.ENotificationsEmailStatusCount = DateTime.Now.Millisecond;
var preference = new MemberPreference
{
Preference = PreferenceType.ENotificationsEmail,
Value = _settings.ENotificationsEmail = Guid.NewGuid().ToString(),
};
_settings.Apply(preference);
Assert.IsNull(_settings.ENotificationsEmailStatus);
Assert.IsNull(_settings.ENotificationsEmailFirstSent);
Assert.IsNull(_settings.ENotificationsEmailLastSent);
Assert.AreEqual(0, _settings.ENotificationsEmailStatusCount);
}
[Test]
public void Apply_ENotificationsEmailChanged_ClearsEmailTracking()
{
_settings.ENotificationsEmail = Guid.NewGuid().ToString();
_settings.ENotificationsEmailStatus = RandomEnumValueFactory<EmailStatus>();
_settings.ENotificationsEmailFirstSent = DateTime.Now.AddHours(-1);
_settings.ENotificationsEmailLastSent = DateTime.Now;
_settings.ENotificationsEmailStatusCount = DateTime.Now.Millisecond;
var preference = new MemberPreference
{
Preference = PreferenceType.ENotificationsEmail,
Value = Guid.NewGuid().ToString(),
};
_settings.Apply(preference);
Assert.IsNull(_settings.ENotificationsEmailStatus);
Assert.IsNull(_settings.ENotificationsEmailFirstSent);
Assert.IsNull(_settings.ENotificationsEmailLastSent);
Assert.AreEqual(0, _settings.ENotificationsEmailStatusCount);
}
[Test]
public void Apply_EStatements_SetsEStatements()
{
_settings.EStatements = Guid.NewGuid().ToString();
var preference = new MemberPreference
{
Preference = PreferenceType.EStatements,
Value = Guid.NewGuid().ToString()
};
_settings.Apply(preference);
Assert.AreEqual(preference.Value, _settings.EStatements);
}
[Test]
public void Apply_EStatementsUnchanged_DoesNotClearEmailTracking()
{
var originalStatus = _settings.EStatementsEmailStatus = RandomEnumValueFactory<EmailStatus>();
var originalFirstSent = _settings.EStatementsEmailFirstSent = DateTime.Now.AddHours(-1);
var originalLastSent = _settings.EStatementsEmailLastSent = DateTime.Now;
var originalCount = _settings.EStatementsEmailStatusCount = DateTime.Now.Millisecond;
var preference = new MemberPreference
{
Preference = PreferenceType.EStatements,
Value = _settings.EStatements = Guid.NewGuid().ToString(),
};
_settings.Apply(preference);
Assert.AreEqual(originalStatus, _settings.EStatementsEmailStatus);
Assert.AreEqual(originalFirstSent, _settings.EStatementsEmailFirstSent);
Assert.AreEqual(originalLastSent, _settings.EStatementsEmailLastSent);
Assert.AreEqual(originalCount, _settings.EStatementsEmailStatusCount);
}
[Test]
public void Apply_EStatementsChanged_ClearsEmailTracking()
{
_settings.EStatements = Guid.NewGuid().ToString();
_settings.EStatementsEmailStatus = RandomEnumValueFactory<EmailStatus>();
_settings.EStatementsEmailFirstSent = DateTime.Now.AddHours(-1);
_settings.EStatementsEmailLastSent = DateTime.Now;
_settings.EStatementsEmailStatusCount = DateTime.Now.Millisecond;
var preference = new MemberPreference
{
Preference = PreferenceType.EStatements,
Value = Guid.NewGuid().ToString(),
};
_settings.Apply(preference);
Assert.IsNull(_settings.EStatementsEmailStatus);
Assert.IsNull(_settings.EStatementsEmailFirstSent);
Assert.IsNull(_settings.EStatementsEmailLastSent);
Assert.AreEqual(0, _settings.EStatementsEmailStatusCount);
}
[Test]
public void Apply_EStatementsEmail_SetsEStatementsEmail()
{
_settings.EStatementsEmail = Guid.NewGuid().ToString();
var preference = new MemberPreference
{
Preference = PreferenceType.EStatementsEmail,
Value = Guid.NewGuid().ToString(),
};
_settings.Apply(preference);
Assert.AreEqual(preference.Value, _settings.EStatementsEmail);
}
[Test]
public void Apply_EStatementsEmailUnchanged_ClearsEmailTracking()
{
var originalStatus = _settings.EStatementsEmailStatus = RandomEnumValueFactory<EmailStatus>();
var originalFirstSent = _settings.EStatementsEmailFirstSent = DateTime.Now.AddHours(-1);
var originalLastSent = _settings.EStatementsEmailLastSent = DateTime.Now;
var originalCount = _settings.EStatementsEmailStatusCount = DateTime.Now.Millisecond;
var preference = new MemberPreference
{
Preference = PreferenceType.EStatementsEmail,
Value = _settings.EStatementsEmail = Guid.NewGuid().ToString(),
};
_settings.Apply(preference);
Assert.IsNull(_settings.EStatementsEmailStatus);
Assert.IsNull(_settings.EStatementsEmailFirstSent);
Assert.IsNull(_settings.EStatementsEmailLastSent);
Assert.AreEqual(0, _settings.EStatementsEmailStatusCount);
}
[Test]
public void Apply_EStatementsEmailChanged_ClearsEmailTracking()
{
_settings.EStatementsEmail = Guid.NewGuid().ToString();
_settings.EStatementsEmailStatus = RandomEnumValueFactory<EmailStatus>();
_settings.EStatementsEmailFirstSent = DateTime.Now.AddHours(-1);
_settings.EStatementsEmailLastSent = DateTime.Now;
_settings.EStatementsEmailStatusCount = DateTime.Now.Millisecond;
var preference = new MemberPreference
{
Preference = PreferenceType.EStatementsEmail,
Value = Guid.NewGuid().ToString(),
};
_settings.Apply(preference);
Assert.IsNull(_settings.EStatementsEmailStatus);
Assert.IsNull(_settings.EStatementsEmailFirstSent);
Assert.IsNull(_settings.EStatementsEmailLastSent);
Assert.AreEqual(0, _settings.EStatementsEmailStatusCount);
}
[Test]
public void Apply_UnknownPreference_ThrowsException()
{
var preference = new MemberPreference
{
Preference = (PreferenceType)(Enum.GetValues(typeof(PreferenceType)).Length + 1)
};
var thrown = Assert.Throws<InvalidOperationException>(() => _settings.Apply(preference));
StringAssert.Contains(preference.Preference.ToString(), thrown?.Message);
}
private static T RandomEnumValueFactory<T>()
where T : Enum
{
var values = Enum.GetValues(typeof(T)).Cast<T>().ToArray();
return values[DateTime.Now.Millisecond % values.Length];
}
}
}
@@ -0,0 +1,28 @@
using System;
using LCU.API.Internal.MemberPreferencesApi.Models.EmailPolicies;
using LCU.Library.Internal.MemberPreferencesApiModels.Entities;
using LCU.Library.Internal.MemberPreferencesApiModels.Enums;
namespace LCU.Library.Internal.MemberPreferencesApiModels.UnitTests.Policies.Email.FailedToSend
{
public class EStatementsSixtyDaysUndeliverableEmailPolicyTest : SixtyDaysUndeliverableEmailPolicyTest
{
protected override SixtyDaysUndeliverableEmailPolicy Policy { get; }
public EStatementsSixtyDaysUndeliverableEmailPolicyTest()
{
Policy = new EStatementsSixtyDaysUndeliverableEmailPolicy(AuditableChanges, MemberPreferences);
}
protected override void SetEmailStatus(MemberOptInSettings settings, EmailStatus status)
=> settings.EStatementsEmailStatus = status;
protected override void SetFirstSent(MemberOptInSettings settings, DateTime firstSent)
=> settings.EStatementsEmailFirstSent = firstSent;
protected override void SetLastSend(MemberOptInSettings settings, DateTime lastSent)
=> settings.EStatementsEmailLastSent = lastSent;
protected override void SetEligibleForPreferenceFlip(MemberOptInSettings settings)
=> settings.UniversalOptIn = null;
protected override string GetPreference(MemberOptInSettings settings)
=> settings.UniversalOptIn;
}
}
@@ -0,0 +1,187 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using LCU.Library.Internal.MemberPreferencesApiModels.Entities;
using LCU.Library.Internal.MemberPreferencesApiModels.Enums;
using FluentAssertions;
using NUnit.Framework;
using LCU.Library.Internal.MemberPreferencesApiModels.Models;
using LCU.API.Internal.MemberPreferencesApi.Models.EmailPolicies;
namespace LCU.Library.Internal.MemberPreferencesApiModels.UnitTests.Policies.Email.FailedToSend
{
public abstract class SixtyDaysUndeliverableEmailPolicyTest
{
protected abstract SixtyDaysUndeliverableEmailPolicy Policy { get; }
protected IAuditableChanges AuditableChanges => _auditableChanges;
protected IMemberPreferences MemberPreferences => _memberPreferences;
protected abstract void SetEmailStatus(MemberOptInSettings settings, EmailStatus status);
protected abstract void SetFirstSent(MemberOptInSettings settings, DateTime firstSent);
protected abstract void SetLastSend(MemberOptInSettings settings, DateTime lastSent);
protected abstract void SetEligibleForPreferenceFlip(MemberOptInSettings settings);
protected abstract string GetPreference(MemberOptInSettings settings);
private readonly FakeAuditableChanges _auditableChanges = new FakeAuditableChanges();
private readonly FakeMemberPreferences _memberPreferences = new FakeMemberPreferences();
[SetUp]
public void SetUp()
{
_memberPreferences.Changes.Clear();
}
[Test]
public async Task Apply_NotFailingDelivery_ReturnsFalse()
{
var settings = SettingsFactory();
SetEmailStatus(settings, EmailStatus.DeliveredSuccessfully);
var originalSettings = Clone(settings);
var anyChanges = await Policy.Apply(settings, true);
Assert.That(anyChanges, Is.False);
Assert.That(_memberPreferences.Changes.Any(), Is.False);
settings.Should().BeEquivalentTo(originalSettings);
}
[Test]
public async Task Apply_FailingDeliveryForLessThanSixtyDays_ReturnsFalse()
{
var settings = SettingsFactory();
SetEmailStatus(settings, EmailStatus.FailingDelivery);
SetFirstSent(settings, DateTime.Now.AddDays(-59));
SetLastSend(settings, DateTime.Now);
var originalSettings = Clone(settings);
var anyChanges = await Policy.Apply(settings, true);
Assert.That(anyChanges, Is.False);
Assert.That(_memberPreferences.Changes.Any(), Is.False);
settings.Should().BeEquivalentTo(originalSettings);
}
[Test]
public async Task Apply_FailingDeliveryForSixtyDaysOrMore_ReturnsTrueAndSetsToPaper()
{
var settings = SettingsFactory();
SetEmailStatus(settings, EmailStatus.FailingDelivery);
SetFirstSent(settings, DateTime.Now.AddDays(-60));
SetLastSend(settings, DateTime.Now);
SetEligibleForPreferenceFlip(settings);
var originalSettings = Clone(settings);
var anyChanges = await Policy.Apply(settings, true);
var preference = GetPreference(settings);
Assert.That(anyChanges, Is.True);
settings.Should().BeEquivalentTo
(
originalSettings,
except => except
.Excluding(s => s.LastUpdatedBy)
.Excluding(s => s.UniversalOptIn)
.Excluding(s => s.ENotifications)
.Excluding(s => s.EStatements)
);
Assert.That(preference, Is.EqualTo(DeliveryPreference.Paper));
Assert.That(settings.LastUpdatedBy, Is.EqualTo("BounceBackLimitReached"));
Assert.That(_memberPreferences.Changes.Count(p => p.Value == DeliveryPreference.Paper && p.UserId == settings.UserId && p.LastUpdatedBy == "BounceBackLimitReached"), Is.EqualTo(1));
}
[Test]
public async Task Apply_FailingDeliveryForSixtyDaysOrMore_FeatureFlagReturnsFalse()
{
var settings = SettingsFactory();
SetEmailStatus(settings, EmailStatus.FailingDelivery);
SetFirstSent(settings, DateTime.Now.AddDays(-60));
SetLastSend(settings, DateTime.Now);
var originalSettings = Clone(settings);
var anyChanges = await Policy.Apply(settings, false);
var preference = GetPreference(settings);
Assert.That(anyChanges, Is.False);
Assert.That(_memberPreferences.Changes.Any(), Is.False);
settings.Should().BeEquivalentTo(originalSettings);
Assert.That(_memberPreferences.Changes.Count(p => p.Value == DeliveryPreference.Paper && p.UserId == settings.UserId && p.LastUpdatedBy == "BounceBackLimitReached"), Is.EqualTo(0));
}
[Test]
public async Task Apply_FailingDeliveryForSixtyDaysOrMore_SetsTrackingToBounceBackSystem()
{
var settings = SettingsFactory();
SetEmailStatus(settings, EmailStatus.FailingDelivery);
SetFirstSent(settings, DateTime.Now.AddDays(-60));
SetLastSend(settings, DateTime.Now);
SetEligibleForPreferenceFlip(settings);
await Policy.Apply(settings, true);
Assert.That(settings.LastUpdatedBy, Is.EqualTo("BounceBackLimitReached"));
Assert.That(_auditableChanges.SystemModifiedAuditableEntities.ContainsKey(settings), Is.True);
Assert.That(_auditableChanges.SystemModifiedAuditableEntities[settings], Is.EqualTo("BounceBackLimitReached"));
}
private static MemberOptInSettings SettingsFactory()
=> new MemberOptInSettings
{
LastUpdatedBy = Guid.NewGuid().ToString(),
UniversalOptIn = DeliveryPreference.Electronic,
UnifiedOptInEmailStatus = EmailStatus.DeliveredSuccessfully,
UnifiedOptInEmailFirstSent = DateTime.Now,
UnifiedOptInEmailLastSent = DateTime.Now,
ENotifications = DeliveryPreference.Electronic,
ENotificationsEmailStatus = EmailStatus.DeliveredSuccessfully,
ENotificationsEmailFirstSent = DateTime.Now,
ENotificationsEmailLastSent = DateTime.Now,
EStatements = DeliveryPreference.Electronic,
EStatementsEmailStatus = EmailStatus.DeliveredSuccessfully,
EStatementsEmailFirstSent = DateTime.Now,
EStatementsEmailLastSent = DateTime.Now
};
private static MemberOptInSettings Clone(MemberOptInSettings settings)
=> new MemberOptInSettings
{
LastUpdatedBy = settings.LastUpdatedBy,
UniversalOptIn = settings.UniversalOptIn,
UnifiedOptInEmailStatus = settings.UnifiedOptInEmailStatus,
UnifiedOptInEmailFirstSent = settings.UnifiedOptInEmailFirstSent,
UnifiedOptInEmailLastSent = settings.UnifiedOptInEmailLastSent,
ENotifications = settings.ENotifications,
ENotificationsEmailStatus = settings.ENotificationsEmailStatus,
ENotificationsEmailFirstSent = settings.ENotificationsEmailFirstSent,
ENotificationsEmailLastSent = settings.ENotificationsEmailLastSent,
EStatements = settings.EStatements,
EStatementsEmailStatus = settings.EStatementsEmailStatus,
EStatementsEmailFirstSent = settings.EStatementsEmailFirstSent,
EStatementsEmailLastSent = settings.EStatementsEmailLastSent
};
private class FakeAuditableChanges : IAuditableChanges
{
public IDictionary<Auditable, string> SystemModifiedAuditableEntities { get; } =
new Dictionary<Auditable, string>();
public void SystemModified(Auditable entity, string modifiedBy)
{
SystemModifiedAuditableEntities[entity] = modifiedBy;
}
}
private class FakeMemberPreferences : IMemberPreferences
{
public IList<MemberPreference> Changes { get; }= new List<MemberPreference>();
public Task Add(MemberPreference preferenceChange)
{
Changes.Add(preferenceChange);
return Task.CompletedTask;
}
}
}
}
@@ -0,0 +1,28 @@
using System;
using LCU.API.Internal.MemberPreferencesApi.Models.EmailPolicies;
using LCU.Library.Internal.MemberPreferencesApiModels.Entities;
using LCU.Library.Internal.MemberPreferencesApiModels.Enums;
namespace LCU.Library.Internal.MemberPreferencesApiModels.UnitTests.Policies.Email.FailedToSend
{
public class UnifiedSixtyDaysUndeliverableEmailPolicyTest : SixtyDaysUndeliverableEmailPolicyTest
{
protected override SixtyDaysUndeliverableEmailPolicy Policy { get; }
public UnifiedSixtyDaysUndeliverableEmailPolicyTest()
{
Policy= new UnifiedSixtyDaysUndeliverableEmailPolicy(AuditableChanges, MemberPreferences);
}
protected override void SetEmailStatus(MemberOptInSettings settings, EmailStatus status)
=> settings.UnifiedOptInEmailStatus = status;
protected override void SetFirstSent(MemberOptInSettings settings, DateTime firstSent)
=> settings.UnifiedOptInEmailFirstSent = firstSent;
protected override void SetLastSend(MemberOptInSettings settings, DateTime lastSent)
=> settings.UnifiedOptInEmailLastSent = lastSent;
protected override void SetEligibleForPreferenceFlip(MemberOptInSettings settings)
=> settings.UniversalOptIn = "Electronic";
protected override string GetPreference(MemberOptInSettings settings)
=> settings.UniversalOptIn;
}
}