using System; using System.Linq; using System.Threading.Tasks; using LCU.API.Internal.Operations.IncentiveApiLib.Persistence; using LCU.API.Internal.Operations.IncentiveApiLib.Repositories; using LCU.API.Internal.Operations.IncentiveApi.Services; using LCU.Library.Internal.IncentiveApiModels.Entities; using Microsoft.EntityFrameworkCore; using Moq; using NUnit.Framework; namespace Application.UnitTests.Repository { public class GoalChangeRepositoryTest { private ApplicationDbContext _context; private GoalChangeRepository _repository; [SetUp] public void Setup() { var mockDateTime = new DateTimeService(); var mockCurrentUserService = Mock.Of(); Mock.Get(mockCurrentUserService).Setup(s => s.GetCurrentUser()).Returns(new ApplicationUser() { Email = "JohnTest@test.com", }); var options = new DbContextOptionsBuilder() .UseInMemoryDatabase(Guid.NewGuid().ToString()) .EnableSensitiveDataLogging(true) .Options; _context = new ApplicationDbContext(options, mockCurrentUserService, mockDateTime); _repository = new GoalChangeRepository(_context); } [Test] public async Task Basic_Flow_Test() { var saved = await _repository.GetGoalChangesAsync(); Assert.NotNull(saved); Assert.IsEmpty(saved); var newId = await _repository.SaveGoalChangeAsync(new GoalChange()); await _context.SaveChangesAsync(); saved = await _repository.GetGoalChangesAsync(); Assert.NotNull(saved); Assert.IsNotEmpty(saved); var first = saved.First(); // Make sure our Auditable is working. Assert.NotNull(first.CreatedBy); Assert.NotNull(first.Created); } } }