59 lines
2.0 KiB
C#
59 lines
2.0 KiB
C#
using DD.Persistence.Models;
|
|
using DD.Persistence.Repositories;
|
|
using DD.Persistence.Services;
|
|
using NSubstitute;
|
|
|
|
namespace DD.Persistence.Repository.Test;
|
|
public class TimestampedValuesServiceShould
|
|
{
|
|
private readonly ITimestampedValuesRepository timestampedValuesRepository = Substitute.For<ITimestampedValuesRepository>();
|
|
private readonly IDataSchemeRepository dataSchemeRepository = Substitute.For<IDataSchemeRepository>();
|
|
private TimestampedValuesService timestampedValuesService;
|
|
|
|
public TimestampedValuesServiceShould()
|
|
{
|
|
timestampedValuesService = new TimestampedValuesService(timestampedValuesRepository, dataSchemeRepository);
|
|
}
|
|
|
|
[Fact]
|
|
public async Task TestServiceEfficiency()
|
|
{
|
|
var discriminatorId = Guid.NewGuid();
|
|
const int count = 10;
|
|
var dtos = Generate(count, DateTimeOffset.UtcNow);
|
|
var addRangeResult = await timestampedValuesService
|
|
.AddRange(discriminatorId, dtos, CancellationToken.None);
|
|
Assert.Equal(0, addRangeResult);
|
|
|
|
var columnNames = new[] { "A", "B", "C", "D" };
|
|
var geTimestamp = DateTimeOffset.UtcNow
|
|
.AddHours(-1)
|
|
.ToUniversalTime();
|
|
var getResult = await timestampedValuesService
|
|
.Get(discriminatorId, geTimestamp, columnNames, 0, count, CancellationToken.None);
|
|
Assert.NotNull(getResult);
|
|
Assert.Empty(getResult);
|
|
}
|
|
|
|
private static IEnumerable<TimestampedValuesDto> Generate(int countToCreate, DateTimeOffset from)
|
|
{
|
|
var result = new List<TimestampedValuesDto>();
|
|
for (int i = 0; i < countToCreate; i++)
|
|
{
|
|
var values = new Dictionary<string, object>()
|
|
{
|
|
{ "A", i },
|
|
{ "B", i * 1.1 },
|
|
{ "C", $"Any{i}" },
|
|
{ "D", DateTimeOffset.Now },
|
|
};
|
|
|
|
yield return new TimestampedValuesDto()
|
|
{
|
|
Timestamp = from.AddSeconds(i),
|
|
Values = values
|
|
};
|
|
}
|
|
}
|
|
}
|