forked from ddrilling/AsbCloudServer
290 lines
8.5 KiB
C#
290 lines
8.5 KiB
C#
using AsbCloudApp.Data;
|
||
using AsbCloudApp.Data.SAUB;
|
||
using AsbCloudApp.Repositories;
|
||
using AsbCloudApp.Requests;
|
||
using AsbCloudApp.Services;
|
||
using AsbCloudDb.Model;
|
||
using AsbCloudInfrastructure.Services;
|
||
using NSubstitute;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.Linq;
|
||
using System.Threading;
|
||
using System.Threading.Tasks;
|
||
using Xunit;
|
||
|
||
namespace AsbCloudInfrastructure.Tests.Services;
|
||
|
||
public class MessageServiceTest
|
||
{
|
||
private static readonly List<TelemetryBaseDto> telemetries = new List<TelemetryBaseDto>()
|
||
{
|
||
new TelemetryBaseDto()
|
||
{
|
||
Id = 1,
|
||
TimeZone = new SimpleTimezoneDto()
|
||
{
|
||
Hours = 5
|
||
}
|
||
},
|
||
new TelemetryBaseDto()
|
||
{
|
||
Id = 2,
|
||
TimeZone = new SimpleTimezoneDto()
|
||
{
|
||
Hours = 5
|
||
}
|
||
}
|
||
};
|
||
|
||
private static readonly List<TelemetryEventDto> events = new List<TelemetryEventDto>()
|
||
{
|
||
new TelemetryEventDto()
|
||
{
|
||
Id = 1,
|
||
IdCategory = 1,
|
||
MessageTemplate = "Шаблон сообщения 1 категории 1"
|
||
},
|
||
new TelemetryEventDto()
|
||
{
|
||
Id = 2,
|
||
IdCategory = 1,
|
||
MessageTemplate = "Шаблон сообщения 2 категории 1"
|
||
},
|
||
new TelemetryEventDto()
|
||
{
|
||
Id = 3,
|
||
IdCategory = 1,
|
||
MessageTemplate = "Шаблон сообщения 3 категории 1"
|
||
},
|
||
new TelemetryEventDto()
|
||
{
|
||
Id = 4,
|
||
IdCategory = 2,
|
||
MessageTemplate = "Шаблон сообщения 1 категории 2"
|
||
},
|
||
new TelemetryEventDto()
|
||
{
|
||
Id = 5,
|
||
IdCategory = 2,
|
||
MessageTemplate = "Шаблон сообщения 2 категории 2"
|
||
},
|
||
new TelemetryEventDto()
|
||
{
|
||
Id = 6,
|
||
IdCategory = 3,
|
||
MessageTemplate = "Шаблон сообщения 1 категории 3"
|
||
}
|
||
};
|
||
|
||
/// <summary>
|
||
/// Структура:
|
||
/// Телеметрия 1:
|
||
/// Категория 1:
|
||
/// Событие 1:
|
||
/// Сообщение 1
|
||
/// Сообщение 2
|
||
/// Сообщение 3
|
||
/// Событие 2:
|
||
/// Сообщение 1
|
||
/// Сообщение 2
|
||
/// Сообщение 3
|
||
/// Событие 3:
|
||
/// Сообщение 1
|
||
/// Сообщение 2
|
||
/// Сообщение 3
|
||
/// Категория 2:
|
||
/// Событие 2:
|
||
/// Сообщение 1
|
||
/// Сообщение 2
|
||
/// Событие 3:
|
||
/// Сообщение 1
|
||
/// Сообщение 2
|
||
/// Телеметрия 2
|
||
/// Категория 3:
|
||
/// Событие 3:
|
||
/// Сообщение 1
|
||
/// Сообщение 2
|
||
/// Сообщение 3
|
||
///
|
||
/// </summary>
|
||
private static readonly List<TelemetryMessageDto> messages = new List<TelemetryMessageDto>()
|
||
{
|
||
new TelemetryMessageDto()
|
||
{
|
||
Id = 1,
|
||
IdEvent = 1,
|
||
IdTelemetry = 1
|
||
},
|
||
new TelemetryMessageDto()
|
||
{
|
||
Id = 2,
|
||
IdEvent = 1,
|
||
IdTelemetry = 1
|
||
},
|
||
new TelemetryMessageDto()
|
||
{
|
||
Id = 3,
|
||
IdEvent = 1,
|
||
IdTelemetry = 1
|
||
},
|
||
new TelemetryMessageDto()
|
||
{
|
||
Id = 4,
|
||
IdEvent = 2,
|
||
IdTelemetry = 1
|
||
},
|
||
new TelemetryMessageDto()
|
||
{
|
||
Id = 5,
|
||
IdEvent = 2,
|
||
IdTelemetry = 1
|
||
},
|
||
new TelemetryMessageDto()
|
||
{
|
||
Id = 6,
|
||
IdEvent = 2,
|
||
IdTelemetry = 1
|
||
},
|
||
new TelemetryMessageDto()
|
||
{
|
||
Id = 7,
|
||
IdEvent = 3,
|
||
IdTelemetry = 1
|
||
},
|
||
new TelemetryMessageDto()
|
||
{
|
||
Id = 8,
|
||
IdEvent = 3,
|
||
IdTelemetry = 1
|
||
},
|
||
new TelemetryMessageDto()
|
||
{
|
||
Id = 9,
|
||
IdEvent = 3,
|
||
IdTelemetry = 1
|
||
},
|
||
new TelemetryMessageDto()
|
||
{
|
||
Id = 10,
|
||
IdEvent = 4,
|
||
IdTelemetry = 1
|
||
},
|
||
new TelemetryMessageDto()
|
||
{
|
||
Id = 11,
|
||
IdEvent = 4,
|
||
IdTelemetry = 1
|
||
},
|
||
new TelemetryMessageDto()
|
||
{
|
||
Id = 12,
|
||
IdEvent = 5,
|
||
IdTelemetry = 1
|
||
},
|
||
new TelemetryMessageDto()
|
||
{
|
||
Id = 13,
|
||
IdEvent = 5,
|
||
IdTelemetry = 1
|
||
},
|
||
new TelemetryMessageDto()
|
||
{
|
||
Id = 14,
|
||
IdEvent = 6,
|
||
IdTelemetry = 2
|
||
},
|
||
new TelemetryMessageDto()
|
||
{
|
||
Id = 15,
|
||
IdEvent = 6,
|
||
IdTelemetry = 2
|
||
},
|
||
new TelemetryMessageDto()
|
||
{
|
||
Id = 16,
|
||
IdEvent = 6,
|
||
IdTelemetry = 2
|
||
},
|
||
};
|
||
|
||
|
||
|
||
private readonly IMessageService messageServiceMock = Substitute.For<IMessageService>();
|
||
private readonly IMessageRepository messageRepositoryMock = Substitute.For<IMessageRepository>();
|
||
private readonly IEventRepository eventRepositoryMock = Substitute.For<IEventRepository>();
|
||
private readonly ITelemetryService telemetryServiceMock = Substitute.For<ITelemetryService>();
|
||
|
||
public MessageServiceTest()
|
||
{
|
||
messageServiceMock = new MessageService(messageRepositoryMock, telemetryServiceMock, eventRepositoryMock);
|
||
|
||
telemetryServiceMock
|
||
.GetOrDefaultTelemetriesByIdsWells(Arg.Any<IEnumerable<int>>())
|
||
.Returns(telemetries);
|
||
|
||
eventRepositoryMock
|
||
.GetAsync(Arg.Any<TelemetryEventRequest>(), Arg.Any<CancellationToken>())
|
||
.Returns(events);
|
||
|
||
messageRepositoryMock
|
||
.GetMessagesAsync(Arg.Any<MessageTelemetryRequest>(), Arg.Any<CancellationToken>())
|
||
.Returns(messages);
|
||
}
|
||
|
||
|
||
[Fact]
|
||
public async Task GetStatMessages_ShouldReturn_Success()
|
||
{
|
||
//act
|
||
var baseRequest = new MessageRequestBase() { };
|
||
var messageRequest = new MessageRequest(baseRequest, [1]);
|
||
var result = await messageServiceMock.GetStatAsync(messageRequest, CancellationToken.None);
|
||
|
||
Assert.Equal(6, result.Count());
|
||
|
||
var сообщение_1_1 = result
|
||
.Where(x => x.IdTelemetry == 1)
|
||
.Where(x => x.IdCategory == 1)
|
||
.Where(x => x.MessageTemplate == "Шаблон сообщения 1 категории 1")
|
||
.Single();
|
||
Assert.Equal(3, сообщение_1_1.MessagesCount);
|
||
|
||
var сообщение_1_2 = result
|
||
.Where(x => x.IdTelemetry == 1)
|
||
.Where(x => x.IdCategory == 1)
|
||
.Where(x => x.MessageTemplate == "Шаблон сообщения 2 категории 1")
|
||
.Single();
|
||
Assert.Equal(3, сообщение_1_2.MessagesCount);
|
||
|
||
var сообщение_1_3 = result
|
||
.Where(x => x.IdTelemetry == 1)
|
||
.Where(x => x.IdCategory == 1)
|
||
.Where(x => x.MessageTemplate == "Шаблон сообщения 3 категории 1")
|
||
.Single();
|
||
Assert.Equal(3, сообщение_1_3.MessagesCount);
|
||
|
||
var сообщение_2_2 = result
|
||
.Where(x => x.IdTelemetry == 1)
|
||
.Where(x => x.IdCategory == 2)
|
||
.Where(x => x.MessageTemplate == "Шаблон сообщения 2 категории 2")
|
||
.Single();
|
||
Assert.Equal(2, сообщение_2_2.MessagesCount);
|
||
|
||
var сообщение_2_1 = result
|
||
.Where(x => x.IdTelemetry == 1)
|
||
.Where(x => x.IdCategory == 2)
|
||
.Where(x => x.MessageTemplate == "Шаблон сообщения 1 категории 2")
|
||
.Single();
|
||
Assert.Equal(2, сообщение_2_1.MessagesCount);
|
||
|
||
var сообщение_3_1 = result
|
||
.Where(x => x.IdTelemetry == 2)
|
||
.Where(x => x.IdCategory == 3)
|
||
.Where(x => x.MessageTemplate == "Шаблон сообщения 1 категории 3")
|
||
.Single();
|
||
Assert.Equal(3, сообщение_3_1.MessagesCount);
|
||
}
|
||
|
||
|
||
} |