diff --git a/src/HeartTrack.sln b/src/HeartTrack.sln index 8947e4c..8bd8954 100644 --- a/src/HeartTrack.sln +++ b/src/HeartTrack.sln @@ -41,6 +41,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EFMappers", "EFMappers\EFMa EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "APIMappers", "APIMappers\APIMappers.csproj", "{41D18203-1688-43BD-A3AC-FD0C2BD81909}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTestsModel", "Tests\UnitTestsModel\UnitTestsModel.csproj", "{508D380F-145C-437E-A7DF-7A17C526B2F3}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -115,6 +117,10 @@ Global {41D18203-1688-43BD-A3AC-FD0C2BD81909}.Debug|Any CPU.Build.0 = Debug|Any CPU {41D18203-1688-43BD-A3AC-FD0C2BD81909}.Release|Any CPU.ActiveCfg = Release|Any CPU {41D18203-1688-43BD-A3AC-FD0C2BD81909}.Release|Any CPU.Build.0 = Release|Any CPU + {508D380F-145C-437E-A7DF-7A17C526B2F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {508D380F-145C-437E-A7DF-7A17C526B2F3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {508D380F-145C-437E-A7DF-7A17C526B2F3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {508D380F-145C-437E-A7DF-7A17C526B2F3}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -127,6 +133,7 @@ Global {E515C8B6-6282-4D8B-8523-7B3A13E4AF58} = {30FC2BE9-7397-445A-84AD-043CE70F4281} {31FA8E5E-D642-4C43-A2B2-02B9832B2CEC} = {2B227C67-3BEC-4A83-BDA0-F3918FBC0D18} {73EA27F2-9F0C-443F-A5EE-2960C983A422} = {2B227C67-3BEC-4A83-BDA0-F3918FBC0D18} + {508D380F-145C-437E-A7DF-7A17C526B2F3} = {2B227C67-3BEC-4A83-BDA0-F3918FBC0D18} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {0F3487F4-66CA-4034-AC66-1BC899C9B523} diff --git a/src/HeartTrackAPI/Controllers/UsersController.cs b/src/HeartTrackAPI/Controllers/UsersController.cs index 69d2bc9..644664b 100644 --- a/src/HeartTrackAPI/Controllers/UsersController.cs +++ b/src/HeartTrackAPI/Controllers/UsersController.cs @@ -32,7 +32,7 @@ public class UsersController : Controller /// /// Récupère une page d'utilisateurs en fonction des critères de pagination et de tri fournis. /// - /// Les critères de pagination et de tri pour les utilisateurs. + /// Les critères de pagination et de tri pour les utilisateurs. Met None par defaut et/ou si le critère n'est pas correct /// Une page de données utilisateur selon les critères spécifiés. /// Retourne la page demandée d'utilisateurs. /// La demande de pagination est invalide. diff --git a/src/Shared/ActivityOrderCriteria.cs b/src/Shared/ActivityOrderCriteria.cs index 5c7b64a..3a5fc31 100644 --- a/src/Shared/ActivityOrderCriteria.cs +++ b/src/Shared/ActivityOrderCriteria.cs @@ -3,13 +3,20 @@ namespace Shared; public enum ActivityOrderCriteria { None, + ByIdActivity, ByType, ByDate, - ByDuration, - ByDistance, - ByElevation, - ByAverageSpeed, - ByAverageHeartRate, - ByCalories, - ByDescription + ByStartTime, + ByEndTime, + ByEffortFelt, + ByVariability, + ByVariance, + ByStandardDeviation, + ByAverage, + ByMaximum, + ByMinimum, + ByAverageTemperature, + ByHasAutoPause, + ByDataSourceId, + ByAthleteId } \ No newline at end of file diff --git a/src/Tests/UnitTestsModel/ActivityTest.cs b/src/Tests/UnitTestsModel/ActivityTest.cs new file mode 100644 index 0000000..94be218 --- /dev/null +++ b/src/Tests/UnitTestsModel/ActivityTest.cs @@ -0,0 +1,152 @@ +using System; +using System.Collections.Generic; +using Model; +using Xunit; + +namespace UnitTestsModel; +public class ActivityTests +{ + [Fact] + public void Constructor_WithValidEffort_SetsEffort() + { + // Arrange + var date = DateTime.Now; + var validEffort = 3; + + // Act + var activity = new Activity( + id: 1, + type: "Running", + date: date, + startTime: date.AddHours(1), + endTime: date.AddHours(2), + effort: validEffort, + variability: 0.5f, + variance: 0.3f, + standardDeviation: 0.2f, + average: 150, + maximum: 180, + minimum: 120, + averageTemperature: 25.5f, + hasAutoPause: false, + user: new User(), + dataSource: new DataSource(1, "Type", "Model", 0.1f, new List(), new List()), + heartRates: null + ); + + // Assert + Assert.Equal(validEffort, activity.Effort); + } + + [Fact] + public void Constructor_WithInvalidEffort_ThrowsArgumentException() + { + // Arrange + var date = DateTime.Now; + var invalidEffort = 6; + + // Act & Assert + Assert.Throws(() => new Activity( + id: 1, + type: "Running", + date: date, + startTime: date.AddHours(1), + endTime: date.AddHours(2), + effort: invalidEffort, + variability: 0.5f, + variance: 0.3f, + standardDeviation: 0.2f, + average: 150, + maximum: 180, + minimum: 120, + averageTemperature: 25.5f, + hasAutoPause: false, + user: new User(), + dataSource: new DataSource(1, "Type", "Model", 0.1f, new List(), new List()), + heartRates: null + )); + } + + [Fact] + public void ToString_ReturnsExpectedString() + { + // Arrange + var date = new DateTime(2023, 3, 16, 10, 0, 0); + var activity = new Activity( + id: 1, + type: "Running", + date: date, + startTime: date.AddHours(1), + endTime: date.AddHours(2), + effort: 3, + variability: 0.5f, + variance: 0.3f, + standardDeviation: 0.2f, + average: 150, + maximum: 180, + minimum: 120, + averageTemperature: 25.5f, + hasAutoPause: false, + user: new User(), + dataSource: new DataSource(1, "Type", "Model", 0.1f, new List(), new List()), + heartRates: null + ); + + // Act + var result = activity.ToString(); + + // Assert + Assert.Contains("Activity #1: Running on 16/3/2023 from 11:00:00 to 12:00:00", result); + } + + [Fact] + public void Constructor_SetsPropertiesCorrectly() + { + // Arrange + var date = DateTime.Now; + var user = new User(); + var dataSource = new DataSource(1, "Type", "Model", 0.1f, new List(), new List()); + var heartRates = new List(); + + // Act + var activity = new Activity( + id: 1, + type: "Running", + date: date, + startTime: date.AddHours(1), + endTime: date.AddHours(2), + effort: 3, + variability: 0.5f, + variance: 0.3f, + standardDeviation: 0.2f, + average: 150, + maximum: 180, + minimum: 120, + averageTemperature: 25.5f, + hasAutoPause: false, + user: user, + dataSource: dataSource, + heartRates: heartRates + ); + + // Assert + Assert.Equal(1, activity.Id); + Assert.Equal("Running", activity.Type); + Assert.Equal(date, activity.Date); + Assert.Equal(date.AddHours(1), activity.StartTime); + Assert.Equal(date.AddHours(2), activity.EndTime); + Assert.Equal(3, activity.Effort); + Assert.Equal(0.5f, activity.Variability); + Assert.Equal(0.3f, activity.Variance); + Assert.Equal(0.2f, activity.StandardDeviation); + Assert.Equal(150, activity.Average); + Assert.Equal(180, activity.Maximum); + Assert.Equal(120, activity.Minimum); + Assert.Equal(25.5f, activity.AverageTemperature); + Assert.False(activity.HasAutoPause); + Assert.Equal(user, activity.Athlete); + Assert.Equal(dataSource, activity.DataSource); + Assert.Equal(heartRates, activity.HeartRates); + } + +} diff --git a/src/Tests/UnitTestsModel/GlobalUsings.cs b/src/Tests/UnitTestsModel/GlobalUsings.cs new file mode 100644 index 0000000..8c927eb --- /dev/null +++ b/src/Tests/UnitTestsModel/GlobalUsings.cs @@ -0,0 +1 @@ +global using Xunit; \ No newline at end of file diff --git a/src/Tests/UnitTestsModel/UnitTest1.cs b/src/Tests/UnitTestsModel/UnitTest1.cs new file mode 100644 index 0000000..0018230 --- /dev/null +++ b/src/Tests/UnitTestsModel/UnitTest1.cs @@ -0,0 +1,10 @@ +namespace UnitTestsModel; + +public class UnitTest1 +{ + [Fact] + public void Test1() + { + + } +} \ No newline at end of file diff --git a/src/UnitTestsEntities2/UnitTestsEntities2.csproj b/src/Tests/UnitTestsModel/UnitTestsModel.csproj similarity index 51% rename from src/UnitTestsEntities2/UnitTestsEntities2.csproj rename to src/Tests/UnitTestsModel/UnitTestsModel.csproj index 9c5b30a..6e23191 100644 --- a/src/UnitTestsEntities2/UnitTestsEntities2.csproj +++ b/src/Tests/UnitTestsModel/UnitTestsModel.csproj @@ -1,23 +1,29 @@ - - - - net8.0 - enable - enable - - false - true - - + + + + net8.0 + enable + enable + + false + true + + + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + - - - - - - - - - - - + + + + diff --git a/src/UnitTestsEntities2/UnitTest1.cs b/src/UnitTestsEntities2/UnitTest1.cs deleted file mode 100644 index 8b121a7..0000000 --- a/src/UnitTestsEntities2/UnitTest1.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace UnitTestsEntities2 -{ - public class UnitTest1 - { - [Fact] - public void Test1() - { - - } - } -} \ No newline at end of file