diff --git a/tests/test_checks.py b/tests/test_checks.py index 282b94466775069409d9c2a63bf1de280d8f3690..d68c0f086bf910ced6078c8dc82580d6b2d26c12 100644 --- a/tests/test_checks.py +++ b/tests/test_checks.py @@ -35,8 +35,73 @@ class CheckRelateSettingsBase(SimpleTestCase): from relate.checks import check_relate_settings return check_relate_settings + @property + def msg_id_prefix(self): + raise NotImplementedError() + + def assertCheckMessages(self, # noqa + expected_ids=None, expected_msgs=None, length=None, + filter_message_id_prefixes=None, ignore_order=False): + """ + Check the run check result of the setting item of the testcase instance + :param expected_ids: Optional, list of expected message id, + default to None + :param expected_msgs: Optional, list of expected message string, + default to None + :param length: Optional, length of expected check message, + default to None + :param filter_message_id_prefixes: a list or tuple of message id prefix, + to restrict the + run check result to be within the iterable. + """ + if not filter_message_id_prefixes: + filter_message_id_prefixes = self.msg_id_prefix + if isinstance(filter_message_id_prefixes, str): + filter_message_id_prefixes = [filter_message_id_prefixes] + assert isinstance(filter_message_id_prefixes, (list, tuple)) + + if expected_ids is None and expected_msgs is None and length is None: + raise RuntimeError("At least one parameter should be specified " + "to make the assertion") + + result = self.func(None) + + def is_id_in_filter(id, filter): + prefix = id.split(".")[0] + return prefix in filter + + try: + result_ids, result_msgs = ( + list(zip(*[(r.id, r.msg) for r in result + if is_id_in_filter(r.id, filter_message_id_prefixes)]))) + + if expected_ids is not None: + assert isinstance(expected_ids, (list, tuple)) + if ignore_order: + result_ids = tuple(sorted(list(result_ids))) + expected_ids = sorted(list(expected_ids)) + self.assertEqual(result_ids, tuple(expected_ids)) + + if expected_msgs is not None: + assert isinstance(expected_msgs, (list, tuple)) + if ignore_order: + result_msgs = tuple(sorted(list(result_msgs))) + expected_msgs = sorted(list(expected_msgs)) + self.assertEqual(result_msgs, tuple(expected_msgs)) + + if length is not None: + self.assertEqual(len(expected_ids), len(result_ids)) + except ValueError as e: + if "values to unpack" in str(e): + if expected_ids or expected_msgs or length: + self.fail("Check message unexpectedly found to be empty") + else: + raise + class CheckRelateURL(CheckRelateSettingsBase): + msg_id_prefix = "relate_base_url" + VALID_CONF = "example.com" INVALID_CONF_NONE = None INVALID_CONF_EMPTY_LIST = [] @@ -44,44 +109,45 @@ class CheckRelateURL(CheckRelateSettingsBase): @override_settings(RELATE_BASE_URL=VALID_CONF) def test_valid_relate_base_url1(self): - self.assertEqual(self.func(None), []) + self.assertCheckMessages([]) @override_settings(RELATE_BASE_URL=INVALID_CONF_NONE) def test_invalid_relate_base_url_none(self): - result = self.func(None) - self.assertEqual([r.id for r in result], ["relate_base_url.E001"]) + self.assertCheckMessages(["relate_base_url.E001"]) @override_settings(RELATE_BASE_URL=INVALID_CONF_EMPTY_LIST) def test_invalid_relate_base_url_empty_list(self): - result = self.func(None) - self.assertEqual([r.id for r in result], ["relate_base_url.E002"]) + self.assertCheckMessages(["relate_base_url.E002"]) @override_settings(RELATE_BASE_URL=INVALID_CONF_SPACES) def test_invalid_relate_base_url_spaces(self): - result = self.func(None) - self.assertEqual([r.id for r in result], ["relate_base_url.E003"]) + self.assertCheckMessages(["relate_base_url.E003"]) class CheckRelateEmailAppelationPriorityList(CheckRelateSettingsBase): + msg_id_prefix = "relate_email_appelation_priority_list" + VALID_CONF_NONE = None VALID_CONF = ["name1", "name2"] INVALID_CONF_STR = "name1" @override_settings(RELATE_EMAIL_APPELATION_PRIORITY_LIST=VALID_CONF_NONE) def test_valid_relate_email_appelation_priority_list_none(self): - self.assertEqual(self.func(None), []) + self.assertCheckMessages([]) @override_settings(RELATE_EMAIL_APPELATION_PRIORITY_LIST=VALID_CONF) def test_valid_relate_email_appelation_priority_list(self): - self.assertEqual(self.func(None), []) + self.assertCheckMessages([]) @override_settings(RELATE_EMAIL_APPELATION_PRIORITY_LIST=INVALID_CONF_STR) def test_invalid_relate_email_appelation_priority_list_str(self): - self.assertEqual([r.id for r in self.func(None)], - ["relate_email_appelation_priority_list.E002"]) + self.assertCheckMessages( + ["relate_email_appelation_priority_list.E002"]) class CheckRelateEmailConnections(CheckRelateSettingsBase): + msg_id_prefix = "email_connections" + VALID_CONF_NONE = None VALID_CONF_EMPTY_DICT = {} VALID_CONF = { @@ -116,41 +182,37 @@ class CheckRelateEmailConnections(CheckRelateSettingsBase): @override_settings(EMAIL_CONNECTIONS=VALID_CONF_NONE) def test_valid_email_connections_none(self): - self.assertEqual(self.func(None), []) + self.assertCheckMessages([]) @override_settings(EMAIL_CONNECTIONS=VALID_CONF_EMPTY_DICT) def test_valid_email_connections_emtpy_dict(self): - self.assertEqual(self.func(None), []) + self.assertCheckMessages([]) @override_settings(EMAIL_CONNECTIONS=VALID_CONF) def test_valid_email_connections(self): - self.assertEqual(self.func(None), []) + self.assertCheckMessages([]) @override_settings(EMAIL_CONNECTIONS=INVALID_CONF_EMPTY_LIST) def test_invalid_email_connections_empty_list(self): - self.assertEqual([r.id for r in self.func(None)], - ["email_connections.E001"]) + self.assertCheckMessages(["email_connections.E001"]) @override_settings(EMAIL_CONNECTIONS=INVALID_CONF_LIST) def test_invalid_email_connections_list(self): - self.assertEqual([r.id for r in self.func(None)], - ["email_connections.E001"]) + self.assertCheckMessages(["email_connections.E001"]) @override_settings(EMAIL_CONNECTIONS=INVALID_CONF_LIST_AS_ITEM_VALUE) def test_invalid_email_connections_list_as_item_value(self): - result = self.func(None) - self.assertEqual(len(result), 2) - self.assertEqual([r.id for r in result], - ["email_connections.E002", - "email_connections.E002"]) + self.assertCheckMessages( + ["email_connections.E002", "email_connections.E002"]) @override_settings(EMAIL_CONNECTIONS=INVALID_CONF_INVALID_BACKEND) def test_invalid_email_connections_invalid_backend(self): - self.assertEqual([r.id for r in self.func(None)], - ["email_connections.E003"]) + self.assertCheckMessages(["email_connections.E003"]) class CheckRelateFacilities(CheckRelateSettingsBase): + msg_id_prefix = "relate_facilities" + VALID_CONF_NONE = None VALID_CONF = ( { @@ -194,11 +256,11 @@ class CheckRelateFacilities(CheckRelateSettingsBase): @override_settings(RELATE_FACILITIES=VALID_CONF_NONE) def test_valid_relate_facilities_none(self): - self.assertEqual(self.func(None), []) + self.assertCheckMessages([]) @override_settings(RELATE_FACILITIES=VALID_CONF) def test_valid_relate_facilities(self): - self.assertEqual(self.func(None), []) + self.assertCheckMessages([]) def test_valid_relate_facilities_callable(self): def valid_func(now_datetime): @@ -209,7 +271,7 @@ class CheckRelateFacilities(CheckRelateSettingsBase): return {} with override_settings(RELATE_FACILITIES=valid_func): - self.assertEqual(self.func(None), []) + self.assertCheckMessages([]) def test_valid_relate_facilities_callable_with_empty_ip_ranges(self): def valid_func_though_return_emtpy_ip_ranges(now_datetime): @@ -218,74 +280,60 @@ class CheckRelateFacilities(CheckRelateSettingsBase): return self.WARNING_CONF_IP_RANGES_NOT_CONFIGURED with override_settings( RELATE_FACILITIES=valid_func_though_return_emtpy_ip_ranges): - self.assertEqual(self.func(None), []) + self.assertCheckMessages([]) @override_settings(RELATE_FACILITIES=INVALID_CONF_LIST) def test_invalid_relate_facilities_callable_return_list(self): - self.assertEqual([r.id for r in self.func(None)], - ["relate_facilities.E002"]) + self.assertCheckMessages(["relate_facilities.E002"]) @override_settings(RELATE_FACILITIES=INVALID_CONF_NOT_DICT_AS_ITEM_VALUE) def test_invalid_relate_facilities_callable_not_dict_as_item_value(self): - result = self.func(None) - self.assertEqual(len(result), 2) - self.assertEqual([r.id for r in result], - ["relate_facilities.E003", - "relate_facilities.E003"]) + self.assertCheckMessages( + ["relate_facilities.E003", "relate_facilities.E003"]) @override_settings(RELATE_FACILITIES=INVALID_CONF_IP_RANGES_NOT_LIST) def test_invalid_relate_facilities_ip_ranges_not_list(self): - result = self.func(None) - self.assertEqual(len(result), 2) - self.assertEqual(sorted([r.id for r in result]), - sorted(["relate_facilities.E003", - "relate_facilities.E004"])) + self.assertCheckMessages( + ["relate_facilities.E003", "relate_facilities.E004"], + ignore_order=True) @override_settings(RELATE_FACILITIES=INVALID_CONF_IP_RANGES_ITEM_NOT_IPADDRESS) def test_invalid_relate_facilities_ip_ranges_item_not_ipaddress(self): - result = self.func(None) - self.assertEqual(len(result), 2) - self.assertEqual(sorted([r.id for r in result]), - sorted(["relate_facilities.E005", - "relate_facilities.E005"])) + self.assertCheckMessages( + ["relate_facilities.E005", "relate_facilities.E005"], + ignore_order=True) def test_invalid_relate_facilities_callable_not_return_dict(self): def invalid_func_not_return_dict(now_datetime): return self.INVALID_CONF_LIST with override_settings(RELATE_FACILITIES=invalid_func_not_return_dict): - self.assertEqual([r.id for r in self.func(None)], - ["relate_facilities.E001"]) + self.assertCheckMessages(["relate_facilities.E001"]) def test_invalid_relate_facilities_callable_return_invalid_conf(self): def invalid_func_return_invalid_conf(now_datetime): return self.INVALID_CONF_NOT_DICT_AS_ITEM_VALUE with override_settings(RELATE_FACILITIES=invalid_func_return_invalid_conf): - result = self.func(None) - self.assertEqual(len(result), 2) - self.assertEqual([r.id for r in result], - ["relate_facilities.E003", - "relate_facilities.E003"]) + self.assertCheckMessages( + ["relate_facilities.E003", "relate_facilities.E003"]) def test_invalid_relate_facilities_callable_return_none(self): def invalid_func_return_none(now_datetime): return None with override_settings(RELATE_FACILITIES=invalid_func_return_none): - self.assertEqual([r.id for r in self.func(None)], - ["relate_facilities.E001"]) + self.assertCheckMessages(["relate_facilities.E001"]) @override_settings(RELATE_FACILITIES=WARNING_CONF_IP_RANGES_NOT_CONFIGURED) def test_warning_relate_facilities(self): - result = self.func(None) - self.assertEqual(len(result), 2) - self.assertEqual([r.id for r in result], - ["relate_facilities.W001", - "relate_facilities.W001"]) + self.assertCheckMessages( + ["relate_facilities.W001", "relate_facilities.W001"]) class CheckRelateMaintenanceModeExceptions(CheckRelateSettingsBase): + msg_id_prefix = "relate_maintenance_mode_exceptions" + VALID_CONF_NONE = None VALID_CONF_EMPTY_LIST = [] VALID_CONF = ["127.0.0.1", "192.168.1.1"] @@ -296,36 +344,33 @@ class CheckRelateMaintenanceModeExceptions(CheckRelateSettingsBase): @override_settings(RELATE_MAINTENANCE_MODE_EXCEPTIONS=VALID_CONF_NONE) def test_valid_maintenance_mode_exceptions_none(self): - self.assertEqual(self.func(None), []) + self.assertCheckMessages([]) @override_settings(RELATE_MAINTENANCE_MODE_EXCEPTIONS=VALID_CONF_EMPTY_LIST) def test_valid_maintenance_mode_exceptions_emtpy_list(self): - self.assertEqual(self.func(None), []) + self.assertCheckMessages([]) @override_settings(RELATE_MAINTENANCE_MODE_EXCEPTIONS=VALID_CONF) def test_valid_maintenance_mode_exceptions(self): - self.assertEqual(self.func(None), []) + self.assertCheckMessages([]) @override_settings(RELATE_MAINTENANCE_MODE_EXCEPTIONS=INVALID_CONF_STR) def test_invalid_maintenance_mode_exceptions_str(self): - self.assertEqual([r.id for r in self.func(None)], - ["relate_maintenance_mode_exceptions.E001"]) + self.assertCheckMessages(["relate_maintenance_mode_exceptions.E001"]) @override_settings(RELATE_MAINTENANCE_MODE_EXCEPTIONS=INVALID_CONF_DICT) def test_invalid_maintenance_mode_exceptions_dict(self): - self.assertEqual([r.id for r in self.func(None)], - ["relate_maintenance_mode_exceptions.E001"]) + self.assertCheckMessages(["relate_maintenance_mode_exceptions.E001"]) @override_settings(RELATE_MAINTENANCE_MODE_EXCEPTIONS=INVALID_CONF_INVALID_IPS) def test_invalid_maintenance_mode_exceptions_invalid_ipaddress(self): - result = self.func(None) - self.assertEqual(len(result), 2) - self.assertEqual([r.id for r in result], - ["relate_maintenance_mode_exceptions.E002", - "relate_maintenance_mode_exceptions.E002"]) + self.assertCheckMessages(["relate_maintenance_mode_exceptions.E002", + "relate_maintenance_mode_exceptions.E002"]) class CheckRelateSessionRestartCooldownSeconds(CheckRelateSettingsBase): + msg_id_prefix = "relate_session_restart_cooldown_seconds" + VALID_CONF = 10 VALID_CONF_BY_CALC = 2 * 5 INVALID_CONF_STR = "10" @@ -334,29 +379,31 @@ class CheckRelateSessionRestartCooldownSeconds(CheckRelateSettingsBase): @override_settings(RELATE_SESSION_RESTART_COOLDOWN_SECONDS=VALID_CONF) def test_valid_relate_session_restart_cooldown_seconds(self): - self.assertEqual(self.func(None), []) + self.assertCheckMessages([]) @override_settings(RELATE_SESSION_RESTART_COOLDOWN_SECONDS=VALID_CONF_BY_CALC) def test_valid_relate_session_restart_cooldown_seconds_by_calc(self): - self.assertEqual(self.func(None), []) + self.assertCheckMessages([]) @override_settings(RELATE_SESSION_RESTART_COOLDOWN_SECONDS=INVALID_CONF_STR) def test_invalid_maintenance_mode_exceptions_str(self): - self.assertEqual([r.id for r in self.func(None)], - ["relate_session_restart_cooldown_seconds.E001"]) + self.assertCheckMessages( + ["relate_session_restart_cooldown_seconds.E001"]) @override_settings(RELATE_SESSION_RESTART_COOLDOWN_SECONDS=INVALID_CONF_LIST) def test_invalid_maintenance_mode_exceptions_list(self): - self.assertEqual([r.id for r in self.func(None)], - ["relate_session_restart_cooldown_seconds.E001"]) + self.assertCheckMessages( + ["relate_session_restart_cooldown_seconds.E001"]) @override_settings(RELATE_SESSION_RESTART_COOLDOWN_SECONDS=INVALID_CONF_NEGATIVE) def test_invalid_maintenance_mode_exceptions_list_negative(self): - self.assertEqual([r.id for r in self.func(None)], - ["relate_session_restart_cooldown_seconds.E002"]) + self.assertCheckMessages( + ["relate_session_restart_cooldown_seconds.E002"]) class CheckRelateTicketMinutesValidAfterUse(CheckRelateSettingsBase): + msg_id_prefix = "relate_ticket_minutes_valid_after_use" + VALID_CONF = 10 VALID_CONF_BY_CALC = 2 * 5 INVALID_CONF_STR = "10" @@ -365,26 +412,26 @@ class CheckRelateTicketMinutesValidAfterUse(CheckRelateSettingsBase): @override_settings(RELATE_TICKET_MINUTES_VALID_AFTER_USE=VALID_CONF) def test_valid_relate_ticket_minutes_valid_after_use(self): - self.assertEqual(self.func(None), []) + self.assertCheckMessages([]) @override_settings(RELATE_TICKET_MINUTES_VALID_AFTER_USE=VALID_CONF_BY_CALC) def test_valid_relate_ticket_minutes_valid_after_use_by_calc(self): - self.assertEqual(self.func(None), []) + self.assertCheckMessages([]) @override_settings(RELATE_TICKET_MINUTES_VALID_AFTER_USE=INVALID_CONF_STR) def test_invalid_relate_ticket_minutes_valid_after_use_str(self): - self.assertEqual([r.id for r in self.func(None)], - ["relate_ticket_minutes_valid_after_use.E001"]) + self.assertCheckMessages( + ["relate_ticket_minutes_valid_after_use.E001"]) @override_settings(RELATE_TICKET_MINUTES_VALID_AFTER_USE=INVALID_CONF_LIST) def test_invalid_relate_ticket_minutes_valid_after_use_list(self): - self.assertEqual([r.id for r in self.func(None)], - ["relate_ticket_minutes_valid_after_use.E001"]) + self.assertCheckMessages( + ["relate_ticket_minutes_valid_after_use.E001"]) @override_settings(RELATE_TICKET_MINUTES_VALID_AFTER_USE=INVALID_CONF_NEGATIVE) def test_invalid_relate_ticket_minutes_valid_after_use_negative(self): - self.assertEqual([r.id for r in self.func(None)], - ["relate_ticket_minutes_valid_after_use.E002"]) + self.assertCheckMessages( + ["relate_ticket_minutes_valid_after_use.E002"]) def side_effect_os_path_is_dir(*args, **kwargs): @@ -408,8 +455,9 @@ def side_effect_os_access(*args, **kwargs): @mock.patch('os.access', side_effect=side_effect_os_access) @mock.patch("os.path.isdir", side_effect=side_effect_os_path_is_dir) class CheckGitRoot(CheckRelateSettingsBase): - VALID_GIT_ROOT = "dir/git/root/path" + msg_id_prefix = "git_root" + VALID_GIT_ROOT = "dir/git/root/path" INVALID_GIT_ROOT_NONE = None INVALID_GIT_ROOT_LIST = [VALID_GIT_ROOT] INVALID_GIT_ROOT_SPACES = " " @@ -420,55 +468,49 @@ class CheckGitRoot(CheckRelateSettingsBase): @override_settings(GIT_ROOT=VALID_GIT_ROOT) def test_valid_git_root(self, mocked_os_access, mocked_os_path_is_dir): - self.assertEqual(self.func(None), []) + self.assertCheckMessages([]) @override_settings(GIT_ROOT=INVALID_GIT_ROOT_NONE) def test_invalid_git_root_none(self, mocked_os_access, mocked_os_path_is_dir): - self.assertEqual([r.id for r in self.func(None)], - ["git_root.E001"]) + self.assertCheckMessages(["git_root.E001"]) @override_settings(GIT_ROOT=INVALID_GIT_ROOT_LIST) def test_invalid_git_root_list(self, mocked_os_access, mocked_os_path_is_dir): - self.assertEqual([r.id for r in self.func(None)], - ["git_root.E002"]) + self.assertCheckMessages(["git_root.E002"]) @override_settings(GIT_ROOT=INVALID_GIT_ROOT_SPACES) def test_invalid_git_root_spaces(self, mocked_os_access, mocked_os_path_is_dir): - self.assertEqual([r.id for r in self.func(None)], - ["git_root.E003"]) + self.assertCheckMessages(["git_root.E003"]) @override_settings(GIT_ROOT=INVALID_GIT_ROOT_NOT_DIR) def test_invalid_git_root(self, mocked_os_access, mocked_os_path_is_dir): - self.assertEqual([r.id for r in self.func(None)], - ["git_root.E003"]) + self.assertCheckMessages(["git_root.E003"]) @override_settings(GIT_ROOT=INVALID_GIT_ROOT_W_FAIL) def test_invalid_git_root_no_write_perm( self, mocked_os_access, mocked_os_path_is_dir): # no write permission - self.assertEqual([r.id for r in self.func(None)], - ["git_root.E004"]) + self.assertCheckMessages(["git_root.E004"]) @override_settings(GIT_ROOT=INVALID_GIT_ROOT_R_FAIL) def test_invalid_git_root_no_read_perms( self, mocked_os_access, mocked_os_path_is_dir): # no read permission - self.assertEqual([r.id for r in self.func(None)], - ["git_root.E005"]) + self.assertCheckMessages(["git_root.E005"]) @override_settings(GIT_ROOT=INVALID_GIT_ROOT_W_R_FAIL) def test_invalid_git_root_no_both_perms( self, mocked_os_access, mocked_os_path_is_dir): # no write and read permissions - result = self.func(None) - self.assertEqual(len(result), 2) - self.assertEqual([r.id for r in result], - ["git_root.E004", "git_root.E005"]) + self.assertCheckMessages(["git_root.E004", "git_root.E005"]) class CheckRelateCourseLanguages(CheckRelateSettingsBase): - # For this tests to pass, LANGUAGE_CODE, LANGUAGES, USE_I18N in - # local_settings.example.py should not be configured + """ + For this tests to pass, LANGUAGE_CODE, LANGUAGES, USE_I18N in + local_settings.example.py should not be configured""" + + msg_id_prefix = "relate_languages" VALID_CONF1 = [ ('en', _('my English')), @@ -503,99 +545,95 @@ class CheckRelateCourseLanguages(CheckRelateSettingsBase): def test_valid(self): with override_settings(LANGUAGES=self.VALID_CONF1): - self.assertEqual(self.func(None), []) + self.assertCheckMessages([]) with override_settings(LANGUAGES=self.VALID_CONF2): - self.assertEqual(self.func(None), []) + self.assertCheckMessages([]) with override_settings(LANGUAGES=self.VALID_CONF3): - self.assertEqual(self.func(None), []) + self.assertCheckMessages([]) with override_settings(LANGUAGES=self.VALID_CONF4): - self.assertEqual(self.func(None), []) + self.assertCheckMessages([]) with override_settings(LANGUAGES=self.VALID_CONF5): - self.assertEqual(self.func(None), []) + self.assertCheckMessages([]) with override_settings(LANGUAGES=self.VALID_CONF6): - self.assertEqual(self.func(None), []) + self.assertCheckMessages([]) def test_lang_not_list_or_tuple(self): with override_settings(LANGUAGES=self.INVALID_CONF1): - self.assertEqual([r.id for r in self.func(None)], - ["relate_languages.E002"]) + self.assertCheckMessages(["relate_languages.E002"]) def test_lang_item_not_2_tuple(self): with override_settings(LANGUAGES=self.INVALID_CONF2): - self.assertEqual([r.id for r in self.func(None)], - ["relate_languages.E002"]) + self.assertCheckMessages(["relate_languages.E002"]) def test_lang_multiple_error(self): with override_settings(LANGUAGES=self.INVALID_CONF3): - self.assertEqual([r.id for r in self.func(None)], - ['relate_languages.E002']) + self.assertCheckMessages(["relate_languages.E002"]) def test_lang_type_string(self): with override_settings(LANGUAGES=self.INVALID_CONF4): - self.assertEqual([r.id for r in self.func(None)], - ["relate_languages.E001"]) + self.assertCheckMessages(["relate_languages.E001"]) def test_item_having_same_lang_code_with_settings_language_code(self): with override_settings(LANGUAGES=self.VALID_CONF1, LANGUAGE_CODE="en"): - self.assertEqual([r.id for r in self.func(None)], - ["relate_languages.W001"]) + self.assertCheckMessages( + expected_ids=["relate_languages.W001"], - # 'my English' is used for language description of 'en' - # instead of 'English' - self.assertEqual([r.msg for r in self.func(None)], - ["Duplicate language entries were found in " - "settings.LANGUAGES for 'en', 'my English' " - "will be used as its language_description"]) + # 'my English' is used for language description of 'en' + # instead of 'English' + expected_msgs=[ + "Duplicate language entries were found in " + "settings.LANGUAGES for 'en', 'my English' " + "will be used as its language_description"] + ) def test_item_duplicated_inside_settings_languages(self): with override_settings(LANGUAGES=self.VALID_WITH_WARNNING_CONF): - self.assertEqual([r.id for r in self.func(None)], - ["relate_languages.W001"]) - # 'my Simplified Chinese' is used for language description of 'zh-hans' - # instead of 'Simplified Chinese' - self.assertEqual([r.msg for r in self.func(None)], - ["Duplicate language entries were found in " - "settings.LANGUAGES for 'zh-hans', 'my Simplified " - "Chinese' will be used as its " - "language_description"]) + self.assertCheckMessages( + expected_ids=["relate_languages.W001"], + + # 'my Simplified Chinese' is used for language description of + # 'zh-hans' instead of 'Simplified Chinese' + expected_msgs=[ + "Duplicate language entries were found in " + "settings.LANGUAGES for 'zh-hans', 'my Simplified " + "Chinese' will be used as its " + "language_description"] + ) def test_item_duplicated_mixed(self): with override_settings(LANGUAGES=self.VALID_WITH_WARNNING_CONF, LANGUAGE_CODE="en"): - self.assertEqual([r.id for r in self.func(None)], - ["relate_languages.W001", - "relate_languages.W001"]) + self.assertCheckMessages( + ["relate_languages.W001", "relate_languages.W001"]) class CheckRelateSiteName(CheckRelateSettingsBase): + msg_id_prefix = "relate_site_name" + VALID_CONF = "My RELATE" INVALID_CONF = ["My RELATE"] def test_site_name_not_configured(self): with override_settings(): del settings.RELATE_SITE_NAME - self.assertEqual([r.id for r in self.func(None)], - ["relate_site_name.E001"]) + self.assertCheckMessages(["relate_site_name.E001"]) def test_site_name_none(self): with override_settings(RELATE_SITE_NAME=None): - self.assertEqual([r.id for r in self.func(None)], - ["relate_site_name.E002"]) + self.assertCheckMessages(["relate_site_name.E002"]) def test_site_name_invalid_instance_error(self): with override_settings(RELATE_SITE_NAME=self.INVALID_CONF): - self.assertEqual([r.id for r in self.func(None)], - ["relate_site_name.E003"]) + self.assertCheckMessages(["relate_site_name.E003"]) def test_site_name_blank_string(self): with override_settings(RELATE_SITE_NAME=" "): - self.assertEqual([r.id for r in self.func(None)], - ["relate_site_name.E004"]) + self.assertCheckMessages(["relate_site_name.E004"]) TEST_MY_OVERRIDING_TEMPLATES_DIR = os.path.join(os.path.dirname(__file__), @@ -603,6 +641,8 @@ TEST_MY_OVERRIDING_TEMPLATES_DIR = os.path.join(os.path.dirname(__file__), class CheckRelateTemplatesDirs(CheckRelateSettingsBase): + msg_id_prefix = "relate_override_templates_dirs" + VALID_CONF = [TEST_MY_OVERRIDING_TEMPLATES_DIR] INVALID_CONF1 = TEST_MY_OVERRIDING_TEMPLATES_DIR # string INVALID_CONF2 = [(TEST_MY_OVERRIDING_TEMPLATES_DIR,)] # items not string @@ -612,29 +652,27 @@ class CheckRelateTemplatesDirs(CheckRelateSettingsBase): def test_valid_conf(self): with override_settings(RELATE_OVERRIDE_TEMPLATES_DIRS=self.VALID_CONF): - self.assertEqual(self.func(None), []) + self.assertCheckMessages([]) def test_not_configured(self): with override_settings(): del settings.RELATE_OVERRIDE_TEMPLATES_DIRS - self.assertEqual(self.func(None), []) + self.assertCheckMessages([]) def test_configured_none(self): with override_settings(RELATE_OVERRIDE_TEMPLATES_DIRS=None): - self.assertEqual(self.func(None), []) + self.assertCheckMessages([]) def test_invalid_instance_error(self): with override_settings(RELATE_OVERRIDE_TEMPLATES_DIRS=self.INVALID_CONF1): - self.assertEqual([r.id for r in self.func(None)], - ["relate_override_templates_dirs.E001"]) + self.assertCheckMessages(["relate_override_templates_dirs.E001"]) def test_invalid_item_instance_error(self): with override_settings(RELATE_OVERRIDE_TEMPLATES_DIRS=self.INVALID_CONF2): - self.assertEqual([r.id for r in self.func(None)], - ["relate_override_templates_dirs.E002"]) + self.assertCheckMessages(["relate_override_templates_dirs.E002"]) def test_invalid_path(self): with override_settings(RELATE_OVERRIDE_TEMPLATES_DIRS=self.INVALID_CONF3): - self.assertEqual([r.id for r in self.func(None)], - ["relate_override_templates_dirs.W001", - "relate_override_templates_dirs.W001"]) + self.assertCheckMessages( + ["relate_override_templates_dirs.W001", + "relate_override_templates_dirs.W001"])