Added better UnitTest
continuous-integration/drone/push Build is passing Details

pull/45/head
HMatheo 2 years ago
parent be03f3a59c
commit 87a34b49e1

@ -11,6 +11,16 @@
<SingleProject>true</SingleProject>
<ImplicitUsings>enable</ImplicitUsings>
<!--<TargetFrameworks>net7.0-android;net7.0-ios;net7.0-maccatalyst</TargetFrameworks>
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net7.0-windows10.0.19041.0</TargetFrameworks>
--><!-- Uncomment to also build the tizen app. You will need to install tizen by following this: https://github.com/Samsung/Tizen.NET --><!--
--><!-- <TargetFrameworks>$(TargetFrameworks);net7.0-tizen</TargetFrameworks> --><!--
<OutputType>Exe</OutputType>
<RootNamespace>MangaMap</RootNamespace>
<UseMaui>true</UseMaui>
<SingleProject>true</SingleProject>
<ImplicitUsings>enable</ImplicitUsings>-->
<!-- Display name -->
<ApplicationTitle>MangaMap</ApplicationTitle>

@ -27,7 +27,7 @@ namespace Models
/// <summary>
/// Obtient la liste des utilisateurs de l'application.
/// </summary>
public List<Utilisateur> Utilisateurs { get; private set; }
public List<Utilisateur> Utilisateurs { get; set; }
private ObservableCollection<Oeuvre> ?oeuvres;

@ -18,13 +18,13 @@ namespace Models
/// Obtient ou définit le nom de l'utilisateur.
/// </summary>
[DataMember]
public string? nom { get; private set; }
public string? nom { get; set; }
/// <summary>
/// Obtient ou définit le prénom de l'utilisateur.
/// </summary>
[DataMember]
public string? prenom { get; private set; }
public string? prenom { get; set; }
/// <summary>
/// Obtient ou définit l'âge de l'utilisateur.

@ -0,0 +1,41 @@
using DataContractPersistance;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace UnitTests
{
public class UnitTestDataContractJson
{
/// <summary>
/// Vérifie que la propriété FileName a la valeur par défaut "SauvegardeDonnees.json".
/// </summary>
public class DataContractXmlTests
{
[Fact]
public void FileName_Should_HaveDefaultValue()
{
// Arrange
var dataContractXml = new DataContractJson();
// Assert
Assert.Equal("SauvegardeDonnees.json", dataContractXml.FileName);
}
/// <summary>
/// Vérifie que la propriété FilePath a la valeur par défaut correspondant au répertoire de base de l'application.
/// </summary>
[Fact]
public void FilePath_Should_HaveDefaultValue()
{
// Arrange
var dataContractXml = new DataContractJson();
// Assert
Assert.Equal(Path.Combine(AppDomain.CurrentDomain.BaseDirectory), dataContractXml.FilePath);
}
}
}
}

@ -0,0 +1,46 @@
using DataContractPersistance;
using Models;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
namespace UnitTests
{
public class UnitTestDataContractXml
{
public class DataContractXmlTests
{
/// <summary>
/// Vérifie que la propriété FileName a la valeur par défaut "SauvegardeDonnees.xml".
/// </summary>
[Fact]
public void FileName_Should_HaveDefaultValue()
{
// Arrange
var dataContractXml = new DataContractXml();
// Assert
Assert.Equal("SauvegardeDonnees.xml", dataContractXml.FileName);
}
/// <summary>
/// Vérifie que la propriété FilePath a la valeur par défaut correspondant au répertoire de base de l'application.
/// </summary>
[Fact]
public void FilePath_Should_HaveDefaultValue()
{
// Arrange
var dataContractXml = new DataContractXml();
// Assert
Assert.Equal(Path.Combine(AppDomain.CurrentDomain.BaseDirectory), dataContractXml.FilePath);
}
}
}
}

