public async Task Test_CrewObjectJsonWriter_WriteObject_JsonWriter_Exceptions()
 {
     var         traktJsonWriter = new CrewObjectJsonWriter();
     ITraktCrew  traktCrew       = new TraktCrew();
     Func <Task> action          = () => traktJsonWriter.WriteObjectAsync(default(JsonTextWriter), traktCrew);
     await action.Should().ThrowAsync <ArgumentNullException>();
 }
Ejemplo n.º 2
0
        public void Test_CrewObjectJsonWriter_WriteObject_StringWriter_Exceptions()
        {
            var                   traktJsonWriter = new CrewObjectJsonWriter();
            ITraktCrew            traktCrew       = new TraktCrew();
            Func <Task <string> > action          = () => traktJsonWriter.WriteObjectAsync(default(StringWriter), traktCrew);

            action.Should().Throw <ArgumentNullException>();
        }
Ejemplo n.º 3
0
        public async Task Test_CrewObjectJsonWriter_WriteObject_StringWriter_Empty()
        {
            ITraktCrew traktCrew = new TraktCrew();

            using (var stringWriter = new StringWriter())
            {
                var    traktJsonWriter = new CrewObjectJsonWriter();
                string json            = await traktJsonWriter.WriteObjectAsync(stringWriter, traktCrew);

                json.Should().Be(@"{}");
            }
        }
        public async Task Test_CrewObjectJsonWriter_WriteObject_JsonWriter_Empty()
        {
            ITraktCrew traktCrew = new TraktCrew();

            using (var stringWriter = new StringWriter())
                using (var jsonWriter = new JsonTextWriter(stringWriter))
                {
                    var traktJsonWriter = new CrewObjectJsonWriter();
                    await traktJsonWriter.WriteObjectAsync(jsonWriter, traktCrew);

                    stringWriter.ToString().Should().Be(@"{}");
                }
        }
