Skip to content

Commit

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

[Fact]
public async Task Test_TraktMoviesModule_GetMostAnticipatedMovies_Paging_HasPreviousPage_And_HasNextPage()
{
TraktClient client = TestUtility.GetMockClient($"{GET_MOST_ANTICIPATED_MOVIES_URI}?extended={EXTENDED_INFO}&page=2&limit={LIMIT}",
MOST_ANTICIPATED_MOVIES_JSON, 2, LIMIT, 5, ITEM_COUNT);

var pagedParameters = new TraktPagedParameters(2, LIMIT);

TraktPagedResponse<ITraktMostAnticipatedMovie> response =
await client.Movies.GetMostAnticipatedMoviesAsync(EXTENDED_INFO, null, 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_TraktMoviesModule_GetMostAnticipatedMovies_Paging_Only_HasPreviousPage()
{
TraktClient client = TestUtility.GetMockClient($"{GET_MOST_ANTICIPATED_MOVIES_URI}?extended={EXTENDED_INFO}&page=2&limit={LIMIT}",
MOST_ANTICIPATED_MOVIES_JSON, 2, LIMIT, 2, ITEM_COUNT);

var pagedParameters = new TraktPagedParameters(2, LIMIT);

TraktPagedResponse<ITraktMostAnticipatedMovie> response =
await client.Movies.GetMostAnticipatedMoviesAsync(EXTENDED_INFO, null, 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_TraktMoviesModule_GetMostAnticipatedMovies_Paging_Only_HasNextPage()
{
TraktClient client = TestUtility.GetMockClient($"{GET_MOST_ANTICIPATED_MOVIES_URI}?extended={EXTENDED_INFO}&page=1&limit={LIMIT}",
MOST_ANTICIPATED_MOVIES_JSON, 1, LIMIT, 2, ITEM_COUNT);

var pagedParameters = new TraktPagedParameters(1, LIMIT);

TraktPagedResponse<ITraktMostAnticipatedMovie> response =
await client.Movies.GetMostAnticipatedMoviesAsync(EXTENDED_INFO, null, 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_TraktMoviesModule_GetMostAnticipatedMovies_Paging_Not_HasPreviousPage_Or_HasNextPage()
{
TraktClient client = TestUtility.GetMockClient($"{GET_MOST_ANTICIPATED_MOVIES_URI}?extended={EXTENDED_INFO}&page=1&limit={LIMIT}",
MOST_ANTICIPATED_MOVIES_JSON, 1, LIMIT, 1, ITEM_COUNT);

var pagedParameters = new TraktPagedParameters(1, LIMIT);

TraktPagedResponse<ITraktMostAnticipatedMovie> response =
await client.Movies.GetMostAnticipatedMoviesAsync(EXTENDED_INFO, null, 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_TraktMoviesModule_GetMostAnticipatedMovies_Paging_GetPreviousPage()
{
TraktClient client = TestUtility.GetMockClient($"{GET_MOST_ANTICIPATED_MOVIES_URI}?extended={EXTENDED_INFO}&page=2&limit={LIMIT}",
MOST_ANTICIPATED_MOVIES_JSON, 2, LIMIT, 2, ITEM_COUNT);

var pagedParameters = new TraktPagedParameters(2, LIMIT);

TraktPagedResponse<ITraktMostAnticipatedMovie> response =
await client.Movies.GetMostAnticipatedMoviesAsync(EXTENDED_INFO, null, 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_MOST_ANTICIPATED_MOVIES_URI}?extended={EXTENDED_INFO}&page=1&limit={LIMIT}",
MOST_ANTICIPATED_MOVIES_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_TraktMoviesModule_GetMostAnticipatedMovies_Paging_GetNextPage()
{
TraktClient client = TestUtility.GetMockClient($"{GET_MOST_ANTICIPATED_MOVIES_URI}?extended={EXTENDED_INFO}&page=1&limit={LIMIT}",
MOST_ANTICIPATED_MOVIES_JSON, 1, LIMIT, 2, ITEM_COUNT);

var pagedParameters = new TraktPagedParameters(1, LIMIT);

TraktPagedResponse<ITraktMostAnticipatedMovie> response =
await client.Movies.GetMostAnticipatedMoviesAsync(EXTENDED_INFO, null, 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_MOST_ANTICIPATED_MOVIES_URI}?extended={EXTENDED_INFO}&page=2&limit={LIMIT}",
MOST_ANTICIPATED_MOVIES_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(TraktNotFoundException))]
[InlineData(HttpStatusCode.Unauthorized, typeof(TraktAuthorizationException))]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -541,6 +541,184 @@ public async Task Test_TraktMoviesModule_GetMostCollectedMovies_Complete_Filtere
response.PageCount.Should().HaveValue().And.Be(1);
}

[Fact]
public async Task Test_TraktMoviesModule_GetMostCollectedMovies_Paging_HasPreviousPage_And_HasNextPage()
{
TraktClient client = TestUtility.GetMockClient(
$"{GET_MOST_COLLECTED_MOVIES_URI}/{TIME_PERIOD.UriName}?extended={EXTENDED_INFO}&page=2&limit={LIMIT}",
MOST_COLLECTED_MOVIES_JSON, 2, LIMIT, 5, ITEM_COUNT);

var pagedParameters = new TraktPagedParameters(2, LIMIT);

TraktPagedResponse<ITraktMostPWCMovie> response =
await client.Movies.GetMostCollectedMoviesAsync(TIME_PERIOD, EXTENDED_INFO, null, 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_TraktMoviesModule_GetMostCollectedMovies_Paging_Only_HasPreviousPage()
{
TraktClient client = TestUtility.GetMockClient(
$"{GET_MOST_COLLECTED_MOVIES_URI}/{TIME_PERIOD.UriName}?extended={EXTENDED_INFO}&page=2&limit={LIMIT}",
MOST_COLLECTED_MOVIES_JSON, 2, LIMIT, 2, ITEM_COUNT);

var pagedParameters = new TraktPagedParameters(2, LIMIT);

TraktPagedResponse<ITraktMostPWCMovie> response =
await client.Movies.GetMostCollectedMoviesAsync(TIME_PERIOD, EXTENDED_INFO, null, 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_TraktMoviesModule_GetMostCollectedMovies_Paging_Only_HasNextPage()
{
TraktClient client = TestUtility.GetMockClient(
$"{GET_MOST_COLLECTED_MOVIES_URI}/{TIME_PERIOD.UriName}?extended={EXTENDED_INFO}&page=1&limit={LIMIT}",
MOST_COLLECTED_MOVIES_JSON, 1, LIMIT, 2, ITEM_COUNT);

var pagedParameters = new TraktPagedParameters(1, LIMIT);

TraktPagedResponse<ITraktMostPWCMovie> response =
await client.Movies.GetMostCollectedMoviesAsync(TIME_PERIOD, EXTENDED_INFO, null, 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_TraktMoviesModule_GetMostCollectedMovies_Paging_Not_HasPreviousPage_Or_HasNextPage()
{
TraktClient client = TestUtility.GetMockClient(
$"{GET_MOST_COLLECTED_MOVIES_URI}/{TIME_PERIOD.UriName}?extended={EXTENDED_INFO}&page=1&limit={LIMIT}",
MOST_COLLECTED_MOVIES_JSON, 1, LIMIT, 1, ITEM_COUNT);

var pagedParameters = new TraktPagedParameters(1, LIMIT);

TraktPagedResponse<ITraktMostPWCMovie> response =
await client.Movies.GetMostCollectedMoviesAsync(TIME_PERIOD, EXTENDED_INFO, null, 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_TraktMoviesModule_GetMostCollectedMovies_Paging_GetPreviousPage()
{
TraktClient client = TestUtility.GetMockClient(
$"{GET_MOST_COLLECTED_MOVIES_URI}/{TIME_PERIOD.UriName}?extended={EXTENDED_INFO}&page=2&limit={LIMIT}",
MOST_COLLECTED_MOVIES_JSON, 2, LIMIT, 2, ITEM_COUNT);

var pagedParameters = new TraktPagedParameters(2, LIMIT);

TraktPagedResponse<ITraktMostPWCMovie> response =
await client.Movies.GetMostCollectedMoviesAsync(TIME_PERIOD, EXTENDED_INFO, null, 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_MOST_COLLECTED_MOVIES_URI}/{TIME_PERIOD.UriName}?extended={EXTENDED_INFO}&page=1&limit={LIMIT}",
MOST_COLLECTED_MOVIES_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_TraktMoviesModule_GetMostCollectedMovies_Paging_GetNextPage()
{
TraktClient client = TestUtility.GetMockClient(
$"{GET_MOST_COLLECTED_MOVIES_URI}/{TIME_PERIOD.UriName}?extended={EXTENDED_INFO}&page=1&limit={LIMIT}",
MOST_COLLECTED_MOVIES_JSON, 1, LIMIT, 2, ITEM_COUNT);

var pagedParameters = new TraktPagedParameters(1, LIMIT);

TraktPagedResponse<ITraktMostPWCMovie> response =
await client.Movies.GetMostCollectedMoviesAsync(TIME_PERIOD, EXTENDED_INFO, null, 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_MOST_COLLECTED_MOVIES_URI}/{TIME_PERIOD.UriName}?extended={EXTENDED_INFO}&page=2&limit={LIMIT}",
MOST_COLLECTED_MOVIES_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(TraktNotFoundException))]
[InlineData(HttpStatusCode.Unauthorized, typeof(TraktAuthorizationException))]
Expand Down
Loading

0 comments on commit 5287371

Please sign in to comment.