@ -0,0 +1,80 @@
using DataContractPersistance;
using Models;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace UnitTests
{
public class UnitTestDataToPersist
{
/// <summary>
/// Vérifie que la propriété Oeuvres est initialisée et est une instance de ObservableCollection<Oeuvre>.
/// </summary>
[Fact]
public void Oeuvres_Should_BeInitialized()
{
// Arrange
var dataToPersist = new DataToPersist();
// Assert
Assert.NotNull(dataToPersist.Oeuvres);
Assert.IsType<ObservableCollection<Oeuvre>>(dataToPersist.Oeuvres);
}
/// <summary>
/// Vérifie que la propriété Utilisateurs est initialisée et est une instance de List<Utilisateur>.
/// </summary>
[Fact]
public void Utilisateurs_Should_BeInitialized()
{
// Arrange
var dataToPersist = new DataToPersist();
// Assert
Assert.NotNull(dataToPersist.Utilisateurs);
Assert.IsType<List<Utilisateur>>(dataToPersist.Utilisateurs);
}
/// <summary>
/// Vérifie que la propriété Oeuvres peut être assignée avec une autre collection d'œuvres et que la valeur assignée est correcte.
/// </summary>
[Fact]
public void Oeuvres_Should_BeAssignable()
{
// Arrange
var dataToPersist = new DataToPersist();
var oeuvres = new ObservableCollection<Oeuvre>
{
new Oeuvre("Evangelion", new List<string> { "Action", "Future" }, "TV", "C'est une bonne série", 4, 150, "evangelion.jpg"),
new Oeuvre("[Oshi No Ko]", new List<string> { "Action", "Future" }, "DVD", "A la fin il meurt", 2, 24, "oshinoko.png"),
};
// Act
dataToPersist.Oeuvres = oeuvres;
// Assert
Assert.Equal(oeuvres, dataToPersist.Oeuvres);
}
/// <summary>
/// vérifie que la propriété Utilisateurs peut être assignée avec une autre liste d'utilisateurs et que la valeur assignée est correcte.
/// </summary>
[Fact]
public void Utilisateurs_Should_BeAssignable()
{
// Arrange
var dataToPersist = new DataToPersist();
var utilisateurs = new List<Utilisateur> { new Utilisateur(), new Utilisateur() };
// Act
dataToPersist.Utilisateurs = utilisateurs;
// Assert
Assert.Equal(utilisateurs, dataToPersist.Utilisateurs);
}
}
}

@ -0,0 +1,91 @@
using Models;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Stub;
using DataContractPersistance;
namespace UnitTests
{
public class UnitTestManager
{
[Fact]
public void Charger_Should_LoadDataFromPersistanceManager_Stub()
{
// Arrange
var persistanceStub = new Stub.Stub();
var manager = new Manager(persistanceStub);
var oeuvres = new ObservableCollection<Oeuvre>
{
new Oeuvre("Evangelion", new List<string> { "Action", "Future" }, "TV", "C'est une bonne série", 4, 150, "evangelion.jpg"),
new Oeuvre("[Oshi No Ko]", new List<string> { "Action", "Future" }, "DVD", "A la fin il meurt", 2, 24, "oshinoko.png"),
};
var utilisateurs = new List<Utilisateur> { new Utilisateur(), new Utilisateur() };
// Act
manager.charger();
// Assert
var evangelion = oeuvres[0];
Assert.Equal("Evangelion", evangelion.Nom);
Assert.Collection(evangelion.Genre,
genre => Assert.Equal("Action", genre),
genre => Assert.Equal("Future", genre));
Assert.Equal("TV", evangelion.Type);
Assert.Equal("C'est une bonne série", evangelion.Description);
Assert.Equal(4, evangelion.Note);
Assert.Equal(150, evangelion.NbEpisodes);
Assert.Equal("evangelion.jpg", evangelion.Affiche);
}
[Fact]
public void Charger_Should_LoadDataFromPersistanceManager_DataContractXml()
{
// Arrange
var persistanceXml = new DataContractPersistance.DataContractXml();
var manager = new Manager(persistanceXml);
var oeuvres = new ObservableCollection<Oeuvre>
{
new Oeuvre("Evangelion", new List<string> { "Action", "Future" }, "TV", "C'est une bonne série", 4, 150, "evangelion.jpg"),
new Oeuvre("[Oshi No Ko]", new List<string> { "Action", "Future" }, "DVD", "A la fin il meurt", 2, 24, "oshinoko.png"),
};
var utilisateurs = new List<Utilisateur> { new Utilisateur(), new Utilisateur() };
// Act
manager.charger();
// Assert
Assert.NotNull(manager.Oeuvres);
Assert.NotNull(manager.Utilisateurs);
Assert.Equal(oeuvres.Count, manager.Oeuvres.Count);
Assert.Equal(utilisateurs.Count, manager.Utilisateurs.Count);
}
[Fact]
public void Sauvegarder_Should_SaveDataUsingPersistanceManager_DataContractXml()
{
// Arrange
var persistanceXml = new DataContractPersistance.DataContractXml();
var manager = new Manager(persistanceXml);
var oeuvres = new ObservableCollection<Oeuvre>
{
new Oeuvre("Evangelion", new List<string> { "Action", "Future" }, "TV", "C'est une bonne série", 4, 150, "evangelion.jpg"),
new Oeuvre("[Oshi No Ko]", new List<string> { "Action", "Future" }, "DVD", "A la fin il meurt", 2, 24, "oshinoko.png"),
};
var utilisateurs = new List<Utilisateur> { new Utilisateur(), new Utilisateur() };
manager.Oeuvres = oeuvres;
manager.Utilisateurs = utilisateurs;
// Act
manager.sauvegarder();
// Assert
// Vérifiez manuellement que les données ont été sauvegardées correctement.
// Vous pouvez consulter le fichier XML de sauvegarde ou utiliser d'autres moyens pour vérifier cela.
}
}
}

