public async Task Test_TraktCommentsModule_PostEpisodeComment_ArgumentExceptions()
        {
            ITraktEpisode episode = new TraktEpisode
            {
                Ids = new TraktEpisodeIds
                {
                    Trakt  = 73482,
                    Tvdb   = 349232,
                    Imdb   = "tt0959621",
                    Tmdb   = 62085,
                    TvRage = 637041
                }
            };

            ITraktEpisodeCommentPost episodeCommentPost = new TraktEpisodeCommentPost
            {
                Episode = episode,
                Comment = COMMENT_TEXT
            };

            string postJson = await TestUtility.SerializeObject(episodeCommentPost);

            postJson.Should().NotBeNullOrEmpty();

            TraktClient client = TestUtility.GetOAuthMockClient(POST_EPISODE_COMMENT_URI, postJson, COMMENT_POST_RESPONSE_JSON);

            Func <Task <TraktResponse <ITraktCommentPostResponse> > > act = () => client.Comments.PostEpisodeCommentAsync(null, COMMENT_TEXT);

            act.Should().Throw <ArgumentNullException>();

            episode.Ids = null;

            act = () => client.Comments.PostEpisodeCommentAsync(episode, COMMENT_TEXT);
            act.Should().Throw <ArgumentNullException>();

            episode.Ids = new TraktEpisodeIds();

            act = () => client.Comments.PostEpisodeCommentAsync(episode, COMMENT_TEXT);
            act.Should().Throw <ArgumentException>();

            episode.Ids = new TraktEpisodeIds
            {
                Trakt  = 73482,
                Tvdb   = 349232,
                Imdb   = "tt0959621",
                Tmdb   = 62085,
                TvRage = 637041
            };

            act = () => client.Comments.PostEpisodeCommentAsync(episode, null);
            act.Should().Throw <ArgumentException>();

            act = () => client.Comments.PostEpisodeCommentAsync(episode, string.Empty);
            act.Should().Throw <ArgumentException>();

            const string comment = "one two three four";

            act = () => client.Comments.PostEpisodeCommentAsync(episode, comment);
            act.Should().Throw <ArgumentOutOfRangeException>();
        }
