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