Интеграционные тесты

This commit is contained in:
Olga Nemt 2025-02-17 17:34:07 +05:00
parent 09cfccaa38
commit 05b58da1ab
4 changed files with 167 additions and 143 deletions

View File

@ -19,10 +19,10 @@ public class ChangeLogClient : BaseClient, IChangeLogClient
} }
/// <inheritdoc/> /// <inheritdoc/>
public async Task<int> ClearAndAddRange(Guid idDiscriminator, IEnumerable<ChangeLogValuesDto> dtos, CancellationToken token) public async Task<int> ClearAndAddRange(Guid idDiscriminator, IEnumerable<ChangeLogValuesDto> dtos, string comment, CancellationToken token)
{ {
var result = await ExecuteGetResponse( var result = await ExecuteGetResponse(
async () => await refitChangeLogClient.ClearAndAddRange(idDiscriminator, dtos, token), token); async () => await refitChangeLogClient.ClearAndAddRange(idDiscriminator, dtos, comment, token), token);
return result; return result;
} }
@ -47,55 +47,55 @@ public class ChangeLogClient : BaseClient, IChangeLogClient
} }
/// <inheritdoc/> /// <inheritdoc/>
public async Task<int> Add(Guid idDiscriminator, ChangeLogValuesDto dto, CancellationToken token) public async Task<int> Add(Guid idDiscriminator, ChangeLogValuesDto dto, string comment, CancellationToken token)
{ {
var result = await ExecutePostResponse( var result = await ExecutePostResponse(
async () => await refitChangeLogClient.Add(idDiscriminator, dto, token), token); async () => await refitChangeLogClient.Add(idDiscriminator, dto, comment, token), token);
return result; return result;
} }
/// <inheritdoc/> /// <inheritdoc/>
public async Task<int> AddRange(Guid idDiscriminator, IEnumerable<ChangeLogValuesDto> dtos, CancellationToken token) public async Task<int> AddRange(Guid idDiscriminator, IEnumerable<ChangeLogValuesDto> dtos, string comment, CancellationToken token)
{ {
var result = await ExecutePostResponse( var result = await ExecutePostResponse(
async () => await refitChangeLogClient.AddRange(idDiscriminator, dtos, token), token); async () => await refitChangeLogClient.AddRange(idDiscriminator, dtos, comment, token), token);
return result; return result;
} }
/// <inheritdoc/> /// <inheritdoc/>
public async Task<int> Update(ChangeLogValuesDto dto, CancellationToken token) public async Task<int> Update(ChangeLogValuesDto dto, string comment, CancellationToken token)
{ {
var result = await ExecutePostResponse( var result = await ExecutePostResponse(
async () => await refitChangeLogClient.Update(dto, token), token); async () => await refitChangeLogClient.Update(dto, comment, token), token);
return result; return result;
} }
/// <inheritdoc/> /// <inheritdoc/>
public async Task<int> UpdateRange(IEnumerable<ChangeLogValuesDto> dtos, CancellationToken token) public async Task<int> UpdateRange(IEnumerable<ChangeLogValuesDto> dtos, string comment, CancellationToken token)
{ {
var result = await ExecutePostResponse( var result = await ExecutePostResponse(
async () => await refitChangeLogClient.UpdateRange(dtos, token), token); async () => await refitChangeLogClient.UpdateRange(dtos, comment, token), token);
return result; return result;
} }
/// <inheritdoc/> /// <inheritdoc/>
public async Task<int> Delete(Guid id, CancellationToken token) public async Task<int> Delete(Guid id, string comment, CancellationToken token)
{ {
var result = await ExecutePostResponse( var result = await ExecutePostResponse(
async () => await refitChangeLogClient.Delete(id, token), token); async () => await refitChangeLogClient.Delete(id, comment, token), token);
return result; return result;
} }
/// <inheritdoc/> /// <inheritdoc/>
public async Task<int> DeleteRange(IEnumerable<Guid> ids, CancellationToken token) public async Task<int> DeleteRange(IEnumerable<Guid> ids, string comment, CancellationToken token)
{ {
var result = await ExecutePostResponse( var result = await ExecutePostResponse(
async () => await refitChangeLogClient.DeleteRange(ids, token), token); async () => await refitChangeLogClient.DeleteRange(ids, comment, token), token);
return result; return result;
} }

