Files
monorepo/LCU.API.Internal.MemberPreferencesApi/LCU.API.Internal.MemberPreferencesApi.UnitTests/Repository/MemberPreferenceRepositoryTest.cs
T
2026-03-31 16:43:12 -05:00

176 lines
6.4 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using LCU.API.Internal.MemberPreferencesApi.Services;
using LCU.Library.Internal.MemberPreferencesApiModels.Entities;
using LCU.Library.Internal.MemberPreferencesApiModels.Enums;
using Infrastructure.Services;
using Microsoft.EntityFrameworkCore;
using Moq;
using NUnit.Framework;
using LCU.API.Internal.MemberPreferencesApiLib.Persistence;
using LCU.API.Internal.MemberPreferencesApiLib.Repositories;
namespace LCU.API.Internal.MemberPreferencesApi.UnitTests.Repository
{
public class MemberPreferenceRepositoryTest
{
private ApplicationDbContext _context;
private MemberPreferenceRepository _repository;
private UnifiedOptInRepository _optInRepository;
[SetUp]
public void Setup()
{
var mockDateTime = new DateTimeService();
var options = new DbContextOptionsBuilder<ApplicationDbContext>()
.UseInMemoryDatabase(Guid.NewGuid().ToString())
.EnableSensitiveDataLogging()
.Options;
_context = new ApplicationDbContext(options);
_repository = new MemberPreferenceRepository(_context);
_optInRepository = new UnifiedOptInRepository(_context);
}
[Test]
public async Task Basic_Flow_Test()
{
var saved = await _repository.GetMemberPreferencesAsync("99");
Assert.NotNull(saved);
Assert.IsEmpty(saved);
await _repository.SaveMemberPreferenceAsync(new MemberPreference
{
UserId = "99",
Preference = PreferenceType.ENotification,
Value = "True"
});
await _context.SaveChangesAsync();
saved = await _repository.GetMemberPreferencesAsync("99");
Assert.NotNull(saved);
Assert.IsNotEmpty(saved);
var first = saved.First();
// Make sure our Auditable is working.
Assert.NotNull(first.CreatedBy);
Assert.NotNull(first.Created);
Assert.NotNull(first.LastUpdatedBy);
Assert.NotNull(first.LastUpdated);
}
[Test]
public async Task Bulk_Flow_Test()
{
var memberResult = await _optInRepository.GetMemberOptInSettings("99");
Assert.Null(memberResult);
var listOfPreferences = new List<MemberPreference>
{
new MemberPreference
{
UserId = "99",
Preference = PreferenceType.EStatements,
Value = "True"
},
new MemberPreference
{
UserId = "100",
Preference = PreferenceType.EStatements,
Value = "True"
},
new MemberPreference
{
UserId = "101",
Preference = PreferenceType.EStatements,
Value = "True"
}
};
await _repository.BulkSaveMemberPreferenceAsync(listOfPreferences);
await _context.SaveChangesAsync();
var saved = await _repository.GetMemberPreferencesAsync("99");
Assert.NotNull(saved);
Assert.IsNotEmpty(saved);
var first = saved.First();
// Make sure our Auditable is working.
Assert.NotNull(first.CreatedBy);
Assert.NotNull(first.Created);
Assert.NotNull(first.LastUpdatedBy);
Assert.NotNull(first.LastUpdated);
saved = await _repository.GetMemberPreferencesAsync("100");
Assert.NotNull(saved);
Assert.IsNotEmpty(saved);
first = saved.First();
// Make sure our Auditable is working.
Assert.NotNull(first.CreatedBy);
Assert.NotNull(first.Created);
Assert.NotNull(first.LastUpdatedBy);
Assert.NotNull(first.LastUpdated);
saved = await _repository.GetMemberPreferencesAsync("101");
Assert.NotNull(saved);
Assert.IsNotEmpty(saved);
first = saved.First();
// Make sure our Auditable is working.
Assert.NotNull(first.CreatedBy);
Assert.NotNull(first.Created);
Assert.NotNull(first.LastUpdatedBy);
Assert.NotNull(first.LastUpdated);
memberResult = await _optInRepository.GetMemberOptInSettings("99");
Assert.NotNull(memberResult);
Assert.AreEqual("True", memberResult.EStatements);
memberResult = await _optInRepository.GetMemberOptInSettings("100");
Assert.NotNull(memberResult);
Assert.AreEqual("True", memberResult.EStatements);
memberResult = await _optInRepository.GetMemberOptInSettings("101");
Assert.NotNull(memberResult);
Assert.AreEqual("True", memberResult.EStatements);
listOfPreferences = new List<MemberPreference>
{
new MemberPreference
{
UserId = "99",
Preference = PreferenceType.ENotification,
Value = "Yes"
},
new MemberPreference
{
UserId = "100",
Preference = PreferenceType.ENotification,
Value = "Yes"
},
new MemberPreference
{
UserId = "101",
Preference = PreferenceType.ENotification,
Value = "Yes"
}
};
await _repository.BulkSaveMemberPreferenceAsync(listOfPreferences);
memberResult = await _optInRepository.GetMemberOptInSettings("99");
Assert.AreEqual(1, saved.Count);
Assert.NotNull(memberResult);
Assert.AreEqual("Yes", memberResult.ENotifications);
memberResult = await _optInRepository.GetMemberOptInSettings("100");
Assert.AreEqual(1, saved.Count);
Assert.NotNull(memberResult);
Assert.AreEqual("Yes", memberResult.ENotifications);
memberResult = await _optInRepository.GetMemberOptInSettings("101");
Assert.AreEqual(1, saved.Count);
Assert.NotNull(memberResult);
Assert.AreEqual("Yes", memberResult.ENotifications);
}
}
}