Skip to content

Commit

Permalink
Add json Convert Test
Browse files Browse the repository at this point in the history
  • Loading branch information
SitholeWB committed Jul 21, 2024
1 parent faa7ad0 commit 1f672cb
Show file tree
Hide file tree
Showing 3 changed files with 68 additions and 13 deletions.
5 changes: 4 additions & 1 deletion Examples/WebApi/WebApi.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,11 @@
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="6.0.16" />
<PackageReference Include="Pagination.EntityFrameworkCore.Extensions" Version="2.5.1" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\..\Pagination.EntityFrameworkCore.Extensions\Pagination.EntityFrameworkCore.Extensions.csproj" />
</ItemGroup>

</Project>
63 changes: 63 additions & 0 deletions Pagination.EntityFrameworkCore.Extensions.Tests/UnitTests.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using Microsoft.EntityFrameworkCore;
using Newtonsoft.Json;
using NUnit.Framework;
using System;
using System.Linq;
Expand Down Expand Up @@ -283,6 +284,68 @@ public async Task AsPaginationAsync_DbContext_Given_ConvertUserToUserViewModel_S
Assert.AreEqual(0, peopleView.Results.Count(x => !x.Firstname.Contains("Joe")));
}

[Test]
public void AsPagination_Given_ConvertUserToUserViewModel_ShouldConvertToJson()
{
var people = _usersDbContext.AsPagination<User>(1, 2);
var peopleView = _usersDbContext.AsPagination<User, UserViewModel>(1, 2, ConverUserToUserViewModel);
Assert.AreEqual(people.TotalItems, peopleView.TotalItems);
Assert.AreEqual(peopleView.Results.Count(x => x.Firstname.Contains("view")), peopleView.Results.Count());

var jsonPeople = JsonConvert.SerializeObject(people);
var jsonPeopleView = JsonConvert.SerializeObject(peopleView);

Assert.IsTrue(jsonPeople.Contains("TotalItems"));
Assert.IsTrue(jsonPeople.Contains("CurrentPage"));
Assert.IsTrue(jsonPeople.Contains("NextPage"));
Assert.IsTrue(jsonPeople.Contains("PreviousPage"));
Assert.IsTrue(jsonPeople.Contains("TotalPages"));
Assert.IsTrue(jsonPeople.Contains("Results"));
Assert.IsTrue(jsonPeople.Contains("Bob"));
Assert.IsTrue(jsonPeople.Contains("Smith"));
Assert.IsTrue(jsonPeople.Contains("Alice"));
Assert.IsTrue(jsonPeople.Contains("Cool"));

Assert.IsTrue(jsonPeopleView.Contains("TotalItems"));
Assert.IsTrue(jsonPeopleView.Contains("CurrentPage"));
Assert.IsTrue(jsonPeopleView.Contains("NextPage"));
Assert.IsTrue(jsonPeopleView.Contains("PreviousPage"));
Assert.IsTrue(jsonPeopleView.Contains("TotalPages"));
Assert.IsTrue(jsonPeopleView.Contains("Results"));
Assert.IsTrue(jsonPeopleView.Contains("Bob"));
Assert.IsTrue(jsonPeopleView.Contains("Smith"));
Assert.IsTrue(jsonPeopleView.Contains("Alice"));
Assert.IsTrue(jsonPeopleView.Contains("Cool"));
Assert.IsTrue(jsonPeopleView.Contains("---view"));

var peopleObj = JsonConvert.DeserializeObject<Pagination<User>>(jsonPeople);
var peopleViewObj = JsonConvert.DeserializeObject<Pagination<UserViewModel>>(jsonPeopleView);

Assert.AreEqual(people.TotalItems, peopleObj.TotalItems);
Assert.AreEqual(people.CurrentPage, peopleObj.CurrentPage);
Assert.AreEqual(people.NextPage, peopleObj.NextPage);
Assert.AreEqual(people.PreviousPage, peopleObj.PreviousPage);
Assert.AreEqual(people.TotalPages, peopleObj.TotalPages);
Assert.AreEqual(people.Results.Count(), peopleObj.Results.Count());
Assert.Greater(peopleObj.Results.Count(), 0);
Assert.IsTrue(peopleObj.Results.Any(x => x.Firstname.Contains("Bob") && x.Lastname.Contains("Smith")));
Assert.IsTrue(peopleObj.Results.Any(x => x.Firstname.Contains("Alice") && x.Lastname.Contains("Cool")));
Assert.IsFalse(peopleObj.Results.Any(x => x.Id.Equals(Guid.Empty)));

Assert.AreEqual(peopleView.TotalItems, peopleViewObj.TotalItems);
Assert.AreEqual(peopleView.CurrentPage, peopleViewObj.CurrentPage);
Assert.AreEqual(peopleView.NextPage, peopleViewObj.NextPage);
Assert.AreEqual(peopleView.PreviousPage, peopleViewObj.PreviousPage);
Assert.AreEqual(peopleView.TotalPages, peopleViewObj.TotalPages);
Assert.AreEqual(peopleView.Results.Count(), peopleViewObj.Results.Count());
Assert.Greater(peopleViewObj.Results.Count(), 0);
Assert.IsTrue(peopleViewObj.Results.Any(x => x.Firstname.Contains("Bob") && x.Lastname.Contains("Smith")));
Assert.IsTrue(peopleViewObj.Results.Any(x => x.Firstname.Contains("Alice") && x.Lastname.Contains("Cool")));
Assert.IsTrue(peopleViewObj.Results.Any(x => x.Firstname.Contains("---view")));
Assert.IsFalse(peopleViewObj.Results.Any(x => x.Id.Equals(Guid.Empty)));
Assert.IsFalse(peopleViewObj.Results.Any(x => x.Id.Equals(Guid.Empty)));
}

private UserViewModel ConverUserToUserViewModel(User user)
{
return new UserViewModel
Expand Down
13 changes: 1 addition & 12 deletions Pagination.EntityFrameworkCore.Extensions/Pagination.cs
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Pagination.EntityFrameworkCore.Extensions
{
public class Pagination<T> : IEnumerable<T>
public class Pagination<T>
{
public long TotalItems { get; set; }
public int CurrentPage { get; set; }
Expand All @@ -31,16 +30,6 @@ public Pagination(Pagination<T> pagination)
Results = pagination.Results;
}

IEnumerator<T> IEnumerable<T>.GetEnumerator()
{
return Results.GetEnumerator();
}

IEnumerator IEnumerable.GetEnumerator()
{
return Results.GetEnumerator();
}

public Pagination(IEnumerable<T> results, long totalItems, int page = 1, int limit = 10, bool applyPageAndLimitToResults = false)
{
if (page <= 0)
Expand Down

0 comments on commit 1f672cb

Please sign in to comment.