aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorCody Robibero <cody@robibe.ro>2021-09-03 13:36:07 -0600
committerCody Robibero <cody@robibe.ro>2021-09-03 13:36:07 -0600
commit0587b539ec899c35b5bea73801d5007575f86b94 (patch)
treec5ab3db1bb790f4e8cbdf36f9fbbd26065caf85c /tests
parent47e24a2cf77e6c3fe50eb5398fa56950a047ed7b (diff)
Suggestions from review
Diffstat (limited to 'tests')
-rw-r--r--tests/Jellyfin.Server.Implementations.Tests/Jellyfin.Server.Implementations.Tests.csproj3
-rw-r--r--tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/SchedulesDirectDeserializeTests.cs25
-rw-r--r--tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/headends_response.json113
-rw-r--r--tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/lineup_response.json18
-rw-r--r--tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/lineups_response.json40
-rw-r--r--tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/metadata_programs_response.json51
-rw-r--r--tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/programs_response.json245
-rw-r--r--tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/schedules_request.json16
-rw-r--r--tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/schedules_response.json35
-rw-r--r--tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/token_live_response.json7
-rw-r--r--tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/token_offline_response.json8
-rw-r--r--tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/headends_response.json1
-rw-r--r--tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/lineup_response.json1
-rw-r--r--tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/lineups_response.json1
-rw-r--r--tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/metadata_programs_response.json1
-rw-r--r--tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/programs_response.json1
-rw-r--r--tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/schedules_request.json1
-rw-r--r--tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/schedules_response.json1
-rw-r--r--tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/token_live_response.json1
-rw-r--r--tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/token_offline_response.json1
20 files changed, 19 insertions, 551 deletions
diff --git a/tests/Jellyfin.Server.Implementations.Tests/Jellyfin.Server.Implementations.Tests.csproj b/tests/Jellyfin.Server.Implementations.Tests/Jellyfin.Server.Implementations.Tests.csproj
index e02e357ca..9b6ab7bdf 100644
--- a/tests/Jellyfin.Server.Implementations.Tests/Jellyfin.Server.Implementations.Tests.csproj
+++ b/tests/Jellyfin.Server.Implementations.Tests/Jellyfin.Server.Implementations.Tests.csproj
@@ -16,9 +16,6 @@
<None Include="Test Data\**\*.*">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
- <None Update="LiveTv\SchedulesDirect\TestData\*">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </None>
</ItemGroup>
<ItemGroup>
diff --git a/tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/SchedulesDirectDeserializeTests.cs b/tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/SchedulesDirectDeserializeTests.cs
index 84ac3ea47..ab08e22ab 100644
--- a/tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/SchedulesDirectDeserializeTests.cs
+++ b/tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/SchedulesDirectDeserializeTests.cs
@@ -23,7 +23,7 @@ namespace Jellyfin.Server.Implementations.Tests.LiveTv.SchedulesDirect
[Fact]
public void Deserialize_Token_Response_Live_Success()
{
- var bytes = File.ReadAllBytes("LiveTv/SchedulesDirect/TestData/token_live_response.json");
+ var bytes = File.ReadAllBytes("Test Data/SchedulesDirect/token_live_response.json");
var tokenDto = JsonSerializer.Deserialize<TokenDto>(bytes);
Assert.NotNull(tokenDto);
@@ -40,7 +40,7 @@ namespace Jellyfin.Server.Implementations.Tests.LiveTv.SchedulesDirect
[Fact]
public void Deserialize_Token_Response_Offline_Success()
{
- var bytes = File.ReadAllBytes("LiveTv/SchedulesDirect/TestData/token_offline_response.json");
+ var bytes = File.ReadAllBytes("Test Data/SchedulesDirect/token_offline_response.json");
var tokenDto = JsonSerializer.Deserialize<TokenDto>(bytes);
Assert.NotNull(tokenDto);
@@ -58,7 +58,7 @@ namespace Jellyfin.Server.Implementations.Tests.LiveTv.SchedulesDirect
[Fact]
public void Serialize_Schedule_Request_Success()
{
- var expectedString = File.ReadAllText("LiveTv/SchedulesDirect/TestData/schedules_request.json").Trim();
+ var expectedString = File.ReadAllText("Test Data/SchedulesDirect/schedules_request.json").Trim();
var requestObject = new RequestScheduleForChannelDto[]
{
@@ -82,12 +82,7 @@ namespace Jellyfin.Server.Implementations.Tests.LiveTv.SchedulesDirect
}
};
- var jsonOptions = new JsonSerializerOptions(_jsonOptions)
- {
- WriteIndented = true
- };
-
- var requestString = JsonSerializer.Serialize(requestObject, jsonOptions);
+ var requestString = JsonSerializer.Serialize(requestObject, _jsonOptions);
Assert.Equal(expectedString, requestString);
}
@@ -97,7 +92,7 @@ namespace Jellyfin.Server.Implementations.Tests.LiveTv.SchedulesDirect
[Fact]
public void Deserialize_Schedule_Response_Success()
{
- var bytes = File.ReadAllBytes("LiveTv/SchedulesDirect/TestData/schedules_response.json");
+ var bytes = File.ReadAllBytes("Test Data/SchedulesDirect/schedules_response.json");
var days = JsonSerializer.Deserialize<IReadOnlyList<DayDto>>(bytes);
Assert.NotNull(days);
@@ -125,7 +120,7 @@ namespace Jellyfin.Server.Implementations.Tests.LiveTv.SchedulesDirect
[Fact]
public void Deserialize_Program_Response_Success()
{
- var bytes = File.ReadAllBytes("LiveTv/SchedulesDirect/TestData/programs_response.json");
+ var bytes = File.ReadAllBytes("Test Data/SchedulesDirect/programs_response.json");
var programDtos = JsonSerializer.Deserialize<IReadOnlyList<ProgramDetailsDto>>(bytes);
Assert.NotNull(programDtos);
@@ -162,7 +157,7 @@ namespace Jellyfin.Server.Implementations.Tests.LiveTv.SchedulesDirect
[Fact]
public void Deserialize_Metadata_Programs_Response_Success()
{
- var bytes = File.ReadAllBytes("LiveTv/SchedulesDirect/TestData/metadata_programs_response.json");
+ var bytes = File.ReadAllBytes("Test Data/SchedulesDirect/metadata_programs_response.json");
var showImagesDtos = JsonSerializer.Deserialize<IReadOnlyList<ShowImagesDto>>(bytes);
Assert.NotNull(showImagesDtos);
@@ -186,7 +181,7 @@ namespace Jellyfin.Server.Implementations.Tests.LiveTv.SchedulesDirect
[Fact]
public void Deserialize_Headends_Response_Success()
{
- var bytes = File.ReadAllBytes("LiveTv/SchedulesDirect/TestData/headends_response.json");
+ var bytes = File.ReadAllBytes("Test Data/SchedulesDirect/headends_response.json");
var headendsDtos = JsonSerializer.Deserialize<IReadOnlyList<HeadendsDto>>(bytes);
Assert.NotNull(headendsDtos);
@@ -206,7 +201,7 @@ namespace Jellyfin.Server.Implementations.Tests.LiveTv.SchedulesDirect
[Fact]
public void Deserialize_Lineups_Response_Success()
{
- var bytes = File.ReadAllBytes("LiveTv/SchedulesDirect/TestData/lineups_response.json");
+ var bytes = File.ReadAllBytes("Test Data/SchedulesDirect/lineups_response.json");
var lineupsDto = JsonSerializer.Deserialize<LineupsDto>(bytes);
Assert.NotNull(lineupsDto);
@@ -230,7 +225,7 @@ namespace Jellyfin.Server.Implementations.Tests.LiveTv.SchedulesDirect
[Fact]
public void Deserialize_Lineup_Response_Success()
{
- var bytes = File.ReadAllBytes("LiveTv/SchedulesDirect/TestData/lineup_response.json");
+ var bytes = File.ReadAllBytes("Test Data/SchedulesDirect/lineup_response.json");
var channelDto = JsonSerializer.Deserialize<ChannelDto>(bytes);
Assert.NotNull(channelDto);
diff --git a/tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/headends_response.json b/tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/headends_response.json
deleted file mode 100644
index a1a96cf87..000000000
--- a/tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/headends_response.json
+++ /dev/null
@@ -1,113 +0,0 @@
-[
- {
- "headend": "CA00053",
- "transport": "Cable",
- "location": "Beverly Hills",
- "lineups": [
- {
- "name": "Time Warner Cable - Cable",
- "lineup": "USA-CA00053-DEFAULT",
- "uri": "/20141201/lineups/USA-CA00053-DEFAULT"
- },
- {
- "name": "Time Warner Cable - Digital",
- "lineup": "USA-CA00053-X",
- "uri": "/20141201/lineups/USA-CA00053-X"
- }
- ]
- },
- {
- "headend": "CA61222",
- "transport": "Cable",
- "location": "Beverly Hills",
- "lineups": [
- {
- "name": "Mulholland Estates - Cable",
- "lineup": "USA-CA61222-DEFAULT",
- "uri": "/20141201/lineups/USA-CA61222-DEFAULT"
- }
- ]
- },
- {
- "headend": "CA66511",
- "transport": "Cable",
- "location": "Los Angeles",
- "lineups": [
- {
- "name": "AT&T U-verse TV - Digital",
- "lineup": "USA-CA66511-X",
- "uri": "/20141201/lineups/USA-CA66511-X"
- }
- ]
- },
- {
- "headend": "CA67309",
- "transport": "Cable",
- "location": "Westchester",
- "lineups": [
- {
- "name": "Time Warner Cable Sherman Oaks - Cable",
- "lineup": "USA-CA67309-DEFAULT",
- "uri": "/20141201/lineups/USA-CA67309-DEFAULT"
- },
- {
- "name": "Time Warner Cable Sherman Oaks - Digital",
- "lineup": "USA-CA67309-X",
- "uri": "/20141201/lineups/USA-CA67309-X"
- }
- ]
- },
- {
- "headend": "CA67310",
- "transport": "Cable",
- "location": "Eagle Rock",
- "lineups": [
- {
- "name": "Time Warner Cable City of Los Angeles - Cable",
- "lineup": "USA-CA67310-DEFAULT",
- "uri": "/20141201/lineups/USA-CA67310-DEFAULT"
- },
- {
- "name": "Time Warner Cable City of Los Angeles - Digital",
- "lineup": "USA-CA67310-X",
- "uri": "/20141201/lineups/USA-CA67310-X"
- }
- ]
- },
- {
- "headend": "DISH803",
- "transport": "Satellite",
- "location": "Los Angeles",
- "lineups": [
- {
- "name": "DISH Los Angeles - Satellite",
- "lineup": "USA-DISH803-DEFAULT",
- "uri": "/20141201/lineups/USA-DISH803-DEFAULT"
- }
- ]
- },
- {
- "headend": "DITV803",
- "transport": "Satellite",
- "location": "Los Angeles",
- "lineups": [
- {
- "name": "DIRECTV Los Angeles - Satellite",
- "lineup": "USA-DITV803-DEFAULT",
- "uri": "/20141201/lineups/USA-DITV803-DEFAULT"
- }
- ]
- },
- {
- "headend": "90210",
- "transport": "Antenna",
- "location": "90210",
- "lineups": [
- {
- "name": "Antenna",
- "lineup": "USA-OTA-90210",
- "uri": "/20141201/lineups/USA-OTA-90210"
- }
- ]
- }
-]
diff --git a/tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/lineup_response.json b/tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/lineup_response.json
deleted file mode 100644
index 5c5e36e30..000000000
--- a/tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/lineup_response.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "map": [
- {
- "stationID": "24326",
- "channel": "001",
- "providerCallsign": "BBC ONE South",
- "logicalChannelNumber": "1",
- "matchType": "providerCallsign"
- },
- {
- "stationID": "17154",
- "channel": "002",
- "providerCallsign": "BBC TWO",
- "logicalChannelNumber": "2",
- "matchType": "providerCallsign"
- }
- ]
-}
diff --git a/tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/lineups_response.json b/tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/lineups_response.json
deleted file mode 100644
index 257b682ee..000000000
--- a/tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/lineups_response.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "code": 0,
- "serverID": "20141201.web.1",
- "datetime": "2015-04-17T14:22:17Z",
- "lineups": [
- {
- "lineup": "GBR-0001317-DEFAULT",
- "name": "Freeview - Carlton - LWT (Southeast)",
- "transport": "DVB-T",
- "location": "London",
- "uri": "/20141201/lineups/GBR-0001317-DEFAULT"
- },
- {
- "lineup": "USA-IL57303-X",
- "name": "Comcast Waukegan/Lake Forest Area - Digital",
- "transport": "Cable",
- "location": "Lake Forest",
- "uri": "/20141201/lineups/USA-IL57303-X"
- },
- {
- "lineup": "USA-NY67791-X",
- "name": "Verizon Fios Queens - Digital",
- "transport": "Cable",
- "location": "Fresh Meadows",
- "uri": "/20141201/lineups/USA-NY67791-X"
- },
- {
- "lineup": "USA-OTA-60030",
- "name": "Local Over the Air Broadcast",
- "transport": "Antenna",
- "location": "60030",
- "uri": "/20141201/lineups/USA-OTA-60030"
- },
- {
- "lineup": "USA-WI61859-DEFAULT",
- "name": "DELETED LINEUP",
- "isDeleted": true
- }
- ]
-}
diff --git a/tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/metadata_programs_response.json b/tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/metadata_programs_response.json
deleted file mode 100644
index b75e777b4..000000000
--- a/tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/metadata_programs_response.json
+++ /dev/null
@@ -1,51 +0,0 @@
-[
- {
- "programID": "SH00712240",
- "data": [
- {
- "width": "135",
- "height": "180",
- "uri": "assets/p282288_b_v2_aa.jpg",
- "size": "Sm",
- "aspect": "3x4",
- "category": "Banner-L3",
- "text": "yes",
- "primary": "true",
- "tier": "Series"
- },
- {
- "width": "720",
- "height": "540",
- "uri": "assets/p282288_b_h6_aa.jpg",
- "size": "Lg",
- "aspect": "4x3",
- "category": "Banner-L3",
- "text": "yes",
- "primary": "true",
- "tier": "Series"
- },
- {
- "width": "960",
- "height": "1440",
- "uri": "assets/p282288_b_v8_aa.jpg",
- "size": "Ms",
- "aspect": "2x3",
- "category": "Banner-L3",
- "text": "yes",
- "primary": "true",
- "tier": "Series"
- },
- {
- "width": "180",
- "height": "135",
- "uri": "assets/p282288_b_h5_aa.jpg",
- "size": "Sm",
- "aspect": "4x3",
- "category": "Banner-L3",
- "text": "yes",
- "primary": "true",
- "tier": "Series"
- }
- ]
- }
-]
diff --git a/tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/programs_response.json b/tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/programs_response.json
deleted file mode 100644
index 154c02f97..000000000
--- a/tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/programs_response.json
+++ /dev/null
@@ -1,245 +0,0 @@
-[
- {
- "programID": "EP000000060003",
- "titles": [{
- "title120": "'Allo 'Allo!"
- }],
- "eventDetails": {
- "subType": "Series"
- },
- "descriptions": {
- "description1000": [{
- "descriptionLanguage": "en",
- "description": "A disguised British Intelligence officer is sent to help the airmen."
- }]
- },
- "originalAirDate": "1985-11-04",
- "genres": ["Sitcom"],
- "episodeTitle150": "The Poloceman Cometh",
- "metadata": [{
- "Gracenote": {
- "season": 2,
- "episode": 3
- }
- }],
- "cast": [{
- "personId": "383774",
- "nameId": "392649",
- "name": "Gorden Kaye",
- "role": "Actor",
- "billingOrder": "01"
- }, {
- "personId": "246840",
- "nameId": "250387",
- "name": "Carmen Silvera",
- "role": "Actor",
- "billingOrder": "02"
- }, {
- "personId": "376955",
- "nameId": "385830",
- "name": "Rose Hill",
- "role": "Actor",
- "billingOrder": "03"
- }, {
- "personId": "259773",
- "nameId": "263340",
- "name": "Vicki Michelle",
- "role": "Actor",
- "billingOrder": "04"
- }, {
- "personId": "353113",
- "nameId": "361987",
- "name": "Kirsten Cooke",
- "role": "Actor",
- "billingOrder": "05"
- }, {
- "personId": "77787",
- "nameId": "77787",
- "name": "Richard Marner",
- "role": "Actor",
- "billingOrder": "06"
- }, {
- "personId": "230921",
- "nameId": "234193",
- "name": "Guy Siner",
- "role": "Actor",
- "billingOrder": "07"
- }, {
- "personId": "374934",
- "nameId": "383809",
- "name": "Kim Hartman",
- "role": "Actor",
- "billingOrder": "08"
- }, {
- "personId": "369151",
- "nameId": "378026",
- "name": "Richard Gibson",
- "role": "Actor",
- "billingOrder": "09"
- }, {
- "personId": "343690",
- "nameId": "352564",
- "name": "Arthur Bostrom",
- "role": "Actor",
- "billingOrder": "10"
- }, {
- "personId": "352557",
- "nameId": "361431",
- "name": "John D. Collins",
- "role": "Actor",
- "billingOrder": "11"
- }, {
- "personId": "605275",
- "nameId": "627734",
- "name": "Nicholas Frankau",
- "role": "Actor",
- "billingOrder": "12"
- }, {
- "personId": "373394",
- "nameId": "382269",
- "name": "Jack Haig",
- "role": "Actor",
- "billingOrder": "13"
- }],
- "crew": [{
- "personId": "354407",
- "nameId": "363281",
- "name": "David Croft",
- "role": "Director",
- "billingOrder": "01"
- }, {
- "personId": "354407",
- "nameId": "363281",
- "name": "David Croft",
- "role": "Writer",
- "billingOrder": "02"
- }, {
- "personId": "105145",
- "nameId": "105145",
- "name": "Jeremy Lloyd",
- "role": "Writer",
- "billingOrder": "03"
- }],
- "showType": "Series",
- "hasImageArtwork": true,
- "md5": "Jo5NKxoo44xRvBCAq8QT2A"
- },
- {
- "programID": "EP000000510142",
- "titles": [{
- "title120": "A Different World"
- }],
- "eventDetails": {
- "subType": "Series"
- },
- "descriptions": {
- "description1000": [{
- "descriptionLanguage": "en",
- "description": "Whitley and Dwayne tell new students about their honeymoon in Los Angeles."
- }]
- },
- "originalAirDate": "1992-09-24",
- "genres": ["Sitcom"],
- "episodeTitle150": "Honeymoon in L.A.",
- "metadata": [{
- "Gracenote": {
- "season": 6,
- "episode": 1
- }
- }],
- "cast": [{
- "personId": "700",
- "nameId": "700",
- "name": "Jasmine Guy",
- "role": "Actor",
- "billingOrder": "01"
- }, {
- "personId": "729",
- "nameId": "729",
- "name": "Kadeem Hardison",
- "role": "Actor",
- "billingOrder": "02"
- }, {
- "personId": "120",
- "nameId": "120",
- "name": "Darryl M. Bell",
- "role": "Actor",
- "billingOrder": "03"
- }, {
- "personId": "1729",
- "nameId": "1729",
- "name": "Cree Summer",
- "role": "Actor",
- "billingOrder": "04"
- }, {
- "personId": "217",
- "nameId": "217",
- "name": "Charnele Brown",
- "role": "Actor",
- "billingOrder": "05"
- }, {
- "personId": "1811",
- "nameId": "1811",
- "name": "Glynn Turman",
- "role": "Actor",
- "billingOrder": "06"
- }, {
- "personId": "1232",
- "nameId": "1232",
- "name": "Lou Myers",
- "role": "Actor",
- "billingOrder": "07"
- }, {
- "personId": "1363",
- "nameId": "1363",
- "name": "Jada Pinkett",
- "role": "Guest Star",
- "billingOrder": "08"
- }, {
- "personId": "222967",
- "nameId": "225536",
- "name": "Ajai Sanders",
- "role": "Guest Star",
- "billingOrder": "09"
- }, {
- "personId": "181744",
- "nameId": "183292",
- "name": "Karen Malina White",
- "role": "Guest Star",
- "billingOrder": "10"
- }, {
- "personId": "305017",
- "nameId": "318897",
- "name": "Patrick Y. Malone",
- "role": "Guest Star",
- "billingOrder": "11"
- }, {
- "personId": "9841",
- "nameId": "9841",
- "name": "Bumper Robinson",
- "role": "Guest Star",
- "billingOrder": "12"
- }, {
- "personId": "426422",
- "nameId": "435297",
- "name": "Sister Souljah",
- "role": "Guest Star",
- "billingOrder": "13"
- }, {
- "personId": "25",
- "nameId": "25",
- "name": "Debbie Allen",
- "role": "Guest Star",
- "billingOrder": "14"
- }, {
- "personId": "668",
- "nameId": "668",
- "name": "Gilbert Gottfried",
- "role": "Guest Star",
- "billingOrder": "15"
- }],
- "showType": "Series",
- "hasImageArtwork": true,
- "md5": "P5kz0QmCeYxIA+yL0H4DWw"
- }
-]
diff --git a/tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/schedules_request.json b/tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/schedules_request.json
deleted file mode 100644
index 72248921a..000000000
--- a/tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/schedules_request.json
+++ /dev/null
@@ -1,16 +0,0 @@
-[
- {
- "stationID": "20454",
- "date": [
- "2015-03-13",
- "2015-03-17"
- ]
- },
- {
- "stationID": "10021",
- "date": [
- "2015-03-12",
- "2015-03-13"
- ]
- }
-]
diff --git a/tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/schedules_response.json b/tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/schedules_response.json
deleted file mode 100644
index f474f3aff..000000000
--- a/tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/schedules_response.json
+++ /dev/null
@@ -1,35 +0,0 @@
-[
- {
- "stationID": "20454",
- "programs": [
- {
- "programID": "SH005371070000",
- "airDateTime": "2015-03-03T00:00:00Z",
- "duration": 1800,
- "md5": "Sy8HEMBPcuiAx3FBukUhKQ",
- "new": true,
- "audioProperties": [
- "stereo",
- "cc"
- ],
- "videoProperties": [
- "hdtv"
- ]
- },
- {
- "programID": "EP000014577244",
- "airDateTime": "2015-03-03T00:30:00Z",
- "duration": 1800,
- "md5": "25DNXVXO192JI7Y9vSW9lQ",
- "new": true,
- "audioProperties": [
- "stereo",
- "cc"
- ],
- "videoProperties": [
- "hdtv"
- ]
- }
- ]
- }
-]
diff --git a/tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/token_live_response.json b/tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/token_live_response.json
deleted file mode 100644
index 73b0a54c4..000000000
--- a/tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/token_live_response.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "code": 0,
- "message": "OK",
- "serverID": "AWS-SD-web.1",
- "datetime": "2016-08-23T13:55:25Z",
- "token": "f3fca79989cafe7dead71beefedc812b"
-}
diff --git a/tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/token_offline_response.json b/tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/token_offline_response.json
deleted file mode 100644
index b630c2404..000000000
--- a/tests/Jellyfin.Server.Implementations.Tests/LiveTv/SchedulesDirect/TestData/token_offline_response.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "response": "SERVICE_OFFLINE",
- "code": 3000,
- "serverID": "20141201.web.1",
- "message": "Server offline for maintenance.",
- "datetime": "2015-04-23T00:03:32Z",
- "token": "CAFEDEADBEEFCAFEDEADBEEFCAFEDEADBEEFCAFE"
-}
diff --git a/tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/headends_response.json b/tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/headends_response.json
new file mode 100644
index 000000000..015afeecc
--- /dev/null
+++ b/tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/headends_response.json
@@ -0,0 +1 @@
+[{"headend":"CA00053","transport":"Cable","location":"Beverly Hills","lineups":[{"name":"Time Warner Cable - Cable","lineup":"USA-CA00053-DEFAULT","uri":"/20141201/lineups/USA-CA00053-DEFAULT"},{"name":"Time Warner Cable - Digital","lineup":"USA-CA00053-X","uri":"/20141201/lineups/USA-CA00053-X"}]},{"headend":"CA61222","transport":"Cable","location":"Beverly Hills","lineups":[{"name":"Mulholland Estates - Cable","lineup":"USA-CA61222-DEFAULT","uri":"/20141201/lineups/USA-CA61222-DEFAULT"}]},{"headend":"CA66511","transport":"Cable","location":"Los Angeles","lineups":[{"name":"AT&T U-verse TV - Digital","lineup":"USA-CA66511-X","uri":"/20141201/lineups/USA-CA66511-X"}]},{"headend":"CA67309","transport":"Cable","location":"Westchester","lineups":[{"name":"Time Warner Cable Sherman Oaks - Cable","lineup":"USA-CA67309-DEFAULT","uri":"/20141201/lineups/USA-CA67309-DEFAULT"},{"name":"Time Warner Cable Sherman Oaks - Digital","lineup":"USA-CA67309-X","uri":"/20141201/lineups/USA-CA67309-X"}]},{"headend":"CA67310","transport":"Cable","location":"Eagle Rock","lineups":[{"name":"Time Warner Cable City of Los Angeles - Cable","lineup":"USA-CA67310-DEFAULT","uri":"/20141201/lineups/USA-CA67310-DEFAULT"},{"name":"Time Warner Cable City of Los Angeles - Digital","lineup":"USA-CA67310-X","uri":"/20141201/lineups/USA-CA67310-X"}]},{"headend":"DISH803","transport":"Satellite","location":"Los Angeles","lineups":[{"name":"DISH Los Angeles - Satellite","lineup":"USA-DISH803-DEFAULT","uri":"/20141201/lineups/USA-DISH803-DEFAULT"}]},{"headend":"DITV803","transport":"Satellite","location":"Los Angeles","lineups":[{"name":"DIRECTV Los Angeles - Satellite","lineup":"USA-DITV803-DEFAULT","uri":"/20141201/lineups/USA-DITV803-DEFAULT"}]},{"headend":"90210","transport":"Antenna","location":"90210","lineups":[{"name":"Antenna","lineup":"USA-OTA-90210","uri":"/20141201/lineups/USA-OTA-90210"}]}]
diff --git a/tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/lineup_response.json b/tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/lineup_response.json
new file mode 100644
index 000000000..072089470
--- /dev/null
+++ b/tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/lineup_response.json
@@ -0,0 +1 @@
+{"map":[{"stationID":"24326","channel":"001","providerCallsign":"BBC ONE South","logicalChannelNumber":"1","matchType":"providerCallsign"},{"stationID":"17154","channel":"002","providerCallsign":"BBC TWO","logicalChannelNumber":"2","matchType":"providerCallsign"}]}
diff --git a/tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/lineups_response.json b/tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/lineups_response.json
new file mode 100644
index 000000000..032a84e59
--- /dev/null
+++ b/tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/lineups_response.json
@@ -0,0 +1 @@
+{"code":0,"serverID":"20141201.web.1","datetime":"2015-04-17T14:22:17Z","lineups":[{"lineup":"GBR-0001317-DEFAULT","name":"Freeview - Carlton - LWT (Southeast)","transport":"DVB-T","location":"London","uri":"/20141201/lineups/GBR-0001317-DEFAULT"},{"lineup":"USA-IL57303-X","name":"Comcast Waukegan/Lake Forest Area - Digital","transport":"Cable","location":"Lake Forest","uri":"/20141201/lineups/USA-IL57303-X"},{"lineup":"USA-NY67791-X","name":"Verizon Fios Queens - Digital","transport":"Cable","location":"Fresh Meadows","uri":"/20141201/lineups/USA-NY67791-X"},{"lineup":"USA-OTA-60030","name":"Local Over the Air Broadcast","transport":"Antenna","location":"60030","uri":"/20141201/lineups/USA-OTA-60030"},{"lineup":"USA-WI61859-DEFAULT","name":"DELETED LINEUP","isDeleted":true}]}
diff --git a/tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/metadata_programs_response.json b/tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/metadata_programs_response.json
new file mode 100644
index 000000000..78166f09a
--- /dev/null
+++ b/tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/metadata_programs_response.json
@@ -0,0 +1 @@
+[{"programID":"SH00712240","data":[{"width":"135","height":"180","uri":"assets/p282288_b_v2_aa.jpg","size":"Sm","aspect":"3x4","category":"Banner-L3","text":"yes","primary":"true","tier":"Series"},{"width":"720","height":"540","uri":"assets/p282288_b_h6_aa.jpg","size":"Lg","aspect":"4x3","category":"Banner-L3","text":"yes","primary":"true","tier":"Series"},{"width":"960","height":"1440","uri":"assets/p282288_b_v8_aa.jpg","size":"Ms","aspect":"2x3","category":"Banner-L3","text":"yes","primary":"true","tier":"Series"},{"width":"180","height":"135","uri":"assets/p282288_b_h5_aa.jpg","size":"Sm","aspect":"4x3","category":"Banner-L3","text":"yes","primary":"true","tier":"Series"}]}]
diff --git a/tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/programs_response.json b/tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/programs_response.json
new file mode 100644
index 000000000..fe2a94436
--- /dev/null
+++ b/tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/programs_response.json
@@ -0,0 +1 @@
+[{"programID":"EP000000060003","titles":[{"title120":"'Allo 'Allo!"}],"eventDetails":{"subType":"Series"},"descriptions":{"description1000":[{"descriptionLanguage":"en","description":"A disguised British Intelligence officer is sent to help the airmen."}]},"originalAirDate":"1985-11-04","genres":["Sitcom"],"episodeTitle150":"The Poloceman Cometh","metadata":[{"Gracenote":{"season":2,"episode":3}}],"cast":[{"personId":"383774","nameId":"392649","name":"Gorden Kaye","role":"Actor","billingOrder":"01"},{"personId":"246840","nameId":"250387","name":"Carmen Silvera","role":"Actor","billingOrder":"02"},{"personId":"376955","nameId":"385830","name":"Rose Hill","role":"Actor","billingOrder":"03"},{"personId":"259773","nameId":"263340","name":"Vicki Michelle","role":"Actor","billingOrder":"04"},{"personId":"353113","nameId":"361987","name":"Kirsten Cooke","role":"Actor","billingOrder":"05"},{"personId":"77787","nameId":"77787","name":"Richard Marner","role":"Actor","billingOrder":"06"},{"personId":"230921","nameId":"234193","name":"Guy Siner","role":"Actor","billingOrder":"07"},{"personId":"374934","nameId":"383809","name":"Kim Hartman","role":"Actor","billingOrder":"08"},{"personId":"369151","nameId":"378026","name":"Richard Gibson","role":"Actor","billingOrder":"09"},{"personId":"343690","nameId":"352564","name":"Arthur Bostrom","role":"Actor","billingOrder":"10"},{"personId":"352557","nameId":"361431","name":"John D. Collins","role":"Actor","billingOrder":"11"},{"personId":"605275","nameId":"627734","name":"Nicholas Frankau","role":"Actor","billingOrder":"12"},{"personId":"373394","nameId":"382269","name":"Jack Haig","role":"Actor","billingOrder":"13"}],"crew":[{"personId":"354407","nameId":"363281","name":"David Croft","role":"Director","billingOrder":"01"},{"personId":"354407","nameId":"363281","name":"David Croft","role":"Writer","billingOrder":"02"},{"personId":"105145","nameId":"105145","name":"Jeremy Lloyd","role":"Writer","billingOrder":"03"}],"showType":"Series","hasImageArtwork":true,"md5":"Jo5NKxoo44xRvBCAq8QT2A"},{"programID":"EP000000510142","titles":[{"title120":"A Different World"}],"eventDetails":{"subType":"Series"},"descriptions":{"description1000":[{"descriptionLanguage":"en","description":"Whitley and Dwayne tell new students about their honeymoon in Los Angeles."}]},"originalAirDate":"1992-09-24","genres":["Sitcom"],"episodeTitle150":"Honeymoon in L.A.","metadata":[{"Gracenote":{"season":6,"episode":1}}],"cast":[{"personId":"700","nameId":"700","name":"Jasmine Guy","role":"Actor","billingOrder":"01"},{"personId":"729","nameId":"729","name":"Kadeem Hardison","role":"Actor","billingOrder":"02"},{"personId":"120","nameId":"120","name":"Darryl M. Bell","role":"Actor","billingOrder":"03"},{"personId":"1729","nameId":"1729","name":"Cree Summer","role":"Actor","billingOrder":"04"},{"personId":"217","nameId":"217","name":"Charnele Brown","role":"Actor","billingOrder":"05"},{"personId":"1811","nameId":"1811","name":"Glynn Turman","role":"Actor","billingOrder":"06"},{"personId":"1232","nameId":"1232","name":"Lou Myers","role":"Actor","billingOrder":"07"},{"personId":"1363","nameId":"1363","name":"Jada Pinkett","role":"Guest Star","billingOrder":"08"},{"personId":"222967","nameId":"225536","name":"Ajai Sanders","role":"Guest Star","billingOrder":"09"},{"personId":"181744","nameId":"183292","name":"Karen Malina White","role":"Guest Star","billingOrder":"10"},{"personId":"305017","nameId":"318897","name":"Patrick Y. Malone","role":"Guest Star","billingOrder":"11"},{"personId":"9841","nameId":"9841","name":"Bumper Robinson","role":"Guest Star","billingOrder":"12"},{"personId":"426422","nameId":"435297","name":"Sister Souljah","role":"Guest Star","billingOrder":"13"},{"personId":"25","nameId":"25","name":"Debbie Allen","role":"Guest Star","billingOrder":"14"},{"personId":"668","nameId":"668","name":"Gilbert Gottfried","role":"Guest Star","billingOrder":"15"}],"showType":"Series","hasImageArtwork":true,"md5":"P5kz0QmCeYxIA+yL0H4DWw"}]
diff --git a/tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/schedules_request.json b/tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/schedules_request.json
new file mode 100644
index 000000000..5ef1bfb1c
--- /dev/null
+++ b/tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/schedules_request.json
@@ -0,0 +1 @@
+[{"stationID":"20454","date":["2015-03-13","2015-03-17"]},{"stationID":"10021","date":["2015-03-12","2015-03-13"]}]
diff --git a/tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/schedules_response.json b/tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/schedules_response.json
new file mode 100644
index 000000000..4a97e5517
--- /dev/null
+++ b/tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/schedules_response.json
@@ -0,0 +1 @@
+[{"stationID":"20454","programs":[{"programID":"SH005371070000","airDateTime":"2015-03-03T00:00:00Z","duration":1800,"md5":"Sy8HEMBPcuiAx3FBukUhKQ","new":true,"audioProperties":["stereo","cc"],"videoProperties":["hdtv"]},{"programID":"EP000014577244","airDateTime":"2015-03-03T00:30:00Z","duration":1800,"md5":"25DNXVXO192JI7Y9vSW9lQ","new":true,"audioProperties":["stereo","cc"],"videoProperties":["hdtv"]}]}]
diff --git a/tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/token_live_response.json b/tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/token_live_response.json
new file mode 100644
index 000000000..e5fb64a6f
--- /dev/null
+++ b/tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/token_live_response.json
@@ -0,0 +1 @@
+{"code":0,"message":"OK","serverID":"AWS-SD-web.1","datetime":"2016-08-23T13:55:25Z","token":"f3fca79989cafe7dead71beefedc812b"}
diff --git a/tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/token_offline_response.json b/tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/token_offline_response.json
new file mode 100644
index 000000000..b66a4ed0c
--- /dev/null
+++ b/tests/Jellyfin.Server.Implementations.Tests/Test Data/SchedulesDirect/token_offline_response.json
@@ -0,0 +1 @@
+{"response":"SERVICE_OFFLINE","code":3000,"serverID":"20141201.web.1","message":"Server offline for maintenance.","datetime":"2015-04-23T00:03:32Z","token":"CAFEDEADBEEFCAFEDEADBEEFCAFEDEADBEEFCAFE"}