Ejemplo n.º 5
0
        public void TestTraktCrewDefaultConstructor()
        {
            var crew = new TraktCrew();

            crew.Production.Should().BeNull();
            crew.Art.Should().BeNull();
            crew.Crew.Should().BeNull();
            crew.CostumeAndMakeup.Should().BeNull();
            crew.Directing.Should().BeNull();
            crew.Writing.Should().BeNull();
            crew.Sound.Should().BeNull();
            crew.Camera.Should().BeNull();
            crew.Lighting.Should().BeNull();
            crew.VisualEffects.Should().BeNull();
            crew.Editing.Should().BeNull();
        }
        public async Task Test_CrewObjectJsonWriter_WriteObject_JsonWriter_Only_Art_Property()
        {
            ITraktCrew traktCrew = new TraktCrew
            {
                Art = new List <TraktCrewMember>
                {
                    new TraktCrewMember
                    {
                        Jobs = new List <string>
                        {
                            "Art Member"
                        },
                        Person = new TraktPerson
                        {
                            Name = "Bryan Cranston",
                            Ids  = new TraktPersonIds
                            {
                                Trakt  = 297737U,
                                Slug   = "bryan-cranston",
                                Imdb   = "nm0186505",
                                Tmdb   = 17419U,
                                TvRage = 1797U
                            }
                        }
                    }
                }
            };

            using (var stringWriter = new StringWriter())
                using (var jsonWriter = new JsonTextWriter(stringWriter))
                {
                    var traktJsonWriter = new CrewObjectJsonWriter();
                    await traktJsonWriter.WriteObjectAsync(jsonWriter, traktCrew);

                    stringWriter.ToString().Should().Be(@"{""art"":[{""jobs"":[""Art Member""]," +
                                                        @"""person"":{""name"":""Bryan Cranston""," +
                                                        @"""ids"":{""trakt"":297737,""slug"":""bryan-cranston""," +
                                                        @"""imdb"":""nm0186505"",""tmdb"":17419,""tvrage"":1797}}}]}");
                }
        }
Ejemplo n.º 7
0
        public async Task Test_CrewObjectJsonWriter_WriteObject_StringWriter_Only_CostumeAndMakeup_Property()
        {
            ITraktCrew traktCrew = new TraktCrew
            {
                CostumeAndMakeup = new List <TraktCrewMember>
                {
                    new TraktCrewMember
                    {
                        Jobs = new List <string>
                        {
                            "CostumeAndMakeup Member"
                        },
                        Person = new TraktPerson
                        {
                            Name = "Bryan Cranston",
                            Ids  = new TraktPersonIds
                            {
                                Trakt  = 297737U,
                                Slug   = "bryan-cranston",
                                Imdb   = "nm0186505",
                                Tmdb   = 17419U,
                                TvRage = 1797U
                            }
                        }
                    }
                }
            };

            using (var stringWriter = new StringWriter())
            {
                var    traktJsonWriter = new CrewObjectJsonWriter();
                string json            = await traktJsonWriter.WriteObjectAsync(stringWriter, traktCrew);

                json.Should().Be(@"{""costume & make-up"":[{""jobs"":[""CostumeAndMakeup Member""]," +
                                 @"""person"":{""name"":""Bryan Cranston""," +
                                 @"""ids"":{""trakt"":297737,""slug"":""bryan-cranston""," +
                                 @"""imdb"":""nm0186505"",""tmdb"":17419,""tvrage"":1797}}}]}");
            }
        }
        public async Task Test_CrewObjectJsonWriter_WriteObject_JsonWriter_Complete()
        {
            ITraktCrew traktCrew = new TraktCrew
            {
                Production = new List <TraktCrewMember>
                {
                    new TraktCrewMember
                    {
                        Jobs = new List <string>
                        {
                            "Production Member"
                        },
                        Person = new TraktPerson
                        {
                            Name = "Bryan Cranston",
                            Ids  = new TraktPersonIds
                            {
                                Trakt  = 297737U,
                                Slug   = "bryan-cranston",
                                Imdb   = "nm0186505",
                                Tmdb   = 17419U,
                                TvRage = 1797U
                            }
                        }
                    }
                },
                Art = new List <TraktCrewMember>
                {
                    new TraktCrewMember
                    {
                        Jobs = new List <string>
                        {
                            "Art Member"
                        },
                        Person = new TraktPerson
                        {
                            Name = "Bryan Cranston",
                            Ids  = new TraktPersonIds
                            {
                                Trakt  = 297737U,
                                Slug   = "bryan-cranston",
                                Imdb   = "nm0186505",
                                Tmdb   = 17419U,
                                TvRage = 1797U
                            }
                        }
                    }
                },
                Crew = new List <TraktCrewMember>
                {
                    new TraktCrewMember
                    {
                        Jobs = new List <string>
                        {
                            "Crew Member"
                        },
                        Person = new TraktPerson
                        {
                            Name = "Bryan Cranston",
                            Ids  = new TraktPersonIds
                            {
                                Trakt  = 297737U,
                                Slug   = "bryan-cranston",
                                Imdb   = "nm0186505",
                                Tmdb   = 17419U,
                                TvRage = 1797U
                            }
                        }
                    }
                },
                CostumeAndMakeup = new List <TraktCrewMember>
                {
                    new TraktCrewMember
                    {
                        Jobs = new List <string>
                        {
                            "CostumeAndMakeup Member"
                        },
                        Person = new TraktPerson
                        {
                            Name = "Bryan Cranston",
                            Ids  = new TraktPersonIds
                            {
                                Trakt  = 297737U,
                                Slug   = "bryan-cranston",
                                Imdb   = "nm0186505",
                                Tmdb   = 17419U,
                                TvRage = 1797U
                            }
                        }
                    }
                },
                Directing = new List <TraktCrewMember>
                {
                    new TraktCrewMember
                    {
                        Jobs = new List <string>
                        {
                            "Directing Member"
                        },
                        Person = new TraktPerson
                        {
                            Name = "Bryan Cranston",
                            Ids  = new TraktPersonIds
                            {
                                Trakt  = 297737U,
                                Slug   = "bryan-cranston",
                                Imdb   = "nm0186505",
                                Tmdb   = 17419U,
                                TvRage = 1797U
                            }
                        }
                    }
                },
                Writing = new List <TraktCrewMember>
                {
                    new TraktCrewMember
                    {
                        Jobs = new List <string>
                        {
                            "Writing Member"
                        },
                        Person = new TraktPerson
                        {
                            Name = "Bryan Cranston",
                            Ids  = new TraktPersonIds
                            {
                                Trakt  = 297737U,
                                Slug   = "bryan-cranston",
                                Imdb   = "nm0186505",
                                Tmdb   = 17419U,
                                TvRage = 1797U
                            }
                        }
                    }
                },
                Sound = new List <TraktCrewMember>
                {
                    new TraktCrewMember
                    {
                        Jobs = new List <string>
                        {
                            "Sound Member"
                        },
                        Person = new TraktPerson
                        {
                            Name = "Bryan Cranston",
                            Ids  = new TraktPersonIds
                            {
                                Trakt  = 297737U,
                                Slug   = "bryan-cranston",
                                Imdb   = "nm0186505",
                                Tmdb   = 17419U,
                                TvRage = 1797U
                            }
                        }
                    }
                },
                Camera = new List <TraktCrewMember>
                {
                    new TraktCrewMember
                    {
                        Jobs = new List <string>
                        {
                            "Camera Member"
                        },
                        Person = new TraktPerson
                        {
                            Name = "Bryan Cranston",
                            Ids  = new TraktPersonIds
                            {
                                Trakt  = 297737U,
                                Slug   = "bryan-cranston",
                                Imdb   = "nm0186505",
                                Tmdb   = 17419U,
                                TvRage = 1797U
                            }
                        }
                    }
                },
                Lighting = new List <TraktCrewMember>
                {
                    new TraktCrewMember
                    {
                        Jobs = new List <string>
                        {
                            "Lighting Member"
                        },
                        Person = new TraktPerson
                        {
                            Name = "Bryan Cranston",
                            Ids  = new TraktPersonIds
                            {
                                Trakt  = 297737U,
                                Slug   = "bryan-cranston",
                                Imdb   = "nm0186505",
                                Tmdb   = 17419U,
                                TvRage = 1797U
                            }
                        }
                    }
                },
                VisualEffects = new List <TraktCrewMember>
                {
                    new TraktCrewMember
                    {
                        Jobs = new List <string>
                        {
                            "VisualEffects Member"
                        },
                        Person = new TraktPerson
                        {
                            Name = "Bryan Cranston",
                            Ids  = new TraktPersonIds
                            {
                                Trakt  = 297737U,
                                Slug   = "bryan-cranston",
                                Imdb   = "nm0186505",
                                Tmdb   = 17419U,
                                TvRage = 1797U
                            }
                        }
                    }
                },
                Editing = new List <TraktCrewMember>
                {
                    new TraktCrewMember
                    {
                        Jobs = new List <string>
                        {
                            "Editing Member"
                        },
                        Person = new TraktPerson
                        {
                            Name = "Bryan Cranston",
                            Ids  = new TraktPersonIds
                            {
                                Trakt  = 297737U,
                                Slug   = "bryan-cranston",
                                Imdb   = "nm0186505",
                                Tmdb   = 17419U,
                                TvRage = 1797U
                            }
                        }
                    }
                }
            };

            using (var stringWriter = new StringWriter())
                using (var jsonWriter = new JsonTextWriter(stringWriter))
                {
                    var traktJsonWriter = new CrewObjectJsonWriter();
                    await traktJsonWriter.WriteObjectAsync(jsonWriter, traktCrew);

                    stringWriter.ToString().Should().Be(@"{""production"":[{""jobs"":[""Production Member""]," +
                                                        @"""person"":{""name"":""Bryan Cranston""," +
                                                        @"""ids"":{""trakt"":297737,""slug"":""bryan-cranston""," +
                                                        @"""imdb"":""nm0186505"",""tmdb"":17419,""tvrage"":1797}}}]," +
                                                        @"""art"":[{""jobs"":[""Art Member""]," +
                                                        @"""person"":{""name"":""Bryan Cranston""," +
                                                        @"""ids"":{""trakt"":297737,""slug"":""bryan-cranston""," +
                                                        @"""imdb"":""nm0186505"",""tmdb"":17419,""tvrage"":1797}}}]," +
                                                        @"""crew"":[{""jobs"":[""Crew Member""]," +
                                                        @"""person"":{""name"":""Bryan Cranston""," +
                                                        @"""ids"":{""trakt"":297737,""slug"":""bryan-cranston""," +
                                                        @"""imdb"":""nm0186505"",""tmdb"":17419,""tvrage"":1797}}}]," +
                                                        @"""costume & make-up"":[{""jobs"":[""CostumeAndMakeup Member""]," +
                                                        @"""person"":{""name"":""Bryan Cranston""," +
                                                        @"""ids"":{""trakt"":297737,""slug"":""bryan-cranston""," +
                                                        @"""imdb"":""nm0186505"",""tmdb"":17419,""tvrage"":1797}}}]," +
                                                        @"""directing"":[{""jobs"":[""Directing Member""]," +
                                                        @"""person"":{""name"":""Bryan Cranston""," +
                                                        @"""ids"":{""trakt"":297737,""slug"":""bryan-cranston""," +
                                                        @"""imdb"":""nm0186505"",""tmdb"":17419,""tvrage"":1797}}}]," +
                                                        @"""writing"":[{""jobs"":[""Writing Member""]," +
                                                        @"""person"":{""name"":""Bryan Cranston""," +
                                                        @"""ids"":{""trakt"":297737,""slug"":""bryan-cranston""," +
                                                        @"""imdb"":""nm0186505"",""tmdb"":17419,""tvrage"":1797}}}]," +
                                                        @"""sound"":[{""jobs"":[""Sound Member""]," +
                                                        @"""person"":{""name"":""Bryan Cranston""," +
                                                        @"""ids"":{""trakt"":297737,""slug"":""bryan-cranston""," +
                                                        @"""imdb"":""nm0186505"",""tmdb"":17419,""tvrage"":1797}}}]," +
                                                        @"""camera"":[{""jobs"":[""Camera Member""]," +
                                                        @"""person"":{""name"":""Bryan Cranston""," +
                                                        @"""ids"":{""trakt"":297737,""slug"":""bryan-cranston""," +
                                                        @"""imdb"":""nm0186505"",""tmdb"":17419,""tvrage"":1797}}}]," +
                                                        @"""lighting"":[{""jobs"":[""Lighting Member""]," +
                                                        @"""person"":{""name"":""Bryan Cranston""," +
                                                        @"""ids"":{""trakt"":297737,""slug"":""bryan-cranston""," +
                                                        @"""imdb"":""nm0186505"",""tmdb"":17419,""tvrage"":1797}}}]," +
                                                        @"""visual effects"":[{""jobs"":[""VisualEffects Member""]," +
                                                        @"""person"":{""name"":""Bryan Cranston""," +
                                                        @"""ids"":{""trakt"":297737,""slug"":""bryan-cranston""," +
                                                        @"""imdb"":""nm0186505"",""tmdb"":17419,""tvrage"":1797}}}]," +
                                                        @"""editing"":[{""jobs"":[""Editing Member""]," +
                                                        @"""person"":{""name"":""Bryan Cranston""," +
                                                        @"""ids"":{""trakt"":297737,""slug"":""bryan-cranston""," +
                                                        @"""imdb"":""nm0186505"",""tmdb"":17419,""tvrage"":1797}}}]}");
                }
        }
Ejemplo n.º 9
0
        public override async Task <ITraktCrew> ReadObjectAsync(JsonTextReader jsonReader, CancellationToken cancellationToken = default)
        {
            if (jsonReader == null)
            {
                return(await Task.FromResult(default(ITraktCrew)));
            }

            if (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.StartObject)
            {
                var        crewMembersReader = new CrewMemberArrayJsonReader();
                ITraktCrew traktCrew         = new TraktCrew();

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

                    switch (propertyName)
                    {
                    case JsonProperties.CREW_PROPERTY_NAME_PRODUCTION:
                        traktCrew.Production = await crewMembersReader.ReadArrayAsync(jsonReader, cancellationToken);

                        break;

                    case JsonProperties.CREW_PROPERTY_NAME_ART:
                        traktCrew.Art = await crewMembersReader.ReadArrayAsync(jsonReader, cancellationToken);

                        break;

                    case JsonProperties.CREW_PROPERTY_NAME_CREW:
                        traktCrew.Crew = await crewMembersReader.ReadArrayAsync(jsonReader, cancellationToken);

                        break;

                    case JsonProperties.CREW_PROPERTY_NAME_COSTUME_AND_MAKE_UP:
                        traktCrew.CostumeAndMakeup = await crewMembersReader.ReadArrayAsync(jsonReader, cancellationToken);

                        break;

                    case JsonProperties.CREW_PROPERTY_NAME_DIRECTING:
                        traktCrew.Directing = await crewMembersReader.ReadArrayAsync(jsonReader, cancellationToken);

                        break;

                    case JsonProperties.CREW_PROPERTY_NAME_WRITING:
                        traktCrew.Writing = await crewMembersReader.ReadArrayAsync(jsonReader, cancellationToken);

                        break;

                    case JsonProperties.CREW_PROPERTY_NAME_SOUND:
                        traktCrew.Sound = await crewMembersReader.ReadArrayAsync(jsonReader, cancellationToken);

                        break;

                    case JsonProperties.CREW_PROPERTY_NAME_CAMERA:
                        traktCrew.Camera = await crewMembersReader.ReadArrayAsync(jsonReader, cancellationToken);

                        break;

                    case JsonProperties.CREW_PROPERTY_NAME_LIGHTING:
                        traktCrew.Lighting = await crewMembersReader.ReadArrayAsync(jsonReader, cancellationToken);

                        break;

                    case JsonProperties.CREW_PROPERTY_NAME_VISUAL_EFFECTS:
                        traktCrew.VisualEffects = await crewMembersReader.ReadArrayAsync(jsonReader, cancellationToken);

                        break;

                    case JsonProperties.CREW_PROPERTY_NAME_EDITING:
                        traktCrew.Editing = await crewMembersReader.ReadArrayAsync(jsonReader, cancellationToken);

                        break;

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

                        break;
                    }
                }

                return(traktCrew);
            }

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