Skip to content

Commit

Permalink
GH-157: Add paging tests for seasons module
Browse files Browse the repository at this point in the history
  • Loading branch information
henrikfroehling authored May 6, 2023
1 parent 096aea4 commit a451326
Show file tree
Hide file tree
Showing 2 changed files with 316 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,164 @@ public async Task Test_TraktSeasonsModule_GetSeasonComments_Complete()
response.PageCount.Should().HaveValue().And.Be(1);
}

[Fact]
public async Task Test_TraktSeasonsModule_GetSeasonComments_Paging_HasPreviousPage_And_HasNextPage()
{
TraktClient client = TestUtility.GetMockClient($"{GET_SEASON_COMMENTS_URI}/{COMMENT_SORT_ORDER.UriName}?page=2&limit={LIMIT}",
SEASON_COMMENTS_JSON, 2, LIMIT, 5, ITEM_COUNT);

var pagedParameters = new TraktPagedParameters(2, LIMIT);
TraktPagedResponse<ITraktComment> response = await client.Seasons.GetSeasonCommentsAsync(SHOW_ID, SEASON_NR, COMMENT_SORT_ORDER, pagedParameters);

response.Should().NotBeNull();
response.IsSuccess.Should().BeTrue();
response.HasValue.Should().BeTrue();
response.Value.Should().NotBeNull().And.HaveCount(ITEM_COUNT);
response.ItemCount.Should().HaveValue().And.Be(ITEM_COUNT);
response.Limit.Should().Be(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_TraktSeasonsModule_GetSeasonComments_Paging_Only_HasPreviousPage()
{
TraktClient client = TestUtility.GetMockClient($"{GET_SEASON_COMMENTS_URI}/{COMMENT_SORT_ORDER.UriName}?page=2&limit={LIMIT}",
SEASON_COMMENTS_JSON, 2, LIMIT, 2, ITEM_COUNT);

var pagedParameters = new TraktPagedParameters(2, LIMIT);
TraktPagedResponse<ITraktComment> response = await client.Seasons.GetSeasonCommentsAsync(SHOW_ID, SEASON_NR, COMMENT_SORT_ORDER, pagedParameters);

response.Should().NotBeNull();
response.IsSuccess.Should().BeTrue();
response.HasValue.Should().BeTrue();
response.Value.Should().NotBeNull().And.HaveCount(ITEM_COUNT);
response.ItemCount.Should().HaveValue().And.Be(ITEM_COUNT);
response.Limit.Should().Be(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_TraktSeasonsModule_GetSeasonComments_Paging_Only_HasNextPage()
{
TraktClient client = TestUtility.GetMockClient($"{GET_SEASON_COMMENTS_URI}/{COMMENT_SORT_ORDER.UriName}?page=1&limit={LIMIT}",
SEASON_COMMENTS_JSON, 1, LIMIT, 2, ITEM_COUNT);

var pagedParameters = new TraktPagedParameters(1, LIMIT);
TraktPagedResponse<ITraktComment> response = await client.Seasons.GetSeasonCommentsAsync(SHOW_ID, SEASON_NR, COMMENT_SORT_ORDER, pagedParameters);

response.Should().NotBeNull();
response.IsSuccess.Should().BeTrue();
response.HasValue.Should().BeTrue();
response.Value.Should().NotBeNull().And.HaveCount(ITEM_COUNT);
response.ItemCount.Should().HaveValue().And.Be(ITEM_COUNT);
response.Limit.Should().Be(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_TraktSeasonsModule_GetSeasonComments_Paging_Not_HasPreviousPage_Or_HasNextPage()
{
TraktClient client = TestUtility.GetMockClient($"{GET_SEASON_COMMENTS_URI}/{COMMENT_SORT_ORDER.UriName}?page=1&limit={LIMIT}",
SEASON_COMMENTS_JSON, 1, LIMIT, 1, ITEM_COUNT);

var pagedParameters = new TraktPagedParameters(1, LIMIT);
TraktPagedResponse<ITraktComment> response = await client.Seasons.GetSeasonCommentsAsync(SHOW_ID, SEASON_NR, COMMENT_SORT_ORDER, pagedParameters);

response.Should().NotBeNull();
response.IsSuccess.Should().BeTrue();
response.HasValue.Should().BeTrue();
response.Value.Should().NotBeNull().And.HaveCount(ITEM_COUNT);
response.ItemCount.Should().HaveValue().And.Be(ITEM_COUNT);
response.Limit.Should().Be(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_TraktSeasonsModule_GetSeasonComments_Paging_GetPreviousPage()
{
TraktClient client = TestUtility.GetMockClient($"{GET_SEASON_COMMENTS_URI}/{COMMENT_SORT_ORDER.UriName}?page=2&limit={LIMIT}",
SEASON_COMMENTS_JSON, 2, LIMIT, 2, ITEM_COUNT);

var pagedParameters = new TraktPagedParameters(2, LIMIT);
TraktPagedResponse<ITraktComment> response = await client.Seasons.GetSeasonCommentsAsync(SHOW_ID, SEASON_NR, COMMENT_SORT_ORDER, pagedParameters);

response.Should().NotBeNull();
response.IsSuccess.Should().BeTrue();
response.HasValue.Should().BeTrue();
response.Value.Should().NotBeNull().And.HaveCount(ITEM_COUNT);
response.ItemCount.Should().HaveValue().And.Be(ITEM_COUNT);
response.Limit.Should().Be(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_SEASON_COMMENTS_URI}/{COMMENT_SORT_ORDER.UriName}?page=1&limit={LIMIT}",
SEASON_COMMENTS_JSON, 1, LIMIT, 2, ITEM_COUNT);

response = await response.GetPreviousPageAsync();

response.Should().NotBeNull();
response.IsSuccess.Should().BeTrue();
response.HasValue.Should().BeTrue();
response.Value.Should().NotBeNull().And.HaveCount(ITEM_COUNT);
response.ItemCount.Should().HaveValue().And.Be(ITEM_COUNT);
response.Limit.Should().Be(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_TraktSeasonsModule_GetSeasonComments_Paging_GetNextPage()
{
TraktClient client = TestUtility.GetMockClient($"{GET_SEASON_COMMENTS_URI}/{COMMENT_SORT_ORDER.UriName}?page=1&limit={LIMIT}",
SEASON_COMMENTS_JSON, 1, LIMIT, 2, ITEM_COUNT);

var pagedParameters = new TraktPagedParameters(1, LIMIT);
TraktPagedResponse<ITraktComment> response = await client.Seasons.GetSeasonCommentsAsync(SHOW_ID, SEASON_NR, COMMENT_SORT_ORDER, pagedParameters);

response.Should().NotBeNull();
response.IsSuccess.Should().BeTrue();
response.HasValue.Should().BeTrue();
response.Value.Should().NotBeNull().And.HaveCount(ITEM_COUNT);
response.ItemCount.Should().HaveValue().And.Be(ITEM_COUNT);
response.Limit.Should().Be(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_SEASON_COMMENTS_URI}/{COMMENT_SORT_ORDER.UriName}?page=2&limit={LIMIT}",
SEASON_COMMENTS_JSON, 2, LIMIT, 2, ITEM_COUNT);

response = await response.GetNextPageAsync();

response.Should().NotBeNull();
response.IsSuccess.Should().BeTrue();
response.HasValue.Should().BeTrue();
response.Value.Should().NotBeNull().And.HaveCount(ITEM_COUNT);
response.ItemCount.Should().HaveValue().And.Be(ITEM_COUNT);
response.Limit.Should().Be(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(TraktSeasonNotFoundException))]
[InlineData(HttpStatusCode.Unauthorized, typeof(TraktAuthorizationException))]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -258,6 +258,164 @@ public async Task Test_TraktSeasonsModule_GetSeasonLists_Complete()
response.PageCount.Should().HaveValue().And.Be(1);
}

[Fact]
public async Task Test_TraktSeasonsModule_GetSeasonLists_Paging_HasPreviousPage_And_HasNextPage()
{
TraktClient client = TestUtility.GetMockClient($"{GET_SEASON_LISTS_URI}/{LIST_TYPE.UriName}/{LIST_SORT_ORDER.UriName}?page=2&limit={LIMIT}",
SEASON_LISTS_JSON, 2, LIMIT, 5, LIST_ITEM_COUNT);

var pagedParameters = new TraktPagedParameters(2, LIMIT);
TraktPagedResponse<ITraktList> response = await client.Seasons.GetSeasonListsAsync(SHOW_ID, SEASON_NR, LIST_TYPE, LIST_SORT_ORDER, pagedParameters);

response.Should().NotBeNull();
response.IsSuccess.Should().BeTrue();
response.HasValue.Should().BeTrue();
response.Value.Should().NotBeNull().And.HaveCount(LIST_ITEM_COUNT);
response.ItemCount.Should().HaveValue().And.Be(LIST_ITEM_COUNT);
response.Limit.Should().Be(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_TraktSeasonsModule_GetSeasonLists_Paging_Only_HasPreviousPage()
{
TraktClient client = TestUtility.GetMockClient($"{GET_SEASON_LISTS_URI}/{LIST_TYPE.UriName}/{LIST_SORT_ORDER.UriName}?page=2&limit={LIMIT}",
SEASON_LISTS_JSON, 2, LIMIT, 2, LIST_ITEM_COUNT);

var pagedParameters = new TraktPagedParameters(2, LIMIT);
TraktPagedResponse<ITraktList> response = await client.Seasons.GetSeasonListsAsync(SHOW_ID, SEASON_NR, LIST_TYPE, LIST_SORT_ORDER, pagedParameters);

response.Should().NotBeNull();
response.IsSuccess.Should().BeTrue();
response.HasValue.Should().BeTrue();
response.Value.Should().NotBeNull().And.HaveCount(LIST_ITEM_COUNT);
response.ItemCount.Should().HaveValue().And.Be(LIST_ITEM_COUNT);
response.Limit.Should().Be(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_TraktSeasonsModule_GetSeasonLists_Paging_Only_HasNextPage()
{
TraktClient client = TestUtility.GetMockClient($"{GET_SEASON_LISTS_URI}/{LIST_TYPE.UriName}/{LIST_SORT_ORDER.UriName}?page=1&limit={LIMIT}",
SEASON_LISTS_JSON, 1, LIMIT, 2, LIST_ITEM_COUNT);

var pagedParameters = new TraktPagedParameters(1, LIMIT);
TraktPagedResponse<ITraktList> response = await client.Seasons.GetSeasonListsAsync(SHOW_ID, SEASON_NR, LIST_TYPE, LIST_SORT_ORDER, pagedParameters);

response.Should().NotBeNull();
response.IsSuccess.Should().BeTrue();
response.HasValue.Should().BeTrue();
response.Value.Should().NotBeNull().And.HaveCount(LIST_ITEM_COUNT);
response.ItemCount.Should().HaveValue().And.Be(LIST_ITEM_COUNT);
response.Limit.Should().Be(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_TraktSeasonsModule_GetSeasonLists_Paging_Not_HasPreviousPage_Or_HasNextPage()
{
TraktClient client = TestUtility.GetMockClient($"{GET_SEASON_LISTS_URI}/{LIST_TYPE.UriName}/{LIST_SORT_ORDER.UriName}?page=1&limit={LIMIT}",
SEASON_LISTS_JSON, 1, LIMIT, 1, LIST_ITEM_COUNT);

var pagedParameters = new TraktPagedParameters(1, LIMIT);
TraktPagedResponse<ITraktList> response = await client.Seasons.GetSeasonListsAsync(SHOW_ID, SEASON_NR, LIST_TYPE, LIST_SORT_ORDER, pagedParameters);

response.Should().NotBeNull();
response.IsSuccess.Should().BeTrue();
response.HasValue.Should().BeTrue();
response.Value.Should().NotBeNull().And.HaveCount(LIST_ITEM_COUNT);
response.ItemCount.Should().HaveValue().And.Be(LIST_ITEM_COUNT);
response.Limit.Should().Be(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_TraktSeasonsModule_GetSeasonLists_Paging_GetPreviousPage()
{
TraktClient client = TestUtility.GetMockClient($"{GET_SEASON_LISTS_URI}/{LIST_TYPE.UriName}/{LIST_SORT_ORDER.UriName}?page=2&limit={LIMIT}",
SEASON_LISTS_JSON, 2, LIMIT, 2, LIST_ITEM_COUNT);

var pagedParameters = new TraktPagedParameters(2, LIMIT);
TraktPagedResponse<ITraktList> response = await client.Seasons.GetSeasonListsAsync(SHOW_ID, SEASON_NR, LIST_TYPE, LIST_SORT_ORDER, pagedParameters);

response.Should().NotBeNull();
response.IsSuccess.Should().BeTrue();
response.HasValue.Should().BeTrue();
response.Value.Should().NotBeNull().And.HaveCount(LIST_ITEM_COUNT);
response.ItemCount.Should().HaveValue().And.Be(LIST_ITEM_COUNT);
response.Limit.Should().Be(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_SEASON_LISTS_URI}/{LIST_TYPE.UriName}/{LIST_SORT_ORDER.UriName}?page=1&limit={LIMIT}",
SEASON_LISTS_JSON, 1, LIMIT, 2, LIST_ITEM_COUNT);

response = await response.GetPreviousPageAsync();

response.Should().NotBeNull();
response.IsSuccess.Should().BeTrue();
response.HasValue.Should().BeTrue();
response.Value.Should().NotBeNull().And.HaveCount(LIST_ITEM_COUNT);
response.ItemCount.Should().HaveValue().And.Be(LIST_ITEM_COUNT);
response.Limit.Should().Be(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_TraktSeasonsModule_GetSeasonLists_Paging_GetNextPage()
{
TraktClient client = TestUtility.GetMockClient($"{GET_SEASON_LISTS_URI}/{LIST_TYPE.UriName}/{LIST_SORT_ORDER.UriName}?page=1&limit={LIMIT}",
SEASON_LISTS_JSON, 1, LIMIT, 2, LIST_ITEM_COUNT);

var pagedParameters = new TraktPagedParameters(1, LIMIT);
TraktPagedResponse<ITraktList> response = await client.Seasons.GetSeasonListsAsync(SHOW_ID, SEASON_NR, LIST_TYPE, LIST_SORT_ORDER, pagedParameters);

response.Should().NotBeNull();
response.IsSuccess.Should().BeTrue();
response.HasValue.Should().BeTrue();
response.Value.Should().NotBeNull().And.HaveCount(LIST_ITEM_COUNT);
response.ItemCount.Should().HaveValue().And.Be(LIST_ITEM_COUNT);
response.Limit.Should().Be(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_SEASON_LISTS_URI}/{LIST_TYPE.UriName}/{LIST_SORT_ORDER.UriName}?page=2&limit={LIMIT}",
SEASON_LISTS_JSON, 2, LIMIT, 2, LIST_ITEM_COUNT);

response = await response.GetNextPageAsync();

response.Should().NotBeNull();
response.IsSuccess.Should().BeTrue();
response.HasValue.Should().BeTrue();
response.Value.Should().NotBeNull().And.HaveCount(LIST_ITEM_COUNT);
response.ItemCount.Should().HaveValue().And.Be(LIST_ITEM_COUNT);
response.Limit.Should().Be(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(TraktSeasonNotFoundException))]
[InlineData(HttpStatusCode.Unauthorized, typeof(TraktAuthorizationException))]
Expand Down

0 comments on commit a451326

Please sign in to comment.