using System; using System.Collections.Generic; using Xunit; using System.Linq; using LCU.Shared.Collections.RepoApiLib.Models; using LCU.Shared.Collections.RepoApiLib.Repositories; using LCU.Shared.Collections.RepoApiLib.Persistence; using Microsoft.EntityFrameworkCore; namespace LCU.API.Collections.RepoApiTests.Repository { public class ExternalUserRepository : DbContextFromJson { private readonly AppDbContext _dbContext; public ExternalUserRepository() { _dbContext = SqliteDbContext; } [Fact] public async void External_Users_Sync_Ok() { var repository = new Shared.Collections.RepoApiLib.Repositories.ExternalUserRepository(_dbContext); // act var list = new List() { new ExternalUser() { ReferenceId = 100, Code = "gfrick", Name = "George Frick" }, new ExternalUser() { ReferenceId = 101, Code = "astiyer", Name = "Alex Stiyer" }, new ExternalUser() { ReferenceId = 102, Code = "mfleming", Name = "Mitchel Flemming" } }; await repository.SynchronizeSet(list); await _dbContext.SaveChangesAsync(); // fake restart the context / transaction foreach (var user in list) { _dbContext.Entry(user).State = EntityState.Detached; } //assert finds multiple var results = await repository.ListAsync(); Assert.NotNull(results); Assert.NotEmpty(results); Assert.Equal(3 , results.Count()); //assert finds one var result = await repository.FindByReferenceIdAsync(101); Assert.NotNull(result); Assert.Equal("astiyer", result.Code); var list2 = new List() { new ExternalUser() { ReferenceId = 100, Code = "gfrick", Name = "George Frick" }, new ExternalUser() { ReferenceId = 101, Code = "astiyer", Name = "Alex Stiyer" }, new ExternalUser() { ReferenceId = 103, Code = "kutley", Name = "Kyle Utley" }, new ExternalUser() { ReferenceId = 102, Code = "mfleming", Name = "Mitchel Flemming" } }; await repository.SynchronizeSet(list2); await _dbContext.SaveChangesAsync(); //assert finds multiple results = await repository.ListAsync(); Assert.NotNull(results); Assert.NotEmpty(results); Assert.Equal(4 , results.Count()); //assert finds one result = await repository.FindByReferenceIdAsync(103); Assert.NotNull(result); Assert.Equal("kutley", result.Code); } } }