You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Readarr/src/NzbDrone.Core.Test/MusicTests/AlbumServiceFixture.cs

84 lines
2.4 KiB

using System.Collections.Generic;
using FluentAssertions;
using Moq;
using NUnit.Framework;
using NzbDrone.Core.Books;
using NzbDrone.Core.Test.Framework;
namespace NzbDrone.Core.Test.MusicTests.BookRepositoryTests
{
[TestFixture]
public class BookServiceFixture : CoreTest<BookService>
{
private List<Book> _books;
[SetUp]
public void Setup()
{
_books = new List<Book>();
_books.Add(new Book
{
Title = "ANThology",
CleanTitle = "anthology",
AuthorMetadata = new AuthorMetadata
{
Name = "Author"
}
});
_books.Add(new Book
{
Title = "+",
CleanTitle = "",
AuthorMetadata = new AuthorMetadata
{
Name = "Author"
}
});
Mocker.GetMock<IBookRepository>()
.Setup(s => s.GetBooksByAuthorMetadataId(It.IsAny<int>()))
.Returns(_books);
}
private void GivenSimilarBook()
{
_books.Add(new Book
{
Title = "ANThology2",
CleanTitle = "anthology2",
AuthorMetadata = new AuthorMetadata
{
Name = "Author"
}
});
}
[TestCase("ANTholog", "ANThology")]
[TestCase("antholoyg", "ANThology")]
[TestCase("ANThology CD", "ANThology")]
[TestCase("ANThology CD xxxx (Remastered) - [Oh please why do they do this?]", "ANThology")]
[TestCase("+ (Plus) - I feel the need for redundant information in the title field", "+")]
public void should_find_book_in_db_by_inexact_title(string title, string expected)
{
var book = Subject.FindByTitleInexact(0, title);
book.Should().NotBeNull();
book.Title.Should().Be(expected);
}
[TestCase("ANTholog")]
[TestCase("antholoyg")]
[TestCase("ANThology CD")]
[TestCase("÷")]
[TestCase("÷ (Divide)")]
public void should_not_find_book_in_db_by_inexact_title_when_two_similar_matches(string title)
{
GivenSimilarBook();
var book = Subject.FindByTitleInexact(0, title);
book.Should().BeNull();
}
}
}