public async Task Test_SyncRecommendationsPostShowObjectJsonWriter_WriteObject_JsonWriter_Complete()
        {
            ITraktSyncRecommendationsPostShow traktSyncRecommendationsPostShow = new TraktSyncRecommendationsPostShow
            {
                Title = "Breaking Bad",
                Year  = 2008,
                Ids   = new TraktShowIds
                {
                    Trakt = 1,
                    Slug  = "breaking-bad",
                    Tvdb  = 81189,
                    Imdb  = "tt0903747",
                    Tmdb  = 1396
                },
                Notes = "I AM THE DANGER!"
            };

            using var stringWriter = new StringWriter();
            using var jsonWriter   = new JsonTextWriter(stringWriter);
            var traktJsonWriter = new SyncRecommendationsPostShowObjectJsonWriter();
            await traktJsonWriter.WriteObjectAsync(jsonWriter, traktSyncRecommendationsPostShow);

            stringWriter.ToString().Should().Be(@"{""title"":""Breaking Bad"",""year"":2008," +
                                                @"""ids"":{""trakt"":1,""slug"":""breaking-bad""," +
                                                @"""tvdb"":81189,""imdb"":""tt0903747"",""tmdb"":1396}," +
                                                @"""notes"":""I AM THE DANGER!""}");
        }
 public async Task Test_SyncRecommendationsPostShowObjectJsonWriter_WriteObject_JsonWriter_Exceptions()
 {
     var traktJsonWriter = new SyncRecommendationsPostShowObjectJsonWriter();
     ITraktSyncRecommendationsPostShow traktSyncRecommendationsPostShow = new TraktSyncRecommendationsPostShow();
     Func <Task> action = () => traktJsonWriter.WriteObjectAsync(default(JsonTextWriter), traktSyncRecommendationsPostShow);
     await action.Should().ThrowAsync <ArgumentNullException>();
 }
        public void Test_TraktSyncRecommendationsPostShow_Default_Constructor()
        {
            var syncRecommendationsPostShow = new TraktSyncRecommendationsPostShow();

            syncRecommendationsPostShow.Title.Should().BeNull();
            syncRecommendationsPostShow.Year.Should().BeNull();
            syncRecommendationsPostShow.Ids.Should().BeNull();
            syncRecommendationsPostShow.Notes.Should().BeNull();
        }
        private ITraktSyncRecommendationsPostShow CreateSyncRecommendationsPostShow(ITraktShow show, string notes = null)
        {
            var syncRecommendationsPostShow = new TraktSyncRecommendationsPostShow
            {
                Ids   = show.Ids,
                Title = show.Title,
                Year  = show.Year
            };

            if (!string.IsNullOrWhiteSpace(notes))
            {
                syncRecommendationsPostShow.Notes = notes;
            }

            return(syncRecommendationsPostShow);
        }
        public override async Task <ITraktSyncRecommendationsPostShow> ReadObjectAsync(JsonTextReader jsonReader, CancellationToken cancellationToken = default)
        {
            CheckJsonTextReader(jsonReader);

            if (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.StartObject)
            {
                ITraktSyncRecommendationsPostShow traktSyncRecommendationsPostShow = new TraktSyncRecommendationsPostShow();
                var showIdsObjectJsonReader = new ShowIdsObjectJsonReader();

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

                    switch (propertyName)
                    {
                    case JsonProperties.PROPERTY_NAME_TITLE:
                        traktSyncRecommendationsPostShow.Title = await jsonReader.ReadAsStringAsync(cancellationToken);

                        break;

                    case JsonProperties.PROPERTY_NAME_YEAR:
                        traktSyncRecommendationsPostShow.Year = await jsonReader.ReadAsInt32Async(cancellationToken);

                        break;

                    case JsonProperties.PROPERTY_NAME_IDS:
                        traktSyncRecommendationsPostShow.Ids = await showIdsObjectJsonReader.ReadObjectAsync(jsonReader, cancellationToken);

                        break;

                    case JsonProperties.PROPERTY_NAME_NOTES:
                        traktSyncRecommendationsPostShow.Notes = await jsonReader.ReadAsStringAsync(cancellationToken);

                        break;

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

                        break;
                    }
                }

                return(traktSyncRecommendationsPostShow);
            }

            return(await Task.FromResult(default(ITraktSyncRecommendationsPostShow)));
        }