Mercurial > silverbladetech
diff Library/LibrarySystem.Tests/LibrarySystemTests.cs @ 41:dbd242eb9c33
Initial wave of TDD development
author | adminsh@apollo |
---|---|
date | Tue, 03 Apr 2012 23:29:32 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Library/LibrarySystem.Tests/LibrarySystemTests.cs Tue Apr 03 23:29:32 2012 +0100 @@ -0,0 +1,204 @@ +using LibrarySystem.Core; +using LibrarySystem.Interfaces; +using NUnit.Framework; + +namespace LibrarySystem.Tests +{ + [TestFixture] + public class LibraryTests + { + /* + * Factory that creates: + * Library with 10 books (2 x Lord of the Flies, 3 x 1984, 5 x Brave New World) + */ + private ILibrary CreateScenario() + { + #region Publisher + + IPublisher penguin = new Publisher() {Name = "Penguin"}; + + #endregion + + #region Publications + + IPublication lordOfTheFlies = new Publication() + { + Author = "William Golding", + ISBN = "0140283331", + Publisher = penguin, + Title = "Lord of the Flies" + }; + + IPublication nineteenEightyFour = new Publication() + { + Author = "George Orwell", + ISBN = "0452284236", + Title = "Nineteen Eighty-Four" + }; + + IPublication braveNewWorld = new Publication() + { + Author = "Aldous Huxley", + ISBN = "0060850523", + Title = "Brave New World" + }; + + #endregion + + #region Books + + // Lord of the flies + IBook book1 = new Book(lordOfTheFlies) + {Id = "0000001", CurrentFee = 1.25m}; + IBook book2 = new Book(lordOfTheFlies) + {Id = "0000002", CurrentFee = 1.25m}; + IBook book3 = new Book(lordOfTheFlies) + {Id = "0000003", CurrentFee = 1.25m}; + + // 1984 + IBook book4 = new Book(nineteenEightyFour) + {Id = "0000004", CurrentFee = 1.5m}; + IBook book5 = new Book(nineteenEightyFour) + {Id = "0000005", CurrentFee = 1.5m}; + + // Brave new world + IBook book6 = new Book(braveNewWorld) + {Id = "0000006", CurrentFee = 1.8m}; + IBook book7 = new Book(braveNewWorld) + {Id = "0000007", CurrentFee = 1.8m}; + IBook book8 = new Book(braveNewWorld) + {Id = "0000008", CurrentFee = 1.8m}; + IBook book9 = new Book(braveNewWorld) + {Id = "0000009", CurrentFee = 1.8m}; + IBook book10 = new Book(braveNewWorld) + {Id = "0000010", CurrentFee = 1.8m}; + + #endregion + + #region Library + + ILibrary library = new Library(); + library.Location = "Leicester Square"; + library.AddStock(book1, book2, book3, book4, book5, book6, book7, book8, book9, book10); + + #endregion + + return library; + } + + [Test] + public void AddStockShouldIncreaseStockListCountByOne() + { + //arrange + var library = new Library(); + var expected = library.StockList.Count + 1; + var dummyBook = new Book(new Publication()); + + //act + library.AddStock(dummyBook); + var actual = library.StockList.Count; + + //assert + Assert.AreEqual(expected, actual); + } + + [Test] + public void SearchForAvailableBookByIBSNShouldReturnTrue() + { + var library = CreateScenario(); + + // Lord of the flies + var validISBN = "0140283331"; + + var actual = library.IsBookAvailableByISBN(validISBN); + + Assert.IsTrue(actual); + } + + [Test] + public void SearchForUnavailableBookByIBSNShouldReturnFalse() + { + var library = CreateScenario(); + + // rubbish data + var invalidISBN = "X"; + + var actual = library.IsBookAvailableByISBN(invalidISBN); + + Assert.IsFalse(actual); + } + + [Test] + public void FindBooksByValidSearchTitleString() + { + var library = CreateScenario(); + + // good search string + var searchString = "Flies"; + + // number of Lord of the Flies books expected + var expected = 3; + var actual = library.FindBooks(searchString).Count; + + Assert.AreEqual(expected, actual); + } + + + [Test] + public void FindBooksByValidSearchTitleStringLowerCase() + { + var library = CreateScenario(); + + // good search string + var searchString = "flies"; + + // number of Lord of the Flies books expected + var expected = 3; + var actual = library.FindBooks(searchString).Count; + + Assert.AreEqual(expected, actual); + } + + [Test] + public void FindBooksByValidSearchStringMultiplePublications() + { + var library = CreateScenario(); + + // good search string + var searchString = "e"; + + // number of Lord of the Flies books expected + var expected = 10; + var actual = library.FindBooks(searchString).Count; + + Assert.AreEqual(expected, actual); + } + + [Test] + public void FindBooksByValidSearchAuthorString() + { + var library = CreateScenario(); + + // number of Brave New World books expected + var expected = 5; + var searchString = "ldous"; + + var actual = library.FindBooks(searchString).Count; + + Assert.AreEqual(expected, actual); + } + + [Test] + public void FindBooksByInvalidSearchString() + { + var library = CreateScenario(); + + // rubbish data + var searchString = "XYZ"; + + var actual = library.FindBooks(searchString); + + Assert.IsEmpty(actual); + } + } +}