@ -9,24 +9,17 @@ namespace UnitTests
{
public class UnitTestOeuvre
{
[Fact]
public void Oeuvre_Constructor_WithAllParameters_ShouldSetPropertiesCorrectly()
[Theory]
[InlineData("[Oshi No Ko]", new string[] { "Action", "Drama", "Fantasy" }, "TV Series", "A thrilling anime series.", 9, 25, "oshinoko.png")]
public void Oeuvre_Constructor_WithAllParameters_ShouldSetPropertiesCorrectly(
string nom, string[] genres, string type, string description, int note, int nbEpisodes, string affiche)
{
// Arrange
string nom = "[Oshi No Ko]";
List<string> genre = new List<string> { "Action", "Drama", "Fantasy" };
string type = "TV Series";
string description = "A thrilling anime series.";
int note = 9;
int nbEpisodes = 25;
string affiche = "oshinoko.png";
// Act
Oeuvre oeuvre = new Oeuvre(nom, genre, type, description, note, nbEpisodes, affiche);
// Arrange & Act
Oeuvre oeuvre = new Oeuvre(nom, new List<string>(genres), type, description, note, nbEpisodes, affiche);
// Assert
Assert.Equal(nom, oeuvre.Nom);
Assert.Equal(genre, oeuvre.Genre);
Assert.Equal(new List<string>(genres), oeuvre.Genre);
Assert.Equal(type, oeuvre.Type);
Assert.Equal(description, oeuvre.Description);
Assert.Equal(note, oeuvre.Note);
@ -34,17 +27,12 @@ namespace UnitTests
Assert.Equal(affiche, oeuvre.Affiche);
}
[Fact]
public void Oeuvre_Constructor_WithRequiredParameters_ShouldSetPropertiesCorrectly()
[Theory]
[InlineData("One Piece", "TV Series", "An epic adventure.", 1000, "onepiece.jpg")]
public void Oeuvre_Constructor_WithRequiredParameters_ShouldSetPropertiesCorrectly(
string nom, string type, string description, int nbEpisodes, string affiche)
{
// Arrange
string nom = "One Piece";
string type = "TV Series";
string description = "An epic adventure.";
int nbEpisodes = 1000;
string affiche = "onepiece.jpg";
// Act
// Arrange & Act
Oeuvre oeuvre = new Oeuvre(nom, type, description, nbEpisodes, affiche);
// Assert
@ -57,12 +45,14 @@ namespace UnitTests
Assert.Equal(affiche, oeuvre.Affiche);
}
[Fact]
public void AjouterEpisode_ShouldIncreaseNbEpisodesByGivenAmount()
[Theory]
[InlineData("Naruto", "TV Series", "A ninja's journey.", 220, "evangelion.jpg", 50)]
[InlineData("Dragon Ball", "TV Series", "A Saiyan's story.", 291, "evangelion.jpg", 20)]
public void AjouterEpisode_ShouldIncreaseNbEpisodesByGivenAmount(
string nom, string type, string description, int nbEpisodes, string affiche, int nbEpisodesToAdd)
{
// Arrange
Oeuvre oeuvre = new Oeuvre("Naruto", "TV Series", "A ninja's journey.", 220, "evangelion.jpg");
int nbEpisodesToAdd = 50;
Oeuvre oeuvre = new Oeuvre(nom, type, description, nbEpisodes, affiche);
int expectedNbEpisodes = oeuvre.NbEpisodes + nbEpisodesToAdd;
// Act
@ -71,6 +61,5 @@ namespace UnitTests
// Assert
Assert.Equal(expectedNbEpisodes, oeuvre.NbEpisodes);
}
}
}

