Skip to content

Commit

Permalink
GH-157: Add paging tests for users module
Browse files Browse the repository at this point in the history
  • Loading branch information
henrikfroehling authored May 7, 2023
1 parent 0eb4c89 commit 78023cf
Show file tree
Hide file tree
Showing 12 changed files with 2,040 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -683,6 +683,198 @@ await client.Users.GetCommentsAsync(USERNAME, COMMENT_TYPE, OBJECT_TYPE,
response.PageCount.Should().HaveValue().And.Be(1);
}

[Fact]
public async Task Test_TraktUsersModule_GetComments_Paging_HasPreviousPage_And_HasNextPage()
{
TraktClient client = TestUtility.GetMockClient(
$"{GET_COMMENTS_URI}/{COMMENT_TYPE.UriName}/{OBJECT_TYPE.UriName}" +
$"?extended={EXTENDED_INFO}&page=2&limit={COMMENTS_LIMIT}",
USER_COMMENTS_JSON, 2, COMMENTS_LIMIT, 5, COMMENTS_ITEM_COUNT);

var pagedParameters = new TraktPagedParameters(2, COMMENTS_LIMIT);

TraktPagedResponse<ITraktUserComment> response =
await client.Users.GetCommentsAsync(USERNAME, COMMENT_TYPE, OBJECT_TYPE,
null, EXTENDED_INFO, pagedParameters);

response.Should().NotBeNull();
response.IsSuccess.Should().BeTrue();
response.HasValue.Should().BeTrue();
response.Value.Should().NotBeNull().And.HaveCount(COMMENTS_ITEM_COUNT);
response.ItemCount.Should().HaveValue().And.Be(COMMENTS_ITEM_COUNT);
response.Limit.Should().Be(COMMENTS_LIMIT);
response.Page.Should().Be(2);
response.PageCount.Should().HaveValue().And.Be(5);
response.HasPreviousPage.Should().BeTrue();
response.HasNextPage.Should().BeTrue();
}

[Fact]
public async Task Test_TraktUsersModule_GetComments_Paging_Only_HasPreviousPage()
{
TraktClient client = TestUtility.GetMockClient(
$"{GET_COMMENTS_URI}/{COMMENT_TYPE.UriName}/{OBJECT_TYPE.UriName}" +
$"?extended={EXTENDED_INFO}&page=2&limit={COMMENTS_LIMIT}",
USER_COMMENTS_JSON, 2, COMMENTS_LIMIT, 2, COMMENTS_ITEM_COUNT);

var pagedParameters = new TraktPagedParameters(2, COMMENTS_LIMIT);

TraktPagedResponse<ITraktUserComment> response =
await client.Users.GetCommentsAsync(USERNAME, COMMENT_TYPE, OBJECT_TYPE,
null, EXTENDED_INFO, pagedParameters);

response.Should().NotBeNull();
response.IsSuccess.Should().BeTrue();
response.HasValue.Should().BeTrue();
response.Value.Should().NotBeNull().And.HaveCount(COMMENTS_ITEM_COUNT);
response.ItemCount.Should().HaveValue().And.Be(COMMENTS_ITEM_COUNT);
response.Limit.Should().Be(COMMENTS_LIMIT);
response.Page.Should().Be(2);
response.PageCount.Should().HaveValue().And.Be(2);
response.HasPreviousPage.Should().BeTrue();
response.HasNextPage.Should().BeFalse();
}

[Fact]
public async Task Test_TraktUsersModule_GetComments_Paging_Only_HasNextPage()
{
TraktClient client = TestUtility.GetMockClient(
$"{GET_COMMENTS_URI}/{COMMENT_TYPE.UriName}/{OBJECT_TYPE.UriName}" +
$"?extended={EXTENDED_INFO}&page=1&limit={COMMENTS_LIMIT}",
USER_COMMENTS_JSON, 1, COMMENTS_LIMIT, 2, COMMENTS_ITEM_COUNT);

var pagedParameters = new TraktPagedParameters(1, COMMENTS_LIMIT);

TraktPagedResponse<ITraktUserComment> response =
await client.Users.GetCommentsAsync(USERNAME, COMMENT_TYPE, OBJECT_TYPE,
null, EXTENDED_INFO, pagedParameters);

response.Should().NotBeNull();
response.IsSuccess.Should().BeTrue();
response.HasValue.Should().BeTrue();
response.Value.Should().NotBeNull().And.HaveCount(COMMENTS_ITEM_COUNT);
response.ItemCount.Should().HaveValue().And.Be(COMMENTS_ITEM_COUNT);
response.Limit.Should().Be(COMMENTS_LIMIT);
response.Page.Should().Be(1);
response.PageCount.Should().HaveValue().And.Be(2);
response.HasPreviousPage.Should().BeFalse();
response.HasNextPage.Should().BeTrue();
}

[Fact]
public async Task Test_TraktUsersModule_GetComments_Paging_Not_HasPreviousPage_Or_HasNextPage()
{
TraktClient client = TestUtility.GetMockClient(
$"{GET_COMMENTS_URI}/{COMMENT_TYPE.UriName}/{OBJECT_TYPE.UriName}" +
$"?extended={EXTENDED_INFO}&page=1&limit={COMMENTS_LIMIT}",
USER_COMMENTS_JSON, 1, COMMENTS_LIMIT, 1, COMMENTS_ITEM_COUNT);

var pagedParameters = new TraktPagedParameters(1, COMMENTS_LIMIT);

TraktPagedResponse<ITraktUserComment> response =
await client.Users.GetCommentsAsync(USERNAME, COMMENT_TYPE, OBJECT_TYPE,
null, EXTENDED_INFO, pagedParameters);

response.Should().NotBeNull();
response.IsSuccess.Should().BeTrue();
response.HasValue.Should().BeTrue();
response.Value.Should().NotBeNull().And.HaveCount(COMMENTS_ITEM_COUNT);
response.ItemCount.Should().HaveValue().And.Be(COMMENTS_ITEM_COUNT);
response.Limit.Should().Be(COMMENTS_LIMIT);
response.Page.Should().Be(1);
response.PageCount.Should().HaveValue().And.Be(1);
response.HasPreviousPage.Should().BeFalse();
response.HasNextPage.Should().BeFalse();
}