View File

@ -9,48 +9,53 @@ namespace DD.Persistence.Client.Clients.Interfaces;
/// </summary> /// </summary>
public interface IChangeLogClient : IDisposable public interface IChangeLogClient : IDisposable
{ {
/// <summary> /// <summary>
/// Добавить одну запись /// Добавить одну запись
/// </summary> /// </summary>
/// <param name="idDiscriminator"></param> /// <param name="idDiscriminator"></param>
/// <param name="dto"></param> /// <param name="dto"></param>
/// <param name="token"></param> /// <param name="comment"></param>
/// <returns></returns> /// <param name="token"></param>
Task<int> Add(Guid idDiscriminator, ChangeLogValuesDto dto, CancellationToken token); /// <returns></returns>
Task<int> Add(Guid idDiscriminator, ChangeLogValuesDto dto, string comment, CancellationToken token);
/// <summary> /// <summary>
/// Добавить несколько записей /// Добавить несколько записей
/// </summary> /// </summary>
/// <param name="idDiscriminator"></param> /// <param name="idDiscriminator"></param>
/// <param name="dtos"></param> /// <param name="dtos"></param>
/// <param name="token"></param> /// <param name="comment"></param>
/// <returns></returns> /// <param name="token"></param>
Task<int> AddRange(Guid idDiscriminator, IEnumerable<ChangeLogValuesDto> dtos, CancellationToken token); /// <returns></returns>
Task<int> AddRange(Guid idDiscriminator, IEnumerable<ChangeLogValuesDto> dtos, string comment, CancellationToken token);
/// <summary> /// <summary>
/// Импорт с заменой: удаление старых строк и добавление новых /// Импорт с заменой: удаление старых строк и добавление новых
/// </summary> /// </summary>
/// <param name="idDiscriminator"></param> /// <param name="idDiscriminator"></param>
/// <param name="dtos"></param> /// <param name="dtos"></param>
/// <param name="token"></param> /// <param name="comment"></param>
/// <returns></returns> /// <param name="token"></param>
Task<int> ClearAndAddRange(Guid idDiscriminator, IEnumerable<ChangeLogValuesDto> dtos, CancellationToken token); /// <returns></returns>
Task<int> ClearAndAddRange(Guid idDiscriminator, IEnumerable<ChangeLogValuesDto> dtos, string comment, CancellationToken token);
/// <summary> /// <summary>
/// Удалить одну запись /// Удалить одну запись
/// </summary> /// </summary>
/// <param name="id"></param> /// <param name="id"></param>
/// <param name="token"></param> /// <param name="comment"></param>
/// <returns></returns> /// <param name="token"></param>
Task<int> Delete(Guid id, CancellationToken token); /// <returns></returns>
Task<int> Delete(Guid id, string comment, CancellationToken token);
/// <summary> /// <summary>
/// Удалить несколько записей /// Удалить несколько записей
/// </summary> /// </summary>
/// <param name="ids"></param> /// <param name="ids"></param>
/// <param name="token"></param> /// <param name="comment"></param>
/// <returns></returns> /// <param name="token"></param>
Task<int> DeleteRange(IEnumerable<Guid> ids, CancellationToken token); /// <returns></returns>
Task<int> DeleteRange(IEnumerable<Guid> ids, string comment, CancellationToken token);
/// <summary> /// <summary>
/// Получение актуальных данных на определенную дату (с пагинацией) /// Получение актуальных данных на определенную дату (с пагинацией)
@ -80,19 +85,21 @@ public interface IChangeLogClient : IDisposable
/// <returns></returns> /// <returns></returns>
Task<DatesRangeDto?> GetDatesRange(Guid idDiscriminator, CancellationToken token); Task<DatesRangeDto?> GetDatesRange(Guid idDiscriminator, CancellationToken token);
/// <summary> /// <summary>
/// Обновить одну запись /// Обновить одну запись
/// </summary> /// </summary>
/// <param name="dto"></param> /// <param name="dto"></param>
/// <param name="token"></param> /// <param name="comment"></param>
/// <returns></returns> /// <param name="token"></param>
Task<int> Update(ChangeLogValuesDto dto, CancellationToken token); /// <returns></returns>
Task<int> Update(ChangeLogValuesDto dto, string comment, CancellationToken token);
/// <summary> /// <summary>
/// Обновить несколько записей /// Обновить несколько записей
/// </summary> /// </summary>
/// <param name="dtos"></param> /// <param name="dtos"></param>
/// <param name="token"></param> /// <param name="comment"></param>
/// <returns></returns> /// <param name="token"></param>
Task<int> UpdateRange(IEnumerable<ChangeLogValuesDto> dtos, CancellationToken token); /// <returns></returns>
Task<int> UpdateRange(IEnumerable<ChangeLogValuesDto> dtos, string comment, CancellationToken token);
} }

