using System.Collections.Generic; using LCU.API.Collections.RepoApi.Controllers; using LCU.API.Collections.RepoApi.Models.Filters; using LCU.API.Collections.RepoApi.Models.Requests; using LCU.API.Collections.RepoApi.Models.Responses; using LCU.API.Collections.RepoApi.Services; using LCU.Shared.Collections.RepoApiLib.Models; using LCU.Shared.Collections.RepoApiLib.Models.Results; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Moq; using Xunit; namespace LCU.API.Collections.RepoApiTests.Controllers { public class AuctionAssignmentControllerTest { private readonly AuctionAssignmentController controller; private readonly Mock mockAuctionAssignmentServiceService; private readonly Mock mockloorPricingService; private readonly Mock mockHttpContextAccessor; public AuctionAssignmentControllerTest() { mockAuctionAssignmentServiceService = new Mock(); mockloorPricingService = new Mock(); mockHttpContextAccessor = new Mock(); controller = new AuctionAssignmentController( mockAuctionAssignmentServiceService.Object, mockloorPricingService.Object, mockHttpContextAccessor.Object ); } [Fact] public async void Get_OK() { mockAuctionAssignmentServiceService.Setup(service => service.ListByFilterAsync(It.IsAny())).ReturnsAsync( new PagedResult() { Total = 1, Items = new List() { new AuctionAssignment() } }); var filter = new AuctionAssignmentFilter(); var result = await controller.Get(filter); Assert.NotNull(result); var okResult = result as OkObjectResult; Assert.NotNull(okResult); Assert.Equal(200, okResult.StatusCode); var okValue = okResult.Value as PagedResponse; Assert.NotNull(okValue); Assert.Equal(1, okValue.TotalItems); mockAuctionAssignmentServiceService.Verify(x => x.ListByFilterAsync(It.IsAny()), Times.Once); } [Fact] public async void Post_OK() { mockAuctionAssignmentServiceService.Setup(service => service.SaveAsync(It.IsAny())).ReturnsAsync( new AuctionAssignmentPostRequest() { AuctionAssignment = new AuctionAssignment() { CollateralVIN = "abcde", } }); //var controller = new AuctionAssignmentController(mockService.Object, mockAutoIms.Object); var result = await controller.Post(new AuctionAssignmentPostRequest() { Collaterals = new List { new Collateral() } }); Assert.NotNull(result); var okResult = result as OkObjectResult; Assert.NotNull(okResult); Assert.Equal(200, okResult.StatusCode); var okValue = okResult.Value as AuctionAssignmentPostRequest; Assert.NotNull(okValue); Assert.Equal("abcde", okValue.AuctionAssignment.CollateralVIN); mockAuctionAssignmentServiceService.Verify(x => x.SaveAsync(It.IsAny()), Times.Once); } [Fact] public async void Bad_GetById_Fails() { var result = await controller.GetById(0); Assert.NotNull(result); var badRequest = result as BadRequestObjectResult; Assert.NotNull(badRequest); Assert.Equal(400, badRequest.StatusCode); } [Fact] public async void Put_IdMismatch_Fails() { var auctionAssignmentToPut = new AuctionAssignment() { ID = 2 }; var result = await controller.Put(1, auctionAssignmentToPut); Assert.NotNull(result); var badRequest = result as BadRequestObjectResult; Assert.NotNull(badRequest); Assert.Equal(400, badRequest.StatusCode); } } }