Автотесты (начало)

This commit is contained in:
Olga Nemt 2025-02-12 16:19:08 +05:00
parent ebd2cff40d
commit 7c2ab3f6e2

View File

@ -0,0 +1,108 @@
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);
}
}