public void RegisterBook_ShouldInvokeRegisterOnStoreWhenEmpty()
        {
            var store = new Mock<IBibliotecaStore>();
            store.Setup(x => x.AddItem(It.IsAny<Book>())).Verifiable();

            var biblioteca = new BibliotecaService(store.Object);
            biblioteca.Register(new Book() { ID = "ABC", Name = "Test Book" });

            store.Verify();
        }
        public void RegisterBook_ShouldNotRegisterAlreadyExistingBook()
        {
            var store = new Mock<IBibliotecaStore>();
            store
                .Setup(x => x.GetItem(It.Is<string>(i=>i == "HEA1")))
                .Returns(this.bookCatalog
                    .Where(b => b.ID == "HEA1")
                    .FirstOrDefault());

            var biblioteca = new BibliotecaService(store.Object);
            biblioteca.Register(new Book() { ID = "HEA1", Name = "Head First Design Patterns" });          
        }
        public void RegisterBook_ShouldInvokeRegisterOnStoreWhenNonEmpty()
        {
            var store = new Mock<IBibliotecaStore>();
            store
                .Setup(x => x.GetItem(It.Is<string>(i => i == "ABC"))).Returns( (LibraryItem) null);                
            store.Setup(x => x.AddItem(It.IsAny<Book>())).Verifiable();

            var biblioteca = new BibliotecaService(store.Object);
            biblioteca.Register(new Book() { ID = "ABC", Name = "Test Book" });

            store.Verify();
        }