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
@@ -1,4 +1,5 @@
using Microsoft.AspNetCore.Http;
using TickAPI.Common.Pagination.Responses;
using TickAPI.Common.Pagination.Services;

namespace TickAPI.Tests.Common.Pagination.Services;
Expand All @@ -10,8 +11,10 @@ public class PaginationServiceTests
[Fact]
public void Paginate_WhenPageSizeNegative_ShouldReturnFailure()
{
// Act
var result = _paginationService.Paginate(new List<int>(), -5, 0);

// Assert
Assert.True(result.IsError);
Assert.Equal(StatusCodes.Status400BadRequest, result.StatusCode);
Assert.Equal("'pageSize' param must be > 0, got: -5", result.ErrorMsg);
Expand All @@ -20,8 +23,10 @@ public void Paginate_WhenPageSizeNegative_ShouldReturnFailure()
[Fact]
public void Paginate_WhenPageSizeZero_ShouldReturnFailure()
{
// Act
var result = _paginationService.Paginate(new List<int>(), 0, 0);

// Assert
Assert.True(result.IsError);
Assert.Equal(StatusCodes.Status400BadRequest, result.StatusCode);
Assert.Equal("'pageSize' param must be > 0, got: 0", result.ErrorMsg);
Expand All @@ -30,8 +35,10 @@ public void Paginate_WhenPageSizeZero_ShouldReturnFailure()
[Fact]
public void Paginate_WhenPageNegative_ShouldReturnFailure()
{
// Act
var result = _paginationService.Paginate(new List<int>(), 1, -12);

// Assert
Assert.True(result.IsError);
Assert.Equal(StatusCodes.Status400BadRequest, result.StatusCode);
Assert.Equal("'page' param must be >= 0, got: -12", result.ErrorMsg);
Expand All @@ -40,12 +47,15 @@ public void Paginate_WhenPageNegative_ShouldReturnFailure()
[Fact]
public void Paginate_WhenCollectionLengthSmallerThanPageSize_ShouldReturnAllElements()
{
// Arrange
var data = new List<int> { 1, 2, 3, 4, 5 };
int pageSize = data.Count + 1;
const int pageNumber = 0;

// Act
var result = _paginationService.Paginate(data, pageSize, pageNumber);

// Assert
Assert.True(result.IsSuccess);
Assert.Equal(data, result.Value?.Data);
Assert.Equal(pageNumber, result.Value?.PageNumber);
Expand All @@ -59,12 +69,15 @@ public void Paginate_WhenCollectionLengthSmallerThanPageSize_ShouldReturnAllElem
[Fact]
public void Paginate_WhenCollectionLengthBiggerThanPageSize_ShouldReturnPartOfCollection()
{
// Arrange
var data = new List<int> { 1, 2, 3, 4, 5 };
const int pageSize = 2;
const int pageNumber = 0;

// Act
var result = _paginationService.Paginate(data, pageSize, pageNumber);

// Assert
Assert.True(result.IsSuccess);
Assert.Equal(new List<int> {1, 2}, result.Value?.Data);
Assert.Equal(pageNumber, result.Value?.PageNumber);
Expand All @@ -78,12 +91,15 @@ public void Paginate_WhenCollectionLengthBiggerThanPageSize_ShouldReturnPartOfCo
[Fact]
public void Paginate_WhenTakingElementsFromTheMiddle_ShouldReturnPaginatedDataWithBothBooleansTrue()
{
// Arrange
var data = new List<int> { 1, 2, 3, 4, 5 };
const int pageSize = 2;
const int pageNumber = 1;

// Act
var result = _paginationService.Paginate(data, pageSize, pageNumber);

// Assert
Assert.True(result.IsSuccess);
Assert.Equal(new List<int> {3, 4}, result.Value?.Data);
Assert.Equal(pageNumber, result.Value?.PageNumber);
Expand All @@ -97,12 +113,15 @@ public void Paginate_WhenTakingElementsFromTheMiddle_ShouldReturnPaginatedDataWi
[Fact]
public void Paginate_WhenExceededMaxPageNumber_ShouldReturnFailure()
{
// Arrange
var data = new List<int> { 1, 2, 3, 4, 5 };
const int pageSize = 2;
const int pageNumber = 3;

// Act
var result = _paginationService.Paginate(data, pageSize, pageNumber);

// Assert
Assert.True(result.IsError);
Assert.Equal(StatusCodes.Status400BadRequest, result.StatusCode);
Assert.Equal("'page' param must be <= 2, got: 3", result.ErrorMsg);
Expand All @@ -111,12 +130,15 @@ public void Paginate_WhenExceededMaxPageNumber_ShouldReturnFailure()
[Fact]
public void Paginate_WhenOnLastPage_ShouldReturnHasNextPageSetToFalse()
{
// Arrange
var data = new List<int> { 1, 2, 3, 4, 5 };
const int pageSize = 2;
const int pageNumber = 2;

// Act
var result = _paginationService.Paginate(data, pageSize, pageNumber);

// Assert
Assert.True(result.IsSuccess);
Assert.Equal(new List<int>() { 5 }, result.Value?.Data);
Assert.Equal(pageNumber, result.Value?.PageNumber);
Expand All @@ -130,12 +152,15 @@ public void Paginate_WhenOnLastPage_ShouldReturnHasNextPageSetToFalse()
[Fact]
public void Paginate_WhenCollectionEmptyAndFirstPageIsRequested_ShouldReturnSuccess()
{
// Arrange
var data = new List<int>();
const int pageSize = 2;
const int pageNumber = 0;

// Act
var result = _paginationService.Paginate(data, pageSize, pageNumber);

// Assert
Assert.True(result.IsSuccess);
Assert.Equal(new List<int>(), result.Value?.Data);
Assert.Equal(pageNumber, result.Value?.PageNumber);
Expand All @@ -145,4 +170,25 @@ public void Paginate_WhenCollectionEmptyAndFirstPageIsRequested_ShouldReturnSucc
Assert.Equal(data.Count, result.Value?.PaginationDetails.AllElementsCount);
Assert.Equal(0, result.Value?.PaginationDetails.MaxPageNumber);
}

[Fact]
public void MapData_ShouldApplyLambdaToEachObject()
{
// Arrange
var data = new List<int>() {1,2,3,4,5};
var paginatedData = new PaginatedData<int>(data, 0, 5, true, false, new PaginationDetails(1, 10));
Func<int, float> lambda = i => i * 2;
var expectedData = new List<float>() { 2, 4, 6, 8, 10 };

// Act
var result = _paginationService.MapData(paginatedData, lambda);

// Assert
Assert.Equal(expectedData, result.Data);
Assert.Equal(paginatedData.PageNumber, result.PageNumber);
Assert.Equal(paginatedData.PageSize, result.PageSize);
Assert.Equal(paginatedData.HasPreviousPage, result.HasPreviousPage);
Assert.Equal(paginatedData.HasNextPage, result.HasNextPage);
Assert.Equal(paginatedData.PaginationDetails, result.PaginationDetails);
}
}
Loading
Loading