From 43f77cedd11eb9a4e04b89e0d43ab04e5fc7c06f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Fr=C3=B6hling?= Date: Mon, 31 Oct 2022 18:50:25 +0100 Subject: [PATCH] GH-346 GH-338: Add tests for scrobble post builder --- ...odeScrobblePostBuilder_Exceptions_Tests.cs | 130 ++++++++++ ...ktPost_EpisodeScrobblePostBuilder_Tests.cs | 224 ++++++++++++++++++ ...vieScrobblePostBuilder_Exceptions_Tests.cs | 79 ++++++ ...raktPost_MovieScrobblePostBuilder_Tests.cs | 104 ++++++++ .../TraktPost_Tests_Common_Data.cs | 1 + 5 files changed, 538 insertions(+) create mode 100644 Source/Tests/Trakt.NET.PostBuilder.Tests/ScrobblePostBuilder/TraktPost_EpisodeScrobblePostBuilder_Exceptions_Tests.cs create mode 100644 Source/Tests/Trakt.NET.PostBuilder.Tests/ScrobblePostBuilder/TraktPost_EpisodeScrobblePostBuilder_Tests.cs create mode 100644 Source/Tests/Trakt.NET.PostBuilder.Tests/ScrobblePostBuilder/TraktPost_MovieScrobblePostBuilder_Exceptions_Tests.cs create mode 100644 Source/Tests/Trakt.NET.PostBuilder.Tests/ScrobblePostBuilder/TraktPost_MovieScrobblePostBuilder_Tests.cs diff --git a/Source/Tests/Trakt.NET.PostBuilder.Tests/ScrobblePostBuilder/TraktPost_EpisodeScrobblePostBuilder_Exceptions_Tests.cs b/Source/Tests/Trakt.NET.PostBuilder.Tests/ScrobblePostBuilder/TraktPost_EpisodeScrobblePostBuilder_Exceptions_Tests.cs new file mode 100644 index 0000000000..88a44760d2 --- /dev/null +++ b/Source/Tests/Trakt.NET.PostBuilder.Tests/ScrobblePostBuilder/TraktPost_EpisodeScrobblePostBuilder_Exceptions_Tests.cs @@ -0,0 +1,130 @@ +namespace TraktNet.PostBuilder.Tests +{ + using FluentAssertions; + using System; + using Trakt.NET.Tests.Utility.Traits; + using TraktNet.Objects.Get.Episodes; + using TraktNet.Objects.Get.Shows; + using TraktNet.Objects.Post.Scrobbles; + using Xunit; + + [TestCategory("PostBuilder")] + public partial class TraktPost_EpisodeScrobblePostBuilder_Tests + { + [Fact] + public void Test_TraktPost_EpisodeScrobblePostBuilder_WithEpisode_Episode_ArgumentNullException() + { + Func act = () => TraktPost.NewEpisodeScrobblePost() + .WithEpisode(null) + .Build(); + + act.Should().Throw(); + } + + [Fact] + public void Test_TraktPost_EpisodeScrobblePostBuilder_WithEpisode_EpisodeIds_ArgumentNullException() + { + Func act = () => TraktPost.NewEpisodeScrobblePost() + .WithEpisode(new TraktEpisode()) + .Build(); + + act.Should().Throw(); + } + + [Fact] + public void Test_TraktPost_EpisodeScrobblePostBuilder_WithEpisode_EpisodeIds_ArgumentException() + { + Func act = () => TraktPost.NewEpisodeScrobblePost() + .WithEpisode(new TraktEpisode { Ids = new TraktEpisodeIds() }) + .Build(); + + act.Should().Throw(); + } + + [Fact] + public void Test_TraktPost_EpisodeScrobblePostBuilder_WithEpisode_Show_ArgumentNullException() + { + Func act = () => TraktPost.NewEpisodeScrobblePost() + .WithEpisode(null, 0, 1) + .Build(); + + act.Should().Throw(); + } + + [Fact] + public void Test_TraktPost_EpisodeScrobblePostBuilder_WithEpisode_ShowIds_ArgumentNullException() + { + Func act = () => TraktPost.NewEpisodeScrobblePost() + .WithEpisode(new TraktShow(), 0, 1) + .Build(); + + act.Should().Throw(); + } + + [Fact] + public void Test_TraktPost_EpisodeScrobblePostBuilder_WithEpisode_ShowIds_ArgumentException() + { + Func act = () => TraktPost.NewEpisodeScrobblePost() + .WithEpisode(new TraktShow { Ids = new TraktShowIds() }, 0, 1) + .Build(); + + act.Should().Throw(); + } + + [Fact] + public void Test_TraktPost_EpisodeScrobblePostBuilder_WithEpisode_SeasonNumber_ArgumentOutOfRangeException() + { + Func act = () => TraktPost.NewEpisodeScrobblePost() + .WithEpisode(new TraktShow { Ids = new TraktShowIds { Trakt = 1 } }, -1, 1) + .Build(); + + act.Should().Throw(); + } + + [Fact] + public void Test_TraktPost_EpisodeScrobblePostBuilder_WithEpisode_EpisodeNumber_ArgumentOutOfRangeException() + { + Func act = () => TraktPost.NewEpisodeScrobblePost() + .WithEpisode(new TraktShow { Ids = new TraktShowIds { Trakt = 1 } }, 0, 0) + .Build(); + + act.Should().Throw(); + } + + [Fact] + public void Test_TraktPost_EpisodeScrobblePostBuilder_WithProgress_ArgumentOutOfRangeException() + { + Func act = () => TraktPost.NewEpisodeScrobblePost() + .WithProgress(-0.1f) + .Build(); + + act.Should().Throw(); + + act = () => TraktPost.NewEpisodeScrobblePost() + .WithProgress(100.1f) + .Build(); + + act.Should().Throw(); + } + + [Fact] + public void Test_TraktPost_EpisodeScrobblePostBuilder_WithAppVersion_ArgumentNullException() + { + Func act = () => TraktPost.NewEpisodeScrobblePost() + .WithAppVersion(null) + .Build(); + + act.Should().Throw(); + } + + [Fact] + public void Test_TraktPost_EpisodeScrobblePostBuilder_WithAppDate_ArgumentNullException() + { + Func act = () => TraktPost.NewEpisodeScrobblePost() + .WithAppDate(null) + .Build(); + + act.Should().Throw(); + } + } +} diff --git a/Source/Tests/Trakt.NET.PostBuilder.Tests/ScrobblePostBuilder/TraktPost_EpisodeScrobblePostBuilder_Tests.cs b/Source/Tests/Trakt.NET.PostBuilder.Tests/ScrobblePostBuilder/TraktPost_EpisodeScrobblePostBuilder_Tests.cs new file mode 100644 index 0000000000..5b80a83e45 --- /dev/null +++ b/Source/Tests/Trakt.NET.PostBuilder.Tests/ScrobblePostBuilder/TraktPost_EpisodeScrobblePostBuilder_Tests.cs @@ -0,0 +1,224 @@ +namespace TraktNet.PostBuilder.Tests +{ + using FluentAssertions; + using System; + using Trakt.NET.Tests.Utility.Traits; + using TraktNet.Exceptions; + using TraktNet.Objects.Post.Scrobbles; + using Xunit; + + [TestCategory("PostBuilder")] + public partial class TraktPost_EpisodeScrobblePostBuilder_Tests + { + [Fact] + public void Test_TraktPost_EpisodeScrobblePostBuilder_Empty_Build() + { + Func act = () => TraktPost.NewEpisodeScrobblePost().Build(); + act.Should().Throw(); + } + + [Fact] + public void Test_TraktPost_EpisodeScrobblePostBuilder_Scrobble_Episode() + { + ITraktEpisodeScrobblePost episodeScrobblePost = TraktPost.NewEpisodeScrobblePost() + .WithEpisode(TraktPost_Tests_Common_Data.EPISODE_1) + .WithProgress(TraktPost_Tests_Common_Data.PROGRESS) + .Build(); + + episodeScrobblePost.Should().NotBeNull(); + episodeScrobblePost.Episode.Should().NotBeNull(); + episodeScrobblePost.Episode.Ids.Should().NotBeNull(); + episodeScrobblePost.Episode.Ids.Trakt.Should().Be(TraktPost_Tests_Common_Data.EPISODE_1.Ids.Trakt); + episodeScrobblePost.Episode.Ids.Imdb.Should().Be(TraktPost_Tests_Common_Data.EPISODE_1.Ids.Imdb); + episodeScrobblePost.Episode.Ids.Tvdb.Should().Be(TraktPost_Tests_Common_Data.EPISODE_1.Ids.Tvdb); + episodeScrobblePost.Episode.Ids.TvRage.Should().Be(TraktPost_Tests_Common_Data.EPISODE_1.Ids.TvRage); + episodeScrobblePost.Episode.Ids.Tmdb.Should().Be(TraktPost_Tests_Common_Data.EPISODE_1.Ids.Tmdb); + episodeScrobblePost.Episode.SeasonNumber.Should().BeNull(); + episodeScrobblePost.Episode.Number.Should().BeNull(); + episodeScrobblePost.Show.Should().BeNull(); + episodeScrobblePost.Progress.Should().Be(TraktPost_Tests_Common_Data.PROGRESS); + episodeScrobblePost.AppVersion.Should().BeNull(); + episodeScrobblePost.AppDate.Should().BeNull(); + } + + [Fact] + public void Test_TraktPost_EpisodeScrobblePostBuilder_Scrobble_Episode_WithShow() + { + ITraktEpisodeScrobblePost episodeScrobblePost = TraktPost.NewEpisodeScrobblePost() + .WithEpisode(TraktPost_Tests_Common_Data.SHOW_1, 1, 1) + .WithProgress(TraktPost_Tests_Common_Data.PROGRESS) + .Build(); + + episodeScrobblePost.Should().NotBeNull(); + episodeScrobblePost.Episode.Should().NotBeNull(); + episodeScrobblePost.Episode.Ids.Should().BeNull(); + episodeScrobblePost.Episode.SeasonNumber.Should().Be(1); + episodeScrobblePost.Episode.Number.Should().Be(1); + episodeScrobblePost.Show.Should().NotBeNull(); + episodeScrobblePost.Show.Ids.Should().NotBeNull(); + episodeScrobblePost.Show.Ids.Trakt.Should().Be(TraktPost_Tests_Common_Data.SHOW_1.Ids.Trakt); + episodeScrobblePost.Show.Ids.Imdb.Should().Be(TraktPost_Tests_Common_Data.SHOW_1.Ids.Imdb); + episodeScrobblePost.Show.Ids.Tvdb.Should().Be(TraktPost_Tests_Common_Data.SHOW_1.Ids.Tvdb); + episodeScrobblePost.Show.Ids.TvRage.Should().Be(TraktPost_Tests_Common_Data.SHOW_1.Ids.TvRage); + episodeScrobblePost.Show.Ids.Tmdb.Should().Be(TraktPost_Tests_Common_Data.SHOW_1.Ids.Tmdb); + episodeScrobblePost.Progress.Should().Be(TraktPost_Tests_Common_Data.PROGRESS); + episodeScrobblePost.AppVersion.Should().BeNull(); + episodeScrobblePost.AppDate.Should().BeNull(); + } + + [Fact] + public void Test_TraktPost_EpisodeScrobblePostBuilder_Scrobble_Episode_AppVersion() + { + ITraktEpisodeScrobblePost episodeScrobblePost = TraktPost.NewEpisodeScrobblePost() + .WithEpisode(TraktPost_Tests_Common_Data.EPISODE_1) + .WithProgress(TraktPost_Tests_Common_Data.PROGRESS) + .WithAppVersion(TraktPost_Tests_Common_Data.APP_VERSION) + .Build(); + + episodeScrobblePost.Should().NotBeNull(); + episodeScrobblePost.Episode.Should().NotBeNull(); + episodeScrobblePost.Episode.Ids.Should().NotBeNull(); + episodeScrobblePost.Episode.Ids.Trakt.Should().Be(TraktPost_Tests_Common_Data.EPISODE_1.Ids.Trakt); + episodeScrobblePost.Episode.Ids.Imdb.Should().Be(TraktPost_Tests_Common_Data.EPISODE_1.Ids.Imdb); + episodeScrobblePost.Episode.Ids.Tvdb.Should().Be(TraktPost_Tests_Common_Data.EPISODE_1.Ids.Tvdb); + episodeScrobblePost.Episode.Ids.TvRage.Should().Be(TraktPost_Tests_Common_Data.EPISODE_1.Ids.TvRage); + episodeScrobblePost.Episode.Ids.Tmdb.Should().Be(TraktPost_Tests_Common_Data.EPISODE_1.Ids.Tmdb); + episodeScrobblePost.Episode.SeasonNumber.Should().BeNull(); + episodeScrobblePost.Episode.Number.Should().BeNull(); + episodeScrobblePost.Show.Should().BeNull(); + episodeScrobblePost.Progress.Should().Be(TraktPost_Tests_Common_Data.PROGRESS); + episodeScrobblePost.AppVersion.Should().Be(TraktPost_Tests_Common_Data.APP_VERSION); + episodeScrobblePost.AppDate.Should().BeNull(); + } + + [Fact] + public void Test_TraktPost_EpisodeScrobblePostBuilder_Scrobble_Episode_WithShow_AppVersion() + { + ITraktEpisodeScrobblePost episodeScrobblePost = TraktPost.NewEpisodeScrobblePost() + .WithEpisode(TraktPost_Tests_Common_Data.SHOW_1, 1, 1) + .WithProgress(TraktPost_Tests_Common_Data.PROGRESS) + .WithAppVersion(TraktPost_Tests_Common_Data.APP_VERSION) + .Build(); + + episodeScrobblePost.Should().NotBeNull(); + episodeScrobblePost.Episode.Should().NotBeNull(); + episodeScrobblePost.Episode.Ids.Should().BeNull(); + episodeScrobblePost.Episode.SeasonNumber.Should().Be(1); + episodeScrobblePost.Episode.Number.Should().Be(1); + episodeScrobblePost.Show.Should().NotBeNull(); + episodeScrobblePost.Show.Ids.Should().NotBeNull(); + episodeScrobblePost.Show.Ids.Trakt.Should().Be(TraktPost_Tests_Common_Data.SHOW_1.Ids.Trakt); + episodeScrobblePost.Show.Ids.Imdb.Should().Be(TraktPost_Tests_Common_Data.SHOW_1.Ids.Imdb); + episodeScrobblePost.Show.Ids.Tvdb.Should().Be(TraktPost_Tests_Common_Data.SHOW_1.Ids.Tvdb); + episodeScrobblePost.Show.Ids.TvRage.Should().Be(TraktPost_Tests_Common_Data.SHOW_1.Ids.TvRage); + episodeScrobblePost.Show.Ids.Tmdb.Should().Be(TraktPost_Tests_Common_Data.SHOW_1.Ids.Tmdb); + episodeScrobblePost.Progress.Should().Be(TraktPost_Tests_Common_Data.PROGRESS); + episodeScrobblePost.AppVersion.Should().Be(TraktPost_Tests_Common_Data.APP_VERSION); + episodeScrobblePost.AppDate.Should().BeNull(); + } + + [Fact] + public void Test_TraktPost_EpisodeScrobblePostBuilder_Scrobble_Episode_AppDate() + { + ITraktEpisodeScrobblePost episodeScrobblePost = TraktPost.NewEpisodeScrobblePost() + .WithEpisode(TraktPost_Tests_Common_Data.EPISODE_1) + .WithProgress(TraktPost_Tests_Common_Data.PROGRESS) + .WithAppDate(TraktPost_Tests_Common_Data.APP_DATE) + .Build(); + + episodeScrobblePost.Should().NotBeNull(); + episodeScrobblePost.Episode.Should().NotBeNull(); + episodeScrobblePost.Episode.Ids.Should().NotBeNull(); + episodeScrobblePost.Episode.Ids.Trakt.Should().Be(TraktPost_Tests_Common_Data.EPISODE_1.Ids.Trakt); + episodeScrobblePost.Episode.Ids.Imdb.Should().Be(TraktPost_Tests_Common_Data.EPISODE_1.Ids.Imdb); + episodeScrobblePost.Episode.Ids.Tvdb.Should().Be(TraktPost_Tests_Common_Data.EPISODE_1.Ids.Tvdb); + episodeScrobblePost.Episode.Ids.TvRage.Should().Be(TraktPost_Tests_Common_Data.EPISODE_1.Ids.TvRage); + episodeScrobblePost.Episode.Ids.Tmdb.Should().Be(TraktPost_Tests_Common_Data.EPISODE_1.Ids.Tmdb); + episodeScrobblePost.Episode.SeasonNumber.Should().BeNull(); + episodeScrobblePost.Episode.Number.Should().BeNull(); + episodeScrobblePost.Show.Should().BeNull(); + episodeScrobblePost.Progress.Should().Be(TraktPost_Tests_Common_Data.PROGRESS); + episodeScrobblePost.AppVersion.Should().BeNull(); + episodeScrobblePost.AppDate.Should().Be(TraktPost_Tests_Common_Data.APP_DATE); + } + + [Fact] + public void Test_TraktPost_EpisodeScrobblePostBuilder_Scrobble_Episode_WithShow_AppDate() + { + ITraktEpisodeScrobblePost episodeScrobblePost = TraktPost.NewEpisodeScrobblePost() + .WithEpisode(TraktPost_Tests_Common_Data.SHOW_1, 1, 1) + .WithProgress(TraktPost_Tests_Common_Data.PROGRESS) + .WithAppDate(TraktPost_Tests_Common_Data.APP_DATE) + .Build(); + + episodeScrobblePost.Should().NotBeNull(); + episodeScrobblePost.Episode.Should().NotBeNull(); + episodeScrobblePost.Episode.Ids.Should().BeNull(); + episodeScrobblePost.Episode.SeasonNumber.Should().Be(1); + episodeScrobblePost.Episode.Number.Should().Be(1); + episodeScrobblePost.Show.Should().NotBeNull(); + episodeScrobblePost.Show.Ids.Should().NotBeNull(); + episodeScrobblePost.Show.Ids.Trakt.Should().Be(TraktPost_Tests_Common_Data.SHOW_1.Ids.Trakt); + episodeScrobblePost.Show.Ids.Imdb.Should().Be(TraktPost_Tests_Common_Data.SHOW_1.Ids.Imdb); + episodeScrobblePost.Show.Ids.Tvdb.Should().Be(TraktPost_Tests_Common_Data.SHOW_1.Ids.Tvdb); + episodeScrobblePost.Show.Ids.TvRage.Should().Be(TraktPost_Tests_Common_Data.SHOW_1.Ids.TvRage); + episodeScrobblePost.Show.Ids.Tmdb.Should().Be(TraktPost_Tests_Common_Data.SHOW_1.Ids.Tmdb); + episodeScrobblePost.Progress.Should().Be(TraktPost_Tests_Common_Data.PROGRESS); + episodeScrobblePost.AppVersion.Should().BeNull(); + episodeScrobblePost.AppDate.Should().Be(TraktPost_Tests_Common_Data.APP_DATE); + } + + [Fact] + public void Test_TraktPost_EpisodeScrobblePostBuilder_Complete() + { + ITraktEpisodeScrobblePost episodeScrobblePost = TraktPost.NewEpisodeScrobblePost() + .WithEpisode(TraktPost_Tests_Common_Data.EPISODE_1) + .WithProgress(TraktPost_Tests_Common_Data.PROGRESS) + .WithAppVersion(TraktPost_Tests_Common_Data.APP_VERSION) + .WithAppDate(TraktPost_Tests_Common_Data.APP_DATE) + .Build(); + + episodeScrobblePost.Should().NotBeNull(); + episodeScrobblePost.Episode.Should().NotBeNull(); + episodeScrobblePost.Episode.Ids.Should().NotBeNull(); + episodeScrobblePost.Episode.Ids.Trakt.Should().Be(TraktPost_Tests_Common_Data.EPISODE_1.Ids.Trakt); + episodeScrobblePost.Episode.Ids.Imdb.Should().Be(TraktPost_Tests_Common_Data.EPISODE_1.Ids.Imdb); + episodeScrobblePost.Episode.Ids.Tvdb.Should().Be(TraktPost_Tests_Common_Data.EPISODE_1.Ids.Tvdb); + episodeScrobblePost.Episode.Ids.TvRage.Should().Be(TraktPost_Tests_Common_Data.EPISODE_1.Ids.TvRage); + episodeScrobblePost.Episode.Ids.Tmdb.Should().Be(TraktPost_Tests_Common_Data.EPISODE_1.Ids.Tmdb); + episodeScrobblePost.Episode.SeasonNumber.Should().BeNull(); + episodeScrobblePost.Episode.Number.Should().BeNull(); + episodeScrobblePost.Show.Should().BeNull(); + episodeScrobblePost.Progress.Should().Be(TraktPost_Tests_Common_Data.PROGRESS); + episodeScrobblePost.AppVersion.Should().Be(TraktPost_Tests_Common_Data.APP_VERSION); + episodeScrobblePost.AppDate.Should().Be(TraktPost_Tests_Common_Data.APP_DATE); + } + + [Fact] + public void Test_TraktPost_EpisodeScrobblePostBuilder_Complete_WithShow() + { + ITraktEpisodeScrobblePost episodeScrobblePost = TraktPost.NewEpisodeScrobblePost() + .WithEpisode(TraktPost_Tests_Common_Data.SHOW_1, 1, 1) + .WithProgress(TraktPost_Tests_Common_Data.PROGRESS) + .WithAppVersion(TraktPost_Tests_Common_Data.APP_VERSION) + .WithAppDate(TraktPost_Tests_Common_Data.APP_DATE) + .Build(); + + episodeScrobblePost.Should().NotBeNull(); + episodeScrobblePost.Episode.Should().NotBeNull(); + episodeScrobblePost.Episode.Ids.Should().BeNull(); + episodeScrobblePost.Episode.SeasonNumber.Should().Be(1); + episodeScrobblePost.Episode.Number.Should().Be(1); + episodeScrobblePost.Show.Should().NotBeNull(); + episodeScrobblePost.Show.Ids.Should().NotBeNull(); + episodeScrobblePost.Show.Ids.Trakt.Should().Be(TraktPost_Tests_Common_Data.SHOW_1.Ids.Trakt); + episodeScrobblePost.Show.Ids.Imdb.Should().Be(TraktPost_Tests_Common_Data.SHOW_1.Ids.Imdb); + episodeScrobblePost.Show.Ids.Tvdb.Should().Be(TraktPost_Tests_Common_Data.SHOW_1.Ids.Tvdb); + episodeScrobblePost.Show.Ids.TvRage.Should().Be(TraktPost_Tests_Common_Data.SHOW_1.Ids.TvRage); + episodeScrobblePost.Show.Ids.Tmdb.Should().Be(TraktPost_Tests_Common_Data.SHOW_1.Ids.Tmdb); + episodeScrobblePost.Progress.Should().Be(TraktPost_Tests_Common_Data.PROGRESS); + episodeScrobblePost.AppVersion.Should().Be(TraktPost_Tests_Common_Data.APP_VERSION); + episodeScrobblePost.AppDate.Should().Be(TraktPost_Tests_Common_Data.APP_DATE); + } + } +} diff --git a/Source/Tests/Trakt.NET.PostBuilder.Tests/ScrobblePostBuilder/TraktPost_MovieScrobblePostBuilder_Exceptions_Tests.cs b/Source/Tests/Trakt.NET.PostBuilder.Tests/ScrobblePostBuilder/TraktPost_MovieScrobblePostBuilder_Exceptions_Tests.cs new file mode 100644 index 0000000000..0822fb5e1d --- /dev/null +++ b/Source/Tests/Trakt.NET.PostBuilder.Tests/ScrobblePostBuilder/TraktPost_MovieScrobblePostBuilder_Exceptions_Tests.cs @@ -0,0 +1,79 @@ +namespace TraktNet.PostBuilder.Tests +{ + using FluentAssertions; + using System; + using Trakt.NET.Tests.Utility.Traits; + using TraktNet.Objects.Get.Movies; + using TraktNet.Objects.Post.Scrobbles; + using Xunit; + + [TestCategory("PostBuilder")] + public partial class TraktPost_MovieScrobblePostBuilder_Tests + { + [Fact] + public void Test_TraktPost_MovieScrobblePostBuilder_WithMovie_Movie_ArgumentNullException() + { + Func act = () => TraktPost.NewMovieScrobblePost() + .WithMovie(null) + .Build(); + + act.Should().Throw(); + } + + [Fact] + public void Test_TraktPost_MovieScrobblePostBuilder_WithMovie_MovieIds_ArgumentNullException() + { + Func act = () => TraktPost.NewMovieScrobblePost() + .WithMovie(new TraktMovie()) + .Build(); + + act.Should().Throw(); + } + + [Fact] + public void Test_TraktPost_MovieScrobblePostBuilder_WithMovie_MovieIds_ArgumentException() + { + Func act = () => TraktPost.NewMovieScrobblePost() + .WithMovie(new TraktMovie { Ids = new TraktMovieIds() }) + .Build(); + + act.Should().Throw(); + } + + [Fact] + public void Test_TraktPost_MovieScrobblePostBuilder_WithProgress_ArgumentOutOfRangeException() + { + Func act = () => TraktPost.NewMovieScrobblePost() + .WithProgress(-0.1f) + .Build(); + + act.Should().Throw(); + + act = () => TraktPost.NewMovieScrobblePost() + .WithProgress(100.1f) + .Build(); + + act.Should().Throw(); + } + + [Fact] + public void Test_TraktPost_MovieScrobblePostBuilder_WithAppVersion_ArgumentNullException() + { + Func act = () => TraktPost.NewMovieScrobblePost() + .WithAppVersion(null) + .Build(); + + act.Should().Throw(); + } + + [Fact] + public void Test_TraktPost_MovieScrobblePostBuilder_WithAppDate_ArgumentNullException() + { + Func act = () => TraktPost.NewMovieScrobblePost() + .WithAppDate(null) + .Build(); + + act.Should().Throw(); + } + } +} diff --git a/Source/Tests/Trakt.NET.PostBuilder.Tests/ScrobblePostBuilder/TraktPost_MovieScrobblePostBuilder_Tests.cs b/Source/Tests/Trakt.NET.PostBuilder.Tests/ScrobblePostBuilder/TraktPost_MovieScrobblePostBuilder_Tests.cs new file mode 100644 index 0000000000..f8f783863b --- /dev/null +++ b/Source/Tests/Trakt.NET.PostBuilder.Tests/ScrobblePostBuilder/TraktPost_MovieScrobblePostBuilder_Tests.cs @@ -0,0 +1,104 @@ +namespace TraktNet.PostBuilder.Tests +{ + using FluentAssertions; + using System; + using Trakt.NET.Tests.Utility.Traits; + using TraktNet.Exceptions; + using TraktNet.Objects.Post.Scrobbles; + using Xunit; + + [TestCategory("PostBuilder")] + public partial class TraktPost_MovieScrobblePostBuilder_Tests + { + [Fact] + public void Test_TraktPost_MovieScrobblePostBuilder_Empty_Build() + { + Func act = () => TraktPost.NewMovieScrobblePost().Build(); + act.Should().Throw(); + } + + [Fact] + public void Test_TraktPost_MovieScrobblePostBuilder_Scrobble_Movie() + { + ITraktMovieScrobblePost movieScrobblePost = TraktPost.NewMovieScrobblePost() + .WithMovie(TraktPost_Tests_Common_Data.MOVIE_1) + .WithProgress(TraktPost_Tests_Common_Data.PROGRESS) + .Build(); + + movieScrobblePost.Should().NotBeNull(); + movieScrobblePost.Movie.Should().NotBeNull(); + movieScrobblePost.Movie.Ids.Should().NotBeNull(); + movieScrobblePost.Movie.Ids.Trakt.Should().Be(TraktPost_Tests_Common_Data.MOVIE_1.Ids.Trakt); + movieScrobblePost.Movie.Ids.Slug.Should().Be(TraktPost_Tests_Common_Data.MOVIE_1.Ids.Slug); + movieScrobblePost.Movie.Ids.Imdb.Should().Be(TraktPost_Tests_Common_Data.MOVIE_1.Ids.Imdb); + movieScrobblePost.Movie.Ids.Tmdb.Should().Be(TraktPost_Tests_Common_Data.MOVIE_1.Ids.Tmdb); + movieScrobblePost.Progress.Should().Be(TraktPost_Tests_Common_Data.PROGRESS); + movieScrobblePost.AppVersion.Should().BeNull(); + movieScrobblePost.AppDate.Should().BeNull(); + } + + [Fact] + public void Test_TraktPost_MovieScrobblePostBuilder_Scrobble_Movie_AppVersion() + { + ITraktMovieScrobblePost movieScrobblePost = TraktPost.NewMovieScrobblePost() + .WithMovie(TraktPost_Tests_Common_Data.MOVIE_1) + .WithProgress(TraktPost_Tests_Common_Data.PROGRESS) + .WithAppVersion(TraktPost_Tests_Common_Data.APP_VERSION) + .Build(); + + movieScrobblePost.Should().NotBeNull(); + movieScrobblePost.Movie.Should().NotBeNull(); + movieScrobblePost.Movie.Ids.Should().NotBeNull(); + movieScrobblePost.Movie.Ids.Trakt.Should().Be(TraktPost_Tests_Common_Data.MOVIE_1.Ids.Trakt); + movieScrobblePost.Movie.Ids.Slug.Should().Be(TraktPost_Tests_Common_Data.MOVIE_1.Ids.Slug); + movieScrobblePost.Movie.Ids.Imdb.Should().Be(TraktPost_Tests_Common_Data.MOVIE_1.Ids.Imdb); + movieScrobblePost.Movie.Ids.Tmdb.Should().Be(TraktPost_Tests_Common_Data.MOVIE_1.Ids.Tmdb); + movieScrobblePost.Progress.Should().Be(TraktPost_Tests_Common_Data.PROGRESS); + movieScrobblePost.AppVersion.Should().Be(TraktPost_Tests_Common_Data.APP_VERSION); + movieScrobblePost.AppDate.Should().BeNull(); + } + + [Fact] + public void Test_TraktPost_MovieScrobblePostBuilder_Scrobble_Movie_AppDate() + { + ITraktMovieScrobblePost movieScrobblePost = TraktPost.NewMovieScrobblePost() + .WithMovie(TraktPost_Tests_Common_Data.MOVIE_1) + .WithProgress(TraktPost_Tests_Common_Data.PROGRESS) + .WithAppDate(TraktPost_Tests_Common_Data.APP_DATE) + .Build(); + + movieScrobblePost.Should().NotBeNull(); + movieScrobblePost.Movie.Should().NotBeNull(); + movieScrobblePost.Movie.Ids.Should().NotBeNull(); + movieScrobblePost.Movie.Ids.Trakt.Should().Be(TraktPost_Tests_Common_Data.MOVIE_1.Ids.Trakt); + movieScrobblePost.Movie.Ids.Slug.Should().Be(TraktPost_Tests_Common_Data.MOVIE_1.Ids.Slug); + movieScrobblePost.Movie.Ids.Imdb.Should().Be(TraktPost_Tests_Common_Data.MOVIE_1.Ids.Imdb); + movieScrobblePost.Movie.Ids.Tmdb.Should().Be(TraktPost_Tests_Common_Data.MOVIE_1.Ids.Tmdb); + movieScrobblePost.Progress.Should().Be(TraktPost_Tests_Common_Data.PROGRESS); + movieScrobblePost.AppVersion.Should().BeNull(); + movieScrobblePost.AppDate.Should().Be(TraktPost_Tests_Common_Data.APP_DATE); + } + + [Fact] + public void Test_TraktPost_MovieScrobblePostBuilder_Complete() + { + ITraktMovieScrobblePost movieScrobblePost = TraktPost.NewMovieScrobblePost() + .WithMovie(TraktPost_Tests_Common_Data.MOVIE_1) + .WithProgress(TraktPost_Tests_Common_Data.PROGRESS) + .WithAppVersion(TraktPost_Tests_Common_Data.APP_VERSION) + .WithAppDate(TraktPost_Tests_Common_Data.APP_DATE) + .Build(); + + movieScrobblePost.Should().NotBeNull(); + movieScrobblePost.Movie.Should().NotBeNull(); + movieScrobblePost.Movie.Ids.Should().NotBeNull(); + movieScrobblePost.Movie.Ids.Trakt.Should().Be(TraktPost_Tests_Common_Data.MOVIE_1.Ids.Trakt); + movieScrobblePost.Movie.Ids.Slug.Should().Be(TraktPost_Tests_Common_Data.MOVIE_1.Ids.Slug); + movieScrobblePost.Movie.Ids.Imdb.Should().Be(TraktPost_Tests_Common_Data.MOVIE_1.Ids.Imdb); + movieScrobblePost.Movie.Ids.Tmdb.Should().Be(TraktPost_Tests_Common_Data.MOVIE_1.Ids.Tmdb); + movieScrobblePost.Progress.Should().Be(TraktPost_Tests_Common_Data.PROGRESS); + movieScrobblePost.AppVersion.Should().Be(TraktPost_Tests_Common_Data.APP_VERSION); + movieScrobblePost.AppDate.Should().Be(TraktPost_Tests_Common_Data.APP_DATE); + } + } +} diff --git a/Source/Tests/Trakt.NET.PostBuilder.Tests/TraktPost_Tests_Common_Data.cs b/Source/Tests/Trakt.NET.PostBuilder.Tests/TraktPost_Tests_Common_Data.cs index 87ed1a276c..fa6ac87224 100644 --- a/Source/Tests/Trakt.NET.PostBuilder.Tests/TraktPost_Tests_Common_Data.cs +++ b/Source/Tests/Trakt.NET.PostBuilder.Tests/TraktPost_Tests_Common_Data.cs @@ -28,6 +28,7 @@ internal static class TraktPost_Tests_Common_Data internal static readonly string APP_DATE = "app date"; internal static readonly string FOURSQUARE_VENUE_ID = "foursquare venue id"; internal static readonly string FOURSQUARE_VENUE_NAME = "foursquare venue name"; + internal static readonly float PROGRESS = 0.75f; internal static readonly ITraktMetadata METADATA = new TraktMetadata {