Интеграционные тесты
This commit is contained in:
parent
09cfccaa38
commit
05b58da1ab
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
}
|
}
|
@ -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>
|
||||||
/// Получение списка дат, в которые происходили изменения (день, месяц, год, без времени)
|
/// Получение списка дат, в которые происходили изменения (день, месяц, год, без времени)
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user