rama creada apartir de master en j
This commit is contained in:
@@ -16,26 +16,29 @@ namespace adas_core.Test.Services;
|
||||
[TestFixture]
|
||||
public class RelayServiceTest
|
||||
{
|
||||
/// <summary>
|
||||
/// Sets up the test environment by initializing mocks and dependencies required for unit testing the <see cref="RelayService"/>, including logger, HTTP client factory, HTTP message handler, relay settings, point-of-care service, and relay repository.
|
||||
/// </summary>
|
||||
[SetUp]
|
||||
public void Setup()
|
||||
{
|
||||
_logger = new Mock<ILogger<RelayService>>();
|
||||
_httpClientFactoryMock = new Mock<IHttpClientFactory>();
|
||||
_httpMessageHandlerMock = new Mock<HttpMessageHandler>();
|
||||
_relaySettings.RecordingOrApiUrl = "http://localhost:8080";
|
||||
_relaySettings.Cache = true;
|
||||
_optionsRelaySettings = Options.Create(_relaySettings);
|
||||
_pocServiceMock = new Mock<IPointOfCareService>();
|
||||
_relayRepositoryMock = new Mock<IRelayRepository>();
|
||||
|
||||
_relayService = new RelayService(
|
||||
//optionsApiSettings,
|
||||
_logger.Object,
|
||||
_httpClientFactoryMock.Object,
|
||||
_optionsRelaySettings,
|
||||
_pocServiceMock.Object,
|
||||
_relayRepositoryMock.Object);
|
||||
}
|
||||
public void Setup()
|
||||
{
|
||||
_logger = new Mock<ILogger<RelayService>>();
|
||||
_httpClientFactoryMock = new Mock<IHttpClientFactory>();
|
||||
_httpMessageHandlerMock = new Mock<HttpMessageHandler>();
|
||||
_relaySettings.RecordingOrApiUrl = "http://localhost:8080";
|
||||
_relaySettings.Cache = true;
|
||||
_optionsRelaySettings = Options.Create(_relaySettings);
|
||||
_pocServiceMock = new Mock<IPointOfCareService>();
|
||||
_relayRepositoryMock = new Mock<IRelayRepository>();
|
||||
|
||||
_relayService = new RelayService(
|
||||
//optionsApiSettings,
|
||||
_logger.Object,
|
||||
_httpClientFactoryMock.Object,
|
||||
_optionsRelaySettings,
|
||||
_pocServiceMock.Object,
|
||||
_relayRepositoryMock.Object);
|
||||
}
|
||||
|
||||
private RelayService _relayService = null!;
|
||||
private Mock<IHttpClientFactory> _httpClientFactoryMock = null!;
|
||||
@@ -52,117 +55,126 @@ public class RelayServiceTest
|
||||
|
||||
private Mock<ILogger<RelayService>> _logger = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Verifies that the relay service successfully powers off a relay by issuing an HTTP request through the configured HTTP client factory.
|
||||
/// </summary>
|
||||
[Test]
|
||||
public async Task PowerOffAsync()
|
||||
{
|
||||
var relay = new Relay
|
||||
public async Task PowerOffAsync()
|
||||
{
|
||||
Driver = "KMTronicV2",
|
||||
Ip = "10.133.10.169",
|
||||
Port = 80,
|
||||
RelayNumber = 1,
|
||||
RelayName = "Relay1",
|
||||
Total = 8,
|
||||
Username = "adas",
|
||||
Password = "!HULPM22"
|
||||
};
|
||||
|
||||
|
||||
var httpResponseMessage = new HttpResponseMessage
|
||||
{
|
||||
StatusCode = HttpStatusCode.OK,
|
||||
Content = new StringContent("Test content")
|
||||
};
|
||||
|
||||
_httpMessageHandlerMock.Protected()
|
||||
.Setup<Task<HttpResponseMessage>>("SendAsync", ItExpr.IsAny<HttpRequestMessage>(),
|
||||
ItExpr.IsAny<CancellationToken>())
|
||||
.ReturnsAsync(httpResponseMessage);
|
||||
|
||||
|
||||
var client = new HttpClient(_httpMessageHandlerMock.Object);
|
||||
|
||||
_httpClientFactoryMock.Setup(c => c.CreateClient(It.IsAny<string>())).Returns(client);
|
||||
|
||||
await _relayService.PowerOff(relay);
|
||||
}
|
||||
var relay = new Relay
|
||||
{
|
||||
Driver = "KMTronicV2",
|
||||
Ip = "10.133.10.169",
|
||||
Port = 80,
|
||||
RelayNumber = 1,
|
||||
RelayName = "Relay1",
|
||||
Total = 8,
|
||||
Username = "adas",
|
||||
Password = "!HULPM22"
|
||||
};
|
||||
|
||||
|
||||
var httpResponseMessage = new HttpResponseMessage
|
||||
{
|
||||
StatusCode = HttpStatusCode.OK,
|
||||
Content = new StringContent("Test content")
|
||||
};
|
||||
|
||||
_httpMessageHandlerMock.Protected()
|
||||
.Setup<Task<HttpResponseMessage>>("SendAsync", ItExpr.IsAny<HttpRequestMessage>(),
|
||||
ItExpr.IsAny<CancellationToken>())
|
||||
.ReturnsAsync(httpResponseMessage);
|
||||
|
||||
|
||||
var client = new HttpClient(_httpMessageHandlerMock.Object);
|
||||
|
||||
_httpClientFactoryMock.Setup(c => c.CreateClient(It.IsAny<string>())).Returns(client);
|
||||
|
||||
await _relayService.PowerOff(relay);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Verifies that <see cref="RelayService.PowerOn"/> correctly sends a power-on request to the configured relay device using the HTTP client.
|
||||
/// </summary>
|
||||
[Test]
|
||||
public async Task PowerOnAsync()
|
||||
{
|
||||
var relay = new Relay
|
||||
public async Task PowerOnAsync()
|
||||
{
|
||||
Driver = "KMTronicV2",
|
||||
Ip = "10.133.10.169",
|
||||
Port = 80,
|
||||
RelayNumber = 1,
|
||||
RelayName = "Relay1",
|
||||
Total = 8,
|
||||
Username = "adas",
|
||||
Password = "!HULPM22"
|
||||
};
|
||||
|
||||
|
||||
var httpResponseMessage = new HttpResponseMessage
|
||||
{
|
||||
StatusCode = HttpStatusCode.OK,
|
||||
Content = new StringContent("Test content")
|
||||
};
|
||||
|
||||
_httpMessageHandlerMock.Protected()
|
||||
.Setup<Task<HttpResponseMessage>>("SendAsync", ItExpr.IsAny<HttpRequestMessage>(),
|
||||
ItExpr.IsAny<CancellationToken>())
|
||||
.ReturnsAsync(httpResponseMessage);
|
||||
|
||||
|
||||
var client = new HttpClient(_httpMessageHandlerMock.Object);
|
||||
|
||||
_httpClientFactoryMock.Setup(c => c.CreateClient(It.IsAny<string>())).Returns(client);
|
||||
|
||||
await _relayService.PowerOn(relay);
|
||||
}
|
||||
var relay = new Relay
|
||||
{
|
||||
Driver = "KMTronicV2",
|
||||
Ip = "10.133.10.169",
|
||||
Port = 80,
|
||||
RelayNumber = 1,
|
||||
RelayName = "Relay1",
|
||||
Total = 8,
|
||||
Username = "adas",
|
||||
Password = "!HULPM22"
|
||||
};
|
||||
|
||||
|
||||
var httpResponseMessage = new HttpResponseMessage
|
||||
{
|
||||
StatusCode = HttpStatusCode.OK,
|
||||
Content = new StringContent("Test content")
|
||||
};
|
||||
|
||||
_httpMessageHandlerMock.Protected()
|
||||
.Setup<Task<HttpResponseMessage>>("SendAsync", ItExpr.IsAny<HttpRequestMessage>(),
|
||||
ItExpr.IsAny<CancellationToken>())
|
||||
.ReturnsAsync(httpResponseMessage);
|
||||
|
||||
|
||||
var client = new HttpClient(_httpMessageHandlerMock.Object);
|
||||
|
||||
_httpClientFactoryMock.Setup(c => c.CreateClient(It.IsAny<string>())).Returns(client);
|
||||
|
||||
await _relayService.PowerOn(relay);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Verifies that <c>CheckRelayStatus</c> returns <see cref="RelayEnum.Status.On"/> when the mocked HTTP response indicates the relay is on.
|
||||
/// </summary>
|
||||
[Test]
|
||||
public async Task CheckRelayStatus_Return_On()
|
||||
{
|
||||
var relay = new Relay
|
||||
public async Task CheckRelayStatus_Return_On()
|
||||
{
|
||||
Driver = "KMTronicV2",
|
||||
Ip = "10.133.10.169",
|
||||
Port = 80,
|
||||
RelayNumber = 1,
|
||||
RelayName = "Relay1",
|
||||
Total = 8,
|
||||
Username = "adas",
|
||||
Password = "!HULPM22"
|
||||
};
|
||||
|
||||
var httpResponseMessage = new HttpResponseMessage
|
||||
{
|
||||
StatusCode = HttpStatusCode.OK,
|
||||
Content = new StringContent("\"On")
|
||||
};
|
||||
|
||||
_httpMessageHandlerMock.Protected()
|
||||
.Setup<Task<HttpResponseMessage>>("SendAsync", ItExpr.IsAny<HttpRequestMessage>(),
|
||||
ItExpr.IsAny<CancellationToken>())
|
||||
.ReturnsAsync(httpResponseMessage);
|
||||
|
||||
//httpMessageHandlerMock.Protected()
|
||||
// .Setup<Task<string>>("ReadAsStringAsync", ItExpr.IsAny<string>(), ItExpr.IsAny<CancellationToken>())
|
||||
// .ReturnsAsync("\\On");
|
||||
|
||||
|
||||
var client = new HttpClient(_httpMessageHandlerMock.Object);
|
||||
|
||||
_httpClientFactoryMock.Setup(c => c.CreateClient(It.IsAny<string>())).Returns(client);
|
||||
|
||||
await _relayService.PowerOn(relay);
|
||||
var result = await _relayService.CheckRelayStatus(relay);
|
||||
|
||||
//Assert.That(result, Is.Not.Null);
|
||||
Assert.That(result, Is.EqualTo(RelayEnum.Status.On));
|
||||
}
|
||||
var relay = new Relay
|
||||
{
|
||||
Driver = "KMTronicV2",
|
||||
Ip = "10.133.10.169",
|
||||
Port = 80,
|
||||
RelayNumber = 1,
|
||||
RelayName = "Relay1",
|
||||
Total = 8,
|
||||
Username = "adas",
|
||||
Password = "!HULPM22"
|
||||
};
|
||||
|
||||
var httpResponseMessage = new HttpResponseMessage
|
||||
{
|
||||
StatusCode = HttpStatusCode.OK,
|
||||
Content = new StringContent("\"On")
|
||||
};
|
||||
|
||||
_httpMessageHandlerMock.Protected()
|
||||
.Setup<Task<HttpResponseMessage>>("SendAsync", ItExpr.IsAny<HttpRequestMessage>(),
|
||||
ItExpr.IsAny<CancellationToken>())
|
||||
.ReturnsAsync(httpResponseMessage);
|
||||
|
||||
//httpMessageHandlerMock.Protected()
|
||||
// .Setup<Task<string>>("ReadAsStringAsync", ItExpr.IsAny<string>(), ItExpr.IsAny<CancellationToken>())
|
||||
// .ReturnsAsync("\\On");
|
||||
|
||||
|
||||
var client = new HttpClient(_httpMessageHandlerMock.Object);
|
||||
|
||||
_httpClientFactoryMock.Setup(c => c.CreateClient(It.IsAny<string>())).Returns(client);
|
||||
|
||||
await _relayService.PowerOn(relay);
|
||||
var result = await _relayService.CheckRelayStatus(relay);
|
||||
|
||||
//Assert.That(result, Is.Not.Null);
|
||||
Assert.That(result, Is.EqualTo(RelayEnum.Status.On));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task CheckRelayStatus_Return_Off()
|
||||
@@ -201,41 +213,46 @@ public class RelayServiceTest
|
||||
Assert.That(result, Is.EqualTo(RelayEnum.Status.Off));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Verifies that <c>CheckRelayStatus</c> returns <see cref="RelayEnum.Status.Unknown"/> when the relay
|
||||
/// driver response does not match a recognized on/off state (e.g., the raw payload "\\Off" is not
|
||||
/// mapped to a known status).
|
||||
/// </summary>
|
||||
[Test]
|
||||
public async Task CheckRelayStatus_Return_Unknown()
|
||||
{
|
||||
var relay = new Relay
|
||||
public async Task CheckRelayStatus_Return_Unknown()
|
||||
{
|
||||
Driver = "KMTronicV2",
|
||||
Ip = "10.133.10.169",
|
||||
Port = 80,
|
||||
RelayNumber = 1,
|
||||
RelayName = "Relay1",
|
||||
Total = 8,
|
||||
Username = "adas",
|
||||
Password = "!HULPM22"
|
||||
};
|
||||
|
||||
|
||||
var httpResponseMessage = new HttpResponseMessage
|
||||
{
|
||||
StatusCode = HttpStatusCode.OK,
|
||||
Content = new StringContent("\\Off")
|
||||
};
|
||||
|
||||
_httpMessageHandlerMock.Protected()
|
||||
.Setup<Task<HttpResponseMessage>>("SendAsync", ItExpr.IsAny<HttpRequestMessage>(),
|
||||
ItExpr.IsAny<CancellationToken>())
|
||||
.ReturnsAsync(httpResponseMessage);
|
||||
|
||||
|
||||
var client = new HttpClient(_httpMessageHandlerMock.Object);
|
||||
|
||||
_httpClientFactoryMock.Setup(c => c.CreateClient(It.IsAny<string>())).Returns(client);
|
||||
|
||||
var result = await _relayService.CheckRelayStatus(relay);
|
||||
|
||||
//Assert.That(result, Is.Not.Null);
|
||||
Assert.That(result, Is.EqualTo(RelayEnum.Status.Unknown));
|
||||
}
|
||||
var relay = new Relay
|
||||
{
|
||||
Driver = "KMTronicV2",
|
||||
Ip = "10.133.10.169",
|
||||
Port = 80,
|
||||
RelayNumber = 1,
|
||||
RelayName = "Relay1",
|
||||
Total = 8,
|
||||
Username = "adas",
|
||||
Password = "!HULPM22"
|
||||
};
|
||||
|
||||
|
||||
var httpResponseMessage = new HttpResponseMessage
|
||||
{
|
||||
StatusCode = HttpStatusCode.OK,
|
||||
Content = new StringContent("\\Off")
|
||||
};
|
||||
|
||||
_httpMessageHandlerMock.Protected()
|
||||
.Setup<Task<HttpResponseMessage>>("SendAsync", ItExpr.IsAny<HttpRequestMessage>(),
|
||||
ItExpr.IsAny<CancellationToken>())
|
||||
.ReturnsAsync(httpResponseMessage);
|
||||
|
||||
|
||||
var client = new HttpClient(_httpMessageHandlerMock.Object);
|
||||
|
||||
_httpClientFactoryMock.Setup(c => c.CreateClient(It.IsAny<string>())).Returns(client);
|
||||
|
||||
var result = await _relayService.CheckRelayStatus(relay);
|
||||
|
||||
//Assert.That(result, Is.Not.Null);
|
||||
Assert.That(result, Is.EqualTo(RelayEnum.Status.Unknown));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user