forked from ddrilling/AsbCloudServer
Правки после ревью
This commit is contained in:
parent
c7a1a62bcd
commit
26f01eb236
@ -38,8 +38,6 @@ namespace AsbCloudInfrastructure.Services.SAUB
|
|||||||
|
|
||||||
private static TelemetryDataCache<TDto>? instance;
|
private static TelemetryDataCache<TDto>? instance;
|
||||||
|
|
||||||
public int CacheItemCount => caches.Count;
|
|
||||||
|
|
||||||
public static TelemetryDataCache<TDto> GetInstance<TEntity>(IServiceProvider provider)
|
public static TelemetryDataCache<TDto> GetInstance<TEntity>(IServiceProvider provider)
|
||||||
where TEntity : class, AsbCloudDb.Model.ITelemetryData
|
where TEntity : class, AsbCloudDb.Model.ITelemetryData
|
||||||
{
|
{
|
||||||
|
@ -9,7 +9,6 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Bogus" Version="34.0.2" />
|
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.8" />
|
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.8" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="6.0.8" />
|
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="6.0.8" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="6.0.8" />
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="6.0.8" />
|
||||||
|
@ -6,7 +6,6 @@ using AsbCloudApp.Data.SAUB;
|
|||||||
using AsbCloudDb.Model;
|
using AsbCloudDb.Model;
|
||||||
using AsbCloudInfrastructure.Background;
|
using AsbCloudInfrastructure.Background;
|
||||||
using AsbCloudInfrastructure.Services.SAUB;
|
using AsbCloudInfrastructure.Services.SAUB;
|
||||||
using Bogus;
|
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using NSubstitute;
|
using NSubstitute;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
@ -15,55 +14,52 @@ namespace AsbCloudWebApi.Tests.ServicesTests.SAUB;
|
|||||||
|
|
||||||
public class TelemetryDataSaubCacheTests
|
public class TelemetryDataSaubCacheTests
|
||||||
{
|
{
|
||||||
private readonly IEnumerable<TelemetryDataSaubDto> fakeTelemetries = new Faker<TelemetryDataSaubDto>()
|
private const int idTelemetry = 1;
|
||||||
.RuleFor(t => t.DateTime, DateTime.UtcNow)
|
|
||||||
.Generate(5)
|
|
||||||
.OrderBy(t => t.DateTime);
|
|
||||||
|
|
||||||
private readonly IServiceProvider serviceProvider = Substitute.For<IServiceProvider>();
|
private readonly IEnumerable<TelemetryDataSaubDto> fakeTelemetries = new[]
|
||||||
|
{
|
||||||
|
new TelemetryDataSaubDto()
|
||||||
|
};
|
||||||
|
|
||||||
|
private readonly IServiceProvider serviceProviderMock = Substitute.For<IServiceProvider>();
|
||||||
|
|
||||||
private readonly TelemetryDataCache<TelemetryDataSaubDto> telemetryDataCache;
|
private readonly TelemetryDataCache<TelemetryDataSaubDto> telemetryDataCache;
|
||||||
|
private readonly Type telemetryDataCacheType;
|
||||||
|
|
||||||
public TelemetryDataSaubCacheTests()
|
public TelemetryDataSaubCacheTests()
|
||||||
{
|
{
|
||||||
serviceProvider.GetService<BackgroundWorker>().Returns(new BackgroundWorker(serviceProvider));
|
serviceProviderMock.GetService<BackgroundWorker>().Returns(new BackgroundWorker(serviceProviderMock));
|
||||||
|
|
||||||
telemetryDataCache = TelemetryDataCache<TelemetryDataSaubDto>.GetInstance<TelemetryDataSaub>(serviceProvider);
|
telemetryDataCache = TelemetryDataCache<TelemetryDataSaubDto>.GetInstance<TelemetryDataSaub>(serviceProviderMock);
|
||||||
|
|
||||||
|
telemetryDataCacheType = telemetryDataCache.GetType();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void AddRange_ShouldReturn_OneAddedElementToCache()
|
public void AddRange_ShouldReturn_AddedElementToCache()
|
||||||
{
|
{
|
||||||
//arrange
|
//arrange
|
||||||
const int expectedCacheItemCount = 1;
|
|
||||||
|
|
||||||
var idTelemetry = new Random().Next(1, 100);
|
|
||||||
var telemetryDataCacheType = telemetryDataCache.GetType();
|
|
||||||
|
|
||||||
telemetryDataCacheType.GetField("isLoading", BindingFlags.NonPublic | BindingFlags.Instance)?.SetValue(telemetryDataCache, false);
|
telemetryDataCacheType.GetField("isLoading", BindingFlags.NonPublic | BindingFlags.Instance)?.SetValue(telemetryDataCache, false);
|
||||||
|
|
||||||
//act
|
//act
|
||||||
telemetryDataCache.AddRange(idTelemetry, fakeTelemetries);
|
telemetryDataCache.AddRange(idTelemetry, fakeTelemetries);
|
||||||
|
var lastTelemetry = telemetryDataCache.GetLastOrDefault(idTelemetry);
|
||||||
|
|
||||||
//assert
|
//assert
|
||||||
Assert.True(telemetryDataCache.CacheItemCount == expectedCacheItemCount);
|
Assert.Equal(lastTelemetry, fakeTelemetries.Last());
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void AddRange_ShouldReturn_ZeroAddedElementToCache()
|
public void AddRange_ShouldReturn_NotAddedToCache()
|
||||||
{
|
{
|
||||||
//arrange
|
//arrange
|
||||||
const int expectedCacheItemCount = 0;
|
|
||||||
|
|
||||||
var idTelemetry = new Random().Next(1, 100);
|
|
||||||
var telemetryDataCacheType = telemetryDataCache.GetType();
|
|
||||||
|
|
||||||
telemetryDataCacheType.GetField("isLoading", BindingFlags.NonPublic | BindingFlags.Instance)?.SetValue(telemetryDataCache, true);
|
telemetryDataCacheType.GetField("isLoading", BindingFlags.NonPublic | BindingFlags.Instance)?.SetValue(telemetryDataCache, true);
|
||||||
|
|
||||||
//act
|
//act
|
||||||
telemetryDataCache.AddRange(idTelemetry, fakeTelemetries);
|
telemetryDataCache.AddRange(idTelemetry, fakeTelemetries);
|
||||||
|
var lastTelemetry = telemetryDataCache.GetLastOrDefault(idTelemetry);
|
||||||
|
|
||||||
//assert
|
//assert
|
||||||
Assert.True(telemetryDataCache.CacheItemCount == expectedCacheItemCount);
|
Assert.NotEqual(lastTelemetry, fakeTelemetries.Last());
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user