using System; using System.Collections.Generic; using LCU.API.Collections.RepoApi.Controllers; using LCU.API.Collections.RepoApi.Services; using LCU.Shared.Collections.RepoApiLib.Models; using LCU.Shared.Collections.RepoApiLib.Models.Producer; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Xunit; using Moq; namespace LCU.API.Collections.RepoApiTests.Controllers { public class ProcessingReceiptControllerTest { List list = new List() { new ProcessingReceipt("123456-888") { Message = "x", Outcome = RepoProcessingResult.Error, Processed = DateTime.Now, AccountId = "321", CaseId = "", QueuedBy = "Testing" }, new ProcessingReceipt("123456-888") { Message = "y", Outcome = RepoProcessingResult.Created, Processed = DateTime.Now, AccountId = "", CaseId = "", QueuedBy = "Testing" } }; private readonly Mock _mockReceiptService; private readonly ProcessingReceiptController _controller; public ProcessingReceiptControllerTest() { _mockReceiptService = new Mock(); var mockHttpContextAccessor = new Mock(); _controller = new ProcessingReceiptController(_mockReceiptService.Object, mockHttpContextAccessor.Object); } [Fact] public async void GetByAccountNo_OK() { _mockReceiptService.Setup(service => service.GetReceiptsByAccountNoAsync(It.IsAny())) .ReturnsAsync(list); var results = await _controller.GetByAccountNo("123456-888"); var okresults = results as OkObjectResult; Assert.NotNull(okresults); Assert.Equal(200, okresults.StatusCode); } [Fact] public async void GetByAccountNo_NotFound() { _mockReceiptService.Setup(service => service.GetReceiptsByAccountNoAsync(It.IsAny())) .ReturnsAsync(new List{}); var results = await _controller.GetByAccountNo("123456-888"); var objectResult = results as ObjectResult; Assert.NotNull(objectResult); Assert.IsType(objectResult); } [Fact] public async void GetByAccountNo_ServerException() { _mockReceiptService.Setup(service => service.GetReceiptsByAccountNoAsync(It.IsAny())).ThrowsAsync(new Exception("oops")); var results = await _controller.GetByAccountNo("123456-888"); var objectResult = results as StatusCodeResult; Assert.NotNull(objectResult); Assert.Equal(500, objectResult.StatusCode); } } }