class TestFirstLetterScreen(ConsoleTestBase): def setUp(self): self.initialise_app_mock() self.initialise_string_mock() self.__f = FirstLetterScreen(self.app) self.__f.SetStringsObject(self.__strings) self.__f.input = lambda: None def initialise_app_mock(self): ConsoleTestBase.initialise_app_mock(self) self.app.list_books_by_first_letter = Mock(return_value=[Book()]) def initialise_string_mock(self): self.__strings = ConsoleStrings() self.__strings.get_first_letter_string = Mock() self.__strings.get_search_result_title_string = Mock() self.__strings.get_search_result_footer_string = Mock() def test_main_lists_by_first_letter(self): self.__f.main() self.__assert_first_letter_screen_rendered() def __assert_first_letter_screen_rendered(self): self.assert_called(self.__strings.get_first_letter_string) self.assert_called(self.__strings.get_search_result_title_string) self.assert_called(self.__strings.get_search_result_footer_string) self.assert_called(self.app.list_books_by_first_letter)
class Console(object): """The console output module""" __menu_main_search = "1" __menu_main_startswith = "2" __menu_main_harvest = "3" __menu_main_quit = "0" def __init__(self, app, config): """Set initial object state""" self.__strings = ConsoleStrings() self.__app = app self.__config = config self.__searchScreen = SearchScreen(self.__app) self.__firstLetterScreen = FirstLetterScreen(self.__app) def main(self): """The entry point for the console output module""" try: self.__main_menu() except KeyboardInterrupt: pass except EOFError: pass def __main_menu(self): print(self.__strings.get_main_menu()) s = self.input() self.__process_main_menu_input(s) @staticmethod def input(): return input() def __process_main_menu_input(self, user_input): if user_input == self.__menu_main_search: self.__searchScreen.main() elif user_input == self.__menu_main_startswith: self.__firstLetterScreen.main() elif user_input == self.__menu_main_harvest: self.__app.harvest_books() elif user_input == self.__menu_main_quit: return self.__main_menu() def set_search_screen(self, search_object): """Sets the object that is to be used for the search screen""" self.__searchScreen = search_object def set_first_letter_screen(self, first_letter_object): """Sets the object that is to be used fo the first letter screen""" self.__firstLetterScreen = first_letter_object
def __init__(self, app, config): """Set initial object state""" self.__strings = ConsoleStrings() self.__app = app self.__config = config self.__searchScreen = SearchScreen(self.__app) self.__firstLetterScreen = FirstLetterScreen(self.__app)
def setUp(self): self.initialise_app_mock() self.initialise_string_mock() self.__f = FirstLetterScreen(self.app) self.__f.SetStringsObject(self.__strings) self.__f.input = lambda: None