using LCU.API.Collections.RepoApi.Controllers; using LCU.API.Collections.RepoApi.Services; using LCU.Shared.Collections.RepoApiLib.Models.Settings; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Moq; using Xunit; namespace LCU.API.Collections.RepoApiTests.Controllers { public class SettingsControllerTest { private readonly Mock mockSettingsService; private readonly Settings settings; private readonly SettingsController controller; private readonly Mock mockHttpContextAccessor; public SettingsControllerTest() { mockSettingsService = new Mock(); settings = new Settings(); mockHttpContextAccessor = new Mock(); controller = new SettingsController(mockSettingsService.Object, mockHttpContextAccessor.Object); } // Get tests [Fact] public async void Get_OK() { // arrange mockSettingsService.Setup(x => x.ListAllSettingsAsync()).ReturnsAsync(settings); // act var result = await controller.Get(); Assert.NotNull(result); var okResult = result as OkObjectResult; // assert Assert.NotNull(okResult); Assert.Equal(200, okResult.StatusCode); var okValue = okResult.Value as Settings; Assert.NotNull(okValue); Assert.Equal(settings, okValue); } // Put tests [Fact] public async void Put_Account_Type_OK() { // arrange var putAccountType = new AccountType(); // act var result = await controller.PutAccountType(putAccountType); Assert.NotNull(result); var okResult = result as OkObjectResult; // assert Assert.NotNull(okResult); Assert.Equal(200, okResult.StatusCode); } [Fact] public async void Put_Allowed_Status_Change_OK() { // arrange var putAllowedStatusChange = new AllowedStatusChange(); // act var result = await controller.PutAllowedStatusChange(putAllowedStatusChange); Assert.NotNull(result); var okResult = result as OkObjectResult; // assert Assert.NotNull(okResult); Assert.Equal(200, okResult.StatusCode); } [Fact] public async void Put_Body_Style_OK() { // arrange var putBodyStyle = new BodyStyle(); // act var result = await controller.PutBodyStyle(putBodyStyle); Assert.NotNull(result); var okResult = result as OkObjectResult; // assert Assert.NotNull(okResult); Assert.Equal(200, okResult.StatusCode); } [Fact] public async void Put_Cleaning_Level_OK() { // arrange var putCleaningLevel = new CleaningLevel(); // act var result = await controller.PutCleaningLevel(putCleaningLevel); Assert.NotNull(result); var okResult = result as OkObjectResult; // assert Assert.NotNull(okResult); Assert.Equal(200, okResult.StatusCode); } [Fact] public async void Put_CollateralType_OK() { // arrange var putCollateralType = new CollateralType(); // act var result = await controller.PutCollateralType(putCollateralType); Assert.NotNull(result); var okResult = result as OkObjectResult; // assert Assert.NotNull(okResult); Assert.Equal(200, okResult.StatusCode); } [Fact] public async void Put_CollateralTypeToVehicleType_OK() { // arrange var putCollateralToVehicle = new CollateralTypeToVehicleType(); // act var result = await controller.PutCollateralTypeToVehicleType(putCollateralToVehicle); Assert.NotNull(result); var okResult = result as OkObjectResult; // assert Assert.NotNull(okResult); Assert.Equal(200, okResult.StatusCode); } [Fact] public async void Put_Hold_Status_OK() { // arrange var putHoldStatus = new HoldStatus(); // act var result = await controller.PutHoldStatus(putHoldStatus); Assert.NotNull(result); var okResult = result as OkObjectResult; // assert Assert.NotNull(okResult); Assert.Equal(200, okResult.StatusCode); } [Fact] public async void Put_Loan_Category_OK() { // arrange var putLoanCategory = new LoanCategory(); // act var result = await controller.PutLoanCategory(putLoanCategory); Assert.NotNull(result); var okResult = result as OkObjectResult; // assert Assert.NotNull(okResult); Assert.Equal(200, okResult.StatusCode); } [Fact] public async void Put_Location_Type_OK() { // arrange var putLocationType = new LocationType(); // act var result = await controller.PutLocationType(putLocationType); Assert.NotNull(result); var okResult = result as OkObjectResult; // assert Assert.NotNull(okResult); Assert.Equal(200, okResult.StatusCode); } [Fact] public async void Put_Vehicle_Type_OK() { // arrange var putVehicleType = new VehicleType(); // act var result = await controller.PutVehicleType(putVehicleType); Assert.NotNull(result); var okResult = result as OkObjectResult; // assert Assert.NotNull(okResult); Assert.Equal(200, okResult.StatusCode); } // Post tests [Fact] public async void Post_Account_Type_OK() { // arrange var postAccountType = new AccountType(); // act var result = await controller.PostAccountType(postAccountType); Assert.NotNull(result); var okResult = result as OkObjectResult; // assert Assert.NotNull(okResult); Assert.Equal(200, okResult.StatusCode); } [Fact] public async void Post_Allowed_Status_Change_OK() { // arrange var postStatusChange = new AllowedStatusChange(); // act var result = await controller.PostAllowedStatusChange(postStatusChange); Assert.NotNull(result); var okResult = result as OkObjectResult; // assert Assert.NotNull(okResult); Assert.Equal(200, okResult.StatusCode); } [Fact] public async void Post_Body_Style_OK() { // arrange var postBodyStyle = new BodyStyle(); // act var result = await controller.PostBodyStyle(postBodyStyle); Assert.NotNull(result); var okResult = result as OkObjectResult; // assert Assert.NotNull(okResult); Assert.Equal(200, okResult.StatusCode); } [Fact] public async void Post_Cleaning_Level_OK() { // arrange var postCleaningLevel = new CleaningLevel(); // act var result = await controller.PostCleaningLevel(postCleaningLevel); Assert.NotNull(result); var okResult = result as OkObjectResult; // assert Assert.NotNull(okResult); Assert.Equal(200, okResult.StatusCode); } [Fact] public async void Post_Collateral_Type_OK() { // arrange var postCollateralType = new CollateralType(); // act var result = await controller.PostCollateralType(postCollateralType); Assert.NotNull(result); var okResult = result as OkObjectResult; // assert Assert.NotNull(okResult); Assert.Equal(200, okResult.StatusCode); } [Fact] public async void Post_Collateral_Type_To_Vehicle_Type_OK() { // arrange var postCollateralTypeToVehicleType = new CollateralTypeToVehicleType(); // act var result = await controller.PostCollateralTypeToVehicleType(postCollateralTypeToVehicleType); Assert.NotNull(result); var okResult = result as OkObjectResult; // assert Assert.NotNull(okResult); Assert.Equal(200, okResult.StatusCode); } [Fact] public async void Post_Hold_Status_OK() { // arrange var postHoldStatus = new HoldStatus(); // act var result = await controller.PostHoldStatus(postHoldStatus); Assert.NotNull(result); var okResult = result as OkObjectResult; // assert Assert.NotNull(okResult); Assert.Equal(200, okResult.StatusCode); } [Fact] public async void Post_Loan_Category_OK() { // arrange var postLoanCategory = new LoanCategory(); // act var result = await controller.PostLoanCategory(postLoanCategory); Assert.NotNull(result); var okResult = result as OkObjectResult; // assert Assert.NotNull(okResult); Assert.Equal(200, okResult.StatusCode); } [Fact] public async void Post_Location_Type_OK() { // arrange var postLocationType = new LocationType(); // act var result = await controller.PostLocationType(postLocationType); Assert.NotNull(result); var okResult = result as OkObjectResult; // assert Assert.NotNull(okResult); Assert.Equal(200, okResult.StatusCode); } [Fact] public async void Post_Vehicle_Type_OK() { // arrange var postVehicleType = new VehicleType(); // act var result = await controller.PostVehicleType(postVehicleType); Assert.NotNull(result); var okResult = result as OkObjectResult; // assert Assert.NotNull(okResult); Assert.Equal(200, okResult.StatusCode); } } }