Files
monorepo/LCU.API.Collections.RepoApi-old/LCU.API.Collections.RepoApiTests/Repository/ExternalUserRepositoryTest.cs
T
2026-04-20 14:47:24 -05:00

112 lines
3.5 KiB
C#

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<ExternalUser>()
{
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<ExternalUser>()
{
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);
}
}
}