Files
edx-platform/xmodule/modulestore/tests/test_modulestore.py
2022-06-20 18:20:06 +05:00

42 lines
2.1 KiB
Python

"""
Defines a test function, check_has_course_method, useful in various modulestore tests.
This file should potentially be renamed "utilties" since this file contains no tests.
"""
def check_has_course_method(modulestore, locator, locator_key_fields): # lint-amnesty, pylint: disable=missing-function-docstring
error_message = "Called has_course with query {0} and ignore_case is {1}."
for ignore_case in [True, False]:
# should find the course with exact locator
assert modulestore.has_course(locator, ignore_case)
for key_field in locator_key_fields:
if getattr(locator, key_field):
locator_changes_that_should_not_be_found = [
# replace value for one of the keys
{key_field: 'fake'},
# add a character at the end
{key_field: getattr(locator, key_field) + 'X'},
# add a character in the beginning
{key_field: 'X' + getattr(locator, key_field)},
]
for changes in locator_changes_that_should_not_be_found:
search_locator = locator.replace(**changes)
assert not modulestore.has_course(search_locator), error_message.format(search_locator, ignore_case)
# test case [in]sensitivity
locator_case_changes = [
{key_field: getattr(locator, key_field).upper()},
{key_field: getattr(locator, key_field).capitalize()},
{key_field: getattr(locator, key_field).capitalize().swapcase()},
]
for changes in locator_case_changes:
search_locator = locator.replace(**changes)
# if ignore_case is true, the course would be found with a different-cased course locator.
# if ignore_case is false, the course should NOT found given an incorrectly-cased locator.
assert (modulestore.has_course(search_locator, ignore_case) is not None) == ignore_case, \
error_message.format(search_locator, ignore_case)