Template
127 lines
5.0 KiB
C#
127 lines
5.0 KiB
C#
using FluentAssertions;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.Extensions.Logging;
|
|
using Moq;
|
|
using NUnit.Framework;
|
|
using Strata.ContinuousImprovement.Api.Controllers;
|
|
using Strata.ContinuousImprovement.Api.Test.Unit.Generics;
|
|
using Strata.ContinuousImprovement.Biz.ChargeCode.Jobs;
|
|
using System;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Strata.ContinuousImprovement.Api.Test.Unit.Controllers
|
|
{
|
|
[TestFixture, Category("Unit"), Category("Controller")]
|
|
public class ChargeCodeOpportunityDetailsControllerTests
|
|
{
|
|
public ChargeCodeOpportunityDetailsController Controller { get; set; }
|
|
public FakeBackgroundJobClient BackgroundJobClient { get; set; }
|
|
private Mock<ICCOpportunityClientJob> _mockClientJob;
|
|
private ILogger<ChargeCodeOpportunityDetailsController> _logger;
|
|
|
|
[OneTimeSetUp]
|
|
public void TestSetup()
|
|
{
|
|
// Arrange
|
|
BackgroundJobClient ??= new FakeBackgroundJobClient();
|
|
_mockClientJob = new Mock<ICCOpportunityClientJob>();
|
|
_logger = Mock.Of<ILogger<ChargeCodeOpportunityDetailsController>>();
|
|
|
|
_mockClientJob
|
|
.Setup(j => j.RefreshClientOpportunityBaselineDetails(It.IsAny<int>(), It.Is<Guid>(g => g != Guid.Empty), It.IsAny<CancellationToken>()))
|
|
.ReturnsAsync("baseline-job-123");
|
|
_mockClientJob
|
|
.Setup(j => j.RefreshClientOpportunityTrackingDetails(It.IsAny<int>(), It.Is<Guid>(g => g != Guid.Empty), It.IsAny<CancellationToken>()))
|
|
.ReturnsAsync("tracking-job-456");
|
|
_mockClientJob
|
|
.Setup(j => j.RefreshClientOpportunityBaselineDetails(It.IsAny<int>(), Guid.Empty, It.IsAny<CancellationToken>()))
|
|
.ThrowsAsync(new InvalidOperationException("Opportunity missing"));
|
|
_mockClientJob
|
|
.Setup(j => j.RefreshClientOpportunityTrackingDetails(It.IsAny<int>(), Guid.Empty, It.IsAny<CancellationToken>()))
|
|
.ThrowsAsync(new InvalidOperationException("Initiative missing"));
|
|
|
|
Controller = new ChargeCodeOpportunityDetailsController(BackgroundJobClient, _mockClientJob.Object, _logger);
|
|
}
|
|
|
|
[Test]
|
|
public void ChargeCodeOpportunityDetailsControllerTest()
|
|
{
|
|
// Arrange
|
|
var controller = new ChargeCodeOpportunityDetailsController(BackgroundJobClient, _mockClientJob.Object, _logger);
|
|
|
|
// Assert
|
|
controller.Should().NotBeNull();
|
|
}
|
|
|
|
[Test]
|
|
public void CreateTest()
|
|
{
|
|
// Arrange
|
|
Action create = () => Controller.Create(new ChargeCodeOpportunityDetailsController.ChargeCodeDetailInfo
|
|
{
|
|
StrataId = 9,
|
|
OpportunityGuid = Guid.NewGuid(),
|
|
IsBaseline = true,
|
|
IsUpdate = true
|
|
}, CancellationToken.None);
|
|
|
|
// Assert
|
|
create.Should().NotThrow();
|
|
}
|
|
|
|
[Test]
|
|
public async Task RefreshBaselineDetails_ReturnsOk_OnSuccess()
|
|
{
|
|
var request = new ChargeCodeOpportunityDetailsController.ChargeCodeOpportunityJobRequestInfo
|
|
{
|
|
StrataId = 9,
|
|
OpportunityGuid = Guid.NewGuid()
|
|
};
|
|
|
|
var result = await Controller.RefreshBaselineDetails(request, CancellationToken.None);
|
|
var ok = result.Should().BeOfType<OkObjectResult>().Subject;
|
|
ok.Value.Should().Be("baseline-job-123");
|
|
}
|
|
|
|
[Test]
|
|
public async Task RefreshTrackingDetails_ReturnsOk_OnSuccess()
|
|
{
|
|
var request = new ChargeCodeOpportunityDetailsController.ChargeCodeOpportunityJobRequestInfo
|
|
{
|
|
StrataId = 9,
|
|
OpportunityGuid = Guid.NewGuid()
|
|
};
|
|
|
|
var result = await Controller.RefreshTrackingDetails(request, CancellationToken.None);
|
|
var ok = result.Should().BeOfType<OkObjectResult>().Subject;
|
|
ok.Value.Should().Be("tracking-job-456");
|
|
}
|
|
|
|
[Test]
|
|
public async Task RefreshBaselineDetails_ReturnsBadRequest_OnException()
|
|
{
|
|
var request = new ChargeCodeOpportunityDetailsController.ChargeCodeOpportunityJobRequestInfo
|
|
{
|
|
StrataId = 9,
|
|
OpportunityGuid = Guid.Empty
|
|
};
|
|
|
|
var result = await Controller.RefreshBaselineDetails(request, CancellationToken.None);
|
|
result.Should().BeOfType<BadRequestResult>();
|
|
}
|
|
|
|
[Test]
|
|
public async Task RefreshTrackingDetails_ReturnsBadRequest_OnException()
|
|
{
|
|
var request = new ChargeCodeOpportunityDetailsController.ChargeCodeOpportunityJobRequestInfo
|
|
{
|
|
StrataId = 9,
|
|
OpportunityGuid = Guid.Empty
|
|
};
|
|
|
|
var result = await Controller.RefreshTrackingDetails(request, CancellationToken.None);
|
|
result.Should().BeOfType<BadRequestResult>();
|
|
}
|
|
}
|
|
} |