View File

@ -16,7 +16,7 @@ public interface IRefitChangeLogClient : IRefitClient, IDisposable
/// Импорт с заменой: удаление старых строк и добавление новых /// Импорт с заменой: удаление старых строк и добавление новых
/// </summary> /// </summary>
[Post($"{BaseRoute}/replace/{{idDiscriminator}}")] [Post($"{BaseRoute}/replace/{{idDiscriminator}}")]
Task<IApiResponse<int>> ClearAndAddRange(Guid idDiscriminator, IEnumerable<ChangeLogValuesDto> dtos, CancellationToken token); Task<IApiResponse<int>> ClearAndAddRange(Guid idDiscriminator, IEnumerable<ChangeLogValuesDto> dtos, string comment, CancellationToken token);
/// <summary> /// <summary>
/// Получение актуальных данных на определенную дату (с пагинацией) /// Получение актуальных данных на определенную дату (с пагинацией)
@ -38,37 +38,37 @@ public interface IRefitChangeLogClient : IRefitClient, IDisposable
/// Добавить одну запись /// Добавить одну запись
/// </summary> /// </summary>
[Post($"{BaseRoute}/{{idDiscriminator}}")] [Post($"{BaseRoute}/{{idDiscriminator}}")]
Task<IApiResponse<int>> Add(Guid idDiscriminator, ChangeLogValuesDto dto, CancellationToken token); Task<IApiResponse<int>> Add(Guid idDiscriminator, ChangeLogValuesDto dto, string comment, CancellationToken token);
/// <summary> /// <summary>
/// Добавить несколько записей /// Добавить несколько записей
/// </summary> /// </summary>
[Post($"{BaseRoute}/range/{{idDiscriminator}}")] [Post($"{BaseRoute}/range/{{idDiscriminator}}")]
Task<IApiResponse<int>> AddRange(Guid idDiscriminator, IEnumerable<ChangeLogValuesDto> dtos, CancellationToken token); Task<IApiResponse<int>> AddRange(Guid idDiscriminator, IEnumerable<ChangeLogValuesDto> dtos, string comment, CancellationToken token);
/// <summary> /// <summary>
/// Обновить одну запись /// Обновить одну запись
/// </summary> /// </summary>
[Put($"{BaseRoute}")] [Put($"{BaseRoute}")]
Task<IApiResponse<int>> Update(ChangeLogValuesDto dto, CancellationToken token); Task<IApiResponse<int>> Update(ChangeLogValuesDto dto, string comment, CancellationToken token);
/// <summary> /// <summary>
/// Обновить несколько записей /// Обновить несколько записей
/// </summary> /// </summary>
[Put($"{BaseRoute}/range")] [Put($"{BaseRoute}/range")]
Task<IApiResponse<int>> UpdateRange(IEnumerable<ChangeLogValuesDto> dtos, CancellationToken token); Task<IApiResponse<int>> UpdateRange(IEnumerable<ChangeLogValuesDto> dtos, string comment, CancellationToken token);
/// <summary> /// <summary>
/// Удалить одну запись /// Удалить одну запись
/// </summary> /// </summary>
[Delete($"{BaseRoute}")] [Delete($"{BaseRoute}")]
Task<IApiResponse<int>> Delete(Guid id, CancellationToken token); Task<IApiResponse<int>> Delete(Guid id, string comment, CancellationToken token);
/// <summary> /// <summary>
/// Удалить несколько записей /// Удалить несколько записей
/// </summary> /// </summary>
[Delete($"{BaseRoute}/range")] [Delete($"{BaseRoute}/range")]
Task<IApiResponse<int>> DeleteRange([Body] IEnumerable<Guid> ids, CancellationToken token); Task<IApiResponse<int>> DeleteRange([Body] IEnumerable<Guid> ids, string comment, CancellationToken token);
/// <summary> /// <summary>
/// Получение списка дат, в которые происходили изменения (день, месяц, год, без времени) /// Получение списка дат, в которые происходили изменения (день, месяц, год, без времени)

