69 lines
2.5 KiB
C#
69 lines
2.5 KiB
C#
using DD.Persistence.Models;
|
|
using DD.Persistence.Repositories;
|
|
using DD.Persistence.Services;
|
|
using NSubstitute;
|
|
using System.Text.Json;
|
|
|
|
namespace DD.Persistence.Test;
|
|
public class TimestampedValuesServiceShould
|
|
{
|
|
private readonly ITimestampedValuesRepository timestampedValuesRepository = Substitute.For<ITimestampedValuesRepository>();
|
|
private readonly ISchemePropertyRepository dataSchemeRepository = Substitute.For<ISchemePropertyRepository>();
|
|
private TimestampedValuesService timestampedValuesService;
|
|
|
|
public TimestampedValuesServiceShould()
|
|
{
|
|
timestampedValuesService = new TimestampedValuesService(timestampedValuesRepository, dataSchemeRepository);
|
|
}
|
|
|
|
[Fact]
|
|
public async Task TestServiceEfficiency()
|
|
{
|
|
var discriminatorIds = new[] { Guid.NewGuid(), Guid.NewGuid() };
|
|
const int count = 10;
|
|
var dtos = Generate(count, DateTimeOffset.UtcNow);
|
|
var addRangeResult = await timestampedValuesService
|
|
.AddRange(discriminatorIds.First(), dtos, CancellationToken.None);
|
|
Assert.Equal(0, addRangeResult);
|
|
addRangeResult = await timestampedValuesService
|
|
.AddRange(discriminatorIds.Last(), 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(discriminatorIds, geTimestamp, columnNames, 0, count, CancellationToken.None);
|
|
Assert.NotNull(getResult);
|
|
Assert.Empty(getResult);
|
|
}
|
|
|
|
private static IEnumerable<TimestampedValuesDto> Generate(int countToCreate, DateTimeOffset from)
|
|
{
|
|
for (int i = 0; i < countToCreate; i++)
|
|
{
|
|
var values = new Dictionary<string, object>()
|
|
{
|
|
{ "A", GetJsonFromObject(i) },
|
|
{ "B", GetJsonFromObject(i * 1.1) },
|
|
{ "C", GetJsonFromObject($"Any{i}") },
|
|
{ "D", GetJsonFromObject(DateTimeOffset.Now) }
|
|
};
|
|
|
|
yield return new TimestampedValuesDto()
|
|
{
|
|
Timestamp = from.AddSeconds(i),
|
|
Values = values
|
|
};
|
|
}
|
|
}
|
|
|
|
private static JsonElement GetJsonFromObject(object value)
|
|
{
|
|
var jsonString = JsonSerializer.Serialize(value);
|
|
var doc = JsonDocument.Parse(jsonString);
|
|
return doc.RootElement;
|
|
}
|
|
}
|