2025-02-12 16:19:08 +05:00
|
|
|
|
using DD.Persistence.Database.Model;
|
|
|
|
|
using DD.Persistence.Database.Postgres.Repositories;
|
|
|
|
|
using DD.Persistence.Database.Repositories;
|
|
|
|
|
using DD.Persistence.Models.Common;
|
|
|
|
|
using DD.Persistence.Models.Requests;
|
|
|
|
|
using DD.Persistence.Models;
|
|
|
|
|
using DD.Persistence.Repositories;
|
|
|
|
|
using System.Text.Json;
|
|
|
|
|
using UuidExtensions;
|
2025-02-17 08:44:48 +05:00
|
|
|
|
using DD.Persistence.API.Services;
|
|
|
|
|
using Microsoft.Extensions.Caching.Memory;
|
|
|
|
|
using DD.Persistence.Database;
|
2025-02-12 16:19:08 +05:00
|
|
|
|
|
|
|
|
|
namespace DD.Persistence.Repository.Test;
|
|
|
|
|
public class ChangeLogRepositoryTest : IClassFixture<RepositoryTestFixture>
|
|
|
|
|
{
|
|
|
|
|
private readonly PersistencePostgresContext context;
|
|
|
|
|
private readonly IChangeLogRepository repo;
|
2025-02-17 08:44:48 +05:00
|
|
|
|
private readonly RepositoryTestFixture fixture;
|
2025-02-12 16:19:08 +05:00
|
|
|
|
|
2025-02-17 08:44:48 +05:00
|
|
|
|
public ChangeLogService service { get; }
|
|
|
|
|
|
|
|
|
|
public ChangeLogRepositoryTest(RepositoryTestFixture fixture, ChangeLogService changeLogService)
|
2025-02-12 16:19:08 +05:00
|
|
|
|
{
|
2025-02-17 08:44:48 +05:00
|
|
|
|
this.fixture = fixture;
|
2025-02-12 16:19:08 +05:00
|
|
|
|
context = fixture.GetDbContext();
|
2025-02-17 08:44:48 +05:00
|
|
|
|
//sut = new SetpointRepository(context);
|
|
|
|
|
|
|
|
|
|
//service = new ChangeLogService(cache, );
|
2025-02-12 16:19:08 +05:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//Task<int> MarkAsDeleted(Guid idEditor, IEnumerable<Guid> ids, string comment, CancellationToken token);
|
|
|
|
|
|
|
|
|
|
//Task<int> MarkAsDeleted(Guid idEditor, Guid idDiscriminator, string comment, CancellationToken token);
|
|
|
|
|
//Task<int> ClearAndAddRange(Guid idDiscriminator, ChangeLogCommitDto commitDto, CancellationToken token);
|
|
|
|
|
|
2025-02-17 08:44:48 +05:00
|
|
|
|
private ChangeLogCommitDto CreateChangeLogItem(Guid idDiscriminator)
|
2025-02-12 16:19:08 +05:00
|
|
|
|
{
|
|
|
|
|
var idAuthor = Uuid7.Guid();
|
|
|
|
|
var changeLogItems = new List<ChangeLogValuesDto>()
|
|
|
|
|
{
|
|
|
|
|
new ChangeLogValuesDto(){
|
|
|
|
|
Id = Uuid7.Guid(),
|
|
|
|
|
Value = new Dictionary<string, object>(){
|
|
|
|
|
{ "1", 1 },
|
|
|
|
|
{ "2", 2 },
|
|
|
|
|
{ "3", 3 }
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
var commit = new ChangeLogCommitDto(idAuthor, "Комментарий 1", changeLogItems);
|
|
|
|
|
return commit;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
public async Task AddRangeReturnSuccess()
|
|
|
|
|
{
|
|
|
|
|
//act
|
2025-02-17 08:44:48 +05:00
|
|
|
|
var id Discriminator = Uuid7.Guid();
|
|
|
|
|
var commit = CreateChangeLogItem(idDiscriminator);
|
|
|
|
|
var result = await service.AddRange(idDiscriminator, commit, CancellationToken.None);
|
2025-02-12 16:19:08 +05:00
|
|
|
|
|
|
|
|
|
//assert
|
|
|
|
|
Assert.Equal(2, result);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2025-02-17 08:44:48 +05:00
|
|
|
|
//[Fact]
|
|
|
|
|
//public async Task UpdateRangeReturnSuccess()
|
|
|
|
|
//{
|
|
|
|
|
// var idDiscriminator = Uuid7.Guid();
|
|
|
|
|
// var commit1 = await CreateChangeLogItem(idDiscriminator);
|
|
|
|
|
// var result = await repo.AddRange(idDiscriminator, commit1, CancellationToken.None);
|
|
|
|
|
|
|
|
|
|
// var commit2 = await CreateChangeLogItem(idDiscriminator);
|
|
|
|
|
// result = await repo.AddRange(idDiscriminator, commit2, CancellationToken.None);
|
|
|
|
|
|
|
|
|
|
// var items = await repo.GetGtDate(idDiscriminator, DateTimeOffset.UtcNow.AddDays(-1), CancellationToken.None);
|
|
|
|
|
|
|
|
|
|
// if (items == null)
|
|
|
|
|
// Assert.Fail("Не найдены элементы changeLog");
|
|
|
|
|
|
|
|
|
|
// var updated = items.ToArray();
|
|
|
|
|
// foreach (var item in updated)
|
|
|
|
|
// {
|
|
|
|
|
// item.Value.Add("4", 4);
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// //act
|
|
|
|
|
// var commit = new ChangeLogCommitDto(Uuid7.Guid(), "Комментарий 2", updated);
|
|
|
|
|
// result = await repo.UpdateRange(commit, CancellationToken.None);
|
|
|
|
|
|
|
|
|
|
// //assert
|
|
|
|
|
// //изменены 2 старые записи,
|
|
|
|
|
// //добавлены 2 новые записи
|
|
|
|
|
// //добавлен общий коммит
|
|
|
|
|
// //итого = 2+2+1 = 5
|
|
|
|
|
// Assert.Equal(5, result);
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
//[Fact]
|
|
|
|
|
//public async Task ClearAndAddRangeReturnSuccess()
|
|
|
|
|
//{
|
|
|
|
|
// var idDiscriminator = Uuid7.Guid();
|
|
|
|
|
// var commit1 = await CreateChangeLogItem(idDiscriminator);
|
|
|
|
|
// var result = await repo.AddRange(idDiscriminator, commit1, CancellationToken.None);
|
|
|
|
|
|
|
|
|
|
// var commit2 = await CreateChangeLogItem(idDiscriminator);
|
|
|
|
|
// result = await repo.AddRange(idDiscriminator, commit2, CancellationToken.None);
|
|
|
|
|
|
|
|
|
|
// var commit3 = await CreateChangeLogItem(idDiscriminator);
|
|
|
|
|
// result = await repo.AddRange(idDiscriminator, commit3, CancellationToken.None);
|
|
|
|
|
|
|
|
|
|
// //act
|
|
|
|
|
// var commit4 = await CreateChangeLogItem(idDiscriminator);
|
|
|
|
|
// var items = await repo.GetGtDate(idDiscriminator, DateTimeOffset.UtcNow.AddDays(-1), CancellationToken.None);
|
|
|
|
|
// commit4.ChangeLogItems = items;
|
|
|
|
|
// result = await repo.ClearAndAddRange(idDiscriminator, commit4, CancellationToken.None);
|
|
|
|
|
|
|
|
|
|
// //assert
|
|
|
|
|
// //добавлены 3 записи и 3 коммита к ним,
|
|
|
|
|
// //добавлена 1 новая запись и 1 коммит к ней
|
|
|
|
|
// Assert.Equal(8, result);
|
|
|
|
|
|
|
|
|
|
// var paginationRequest = new PaginationRequest();
|
|
|
|
|
// var items2 = await repo.GetByDate(idDiscriminator, DateTimeOffset.UtcNow.AddMinutes(-10), paginationRequest, CancellationToken.None);
|
|
|
|
|
//}
|
2025-02-12 16:19:08 +05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|