diff --git a/DD.Persistence.Client/Clients/Interfaces/ITimeSeriesClient.cs b/DD.Persistence.Client/Clients/Interfaces/ITimeSeriesClient.cs
index 26bbfa6..db619e5 100644
--- a/DD.Persistence.Client/Clients/Interfaces/ITimeSeriesClient.cs
+++ b/DD.Persistence.Client/Clients/Interfaces/ITimeSeriesClient.cs
@@ -6,7 +6,7 @@ namespace DD.Persistence.Client.Clients.Interfaces;
/// Клиент для работы с временными данными
///
///
-public interface ITimeSeriesClient : IDisposable where TDto : class, new()
+public interface ITimeSeriesClient : IDisposable where TDto : class, ITimeSeriesAbstractDto
{
///
/// Добавление записей
diff --git a/DD.Persistence.Client/Clients/Interfaces/Refit/IRefitTechMessagesClient.cs b/DD.Persistence.Client/Clients/Interfaces/Refit/IRefitTechMessagesClient.cs
index 2638600..1fe63c1 100644
--- a/DD.Persistence.Client/Clients/Interfaces/Refit/IRefitTechMessagesClient.cs
+++ b/DD.Persistence.Client/Clients/Interfaces/Refit/IRefitTechMessagesClient.cs
@@ -5,7 +5,7 @@ using Refit;
namespace DD.Persistence.Client.Clients.Interfaces.Refit
{
- public interface IRefitTechMessagesClient : IDisposable
+ public interface IRefitTechMessagesClient : IRefitClient, IDisposable
{
private const string BaseRoute = "/api/techMessages";
diff --git a/DD.Persistence.Client/Clients/Interfaces/Refit/IRefitTimeSeriesClient.cs b/DD.Persistence.Client/Clients/Interfaces/Refit/IRefitTimeSeriesClient.cs
index 2edc8fe..832cfde 100644
--- a/DD.Persistence.Client/Clients/Interfaces/Refit/IRefitTimeSeriesClient.cs
+++ b/DD.Persistence.Client/Clients/Interfaces/Refit/IRefitTimeSeriesClient.cs
@@ -2,8 +2,8 @@ using DD.Persistence.Models;
using Refit;
namespace DD.Persistence.Client.Clients.Interfaces.Refit;
-public interface IRefitTimeSeriesClient : IDisposable
- where TDto : class, new()
+public interface IRefitTimeSeriesClient : IRefitClient, IDisposable
+ where TDto : class, ITimeSeriesAbstractDto
{
private const string BaseRoute = "/api/dataSaub";
diff --git a/DD.Persistence.Client/Clients/Interfaces/Refit/IRefitTimestampedSetClient.cs b/DD.Persistence.Client/Clients/Interfaces/Refit/IRefitTimestampedSetClient.cs
index 14db284..6211d2d 100644
--- a/DD.Persistence.Client/Clients/Interfaces/Refit/IRefitTimestampedSetClient.cs
+++ b/DD.Persistence.Client/Clients/Interfaces/Refit/IRefitTimestampedSetClient.cs
@@ -3,7 +3,7 @@ using Refit;
namespace DD.Persistence.Client.Clients.Interfaces.Refit;
-public interface IRefitTimestampedSetClient : IDisposable
+public interface IRefitTimestampedSetClient : IRefitClient, IDisposable
{
private const string baseUrl = "/api/TimestampedSet/{idDiscriminator}";
diff --git a/DD.Persistence.Client/Clients/TechMessagesClient.cs b/DD.Persistence.Client/Clients/TechMessagesClient.cs
index c981569..e23c961 100644
--- a/DD.Persistence.Client/Clients/TechMessagesClient.cs
+++ b/DD.Persistence.Client/Clients/TechMessagesClient.cs
@@ -11,9 +11,9 @@ public class TechMessagesClient : BaseClient, ITechMessagesClient
{
private readonly IRefitTechMessagesClient refitTechMessagesClient;
- public TechMessagesClient(IRefitTechMessagesClient refitTechMessagesClient, ILogger logger) : base(logger)
+ public TechMessagesClient(IRefitClientFactory refitTechMessagesClientFactory, ILogger logger) : base(logger)
{
- this.refitTechMessagesClient = refitTechMessagesClient;
+ this.refitTechMessagesClient = refitTechMessagesClientFactory.Create();
}
public async Task> GetPage(PaginationRequest request, CancellationToken token)
diff --git a/DD.Persistence.Client/Clients/TimeSeriesClient.cs b/DD.Persistence.Client/Clients/TimeSeriesClient.cs
index 2c15938..c75ec81 100644
--- a/DD.Persistence.Client/Clients/TimeSeriesClient.cs
+++ b/DD.Persistence.Client/Clients/TimeSeriesClient.cs
@@ -5,13 +5,13 @@ using DD.Persistence.Client.Clients.Interfaces.Refit;
using DD.Persistence.Models;
namespace DD.Persistence.Client.Clients;
-public class TimeSeriesClient : BaseClient, ITimeSeriesClient where TDto : class, new()
+public class TimeSeriesClient : BaseClient, ITimeSeriesClient where TDto : class, ITimeSeriesAbstractDto
{
private readonly IRefitTimeSeriesClient timeSeriesClient;
- public TimeSeriesClient(IRefitTimeSeriesClient refitTechMessagesClient, ILogger> logger) : base(logger)
+ public TimeSeriesClient(IRefitClientFactory> refitTechMessagesClientFactory, ILogger> logger) : base(logger)
{
- this.timeSeriesClient = refitTechMessagesClient;
+ this.timeSeriesClient = refitTechMessagesClientFactory.Create();
}
public async Task AddRange(IEnumerable dtos, CancellationToken token)
diff --git a/DD.Persistence.Client/Clients/TimestampedSetClient.cs b/DD.Persistence.Client/Clients/TimestampedSetClient.cs
index 38828b6..7d1ba56 100644
--- a/DD.Persistence.Client/Clients/TimestampedSetClient.cs
+++ b/DD.Persistence.Client/Clients/TimestampedSetClient.cs
@@ -9,9 +9,9 @@ public class TimestampedSetClient : BaseClient, ITimestampedSetClient
{
private readonly IRefitTimestampedSetClient refitTimestampedSetClient;
- public TimestampedSetClient(IRefitTimestampedSetClient refitTimestampedSetClient, ILogger logger) : base(logger)
+ public TimestampedSetClient(IRefitClientFactory refitTimestampedSetClientFactory, ILogger logger) : base(logger)
{
- this.refitTimestampedSetClient = refitTimestampedSetClient;
+ this.refitTimestampedSetClient = refitTimestampedSetClientFactory.Create();
}
public async Task AddRange(Guid idDiscriminator, IEnumerable sets, CancellationToken token)
diff --git a/DD.Persistence.Client/Clients/WitsDataClient.cs b/DD.Persistence.Client/Clients/WitsDataClient.cs
index 3251194..e2703dc 100644
--- a/DD.Persistence.Client/Clients/WitsDataClient.cs
+++ b/DD.Persistence.Client/Clients/WitsDataClient.cs
@@ -9,9 +9,9 @@ public class WitsDataClient : BaseClient, IWitsDataClient
{
private readonly IRefitWitsDataClient refitWitsDataClient;
- public WitsDataClient(IRefitWitsDataClient refitWitsDataClient, ILogger logger) : base(logger)
+ public WitsDataClient(IRefitClientFactory refitWitsDataClientFactory, ILogger logger) : base(logger)
{
- this.refitWitsDataClient = refitWitsDataClient;
+ this.refitWitsDataClient = refitWitsDataClientFactory.Create();
}
public async Task AddRange(IEnumerable dtos, CancellationToken token)
diff --git a/DD.Persistence.Client/DependencyInjection.cs b/DD.Persistence.Client/DependencyInjection.cs
index 53791bb..eced892 100644
--- a/DD.Persistence.Client/DependencyInjection.cs
+++ b/DD.Persistence.Client/DependencyInjection.cs
@@ -1,5 +1,6 @@
using DD.Persistence.Client.Clients;
using DD.Persistence.Client.Clients.Interfaces;
+using DD.Persistence.Models;
using Microsoft.Extensions.DependencyInjection;
namespace DD.Persistence.Client;
@@ -16,14 +17,14 @@ public static class DependencyInjection
///
public static IServiceCollection AddPersistenceClients(this IServiceCollection services)
{
- services.AddSingleton(typeof(IRefitClientFactory<>), typeof(RefitClientFactory<>));
+ services.AddTransient(typeof(IRefitClientFactory<>), typeof(RefitClientFactory<>));
services.AddTransient();
services.AddTransient();
services.AddTransient();
- //services.AddTransient();
- //services.AddTransient, TimeSeriesClient<>>();
- //services.AddTransient();
- //services.AddTransient();
+ services.AddTransient();
+ services.AddTransient, TimeSeriesClient>();
+ services.AddTransient();
+ services.AddTransient();
return services;
}
}
diff --git a/DD.Persistence.Client/PersistenceClientFactory.cs b/DD.Persistence.Client/PersistenceClientFactory.cs
index c48424c..99660e9 100644
--- a/DD.Persistence.Client/PersistenceClientFactory.cs
+++ b/DD.Persistence.Client/PersistenceClientFactory.cs
@@ -1,146 +1,146 @@
-using Microsoft.Extensions.Configuration;
-using DD.Persistence.Client.Clients.Interfaces;
-using DD.Persistence.Client.Clients;
-using DD.Persistence.Client.Helpers;
-using Refit;
-using DD.Persistence.Factories;
-using DD.Persistence.Client.Clients.Interfaces.Refit;
-using Microsoft.Extensions.Logging;
-using Microsoft.Extensions.DependencyInjection;
-using System.Text.Json;
+//using Microsoft.Extensions.Configuration;
+//using DD.Persistence.Client.Clients.Interfaces;
+//using DD.Persistence.Client.Clients;
+//using DD.Persistence.Client.Helpers;
+//using Refit;
+//using DD.Persistence.Factories;
+//using DD.Persistence.Client.Clients.Interfaces.Refit;
+//using Microsoft.Extensions.Logging;
+//using Microsoft.Extensions.DependencyInjection;
+//using System.Text.Json;
-namespace DD.Persistence.Client
-{
- ///
- /// Фабрика клиентов для доступа к Persistence - сервису
- ///
- public class PersistenceClientFactory
- {
- private static readonly JsonSerializerOptions JsonSerializerOptions = new()
- {
- PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
- PropertyNameCaseInsensitive = true
- };
- private static readonly RefitSettings RefitSettings = new(new SystemTextJsonContentSerializer(JsonSerializerOptions));
- private readonly IServiceProvider provider;
- private HttpClient httpClient;
- public PersistenceClientFactory(IHttpClientFactory httpClientFactory, IServiceProvider provider, IConfiguration configuration)
- {
- this.provider = provider;
+//namespace DD.Persistence.Client
+//{
+// ///
+// /// Фабрика клиентов для доступа к Persistence - сервису
+// ///
+// public class PersistenceClientFactory
+// {
+// private static readonly JsonSerializerOptions JsonSerializerOptions = new()
+// {
+// PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
+// PropertyNameCaseInsensitive = true
+// };
+// private static readonly RefitSettings RefitSettings = new(new SystemTextJsonContentSerializer(JsonSerializerOptions));
+// private readonly IServiceProvider provider;
+// private HttpClient httpClient;
+// public PersistenceClientFactory(IHttpClientFactory httpClientFactory, IServiceProvider provider, IConfiguration configuration)
+// {
+// this.provider = provider;
- httpClient = httpClientFactory.CreateClient();
+// httpClient = httpClientFactory.CreateClient();
- httpClient.Authorize(configuration);
- }
+// httpClient.Authorize(configuration);
+// }
- public PersistenceClientFactory(IHttpClientFactory httpClientFactory, IAuthTokenFactory authTokenFactory, IServiceProvider provider, IConfiguration configuration)
- {
- this.provider = provider;
+// public PersistenceClientFactory(IHttpClientFactory httpClientFactory, IAuthTokenFactory authTokenFactory, IServiceProvider provider, IConfiguration configuration)
+// {
+// this.provider = provider;
- httpClient = httpClientFactory.CreateClient();
+// httpClient = httpClientFactory.CreateClient();
- var token = authTokenFactory.GetToken();
- httpClient.Authorize(token);
- }
+// var token = authTokenFactory.GetToken();
+// httpClient.Authorize(token);
+// }
- ///
- /// Получить клиент для работы с уставками
- ///
- ///
- //public ISetpointClient GetSetpointClient()
- //{
- // var logger = provider.GetRequiredService>();
+// ///
+// /// Получить клиент для работы с уставками
+// ///
+// ///
+// //public ISetpointClient GetSetpointClient()
+// //{
+// // var logger = provider.GetRequiredService>();
- // var restClient = RestService.For(httpClient, RefitSettings);
- // var client = new SetpointClient(restClient, logger);
+// // var restClient = RestService.For(httpClient, RefitSettings);
+// // var client = new SetpointClient(restClient, logger);
- // return client;
- //}
+// // return client;
+// //}
- ///
- /// Получить клиент для работы с технологическими сообщениями
- ///
- ///
- public ITechMessagesClient GetTechMessagesClient()
- {
- var logger = provider.GetRequiredService>();
+// ///
+// /// Получить клиент для работы с технологическими сообщениями
+// ///
+// ///
+// //public ITechMessagesClient GetTechMessagesClient()
+// //{
+// // var logger = provider.GetRequiredService>();
- var restClient = RestService.For(httpClient, RefitSettings);
- var client = new TechMessagesClient(restClient, logger);
+// // var restClient = RestService.For(httpClient, RefitSettings);
+// // var client = new TechMessagesClient(restClient, logger);
- return client;
- }
+// // return client;
+// //}
- ///
- /// Получить клиент для работы с временными данными
- ///
- ///
- ///
- public ITimeSeriesClient GetTimeSeriesClient()
- where TDto : class, new()
- {
- var logger = provider.GetRequiredService>>();
+// ///
+// /// Получить клиент для работы с временными данными
+// ///
+// ///
+// ///
+// //public ITimeSeriesClient GetTimeSeriesClient()
+// // where TDto : class, new()
+// //{
+// // var logger = provider.GetRequiredService>>();
- var restClient = RestService.For>(httpClient, RefitSettings);
- var client = new TimeSeriesClient(restClient, logger);
+// // var restClient = RestService.For>(httpClient, RefitSettings);
+// // var client = new TimeSeriesClient(restClient, logger);
- return client;
- }
+// // return client;
+// //}
- ///
- /// Получить клиент для работы с данными с отметкой времени
- ///
- ///
- public ITimestampedSetClient GetTimestampedSetClient()
- {
- var logger = provider.GetRequiredService>();
+// ///
+// /// Получить клиент для работы с данными с отметкой времени
+// ///
+// ///
+// //public ITimestampedSetClient GetTimestampedSetClient()
+// //{
+// // var logger = provider.GetRequiredService>();
- var restClient = RestService.For(httpClient, RefitSettings);
- var client = new TimestampedSetClient(restClient, logger);
+// // var restClient = RestService.For(httpClient, RefitSettings);
+// // var client = new TimestampedSetClient(restClient, logger);
- return client;
- }
+// // return client;
+// //}
- ///
- /// Получить клиент для работы с записями ChangeLog
- ///
- ///
- //public IChangeLogClient GetChangeLogClient()
- //{
- // var logger = provider.GetRequiredService>();
+// ///
+// /// Получить клиент для работы с записями ChangeLog
+// ///
+// ///
+// //public IChangeLogClient GetChangeLogClient()
+// //{
+// // var logger = provider.GetRequiredService>();
- // var restClient = RestService.For(httpClient, RefitSettings);
- // var client = new ChangeLogClient(restClient, logger);
+// // var restClient = RestService.For(httpClient, RefitSettings);
+// // var client = new ChangeLogClient(restClient, logger);
- // return client;
- //}
+// // return client;
+// //}
- ///
- /// Получить клиент для работы c параметрами Wits
- ///
- ///
- public IWitsDataClient GetWitsDataClient()
- {
- var logger = provider.GetRequiredService>();
+// ///
+// /// Получить клиент для работы c параметрами Wits
+// ///
+// ///
+// //public IWitsDataClient GetWitsDataClient()
+// //{
+// // var logger = provider.GetRequiredService>();
- var restClient = RestService.For(httpClient, RefitSettings);
- var client = new WitsDataClient(restClient, logger);
+// // var restClient = RestService.For(httpClient, RefitSettings);
+// // var client = new WitsDataClient(restClient, logger);
- return client;
- }
+// // return client;
+// //}
- ///
- /// Получить клиент для работы c системами
- ///
- ///
- //public IDataSourceSystemClient GetDataSourceSystemClient()
- //{
- // var logger = provider.GetRequiredService>();
+// ///
+// /// Получить клиент для работы c системами
+// ///
+// ///
+// //public IDataSourceSystemClient GetDataSourceSystemClient()
+// //{
+// // var logger = provider.GetRequiredService>();
- // var restClient = RestService.For(httpClient, RefitSettings);
- // var client = new DataSourceSystemClient(restClient, logger);
+// // var restClient = RestService.For(httpClient, RefitSettings);
+// // var client = new DataSourceSystemClient(restClient, logger);
- // return client;
- //}
- }
-}
+// // return client;
+// //}
+// }
+//}
diff --git a/DD.Persistence.IntegrationTests/Controllers/TechMessagesControllerTest.cs b/DD.Persistence.IntegrationTests/Controllers/TechMessagesControllerTest.cs
index bdcddb9..51afc02 100644
--- a/DD.Persistence.IntegrationTests/Controllers/TechMessagesControllerTest.cs
+++ b/DD.Persistence.IntegrationTests/Controllers/TechMessagesControllerTest.cs
@@ -1,38 +1,41 @@
-using Microsoft.Extensions.Caching.Memory;
-using Microsoft.Extensions.DependencyInjection;
-using DD.Persistence.Client;
+using DD.Persistence.Client;
+using DD.Persistence.Client.Clients;
using DD.Persistence.Client.Clients.Interfaces;
+using DD.Persistence.Client.Clients.Interfaces.Refit;
using DD.Persistence.Database.Entity;
using DD.Persistence.Models;
using DD.Persistence.Models.Enumerations;
using DD.Persistence.Models.Requests;
-using System.Net;
+using Microsoft.Extensions.Caching.Memory;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Logging;
using Xunit;
namespace DD.Persistence.IntegrationTests.Controllers
{
- public class TechMessagesControllerTest : BaseIntegrationTest
- {
- private static readonly string SystemCacheKey = $"{typeof(Database.Entity.DataSourceSystem).FullName}CacheKey";
- private readonly ITechMessagesClient techMessagesClient;
- private readonly IMemoryCache memoryCache;
- public TechMessagesControllerTest(WebAppFactoryFixture factory) : base(factory)
- {
- var scope = factory.Services.CreateScope();
- var persistenceClientFactory = scope.ServiceProvider
- .GetRequiredService();
+ public class TechMessagesControllerTest : BaseIntegrationTest
+ {
+ private static readonly string SystemCacheKey = $"{typeof(Database.Entity.DataSourceSystem).FullName}CacheKey";
+ private readonly ITechMessagesClient techMessagesClient;
+ private readonly IMemoryCache memoryCache;
+ public TechMessagesControllerTest(WebAppFactoryFixture factory) : base(factory)
+ {
+ var refitClientFactory = scope.ServiceProvider
+ .GetRequiredService>();
+ var logger = scope.ServiceProvider.GetRequiredService>();
- techMessagesClient = persistenceClientFactory.GetTechMessagesClient();
- memoryCache = scope.ServiceProvider.GetRequiredService();
- }
+ techMessagesClient = scope.ServiceProvider
+ .GetRequiredService();
+ memoryCache = scope.ServiceProvider.GetRequiredService();
+ }
- [Fact]
- public async Task GetPage_returns_success()
- {
- //arrange
- memoryCache.Remove(SystemCacheKey);
- dbContext.CleanupDbSet();
- dbContext.CleanupDbSet();
+ [Fact]
+ public async Task GetPage_returns_success()
+ {
+ //arrange
+ memoryCache.Remove(SystemCacheKey);
+ dbContext.CleanupDbSet();
+ dbContext.CleanupDbSet();
var requestDto = new PaginationRequest()
{
@@ -44,235 +47,235 @@ namespace DD.Persistence.IntegrationTests.Controllers
//act
var response = await techMessagesClient.GetPage(requestDto, CancellationToken.None);
- //assert
- Assert.NotNull(response);
- Assert.Empty(response.Items);
- Assert.Equal(requestDto.Skip, response.Skip);
- Assert.Equal(requestDto.Take, response.Take);
- }
+ //assert
+ Assert.NotNull(response);
+ Assert.Empty(response.Items);
+ Assert.Equal(requestDto.Skip, response.Skip);
+ Assert.Equal(requestDto.Take, response.Take);
+ }
- [Fact]
- public async Task GetPage_AfterSave_returns_success()
- {
- //arrange
- var dtos = await InsertRange(Guid.NewGuid());
- var dtosCount = dtos.Count();
- var requestDto = new PaginationRequest()
- {
- Skip = 0,
- Take = 2,
- SortSettings = nameof(TechMessage.CategoryId)
- };
+ [Fact]
+ public async Task GetPage_AfterSave_returns_success()
+ {
+ //arrange
+ var dtos = await InsertRange(Guid.NewGuid());
+ var dtosCount = dtos.Count();
+ var requestDto = new PaginationRequest()
+ {
+ Skip = 0,
+ Take = 2,
+ SortSettings = nameof(TechMessage.CategoryId)
+ };
//act
var response = await techMessagesClient.GetPage(requestDto, CancellationToken.None);
- //assert
- Assert.NotNull(response);
- Assert.Equal(dtosCount, response.Count);
- }
-
- [Fact]
- public async Task InsertRange_returns_success()
- {
- await InsertRange(Guid.NewGuid());
- }
-
- [Fact]
- public async Task InsertRange_returns_BadRequest()
- {
- //arrange
- const string exceptionMessage = "Ошибка валидации, формата или маршрутизации запроса";
- var systemId = Guid.NewGuid();
- var dtos = new List()
- {
- new TechMessageDto()
- {
- EventId = Guid.NewGuid(),
- CategoryId = -1, // < 0
- Timestamp = DateTimeOffset.UtcNow,
- Text = string.Empty, // length < 0
- EventState = EventState.Triggered
- }
- };
-
- try
- {
- //act
- var response = await techMessagesClient.AddRange(systemId, dtos, CancellationToken.None);
- }
- catch (Exception ex)
- {
- //assert
- Assert.Equal(exceptionMessage, ex.Message);
- }
- }
-
- [Fact]
- public async Task GetSystems_returns_success()
- {
- //arrange
- memoryCache.Remove(SystemCacheKey);
- dbContext.CleanupDbSet();
- dbContext.CleanupDbSet();
-
- //act
- var response = await techMessagesClient.GetSystems(CancellationToken.None);
-
- //assert
- Assert.NotNull(response);
- Assert.Empty(response);
- }
-
- [Fact]
- public async Task GetSystems_AfterSave_returns_success()
- {
- //arrange
- await InsertRange(Guid.NewGuid());
-
- //act
- var response = await techMessagesClient.GetSystems(CancellationToken.None);
-
- //assert
- Assert.NotNull(response);
- var expectedSystemCount = 1;
- Assert.Equal(expectedSystemCount, response!.Count());
- }
-
- [Fact]
- public async Task GetStatistics_returns_success()
- {
- //arrange
- memoryCache.Remove(SystemCacheKey);
- dbContext.CleanupDbSet();
- dbContext.CleanupDbSet();
-
- var categoryIds = new [] { 1, 2 };
- var systemIds = new [] { Guid.NewGuid() };
-
- //act
- var response = await techMessagesClient.GetStatistics(systemIds, categoryIds, CancellationToken.None);
-
- //assert
- Assert.NotNull(response);
- Assert.Empty(response);
- }
-
- [Fact]
- public async Task GetStatistics_AfterSave_returns_success()
- {
- //arrange
- var categoryIds = new[] { 1 };
- var systemId = Guid.NewGuid();
- var dtos = await InsertRange(systemId);
- var filteredDtos = dtos.Where(e => categoryIds.Contains(e.CategoryId));
-
- //act
- var response = await techMessagesClient.GetStatistics([systemId], categoryIds, CancellationToken.None);
-
- //assert
- Assert.NotNull(response);
- Assert.NotEmpty(response);
- var categories = response
- .FirstOrDefault()!.Categories
- .Count();
- Assert.Equal(filteredDtos.Count(), categories);
- }
-
- [Fact]
- public async Task GetDatesRange_returns_NoContent()
- {
- //arrange
- memoryCache.Remove(SystemCacheKey);
- dbContext.CleanupDbSet();
- dbContext.CleanupDbSet();
-
- //act
- var response = await techMessagesClient.GetDatesRangeAsync(CancellationToken.None);
-
//assert
- Assert.Null(response);
- }
+ Assert.NotNull(response);
+ Assert.Equal(dtosCount, response.Count);
+ }
- [Fact]
- public async Task GetDatesRange_AfterSave_returns_success()
- {
- //arrange
- await InsertRange(Guid.NewGuid());
+ [Fact]
+ public async Task InsertRange_returns_success()
+ {
+ await InsertRange(Guid.NewGuid());
+ }
+
+ [Fact]
+ public async Task InsertRange_returns_BadRequest()
+ {
+ //arrange
+ const string exceptionMessage = "Ошибка валидации, формата или маршрутизации запроса";
+ var systemId = Guid.NewGuid();
+ var dtos = new List()
+ {
+ new TechMessageDto()
+ {
+ EventId = Guid.NewGuid(),
+ CategoryId = -1, // < 0
+ Timestamp = DateTimeOffset.UtcNow,
+ Text = string.Empty, // length < 0
+ EventState = EventState.Triggered
+ }
+ };
+
+ try
+ {
+ //act
+ var response = await techMessagesClient.AddRange(systemId, dtos, CancellationToken.None);
+ }
+ catch (Exception ex)
+ {
+ //assert
+ Assert.Equal(exceptionMessage, ex.Message);
+ }
+ }
+
+ [Fact]
+ public async Task GetSystems_returns_success()
+ {
+ //arrange
+ memoryCache.Remove(SystemCacheKey);
+ dbContext.CleanupDbSet();
+ dbContext.CleanupDbSet();
+
+ //act
+ var response = await techMessagesClient.GetSystems(CancellationToken.None);
+
+ //assert
+ Assert.NotNull(response);
+ Assert.Empty(response);
+ }
+
+ [Fact]
+ public async Task GetSystems_AfterSave_returns_success()
+ {
+ //arrange
+ await InsertRange(Guid.NewGuid());
+
+ //act
+ var response = await techMessagesClient.GetSystems(CancellationToken.None);
+
+ //assert
+ Assert.NotNull(response);
+ var expectedSystemCount = 1;
+ Assert.Equal(expectedSystemCount, response!.Count());
+ }
+
+ [Fact]
+ public async Task GetStatistics_returns_success()
+ {
+ //arrange
+ memoryCache.Remove(SystemCacheKey);
+ dbContext.CleanupDbSet();
+ dbContext.CleanupDbSet();
+
+ var categoryIds = new[] { 1, 2 };
+ var systemIds = new[] { Guid.NewGuid() };
+
+ //act
+ var response = await techMessagesClient.GetStatistics(systemIds, categoryIds, CancellationToken.None);
+
+ //assert
+ Assert.NotNull(response);
+ Assert.Empty(response);
+ }
+
+ [Fact]
+ public async Task GetStatistics_AfterSave_returns_success()
+ {
+ //arrange
+ var categoryIds = new[] { 1 };
+ var systemId = Guid.NewGuid();
+ var dtos = await InsertRange(systemId);
+ var filteredDtos = dtos.Where(e => categoryIds.Contains(e.CategoryId));
+
+ //act
+ var response = await techMessagesClient.GetStatistics([systemId], categoryIds, CancellationToken.None);
+
+ //assert
+ Assert.NotNull(response);
+ Assert.NotEmpty(response);
+ var categories = response
+ .FirstOrDefault()!.Categories
+ .Count();
+ Assert.Equal(filteredDtos.Count(), categories);
+ }
+
+ [Fact]
+ public async Task GetDatesRange_returns_NoContent()
+ {
+ //arrange
+ memoryCache.Remove(SystemCacheKey);
+ dbContext.CleanupDbSet();
+ dbContext.CleanupDbSet();
//act
var response = await techMessagesClient.GetDatesRangeAsync(CancellationToken.None);
- //assert
- Assert.NotNull(response);
- Assert.NotNull(response?.From);
- Assert.NotNull(response?.To);
- }
+ //assert
+ Assert.Null(response);
+ }
- // [Fact]
- // public async Task GetPart_returns_success()
- // {
- // //arrange
- // var dateBegin = DateTimeOffset.UtcNow;
- // var take = 2;
+ [Fact]
+ public async Task GetDatesRange_AfterSave_returns_success()
+ {
+ //arrange
+ await InsertRange(Guid.NewGuid());
- // //act
- // var response = await techMessagesClient.GetPart(dateBegin, take, CancellationToken.None);
+ //act
+ var response = await techMessagesClient.GetDatesRangeAsync(CancellationToken.None);
- // //assert
- // Assert.NotNull(response);
- // Assert.Empty(response);
- //}
+ //assert
+ Assert.NotNull(response);
+ Assert.NotNull(response?.From);
+ Assert.NotNull(response?.To);
+ }
- [Fact]
- public async Task GetPart_AfterSave_returns_success()
- {
- //arrange
- var dateBegin = DateTimeOffset.UtcNow;
- var take = 1;
- await InsertRange(Guid.NewGuid());
+ // [Fact]
+ // public async Task GetPart_returns_success()
+ // {
+ // //arrange
+ // var dateBegin = DateTimeOffset.UtcNow;
+ // var take = 2;
+
+ // //act
+ // var response = await techMessagesClient.GetPart(dateBegin, take, CancellationToken.None);
+
+ // //assert
+ // Assert.NotNull(response);
+ // Assert.Empty(response);
+ //}
+
+ [Fact]
+ public async Task GetPart_AfterSave_returns_success()
+ {
+ //arrange
+ var dateBegin = DateTimeOffset.UtcNow;
+ var take = 1;
+ await InsertRange(Guid.NewGuid());
//act
var response = await techMessagesClient.GetPart(dateBegin, take, CancellationToken.None);
- //assert
- Assert.NotNull(response);
- Assert.NotEmpty(response);
- }
+ //assert
+ Assert.NotNull(response);
+ Assert.NotEmpty(response);
+ }
- private async Task> InsertRange(Guid systemId)
- {
- //arrange
- memoryCache.Remove(SystemCacheKey);
- dbContext.CleanupDbSet();
- dbContext.CleanupDbSet();
+ private async Task> InsertRange(Guid systemId)
+ {
+ //arrange
+ memoryCache.Remove(SystemCacheKey);
+ dbContext.CleanupDbSet();
+ dbContext.CleanupDbSet();
- var dtos = new List()
- {
- new TechMessageDto()
- {
- EventId = Guid.NewGuid(),
- CategoryId = 1,
- Timestamp = DateTimeOffset.UtcNow,
- Text = nameof(TechMessageDto.Text),
- EventState = Models.Enumerations.EventState.Triggered
- },
- new TechMessageDto()
- {
- EventId = Guid.NewGuid(),
- CategoryId = 2,
- Timestamp = DateTimeOffset.UtcNow,
- Text = nameof(TechMessageDto.Text),
- EventState = Models.Enumerations.EventState.Triggered
- }
- };
+ var dtos = new List()
+ {
+ new TechMessageDto()
+ {
+ EventId = Guid.NewGuid(),
+ CategoryId = 1,
+ Timestamp = DateTimeOffset.UtcNow,
+ Text = nameof(TechMessageDto.Text),
+ EventState = Models.Enumerations.EventState.Triggered
+ },
+ new TechMessageDto()
+ {
+ EventId = Guid.NewGuid(),
+ CategoryId = 2,
+ Timestamp = DateTimeOffset.UtcNow,
+ Text = nameof(TechMessageDto.Text),
+ EventState = Models.Enumerations.EventState.Triggered
+ }
+ };
- //act
- var response = await techMessagesClient.AddRange(systemId, dtos, CancellationToken.None);
+ //act
+ var response = await techMessagesClient.AddRange(systemId, dtos, CancellationToken.None);
- //assert
- Assert.Equal(dtos.Count, response);
+ //assert
+ Assert.Equal(dtos.Count, response);
return dtos;
}
diff --git a/DD.Persistence.IntegrationTests/Controllers/TimeSeriesBaseControllerTest.cs b/DD.Persistence.IntegrationTests/Controllers/TimeSeriesBaseControllerTest.cs
index 7d75875..e8f05ce 100644
--- a/DD.Persistence.IntegrationTests/Controllers/TimeSeriesBaseControllerTest.cs
+++ b/DD.Persistence.IntegrationTests/Controllers/TimeSeriesBaseControllerTest.cs
@@ -1,16 +1,19 @@
+using DD.Persistence.Client;
+using DD.Persistence.Client.Clients;
+using DD.Persistence.Client.Clients.Interfaces;
+using DD.Persistence.Client.Clients.Interfaces.Refit;
+using DD.Persistence.Database.Model;
+using DD.Persistence.Models;
using Mapster;
using Microsoft.Extensions.DependencyInjection;
-using DD.Persistence.Client;
-using DD.Persistence.Client.Clients.Interfaces;
-using DD.Persistence.Database.Model;
-using System.Net;
+using Microsoft.Extensions.Logging;
using Xunit;
namespace DD.Persistence.IntegrationTests.Controllers;
public abstract class TimeSeriesBaseControllerTest : BaseIntegrationTest
where TEntity : class, ITimestampedData, new()
- where TDto : class, new()
+ where TDto : class, ITimeSeriesAbstractDto, new()
{
private readonly ITimeSeriesClient timeSeriesClient;
@@ -18,11 +21,12 @@ public abstract class TimeSeriesBaseControllerTest : BaseIntegrat
{
dbContext.CleanupDbSet();
- var scope = factory.Services.CreateScope();
- var persistenceClientFactory = scope.ServiceProvider
- .GetRequiredService();
+ var refitClientFactory = scope.ServiceProvider
+ .GetRequiredService>>();
+ var logger = scope.ServiceProvider.GetRequiredService>>();
- timeSeriesClient = persistenceClientFactory.GetTimeSeriesClient();
+ timeSeriesClient = scope.ServiceProvider
+ .GetRequiredService>();
}
public async Task InsertRangeSuccess(TDto dto)
diff --git a/DD.Persistence.IntegrationTests/Controllers/TimestampedSetControllerTest.cs b/DD.Persistence.IntegrationTests/Controllers/TimestampedSetControllerTest.cs
index 567b8c8..1e84e9d 100644
--- a/DD.Persistence.IntegrationTests/Controllers/TimestampedSetControllerTest.cs
+++ b/DD.Persistence.IntegrationTests/Controllers/TimestampedSetControllerTest.cs
@@ -3,6 +3,9 @@ using DD.Persistence.Client;
using DD.Persistence.Client.Clients.Interfaces;
using DD.Persistence.Models;
using Xunit;
+using DD.Persistence.Client.Clients.Interfaces.Refit;
+using DD.Persistence.Client.Clients;
+using Microsoft.Extensions.Logging;
namespace DD.Persistence.IntegrationTests.Controllers;
public class TimestampedSetControllerTest : BaseIntegrationTest
@@ -11,10 +14,12 @@ public class TimestampedSetControllerTest : BaseIntegrationTest
public TimestampedSetControllerTest(WebAppFactoryFixture factory) : base(factory)
{
- var persistenceClientFactory = scope.ServiceProvider
- .GetRequiredService();
+ var refitClientFactory = scope.ServiceProvider
+ .GetRequiredService>();
+ var logger = scope.ServiceProvider.GetRequiredService>();
- client = persistenceClientFactory.GetTimestampedSetClient();
+ client = scope.ServiceProvider
+ .GetRequiredService();
}
[Fact]
diff --git a/DD.Persistence.IntegrationTests/Controllers/WitsDataControllerTest.cs b/DD.Persistence.IntegrationTests/Controllers/WitsDataControllerTest.cs
index 6b33804..13e1116 100644
--- a/DD.Persistence.IntegrationTests/Controllers/WitsDataControllerTest.cs
+++ b/DD.Persistence.IntegrationTests/Controllers/WitsDataControllerTest.cs
@@ -1,13 +1,12 @@
-using Microsoft.Extensions.DependencyInjection;
+using DD.Persistence.Client;
+using DD.Persistence.Client.Clients;
+using DD.Persistence.Client.Clients.Interfaces;
+using DD.Persistence.Client.Clients.Interfaces.Refit;
using DD.Persistence.Database.Entity;
using DD.Persistence.Models;
-using System.Net;
-using Xunit;
-using DD.Persistence.Client.Clients.Interfaces;
-using DD.Persistence.Client;
-using DD.Persistence.Client.Clients.Interfaces.Refit;
-using DD.Persistence.Client.Clients;
+using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
+using Xunit;
namespace DD.Persistence.IntegrationTests.Controllers;
public class WitsDataControllerTest : BaseIntegrationTest
@@ -17,7 +16,7 @@ public class WitsDataControllerTest : BaseIntegrationTest
public WitsDataControllerTest(WebAppFactoryFixture factory) : base(factory)
{
var refitClientFactory = scope.ServiceProvider
- .GetRequiredService>();
+ .GetRequiredService>();
var logger = scope.ServiceProvider.GetRequiredService>();
witsDataClient = scope.ServiceProvider