diff --git a/src/NzbDrone.Core.Test/OrganizerTests/FileNameBuilderTests/EditionTagsFixture.cs b/src/NzbDrone.Core.Test/OrganizerTests/FileNameBuilderTests/EditionTagsFixture.cs new file mode 100644 index 000000000..08324f112 --- /dev/null +++ b/src/NzbDrone.Core.Test/OrganizerTests/FileNameBuilderTests/EditionTagsFixture.cs @@ -0,0 +1,67 @@ +using System.Collections.Generic; +using System.Linq; +using FizzWare.NBuilder; +using FluentAssertions; +using NUnit.Framework; +using NzbDrone.Core.CustomFormats; +using NzbDrone.Core.MediaFiles; +using NzbDrone.Core.Movies; +using NzbDrone.Core.Organizer; +using NzbDrone.Core.Qualities; +using NzbDrone.Core.Test.Framework; + +namespace NzbDrone.Core.Test.OrganizerTests.FileNameBuilderTests +{ + [TestFixture] + public class EditionTagsFixture : CoreTest + { + private Movie _movie; + private MovieFile _movieFile; + private NamingConfig _namingConfig; + + [SetUp] + public void Setup() + { + _movie = Builder + .CreateNew() + .With(s => s.Title = "South Park") + .Build(); + + _movieFile = new MovieFile { Quality = new QualityModel(), ReleaseGroup = "SonarrTest" }; + + _namingConfig = NamingConfig.Default; + _namingConfig.RenameMovies = true; + + Mocker.GetMock() + .Setup(c => c.GetConfig()).Returns(_namingConfig); + + Mocker.GetMock() + .Setup(v => v.Get(Moq.It.IsAny())) + .Returns(v => Quality.DefaultQualityDefinitions.First(c => c.Quality == v)); + + Mocker.GetMock() + .Setup(v => v.All()) + .Returns(new List()); + } + + [Test] + public void should_add_edition_tag() + { + _movieFile.Edition = "Uncut"; + _namingConfig.StandardMovieFormat = "{Movie Title} [{Edition Tags}]"; + + Subject.BuildFileName(_movie, _movieFile) + .Should().Be("South Park [Uncut]"); + } + + [TestCase("{Movie Title} {edition-{Edition Tags}}")] + public void should_conditional_hide_edition_tags_in_plex_format(string movieFormat) + { + _movieFile.Edition = ""; + _namingConfig.StandardMovieFormat = movieFormat; + + Subject.BuildFileName(_movie, _movieFile) + .Should().Be("South Park"); + } + } +} diff --git a/src/NzbDrone.Core/Organizer/FileNameBuilder.cs b/src/NzbDrone.Core/Organizer/FileNameBuilder.cs index 3a80bec1d..8872ef20d 100644 --- a/src/NzbDrone.Core/Organizer/FileNameBuilder.cs +++ b/src/NzbDrone.Core/Organizer/FileNameBuilder.cs @@ -38,7 +38,7 @@ namespace NzbDrone.Core.Organizer private readonly ICustomFormatService _formatService; private readonly Logger _logger; - private static readonly Regex TitleRegex = new Regex(@"(?\{(?:imdb-))?\{(?[- ._\[(]*)(?(?:[a-z0-9]+)(?:(?[- ._]+)(?:[a-z0-9]+))?)(?::(?[a-z0-9|]+))?(?[-} ._)\]]*)\}", + private static readonly Regex TitleRegex = new Regex(@"(?\{(?:imdb-|edition-))?\{(?[- ._\[(]*)(?(?:[a-z0-9]+)(?:(?[- ._]+)(?:[a-z0-9]+))?)(?::(?[a-z0-9|]+))?(?[-} ._)\]]*)\}", RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.CultureInvariant); public static readonly Regex MovieTitleRegex = new Regex(@"(?\{((?:(Movie|Original))(?[- ._])(Clean|Original)?(Title|Filename)(The)?)(?::(?[a-z0-9|]+))?\})",