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(); private readonly IDataSchemeRepository dataSchemeRepository = Substitute.For(); 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 Generate(int countToCreate, DateTimeOffset from) { var result = new List(); for (int i = 0; i < countToCreate; i++) { var values = new Dictionary() { { "A", i }, { "B", i * 1.1 }, { "C", $"Any{i}" }, { "D", DateTimeOffset.Now }, }; yield return new TimestampedValuesDto() { Timestamp = from.AddSeconds(i), Values = values }; } } }