You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
API_SQLuedo/API_SQLuedo/TestAPI/InquiryUnitTest.cs

302 lines
10 KiB

using Dto;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging.Abstractions;
using Moq;
using Shared;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using API.Controllers;
using Microsoft.Extensions.Logging;
using TestAPI.Extensions;
namespace TestAPI
{
public class InquiryUnitTest
{
private readonly Mock<IInquiryService<InquiryDto>> inquiryService;
public InquiryUnitTest()
{
inquiryService = new Mock<IInquiryService<InquiryDto>>();
}
[Fact]
public void GetInquiriesListSuccess()
{
var inquiryList = GetInquiriesData();
inquiryService.Setup(x => x.GetInquiries(1, 4, 0))
.Returns(inquiryList);
var InquiryController = new InquiriesController(inquiryService.Object, new NullLogger<InquiriesController>());
var inquiriesResult = InquiryController.GetInquiries(1, 4, 0);
if (inquiriesResult is OkObjectResult okObjectResult)
{
var valeur = okObjectResult.Value;
Assert.NotNull(valeur);
Assert.Equal(GetInquiriesData().ToString(), valeur.ToString());
Assert.True(inquiryList.SequenceEqual(valeur as IEnumerable<InquiryDto>, new InquiryIdEqualityComparer()));
}
}
[Fact]
public void GetInquiresListFail()
{
inquiryService.Setup(x => x.GetInquiries(1, 4, 0))
.Returns(new List<InquiryDto>());
var InquiryController = new InquiriesController(inquiryService.Object, new NullLogger<InquiriesController>());
var inquiriesResult = InquiryController.GetInquiries(2, 3, 0);
if (inquiriesResult is StatusCodeResult statusCodeResult && statusCodeResult.StatusCode == 204)
{
Assert.IsNotType<OkObjectResult>(inquiriesResult);
}
}
[Fact]
public void GetInquiryIdSuccess()
{
var inquiryList = GetInquiriesData();
inquiryService.Setup(x => x.GetInquiryById(1))
.Returns(inquiryList[1]);
var InquiriesController = new InquiriesController(inquiryService.Object, new NullLogger<InquiriesController>() );
var inquiryResult = InquiriesController.GetInquiryById(1);
if (inquiryResult is OkObjectResult okObjectResult)
{
InquiryDto valeur = okObjectResult.Value as InquiryDto;
Assert.NotNull(valeur);
Assert.Equal("titre 2", valeur.Title);
Assert.Equal("Description", valeur.Description);
Assert.True(valeur.IsUser);
Assert.Equal(valeur.GetHashCode(), inquiryList[1].GetHashCode());
Assert.True(valeur.Equals(inquiryList[1]));
Assert.False(valeur.Equals(new object()));
Assert.IsType<InquiryDto>(valeur);
Assert.Contains(valeur, inquiryList);
}
}
[Fact]
public void GetInquiryIdFail()
{
var inquiryList = GetInquiriesData();
inquiryService.Setup(x => x.GetInquiryById(1))
.Returns(inquiryList[1]);
var InquiriesController = new InquiriesController(inquiryService.Object,new NullLogger<InquiriesController>());
var inquiryResult = InquiriesController.GetInquiryById(100);
if (inquiryResult is NotFoundObjectResult NFObjectResult)
{
var valeur = NFObjectResult.Value;
Assert.NotNull(valeur);
Assert.IsNotType<InquiryDto>(valeur);
Assert.DoesNotContain(valeur, inquiryList);
}
}
[Fact]
public void GetInquiryTitleSuccess()
{
var inquiryList = GetInquiriesData();
inquiryService.Setup(x => x.GetInquiryByTitle("ZUDZU"))
.Returns(inquiryList[2]);
var InquiriesController = new InquiriesController(inquiryService.Object,new NullLogger<InquiriesController>());
var inquiriesResult = InquiriesController.GetInquiryByTitle("ZUDZU");
if (inquiriesResult is OkObjectResult okObjectResult)
{
InquiryDto valeur = okObjectResult.Value as InquiryDto;
Assert.NotNull(valeur);
Assert.IsType<InquiryDto>(valeur);
Assert.Contains(valeur, inquiryList);
Assert.Equal("ZUDZU", valeur.Title);
Assert.Equal("OUHHHH", valeur.Description);
Assert.Equal(2, valeur.Id);
Assert.False(valeur.IsUser);
}
}
[Fact]
public void GetInquiryTitleFail()
{
var inquiryList = GetInquiriesData();
inquiryService.Setup(x => x.GetInquiryByTitle("ZUDZU"))
.Returns(inquiryList[2]);
var InquiriesController = new InquiriesController(inquiryService.Object, new NullLogger<InquiriesController>());
var inquiriesResult = InquiriesController.GetInquiryByTitle("GYIIieihhh");
if (inquiriesResult is NotFoundObjectResult NFObjectResult)
{
var valeur = NFObjectResult.Value;
Assert.NotNull(valeur);
Assert.IsNotType<InquiryDto>(valeur);
Assert.DoesNotContain(valeur, inquiryList);
Assert.False(inquiryList == valeur);
}
}
[Fact]
public void DeleteInquirySuccess()
{
inquiryService.Setup(x => x.DeleteInquiry(1))
.Returns(true);
var inquiriesController = new InquiriesController(inquiryService.Object, new NullLogger<InquiriesController>());
var inquiryResult = inquiriesController.DeleteInquiry(1);
if (inquiryResult is OkObjectResult okObjectResult)
{
bool valeur = (bool)okObjectResult.Value;
Assert.True(valeur);
}
}
[Fact]
public void DeleteInquiryFail()
{
inquiryService.Setup(x => x.DeleteInquiry(1))
.Returns(true);
var inquiriesController = new InquiriesController(inquiryService.Object, new NullLogger<InquiriesController>());
var inquiryResult = inquiriesController.DeleteInquiry(100);
if (inquiryResult is NotFoundObjectResult NFObjectResult)
{
Assert.Null(NFObjectResult.Value);
Assert.IsNotType<bool>(NFObjectResult.Value);
}
}
[Fact]
public void CreateInquirySuccess()
{
inquiryService.Setup(x => x.CreateInquiry("Titros","description",false))
.Returns(new InquiryDto(4,"Titros","description",false));
var InquiriesController = new InquiriesController( inquiryService.Object,new NullLogger<InquiriesController>());
var inquiriesResult = InquiriesController.CreateInquiry(new InquiryDto("Titros", "description", false));
if (inquiriesResult is CreatedResult createdObjectResult)
{
InquiryDto valeur = createdObjectResult.Value as InquiryDto;
Assert.NotNull(valeur);
Assert.Equal(4, valeur.Id);
Assert.Equal("Titros", valeur.Title);
Assert.Equal("description", valeur.Description);
Assert.False(valeur.IsUser);
}
}
[Fact]
public void CreateInquiryFail()
{
inquiryService.Setup(x => x.CreateInquiry("Titros", "description", false))
.Returns(new InquiryDto(4, "Titros", "description", false));
var InquiriesController = new InquiriesController(inquiryService.Object, new NullLogger<InquiriesController>());
var inquiriesResult = InquiriesController.CreateInquiry(new InquiryDto(4, null, "heudfk@hdye.com", true));
if (inquiriesResult is BadRequestResult BDObjectResult)
{
Assert.Equal(400, BDObjectResult.StatusCode);
}
}
[Fact]
public void UpdateInquirySuccess()
{
inquiryService.Setup(x => x.UpdateInquiry(1, new InquiryDto(1, "Passssss", "heudfk@hdye.com", true)))
.Returns(new InquiryDto(1, "Passssss", "heudfk@hdye.com", true));
var InquiriesController = new InquiriesController(inquiryService.Object, new NullLogger<InquiriesController>());
var inquiriesResult = InquiriesController.UpdateInquiry(1, new InquiryDto(1, "Passssss", "heudfk@hdye.com", true));
if (inquiriesResult is OkObjectResult okObjectResult)
{
InquiryDto valeur = okObjectResult.Value as InquiryDto;
Assert.NotNull(valeur);
Assert.Equal("Passssss", valeur.Title);
Assert.Equal("heudfk@hdye.com", valeur.Description);
Assert.True(valeur.IsUser);
}
}
[Fact]
public void UpdateInquiryFail()
{
inquiryService.Setup(x => x.UpdateInquiry(1, new InquiryDto(1, "Passssss", "heudfk@hdye.com", true)))
.Returns(new InquiryDto(1, "Passssss", "heudfk@hdye.com", true));
var InquiriesController = new InquiriesController(inquiryService.Object, new NullLogger<InquiriesController>());
var inquiriesResult = InquiriesController.UpdateInquiry(1, new InquiryDto(2, "Passssss", "heudfk@hdye.com", true));
if (inquiriesResult is BadRequestResult BDObjectResult)
{
Assert.Equal(400, BDObjectResult.StatusCode);
}
}
private List<InquiryDto> GetInquiriesData()
{
List<InquiryDto> inquiriesData = new List<InquiryDto>(4)
{
new (0,"titre 1","La desc",false),
new (1,"titre 2","Description",true),
new (2,"ZUDZU","OUHHHH",false),
new ("titre premium","Ascendant",true),
};
return inquiriesData;
}
}
}