diff --git a/src/Banquale/UnitTest/ConsultantTest.cs b/src/Banquale/UnitTest/ConsultantTest.cs index c1bad5f..08ac219 100644 --- a/src/Banquale/UnitTest/ConsultantTest.cs +++ b/src/Banquale/UnitTest/ConsultantTest.cs @@ -1,11 +1,34 @@ using System; +using Model; + namespace UnitTest { - public class ConsultantTest - { - public ConsultantTest() - { - } - } -} + /// \file + /// \brief Fichier de tests pour la classe Consultant. + /// \author Votre nom + + /// + /// Classe de tests pour la classe Consultant. + /// + public class ConsultantTests + { + /// + /// Teste si la liste des messages du consultant est initialisée correctement. + /// + [Fact] + public void Constructor_MessagesListInitialized() + { + // Arrange + string name = "Doe"; + string firstName = "John"; + string password = "123456"; + // Act + Consultant consultant = new Consultant(name, firstName, password); + + // Assert + Assert.NotNull(consultant.MessagesList); + Assert.Empty(consultant.MessagesList); + } + } +} diff --git a/src/Banquale/UnitTest/CustomerTest.cs b/src/Banquale/UnitTest/CustomerTest.cs index ab3bbd2..0537481 100644 --- a/src/Banquale/UnitTest/CustomerTest.cs +++ b/src/Banquale/UnitTest/CustomerTest.cs @@ -1,11 +1,78 @@ using System; +using Model; + namespace UnitTest { - public class CustomerTest - { - public CustomerTest() - { - } - } -} + /// \file + /// \brief Fichier de tests pour la classe Customer. + /// \author Votre nom + + /// + /// Classe de tests pour la classe Customer. + /// + public class CustomerTests + { + /// + /// Teste si la liste des comptes du client est initialisée correctement. + /// + [Fact] + public void Constructor_AccountsListInitialized() + { + // Arrange + string name = "Doe"; + string firstName = "John"; + string password = "123456"; + + // Act + Customer customer = new Customer(name, firstName, password); + + // Assert + Assert.NotNull(customer.AccountsList); + Assert.Empty(customer.AccountsList); + } + + /// + /// Teste l'égalité entre deux clients. + /// + [Fact] + public void Equals_TwoEqualCustomers_ReturnsTrue() + { + // Arrange + string name1 = "Doe"; + string firstName1 = "John"; + string password1 = "123456"; + string name2 = "Doe"; + string firstName2 = "John"; + string password2 = "123456"; + // Act + Customer customer1 = new Customer(name1, firstName1, password1); + Customer customer2 = new Customer(name2, firstName2, password2); + + // Assert + Assert.True(customer1.Equals(customer2)); + } + + /// + /// Teste l'égalité entre deux clients avec des identifiants différents. + /// + [Fact] + public void Equals_TwoDifferentCustomers_ReturnsFalse() + { + // Arrange + string name1 = "Doe"; + string firstName1 = "John"; + string password1 = "123456"; + string name2 = "Smith"; + string firstName2 = "Jane"; + string password2 = "abcdef"; + + // Act + Customer customer1 = new Customer(name1, firstName1, password1); + Customer customer2 = new Customer(name2, firstName2, password2); + + // Assert + Assert.False(customer1.Equals(customer2)); + } + } +} diff --git a/src/Banquale/UnitTest/IPersistenceManagerTest.cs b/src/Banquale/UnitTest/IPersistenceManagerTest.cs new file mode 100644 index 0000000..4da37ce --- /dev/null +++ b/src/Banquale/UnitTest/IPersistenceManagerTest.cs @@ -0,0 +1,81 @@ +using System; +using Model; + +namespace UnitTest +{ + /// \file + /// \brief Fichier de tests pour l'interface IPersistenceManager. + /// \author Votre nom + + /// + /// Classe de tests pour l'interface IPersistenceManager. + /// + public class PersistenceManagerTests + { + /// + /// Teste la sauvegarde des données. + /// + [Fact] + public void DataSave_ValidData_CallsDataSave() + { + // Arrange + MockPersistenceManager persistenceManager = new MockPersistenceManager(); + List customersList = new List { new Customer("Doe", "John", "123456") }; + Consultant consultant = new Consultant("Smith", "Jane", "abcdef"); + + // Act + persistenceManager.DataSave(customersList, consultant); + + // Assert + Assert.True(persistenceManager.DataSaveCalled); + Assert.Equal(customersList, persistenceManager.SavedCustomersList); + Assert.Equal(consultant, persistenceManager.SavedConsultant); + } + + /// + /// Teste le chargement des données. + /// + [Fact] + public void DataLoad_CallsDataLoad_ReturnsData() + { + // Arrange + MockPersistenceManager persistenceManager = new MockPersistenceManager(); + List customersList = new List { new Customer("Doe", "John", "123456") }; + Consultant consultant = new Consultant("Smith", "Jane", "abcdef"); + persistenceManager.DataToLoad = (customersList, consultant); + + // Act + var result = persistenceManager.DataLoad(); + + // Assert + Assert.True(persistenceManager.DataLoadCalled); + Assert.Equal(customersList, result.Item1); + Assert.Equal(consultant, result.Item2); + } + + /// + /// Classe de mock pour le gestionnaire de persistance. + /// + private class MockPersistenceManager : IPersistenceManager + { + public bool DataSaveCalled { get; private set; } + public bool DataLoadCalled { get; private set; } + public (List, Consultant) DataToLoad { get; set; } + public List? SavedCustomersList { get; private set; } + public Consultant? SavedConsultant { get; private set; } + + public void DataSave(List customersList, Consultant consultant) + { + DataSaveCalled = true; + SavedCustomersList = customersList; + SavedConsultant = consultant; + } + + public (List, Consultant) DataLoad() + { + DataLoadCalled = true; + return DataToLoad; + } + } + } +} diff --git a/src/Banquale/UnitTest/ManagerTest.cs b/src/Banquale/UnitTest/ManagerTest.cs index aaf7cbb..69a308a 100644 --- a/src/Banquale/UnitTest/ManagerTest.cs +++ b/src/Banquale/UnitTest/ManagerTest.cs @@ -1,11 +1,137 @@ using System; +using Model; + namespace UnitTest { - public class ManagerTest - { - public ManagerTest() - { - } - } -} + /// \file + /// \brief Fichier de tests pour la classe Manager. + /// \author Votre nom + + /// + /// Classe de tests pour la classe Manager. + /// + public class ManagerTests + { + /// + /// Teste si la liste des clients est initialisée correctement. + /// + [Fact] + public void Constructor_CustomersListInitialized() + { + // Arrange + Manager manager = new Manager(); + + // Act + + // Assert + Assert.NotNull(manager.CustomersList); + Assert.Empty(manager.CustomersList); + } + + /// + /// Teste l'ajout d'un client à la liste des clients. + /// + [Fact] + public void AddCustomer_ValidCustomer_ReturnsTrue() + { + // Arrange + Manager manager = new Manager(); + Customer customer = new Customer("Doe", "John", "123456"); + + // Act + bool result = manager.AddCustomer(customer); + + // Assert + Assert.True(result); + Assert.Contains(customer, manager.CustomersList); + } + + /// + /// Teste la récupération d'un client à partir de la liste des clients. + /// + [Fact] + public void GetCustomer_ValidPosition_ReturnsCustomer() + { + // Arrange + Manager manager = new Manager(); + Customer customer1 = new Customer("Doe", "John", "123456"); + Customer customer2 = new Customer("Smith", "Jane", "abcdef"); + manager.AddCustomer(customer1); + manager.AddCustomer(customer2); + + // Act + Customer result = manager.GetCustomer(1); + // Assert + Assert.Equal(customer2, result); + } + + /// + /// Teste la sauvegarde des données. + /// + [Fact] + public void DataSave_ValidData_CallsPersistenceManagerDataSave() + { + // Arrange + MockPersistenceManager persistenceManager = new MockPersistenceManager(); + Manager manager = new Manager(persistenceManager); + Customer customer = new Customer("Doe", "John", "123456"); + manager.AddCustomer(customer); + + // Act + manager.DataSave(); + + // Assert + Assert.True(persistenceManager.DataSaveCalled); + Assert.Equal(manager.CustomersList, persistenceManager.SavedCustomersList); + Assert.Equal(manager.Consultant, persistenceManager.SavedConsultant); + } + + /// + /// Teste le chargement des données. + /// + [Fact] + public void DataLoad_ValidData_CallsPersistenceManagerDataLoad() + { + // Arrange + MockPersistenceManager persistenceManager = new MockPersistenceManager(); + Manager manager = new Manager(persistenceManager); + Customer customer = new Customer("Doe", "John", "123456"); + Consultant consultant = new Consultant("Smith", "Jane", "abcdef"); + persistenceManager.DataToLoad = (new List { customer }, consultant); + + // Act + manager.DataLoad(); + + // Assert + Assert.True(persistenceManager.DataLoadCalled); + Assert.Contains(customer, manager.CustomersList); + Assert.Equal(consultant, manager.Consultant); + } + + /// + /// Classe de mock pour le gestionnaire de persistance. + /// + private class MockPersistenceManager : IPersistenceManager + { + public bool DataSaveCalled { get; private set; } + public bool DataLoadCalled { get; private set; } + public (List, Consultant) DataToLoad { get; set; } + public List? SavedCustomersList { get; private set; } + public Consultant? SavedConsultant { get; private set; } + + public void DataSave(List customersList, Consultant consultant) + { + DataSaveCalled = true; + SavedCustomersList = customersList; + SavedConsultant = consultant; + } + + public (List, Consultant) DataLoad() + { + DataLoadCalled = true; + return DataToLoad; + } + } + } +} diff --git a/src/Banquale/UnitTest/PersonTest.cs b/src/Banquale/UnitTest/PersonTest.cs index 86f7ee0..1b6b155 100644 --- a/src/Banquale/UnitTest/PersonTest.cs +++ b/src/Banquale/UnitTest/PersonTest.cs @@ -1,11 +1,62 @@ -using System; +/// \file +/// \brief Définition de la classe Person. +/// \author Votre nom + +using System; +using Model; + namespace UnitTest { - public class PersonTest - { - public PersonTest() - { - } - } -} + /// \file + /// \brief Fichier de tests pour la classe Person. + /// \author Votre nom + + /// + /// Classe de tests pour la classe Person. + /// + public class PersonTest + { + /// + /// Teste si les propriétés de l'objet Person sont correctement définies lorsque les arguments du constructeur sont valides. + /// + [Fact] + public void Constructor_ValidArguments_PropertiesSet() + { + // Arrange + string name = "Doe"; + string firstName = "John"; + string password = "123456"; + + // Act + Person person = new Person(name, firstName, password); + // Assert + Assert.Equal(name, person.Name); + Assert.Equal(firstName, person.FirstName); + Assert.Equal(password, person.Password); + } + + /// + /// Teste si l'identifiant de chaque instance de Person est correctement incrémenté. + /// + [Fact] + public void Constructor_IncrementId() + { + // Arrange + string name1 = "Doe"; + string firstName1 = "John"; + string password1 = "123456"; + string name2 = "Smith"; + string firstName2 = "Jane"; + string password2 = "abcdef"; + + // Act + Person person1 = new Person(name1, firstName1, password1); + Person person2 = new Person(name2, firstName2, password2); + + // Assert + Assert.Equal(Convert.ToUInt32(0), person1.Id); + Assert.Equal(Convert.ToUInt32(1), person2.Id); + } + } +} diff --git a/src/Banquale/UnitTest/TransactionTest.cs b/src/Banquale/UnitTest/TransactionTest.cs index d85e7be..f490fe2 100644 --- a/src/Banquale/UnitTest/TransactionTest.cs +++ b/src/Banquale/UnitTest/TransactionTest.cs @@ -28,9 +28,9 @@ namespace UnitTest Console.WriteLine("Transaction:"); Console.WriteLine($"Type: {(transaction.Type ? "Débit" : "Crédit")}"); Console.WriteLine($"Somme: {transaction.Sum}"); - Console.WriteLine($"Compte impliqué: {transaction.InvolvedAccounts.Name}"); - Console.WriteLine($"Catégorie: {transaction.Category}"); - Console.WriteLine($"Date: {transaction.Date}"); + Console.WriteLine($"Compte impliqué: {transaction?.InvolvedAccounts?.Name}"); + Console.WriteLine($"Catégorie: {transaction?.Category}"); + Console.WriteLine($"Date: {transaction?.Date}"); Console.ReadLine(); }