Skip to content

Commit 20a2fb5

Browse files
committed
🐛 Refactor activity filtering
1 parent 6fcc75f commit 20a2fb5

4 files changed

Lines changed: 79 additions & 5 deletions

File tree

TaleEngine/TaleEngine.Application.Contracts/IActivityService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ public interface IActivityService
1010
List<ActivityEntity> GetActiveActivities(int editionId);
1111
List<ActivityEntity> GetPendingActivities(int editionId);
1212
List<ActivityEntity> GetLastThreeActivities(int editionId);
13-
IEnumerable<ActivityEntity> GetActiveActivitiesFiltered(int typeId, int editionId, List<int> timeframes, string title, int skipByPagination, int activitiesPerPage, int userFav = default);
13+
IEnumerable<ActivityEntity> GetActiveActivitiesFiltered(int typeId, int editionId, List<int> timeframes, string title, int userFav = default);
1414
List<ActivityEntity> GetFavouriteActivitiesByUser(int userId, int editionId);
1515
bool AddFavouriteActivity(int activityId, int userId);
1616
bool RemoveFavouriteActivity(int activityId, int userId);

TaleEngine/TaleEngine.Application/ActivityService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public List<ActivityEntity> GetPendingActivities(int editionId)
5151
}
5252

5353
public IEnumerable<ActivityEntity> GetActiveActivitiesFiltered(int typeId, int editionId,
54-
List<int> timeFrames, string title, int skipByPagination, int activitiesPerPage, int userFav = default)
54+
List<int> timeFrames, string title, int userFav = default)
5555
{
5656
IEnumerable<ActivityEntity> query;
5757

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
using FluentAssertions;
2+
using Moq;
3+
using System.Collections.Generic;
4+
using System.Diagnostics.CodeAnalysis;
5+
using System.Linq;
6+
using TaleEngine.API.Contracts.Dtos.Requests;
7+
using TaleEngine.CQRS.Queries;
8+
using TaleEngine.Data.Contracts.Entities;
9+
using TaleEngine.Services.Contracts;
10+
using Xunit;
11+
12+
namespace TaleEngine.CQRS.Testing
13+
{
14+
[ExcludeFromCodeCoverage]
15+
public class ActivityQueriesPaginationTests
16+
{
17+
[Fact]
18+
public void ActiveActivitiesFilteredQuery_ShouldApplyPaginationAndCalculateTotalPages()
19+
{
20+
// Arrange
21+
const int editionId = 1;
22+
const int userId = 10;
23+
24+
var request = new ActivityFilterRequest
25+
{
26+
EditionId = editionId,
27+
Page = 1,
28+
Title = string.Empty,
29+
TimeFrames = new List<int>()
30+
};
31+
32+
var editionServiceMock = new Mock<IEditionService>();
33+
var activityServiceMock = new Mock<IActivityService>();
34+
35+
var allFilteredActivities = Enumerable.Range(1, 7)
36+
.Select(i => new ActivityEntity
37+
{
38+
Id = i,
39+
Title = $"Activity {i}",
40+
EditionId = editionId
41+
})
42+
.ToList();
43+
44+
editionServiceMock.Setup(x => x.GetById(editionId))
45+
.Returns(new EditionEntity { Id = editionId });
46+
47+
activityServiceMock.Setup(x => x.GetActiveActivitiesFiltered(
48+
request.TypeId,
49+
editionId,
50+
request.TimeFrames,
51+
request.Title,
52+
userId))
53+
.Returns(allFilteredActivities);
54+
55+
var target = new ActivityQueries(activityServiceMock.Object, editionServiceMock.Object);
56+
57+
// Act
58+
var result = target.ActiveActivitiesFilteredQuery(request, userId);
59+
60+
// Assert
61+
result.Should().NotBeNull();
62+
result.CurrentPage.Should().Be(1);
63+
result.TotalPages.Should().Be(3);
64+
result.Activities.Should().NotBeNull();
65+
result.Activities.Should().HaveCount(3);
66+
result.Activities.Select(a => a.Id).Should().Equal(new[] { 4, 5, 6 });
67+
}
68+
}
69+
}

TaleEngine/TaleEngine.Bussiness/Queries/ActivityQueries.cs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,15 @@ public ActivityFilteredResult ActiveActivitiesFilteredQuery(ActivityFilterReques
5555
int skipByPagination = request.Page * ACTIVITIESPERPAGE;
5656

5757
var activitiesQueried = _activityService.GetActiveActivitiesFiltered(request.TypeId, currentEdition.Id,
58-
request.TimeFrames, request.Title, skipByPagination, ACTIVITIESPERPAGE, userId);
58+
request.TimeFrames, request.Title, userId);
5959

60-
var totalActivities = activitiesQueried.Count();
61-
var activities = activitiesQueried.ToList();
60+
var filteredActivities = activitiesQueried.ToList();
61+
var totalActivities = filteredActivities.Count;
62+
63+
var activities = filteredActivities
64+
.Skip(skipByPagination)
65+
.Take(ACTIVITIESPERPAGE)
66+
.ToList();
6267

6368
var models = ActivityMapper.MapEntityToDto(activities);
6469

0 commit comments

Comments
 (0)