diff --git a/Sources/GameAtlas/DataContractPersistance/DataContractJSON.cs b/Sources/GameAtlas/DataContractPersistance/DataContractJSON.cs index a547100..77b3adc 100644 --- a/Sources/GameAtlas/DataContractPersistance/DataContractJSON.cs +++ b/Sources/GameAtlas/DataContractPersistance/DataContractJSON.cs @@ -30,7 +30,7 @@ namespace DataContractPersistance { data = JsonSerializer.ReadObject(s) as DataToPersist; } - return (data!.Jeux, data.Admins, data.Utilisateurs); + return (data!.Jeux, data!.Admins, data!.Utilisateurs); } public void SauvegardeDonnees(ObservableCollection jeux, List admins, List users) @@ -45,7 +45,7 @@ namespace DataContractPersistance Directory.CreateDirectory(FilePath); } - DataToPersist data = new DataToPersist(); + DataToPersist? data = new DataToPersist(); data.Jeux = jeux; data.Admins = admins; data.Utilisateurs = users; diff --git a/Sources/GameAtlas/DataContractPersistance/DataContractXML.cs b/Sources/GameAtlas/DataContractPersistance/DataContractXML.cs index 40c4ef1..a0c4755 100644 --- a/Sources/GameAtlas/DataContractPersistance/DataContractXML.cs +++ b/Sources/GameAtlas/DataContractPersistance/DataContractXML.cs @@ -28,7 +28,7 @@ namespace DataContractPersistance { data = serializer.ReadObject(s) as DataToPersist; } - return (data!.Jeux, data.Admins, data.Utilisateurs); + return (data!.Jeux, data!.Admins, data!.Utilisateurs); } public void SauvegardeDonnees(ObservableCollection jeux, List admins, List users) @@ -43,7 +43,7 @@ namespace DataContractPersistance Directory.CreateDirectory(FilePath); } - DataToPersist data = new DataToPersist(); + DataToPersist? data = new DataToPersist(); data.Jeux = jeux; data.Admins = admins; data.Utilisateurs = users; diff --git a/Sources/GameAtlas/Models/Manager.cs b/Sources/GameAtlas/Models/Manager.cs index bc13521..0f650dc 100644 --- a/Sources/GameAtlas/Models/Manager.cs +++ b/Sources/GameAtlas/Models/Manager.cs @@ -17,12 +17,12 @@ namespace Models /// /// Liste des administrateurs de l'application. /// - public List Admins { get; private set; } + public List? Admins { get; private set; } /// /// Liste des utilisateurs de l'application. /// - public List Utilisateurs { get; private set; } + public List? Utilisateurs { get; private set; } private ObservableCollection topRatedGames; diff --git a/Sources/GameAtlas/Models/Utilisateur.cs b/Sources/GameAtlas/Models/Utilisateur.cs index 28798f2..81eba18 100644 --- a/Sources/GameAtlas/Models/Utilisateur.cs +++ b/Sources/GameAtlas/Models/Utilisateur.cs @@ -12,27 +12,67 @@ using System.Threading.Tasks; namespace Models { + /// + /// Représente un Utilisateur de l'application. + /// [DataContract] [KnownType(typeof(Admin))] public class Utilisateur { + /// + /// Obtient l'adresse e-mail de l'utilisateur. + /// [DataMember] public string Mail { get; private set; } + + /// + /// Obtient le pseudo de l'utilisateur. + /// [DataMember] public string Pseudo { get; private set; } + + /// + /// Obtient le mot de passe de l'utilisateur. + /// [DataMember] public string Mdp { get; private set; } + + /// + /// Obtient la date de création de l'utilisateur. + /// [DataMember] public string DateCreation { get; private set; } + + /// + /// Obtient ou définit une valeur indiquant si l'utilisateur est un administrateur. + /// [DataMember] public bool EstAdmin { get; set; } + + /// + /// Obtient la liste des jeux possédés par l'utilisateur. + /// [DataMember] public ObservableCollection ListePossedes { get; private set; } + + /// + /// Obtient la liste des jeux favoris de l'utilisateur. + /// [DataMember] public ObservableCollection ListeFavoris { get; private set; } + + /// + /// Obtient ou définit le nombre d'avis donnés par l'utilisateur. + /// [DataMember] public int NbAvis { get; set; } + /// + /// Constructeur qui initialise une nouvelle instance de la classe . + /// + /// L'adresse e-mail de l'utilisateur. + /// Le pseudo de l'utilisateur. + /// Le mot de passe de l'utilisateur. public Utilisateur(string mail, string pseudo, string mdp) { Mail = mail; diff --git a/Sources/GameAtlas/Tests/JeuCreation.cs b/Sources/GameAtlas/Tests/JeuCreation.cs index c2b8d0a..275175f 100644 --- a/Sources/GameAtlas/Tests/JeuCreation.cs +++ b/Sources/GameAtlas/Tests/JeuCreation.cs @@ -26,19 +26,22 @@ namespace Tests Jeu jeu = new Jeu(nom, resume, sortie, plateformes, developpeur, editeur, note, nbTelechargement, genres, image); + List listPlateformes = plateformes.Split(' ').ToList(); + List listGenres = genres.Split(' ').ToList(); + // Assert Assert.Equal(nom, jeu.Nom); Assert.Equal(resume, jeu.Resume); Assert.Equal(sortie, jeu.Sortie); - Assert.Equal(plateformes, jeu.Plateformes); + Assert.Equal(listPlateformes, jeu.ListPlateformes); Assert.Equal(developpeur, jeu.Developpeur); Assert.Equal(editeur, jeu.Editeur); Assert.Equal(note, jeu.Note); Assert.Equal(nbTelechargement, jeu.NbTelechargement); - Assert.Equal(genres, jeu.Genres); + Assert.Equal(listGenres, jeu.ListGenres); Assert.Equal(image, jeu.Image); - Assert.Empty(jeu.ListeAvis); + Assert.Empty(jeu.ListAvis); Assert.Equal(0, jeu.NbFavoris); Assert.Equal(0, jeu.NbPossedes); } diff --git a/Sources/GameAtlas/Tests/ManagerTest.cs b/Sources/GameAtlas/Tests/ManagerTest.cs index ab2375c..9c2408e 100644 --- a/Sources/GameAtlas/Tests/ManagerTest.cs +++ b/Sources/GameAtlas/Tests/ManagerTest.cs @@ -1,30 +1,11 @@ using Models; -using System; -using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace Tests { public class ManagerTest { - [Fact] - public void Manager_Creation_Et_Verification() - { - - var manager = new Manager(); - - // Assert - Assert.Empty(manager.Admins); - Assert.Empty(manager.Utilisateurs); - Assert.Empty(manager.TopRatedGames); - Assert.Empty(manager.ListJeuxAffiches); - Assert.Empty(manager.ListJeux); - Assert.Null(manager.ConnectedUser); - } - [Fact] public void Manager_AddJeux() { @@ -32,11 +13,10 @@ namespace Tests var manager = new Manager(); var jeu = new Jeu("Un Jeu", "Description", "1 Janvier 2023", "PC", "Studio", "Editeur", 4.5, 1000, "Action", "test_image.png"); - + manager.AddJeux(jeu); // Assert - Assert.Single(manager.ListJeux); Assert.Contains(jeu, manager.ListJeux); } @@ -45,13 +25,12 @@ namespace Tests { var manager = new Manager(); - var admin = new Admin("admin@example.com", "admin", "password"); + var admin = new Admin("admin@example.com", "adminuser", "password"); manager.AddAdmin(admin); // Assert - Assert.Single(manager.Admins); Assert.Contains(admin, manager.Admins); } @@ -60,25 +39,25 @@ namespace Tests { var manager = new Manager(); - var utilisateur = new Utilisateur("test@example.com", "test", "password"); + var utilisateur = new Utilisateur("user@example.com", "user", "password"); manager.AddUtilisateur(utilisateur); // Assert - Assert.Single(manager.Utilisateurs); Assert.Contains(utilisateur, manager.Utilisateurs); } [Fact] public void Manager_ChargerDonnees() { - // Arrange + var manager = new Manager(); + var persistanceManager = new PersistanceManager(); var jeux = new ObservableCollection() { new Jeu("Un Jeu", "Description", "1 Janvier 2023", "PC", "Studio", "Editeur", 4.5, 1000, "Action", "test_image.png"), - new Jeu("Un autre Jeu", "Une autre description", "12 Janvier 2023", "PS5", "Studio", "Autre Editeur", 3.8, 500, "Aventure", "test_image.png") + new Jeu("Un Autre Jeu", "Autre Description", "10 Janvier 2023", "PC", "Studio", "Editeur", 4.5, 1000, "Action", "test_image.png") }; var admins = new List() { @@ -90,18 +69,16 @@ namespace Tests new Utilisateur("user1@example.com", "user1", "password1"), new Utilisateur("user2@example.com", "user2", "password2") }; + persistanceManager.SetDonnees(jeux, admins, utilisateurs); + manager.Persistance = persistanceManager; - manager.ListJeux = jeux; - manager.Admins = admins; - manager.Utilisateurs = utilisateurs; - manager.ChargerDonnees(); // Assert Assert.Equal(jeux, manager.ListJeux); - Assert.Equal(admins, manager.Admins); - Assert.Equal(utilisateurs, manager.Utilisateurs); + Assert.Equal(admins, manager.Admins.ToList()); // Convertit en List + Assert.Equal(utilisateurs, manager.Utilisateurs.ToList()); // Convertit en List } [Fact] @@ -109,31 +86,66 @@ namespace Tests { var manager = new Manager(); + var persistanceManager = new PersistanceManager(); var jeux = new ObservableCollection() { new Jeu("Un Jeu", "Description", "1 Janvier 2023", "PC", "Studio", "Editeur", 4.5, 1000, "Action", "test_image.png"), - new Jeu("Un autre Jeu", "Une autre description", "12 Janvier 2023", "PS5", "Studio", "Autre Editeur", 3.8, 500, "Aventure", "test_image.png") + new Jeu("Un Autre Jeu", "Autre Description", "10 Janvier 2023", "PC", "Studio", "Editeur", 4.5, 1000, "Action", "test_image.png") }; var admins = new List() { - new Admin("admin1@example.com", "adminuser1", "password1"), - new Admin("admin2@example.com", "adminuser2", "password2") + new Admin("admin1@example.com", "admin1", "password1"), + new Admin("admin2@example.com", "admin2", "password2") }; var utilisateurs = new List() { new Utilisateur("user1@example.com", "user1", "password1"), new Utilisateur("user2@example.com", "user2", "password2") }; - - manager.ListJeux = jeux; - manager.Admins = admins; - manager.Utilisateurs = utilisateurs; + foreach (var admin in admins) + { + manager.AddAdmin(admin); + } + foreach (var utilisateur in utilisateurs) + { + manager.AddUtilisateur(utilisateur); + } + manager.Persistance = persistanceManager; + manager.SauvegardeDonnees(); // Assert - Assert.True(true); // Vérifie qu'il n'y a aucune exception de levée + Assert.Equal(jeux, persistanceManager.Jeux); + Assert.Equal(admins, persistanceManager.Admins); + Assert.Equal(utilisateurs, persistanceManager.Utilisateurs); + } + } + + public class PersistanceManager : IPersistanceManager + { + public ObservableCollection? Jeux { get; private set; } + public List? Admins { get; private set; } + public List? Utilisateurs { get; private set; } + + public void SetDonnees(ObservableCollection jeux, List admins, List utilisateurs) + { + Jeux = jeux; + Admins = admins; + Utilisateurs = utilisateurs; + } + + public (ObservableCollection, List, List) ChargeDonnees() + { + return (Jeux!, Admins!, Utilisateurs!); + } + + public void SauvegardeDonnees(ObservableCollection jeux, List admins, List utilisateurs) + { + Jeux = jeux; + Admins = admins; + Utilisateurs = utilisateurs; } } } diff --git a/Sources/GameAtlas/Tests/Tests.csproj b/Sources/GameAtlas/Tests/Tests.csproj index 4568c3b..8a3aba6 100644 --- a/Sources/GameAtlas/Tests/Tests.csproj +++ b/Sources/GameAtlas/Tests/Tests.csproj @@ -24,6 +24,8 @@ + +