[Fact]
public async Task Test_TraktUsersModule_GetComments_Paging_GetPreviousPage()
{
TraktClient client = TestUtility.GetMockClient(
$"{GET_COMMENTS_URI}/{COMMENT_TYPE.UriName}/{OBJECT_TYPE.UriName}" +
$"?extended={EXTENDED_INFO}&page=2&limit={COMMENTS_LIMIT}",
USER_COMMENTS_JSON, 2, COMMENTS_LIMIT, 2, COMMENTS_ITEM_COUNT);

var pagedParameters = new TraktPagedParameters(2, COMMENTS_LIMIT);

TraktPagedResponse<ITraktUserComment> response =
await client.Users.GetCommentsAsync(USERNAME, COMMENT_TYPE, OBJECT_TYPE,
null, EXTENDED_INFO, pagedParameters);

response.Should().NotBeNull();
response.IsSuccess.Should().BeTrue();
response.HasValue.Should().BeTrue();
response.Value.Should().NotBeNull().And.HaveCount(COMMENTS_ITEM_COUNT);
response.ItemCount.Should().HaveValue().And.Be(COMMENTS_ITEM_COUNT);
response.Limit.Should().Be(COMMENTS_LIMIT);
response.Page.Should().Be(2);
response.PageCount.Should().HaveValue().And.Be(2);
response.HasPreviousPage.Should().BeTrue();
response.HasNextPage.Should().BeFalse();

TestUtility.ResetMockClient(client,
$"{GET_COMMENTS_URI}/{COMMENT_TYPE.UriName}/{OBJECT_TYPE.UriName}" +
$"?extended={EXTENDED_INFO}&page=1&limit={COMMENTS_LIMIT}",
USER_COMMENTS_JSON, 1, COMMENTS_LIMIT, 2, COMMENTS_ITEM_COUNT);

response = await response.GetPreviousPageAsync();

response.Should().NotBeNull();
response.IsSuccess.Should().BeTrue();
response.HasValue.Should().BeTrue();
response.Value.Should().NotBeNull().And.HaveCount(COMMENTS_ITEM_COUNT);
response.ItemCount.Should().HaveValue().And.Be(COMMENTS_ITEM_COUNT);
response.Limit.Should().Be(COMMENTS_LIMIT);
response.Page.Should().Be(1);
response.PageCount.Should().HaveValue().And.Be(2);
response.HasPreviousPage.Should().BeFalse();
response.HasNextPage.Should().BeTrue();
}

[Fact]
public async Task Test_TraktUsersModule_GetComments_Paging_GetNextPage()
{
TraktClient client = TestUtility.GetMockClient(
$"{GET_COMMENTS_URI}/{COMMENT_TYPE.UriName}/{OBJECT_TYPE.UriName}" +
$"?extended={EXTENDED_INFO}&page=1&limit={COMMENTS_LIMIT}",
USER_COMMENTS_JSON, 1, COMMENTS_LIMIT, 2, COMMENTS_ITEM_COUNT);

var pagedParameters = new TraktPagedParameters(1, COMMENTS_LIMIT);

TraktPagedResponse<ITraktUserComment> response =
await client.Users.GetCommentsAsync(USERNAME, COMMENT_TYPE, OBJECT_TYPE,
null, EXTENDED_INFO, pagedParameters);

response.Should().NotBeNull();
response.IsSuccess.Should().BeTrue();
response.HasValue.Should().BeTrue();
response.Value.Should().NotBeNull().And.HaveCount(COMMENTS_ITEM_COUNT);
response.ItemCount.Should().HaveValue().And.Be(COMMENTS_ITEM_COUNT);
response.Limit.Should().Be(COMMENTS_LIMIT);
response.Page.Should().Be(1);
response.PageCount.Should().HaveValue().And.Be(2);
response.HasPreviousPage.Should().BeFalse();
response.HasNextPage.Should().BeTrue();

TestUtility.ResetMockClient(client,
$"{GET_COMMENTS_URI}/{COMMENT_TYPE.UriName}/{OBJECT_TYPE.UriName}" +
$"?extended={EXTENDED_INFO}&page=2&limit={COMMENTS_LIMIT}",
USER_COMMENTS_JSON, 2, COMMENTS_LIMIT, 2, COMMENTS_ITEM_COUNT);

response = await response.GetNextPageAsync();

response.Should().NotBeNull();
response.IsSuccess.Should().BeTrue();
response.HasValue.Should().BeTrue();
response.Value.Should().NotBeNull().And.HaveCount(COMMENTS_ITEM_COUNT);
response.ItemCount.Should().HaveValue().And.Be(COMMENTS_ITEM_COUNT);
response.Limit.Should().Be(COMMENTS_LIMIT);
response.Page.Should().Be(2);
response.PageCount.Should().HaveValue().And.Be(2);
response.HasPreviousPage.Should().BeTrue();
response.HasNextPage.Should().BeFalse();
}

[Theory]
[InlineData(HttpStatusCode.NotFound, typeof(TraktNotFoundException))]
[InlineData(HttpStatusCode.Unauthorized, typeof(TraktAuthorizationException))]
Expand Down
Loading

0 comments on commit 78023cf

Please sign in to comment.