Skip to content
Merged
71 changes: 71 additions & 0 deletions src/c#/ExtensionTest/DTOs/HttpResponseDTOTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
using GeneralUpdate.Extension.DTOs;
using Xunit;

namespace ExtensionTest.DTOs
{
/// <summary>
/// Contains test cases for HttpResponseDTO classes
/// </summary>
public class HttpResponseDTOTests
{
[Fact]
public void HttpResponseDTO_Success_ShouldCreateSuccessResponse()
{
// Act
var response = HttpResponseDTO.Success("Operation successful");

// Assert
Assert.Equal(200, response.Code);
Assert.Equal("Operation successful", response.Message);
}

[Fact]
public void HttpResponseDTO_InnerException_ShouldCreateErrorResponse()
{
// Act
var response = HttpResponseDTO.InnerException("An error occurred");

// Assert
Assert.Equal(500, response.Code);
Assert.Equal("An error occurred", response.Message);
}

[Fact]
public void HttpResponseDTOGeneric_Success_ShouldCreateSuccessResponseWithData()
{
// Arrange
var testData = new { Id = 1, Name = "Test" };

// Act
var response = HttpResponseDTO<object>.Success(testData, "Data retrieved");

// Assert
Assert.Equal(200, response.Code);
Assert.Equal("Data retrieved", response.Message);
Assert.NotNull(response.Body);
Assert.Equal(testData, response.Body);
}

[Fact]
public void HttpResponseDTOGeneric_Failure_ShouldCreateFailureResponse()
{
// Act
var response = HttpResponseDTO<string>.Failure("Validation failed");

// Assert
Assert.Equal(400, response.Code);
Assert.Equal("Validation failed", response.Message);
}

[Fact]
public void HttpResponseDTOGeneric_InnerException_ShouldCreateErrorResponse()
{
// Act
var response = HttpResponseDTO<int>.InnerException("Internal error");

// Assert
Assert.Equal(500, response.Code);
Assert.Equal("Internal error", response.Message);
}
}
}
92 changes: 92 additions & 0 deletions src/c#/ExtensionTest/DTOs/PagedResultDTOTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
using System.Collections.Generic;
using System.Linq;
using GeneralUpdate.Extension.DTOs;
using Xunit;

namespace ExtensionTest.DTOs
{
/// <summary>
/// Contains test cases for PagedResultDTO
/// </summary>
public class PagedResultDTOTests
{
[Fact]
public void PagedResultDTO_HasPrevious_ShouldBeTrueWhenPageNumberGreaterThanOne()
{
// Arrange
var result = new PagedResultDTO<string>
{
PageNumber = 2,
PageSize = 10,
TotalCount = 30,
TotalPages = 3,
Items = new List<string> { "item1", "item2" }
};

// Act & Assert
Assert.True(result.HasPrevious);
}

[Fact]
public void PagedResultDTO_HasPrevious_ShouldBeFalseWhenPageNumberIsOne()
{
// Arrange
var result = new PagedResultDTO<string>
{
PageNumber = 1,
PageSize = 10,
TotalCount = 30,
TotalPages = 3,
Items = new List<string> { "item1", "item2" }
};

// Act & Assert
Assert.False(result.HasPrevious);
}

[Fact]
public void PagedResultDTO_HasNext_ShouldBeTrueWhenPageNumberLessThanTotalPages()
{
// Arrange
var result = new PagedResultDTO<string>
{
PageNumber = 2,
PageSize = 10,
TotalCount = 30,
TotalPages = 3,
Items = new List<string> { "item1", "item2" }
};

// Act & Assert
Assert.True(result.HasNext);
}

[Fact]
public void PagedResultDTO_HasNext_ShouldBeFalseWhenPageNumberEqualsToTotalPages()
{
// Arrange
var result = new PagedResultDTO<string>
{
PageNumber = 3,
PageSize = 10,
TotalCount = 30,
TotalPages = 3,
Items = new List<string> { "item1", "item2" }
};

// Act & Assert
Assert.False(result.HasNext);
}

[Fact]
public void PagedResultDTO_Items_ShouldDefaultToEmptyEnumerable()
{
// Arrange & Act
var result = new PagedResultDTO<string>();

// Assert
Assert.NotNull(result.Items);
Assert.Empty(result.Items);
}
}
}
Loading
Loading