Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ namespace TickAPI.Tests.Events.Controllers;

public class EventsControllerTests
{
private readonly EventFiltersDto _emptyFilters = new EventFiltersDto(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null);
private readonly EventFiltersDto _emptyFilters = new EventFiltersDto(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null);

[Fact]
public async Task CreateEvent_WhenDataIsValid_ShouldReturnSuccess()
Expand Down
102 changes: 25 additions & 77 deletions TickAPI/TickAPI.Tests/Events/Filters/EventFilterApplierTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,7 @@ public void ApplyFilters_WithName_ShouldCallFilterByName()
{
// Arrange
var filters = new EventFiltersDto(
Name: "test event",
Descritpion: null,
SearchQuery: "test event",
StartDate: null,
MinStartDate: null,
MaxStartDate: null,
Expand All @@ -49,52 +48,18 @@ public void ApplyFilters_WithName_ShouldCallFilterByName()
_eventFilterApplier.ApplyFilters(filters);

// Assert
_mockEventFilter.Verify(ef => ef.FilterByName(filters.Name!), Times.Once);
_mockEventFilter.Verify(ef => ef.FilterByName(filters.SearchQuery!), Times.Once);
_mockEventFilter.Verify(ef => ef.FilterByDescription(filters.SearchQuery!), Times.Once);
_mockEventFilter.Verify(ef => ef.GetEvents(), Times.Once);
}

[Fact]
public void ApplyFilters_WithDescription_ShouldCallFilterByDescription()
{
// Arrange
var filters = new EventFiltersDto(
Name: null,
Descritpion: "test description",
StartDate: null,
MinStartDate: null,
MaxStartDate: null,
EndDate: null,
MinEndDate: null,
MaxEndDate: null,
MinPrice: null,
MaxPrice: null,
MinAge: null,
MaxMinimumAge: null,
AddressCountry: null,
AddressCity: null,
AddressStreet: null,
HouseNumber: null,
FlatNumber: null,
PostalCode: null,
CategoriesNames: null
);

// Act
_eventFilterApplier.ApplyFilters(filters);

// Assert
_mockEventFilter.Verify(ef => ef.FilterByDescription(filters.Descritpion!), Times.Once);
_mockEventFilter.Verify(ef => ef.GetEvents(), Times.Once);
}


[Fact]
public void ApplyFilters_WithStartDate_ShouldCallFilterByStartDate()
{
// Arrange
var startDate = new DateTime(2025, 5, 1);
var filters = new EventFiltersDto(
Name: null,
Descritpion: null,
SearchQuery: null,
StartDate: startDate,
MinStartDate: null,
MaxStartDate: null,
Expand Down Expand Up @@ -128,8 +93,7 @@ public void ApplyFilters_WithMinStartDate_ShouldCallFilterByMinStartDate()
// Arrange
var minStartDate = new DateTime(2025, 5, 1);
var filters = new EventFiltersDto(
Name: null,
Descritpion: null,
SearchQuery: null,
StartDate: null,
MinStartDate: minStartDate,
MaxStartDate: null,
Expand Down Expand Up @@ -163,8 +127,7 @@ public void ApplyFilters_WithMaxStartDate_ShouldCallFilterByMaxStartDate()
// Arrange
var maxStartDate = new DateTime(2025, 5, 1);
var filters = new EventFiltersDto(
Name: null,
Descritpion: null,
SearchQuery: null,
StartDate: null,
MinStartDate: null,
MaxStartDate: maxStartDate,
Expand Down Expand Up @@ -198,8 +161,7 @@ public void ApplyFilters_WithEndDate_ShouldCallFilterByEndDate()
// Arrange
var endDate = new DateTime(2025, 5, 1);
var filters = new EventFiltersDto(
Name: null,
Descritpion: null,
SearchQuery: null,
StartDate: null,
MinStartDate: null,
MaxStartDate: null,
Expand Down Expand Up @@ -233,8 +195,7 @@ public void ApplyFilters_WithMinEndDate_ShouldCallFilterByMinEndDate()
// Arrange
var minEndDate = new DateTime(2025, 5, 1);
var filters = new EventFiltersDto(
Name: null,
Descritpion: null,
SearchQuery: null,
StartDate: null,
MinStartDate: null,
MaxStartDate: null,
Expand Down Expand Up @@ -268,8 +229,7 @@ public void ApplyFilters_WithMaxEndDate_ShouldCallFilterByMaxEndDate()
// Arrange
var maxEndDate = new DateTime(2025, 5, 1);
var filters = new EventFiltersDto(
Name: null,
Descritpion: null,
SearchQuery: null,
StartDate: null,
MinStartDate: null,
MaxStartDate: null,
Expand Down Expand Up @@ -303,8 +263,7 @@ public void ApplyFilters_WithMinPrice_ShouldCallFilterByMinPrice()
// Arrange
decimal minPrice = 100;
var filters = new EventFiltersDto(
Name: null,
Descritpion: null,
SearchQuery: null,
StartDate: null,
MinStartDate: null,
MaxStartDate: null,
Expand Down Expand Up @@ -338,8 +297,7 @@ public void ApplyFilters_WithMaxPrice_ShouldCallFilterByMaxPrice()
// Arrange
decimal maxPrice = 200;
var filters = new EventFiltersDto(
Name: null,
Descritpion: null,
SearchQuery: null,
StartDate: null,
MinStartDate: null,
MaxStartDate: null,
Expand Down Expand Up @@ -373,8 +331,7 @@ public void ApplyFilters_WithMinAge_ShouldCallFilterByMinAge()
// Arrange
uint minAge = 18;
var filters = new EventFiltersDto(
Name: null,
Descritpion: null,
SearchQuery: null,
StartDate: null,
MinStartDate: null,
MaxStartDate: null,
Expand Down Expand Up @@ -408,8 +365,7 @@ public void ApplyFilters_WithMaxMinimumAge_ShouldCallFilterByMaxMinimumAge()
// Arrange
uint maxMinimumAge = 21;
var filters = new EventFiltersDto(
Name: null,
Descritpion: null,
SearchQuery: null,
StartDate: null,
MinStartDate: null,
MaxStartDate: null,
Expand Down Expand Up @@ -442,8 +398,7 @@ public void ApplyFilters_WithAddressCountry_ShouldCallFilterByAddressCountry()
{
// Arrange
var filters = new EventFiltersDto(
Name: null,
Descritpion: null,
SearchQuery: null,
StartDate: null,
MinStartDate: null,
MaxStartDate: null,
Expand Down Expand Up @@ -476,8 +431,7 @@ public void ApplyFilters_WithAddressCity_ShouldCallFilterByAddressCity()
{
// Arrange
var filters = new EventFiltersDto(
Name: null,
Descritpion: null,
SearchQuery: null,
StartDate: null,
MinStartDate: null,
MaxStartDate: null,
Expand Down Expand Up @@ -510,8 +464,7 @@ public void ApplyFilters_WithAddressStreetOnly_ShouldCallFilterByAddressStreet()
{
// Arrange
var filters = new EventFiltersDto(
Name: null,
Descritpion: null,
SearchQuery: null,
StartDate: null,
MinStartDate: null,
MaxStartDate: null,
Expand Down Expand Up @@ -545,8 +498,7 @@ public void ApplyFilters_WithAddressStreetAndHouseNumber_ShouldCallFilterByAddre
// Arrange
uint houseNumber = 12;
var filters = new EventFiltersDto(
Name: null,
Descritpion: null,
SearchQuery: null,
StartDate: null,
MinStartDate: null,
MaxStartDate: null,
Expand Down Expand Up @@ -581,8 +533,7 @@ public void ApplyFilters_WithCompleteAddress_ShouldCallFilterByAddressStreet()
uint houseNumber = 12;
uint flatNumber = 5;
var filters = new EventFiltersDto(
Name: null,
Descritpion: null,
SearchQuery: null,
StartDate: null,
MinStartDate: null,
MaxStartDate: null,
Expand Down Expand Up @@ -615,8 +566,7 @@ public void ApplyFilters_WithPostalCode_ShouldCallFilterByAddressPostalCode()
{
// Arrange
var filters = new EventFiltersDto(
Name: null,
Descritpion: null,
SearchQuery: null,
StartDate: null,
MinStartDate: null,
MaxStartDate: null,
Expand Down Expand Up @@ -650,8 +600,7 @@ public void ApplyFilters_WithCategoriesNames_ShouldCallFilterByCategoriesNames()
// Arrange
var categoriesNames = new List<string> { "Concert", "Festival", "Exhibition" };
var filters = new EventFiltersDto(
Name: null,
Descritpion: null,
SearchQuery: null,
StartDate: null,
MinStartDate: null,
MaxStartDate: null,
Expand Down Expand Up @@ -687,8 +636,7 @@ public void ApplyFilters_WithMultipleFilters_ShouldCallAllRelevantFilters()
decimal minPrice = 50;
decimal maxPrice = 200;
var filters = new EventFiltersDto(
Name: "Concert",
Descritpion: null,
SearchQuery: "Concert",
StartDate: startDate,
MinStartDate: null,
MaxStartDate: null,
Expand All @@ -712,7 +660,8 @@ public void ApplyFilters_WithMultipleFilters_ShouldCallAllRelevantFilters()
_eventFilterApplier.ApplyFilters(filters);

// Assert
_mockEventFilter.Verify(ef => ef.FilterByName(filters.Name!), Times.Once);
_mockEventFilter.Verify(ef => ef.FilterByName(filters.SearchQuery!), Times.Once);
_mockEventFilter.Verify(ef => ef.FilterByDescription(filters.SearchQuery!), Times.Once);
_mockEventFilter.Verify(ef => ef.FilterByStartDate(filters.StartDate!.Value), Times.Once);
_mockEventFilter.Verify(ef => ef.FilterByMinPrice(filters.MinPrice!.Value), Times.Once);
_mockEventFilter.Verify(ef => ef.FilterByMaxPrice(filters.MaxPrice!.Value), Times.Once);
Expand All @@ -730,8 +679,7 @@ public void ApplyFilters_WithNoFilters_ShouldOnlyCallGetEvents()
}.AsQueryable();
_mockEventFilter.Setup(ef => ef.GetEvents()).Returns(expectedResult);
var filters = new EventFiltersDto(
Name: null,
Descritpion: null,
SearchQuery: null,
StartDate: null,
MinStartDate: null,
MaxStartDate: null,
Expand Down
3 changes: 1 addition & 2 deletions TickAPI/TickAPI/Events/DTOs/Request/EventFiltersDto.cs
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
namespace TickAPI.Events.DTOs.Request;

public record EventFiltersDto(
string? Name,
string? Descritpion,
string? SearchQuery,
DateTime? StartDate,
DateTime? MinStartDate,
DateTime? MaxStartDate,
Expand Down
8 changes: 6 additions & 2 deletions TickAPI/TickAPI/Events/Filters/EventFilterApplier.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,12 @@ public EventFilterApplier(IEventFilter eventFilter)
_eventFilter = eventFilter;
_filterActions = new Dictionary<Func<EventFiltersDto, bool>, Action<EventFiltersDto>>
{
{ f => !string.IsNullOrEmpty(f.Name), f => _eventFilter.FilterByName(f.Name!) },
{ f => !string.IsNullOrEmpty(f.Descritpion), f => _eventFilter.FilterByDescription(f.Descritpion!) },
{ f => !string.IsNullOrEmpty(f.SearchQuery), f =>
{
_eventFilter.FilterByName(f.SearchQuery!);
_eventFilter.FilterByDescription(f.SearchQuery!);
}
},
{ f => f.StartDate.HasValue, f => _eventFilter.FilterByStartDate(f.StartDate!.Value) },
{ f => f.MinStartDate.HasValue, f => _eventFilter.FilterByMinStartDate(f.MinStartDate!.Value) },
{ f => f.MaxStartDate.HasValue, f => _eventFilter.FilterByMaxStartDate(f.MaxStartDate!.Value) },
Expand Down
Loading