Beispiel #2
0
        public override async Task <ITraktEpisodeCommentPost> ReadObjectAsync(JsonTextReader jsonReader, CancellationToken cancellationToken = default)
        {
            if (jsonReader == null)
            {
                return(await Task.FromResult(default(ITraktEpisodeCommentPost)));
            }

            if (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.StartObject)
            {
                var sharingReader = new SharingObjectJsonReader();
                var episodeReader = new EpisodeObjectJsonReader();
                ITraktEpisodeCommentPost episodeCommentPost = new TraktEpisodeCommentPost();

                while (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.PropertyName)
                {
                    var propertyName = jsonReader.Value.ToString();

                    switch (propertyName)
                    {
                    case JsonProperties.COMMENT_POST_PROPERTY_NAME_COMMENT:
                        episodeCommentPost.Comment = await jsonReader.ReadAsStringAsync(cancellationToken);

                        break;

                    case JsonProperties.COMMENT_POST_PROPERTY_NAME_SPOILER:
                    {
                        bool?value = await jsonReader.ReadAsBooleanAsync(cancellationToken);

                        if (value.HasValue)
                        {
                            episodeCommentPost.Spoiler = value.Value;
                        }

                        break;
                    }

                    case JsonProperties.COMMENT_POST_PROPERTY_NAME_SHARING:
                        episodeCommentPost.Sharing = await sharingReader.ReadObjectAsync(jsonReader, cancellationToken);

                        break;

                    case JsonProperties.EPISODE_COMMENT_POST_PROPERTY_NAME_EPISODE:
                        episodeCommentPost.Episode = await episodeReader.ReadObjectAsync(jsonReader, cancellationToken);

                        break;

                    default:
                        await JsonReaderHelper.ReadAndIgnoreInvalidContentAsync(jsonReader, cancellationToken);

                        break;
                    }
                }

                return(episodeCommentPost);
            }

            return(await Task.FromResult(default(ITraktEpisodeCommentPost)));
        }
        public void TestTraktEpisodeCommentPostDefaultConstructor()
        {
            var episodeComment = new TraktEpisodeCommentPost();

            episodeComment.Comment.Should().BeNullOrEmpty();
            episodeComment.Spoiler.Should().NotHaveValue();
            episodeComment.Sharing.Should().BeNull();
            episodeComment.Episode.Should().BeNull();
        }
        public async Task Test_TraktCommentsModule_PostEpisodeComment_Complete()
        {
            ITraktEpisodeCommentPost episodeCommentPost = new TraktEpisodeCommentPost
            {
                Episode = Episode,
                Comment = COMMENT_TEXT,
                Spoiler = SPOILER,
                Sharing = SHARING
            };

            string postJson = await TestUtility.SerializeObject(episodeCommentPost);

            postJson.Should().NotBeNullOrEmpty();

            TraktClient client = TestUtility.GetOAuthMockClient(POST_EPISODE_COMMENT_URI, postJson, COMMENT_POST_RESPONSE_JSON);
            TraktResponse <ITraktCommentPostResponse> response = await client.Comments.PostEpisodeCommentAsync(Episode, COMMENT_TEXT, SPOILER, SHARING);

            response.Should().NotBeNull();
            response.IsSuccess.Should().BeTrue();
            response.HasValue.Should().BeTrue();
            response.Value.Should().NotBeNull();

            ITraktCommentPostResponse responseValue = response.Value;

            responseValue.Id.Should().Be(COMMENT_ID);
            responseValue.ParentId.Should().Be(0U);
            responseValue.CreatedAt.Should().Be(DateTime.Parse("2014-08-04T06:46:01.996Z").ToUniversalTime());
            responseValue.Comment.Should().Be("Oh, I wasn't really listening.");
            responseValue.Spoiler.Should().BeFalse();
            responseValue.Review.Should().BeFalse();
            responseValue.Replies.Should().Be(0);
            responseValue.Likes.Should().Be(0);
            responseValue.UserRating.Should().NotHaveValue();
            responseValue.User.Should().NotBeNull();
            responseValue.User.Username.Should().Be("sean");
            responseValue.User.IsPrivate.Should().BeFalse();
            responseValue.User.Name.Should().Be("Sean Rudford");
            responseValue.User.IsVIP.Should().BeTrue();
            responseValue.User.IsVIP_EP.Should().BeFalse();
            responseValue.Sharing.Should().NotBeNull();
            responseValue.Sharing.Facebook.Should().BeTrue();
            responseValue.Sharing.Twitter.Should().BeTrue();
            responseValue.Sharing.Tumblr.Should().BeFalse();
            responseValue.Sharing.Medium.Should().BeTrue();
        }
        public void TestTraktEpisodeCommentPostWriteJson()
        {
            var comment = "this is a comment";
            var spoiler = false;
            var sharing = new TraktSharing {
                Facebook = true, Twitter = false, Tumblr = true
            };

            var episodeTraktId = 16U;

            var episode = new TraktEpisode {
                Ids = new TraktEpisodeIds {
                    Trakt = episodeTraktId
                }
            };

            var episodeComment = new TraktEpisodeCommentPost
            {
                Comment = comment,
                Spoiler = spoiler,
                Sharing = sharing,
                Episode = episode
            };

            var strJson = JsonConvert.SerializeObject(episodeComment);

            strJson.Should().NotBeNullOrEmpty();

            var episodeCommentFromJson = JsonConvert.DeserializeObject <TraktEpisodeCommentPost>(strJson);

            episodeCommentFromJson.Should().NotBeNull();
            episodeCommentFromJson.Comment.Should().Be(comment);
            episodeCommentFromJson.Spoiler.Should().Be(spoiler);
            episodeCommentFromJson.Sharing.Should().NotBeNull();
            episodeCommentFromJson.Sharing.Facebook.Should().BeTrue();
            episodeCommentFromJson.Sharing.Twitter.Should().BeFalse();
            episodeCommentFromJson.Sharing.Tumblr.Should().BeTrue();

            episodeCommentFromJson.Episode.Should().NotBeNull();
            episodeCommentFromJson.Episode.Ids.Should().NotBeNull();
            episodeCommentFromJson.Episode.Ids.Trakt.Should().Be(episodeTraktId);
        }