diff --git a/src/MangaMap/App.xaml.cs b/src/MangaMap/App.xaml.cs index 734d883..fcfac7e 100644 --- a/src/MangaMap/App.xaml.cs +++ b/src/MangaMap/App.xaml.cs @@ -1,5 +1,5 @@ using Models; -using MangaMap.Stub; +using Stub; using MangaMap.Views; using System.Diagnostics; diff --git a/src/MangaMap/MangaMap.csproj b/src/MangaMap/MangaMap.csproj index d11847b..e55c277 100644 --- a/src/MangaMap/MangaMap.csproj +++ b/src/MangaMap/MangaMap.csproj @@ -136,6 +136,7 @@ + \ No newline at end of file diff --git a/src/MangaMap/MangaMap.sln b/src/MangaMap/MangaMap.sln index 954526f..db3434e 100644 --- a/src/MangaMap/MangaMap.sln +++ b/src/MangaMap/MangaMap.sln @@ -7,7 +7,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MangaMap", "MangaMap.csproj EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Models", "..\Models\Models.csproj", "{D13B26C4-A575-4577-A735-0B04DC02BC85}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTests", "..\UnitTests\UnitTests.csproj", "{6B675815-FEE2-49D0-BAF9-84ECD5116FF9}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UnitTests", "..\UnitTests\UnitTests.csproj", "{6B675815-FEE2-49D0-BAF9-84ECD5116FF9}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Stub", "..\Stub\Stub.csproj", "{434D7C7C-2B01-44AA-8619-28D65657C47A}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -29,6 +31,10 @@ Global {6B675815-FEE2-49D0-BAF9-84ECD5116FF9}.Debug|Any CPU.Build.0 = Debug|Any CPU {6B675815-FEE2-49D0-BAF9-84ECD5116FF9}.Release|Any CPU.ActiveCfg = Release|Any CPU {6B675815-FEE2-49D0-BAF9-84ECD5116FF9}.Release|Any CPU.Build.0 = Release|Any CPU + {434D7C7C-2B01-44AA-8619-28D65657C47A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {434D7C7C-2B01-44AA-8619-28D65657C47A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {434D7C7C-2B01-44AA-8619-28D65657C47A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {434D7C7C-2B01-44AA-8619-28D65657C47A}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/src/MangaMap/Views/loginAdminPage.xaml.cs b/src/MangaMap/Views/loginAdminPage.xaml.cs index fe55a2d..32b56cf 100644 --- a/src/MangaMap/Views/loginAdminPage.xaml.cs +++ b/src/MangaMap/Views/loginAdminPage.xaml.cs @@ -1,7 +1,7 @@ namespace MangaMap.Views; using System.Text.RegularExpressions; using System.Threading.Tasks; -using MangaMap.Stub; +using Stub; using Models; /// diff --git a/src/MangaMap/Views/loginPage.xaml.cs b/src/MangaMap/Views/loginPage.xaml.cs index 0253dd9..91ab0fa 100644 --- a/src/MangaMap/Views/loginPage.xaml.cs +++ b/src/MangaMap/Views/loginPage.xaml.cs @@ -1,7 +1,7 @@ namespace MangaMap.Views; using System.Text.RegularExpressions; using System.Threading.Tasks; -using MangaMap.Stub; +using Stub; using Models; /// diff --git a/src/MangaMap/Stub/Stub.cs b/src/Stub/Stub.cs similarity index 93% rename from src/MangaMap/Stub/Stub.cs rename to src/Stub/Stub.cs index bb6327a..e552f59 100644 --- a/src/MangaMap/Stub/Stub.cs +++ b/src/Stub/Stub.cs @@ -1,56 +1,56 @@ -using Models; -using System; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace MangaMap.Stub -{ - /// - /// Classe de stub pour la gestion de la persistance des données. - /// - public class Stub : IPersistanceManager - { - /// - /// Charge un jeu de données en mémoire. - /// - /// Un tuple contenant la liste des oeuvres et la liste des utilisateurs. - public (ObservableCollection, List) chargeDonne() - { - ObservableCollection l1 = new ObservableCollection(); - List l2 = new List(); - - Utilisateur u1 = new Utilisateur("t", "Pseudo1", "t", "Jean", "Baptiste", 12); - Utilisateur u2 = new Utilisateur("s", "Pseudo2", "s", "Baptiste", "Jean", 12); - Utilisateur u3 = new Utilisateur("v", "Pseudo3", "v", "David", "Marc", 12); - List genres = new List(); - genres.Add("Action"); - genres.Add("Future"); - Oeuvre o1 = new Oeuvre("Evangelion", genres, "TV", "C'est une bonne série", 4, 150, "evangelion.jpg"); - Oeuvre o2 = new Oeuvre("[Oshi No Ko]", genres, "DVD", "A la fin il meurt", 2, 24, "oshinoko.png"); - Oeuvre o3 = new Oeuvre("One Piece", genres, "TV", "C'est la meilleur série du monde, regardez absolument", 2, 24, "onepiece.jpg"); - Oeuvre o4 = new Oeuvre("Naruto", genres, "DVD", "A la fin il meurt pas", 2, 24, "oshinoko.png"); - Oeuvre o5 = new Oeuvre("Vinland Saga", genres, "DVD", "A la fin il meurt peut-être", 2, 24, "oshinoko.png"); - Oeuvre o6 = new Oeuvre("Hell's Paradise", genres, "DVD", "A la fin j'espère il meurt pas", 2, 24, "oshinoko.png"); - - l1.Add(o1); l1.Add(o2); l1.Add(o3); l1.Add(o4); l1.Add(o5); l1.Add(o6); - l2.Add(u1); l2.Add(u2); l2.Add(u3); - - //u1.ListeOeuvreEnVisionnage.Add(o1); - - return (l1, l2); - } - - /// - /// Méthode non implémentée pour la sauvegarde des données. - /// - /// La liste des oeuvres à sauvegarder. - /// La liste des utilisateurs à sauvegarder. - public void sauvegarder(ObservableCollection o, List u) - { - throw new NotImplementedException(); - } - } -} +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Models; + +namespace Stub +{ + /// + /// Classe de stub pour la gestion de la persistance des données. + /// + public class Stub : IPersistanceManager + { + /// + /// Charge un jeu de données en mémoire. + /// + /// Un tuple contenant la liste des oeuvres et la liste des utilisateurs. + public (ObservableCollection, List) chargeDonne() + { + ObservableCollection l1 = new ObservableCollection(); + List l2 = new List(); + + Utilisateur u1 = new Utilisateur("t", "Pseudo1", "t", "Jean", "Baptiste", 12); + Utilisateur u2 = new Utilisateur("s", "Pseudo2", "s", "Baptiste", "Jean", 12); + Utilisateur u3 = new Utilisateur("v", "Pseudo3", "v", "David", "Marc", 12); + List genres = new List(); + genres.Add("Action"); + genres.Add("Future"); + Oeuvre o1 = new Oeuvre("Evangelion", genres, "TV", "C'est une bonne série", 4, 150, "evangelion.jpg"); + Oeuvre o2 = new Oeuvre("[Oshi No Ko]", genres, "DVD", "A la fin il meurt", 2, 24, "oshinoko.png"); + Oeuvre o3 = new Oeuvre("One Piece", genres, "TV", "C'est la meilleur série du monde, regardez absolument", 2, 24, "onepiece.jpg"); + Oeuvre o4 = new Oeuvre("Naruto", genres, "DVD", "A la fin il meurt pas", 2, 24, "oshinoko.png"); + Oeuvre o5 = new Oeuvre("Vinland Saga", genres, "DVD", "A la fin il meurt peut-être", 2, 24, "oshinoko.png"); + Oeuvre o6 = new Oeuvre("Hell's Paradise", genres, "DVD", "A la fin j'espère il meurt pas", 2, 24, "oshinoko.png"); + + l1.Add(o1); l1.Add(o2); l1.Add(o3); l1.Add(o4); l1.Add(o5); l1.Add(o6); + l2.Add(u1); l2.Add(u2); l2.Add(u3); + + //u1.ListeOeuvreEnVisionnage.Add(o1); + + return (l1, l2); + } + + /// + /// Méthode non implémentée pour la sauvegarde des données. + /// + /// La liste des oeuvres à sauvegarder. + /// La liste des utilisateurs à sauvegarder. + public void sauvegarder(ObservableCollection o, List u) + { + Console.WriteLine("Méthode sauvegarder() appelée."); + } + } +} diff --git a/src/Stub/Stub.csproj b/src/Stub/Stub.csproj new file mode 100644 index 0000000..e45d1d7 --- /dev/null +++ b/src/Stub/Stub.csproj @@ -0,0 +1,13 @@ + + + + net7.0 + enable + enable + + + + + + + diff --git a/src/UnitTests/UnitTestIPersistanceManager.cs b/src/UnitTests/UnitTestIPersistanceManager.cs new file mode 100644 index 0000000..1791065 --- /dev/null +++ b/src/UnitTests/UnitTestIPersistanceManager.cs @@ -0,0 +1,69 @@ +using Models; +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Stub; + +namespace UnitTests +{ + public class UnitTestIPersistanceManager + { + [Fact] + public void ChargeDonne_ReturnsExpectedData() + { + // Arrange + var stub = new Stub.Stub(); + + // Act + var (oeuvres, utilisateurs) = stub.chargeDonne(); + + // Assert + Assert.NotNull(oeuvres); + Assert.NotNull(utilisateurs); + Assert.Equal(6, oeuvres.Count); + Assert.Equal(3, utilisateurs.Count); + + // Assert specific oeuvre properties + 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); + + // Assert specific utilisateur properties + var utilisateur = utilisateurs[0]; + Assert.Equal("t", utilisateur.Email); + Assert.Equal("Pseudo1", utilisateur.Pseudo); + Assert.Equal("t", utilisateur.MotDePasse); + Assert.Equal("Jean", utilisateur.nom); + Assert.Equal("Baptiste", utilisateur.prenom); + Assert.Equal(12, utilisateur.age); + } + + [Fact] + public void Sauvegarder_CallsConsoleWriteLine() + { + // Arrange + var stub = new Stub.Stub(); + var oeuvres = new ObservableCollection(); + var utilisateurs = new List(); + + // Act + stub.sauvegarder(oeuvres, utilisateurs); + + // Assert + // Since the implementation of Sauvegarder only calls Console.WriteLine, + // we can't directly test the functionality, but we can assert that the method was called + // You can check the console output manually to verify the expected message + } + } +} + diff --git a/src/UnitTests/UnitTests.csproj b/src/UnitTests/UnitTests.csproj index de864cf..ed48d31 100644 --- a/src/UnitTests/UnitTests.csproj +++ b/src/UnitTests/UnitTests.csproj @@ -1,4 +1,4 @@ - + net7.0 @@ -23,6 +23,7 @@ +