diff --git a/src/NzbDrone.Api/Calendar/CalendarModule.cs b/src/NzbDrone.Api/Calendar/CalendarModule.cs index 9a33ebf29..efe600e6b 100644 --- a/src/NzbDrone.Api/Calendar/CalendarModule.cs +++ b/src/NzbDrone.Api/Calendar/CalendarModule.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using Nancy; @@ -17,7 +17,6 @@ using NzbDrone.Core.Validation.Paths; using NzbDrone.Core.DataAugmentation.Scene; using NzbDrone.Core.Validation; using NzbDrone.Core.DecisionEngine; -using NzbDrone.Core.Tv; using NzbDrone.SignalR; namespace NzbDrone.Api.Calendar diff --git a/src/NzbDrone.Api/Series/MovieLookupModule.cs b/src/NzbDrone.Api/Series/MovieLookupModule.cs index 1b88253d9..91f385811 100644 --- a/src/NzbDrone.Api/Series/MovieLookupModule.cs +++ b/src/NzbDrone.Api/Series/MovieLookupModule.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using Nancy; using NzbDrone.Api.Extensions; using NzbDrone.Core.MediaCover; @@ -15,7 +15,7 @@ namespace NzbDrone.Api.Movie private readonly IProvideMovieInfo _movieInfo; public MovieLookupModule(ISearchForNewMovie searchProxy, IProvideMovieInfo movieInfo) - : base("/movies/lookup") + : base("/movie/lookup") { _movieInfo = movieInfo; _searchProxy = searchProxy; @@ -64,4 +64,4 @@ namespace NzbDrone.Api.Movie } } } -} \ No newline at end of file +} diff --git a/src/NzbDrone.Integration.Test/ApiTests/BlacklistFixture.cs b/src/NzbDrone.Integration.Test/ApiTests/BlacklistFixture.cs index b8b18b70a..56588c011 100644 --- a/src/NzbDrone.Integration.Test/ApiTests/BlacklistFixture.cs +++ b/src/NzbDrone.Integration.Test/ApiTests/BlacklistFixture.cs @@ -1,23 +1,23 @@ -using FluentAssertions; +using FluentAssertions; using NUnit.Framework; -using NzbDrone.Api.Series; +using NzbDrone.Api.Movie; namespace NzbDrone.Integration.Test.ApiTests { [TestFixture] public class BlacklistFixture : IntegrationTest { - private SeriesResource _series; + private MovieResource _movie; [Test] [Ignore("Adding to blacklist not supported")] public void should_be_able_to_add_to_blacklist() { - _series = EnsureSeries(266189, "The Blacklist"); + _movie = EnsureMovie("tt0110912", "The Blacklist"); Blacklist.Post(new Api.Blacklist.BlacklistResource { - SeriesId = _series.Id, + MovieId = _movie.Id, SourceTitle = "Blacklist.S01E01.Brought.To.You.By-BoomBoxHD" }); } diff --git a/src/NzbDrone.Integration.Test/ApiTests/CalendarFixture.cs b/src/NzbDrone.Integration.Test/ApiTests/CalendarFixture.cs index fdc5c194f..b5a3d4de7 100644 --- a/src/NzbDrone.Integration.Test/ApiTests/CalendarFixture.cs +++ b/src/NzbDrone.Integration.Test/ApiTests/CalendarFixture.cs @@ -1,6 +1,6 @@ -using FluentAssertions; +using FluentAssertions; using NUnit.Framework; -using NzbDrone.Api.Episodes; +using NzbDrone.Api.Movie; using NzbDrone.Integration.Test.Client; using System; using System.Collections.Generic; @@ -11,62 +11,62 @@ namespace NzbDrone.Integration.Test.ApiTests [TestFixture] public class CalendarFixture : IntegrationTest { - public ClientBase Calendar; + public ClientBase Calendar; protected override void InitRestClients() { base.InitRestClients(); - Calendar = new ClientBase(RestClient, ApiKey, "calendar"); + Calendar = new ClientBase(RestClient, ApiKey, "calendar"); } [Test] - public void should_be_able_to_get_episodes() + public void should_be_able_to_get_movies() { - var series = EnsureSeries(266189, "The Blacklist", true); + var movie = EnsureMovie("tt0110912", "Pulp Fiction", true); var request = Calendar.BuildRequest(); - request.AddParameter("start", new DateTime(2015, 10, 1).ToString("s") + "Z"); - request.AddParameter("end", new DateTime(2015, 10, 3).ToString("s") + "Z"); - var items = Calendar.Get>(request); + request.AddParameter("start", new DateTime(1993, 10, 1).ToString("s") + "Z"); + request.AddParameter("end", new DateTime(1995, 10, 3).ToString("s") + "Z"); + var items = Calendar.Get>(request); - items = items.Where(v => v.SeriesId == series.Id).ToList(); + items = items.Where(v => v.Id == movie.Id).ToList(); items.Should().HaveCount(1); - items.First().Title.Should().Be("The Troll Farmer"); + items.First().Title.Should().Be("Pulp Fiction"); } [Test] - public void should_not_be_able_to_get_unmonitored_episodes() + public void should_not_be_able_to_get_unmonitored_movies() { - var series = EnsureSeries(266189, "The Blacklist", false); + var movie = EnsureMovie("tt0110912", "Pulp Fiction", false); var request = Calendar.BuildRequest(); - request.AddParameter("start", new DateTime(2015, 10, 1).ToString("s") + "Z"); - request.AddParameter("end", new DateTime(2015, 10, 3).ToString("s") + "Z"); + request.AddParameter("start", new DateTime(1993, 10, 1).ToString("s") + "Z"); + request.AddParameter("end", new DateTime(1995, 10, 3).ToString("s") + "Z"); request.AddParameter("unmonitored", "false"); - var items = Calendar.Get>(request); + var items = Calendar.Get>(request); - items = items.Where(v => v.SeriesId == series.Id).ToList(); + items = items.Where(v => v.Id == movie.Id).ToList(); items.Should().BeEmpty(); } [Test] - public void should_be_able_to_get_unmonitored_episodes() + public void should_be_able_to_get_unmonitored_movies() { - var series = EnsureSeries(266189, "The Blacklist", false); + var movie = EnsureMovie("tt0110912", "Pulp Fiction", false); var request = Calendar.BuildRequest(); - request.AddParameter("start", new DateTime(2015, 10, 1).ToString("s") + "Z"); - request.AddParameter("end", new DateTime(2015, 10, 3).ToString("s") + "Z"); + request.AddParameter("start", new DateTime(1993, 10, 1).ToString("s") + "Z"); + request.AddParameter("end", new DateTime(1995, 10, 3).ToString("s") + "Z"); request.AddParameter("unmonitored", "true"); - var items = Calendar.Get>(request); + var items = Calendar.Get>(request); - items = items.Where(v => v.SeriesId == series.Id).ToList(); + items = items.Where(v => v.Id == movie.Id).ToList(); items.Should().HaveCount(1); - items.First().Title.Should().Be("The Troll Farmer"); + items.First().Title.Should().Be("Pulp Fiction"); } } } diff --git a/src/NzbDrone.Integration.Test/ApiTests/EpisodeFixture.cs b/src/NzbDrone.Integration.Test/ApiTests/EpisodeFixture.cs deleted file mode 100644 index b59cf1668..000000000 --- a/src/NzbDrone.Integration.Test/ApiTests/EpisodeFixture.cs +++ /dev/null @@ -1,67 +0,0 @@ -using System.Threading; -using FluentAssertions; -using NUnit.Framework; -using NzbDrone.Api.Series; -using System.Linq; -using NzbDrone.Test.Common; - -namespace NzbDrone.Integration.Test.ApiTests -{ - [TestFixture] - public class EpisodeFixture : IntegrationTest - { - private SeriesResource series; - - [SetUp] - public void Setup() - { - series = GivenSeriesWithEpisodes(); - } - - private SeriesResource GivenSeriesWithEpisodes() - { - var newSeries = Series.Lookup("archer").Single(c => c.TvdbId == 110381); - - newSeries.ProfileId = 1; - newSeries.Path = @"C:\Test\Archer".AsOsAgnostic(); - - newSeries = Series.Post(newSeries); - - WaitForCompletion(() => Episodes.GetEpisodesInSeries(newSeries.Id).Count > 0); - - return newSeries; - } - - [Test] - public void should_be_able_to_get_all_episodes_in_series() - { - Episodes.GetEpisodesInSeries(series.Id).Count.Should().BeGreaterThan(0); - } - - [Test] - public void should_be_able_to_get_a_single_episode() - { - var episodes = Episodes.GetEpisodesInSeries(series.Id); - - Episodes.Get(episodes.First().Id).Should().NotBeNull(); - } - - [Test] - public void should_be_able_to_set_monitor_status() - { - var episodes = Episodes.GetEpisodesInSeries(series.Id); - var updatedEpisode = episodes.First(); - updatedEpisode.Monitored = false; - - Episodes.Put(updatedEpisode).Monitored.Should().BeFalse(); - } - - - [TearDown] - public void TearDown() - { - Series.Delete(series.Id); - Thread.Sleep(2000); - } - } -} diff --git a/src/NzbDrone.Integration.Test/ApiTests/IndexerFixture.cs b/src/NzbDrone.Integration.Test/ApiTests/IndexerFixture.cs index 2e38af936..0124c83fd 100644 --- a/src/NzbDrone.Integration.Test/ApiTests/IndexerFixture.cs +++ b/src/NzbDrone.Integration.Test/ApiTests/IndexerFixture.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using FluentAssertions; using NUnit.Framework; using NzbDrone.Core.ThingiProvider; @@ -9,6 +9,7 @@ namespace NzbDrone.Integration.Test.ApiTests public class IndexerFixture : IntegrationTest { [Test] + [Ignore("Need mock Newznab to test")] public void should_have_built_in_indexer() { var indexers = Indexers.All(); @@ -18,4 +19,4 @@ namespace NzbDrone.Integration.Test.ApiTests indexers.Where(c => c.ConfigContract == typeof(NullConfig).Name).Should().OnlyContain(c => c.EnableRss); } } -} \ No newline at end of file +} diff --git a/src/NzbDrone.Integration.Test/ApiTests/MovieEditorFixture.cs b/src/NzbDrone.Integration.Test/ApiTests/MovieEditorFixture.cs new file mode 100644 index 000000000..f46553294 --- /dev/null +++ b/src/NzbDrone.Integration.Test/ApiTests/MovieEditorFixture.cs @@ -0,0 +1,42 @@ +using FluentAssertions; +using NUnit.Framework; +using System.Linq; +using NzbDrone.Test.Common; + +namespace NzbDrone.Integration.Test.ApiTests +{ + [TestFixture] + public class MovieEditorFixture : IntegrationTest + { + private void GivenExistingMovie() + { + foreach (var title in new[] { "90210", "Dexter" }) + { + var newMovie = Movies.Lookup(title).First(); + + newMovie.ProfileId = 1; + newMovie.Path = string.Format(@"C:\Test\{0}", title).AsOsAgnostic(); + + Movies.Post(newMovie); + } + } + + [Test] + public void should_be_able_to_update_multiple_movies() + { + GivenExistingMovie(); + + var movie = Movies.All(); + + foreach (var s in movie) + { + s.ProfileId = 2; + } + + var result = Movies.Editor(movie); + + result.Should().HaveCount(2); + result.TrueForAll(s => s.ProfileId == 2).Should().BeTrue(); + } + } +} diff --git a/src/NzbDrone.Integration.Test/ApiTests/EpisodeFileFixture.cs b/src/NzbDrone.Integration.Test/ApiTests/MovieFileFixture.cs similarity index 54% rename from src/NzbDrone.Integration.Test/ApiTests/EpisodeFileFixture.cs rename to src/NzbDrone.Integration.Test/ApiTests/MovieFileFixture.cs index 90e4bbe49..13a57dd6d 100644 --- a/src/NzbDrone.Integration.Test/ApiTests/EpisodeFileFixture.cs +++ b/src/NzbDrone.Integration.Test/ApiTests/MovieFileFixture.cs @@ -1,12 +1,12 @@ -using NUnit.Framework; +using NUnit.Framework; namespace NzbDrone.Integration.Test.ApiTests { [TestFixture] - public class EpisodeFileFixture : IntegrationTest + public class MovieFileFixture : IntegrationTest { [Test] - public void get_all_episodefiles() + public void get_all_moviefiles() { Assert.Ignore("TODO"); } diff --git a/src/NzbDrone.Integration.Test/ApiTests/MovieFixture.cs b/src/NzbDrone.Integration.Test/ApiTests/MovieFixture.cs new file mode 100644 index 000000000..045078b8a --- /dev/null +++ b/src/NzbDrone.Integration.Test/ApiTests/MovieFixture.cs @@ -0,0 +1,168 @@ +using FluentAssertions; +using NUnit.Framework; +using System.Linq; +using System.IO; +using System.Collections.Generic; +using NzbDrone.Core.Tv; + +namespace NzbDrone.Integration.Test.ApiTests +{ + [TestFixture] + public class MovieFixture : IntegrationTest + { + [Test, Order(0)] + public void add_movie_with_tags_should_store_them() + { + EnsureNoMovie("tt0110912", "Pulp Fiction"); + var tag = EnsureTag("abc"); + + var movie = Movies.Lookup("imdb:tt0110912").Single(); + + movie.ProfileId = 1; + movie.Path = Path.Combine(MovieRootFolder, movie.Title); + movie.Tags = new HashSet(); + movie.Tags.Add(tag.Id); + + var result = Movies.Post(movie); + + result.Should().NotBeNull(); + result.Tags.Should().Equal(tag.Id); + } + + [Test, Order(0)] + public void add_movie_without_profileid_should_return_badrequest() + { + EnsureNoMovie("tt0110912", "Pulp Fiction"); + + var movie = Movies.Lookup("imdb:tt0110912").Single(); + + movie.Path = Path.Combine(MovieRootFolder, movie.Title); + + Movies.InvalidPost(movie); + } + + [Test, Order(0)] + public void add_movie_without_path_should_return_badrequest() + { + EnsureNoMovie("tt0110912", "Pulp Fiction"); + + var movie = Movies.Lookup("imdb:tt0110912").Single(); + + movie.ProfileId = 1; + + Movies.InvalidPost(movie); + } + + [Test, Order(1)] + public void add_movie() + { + EnsureNoMovie("tt0110912", "Pulp Fiction"); + + var movie = Movies.Lookup("imdb:tt0110912").Single(); + + movie.ProfileId = 1; + movie.Path = Path.Combine(MovieRootFolder, movie.Title); + + var result = Movies.Post(movie); + + result.Should().NotBeNull(); + result.Id.Should().NotBe(0); + result.ProfileId.Should().Be(1); + result.Path.Should().Be(Path.Combine(MovieRootFolder, movie.Title)); + } + + + [Test, Order(2)] + public void get_all_movies() + { + EnsureMovie("tt0110912", "Pulp Fiction"); + EnsureMovie("tt0468569", "The Dark Knight"); + + Movies.All().Should().NotBeNullOrEmpty(); + Movies.All().Should().Contain(v => v.ImdbId == "tt0110912"); + Movies.All().Should().Contain(v => v.ImdbId == "tt0468569"); + } + + [Test, Order(2)] + public void get_movie_by_id() + { + var movie = EnsureMovie("tt0110912", "Pulp Fiction"); + + var result = Movies.Get(movie.Id); + + result.ImdbId.Should().Be("tt0110912"); + } + + [Test] + public void get_movie_by_unknown_id_should_return_404() + { + var result = Movies.InvalidGet(1000000); + } + + [Test, Order(2)] + public void update_movie_profile_id() + { + var movie = EnsureMovie("tt0110912", "Pulp Fiction"); + + var profileId = 1; + if (movie.ProfileId == profileId) + { + profileId = 2; + } + + movie.ProfileId = profileId; + + var result = Movies.Put(movie); + + Movies.Get(movie.Id).ProfileId.Should().Be(profileId); + } + + [Test, Order(3)] + public void update_movie_monitored() + { + var movie = EnsureMovie("tt0110912", "Pulp Fiction", false); + + movie.Monitored.Should().BeFalse(); + + movie.Monitored = true; + + var result = Movies.Put(movie); + + result.Monitored.Should().BeTrue(); + } + + [Test, Order(3)] + public void update_movie_tags() + { + var movie = EnsureMovie("tt0110912", "Pulp Fiction"); + var tag = EnsureTag("abc"); + + if (movie.Tags.Contains(tag.Id)) + { + movie.Tags.Remove(tag.Id); + + var result = Movies.Put(movie); + Movies.Get(movie.Id).Tags.Should().NotContain(tag.Id); + } + else + { + movie.Tags.Add(tag.Id); + + var result = Movies.Put(movie); + Movies.Get(movie.Id).Tags.Should().Contain(tag.Id); + } + } + + [Test, Order(4)] + public void delete_movie() + { + var movie = EnsureMovie("tt0110912", "Pulp Fiction"); + + Movies.Get(movie.Id).Should().NotBeNull(); + + Movies.Delete(movie.Id); + + Movies.All().Should().NotContain(v => v.ImdbId == "tt0110912"); + } + } +} diff --git a/src/NzbDrone.Integration.Test/ApiTests/MovieLookupFixture.cs b/src/NzbDrone.Integration.Test/ApiTests/MovieLookupFixture.cs new file mode 100644 index 000000000..ff0ef645e --- /dev/null +++ b/src/NzbDrone.Integration.Test/ApiTests/MovieLookupFixture.cs @@ -0,0 +1,37 @@ +using FluentAssertions; +using NUnit.Framework; + +namespace NzbDrone.Integration.Test.ApiTests +{ + [TestFixture] + public class MovieLookupFixture : IntegrationTest + { + [TestCase("psycho", "Psycho")] + [TestCase("pulp fiction", "Pulp Fiction")] + public void lookup_new_movie_by_title(string term, string title) + { + var movie = Movies.Lookup(term); + + movie.Should().NotBeEmpty(); + movie.Should().Contain(c => c.Title == title); + } + + [Test] + public void lookup_new_movie_by_imdbid() + { + var movie = Movies.Lookup("imdb:tt0110912"); + + movie.Should().NotBeEmpty(); + movie.Should().Contain(c => c.Title == "Pulp Fiction"); + } + + [Test] + [Ignore("Unreliable")] + public void lookup_random_movie_using_asterix() + { + var movie = Movies.Lookup("*"); + + movie.Should().NotBeEmpty(); + } + } +} diff --git a/src/NzbDrone.Integration.Test/ApiTests/NamingConfigFixture.cs b/src/NzbDrone.Integration.Test/ApiTests/NamingConfigFixture.cs index 3dcfa5c83..c203e6576 100644 --- a/src/NzbDrone.Integration.Test/ApiTests/NamingConfigFixture.cs +++ b/src/NzbDrone.Integration.Test/ApiTests/NamingConfigFixture.cs @@ -1,4 +1,4 @@ -using FluentAssertions; +using FluentAssertions; using NUnit.Framework; namespace NzbDrone.Integration.Test.ApiTests @@ -26,64 +26,31 @@ namespace NzbDrone.Integration.Test.ApiTests { var config = NamingConfig.GetSingle(); config.RenameEpisodes = false; - config.StandardEpisodeFormat = "{Series Title} - {season}x{episode:00} - {Episode Title}"; - config.DailyEpisodeFormat = "{Series Title} - {Air-Date} - {Episode Title}"; - config.AnimeEpisodeFormat = "{Series Title} - {season}x{episode:00} - {Episode Title}"; + config.StandardMovieFormat = "{Movie Title}"; var result = NamingConfig.Put(config); result.RenameEpisodes.Should().BeFalse(); - result.StandardEpisodeFormat.Should().Be(config.StandardEpisodeFormat); - result.DailyEpisodeFormat.Should().Be(config.DailyEpisodeFormat); - result.AnimeEpisodeFormat.Should().Be(config.AnimeEpisodeFormat); - } - - [Test] - public void should_get_bad_request_if_standard_format_is_empty() - { - var config = NamingConfig.GetSingle(); - config.RenameEpisodes = true; - config.StandardEpisodeFormat = ""; - config.DailyEpisodeFormat = "{Series Title} - {Air-Date} - {Episode Title}"; - config.AnimeEpisodeFormat = "{Series Title} - {season}x{episode:00} - {Episode Title}"; + result.StandardMovieFormat.Should().Be(config.StandardMovieFormat); - var errors = NamingConfig.InvalidPut(config); - errors.Should().NotBeNull(); } [Test] - public void should_get_bad_request_if_standard_format_doesnt_contain_season_and_episode() + public void should_get_bad_request_if_standard_format_is_empty() { var config = NamingConfig.GetSingle(); config.RenameEpisodes = true; - config.StandardEpisodeFormat = "{season}"; - config.DailyEpisodeFormat = "{Series Title} - {Air-Date} - {Episode Title}"; - config.AnimeEpisodeFormat = "{Series Title} - {season}x{episode:00} - {Episode Title}"; + config.StandardMovieFormat = ""; var errors = NamingConfig.InvalidPut(config); errors.Should().NotBeNull(); } [Test] - public void should_get_bad_request_if_daily_format_doesnt_contain_season_and_episode_or_air_date() + public void should_get_bad_request_if_standard_format_doesnt_contain_title() { var config = NamingConfig.GetSingle(); config.RenameEpisodes = true; - config.StandardEpisodeFormat = "{Series Title} - {season}x{episode:00} - {Episode Title}"; - config.DailyEpisodeFormat = "{Series Title} - {season} - {Episode Title}"; - config.AnimeEpisodeFormat = "{Series Title} - {season}x{episode:00} - {Episode Title}"; - - var errors = NamingConfig.InvalidPut(config); - errors.Should().NotBeNull(); - } - - [Test] - public void should_get_bad_request_if_anime_format_doesnt_contain_season_and_episode_or_absolute() - { - var config = NamingConfig.GetSingle(); - config.RenameEpisodes = false; - config.StandardEpisodeFormat = "{Series Title} - {season}x{episode:00} - {Episode Title}"; - config.DailyEpisodeFormat = "{Series Title} - {Air-Date} - {Episode Title}"; - config.AnimeEpisodeFormat = "{Series Title} - {season} - {Episode Title}"; + config.StandardMovieFormat = "{quality}"; var errors = NamingConfig.InvalidPut(config); errors.Should().NotBeNull(); @@ -94,8 +61,7 @@ namespace NzbDrone.Integration.Test.ApiTests { var config = NamingConfig.GetSingle(); config.RenameEpisodes = false; - config.StandardEpisodeFormat = ""; - config.DailyEpisodeFormat = ""; + config.StandardMovieFormat = ""; var errors = NamingConfig.InvalidPut(config); errors.Should().NotBeNull(); @@ -106,22 +72,21 @@ namespace NzbDrone.Integration.Test.ApiTests { var config = NamingConfig.GetSingle(); config.RenameEpisodes = true; - config.StandardEpisodeFormat = ""; - config.DailyEpisodeFormat = ""; + config.StandardMovieFormat = ""; var errors = NamingConfig.InvalidPut(config); errors.Should().NotBeNull(); } [Test] - public void should_get_bad_request_if_series_folder_format_does_not_contain_series_title() + public void should_get_bad_request_if_movie_folder_format_does_not_contain_movie_title() { var config = NamingConfig.GetSingle(); config.RenameEpisodes = true; - config.SeriesFolderFormat = "This and That"; + config.MovieFolderFormat = "This and That"; var errors = NamingConfig.InvalidPut(config); errors.Should().NotBeNull(); } } -} \ No newline at end of file +} diff --git a/src/NzbDrone.Integration.Test/ApiTests/ReleaseFixture.cs b/src/NzbDrone.Integration.Test/ApiTests/ReleaseFixture.cs index 1b5df1c33..cfad5038e 100644 --- a/src/NzbDrone.Integration.Test/ApiTests/ReleaseFixture.cs +++ b/src/NzbDrone.Integration.Test/ApiTests/ReleaseFixture.cs @@ -1,4 +1,4 @@ -using FluentAssertions; +using FluentAssertions; using NUnit.Framework; using NzbDrone.Api.Indexers; using System.Linq; @@ -7,15 +7,16 @@ using System.Net; namespace NzbDrone.Integration.Test.ApiTests { [TestFixture] + [Ignore("Need mock Newznab to test")] public class ReleaseFixture : IntegrationTest { [Test] - public void should_only_have_unknown_series_releases() + public void should_only_have_unknown_movie_releases() { var releases = Releases.All(); var indexers = Indexers.All(); - releases.Should().OnlyContain(c => c.Rejections.Contains("Unknown Series")); + releases.Should().OnlyContain(c => c.Rejections.Contains("Unknown Movie")); releases.Should().OnlyContain(c => BeValidRelease(c)); } @@ -55,4 +56,4 @@ namespace NzbDrone.Integration.Test.ApiTests return true; } } -} \ No newline at end of file +} diff --git a/src/NzbDrone.Integration.Test/ApiTests/SeriesEditorFixture.cs b/src/NzbDrone.Integration.Test/ApiTests/SeriesEditorFixture.cs deleted file mode 100644 index e6a36ca0d..000000000 --- a/src/NzbDrone.Integration.Test/ApiTests/SeriesEditorFixture.cs +++ /dev/null @@ -1,42 +0,0 @@ -using FluentAssertions; -using NUnit.Framework; -using System.Linq; -using NzbDrone.Test.Common; - -namespace NzbDrone.Integration.Test.ApiTests -{ - [TestFixture] - public class SeriesEditorFixture : IntegrationTest - { - private void GivenExistingSeries() - { - foreach (var title in new[] { "90210", "Dexter" }) - { - var newSeries = Series.Lookup(title).First(); - - newSeries.ProfileId = 1; - newSeries.Path = string.Format(@"C:\Test\{0}", title).AsOsAgnostic(); - - Series.Post(newSeries); - } - } - - [Test] - public void should_be_able_to_update_multiple_series() - { - GivenExistingSeries(); - - var series = Series.All(); - - foreach (var s in series) - { - s.ProfileId = 2; - } - - var result = Series.Editor(series); - - result.Should().HaveCount(2); - result.TrueForAll(s => s.ProfileId == 2).Should().BeTrue(); - } - } -} \ No newline at end of file diff --git a/src/NzbDrone.Integration.Test/ApiTests/SeriesFixture.cs b/src/NzbDrone.Integration.Test/ApiTests/SeriesFixture.cs deleted file mode 100644 index 3c44e2336..000000000 --- a/src/NzbDrone.Integration.Test/ApiTests/SeriesFixture.cs +++ /dev/null @@ -1,173 +0,0 @@ -using FluentAssertions; -using NUnit.Framework; -using System.Linq; -using System.IO; -using System.Collections.Generic; - -namespace NzbDrone.Integration.Test.ApiTests -{ - [TestFixture] - public class SeriesFixture : IntegrationTest - { - [Test, Order(0)] - public void add_series_with_tags_should_store_them() - { - EnsureNoSeries(266189, "The Blacklist"); - var tag = EnsureTag("abc"); - - var series = Series.Lookup("tvdb:266189").Single(); - - series.ProfileId = 1; - series.Path = Path.Combine(SeriesRootFolder, series.Title); - series.Tags = new HashSet(); - series.Tags.Add(tag.Id); - - var result = Series.Post(series); - - result.Should().NotBeNull(); - result.Tags.Should().Equal(tag.Id); - } - - [Test, Order(0)] - public void add_series_without_profileid_should_return_badrequest() - { - EnsureNoSeries(266189, "The Blacklist"); - - var series = Series.Lookup("tvdb:266189").Single(); - - series.Path = Path.Combine(SeriesRootFolder, series.Title); - - Series.InvalidPost(series); - } - - [Test, Order(0)] - public void add_series_without_path_should_return_badrequest() - { - EnsureNoSeries(266189, "The Blacklist"); - - var series = Series.Lookup("tvdb:266189").Single(); - - series.ProfileId = 1; - - Series.InvalidPost(series); - } - - [Test, Order(1)] - public void add_series() - { - EnsureNoSeries(266189, "The Blacklist"); - - var series = Series.Lookup("tvdb:266189").Single(); - - series.ProfileId = 1; - series.Path = Path.Combine(SeriesRootFolder, series.Title); - - var result = Series.Post(series); - - result.Should().NotBeNull(); - result.Id.Should().NotBe(0); - result.ProfileId.Should().Be(1); - result.Path.Should().Be(Path.Combine(SeriesRootFolder, series.Title)); - } - - - [Test, Order(2)] - public void get_all_series() - { - EnsureSeries(266189, "The Blacklist"); - EnsureSeries(73065, "Archer"); - - Series.All().Should().NotBeNullOrEmpty(); - Series.All().Should().Contain(v => v.TvdbId == 73065); - Series.All().Should().Contain(v => v.TvdbId == 266189); - } - - [Test, Order(2)] - public void get_series_by_id() - { - var series = EnsureSeries(266189, "The Blacklist"); - - var result = Series.Get(series.Id); - - result.TvdbId.Should().Be(266189); - } - - [Test] - public void get_series_by_unknown_id_should_return_404() - { - var result = Series.InvalidGet(1000000); - } - - [Test, Order(2)] - public void update_series_profile_id() - { - var series = EnsureSeries(266189, "The Blacklist"); - - var profileId = 1; - if (series.ProfileId == profileId) - { - profileId = 2; - } - - series.ProfileId = profileId; - - var result = Series.Put(series); - - Series.Get(series.Id).ProfileId.Should().Be(profileId); - } - - [Test, Order(3)] - public void update_series_monitored() - { - var series = EnsureSeries(266189, "The Blacklist", false); - - series.Monitored.Should().BeFalse(); - series.Seasons.First().Monitored.Should().BeFalse(); - - series.Monitored = true; - series.Seasons.ForEach(season => - { - season.Monitored = true; - }); - - var result = Series.Put(series); - - result.Monitored.Should().BeTrue(); - result.Seasons.First().Monitored.Should().BeTrue(); - } - - [Test, Order(3)] - public void update_series_tags() - { - var series = EnsureSeries(266189, "The Blacklist"); - var tag = EnsureTag("abc"); - - if (series.Tags.Contains(tag.Id)) - { - series.Tags.Remove(tag.Id); - - var result = Series.Put(series); - Series.Get(series.Id).Tags.Should().NotContain(tag.Id); - } - else - { - series.Tags.Add(tag.Id); - - var result = Series.Put(series); - Series.Get(series.Id).Tags.Should().Contain(tag.Id); - } - } - - [Test, Order(4)] - public void delete_series() - { - var series = EnsureSeries(266189, "The Blacklist"); - - Series.Get(series.Id).Should().NotBeNull(); - - Series.Delete(series.Id); - - Series.All().Should().NotContain(v => v.TvdbId == 266189); - } - } -} \ No newline at end of file diff --git a/src/NzbDrone.Integration.Test/ApiTests/SeriesLookupFixture.cs b/src/NzbDrone.Integration.Test/ApiTests/SeriesLookupFixture.cs deleted file mode 100644 index f45169551..000000000 --- a/src/NzbDrone.Integration.Test/ApiTests/SeriesLookupFixture.cs +++ /dev/null @@ -1,37 +0,0 @@ -using FluentAssertions; -using NUnit.Framework; - -namespace NzbDrone.Integration.Test.ApiTests -{ - [TestFixture] - public class SeriesLookupFixture : IntegrationTest - { - [TestCase("archer", "Archer (2009)")] - [TestCase("90210", "90210")] - public void lookup_new_series_by_title(string term, string title) - { - var series = Series.Lookup(term); - - series.Should().NotBeEmpty(); - series.Should().Contain(c => c.Title == title); - } - - [Test] - public void lookup_new_series_by_tvdbid() - { - var series = Series.Lookup("tvdb:266189"); - - series.Should().NotBeEmpty(); - series.Should().Contain(c => c.Title == "The Blacklist"); - } - - [Test] - [Ignore("Unreliable")] - public void lookup_random_series_using_asterix() - { - var series = Series.Lookup("*"); - - series.Should().NotBeEmpty(); - } - } -} \ No newline at end of file diff --git a/src/NzbDrone.Integration.Test/ApiTests/WantedFixture.cs b/src/NzbDrone.Integration.Test/ApiTests/WantedFixture.cs index 01e5df8e5..4f4cc5827 100644 --- a/src/NzbDrone.Integration.Test/ApiTests/WantedFixture.cs +++ b/src/NzbDrone.Integration.Test/ApiTests/WantedFixture.cs @@ -11,9 +11,9 @@ namespace NzbDrone.Integration.Test.ApiTests [Test, Order(0)] public void missing_should_be_empty() { - EnsureNoSeries(266189, "The Blacklist"); + EnsureNoMovie("tt0110912", "Pulp Fiction"); - var result = WantedMissing.GetPaged(0, 15, "airDateUtc", "desc"); + var result = WantedMissing.GetPaged(0, 15, "physicalRelease", "desc"); result.Records.Should().BeEmpty(); } @@ -21,32 +21,31 @@ namespace NzbDrone.Integration.Test.ApiTests [Test, Order(1)] public void missing_should_have_monitored_items() { - EnsureSeries(266189, "The Blacklist", true); + EnsureMovie("tt0110912", "Pulp Fiction", true); - var result = WantedMissing.GetPaged(0, 15, "airDateUtc", "desc"); + var result = WantedMissing.GetPaged(0, 15, "physicalRelease", "desc"); result.Records.Should().NotBeEmpty(); } [Test, Order(1)] - public void missing_should_have_series() + public void missing_should_have_movie() { - EnsureSeries(266189, "The Blacklist", true); + EnsureMovie("tt0110912", "Pulp Fiction", true); - var result = WantedMissing.GetPaged(0, 15, "airDateUtc", "desc"); + var result = WantedMissing.GetPaged(0, 15, "physicalRelease", "desc"); - result.Records.First().Series.Should().NotBeNull(); - result.Records.First().Series.Title.Should().Be("The Blacklist"); + result.Records.First().Title.Should().Be("Pulp Fiction"); } [Test, Order(1)] public void cutoff_should_have_monitored_items() { EnsureProfileCutoff(1, Quality.HDTV720p); - var series = EnsureSeries(266189, "The Blacklist", true); - EnsureEpisodeFile(series, 1, 1, Quality.SDTV); + var movie = EnsureMovie("tt0110912", "Pulp Fiction", true); + EnsureMovieFile(movie, Quality.SDTV); - var result = WantedCutoffUnmet.GetPaged(0, 15, "airDateUtc", "desc"); + var result = WantedCutoffUnmet.GetPaged(0, 15, "physicalRelease", "desc"); result.Records.Should().NotBeEmpty(); } @@ -54,9 +53,9 @@ namespace NzbDrone.Integration.Test.ApiTests [Test, Order(1)] public void missing_should_not_have_unmonitored_items() { - EnsureSeries(266189, "The Blacklist", false); + EnsureMovie("tt0110912", "Pulp Fiction", false); - var result = WantedMissing.GetPaged(0, 15, "airDateUtc", "desc"); + var result = WantedMissing.GetPaged(0, 15, "physicalRelease", "desc"); result.Records.Should().BeEmpty(); } @@ -65,33 +64,32 @@ namespace NzbDrone.Integration.Test.ApiTests public void cutoff_should_not_have_unmonitored_items() { EnsureProfileCutoff(1, Quality.HDTV720p); - var series = EnsureSeries(266189, "The Blacklist", false); - EnsureEpisodeFile(series, 1, 1, Quality.SDTV); + var movie = EnsureMovie("tt0110912", "Pulp Fiction", false); + EnsureMovieFile(movie, Quality.SDTV); - var result = WantedCutoffUnmet.GetPaged(0, 15, "airDateUtc", "desc"); + var result = WantedCutoffUnmet.GetPaged(0, 15, "physicalRelease", "desc"); result.Records.Should().BeEmpty(); } [Test, Order(1)] - public void cutoff_should_have_series() + public void cutoff_should_have_movie() { EnsureProfileCutoff(1, Quality.HDTV720p); - var series = EnsureSeries(266189, "The Blacklist", true); - EnsureEpisodeFile(series, 1, 1, Quality.SDTV); + var movie = EnsureMovie("tt0110912", "Pulp Fiction", true); + EnsureMovieFile(movie, Quality.SDTV); - var result = WantedCutoffUnmet.GetPaged(0, 15, "airDateUtc", "desc"); + var result = WantedCutoffUnmet.GetPaged(0, 15, "physicalRelease", "desc"); - result.Records.First().Series.Should().NotBeNull(); - result.Records.First().Series.Title.Should().Be("The Blacklist"); + result.Records.First().Title.Should().Be("Pulp Fiction"); } [Test, Order(2)] public void missing_should_have_unmonitored_items() { - EnsureSeries(266189, "The Blacklist", false); + EnsureMovie("tt0110912", "Pulp Fiction", false); - var result = WantedMissing.GetPaged(0, 15, "airDateUtc", "desc", "monitored", "false"); + var result = WantedMissing.GetPaged(0, 15, "physicalRelease", "desc", "monitored", "false"); result.Records.Should().NotBeEmpty(); } @@ -100,10 +98,10 @@ namespace NzbDrone.Integration.Test.ApiTests public void cutoff_should_have_unmonitored_items() { EnsureProfileCutoff(1, Quality.HDTV720p); - var series = EnsureSeries(266189, "The Blacklist", false); - EnsureEpisodeFile(series, 1, 1, Quality.SDTV); + var movie = EnsureMovie("tt0110912", "Pulp Fiction", false); + EnsureMovieFile(movie, Quality.SDTV); - var result = WantedCutoffUnmet.GetPaged(0, 15, "airDateUtc", "desc", "monitored", "false"); + var result = WantedCutoffUnmet.GetPaged(0, 15, "physicalRelease", "desc", "monitored", "false"); result.Records.Should().NotBeEmpty(); } diff --git a/src/NzbDrone.Integration.Test/Client/EpisodeClient.cs b/src/NzbDrone.Integration.Test/Client/EpisodeClient.cs deleted file mode 100644 index 46d0b8e03..000000000 --- a/src/NzbDrone.Integration.Test/Client/EpisodeClient.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System.Collections.Generic; -using NzbDrone.Api.Episodes; -using RestSharp; - -namespace NzbDrone.Integration.Test.Client -{ - public class EpisodeClient : ClientBase - { - public EpisodeClient(IRestClient restClient, string apiKey) - : base(restClient, apiKey, "episode") - { - } - - public List GetEpisodesInSeries(int seriesId) - { - var request = BuildRequest("?seriesId=" + seriesId.ToString()); - return Get>(request); - } - } -} diff --git a/src/NzbDrone.Integration.Test/Client/MovieClient.cs b/src/NzbDrone.Integration.Test/Client/MovieClient.cs new file mode 100644 index 000000000..8ab63e2a6 --- /dev/null +++ b/src/NzbDrone.Integration.Test/Client/MovieClient.cs @@ -0,0 +1,44 @@ +using System.Collections.Generic; +using System.Net; +using NzbDrone.Api.Movie; +using RestSharp; + +namespace NzbDrone.Integration.Test.Client +{ + public class MovieClient : ClientBase + { + public MovieClient(IRestClient restClient, string apiKey) + : base(restClient, apiKey) + { + } + + public List Lookup(string term) + { + var request = BuildRequest("lookup?term={term}"); + request.AddUrlSegment("term", term); + return Get>(request); + } + + public List Editor(List movie) + { + var request = BuildRequest("editor"); + request.AddBody(movie); + return Put>(request); + } + + public MovieResource Get(string slug, HttpStatusCode statusCode = HttpStatusCode.OK) + { + var request = BuildRequest(slug); + return Get(request, statusCode); + } + + } + + public class SystemInfoClient : ClientBase + { + public SystemInfoClient(IRestClient restClient, string apiKey) + : base(restClient, apiKey) + { + } + } +} diff --git a/src/NzbDrone.Integration.Test/Client/SeriesClient.cs b/src/NzbDrone.Integration.Test/Client/SeriesClient.cs deleted file mode 100644 index 01ec8bfc7..000000000 --- a/src/NzbDrone.Integration.Test/Client/SeriesClient.cs +++ /dev/null @@ -1,44 +0,0 @@ -using System.Collections.Generic; -using System.Net; -using NzbDrone.Api.Series; -using RestSharp; - -namespace NzbDrone.Integration.Test.Client -{ - public class SeriesClient : ClientBase - { - public SeriesClient(IRestClient restClient, string apiKey) - : base(restClient, apiKey) - { - } - - public List Lookup(string term) - { - var request = BuildRequest("lookup?term={term}"); - request.AddUrlSegment("term", term); - return Get>(request); - } - - public List Editor(List series) - { - var request = BuildRequest("editor"); - request.AddBody(series); - return Put>(request); - } - - public SeriesResource Get(string slug, HttpStatusCode statusCode = HttpStatusCode.OK) - { - var request = BuildRequest(slug); - return Get(request, statusCode); - } - - } - - public class SystemInfoClient : ClientBase - { - public SystemInfoClient(IRestClient restClient, string apiKey) - : base(restClient, apiKey) - { - } - } -} diff --git a/src/NzbDrone.Integration.Test/CorsFixture.cs b/src/NzbDrone.Integration.Test/CorsFixture.cs index a37936a2a..e4c5b71e0 100644 --- a/src/NzbDrone.Integration.Test/CorsFixture.cs +++ b/src/NzbDrone.Integration.Test/CorsFixture.cs @@ -1,4 +1,4 @@ -using FluentAssertions; +using FluentAssertions; using NUnit.Framework; using NzbDrone.Api.Extensions; using RestSharp; @@ -8,7 +8,7 @@ namespace NzbDrone.Integration.Test [TestFixture] public class CorsFixture : IntegrationTest { - private RestRequest BuildGet(string route = "series") + private RestRequest BuildGet(string route = "movie") { var request = new RestRequest(route, Method.GET); request.AddHeader(AccessControlHeaders.RequestMethod, "POST"); @@ -16,7 +16,7 @@ namespace NzbDrone.Integration.Test return request; } - private RestRequest BuildOptions(string route = "series") + private RestRequest BuildOptions(string route = "movie") { var request = new RestRequest(route, Method.OPTIONS); diff --git a/src/NzbDrone.Integration.Test/HttpLogFixture.cs b/src/NzbDrone.Integration.Test/HttpLogFixture.cs index afbc8fcdf..03ee53445 100644 --- a/src/NzbDrone.Integration.Test/HttpLogFixture.cs +++ b/src/NzbDrone.Integration.Test/HttpLogFixture.cs @@ -2,6 +2,7 @@ using System.IO; using System.Linq; using FluentAssertions; using NUnit.Framework; +using NzbDrone.Api.Movie; namespace NzbDrone.Integration.Test { @@ -18,7 +19,7 @@ namespace NzbDrone.Integration.Test var logFile = Path.Combine(_runner.AppData, "logs", "radarr.trace.txt"); var logLines = File.ReadAllLines(logFile); - var result = Series.InvalidPost(new Api.Series.SeriesResource()); + var result = Movies.InvalidPost(new MovieResource()); logLines = File.ReadAllLines(logFile).Skip(logLines.Length).ToArray(); diff --git a/src/NzbDrone.Integration.Test/IntegrationTest.cs b/src/NzbDrone.Integration.Test/IntegrationTest.cs index 94defd951..592d3b55e 100644 --- a/src/NzbDrone.Integration.Test/IntegrationTest.cs +++ b/src/NzbDrone.Integration.Test/IntegrationTest.cs @@ -1,5 +1,6 @@ -using System.Collections.Generic; +using System.Collections.Generic; using NLog; +using NzbDrone.Core.Indexers.Newznab; using NzbDrone.Test.Common; namespace NzbDrone.Integration.Test @@ -8,7 +9,7 @@ namespace NzbDrone.Integration.Test { protected NzbDroneRunner _runner; - public override string SeriesRootFolder => GetTempDirectory("SeriesRootFolder"); + public override string MovieRootFolder => GetTempDirectory("MovieRootFolder"); protected override string RootUrl => "http://localhost:7878/"; @@ -24,15 +25,15 @@ namespace NzbDrone.Integration.Test protected override void InitializeTestTarget() { - // Add Wombles - var wombles = Indexers.Post(new Api.Indexers.IndexerResource + Indexers.Post(new Api.Indexers.IndexerResource { - EnableRss = true, - ConfigContract = "NullConfig", - Implementation = "Wombles", - Name = "Wombles", + EnableRss = false, + EnableSearch = false, + ConfigContract = nameof(NewznabSettings), + Implementation = nameof(Newznab), + Name = "NewznabTest", Protocol = Core.Indexers.DownloadProtocol.Usenet, - Fields = new List() + Fields = Api.ClientSchema.SchemaBuilder.ToSchema(new NewznabSettings()) }); } diff --git a/src/NzbDrone.Integration.Test/IntegrationTestBase.cs b/src/NzbDrone.Integration.Test/IntegrationTestBase.cs index e8be666bf..ad07ec27b 100644 --- a/src/NzbDrone.Integration.Test/IntegrationTestBase.cs +++ b/src/NzbDrone.Integration.Test/IntegrationTestBase.cs @@ -14,15 +14,15 @@ using NzbDrone.Api.Blacklist; using NzbDrone.Api.Commands; using NzbDrone.Api.Config; using NzbDrone.Api.DownloadClient; -using NzbDrone.Api.EpisodeFiles; using NzbDrone.Api.Episodes; using NzbDrone.Api.History; using NzbDrone.Api.Profiles; using NzbDrone.Api.RootFolders; -using NzbDrone.Api.Series; +using NzbDrone.Api.Movie; using NzbDrone.Api.Tags; using NzbDrone.Common.EnvironmentInfo; using NzbDrone.Common.Serializer; +using NzbDrone.Core.MediaFiles.Events; using NzbDrone.Core.Qualities; using NzbDrone.Core.Tv.Commands; using NzbDrone.Integration.Test.Client; @@ -40,7 +40,6 @@ namespace NzbDrone.Integration.Test public ClientBase Blacklist; public CommandClient Commands; public DownloadClientClient DownloadClients; - public EpisodeClient Episodes; public ClientBase History; public ClientBase HostConfig; public IndexerClient Indexers; @@ -49,7 +48,7 @@ namespace NzbDrone.Integration.Test public ClientBase Profiles; public ReleaseClient Releases; public ClientBase RootFolders; - public SeriesClient Series; + public MovieClient Movies; public ClientBase Tags; public ClientBase WantedMissing; public ClientBase WantedCutoffUnmet; @@ -71,7 +70,7 @@ namespace NzbDrone.Integration.Test public string TempDirectory { get; private set; } - public abstract string SeriesRootFolder { get; } + public abstract string MovieRootFolder { get; } protected abstract string RootUrl { get; } @@ -100,7 +99,6 @@ namespace NzbDrone.Integration.Test Blacklist = new ClientBase(RestClient, ApiKey); Commands = new CommandClient(RestClient, ApiKey); DownloadClients = new DownloadClientClient(RestClient, ApiKey); - Episodes = new EpisodeClient(RestClient, ApiKey); History = new ClientBase(RestClient, ApiKey); HostConfig = new ClientBase(RestClient, ApiKey, "config/host"); Indexers = new IndexerClient(RestClient, ApiKey); @@ -109,7 +107,7 @@ namespace NzbDrone.Integration.Test Profiles = new ClientBase(RestClient, ApiKey); Releases = new ReleaseClient(RestClient, ApiKey); RootFolders = new ClientBase(RestClient, ApiKey); - Series = new SeriesClient(RestClient, ApiKey); + Movies = new MovieClient(RestClient, ApiKey); Tags = new ClientBase(RestClient, ApiKey); WantedMissing = new ClientBase(RestClient, ApiKey, "wanted/missing"); WantedCutoffUnmet = new ClientBase(RestClient, ApiKey, "wanted/cutoff"); @@ -202,24 +200,22 @@ namespace NzbDrone.Integration.Test Assert.Fail("Timed on wait"); } - public SeriesResource EnsureSeries(int tvdbId, string seriesTitle, bool? monitored = null) + public MovieResource EnsureMovie(string imdbId, string movieTitle, bool? monitored = null) { - var result = Series.All().FirstOrDefault(v => v.TvdbId == tvdbId); + var result = Movies.All().FirstOrDefault(v => v.ImdbId == imdbId); if (result == null) { - var lookup = Series.Lookup("tvdb:" + tvdbId); - var series = lookup.First(); - series.ProfileId = 1; - series.Path = Path.Combine(SeriesRootFolder, series.Title); - series.Monitored = true; - series.Seasons.ForEach(v => v.Monitored = true); - series.AddOptions = new Core.Tv.AddSeriesOptions(); - Directory.CreateDirectory(series.Path); - - result = Series.Post(series); + var lookup = Movies.Lookup("imdb:" + imdbId); + var movie = lookup.First(); + movie.ProfileId = 1; + movie.Path = Path.Combine(MovieRootFolder, movie.Title); + movie.Monitored = true; + movie.AddOptions = new Core.Tv.AddMovieOptions(); + Directory.CreateDirectory(movie.Path); + + result = Movies.Post(movie); Commands.WaitAll(); - WaitForCompletion(() => Episodes.GetEpisodesInSeries(result.Id).Count > 0); } if (monitored.HasValue) @@ -231,54 +227,45 @@ namespace NzbDrone.Integration.Test changed = true; } - result.Seasons.ForEach(season => - { - if (season.Monitored != monitored.Value) - { - season.Monitored = monitored.Value; - changed = true; - } - }); - if (changed) { - Series.Put(result); + Movies.Put(result); } } return result; } - public void EnsureNoSeries(int tvdbId, string seriesTitle) + public void EnsureNoMovie(string imdbId, string movieTitle) { - var result = Series.All().FirstOrDefault(v => v.TvdbId == tvdbId); + var result = Movies.All().FirstOrDefault(v => v.ImdbId == imdbId); if (result != null) { - Series.Delete(result.Id); + Movies.Delete(result.Id); } } - public EpisodeFileResource EnsureEpisodeFile(SeriesResource series, int season, int episode, Quality quality) + public MovieFileResource EnsureMovieFile(MovieResource movie, Quality quality) { - var result = Episodes.GetEpisodesInSeries(series.Id).Single(v => v.SeasonNumber == season && v.EpisodeNumber == episode); + var result = Movies.Get(movie.Id); - if (result.EpisodeFile == null) + if (result.MovieFile == null) { - var path = Path.Combine(SeriesRootFolder, series.Title, string.Format("Series.S{0}E{1}.{2}.mkv", season, episode, quality.Name)); + var path = Path.Combine(MovieRootFolder, movie.Title, string.Format("{0} - {1}.mkv", movie.Title, quality.Name)); Directory.CreateDirectory(Path.GetDirectoryName(path)); - File.WriteAllText(path, "Fake Episode"); + File.WriteAllText(path, "Fake Movie"); - Commands.PostAndWait(new CommandResource { Name = "refreshseries", Body = new RefreshSeriesCommand(series.Id) }); + Commands.PostAndWait(new CommandResource { Name = "refreshmovie", Body = new RefreshMovieCommand(movie.Id) }); Commands.WaitAll(); - result = Episodes.GetEpisodesInSeries(series.Id).Single(v => v.SeasonNumber == season && v.EpisodeNumber == episode); + result = Movies.Get(movie.Id); - result.EpisodeFile.Should().NotBeNull(); + result.MovieFile.Should().NotBeNull(); } - return result.EpisodeFile; + return result.MovieFile; } public ProfileResource EnsureProfileCutoff(int profileId, Quality cutoff) diff --git a/src/NzbDrone.Integration.Test/NzbDrone.Integration.Test.csproj b/src/NzbDrone.Integration.Test/NzbDrone.Integration.Test.csproj index c46908179..bd66087bd 100644 --- a/src/NzbDrone.Integration.Test/NzbDrone.Integration.Test.csproj +++ b/src/NzbDrone.Integration.Test/NzbDrone.Integration.Test.csproj @@ -107,21 +107,19 @@ - + - + - + - - @@ -133,8 +131,8 @@ - - + + diff --git a/src/UI/AddMovies/AddMoviesCollection.js b/src/UI/AddMovies/AddMoviesCollection.js index f133d4fbb..e4ffc18de 100644 --- a/src/UI/AddMovies/AddMoviesCollection.js +++ b/src/UI/AddMovies/AddMoviesCollection.js @@ -3,7 +3,7 @@ var MovieModel = require('../Movies/MovieModel'); var _ = require('underscore'); module.exports = Backbone.Collection.extend({ - url : window.NzbDrone.ApiRoot + '/movies/lookup', + url : window.NzbDrone.ApiRoot + '/movie/lookup', model : MovieModel, parse : function(response) { diff --git a/src/UI/AddMovies/BulkImport/TmdbIdCell.js b/src/UI/AddMovies/BulkImport/TmdbIdCell.js index ce9e1991a..e781b6e98 100644 --- a/src/UI/AddMovies/BulkImport/TmdbIdCell.js +++ b/src/UI/AddMovies/BulkImport/TmdbIdCell.js @@ -25,7 +25,7 @@ module.exports = NzbDroneCell.extend({ var data = field.val(); var promise = $.ajax({ - url : window.NzbDrone.ApiRoot + '/movies/lookup/tmdb?tmdbId=' + data, + url : window.NzbDrone.ApiRoot + '/movie/lookup/tmdb?tmdbId=' + data, type : 'GET', });