public async Task Test_EpisodeArrayJsonReader_ReadArray_From_Stream_Minimal_Complete()
        {
            var traktJsonReader = new EpisodeArrayJsonReader();

            using (var stream = MINIMAL_JSON_COMPLETE.ToStream())
            {
                var traktEpisodes = await traktJsonReader.ReadArrayAsync(stream);

                traktEpisodes.Should().NotBeNull().And.NotBeEmpty().And.HaveCount(2);

                var episodes = traktEpisodes.ToArray();

                episodes[0].Should().NotBeNull();
                episodes[0].SeasonNumber.Should().Be(1);
                episodes[0].Number.Should().Be(1);
                episodes[0].Title.Should().Be("Winter Is Coming");
                episodes[0].Ids.Should().NotBeNull();
                episodes[0].Ids.Trakt.Should().Be(73640U);
                episodes[0].Ids.Tvdb.Should().Be(3254641U);
                episodes[0].Ids.Imdb.Should().Be("tt1480055");
                episodes[0].Ids.Tmdb.Should().Be(63056U);
                episodes[0].Ids.TvRage.Should().Be(1065008299U);
                episodes[0].NumberAbsolute.Should().NotHaveValue();
                episodes[0].Overview.Should().BeNullOrEmpty();
                episodes[0].Runtime.Should().NotHaveValue();
                episodes[0].Rating.Should().NotHaveValue();
                episodes[0].Votes.Should().NotHaveValue();
                episodes[0].FirstAired.Should().NotHaveValue();
                episodes[0].UpdatedAt.Should().NotHaveValue();
                episodes[0].AvailableTranslationLanguageCodes.Should().BeNull();
                episodes[0].Translations.Should().BeNull();

                episodes[1].Should().NotBeNull();
                episodes[1].SeasonNumber.Should().Be(1);
                episodes[1].Number.Should().Be(2);
                episodes[1].Title.Should().Be("The Kingsroad");
                episodes[1].Ids.Should().NotBeNull();
                episodes[1].Ids.Trakt.Should().Be(73641U);
                episodes[1].Ids.Tvdb.Should().Be(3436411U);
                episodes[1].Ids.Imdb.Should().Be("tt1668746");
                episodes[1].Ids.Tmdb.Should().Be(63057U);
                episodes[1].Ids.TvRage.Should().Be(1065023912U);
                episodes[1].NumberAbsolute.Should().NotHaveValue();
                episodes[1].Overview.Should().BeNullOrEmpty();
                episodes[1].Runtime.Should().NotHaveValue();
                episodes[1].Rating.Should().NotHaveValue();
                episodes[1].Votes.Should().NotHaveValue();
                episodes[1].FirstAired.Should().NotHaveValue();
                episodes[1].UpdatedAt.Should().NotHaveValue();
                episodes[1].AvailableTranslationLanguageCodes.Should().BeNull();
                episodes[1].Translations.Should().BeNull();
            }
        }
        public async Task Test_SeasonArrayJsonReader_ReadArray_From_Stream_Minimal_Complete()
        {
            var traktJsonReader = new ArrayJsonReader <ITraktSeason>();

            using (var stream = MINIMAL_JSON_COMPLETE.ToStream())
            {
                var traktSeasons = await traktJsonReader.ReadArrayAsync(stream);

                traktSeasons.Should().NotBeNull().And.NotBeEmpty().And.HaveCount(2);

                var seasons = traktSeasons.ToArray();

                seasons[0].Should().NotBeNull();
                seasons[0].Number.Should().Be(1);
                seasons[0].Ids.Should().NotBeNull();
                seasons[0].Ids.Trakt.Should().Be(61430U);
                seasons[0].Ids.Tvdb.Should().Be(279121U);
                seasons[0].Ids.Tmdb.Should().Be(60523U);
                seasons[0].Ids.TvRage.Should().Be(36939U);
                seasons[0].Rating.Should().NotHaveValue();
                seasons[0].Votes.Should().NotHaveValue();
                seasons[0].TotalEpisodesCount.Should().NotHaveValue();
                seasons[0].AiredEpisodesCount.Should().NotHaveValue();
                seasons[0].Overview.Should().BeNullOrEmpty();
                seasons[0].FirstAired.Should().NotHaveValue();
                seasons[0].Network.Should().BeNull();
                seasons[0].Episodes.Should().BeNull();

                seasons[1].Should().NotBeNull();
                seasons[1].Number.Should().Be(2);
                seasons[1].Ids.Should().NotBeNull();
                seasons[1].Ids.Trakt.Should().Be(3964U);
                seasons[1].Ids.Tvdb.Should().Be(473271U);
                seasons[1].Ids.Tmdb.Should().Be(3625U);
                seasons[1].Ids.TvRage.Should().Be(36940U);
                seasons[1].Rating.Should().NotHaveValue();
                seasons[1].Votes.Should().NotHaveValue();
                seasons[1].TotalEpisodesCount.Should().NotHaveValue();
                seasons[1].AiredEpisodesCount.Should().NotHaveValue();
                seasons[1].Overview.Should().BeNullOrEmpty();
                seasons[1].FirstAired.Should().NotHaveValue();
                seasons[1].Network.Should().BeNull();
                seasons[1].Episodes.Should().BeNull();
            }
        }
        public async Task Test_PersonObjectJsonReader_ReadObject_From_Stream_Minimal_Complete()
        {
            var traktJsonReader = new PersonObjectJsonReader();

            using (var stream = MINIMAL_JSON_COMPLETE.ToStream())
            {
                var traktPerson = await traktJsonReader.ReadObjectAsync(stream);

                traktPerson.Should().NotBeNull();
                traktPerson.Name.Should().Be("Bryan Cranston");
                traktPerson.Ids.Should().NotBeNull();
                traktPerson.Ids.Trakt.Should().Be(297737U);
                traktPerson.Ids.Slug.Should().Be("bryan-cranston");
                traktPerson.Ids.Imdb.Should().Be("nm0186505");
                traktPerson.Ids.Tmdb.Should().Be(17419U);
                traktPerson.Ids.TvRage.Should().Be(1797U);
                traktPerson.Biography.Should().BeNullOrEmpty();
                traktPerson.Birthday.Should().NotHaveValue();
                traktPerson.Death.Should().NotHaveValue();
                traktPerson.Age.Should().Be(0);
                traktPerson.Birthplace.Should().BeNullOrEmpty();
                traktPerson.Homepage.Should().BeNullOrEmpty();
            }
        }