Files
webzine/Webzine.Entity.Tests/Common.cs
mirage 86a87f75ce Add initial project structure and implement basic functionality
- Created MSTestSettings.cs to enable parallel test execution.
- Added StyleTests.cs and TitreTests.cs for unit testing of Style and Titre entities.
- Implemented Webzine.Entity.Tests project with necessary configurations.
- Created SeedDataLocal.cs and SeedDataSpotify.cs for local and Spotify data seeding.
- Established repository contracts for Artiste, Commentaire, Style, and Titre.
- Developed DbEntityRepository and LocalEntityRepository classes.
- Set up Webzine.WebApplication with controllers, logging, and Docker support.
- Configured NLog for logging and added necessary appsettings for development.
- Created initial views and layout for the web application.
- Added Dockerfile and docker-compose configuration for containerization.
2026-03-03 16:22:37 +01:00

91 lines
5.0 KiB
C#

namespace Webzine.Entity.Tests
{
using System;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
/// <summary>
/// Méthodes utilitaires permettant de tester les entités.
/// </summary>
public static class Common
{
/// <summary>
/// Vérifie que l'entité possède bien la propriété passée en paramètre.
/// </summary>
/// <param name="typeObjet">type de l'entité</param>
/// <param name="nomPropriete">nom de la propriété de l'entité</param>
public static void HasProperty(Type typeObjet, string nomPropriete)
{
var property = typeObjet.GetProperty(nomPropriete);
Assert.IsNotNull(property, "La classe " + typeObjet.Name + " doit avoir une propriété '" + nomPropriete + "'.");
}
/// <summary>
/// Vérifie que l'attribut de l'entité a l'annotation [Display(Name = "xxx")] avec la valeur attendue.
/// </summary>
/// <param name="typeObjet">type de l'entité</param>
/// <param name="nomPropriete">nom de la propriété de l'entité</param>
/// <param name="chaineAttendue">valeur attendue pour l'affichage de cette propriété</param>
public static void AttributDisplay(Type typeObjet, string nomPropriete, string chaineAttendue)
{
var property = typeObjet.GetProperty(nomPropriete);
var annotation = (DisplayAttribute)property.GetCustomAttributes(typeof(DisplayAttribute), false).FirstOrDefault();
Assert.IsNotNull(annotation, "La propriété '" + nomPropriete + "' n'a pas de libellé approprié. Il manque l'annotation Display.");
Assert.AreEqual(chaineAttendue, annotation.Name);
}
/// <summary>
/// Vérifie que l'attribut de l'entité a l'annotation [MinLength(xx)] avec la longueur attendue.
/// </summary>
/// <param name="typeObjet">type de l'entité</param>
/// <param name="nomPropriete">nom de la propriété de l'entité</param>
/// <param name="max">longueur maximum</param>
public static void AttributLongueurMax(Type typeObjet, string nomPropriete, int max)
{
var property = typeObjet.GetProperty(nomPropriete);
var annotation = (MaxLengthAttribute)property.GetCustomAttributes(typeof(MaxLengthAttribute), false).FirstOrDefault();
Assert.IsNotNull(annotation, "La propriété '" + nomPropriete + "' n'a pas de longueur maximum. Il manque l'annotation MaxLength.");
Assert.AreEqual(max, annotation.Length, "La propriété '" + nomPropriete + "' ne doit pas pouvoir dépasser " + max + " caractères.");
}
/// <summary>
/// Vérifie que l'attribut de l'entité a l'annotation [MinLength(xx)] avec la longueur attendue.
/// </summary>
/// <param name="typeObjet">type de l'entité</param>
/// <param name="nomPropriete">nom de la propriété de l'entité</param>
/// <param name="min">longueur minimum</param>
public static void AttributLongueurMin(Type typeObjet, string nomPropriete, int min)
{
var property = typeObjet.GetProperty(nomPropriete);
var annotation = (MinLengthAttribute)property.GetCustomAttributes(typeof(MinLengthAttribute), false).FirstOrDefault();
Assert.IsNotNull(annotation, "La propriété '" + nomPropriete + "' n'a pas de longueur minimum. Il manque l'annotation MinLength.");
Assert.AreEqual(min, annotation.Length, "La propriété '" + nomPropriete + "' ne avoir au moins " + min + " caractères.");
}
/// <summary>
/// Vérifie que l'attribut de l'entité a l'annotation [Required].
/// </summary>
/// <param name="typeObjet">type de l'entité</param>
/// <param name="nomPropriete">nom de la propriété de l'entité</param>
public static void AttributRequis(Type typeObjet, string nomPropriete)
{
var property = typeObjet.GetProperty(nomPropriete);
var annotation = (RequiredAttribute)property.GetCustomAttributes(typeof(RequiredAttribute), false).FirstOrDefault();
Assert.IsNotNull(annotation, "La propriété '" + nomPropriete + "' n'est pas obligatoire. Il manque l'annotation Required.");
}
/// <summary>
/// Vérifie que l'attribut de l'entité n'a pas l'annotation [Url].
/// </summary>
/// <param name="typeObjet">type de l'entité</param>
/// <param name="nomPropriete">nom de la propriété de l'entité</param>
public static void AttributHasNotUrlValidation(Type typeObjet, string nomPropriete)
{
var property = typeObjet.GetProperty(nomPropriete);
var annotation = (UrlAttribute)property.GetCustomAttributes(typeof(UrlAttribute), false).FirstOrDefault();
Assert.IsNull(annotation, "La propriété '" + nomPropriete + "' ne doit pas être une URL obligatoirement. Retirez l'annotation Url.");
}
}
}