diff --git a/src/MangaMap/DataContractPersistance/DataContract.cs b/src/MangaMap/DataContractPersistance/DataContract.cs deleted file mode 100644 index 52b7b2f..0000000 --- a/src/MangaMap/DataContractPersistance/DataContract.cs +++ /dev/null @@ -1,82 +0,0 @@ -using Models; -using System; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Diagnostics; -using System.Linq; -using System.Runtime.Serialization; -using System.Text; -using System.Threading.Tasks; -using System.Xml; - -namespace MangaMap.DataContractPersistance -{ - /// - /// Implémentation de l'interface IPersistanceManager utilisant la sérialisation avec DataContract. - /// - public class DataContract : IPersistanceManager - { - /// - /// Obtient ou définit le nom du fichier de sauvegarde. - /// - public string FileName { get; set; } = "SauvegardeDonnees.xml"; - - /// - /// Obtient ou définit le chemin du fichier de sauvegarde. - /// - public string FilePath { get; set; } = Path.Combine(AppDomain.CurrentDomain.BaseDirectory); - - /// - /// Charge les données sauvegardées à partir du fichier xml. - /// - /// Un tuple contenant la liste des oeuvres et la liste des utilisateurs. - public (ObservableCollection, List) chargeDonne() - { - var serializer = new DataContractSerializer(typeof(DataToPersist)); - DataToPersist data; - - if (File.Exists(Path.Combine(FilePath, FileName))) // Vérifiez si le fichier existe - { - using (Stream s = File.OpenRead(Path.Combine(FilePath, FileName))) - { - data = serializer.ReadObject(s) as DataToPersist; - } - } - else - { - data = new DataToPersist(); // Si le fichier n'existe pas, créez une nouvelle liste - } - - return (data.Oeuvres, data.Utilisateurs); - } - - /// - /// Sauvegarde les données dans le fichier xml. - /// - /// La liste des oeuvres à sauvegarder. - /// La liste des utilisateurs à sauvegarder. - public void sauvegarder(ObservableCollection o, List u) - { - var serializer = new DataContractSerializer(typeof(DataToPersist)); - - if (!Directory.Exists(FilePath)) - { - Debug.WriteLine("Directory doesn't exist."); - Directory.CreateDirectory(FilePath); - } - - DataToPersist data = new DataToPersist(); - data.Oeuvres = o; - data.Utilisateurs = u; - - var settings = new XmlWriterSettings() { Indent = true }; - using (TextWriter tw = File.CreateText(Path.Combine(FilePath, FileName))) - { - using (XmlWriter w = XmlWriter.Create(tw, settings)) - { - serializer.WriteObject(w, data); // Version d'enregistrement des données avec indentation. - } - } - } - } -} diff --git a/src/MangaMap/MangaMap.csproj b/src/MangaMap/MangaMap.csproj index bb8a331..d11847b 100644 --- a/src/MangaMap/MangaMap.csproj +++ b/src/MangaMap/MangaMap.csproj @@ -1,11 +1,11 @@  - net7.0; + net7.0-android;net7.0-ios;net7.0-maccatalyst $(TargetFrameworks);net7.0-windows10.0.19041.0 - Exe + Exe MangaMap true true diff --git a/src/Models/Oeuvre.cs b/src/Models/Oeuvre.cs index 6e33fc8..f8295e9 100644 --- a/src/Models/Oeuvre.cs +++ b/src/Models/Oeuvre.cs @@ -106,6 +106,7 @@ namespace Models public Oeuvre(string nom, string type, string description, int nbEpisode, string affiche) { Nom = nom; + Genre = new List(); Type = type; Description = description; NbEpisodes = nbEpisode; diff --git a/src/UnitTests/UnitTestOeuvre.cs b/src/UnitTests/UnitTestOeuvre.cs new file mode 100644 index 0000000..5449031 --- /dev/null +++ b/src/UnitTests/UnitTestOeuvre.cs @@ -0,0 +1,76 @@ +using Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace UnitTests +{ + public class UnitTestOeuvre + { + [Fact] + public void Oeuvre_Constructor_WithAllParameters_ShouldSetPropertiesCorrectly() + { + // Arrange + string nom = "[Oshi No Ko]"; + List genre = new List { "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); + + // Assert + Assert.Equal(nom, oeuvre.Nom); + Assert.Equal(genre, oeuvre.Genre); + Assert.Equal(type, oeuvre.Type); + Assert.Equal(description, oeuvre.Description); + Assert.Equal(note, oeuvre.Note); + Assert.Equal(nbEpisodes, oeuvre.NbEpisodes); + Assert.Equal(affiche, oeuvre.Affiche); + } + + [Fact] + public void Oeuvre_Constructor_WithRequiredParameters_ShouldSetPropertiesCorrectly() + { + // Arrange + string nom = "One Piece"; + string type = "TV Series"; + string description = "An epic adventure."; + int nbEpisodes = 1000; + string affiche = "onepiece.jpg"; + + // Act + Oeuvre oeuvre = new Oeuvre(nom, type, description, nbEpisodes, affiche); + + // Assert + Assert.Equal(nom, oeuvre.Nom); + Assert.Empty(oeuvre.Genre); + Assert.Equal(type, oeuvre.Type); + Assert.Equal(description, oeuvre.Description); + Assert.Equal(0, oeuvre.Note); + Assert.Equal(nbEpisodes, oeuvre.NbEpisodes); + Assert.Equal(affiche, oeuvre.Affiche); + } + + [Fact] + public void AjouterEpisode_ShouldIncreaseNbEpisodesByGivenAmount() + { + // Arrange + Oeuvre oeuvre = new Oeuvre("Naruto", "TV Series", "A ninja's journey.", 220, "evangelion.jpg"); + int nbEpisodesToAdd = 50; + int expectedNbEpisodes = oeuvre.NbEpisodes + nbEpisodesToAdd; + + // Act + oeuvre.AjouterEpisode(nbEpisodesToAdd); + + // Assert + Assert.Equal(expectedNbEpisodes, oeuvre.NbEpisodes); + } + + } +}