def test_main_exit(self): with patch('builtins.input') as handle_input: handle_input.return_value = "4" menu_dict = mailroom.main_menu_dict with self.assertRaises(SystemExit): mailroom.menu_system(menu_dict, "Test Menu", "Test Prompt")
def test_thank_return_to_main(self): with patch('builtins.input') as handle_input: handle_input.return_value = "2" menu_dict = mailroom.list_dict mailroom.menu_system(menu_dict, "Test Menu", "Test Prompt", include_main=True, invalid_opt=invalid_option_raise_error)
def test_thanks_exit(self): with patch('builtins.input') as handle_input: handle_input.return_value = "3" menu_dict = mailroom.list_dict with self.assertRaises(SystemExit): mailroom.menu_system(menu_dict, "Test Menu", "Test Prompt", include_main=True, invalid_opt=mailroom.accept_donation)
def test_invalid_option_not_overridden(self): interceptor, hold_stdout = intercept_stdout() with patch('builtins.input') as handle_input: handle_input.side_effect = ["200", "4"] menu_dict = mailroom.main_menu_dict with self.assertRaises(SystemExit): mailroom.menu_system(menu_dict, "Test Menu", "Test Prompt") assert interceptor.getvalue().strip().count( "Invalid choice. Please select from available options.") == 1 sys.stdout = hold_stdout
def test_invalid_option_overriden(self): exception_msg = "this should throw exception" with patch('builtins.input') as handle_input: handle_input.return_value = exception_msg menu_dict = mailroom.list_dict try: mailroom.menu_system(menu_dict, "Test Menu", "Test Prompt", include_main=True, invalid_opt=invalid_option_raise_error) except Exception as e: assert str(e).count(exception_msg) == 1
def test_menu_print_donors_logic(self): interceptor, hold_stdout = intercept_stdout() with patch('builtins.input') as handle_input: handle_input.side_effect = ["1", "3"] menu_dict = mailroom.list_dict with self.assertRaises(SystemExit): mailroom.menu_system(menu_dict, "Test Menu", "Test Prompt", include_main=True, invalid_opt=mailroom.accept_donation) assert interceptor.getvalue().strip().count(expected_donors) == 1 sys.stdout = hold_stdout