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 { private List _books; [SetUp] public void Setup() { _books = new List(); _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() .Setup(s => s.GetBooksByAuthorMetadataId(It.IsAny())) .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(); } } }