@ -4,54 +4,46 @@ namespace UnitTests
{
public class UnitTestUtilisateur
{
[Fact]
public void TestUtilisateur()
[Theory]
[InlineData("test@test.com", "pseudo", "mdp", "John", "Doe", 30)]
[InlineData("test2@test.com", "pseudo2", "mdp2", "Jane", "Smith", 25)]
public void Utilisateur_Constructor_SetsPropertiesCorrectly(string email, string pseudo, string mdp, string nom, string prenom, int age)
{
// Arrange
Utilisateur utilisateur = new Utilisateur("test@test.com", "pseudo", "mdp", "John", "Doe", 30);
// Act
utilisateur.SupprimerUtilisateur();
// Arrange & Act
Utilisateur utilisateur = new Utilisateur(email, pseudo, mdp, nom, prenom, age);
// Assert
Assert.Null(utilisateur.nom);
Assert.Null(utilisateur.prenom);
Assert.Equal(0, utilisateur.age);
Assert.Equal(email, utilisateur.Email);
Assert.Equal(pseudo, utilisateur.Pseudo);
Assert.Equal(mdp, utilisateur.MotDePasse);
Assert.Equal(nom, utilisateur.nom);
Assert.Equal(prenom, utilisateur.prenom);
Assert.Equal(age, utilisateur.age);
}
[Fact]
public void Utilisateur_DefaultConstructor_SetsPropertiesToDefaultValues()
// Utilisez [MemberData] pour des jeux de données dynamiques
[Theory]
[MemberData(nameof(UtilisateursTestData.GetTestData), MemberType = typeof(UtilisateursTestData))]
public void Utilisateur_SupprimerUtilisateur_SetsPropertiesToNull(Utilisateur utilisateur)
{
// Arrange & Act
Utilisateur utilisateur = new Utilisateur();
// Arrange (pas besoin de l'acte car l'objet est fourni par les données)
// Act
utilisateur.SupprimerUtilisateur();
// Assert
Assert.Null(utilisateur.nom);
Assert.Null(utilisateur.prenom);
Assert.Equal(0, utilisateur.age);
}
}
[Fact]
public void Utilisateur_Constructor_SetsPropertiesCorrectly()
public class UtilisateursTestData
{
public static IEnumerable<object[]> GetTestData()
{
// Arrange
string email = "test@test.com";
string pseudo = "pseudo";
string mdp = "mdp";
string nom = "John";
string prenom = "Doe";
int age = 30;
// Act
Utilisateur utilisateur = new Utilisateur(email, pseudo, mdp, nom, prenom, age);
// Assert
Assert.Equal(email, utilisateur.Email);
Assert.Equal(pseudo, utilisateur.Pseudo);
Assert.Equal(mdp, utilisateur.MotDePasse);
Assert.Equal(nom, utilisateur.nom);
Assert.Equal(prenom, utilisateur.prenom);
Assert.Equal(age, utilisateur.age);
yield return new object[] { new Utilisateur("test@test.com", "pseudo", "mdp", "John", "Doe", 30) };
yield return new object[] { new Utilisateur("test2@test.com", "pseudo2", "mdp2", "Jane", "Smith", 25) };
}
}
}

@ -22,6 +22,7 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\DataContractPersistance\DataContractPersistance.csproj" />
<ProjectReference Include="..\Models\Models.csproj" />
<ProjectReference Include="..\Stub\Stub.csproj" />
</ItemGroup>

Loading…
Cancel
Save