class TestAddBookInteractor(InteractorTestBase): def setUp(self): self.__persistence = Mock(Persistence) self.__target = AddBookInteractor(self.__persistence) def test_is_instance_of_interactor(self): self.assertIsInstance(self.__target, Interactor) def test_execute_gets_book_from_persistence(self): self.__persistence.get_book_by_title_and_author = Mock(return_value=(self.__get_book())) self.__target.execute(Book()) self.assertTrue(self.__persistence.get_book_by_title_and_author.called) def test_execute_with_new_book_adds_it(self): self.__persistence.get_book_by_title_and_author = Mock(return_value=Book()) self.__target.execute(Book()) self.assert_called(self.__persistence.add_book) def test_execute_with_existing_book_does_not_add_it(self): self.__persistence.get_book_by_title_and_author = Mock(return_value=(self.__get_book())) self.__target.execute(self.__get_book()) self.assert_not_called(self.__persistence.add_book) def test_execute_with_format_adds_format(self): self.__persistence.get_book_by_title_and_author = Mock(return_value=(self.__get_book_with_format())) self.__persistence.format_exists = Mock(return_value=False) self.__target.execute(self.__get_book_with_format()) self.assert_called(self.__persistence.add_book_format) def test_execute_with_format_does_not_add_it_when_the_book_has_it(self): self.__persistence.get_book_by_title_and_author = Mock(return_value=(self.__get_book_with_format())) self.__persistence.format_exists = Mock(return_value=True) self.__target.execute(self.__get_book_with_format()) self.assert_not_called(self.__persistence.add_book_format) def __get_book_with_format(self): b = self.__get_book() bf = BookFormat() bf.Format = "EPUB" bf.Location = "/dev/null" b.add_format(bf) return b def __get_book(self): my_book = Book() my_book.id = 1337 return my_book
def setUp(self): self.__persistence = Mock(Persistence) self.__target = AddBookInteractor(self.__persistence)