persistence/DD.Persistence.Repository.Test/ChangeLogRepositoryTest.cs

109 lines
3.4 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 Shouldly;
using System.Text.Json;
using UuidExtensions;
namespace DD.Persistence.Repository.Test;
public class ChangeLogRepositoryTest : IClassFixture<RepositoryTestFixture>
{
private readonly PersistencePostgresContext context;
private readonly IChangeLogRepository repo;
public ChangeLogRepositoryTest(RepositoryTestFixture fixture)
{
context = fixture.GetDbContext();
repo = new ChangeLogRepository(context);
}
//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 async Task<ChangeLogCommitDto> ChangeLogItem(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 idDiscriminator = Uuid7.Guid();
var commit = await ChangeLogItem(idDiscriminator);
var result = await repo.AddRange(idDiscriminator, commit, CancellationToken.None);
//assert
Assert.Equal(2, result);
}
[Fact]
public async Task UpdateRangeReturnSuccess()
{
var idDiscriminator = Uuid7.Guid();
var commit1 = await ChangeLogItem(idDiscriminator);
var commit2 = await ChangeLogItem(idDiscriminator);
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();
await ChangeLogItem(idDiscriminator);
await ChangeLogItem(idDiscriminator);
await ChangeLogItem(idDiscriminator);
//act
var result = await repo.ClearAndAddRange(idDiscriminator, commit, CancellationToken.None);
//assert
Assert.Equal(2, result);
}
}