lms.util.testing
1import re 2import typing 3 4import edq.testing.asserts 5import edq.testing.unittest 6import edq.util.json 7 8import lms.model.testdata.quizzes 9 10ID_SUBS: typing.List[typing.Tuple[re.Pattern, str]] = [ 11 (re.compile(r'^id: \d+'), 'id: <ID>'), # Text 12 (re.compile(r'^\d+\t'), "<ID>\t"), # Table 13 (re.compile(r'"id": "\d+"'), '"id": "<ID>"'), # JSON 14 (re.compile(r' \(\d{1,2}\)'), ' (<ID>)'), # Labels with Small IDs 15] 16 17def cli_assert_normalize_ids(test: edq.testing.unittest.BaseTest, expected: str, actual: str, **kwargs: typing.Any) -> None: 18 """ 19 Normalize IDs (as output from a standard CLI, 20 and then use edq.testing.asserts.content_equals_normalize(). 21 """ 22 23 for (pattern, replacement) in ID_SUBS: 24 expected = re.sub(pattern, replacement, expected) 25 actual = re.sub(pattern, replacement, actual) 26 27 edq.testing.asserts.content_equals_normalize(test, expected, actual) 28 29def cli_assert_quiz_groups(test: edq.testing.unittest.BaseTest, expected: str, actual: str, **kwargs: typing.Any) -> None: 30 """ 31 Verify that the quiz groups (in JSON) matches the expected test quiz groups. 32 """ 33 34 expected_list = edq.util.json.loads(edq.util.json.dumps(lms.model.testdata.quizzes.ORDERED_QUIZ_GROUPS['Regular Expressions'])) 35 actual_list = edq.util.json.loads(actual) 36 37 # Remove an extra field. 38 for group in expected_list: 39 group.pop('extra_fields', None) 40 41 test.assertListEqual(expected_list, actual_list) 42 43def cli_assert_quiz_questions(test: edq.testing.unittest.BaseTest, expected: str, actual: str, **kwargs: typing.Any) -> None: 44 """ 45 Verify that the quiz questions (in JSON) matches the expected test quiz questions. 46 """ 47 48 expected_list = edq.util.json.loads(edq.util.json.dumps(lms.model.testdata.quizzes.ORDERED_QUIZ_QUESTIONS['Regular Expressions'])) 49 actual_list = edq.util.json.loads(actual) 50 51 # Remove extra fields. 52 for question in expected_list: 53 question.pop('extra_fields', None) 54 question.pop('group_id', None) 55 question.pop('resources', None) 56 57 test.assertListEqual(expected_list, actual_list)
ID_SUBS: List[Tuple[re.Pattern, str]] =
[(re.compile('^id: \\d+'), 'id: <ID>'), (re.compile('^\\d+\\t'), '<ID>\t'), (re.compile('"id": "\\d+"'), '"id": "<ID>"'), (re.compile(' \\(\\d{1,2}\\)'), ' (<ID>)')]
def
cli_assert_normalize_ids( test: edq.testing.unittest.BaseTest, expected: str, actual: str, **kwargs: Any) -> None:
18def cli_assert_normalize_ids(test: edq.testing.unittest.BaseTest, expected: str, actual: str, **kwargs: typing.Any) -> None: 19 """ 20 Normalize IDs (as output from a standard CLI, 21 and then use edq.testing.asserts.content_equals_normalize(). 22 """ 23 24 for (pattern, replacement) in ID_SUBS: 25 expected = re.sub(pattern, replacement, expected) 26 actual = re.sub(pattern, replacement, actual) 27 28 edq.testing.asserts.content_equals_normalize(test, expected, actual)
Normalize IDs (as output from a standard CLI, and then use edq.testing.asserts.content_equals_normalize().
def
cli_assert_quiz_groups( test: edq.testing.unittest.BaseTest, expected: str, actual: str, **kwargs: Any) -> None:
30def cli_assert_quiz_groups(test: edq.testing.unittest.BaseTest, expected: str, actual: str, **kwargs: typing.Any) -> None: 31 """ 32 Verify that the quiz groups (in JSON) matches the expected test quiz groups. 33 """ 34 35 expected_list = edq.util.json.loads(edq.util.json.dumps(lms.model.testdata.quizzes.ORDERED_QUIZ_GROUPS['Regular Expressions'])) 36 actual_list = edq.util.json.loads(actual) 37 38 # Remove an extra field. 39 for group in expected_list: 40 group.pop('extra_fields', None) 41 42 test.assertListEqual(expected_list, actual_list)
Verify that the quiz groups (in JSON) matches the expected test quiz groups.
def
cli_assert_quiz_questions( test: edq.testing.unittest.BaseTest, expected: str, actual: str, **kwargs: Any) -> None:
44def cli_assert_quiz_questions(test: edq.testing.unittest.BaseTest, expected: str, actual: str, **kwargs: typing.Any) -> None: 45 """ 46 Verify that the quiz questions (in JSON) matches the expected test quiz questions. 47 """ 48 49 expected_list = edq.util.json.loads(edq.util.json.dumps(lms.model.testdata.quizzes.ORDERED_QUIZ_QUESTIONS['Regular Expressions'])) 50 actual_list = edq.util.json.loads(actual) 51 52 # Remove extra fields. 53 for question in expected_list: 54 question.pop('extra_fields', None) 55 question.pop('group_id', None) 56 question.pop('resources', None) 57 58 test.assertListEqual(expected_list, actual_list)
Verify that the quiz questions (in JSON) matches the expected test quiz questions.