#127 Хранение технологических сообщений #4
@ -26,5 +26,5 @@ public interface ISetpointClient
|
||||
Task<IApiResponse<IEnumerable<SetpointLogDto>>> GetPart(DateTimeOffset dateBegin, int take, CancellationToken token);
|
||||
|
||||
[Post($"{BaseRoute}/")]
|
||||
Task<IApiResponse> Save(Guid setpointKey, object newValue);
|
||||
Task<IApiResponse> Add(Guid setpointKey, object newValue);
|
||||
}
|
||||
|
@ -14,7 +14,7 @@ namespace Persistence.Client.Clients
|
||||
Task<IApiResponse<PaginationContainer<TechMessageDto>>> GetPage([Query] RequestDto request, CancellationToken token);
|
||||
|
||||
[Post($"{BaseRoute}")]
|
||||
Task<IApiResponse<int>> InsertRange([Body] IEnumerable<TechMessageDto> dtos, CancellationToken token);
|
||||
Task<IApiResponse<int>> AddRange([Body] IEnumerable<TechMessageDto> dtos, CancellationToken token);
|
||||
|
||||
[Get($"{BaseRoute}/systems")]
|
||||
Task<IApiResponse<IEnumerable<string>>> GetSystems(CancellationToken token);
|
||||
|
@ -8,7 +8,7 @@ public interface ITimeSeriesClient<TDto>
|
||||
private const string BaseRoute = "/api/dataSaub";
|
||||
|
||||
[Post($"{BaseRoute}")]
|
||||
Task<IApiResponse<int>> InsertRange(IEnumerable<TDto> dtos);
|
||||
Task<IApiResponse<int>> AddRange(IEnumerable<TDto> dtos);
|
||||
|
||||
[Get($"{BaseRoute}")]
|
||||
Task<IApiResponse<IEnumerable<TDto>>> Get(DateTimeOffset dateBegin, DateTimeOffset dateEnd);
|
||||
|
@ -20,7 +20,7 @@ public interface ITimestampedSetClient
|
||||
/// <param name="sets"></param>
|
||||
/// <returns></returns>
|
||||
[Post(baseUrl)]
|
||||
Task<IApiResponse<int>> InsertRange(Guid idDiscriminator, IEnumerable<TimestampedSetDto> sets);
|
||||
Task<IApiResponse<int>> AddRange(Guid idDiscriminator, IEnumerable<TimestampedSetDto> sets);
|
||||
|
||||
/// <summary>
|
||||
/// Получение данных с фильтрацией. Значение фильтра null - отключен
|
||||
|
@ -1,4 +1,5 @@
|
||||
using System.Net;
|
||||
using Microsoft.AspNetCore.Mvc.TagHelpers.Cache;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Persistence.Client;
|
||||
using Persistence.Client.Clients;
|
||||
@ -47,7 +48,7 @@ namespace Persistence.IntegrationTests.Controllers
|
||||
public async Task GetCurrent_AfterSave_returns_success()
|
||||
{
|
||||
//arrange
|
||||
var setpointKey = await Save();
|
||||
var setpointKey = await Add();
|
||||
|
||||
//act
|
||||
var response = await setpointClient.GetCurrent([setpointKey]);
|
||||
@ -83,7 +84,7 @@ namespace Persistence.IntegrationTests.Controllers
|
||||
public async Task GetHistory_AfterSave_returns_success()
|
||||
{
|
||||
//arrange
|
||||
var setpointKey = await Save();
|
||||
var setpointKey = await Add();
|
||||
var historyMoment = DateTimeOffset.UtcNow;
|
||||
historyMoment = historyMoment.AddDays(1);
|
||||
|
||||
@ -120,7 +121,7 @@ namespace Persistence.IntegrationTests.Controllers
|
||||
public async Task GetLog_AfterSave_returns_success()
|
||||
{
|
||||
//arrange
|
||||
var setpointKey = await Save();
|
||||
var setpointKey = await Add();
|
||||
|
||||
//act
|
||||
var response = await setpointClient.GetLog([setpointKey]);
|
||||
@ -144,8 +145,8 @@ namespace Persistence.IntegrationTests.Controllers
|
||||
//assert
|
||||
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
|
||||
Assert.NotNull(response.Content);
|
||||
|
||||
Assert.Equal(DateTimeOffset.MinValue, response.Content?.From);
|
||||
Assert.Equal(DateTimeOffset.MaxValue, response.Content?.To);
|
||||
Assert.Equal(DateTimeOffset.MinValue, response.Content!.From);
|
||||
Assert.Equal(DateTimeOffset.MaxValue, response.Content!.To);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@ -153,7 +154,12 @@ namespace Persistence.IntegrationTests.Controllers
|
||||
{
|
||||
//arrange
|
||||
dbContext.CleanupDbSet<Setpoint>();
|
||||
await Save();
|
||||
|
||||
await Add();
|
||||
|
||||
var dateBegin = DateTimeOffset.MinValue;
|
||||
var take = 1;
|
||||
var part = await setpointClient.GetPart(dateBegin, take, new CancellationToken());
|
||||
|
||||
//act
|
||||
on.nemtina
commented
Assert.NotNull(response.Content?.From); Assert.NotNull(response.Content?.From);
Тут также выше уже была проверка на null: Assert.NotNull(response.Content);
Поэтому ниже можно не писать знак вопроса: response.Content?.From.
А если не писать знак вопроса, то response.Content.From тоже не нужно проверять на null,потому что From не nullable.
Тут тоже желательно сравнить From и To с каким-то конкретными значениями, которые ты ожиадешь
|
||||
var response = await setpointClient.GetDatesRangeAsync(new CancellationToken());
|
||||
@ -161,8 +167,17 @@ namespace Persistence.IntegrationTests.Controllers
|
||||
//assert
|
||||
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
|
||||
Assert.NotNull(response.Content);
|
||||
Assert.NotNull(response.Content?.From);
|
||||
Assert.NotNull(response.Content?.To);
|
||||
|
||||
var expectedValue = part.Content!
|
||||
.FirstOrDefault()!.Created
|
||||
.ToString("dd.MM.yyyy-HH:mm:ss");
|
||||
var actualValueFrom = response.Content.From
|
||||
.ToString("dd.MM.yyyy-HH:mm:ss");
|
||||
Assert.Equal(expectedValue, actualValueFrom);
|
||||
|
||||
var actualValueTo = response.Content.To
|
||||
.ToString("dd.MM.yyyy-HH:mm:ss");
|
||||
Assert.Equal(expectedValue, actualValueTo);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@ -187,7 +202,7 @@ namespace Persistence.IntegrationTests.Controllers
|
||||
//arrange
|
||||
var dateBegin = DateTimeOffset.UtcNow;
|
||||
var take = 1;
|
||||
await Save();
|
||||
await Add();
|
||||
|
||||
//act
|
||||
var response = await setpointClient.GetPart(dateBegin, take, new CancellationToken());
|
||||
@ -201,10 +216,10 @@ namespace Persistence.IntegrationTests.Controllers
|
||||
[Fact]
|
||||
public async Task Save_returns_success()
|
||||
{
|
||||
await Save();
|
||||
await Add();
|
||||
}
|
||||
|
||||
private async Task<Guid> Save()
|
||||
private async Task<Guid> Add()
|
||||
{
|
||||
//arrange
|
||||
var setpointKey = Guid.NewGuid();
|
||||
@ -215,10 +230,10 @@ namespace Persistence.IntegrationTests.Controllers
|
||||
};
|
||||
|
||||
//act
|
||||
var response = await setpointClient.Save(setpointKey, setpointValue);
|
||||
var response = await setpointClient.Add(setpointKey, setpointValue);
|
||||
|
||||
//assert
|
||||
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
|
||||
Assert.Equal(HttpStatusCode.Created, response.StatusCode);
|
||||
|
||||
return setpointKey;
|
||||
}
|
||||
|
@ -97,7 +97,7 @@ namespace Persistence.IntegrationTests.Controllers
|
||||
};
|
||||
|
||||
//act
|
||||
var response = await techMessagesClient.InsertRange(dtos, new CancellationToken());
|
||||
var response = await techMessagesClient.AddRange(dtos, new CancellationToken());
|
||||
|
||||
//assert
|
||||
Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
|
||||
@ -276,7 +276,7 @@ namespace Persistence.IntegrationTests.Controllers
|
||||
|
||||
|
||||
//act
|
||||
var response = await techMessagesClient.InsertRange(dtos, new CancellationToken());
|
||||
var response = await techMessagesClient.AddRange(dtos, new CancellationToken());
|
||||
|
||||
//assert
|
||||
Assert.Equal(HttpStatusCode.Created, response.StatusCode);
|
||||
|
@ -30,7 +30,7 @@ public abstract class TimeSeriesBaseControllerTest<TEntity, TDto> : BaseIntegrat
|
||||
var expected = dto.Adapt<TDto>();
|
||||
|
||||
//act
|
||||
var response = await timeSeriesClient.InsertRange(new TDto[] { expected });
|
||||
var response = await timeSeriesClient.AddRange(new TDto[] { expected });
|
||||
|
||||
//assert
|
||||
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
|
||||
|
@ -25,7 +25,7 @@ public class TimestampedSetControllerTest : BaseIntegrationTest
|
||||
IEnumerable<TimestampedSetDto> testSets = Generate(10, DateTimeOffset.Now.ToOffset(TimeSpan.FromHours(7)));
|
||||
|
||||
// act
|
||||
var response = await client.InsertRange(idDiscriminator, testSets);
|
||||
var response = await client.AddRange(idDiscriminator, testSets);
|
||||
|
||||
// assert
|
||||
Assert.Equal(System.Net.HttpStatusCode.OK, response.StatusCode);
|
||||
@ -39,7 +39,7 @@ public class TimestampedSetControllerTest : BaseIntegrationTest
|
||||
Guid idDiscriminator = Guid.NewGuid();
|
||||
int count = 10;
|
||||
IEnumerable<TimestampedSetDto> testSets = Generate(count, DateTimeOffset.Now.ToOffset(TimeSpan.FromHours(7)));
|
||||
var insertResponse = await client.InsertRange(idDiscriminator, testSets);
|
||||
var insertResponse = await client.AddRange(idDiscriminator, testSets);
|
||||
|
||||
// act
|
||||
var response = await client.Get(idDiscriminator, null, null, 0, int.MaxValue);
|
||||
@ -58,7 +58,7 @@ public class TimestampedSetControllerTest : BaseIntegrationTest
|
||||
Guid idDiscriminator = Guid.NewGuid();
|
||||
int count = 10;
|
||||
IEnumerable<TimestampedSetDto> testSets = Generate(count, DateTimeOffset.Now.ToOffset(TimeSpan.FromHours(7)));
|
||||
var insertResponse = await client.InsertRange(idDiscriminator, testSets);
|
||||
var insertResponse = await client.AddRange(idDiscriminator, testSets);
|
||||
string[] props = ["A"];
|
||||
|
||||
// act
|
||||
@ -86,7 +86,7 @@ public class TimestampedSetControllerTest : BaseIntegrationTest
|
||||
var dateMin = DateTimeOffset.Now;
|
||||
var dateMax = DateTimeOffset.Now.AddSeconds(count);
|
||||
IEnumerable<TimestampedSetDto> testSets = Generate(count, dateMin.ToOffset(TimeSpan.FromHours(7)));
|
||||
var insertResponse = await client.InsertRange(idDiscriminator, testSets);
|
||||
var insertResponse = await client.AddRange(idDiscriminator, testSets);
|
||||
var tail = testSets.OrderBy(t => t.Timestamp).Skip(count / 2).Take(int.MaxValue);
|
||||
var geDate = tail.First().Timestamp;
|
||||
var tolerance = TimeSpan.FromSeconds(1);
|
||||
@ -111,7 +111,7 @@ public class TimestampedSetControllerTest : BaseIntegrationTest
|
||||
Guid idDiscriminator = Guid.NewGuid();
|
||||
int count = 10;
|
||||
IEnumerable<TimestampedSetDto> testSets = Generate(count, DateTimeOffset.Now.ToOffset(TimeSpan.FromHours(7)));
|
||||
var insertResponse = await client.InsertRange(idDiscriminator, testSets);
|
||||
var insertResponse = await client.AddRange(idDiscriminator, testSets);
|
||||
var expectedCount = count / 2;
|
||||
|
||||
// act
|
||||
@ -133,7 +133,7 @@ public class TimestampedSetControllerTest : BaseIntegrationTest
|
||||
var expectedCount = 1;
|
||||
int count = 10 + expectedCount;
|
||||
IEnumerable<TimestampedSetDto> testSets = Generate(count, DateTimeOffset.Now.ToOffset(TimeSpan.FromHours(7)));
|
||||
var insertResponse = await client.InsertRange(idDiscriminator, testSets);
|
||||
var insertResponse = await client.AddRange(idDiscriminator, testSets);
|
||||
|
||||
// act
|
||||
var response = await client.Get(idDiscriminator, null, null, count - expectedCount, count);
|
||||
@ -152,7 +152,7 @@ public class TimestampedSetControllerTest : BaseIntegrationTest
|
||||
Guid idDiscriminator = Guid.NewGuid();
|
||||
int count = 10;
|
||||
IEnumerable<TimestampedSetDto> testSets = Generate(count, DateTimeOffset.Now.ToOffset(TimeSpan.FromHours(7)));
|
||||
var insertResponse = await client.InsertRange(idDiscriminator, testSets);
|
||||
var insertResponse = await client.AddRange(idDiscriminator, testSets);
|
||||
var expectedCount = 8;
|
||||
|
||||
// act
|
||||
@ -174,7 +174,7 @@ public class TimestampedSetControllerTest : BaseIntegrationTest
|
||||
var dateMin = DateTimeOffset.Now;
|
||||
var dateMax = DateTimeOffset.Now.AddSeconds(count-1);
|
||||
IEnumerable<TimestampedSetDto> testSets = Generate(count, dateMin.ToOffset(TimeSpan.FromHours(7)));
|
||||
var insertResponse = await client.InsertRange(idDiscriminator, testSets);
|
||||
var insertResponse = await client.AddRange(idDiscriminator, testSets);
|
||||
var tolerance = TimeSpan.FromSeconds(1);
|
||||
|
||||
// act
|
||||
@ -195,7 +195,7 @@ public class TimestampedSetControllerTest : BaseIntegrationTest
|
||||
Guid idDiscriminator = Guid.NewGuid();
|
||||
int count = 144;
|
||||
IEnumerable<TimestampedSetDto> testSets = Generate(count, DateTimeOffset.Now.ToOffset(TimeSpan.FromHours(7)));
|
||||
var insertResponse = await client.InsertRange(idDiscriminator, testSets);
|
||||
var insertResponse = await client.AddRange(idDiscriminator, testSets);
|
||||
|
||||
// act
|
||||
var response = await client.Count(idDiscriminator);
|
||||
|
@ -47,7 +47,7 @@ namespace Persistence.Repository.Repositories
|
||||
{
|
||||
var query = GetQueryReadOnly();
|
||||
var entities = await query
|
||||
.Where(e => e.Created > dateBegin)
|
||||
.Where(e => e.Created >= dateBegin)
|
||||
on.nemtina
commented
Тут нужно у Никиты спросить, строго или не строгое неравенство нужно. Я почему-то думала, что нужно >= писать....Но лучше у Никиты спросить) Тут нужно у Никиты спросить, строго или не строгое неравенство нужно. Я почему-то думала, что нужно >= писать....Но лучше у Никиты спросить)
ng.frolov
commented
Чтобы такие вопросы не возникали мы называем переменные для фильтрации:
Конкретно в этом случае нужен ≥ Чтобы такие вопросы не возникали мы называем переменные для фильтрации:
- Gt* (greater-than ">")
- Lt* (less-than "<")
- Ge* (greater-than or equals "≥")
- Lt* (less-than or equals "≤")
Конкретно в этом случае нужен ≥
|
||||
.Take(take)
|
||||
.ToArrayAsync(token);
|
||||
var dtos = entities
|
||||
|
@ -114,7 +114,7 @@ namespace Persistence.Repository.Repositories
|
||||
{
|
||||
var query = GetQueryReadOnly();
|
||||
var entities = await query
|
||||
.Where(e => e.Timestamp > dateBegin)
|
||||
.Where(e => e.Timestamp >= dateBegin)
|
||||
.Take(take)
|
||||
.ToArrayAsync(token);
|
||||
var dtos = entities
|
||||
|
Loading…
Reference in New Issue
Block a user
Тут по идее на null уже можно не проверять response.Content?.From, потому что выше есть проверка Assert.NotNull(response.Content). Если студия ругается, то можно так написать: response.Content!.From
А еще, думаю, нужно в качестве теста заинсертить туда несколько записей, и ,зная, какие у них максимальные и минимальные даты - сверять их с тем, что вернет GetDatesRangeAsyncю.
Ниже приложила скрин подобного тестового метода, только в ChangeLogTestController
Сверять максимальные и минимальные даты необъодимо будет в методе GetDatesRange_AfterSave_returns_success