Skip to content

Commit

Permalink
New: Author name first character renaming token
Browse files Browse the repository at this point in the history
Co-Authored-By: Mark McDowall <markus101@users.noreply.github.com>
  • Loading branch information
Qstick and markus101 committed Jan 24, 2023
1 parent 06fbd5f commit 31c8092
Show file tree
Hide file tree
Showing 3 changed files with 60 additions and 0 deletions.
2 changes: 2 additions & 0 deletions frontend/src/Settings/MediaManagement/Naming/NamingModal.js
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@ const authorTokens = [

{ token: '{Author NameThe}', example: 'Author\'s Name, The' },

{ token: '{Author NameFirstCharacter}', example: 'A' },

{ token: '{Author CleanName}', example: 'Authors Name' },

{ token: '{Author SortName}', example: 'Name, Author' },
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
using System.IO;
using System.Linq;
using FizzWare.NBuilder;
using FluentAssertions;
using NUnit.Framework;
using NzbDrone.Core.Books;
using NzbDrone.Core.Organizer;
using NzbDrone.Core.Qualities;
using NzbDrone.Core.Test.Framework;

namespace NzbDrone.Core.Test.OrganizerTests.FileNameBuilderTests
{
[TestFixture]
public class AuthorNameFirstCharacterFixture : CoreTest<FileNameBuilder>
{
private Author _author;
private NamingConfig _namingConfig;

[SetUp]
public void Setup()
{
_author = Builder<Author>
.CreateNew()
.Build();

_namingConfig = NamingConfig.Default;
_namingConfig.RenameBooks = true;

Mocker.GetMock<INamingConfigService>()
.Setup(c => c.GetConfig()).Returns(_namingConfig);

Mocker.GetMock<IQualityDefinitionService>()
.Setup(v => v.Get(Moq.It.IsAny<Quality>()))
.Returns<Quality>(v => Quality.DefaultQualityDefinitions.First(c => c.Quality == v));
}

[TestCase("The Mist", "M", "The Mist")]
[TestCase("A", "A", "A")]
[TestCase("30 Rock", "3", "30 Rock")]
public void should_get_expected_folder_name_back(string title, string parent, string child)
{
_author.Name = title;
_namingConfig.AuthorFolderFormat = "{Author NameFirstCharacter}\\{Author Name}";

Subject.GetAuthorFolder(_author).Should().Be(Path.Combine(parent, child));
}

[Test]
public void should_be_able_to_use_lower_case_first_character()
{
_author.Name = "Westworld";
_namingConfig.AuthorFolderFormat = "{author namefirstcharacter}\\{author name}";

Subject.GetAuthorFolder(_author).Should().Be(Path.Combine("w", "westworld"));
}
}
}
1 change: 1 addition & 0 deletions src/NzbDrone.Core/Organizer/FileNameBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -249,6 +249,7 @@ private void AddAuthorTokens(Dictionary<string, Func<TokenMatch, string>> tokenH
tokenHandlers["{Author CleanName}"] = m => CleanTitle(author.Name);
tokenHandlers["{Author NameThe}"] = m => TitleThe(author.Name);
tokenHandlers["{Author SortName}"] = m => author.Metadata.Value.NameLastFirst;
tokenHandlers["{Author NameFirstCharacter}"] = m => TitleThe(author.Name).Substring(0, 1).FirstCharToUpper();

if (author.Metadata.Value.Disambiguation != null)
{
Expand Down

0 comments on commit 31c8092

Please sign in to comment.