persistence/DD.Persistence.Repository.Test/ChangeLogRepositoryTest.cs
2025-02-17 08:44:48 +05:00

133 lines
4.8 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;
using DD.Persistence.API.Services;
using Microsoft.Extensions.Caching.Memory;
using DD.Persistence.Database;
namespace DD.Persistence.Repository.Test;
public class ChangeLogRepositoryTest : IClassFixture<RepositoryTestFixture>
{
private readonly PersistencePostgresContext context;
private readonly IChangeLogRepository repo;
private readonly RepositoryTestFixture fixture;
public ChangeLogService service { get; }
public ChangeLogRepositoryTest(RepositoryTestFixture fixture, ChangeLogService changeLogService)
{
this.fixture = fixture;
context = fixture.GetDbContext();
//sut = new SetpointRepository(context);
//service = new ChangeLogService(cache, );
}
//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);
private ChangeLogCommitDto CreateChangeLogItem(Guid idDiscriminator)
{
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
var id Discriminator = Uuid7.Guid();
var commit = CreateChangeLogItem(idDiscriminator);
var result = await service.AddRange(idDiscriminator, commit, CancellationToken.None);
//assert
Assert.Equal(2, result);
}
//[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);
//}
}