DD.WellWorkover.Cloud/AsbCloudWebApi.Tests/Services/DetectedOperations/Detectors/DetectorSlipsTimeTests.cs
2024-03-01 07:59:26 +03:00

85 lines
2.0 KiB
C#

using System;
using AsbCloudInfrastructure.Services.DetectOperations.Detectors;
using AsbCloudWebApi.Tests.Builders;
using Xunit;
namespace AsbCloudWebApi.Tests.Services.DetectedOperations.Detectors;
public class DetectorSlipsTimeTests
{
private const int IdSlipsTime = 5011;
private readonly DetectableTelemetryBuilder telemetryBuilder = new();
private readonly DetectorSlipsTime sut = new();
[Fact]
public void DetectOperation_by_change_block_position_and_axial_load_less_hook_weight_is_success()
{
//arrange
var point0 = telemetryBuilder
.Build();
var point1 = telemetryBuilder
.WithBlockPosition(21)
.Build();
var telemetries = new[] { point0, point1 };
//act
var isDetectOperation = sut.TryDetect(0, telemetries, 0, telemetries.Length - 1, null, out var result);
//assert
Assert.True(isDetectOperation);
Assert.NotNull(result);
Assert.Equal(IdSlipsTime, result.Operation.IdCategory);
}
[Fact]
public void DetectOperation_by_high_pressure_is_success()
{
//arrange
var point0 = telemetryBuilder
.Build();
var point1 = telemetryBuilder
.WithBlockPosition(21)
.WithAxialLoad(30)
.WithHookWeight(20)
.WithPressure(23)
.Build();
var telemetries = new[] { point0, point1 };
//act
var isDetectOperation = sut.TryDetect(0, telemetries, 0, telemetries.Length - 1, null, out var result);
//assert
Assert.True(isDetectOperation);
Assert.NotNull(result);
Assert.Equal(IdSlipsTime, result.Operation.IdCategory);
}
[Fact]
public void ValidateOperation_with_duration_more_30_minutes_is_invalid()
{
//arrange
var point0 = telemetryBuilder
.Build();
var point1 = telemetryBuilder
.WithDateTime(DateTimeOffset.UtcNow.AddMinutes(30))
.WithBlockPosition(21)
.Build();
var telemetries = new[] { point0, point1 };
//act
var isDetectOperation = sut.TryDetect(0, telemetries, 0, telemetries.Length - 1, null, out var result);
//assert
Assert.False(isDetectOperation);
Assert.NotNull(result);
Assert.Equal(IdSlipsTime, result.Operation.IdCategory);
}
}