View File

@ -15,6 +15,7 @@ namespace DD.Persistence.IntegrationTests.Controllers;
public class ChangeLogControllerTest : BaseIntegrationTest public class ChangeLogControllerTest : BaseIntegrationTest
{ {
private readonly IChangeLogClient client; private readonly IChangeLogClient client;
private readonly PaginationRequest paginationRequest;
private static readonly Random generatorRandomDigits = new(); private static readonly Random generatorRandomDigits = new();
public ChangeLogControllerTest(WebAppFactoryFixture factory) : base(factory) public ChangeLogControllerTest(WebAppFactoryFixture factory) : base(factory)
@ -25,22 +26,13 @@ public class ChangeLogControllerTest : BaseIntegrationTest
client = scope.ServiceProvider client = scope.ServiceProvider
.GetRequiredService<IChangeLogClient>(); .GetRequiredService<IChangeLogClient>();
}
[Fact] paginationRequest = new PaginationRequest()
public async Task ClearAndInsertRange_InEmptyDb() {
{ Skip = 0,
// arrange Take = 10,
dbContext.CleanupDbSet<ChangeLog>(); SortSettings = String.Empty,
};
var idDiscriminator = Guid.NewGuid();
var dtos = Generate(2);
// act
var result = await client.ClearAndAddRange(idDiscriminator, dtos, new CancellationToken());
// assert
Assert.Equal(2, result);
} }
[Fact] [Fact]
@ -48,12 +40,12 @@ public class ChangeLogControllerTest : BaseIntegrationTest
{ {
// arrange // arrange
var insertedCount = 10; var insertedCount = 10;
var createdResult = CreateChangeLogItems(insertedCount, (-15, 15)); var newEntitiesData = await CreateAndReturnNewDtos(insertedCount, (-15, 15));
var idDiscriminator = createdResult.Item1; var idDiscriminator = newEntitiesData.Item1;
var dtos = createdResult.Item2.Select(e => e.Adapt<ChangeLogValuesDto>()); var dtos = newEntitiesData.Item2;
// act
var result = await client.ClearAndAddRange(idDiscriminator, dtos, new CancellationToken()); var result = await client.ClearAndAddRange(idDiscriminator, dtos, "Добавление новых элементов и очистка старых", CancellationToken.None);
// assert // assert
Assert.Equal(insertedCount * 2, result); Assert.Equal(insertedCount * 2, result);
@ -67,9 +59,10 @@ public class ChangeLogControllerTest : BaseIntegrationTest
var idDiscriminator = Guid.NewGuid(); var idDiscriminator = Guid.NewGuid();
var dtos = Generate(count); var dtos = Generate(count);
var dto = dtos.FirstOrDefault()!; var dto = dtos.FirstOrDefault()!;
var comment = "Создаю 1 элемент";
// act // act
var result = await client.Add(idDiscriminator, dto, new CancellationToken()); var result = await client.Add(idDiscriminator, dto, comment, CancellationToken.None);
// assert // assert
Assert.Equal(count, result); Assert.Equal(count, result);
@ -82,9 +75,10 @@ public class ChangeLogControllerTest : BaseIntegrationTest
var count = 3; var count = 3;
var idDiscriminator = Guid.NewGuid(); var idDiscriminator = Guid.NewGuid();
var dtos = Generate(count); var dtos = Generate(count);
var comment = "Создаю 3 элемента";
// act // act
var result = await client.AddRange(idDiscriminator, dtos, new CancellationToken()); var result = await client.AddRange(idDiscriminator, dtos, comment, CancellationToken.None);
// assert // assert
Assert.Equal(count, result); Assert.Equal(count, result);
@ -99,7 +93,8 @@ public class ChangeLogControllerTest : BaseIntegrationTest
var idDiscriminator = Guid.NewGuid(); var idDiscriminator = Guid.NewGuid();
var dtos = Generate(1); var dtos = Generate(1);
var dto = dtos.FirstOrDefault()!; var dto = dtos.FirstOrDefault()!;
var result = await client.Add(idDiscriminator, dto, new CancellationToken()); var comment = "Создаю 1 элемент";
var result = await client.Add(idDiscriminator, dto, comment, CancellationToken.None);
var entity = dbContext.ChangeLog var entity = dbContext.ChangeLog
.Where(x => x.IdDiscriminator == idDiscriminator) .Where(x => x.IdDiscriminator == idDiscriminator)
@ -107,7 +102,8 @@ public class ChangeLogControllerTest : BaseIntegrationTest
dto = entity.Adapt<ChangeLogValuesDto>(); dto = entity.Adapt<ChangeLogValuesDto>();
// act // act
result = await client.Update(dto, new CancellationToken()); comment = "Обновляю 1 элемент";
result = await client.Update(dto, comment, CancellationToken.None);
// assert // assert
Assert.Equal(2, result); Assert.Equal(2, result);
@ -139,21 +135,17 @@ public class ChangeLogControllerTest : BaseIntegrationTest
[Fact] [Fact]
public async Task UpdateRange_returns_success() public async Task UpdateRange_returns_success()
{ {
// arrange
var count = 2; var count = 2;
var idDiscriminator = Guid.NewGuid();
var dtos = Generate(count); var dtos = Generate(count);
var entities = dtos.Select(d => d.Adapt<ChangeLog>()).ToArray(); var comment = "Создаю 3 элемента";
dbContext.ChangeLog.AddRange(entities);
dbContext.SaveChanges();
dtos = entities.Select(c => new ChangeLogValuesDto()
{
Id = c.Id,
Value = c.Value
}).ToArray();
// act // act
var result = await client.UpdateRange(dtos, new CancellationToken()); var result = await client.AddRange(idDiscriminator, dtos, comment, CancellationToken.None);
var paginatedResult = await client.GetByDate(idDiscriminator, DateTimeOffset.UtcNow.AddDays(1), paginationRequest, CancellationToken.None);
// act
comment = "Обновляю 3 элемента";
result = await client.UpdateRange(paginatedResult.Items, comment, CancellationToken.None);
// assert // assert
Assert.Equal(count * 2, result); Assert.Equal(count * 2, result);
@ -163,14 +155,13 @@ public class ChangeLogControllerTest : BaseIntegrationTest
public async Task Delete_returns_success() public async Task Delete_returns_success()
{ {
// arrange // arrange
var dtos = Generate(1); var insertedCount = 1;
var dto = dtos.FirstOrDefault()!; var newEntitiesData = await CreateAndReturnNewDtos(insertedCount, (-15, -1));
var entity = dto.Adapt<ChangeLog>(); var idDiscriminator = newEntitiesData.Item1;
dbContext.ChangeLog.Add(entity); var dto = newEntitiesData.Item2.FirstOrDefault();
dbContext.SaveChanges();
// act // act
var result = await client.Delete(entity.Id, new CancellationToken()); var result = await client.Delete(dto!.Id, "Удаление одной записи", CancellationToken.None);
// assert // assert
Assert.Equal(1, result); Assert.Equal(1, result);
@ -180,30 +171,29 @@ public class ChangeLogControllerTest : BaseIntegrationTest
public async Task DeleteRange_returns_success() public async Task DeleteRange_returns_success()
{ {
// arrange // arrange
var count = 10; var insertedCount = 10;
var dtos = Generate(count); var newEntitiesData = await CreateAndReturnNewDtos(insertedCount, (-15, -1));
var entities = dtos.Select(d => d.Adapt<ChangeLog>()).ToArray(); var idDiscriminator = newEntitiesData.Item1;
dbContext.ChangeLog.AddRange(entities); var dtos = newEntitiesData.Item2;
dbContext.SaveChanges();
// act // act
var ids = entities.Select(e => e.Id); var ids = dtos.Select(e => e.Id);
var result = await client.DeleteRange(ids, new CancellationToken()); var result = await client.DeleteRange(ids, "Удаление нескольких записей", CancellationToken.None);
// assert // assert
Assert.Equal(count, result); Assert.Equal(insertedCount, result);
} }
[Fact] [Fact]
public async Task GetDatesRange_returns_success() public async Task GetDatesRange_returns_success()
{ {
// arrange //arrange
var changeLogItems = CreateChangeLogItems(3, (-15, 15)); var changeLogItems = await CreateAndReturnNewEntities(3, (-15, -1));
var idDiscriminator = changeLogItems.Item1; var idDiscriminator = changeLogItems.Item1;
var entities = changeLogItems.Item2.OrderBy(e => e.Creation); var entities = changeLogItems.Item2.OrderBy(c => c.Creation);
// act // act
var result = await client.GetDatesRange(idDiscriminator, new CancellationToken()); var result = await client.GetDatesRange(idDiscriminator, CancellationToken.None);
// assert // assert
Assert.NotNull(result); Assert.NotNull(result);
@ -228,7 +218,7 @@ public class ChangeLogControllerTest : BaseIntegrationTest
//создаем записи //создаем записи
var count = 5; var count = 5;
var changeLogItems = CreateChangeLogItems(count, (-15, 15)); var changeLogItems = await CreateAndReturnNewDtos(count, (-15, 15));
var idDiscriminator = changeLogItems.Item1; var idDiscriminator = changeLogItems.Item1;
var entities = changeLogItems.Item2; var entities = changeLogItems.Item2;
@ -237,14 +227,7 @@ public class ChangeLogControllerTest : BaseIntegrationTest
var ids = entities.Select(e => e.Id); var ids = entities.Select(e => e.Id);
var idsToDelete = ids.Skip(2); var idsToDelete = ids.Skip(2);
var deletedCount = await client.DeleteRange(idsToDelete, new CancellationToken()); var deletedCount = await client.DeleteRange(idsToDelete, "Удаление нескольких записей", CancellationToken.None);
var paginationRequest = new PaginationRequest()
{
Skip = 0,
Take = 10,
SortSettings = String.Empty,
};
var moment = DateTimeOffset.UtcNow.AddDays(16); var moment = DateTimeOffset.UtcNow.AddDays(16);
var result = await client.GetByDate(idDiscriminator, moment, paginationRequest, new CancellationToken()); var result = await client.GetByDate(idDiscriminator, moment, paginationRequest, new CancellationToken());
@ -260,7 +243,7 @@ public class ChangeLogControllerTest : BaseIntegrationTest
} }
[Theory] [Theory]
[InlineData(5, -15, 15, -20, 20, 10)] [InlineData(5, -15, -5, -20, 20, 10)]
[InlineData(5, -15, -10, -16, -9, 5)] [InlineData(5, -15, -10, -16, -9, 5)]
public async Task GetChangeLogForInterval_returns_success( public async Task GetChangeLogForInterval_returns_success(
int insertedCount, int insertedCount,
@ -276,17 +259,16 @@ public class ChangeLogControllerTest : BaseIntegrationTest
//создаем записи //создаем записи
var count = insertedCount; var count = insertedCount;
var daysRange = (daysBeforeNowChangeLog, daysAfterNowChangeLog); var daysRange = (daysBeforeNowChangeLog, daysAfterNowChangeLog);
var changeLogItems = CreateChangeLogItems(count, daysRange); var changeLogItems = await CreateAndReturnNewDtos(count, daysRange);
var idDiscriminator = changeLogItems.Item1; var idDiscriminator = changeLogItems.Item1;
var entities = changeLogItems.Item2; var dtos = changeLogItems.Item2;
var dtos = entities.Select(e => e.Adapt<ChangeLogValuesDto>()).ToArray(); await client.UpdateRange(dtos, "Обновляем несколько записей", CancellationToken.None);
await client.UpdateRange(dtos, new CancellationToken());
//act //act
var dateBegin = DateTimeOffset.UtcNow.AddDays(daysBeforeNowFilter); var dateBegin = DateTimeOffset.UtcNow.AddDays(daysBeforeNowFilter);
var dateEnd = DateTimeOffset.UtcNow.AddDays(daysAfterNowFilter); var dateEnd = DateTimeOffset.UtcNow.AddDays(daysAfterNowFilter);
var result = await client.GetChangeLogForInterval(idDiscriminator, dateBegin, dateEnd, new CancellationToken()); var result = await client.GetChangeLogForInterval(idDiscriminator, dateBegin, dateEnd, CancellationToken.None);
//assert //assert
Assert.NotNull(result); Assert.NotNull(result);
@ -308,7 +290,7 @@ public class ChangeLogControllerTest : BaseIntegrationTest
} }
private (Guid, ChangeLog[]) CreateChangeLogItems(int count, (int, int) daysRange) private async Task<(Guid, IEnumerable<ChangeLogValuesDto>)> CreateAndReturnNewDtos(int count, (int, int) daysRange)
{ {
var minDayCount = daysRange.Item1; var minDayCount = daysRange.Item1;
var maxDayCount = daysRange.Item2; var maxDayCount = daysRange.Item2;
@ -323,8 +305,43 @@ public class ChangeLogControllerTest : BaseIntegrationTest
return entity; return entity;
}).ToArray(); }).ToArray();
dtos = entities.Select(e => e.Adapt<ChangeLogValuesDto>());
// act
var result = await client.AddRange(idDiscriminator, dtos, "Добавление элементов", CancellationToken.None);
var paginatedResult = await client.GetByDate(idDiscriminator, DateTimeOffset.UtcNow.AddDays(1), paginationRequest, CancellationToken.None);
return (idDiscriminator, paginatedResult.Items);
}
private async Task<(Guid, IEnumerable<ChangeLog>)> CreateAndReturnNewEntities(int count, (int, int) daysRange)
{
var commit = new ChangeLogCommit()
{
Comment = "Комментарий к коммиту",
Creation = DateTimeOffset.UtcNow,
Id = Guid.NewGuid(),
};
dbContext.ChangeLogAction.Add(commit);
await dbContext.SaveChangesAsync();
var minDayCount = daysRange.Item1;
var maxDayCount = daysRange.Item2;
Guid idDiscriminator = Guid.NewGuid();
var dtos = Generate(count);
var entities = dtos.Select(d =>
{
var entity = d.Adapt<ChangeLog>();
entity.IdDiscriminator = idDiscriminator;
entity.Creation = DateTimeOffset.UtcNow.AddDays(generatorRandomDigits.Next(minDayCount, maxDayCount));
entity.IdCommit = commit.Id;
return entity;
}).ToArray();
dbContext.ChangeLog.AddRange(entities); dbContext.ChangeLog.AddRange(entities);
dbContext.SaveChanges(); await dbContext.SaveChangesAsync();
return (idDiscriminator, entities); return (idDiscriminator, entities);
} }