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/ParagraphsUnitTest.cs

253 lines
7.9 KiB

using API.Controllers;
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 TestAPI.Extensions;
namespace TestAPI
{
public class ParagraphsUnitTest
{
private readonly Mock<IParagraphService<ParagraphDTO>> paragraphService;
public ParagraphsUnitTest()
{
paragraphService = new Mock<IParagraphService<ParagraphDTO>>();
}
[Fact]
public void GetParagraphsListSuccess()
{
var paragraphsList = GetParagraphsData();
paragraphService.Setup(x => x.GetParagraphs(1, 4, 0))
.Returns(paragraphsList);
var ParagraphsController = new ParagraphsController(paragraphService.Object, new NullLogger<ParagraphsController>());
var paragraphsResult = ParagraphsController.GetParagraphs(1, 4, 0);
if (paragraphsResult is OkObjectResult okObjectResult)
{
var valeur = okObjectResult.Value;
Assert.NotNull(valeur);
Assert.Equal(GetParagraphsData().ToString(), valeur.ToString());
Assert.True(paragraphsList.SequenceEqual(valeur as IEnumerable<ParagraphDTO>, new ParagraphIdEqualityComparer()));
}
}
[Fact]
public void GetParagraphsListFail()
{
paragraphService.Setup(x => x.GetParagraphs(1, 4, 0))
.Returns(new List<ParagraphDTO>());
var ParagraphsController = new ParagraphsController(paragraphService.Object, new NullLogger<ParagraphsController>());
var paragraphsResult = ParagraphsController.GetParagraphs(1, 4, 0);
if (paragraphsResult is StatusCodeResult statusCodeResult && statusCodeResult.StatusCode == 204)
{
Assert.IsNotType<OkObjectResult>(paragraphsResult);
}
}
[Fact]
public void GetParagraphIdSuccess()
{
var paragraphsList = GetParagraphsData();
paragraphService.Setup(x => x.GetParagraphById(1))
.Returns(paragraphsList[1]);
var ParagraphsController = new ParagraphsController(paragraphService.Object, new NullLogger<ParagraphsController>());
var paragraphsResult = ParagraphsController.GetParagraphById(1);
if (paragraphsResult is OkObjectResult okObjectResult)
{
ParagraphDTO valeur = okObjectResult.Value as ParagraphDTO;
Assert.NotNull(valeur);
Assert.Equal("Le titre", valeur.Title);
Assert.Equal("pas contenu", valeur.Content);
Assert.Equal("Pas d'infos ici", valeur.Info);
Assert.Equal("Delete * from Earth", valeur.Query);
Assert.Equal("Miam", valeur.Comment);
Assert.Equal(2, valeur.LessonId);
Assert.Equal(valeur.GetHashCode(), paragraphsList[1].GetHashCode());
Assert.True(valeur.Equals(paragraphsList[1]));
Assert.False(valeur.Equals(new object()));
Assert.True(valeur.Equals(valeur));
Assert.IsType<ParagraphDTO>(valeur);
Assert.Contains(valeur, paragraphsList);
}
}
[Fact]
public void GetParagraphIdFail()
{
var paragraphsList = GetParagraphsData();
paragraphService.Setup(x => x.GetParagraphById(1))
.Returns(paragraphsList[1]);
var ParagraphsController = new ParagraphsController(paragraphService.Object, new NullLogger<ParagraphsController>());
var paragraphsResult = ParagraphsController.GetParagraphById(100);
if (paragraphsResult is NotFoundObjectResult NFObjectResult)
{
var valeur = NFObjectResult.Value;
Assert.NotNull(valeur);
Assert.IsNotType<ParagraphDTO>(valeur);
Assert.DoesNotContain(valeur, paragraphsList);
}
}
[Fact]
public void GetParagraphTitleSuccess()
{
var paragraphsList = GetParagraphsData();
paragraphService.Setup(x => x.GetParagraphByTitle("Title"))
.Returns(paragraphsList[3]);
var ParagraphsController = new ParagraphsController(paragraphService.Object, new NullLogger<ParagraphsController>());
var paragraphsResult = ParagraphsController.GetParagraphByTitle("Title");
if (paragraphsResult is OkObjectResult okObjectResult)
{
ParagraphDTO valeur = okObjectResult.Value as ParagraphDTO;
Assert.NotNull(valeur);
Assert.Equal("Title", valeur.Title);
Assert.Equal("Content", valeur.Content);
Assert.Equal("Je ne parle pas anglais", valeur.Info);
Assert.Equal("Select select from select", valeur.Query);
Assert.Equal("Mais qui est ce commentaire", valeur.Comment);
Assert.Equal(3, valeur.LessonId);
Assert.IsType<ParagraphDTO>(valeur);
Assert.Contains(valeur, paragraphsList);
}
}
[Fact]
public void GetParagraphTitleFail()
{
var paragraphsList = GetParagraphsData();
paragraphService.Setup(x => x.GetParagraphByTitle("Title"))
.Returns(paragraphsList[3]);
var ParagraphsController = new ParagraphsController(paragraphService.Object, new NullLogger<ParagraphsController>());
var paragraphsResult = ParagraphsController.GetParagraphByTitle("IUHIUHU");
if (paragraphsResult is NotFoundObjectResult NFObjectResult)
{
var valeur = NFObjectResult.Value;
Assert.NotNull(valeur);
Assert.IsNotType<ParagraphDTO>(valeur);
Assert.DoesNotContain(valeur, paragraphsList);
Assert.False(paragraphsList == valeur);
}
}
[Fact]
public void DeleteParagraphSuccess()
{
paragraphService.Setup(x => x.DeleteParagraph(1))
.Returns(true);
var ParagraphsController = new ParagraphsController(paragraphService.Object, new NullLogger<ParagraphsController>());
var paragraphsResult = ParagraphsController.DeleteParagraph(1);
if (paragraphsResult is OkObjectResult okObjectResult)
{
bool valeur = (bool)okObjectResult.Value;
Assert.True(valeur);
}
}
[Fact]
public void DeleteParagraphFail()
{
paragraphService.Setup(x => x.DeleteParagraph(1))
.Returns(true);
var ParagraphsController = new ParagraphsController(paragraphService.Object, new NullLogger<ParagraphsController>());
var paragraphsResult = ParagraphsController.DeleteParagraph(100);
if (paragraphsResult is NotFoundObjectResult NFObjectResult)
{
Assert.Null(NFObjectResult.Value);
Assert.IsNotType<bool>(NFObjectResult.Value);
}
}
private List<ParagraphDTO> GetParagraphsData()
{
List<ParagraphDTO> paragraphsData = new List<ParagraphDTO>(4)
{
new (0,"Titre 1","Le contenu","Les infos de ce paragraphes sont ","Select * from C#","Le commentaire",1),
new (1,"Le titre","pas contenu","Pas d'infos ici","Delete * from Earth","Miam",2),
new (2,"Ceci n'est pas un titre","Certainement hmmm","OUOOOOO ","Autocommit = {true}","First",1),
new ("Title","Content","Je ne parle pas anglais","Select select from select","Mais qui est ce commentaire",3),
};
return paragraphsData;
}
}
}