| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240 | using System;using System.Collections.Generic;using System.IO;using System.Text.Json;using Emby.Server.Implementations.LiveTv.Listings.SchedulesDirectDtos;using Jellyfin.Extensions.Json;using Xunit;namespace Jellyfin.Server.Implementations.Tests.LiveTv.SchedulesDirect{    public class SchedulesDirectDeserializeTests    {        private readonly JsonSerializerOptions _jsonOptions;        public SchedulesDirectDeserializeTests()        {            _jsonOptions = JsonDefaults.Options;        }        /// <summary>        /// /token response.        /// </summary>        [Fact]        public void Deserialize_Token_Response_Live_Success()        {            var bytes = File.ReadAllBytes("Test Data/SchedulesDirect/token_live_response.json");            var tokenDto = JsonSerializer.Deserialize<TokenDto>(bytes, _jsonOptions);            Assert.NotNull(tokenDto);            Assert.Equal(0, tokenDto!.Code);            Assert.Equal("OK", tokenDto.Message);            Assert.Equal("AWS-SD-web.1", tokenDto.ServerId);            Assert.Equal(new DateTime(2016, 08, 23, 13, 55, 25, DateTimeKind.Utc), tokenDto.TokenTimestamp);            Assert.Equal("f3fca79989cafe7dead71beefedc812b", tokenDto.Token);        }        /// <summary>        /// /token response.        /// </summary>        [Fact]        public void Deserialize_Token_Response_Offline_Success()        {            var bytes = File.ReadAllBytes("Test Data/SchedulesDirect/token_offline_response.json");            var tokenDto = JsonSerializer.Deserialize<TokenDto>(bytes, _jsonOptions);            Assert.NotNull(tokenDto);            Assert.Equal(3_000, tokenDto!.Code);            Assert.Equal("Server offline for maintenance.", tokenDto.Message);            Assert.Equal("20141201.web.1", tokenDto.ServerId);            Assert.Equal(new DateTime(2015, 04, 23, 00, 03, 32, DateTimeKind.Utc), tokenDto.TokenTimestamp);            Assert.Equal("CAFEDEADBEEFCAFEDEADBEEFCAFEDEADBEEFCAFE", tokenDto.Token);            Assert.Equal("SERVICE_OFFLINE", tokenDto.Response);        }        /// <summary>        /// /schedules request.        /// </summary>        [Fact]        public void Serialize_Schedule_Request_Success()        {            var expectedString = File.ReadAllText("Test Data/SchedulesDirect/schedules_request.json").Trim();            var requestObject = new RequestScheduleForChannelDto[]            {                new RequestScheduleForChannelDto                {                    StationId = "20454",                    Date = new[]                    {                        "2015-03-13",                        "2015-03-17"                    }                },                new RequestScheduleForChannelDto                {                    StationId = "10021",                    Date = new[]                    {                        "2015-03-12",                        "2015-03-13"                    }                }            };            var requestString = JsonSerializer.Serialize(requestObject, _jsonOptions);            Assert.Equal(expectedString, requestString);        }        /// <summary>        /// /schedules response.        /// </summary>        [Fact]        public void Deserialize_Schedule_Response_Success()        {            var bytes = File.ReadAllBytes("Test Data/SchedulesDirect/schedules_response.json");            var days = JsonSerializer.Deserialize<IReadOnlyList<DayDto>>(bytes, _jsonOptions);            Assert.NotNull(days);            Assert.Equal(1, days!.Count);            var dayDto = days[0];            Assert.Equal("20454", dayDto.StationId);            Assert.Equal(2, dayDto.Programs.Count);            Assert.Equal("SH005371070000", dayDto.Programs[0].ProgramId);            Assert.Equal(new DateTime(2015, 03, 03, 00, 00, 00, DateTimeKind.Utc), dayDto.Programs[0].AirDateTime);            Assert.Equal(1_800, dayDto.Programs[0].Duration);            Assert.Equal("Sy8HEMBPcuiAx3FBukUhKQ", dayDto.Programs[0].Md5);            Assert.True(dayDto.Programs[0].New);            Assert.Equal(2, dayDto.Programs[0].AudioProperties.Count);            Assert.Equal("stereo", dayDto.Programs[0].AudioProperties[0]);            Assert.Equal("cc", dayDto.Programs[0].AudioProperties[1]);            Assert.Equal(1, dayDto.Programs[0].VideoProperties.Count);            Assert.Equal("hdtv", dayDto.Programs[0].VideoProperties[0]);        }        /// <summary>        /// /programs response.        /// </summary>        [Fact]        public void Deserialize_Program_Response_Success()        {            var bytes = File.ReadAllBytes("Test Data/SchedulesDirect/programs_response.json");            var programDtos = JsonSerializer.Deserialize<IReadOnlyList<ProgramDetailsDto>>(bytes, _jsonOptions);            Assert.NotNull(programDtos);            Assert.Equal(2, programDtos!.Count);            Assert.Equal("EP000000060003", programDtos[0].ProgramId);            Assert.Equal(1, programDtos[0].Titles.Count);            Assert.Equal("'Allo 'Allo!", programDtos[0].Titles[0].Title120);            Assert.Equal("Series", programDtos[0].EventDetails?.SubType);            Assert.Equal("en", programDtos[0].Descriptions?.Description1000[0].DescriptionLanguage);            Assert.Equal("A disguised British Intelligence officer is sent to help the airmen.", programDtos[0].Descriptions?.Description1000[0].Description);            Assert.Equal(new DateTime(1985, 11, 04), programDtos[0].OriginalAirDate);            Assert.Equal(1, programDtos[0].Genres.Count);            Assert.Equal("Sitcom", programDtos[0].Genres[0]);            Assert.Equal("The Poloceman Cometh", programDtos[0].EpisodeTitle150);            Assert.Equal(2, programDtos[0].Metadata[0].Gracenote?.Season);            Assert.Equal(3, programDtos[0].Metadata[0].Gracenote?.Episode);            Assert.Equal(13, programDtos[0].Cast.Count);            Assert.Equal("383774", programDtos[0].Cast[0].PersonId);            Assert.Equal("392649", programDtos[0].Cast[0].NameId);            Assert.Equal("Gorden Kaye", programDtos[0].Cast[0].Name);            Assert.Equal("Actor", programDtos[0].Cast[0].Role);            Assert.Equal("01", programDtos[0].Cast[0].BillingOrder);            Assert.Equal(3, programDtos[0].Crew.Count);            Assert.Equal("354407", programDtos[0].Crew[0].PersonId);            Assert.Equal("363281", programDtos[0].Crew[0].NameId);            Assert.Equal("David Croft", programDtos[0].Crew[0].Name);            Assert.Equal("Director", programDtos[0].Crew[0].Role);            Assert.Equal("01", programDtos[0].Crew[0].BillingOrder);        }        /// <summary>        /// /metadata/programs response.        /// </summary>        [Fact]        public void Deserialize_Metadata_Programs_Response_Success()        {            var bytes = File.ReadAllBytes("Test Data/SchedulesDirect/metadata_programs_response.json");            var showImagesDtos = JsonSerializer.Deserialize<IReadOnlyList<ShowImagesDto>>(bytes, _jsonOptions);            Assert.NotNull(showImagesDtos);            Assert.Equal(1, showImagesDtos!.Count);            Assert.Equal("SH00712240", showImagesDtos[0].ProgramId);            Assert.Equal(4, showImagesDtos[0].Data.Count);            Assert.Equal("135", showImagesDtos[0].Data[0].Width);            Assert.Equal("180", showImagesDtos[0].Data[0].Height);            Assert.Equal("assets/p282288_b_v2_aa.jpg", showImagesDtos[0].Data[0].Uri);            Assert.Equal("Sm", showImagesDtos[0].Data[0].Size);            Assert.Equal("3x4", showImagesDtos[0].Data[0].Aspect);            Assert.Equal("Banner-L3", showImagesDtos[0].Data[0].Category);            Assert.Equal("yes", showImagesDtos[0].Data[0].Text);            Assert.Equal("true", showImagesDtos[0].Data[0].Primary);            Assert.Equal("Series", showImagesDtos[0].Data[0].Tier);        }        /// <summary>        /// /headends response.        /// </summary>        [Fact]        public void Deserialize_Headends_Response_Success()        {            var bytes = File.ReadAllBytes("Test Data/SchedulesDirect/headends_response.json");            var headendsDtos = JsonSerializer.Deserialize<IReadOnlyList<HeadendsDto>>(bytes, _jsonOptions);            Assert.NotNull(headendsDtos);            Assert.Equal(8, headendsDtos!.Count);            Assert.Equal("CA00053", headendsDtos[0].Headend);            Assert.Equal("Cable", headendsDtos[0].Transport);            Assert.Equal("Beverly Hills", headendsDtos[0].Location);            Assert.Equal(2, headendsDtos[0].Lineups.Count);            Assert.Equal("Time Warner Cable - Cable", headendsDtos[0].Lineups[0].Name);            Assert.Equal("USA-CA00053-DEFAULT", headendsDtos[0].Lineups[0].Lineup);            Assert.Equal("/20141201/lineups/USA-CA00053-DEFAULT", headendsDtos[0].Lineups[0].Uri);        }        /// <summary>        /// /lineups response.        /// </summary>        [Fact]        public void Deserialize_Lineups_Response_Success()        {            var bytes = File.ReadAllBytes("Test Data/SchedulesDirect/lineups_response.json");            var lineupsDto = JsonSerializer.Deserialize<LineupsDto>(bytes, _jsonOptions);            Assert.NotNull(lineupsDto);            Assert.Equal(0, lineupsDto!.Code);            Assert.Equal("20141201.web.1", lineupsDto.ServerId);            Assert.Equal(new DateTime(2015, 04, 17, 14, 22, 17, DateTimeKind.Utc), lineupsDto.LineupTimestamp);            Assert.Equal(5, lineupsDto.Lineups.Count);            Assert.Equal("GBR-0001317-DEFAULT", lineupsDto.Lineups[0].Lineup);            Assert.Equal("Freeview - Carlton - LWT (Southeast)", lineupsDto.Lineups[0].Name);            Assert.Equal("DVB-T", lineupsDto.Lineups[0].Transport);            Assert.Equal("London", lineupsDto.Lineups[0].Location);            Assert.Equal("/20141201/lineups/GBR-0001317-DEFAULT", lineupsDto.Lineups[0].Uri);            Assert.Equal("DELETED LINEUP", lineupsDto.Lineups[4].Name);            Assert.True(lineupsDto.Lineups[4].IsDeleted);        }        /// <summary>        /// /lineup/:id response.        /// </summary>        [Fact]        public void Deserialize_Lineup_Response_Success()        {            var bytes = File.ReadAllBytes("Test Data/SchedulesDirect/lineup_response.json");            var channelDto = JsonSerializer.Deserialize<ChannelDto>(bytes, _jsonOptions);            Assert.NotNull(channelDto);            Assert.Equal(2, channelDto!.Map.Count);            Assert.Equal("24326", channelDto.Map[0].StationId);            Assert.Equal("001", channelDto.Map[0].Channel);            Assert.Equal("BBC ONE South", channelDto.Map[0].ProvderCallsign);            Assert.Equal("1", channelDto.Map[0].LogicalChannelNumber);            Assert.Equal("providerCallsign", channelDto.Map[0].MatchType);        }    }}
 |