Skip to content

Commit b22e120

Browse files
committed
Cleanup conditional test behaviour for jsonschema as Python 3.4 no longer supported/tested.
1 parent 36555b5 commit b22e120

1 file changed

Lines changed: 6 additions & 56 deletions

File tree

tests/test_schemas.py

Lines changed: 6 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import contextlib
55
import uuid
66

7+
import jsonschema
78
import pytest
89

910
from le_utils.constants import completion_criteria
@@ -12,29 +13,15 @@
1213
from le_utils.constants import learning_objectives
1314
from le_utils.constants import mastery_criteria
1415

15-
try:
16-
# the jsonschema package for python 3.4 is too old, so if not present, we'll just skip
17-
import jsonschema
18-
except ImportError:
19-
jsonschema = None
2016

21-
22-
# create a common decorator to skip tests if jsonschema is not available
23-
skip_if_jsonschema_unavailable = pytest.mark.skipif(
24-
jsonschema is None, reason="jsonschema package is unavailable"
17+
# this is an example of how to include the mastery criteria schema, which is referenced by the
18+
# completion criteria schema, in the schema resolver so that it validates
19+
resolver = jsonschema.RefResolver.from_schema(mastery_criteria.SCHEMA)
20+
resolver.store.update(
21+
jsonschema.RefResolver.from_schema(completion_criteria.SCHEMA).store
2522
)
2623

2724

28-
resolver = None
29-
if jsonschema is not None:
30-
# this is an example of how to include the mastery criteria schema, which is referenced by the
31-
# completion criteria schema, in the schema resolver so that it validates
32-
resolver = jsonschema.RefResolver.from_schema(mastery_criteria.SCHEMA)
33-
resolver.store.update(
34-
jsonschema.RefResolver.from_schema(completion_criteria.SCHEMA).store
35-
)
36-
37-
3825
def _validate_embed_content_request(data):
3926
"""
4027
:param data: Dictionary of data to validate
@@ -73,7 +60,6 @@ def _assert_not_raises(not_expected):
7360
raise e
7461

7562

76-
@skip_if_jsonschema_unavailable
7763
def test_completion_criteria__time_model__valid():
7864
with _assert_not_raises(jsonschema.ValidationError):
7965
_validate_completion_criteria(
@@ -87,7 +73,6 @@ def test_completion_criteria__time_model__valid():
8773
)
8874

8975

90-
@skip_if_jsonschema_unavailable
9176
def test_completion_criteria__time_model__invalid():
9277
with pytest.raises(jsonschema.ValidationError):
9378
_validate_completion_criteria(
@@ -106,7 +91,6 @@ def test_completion_criteria__time_model__invalid():
10691
)
10792

10893

109-
@skip_if_jsonschema_unavailable
11094
def test_completion_criteria__approx_time_model__valid():
11195
with _assert_not_raises(jsonschema.ValidationError):
11296
_validate_completion_criteria(
@@ -120,7 +104,6 @@ def test_completion_criteria__approx_time_model__valid():
120104
)
121105

122106

123-
@skip_if_jsonschema_unavailable
124107
def test_completion_criteria__approx_time_model__invalid():
125108
with pytest.raises(jsonschema.ValidationError):
126109
_validate_completion_criteria(
@@ -139,7 +122,6 @@ def test_completion_criteria__approx_time_model__invalid():
139122
)
140123

141124

142-
@skip_if_jsonschema_unavailable
143125
def test_completion_criteria__pages_model__valid():
144126
with _assert_not_raises(jsonschema.ValidationError):
145127
_validate_completion_criteria(
@@ -153,7 +135,6 @@ def test_completion_criteria__pages_model__valid():
153135
)
154136

155137

156-
@skip_if_jsonschema_unavailable
157138
def test_completion_criteria__pages_model__percentage__valid():
158139
with _assert_not_raises(jsonschema.ValidationError):
159140
_validate_completion_criteria(
@@ -170,7 +151,6 @@ def test_completion_criteria__pages_model__percentage__valid():
170151
)
171152

172153

173-
@skip_if_jsonschema_unavailable
174154
def test_completion_criteria__pages_model__invalid():
175155
with pytest.raises(jsonschema.ValidationError):
176156
_validate_completion_criteria(
@@ -189,7 +169,6 @@ def test_completion_criteria__pages_model__invalid():
189169
)
190170

191171

192-
@skip_if_jsonschema_unavailable
193172
def test_completion_criteria__pages_model__percentage__invalid():
194173
with pytest.raises(jsonschema.ValidationError):
195174
_validate_completion_criteria(
@@ -208,7 +187,6 @@ def test_completion_criteria__pages_model__percentage__invalid():
208187
)
209188

210189

211-
@skip_if_jsonschema_unavailable
212190
def test_completion_criteria__mastery_model__valid():
213191
with _assert_not_raises(jsonschema.ValidationError):
214192
_validate_completion_criteria(
@@ -244,7 +222,6 @@ def test_completion_criteria__mastery_model__valid():
244222
)
245223

246224

247-
@skip_if_jsonschema_unavailable
248225
def test_completion_criteria__mastery_model__invalid():
249226
with pytest.raises(jsonschema.ValidationError):
250227
_validate_completion_criteria(
@@ -310,7 +287,6 @@ def test_completion_criteria__mastery_model__invalid():
310287
)
311288

312289

313-
@skip_if_jsonschema_unavailable
314290
def test_completion_criteria__reference__valid():
315291
with _assert_not_raises(jsonschema.ValidationError):
316292
_validate_completion_criteria({"model": "reference", "learner_managed": False})
@@ -321,7 +297,6 @@ def test_completion_criteria__reference__valid():
321297
)
322298

323299

324-
@skip_if_jsonschema_unavailable
325300
def test_completion_criteria__reference__invalid():
326301
with pytest.raises(jsonschema.ValidationError):
327302
_validate_completion_criteria(
@@ -341,7 +316,6 @@ def test_completion_criteria__reference__invalid():
341316
)
342317

343318

344-
@skip_if_jsonschema_unavailable
345319
def test_embed__topics__without_ancestors__valid():
346320
with _assert_not_raises(jsonschema.ValidationError):
347321
_validate_embed_topics_request(
@@ -363,7 +337,6 @@ def test_embed__topics__without_ancestors__valid():
363337
)
364338

365339

366-
@skip_if_jsonschema_unavailable
367340
def test_embed__topics__with_ancestors__valid():
368341
with _assert_not_raises(jsonschema.ValidationError):
369342
_validate_embed_topics_request(
@@ -393,7 +366,6 @@ def test_embed__topics__with_ancestors__valid():
393366
)
394367

395368

396-
@skip_if_jsonschema_unavailable
397369
def test_embed__topics__invalid_id():
398370
with pytest.raises(jsonschema.ValidationError):
399371
_validate_embed_topics_request(
@@ -415,7 +387,6 @@ def test_embed__topics__invalid_id():
415387
)
416388

417389

418-
@skip_if_jsonschema_unavailable
419390
def test_embed__topics__missing_language():
420391
with pytest.raises(jsonschema.ValidationError):
421392
_validate_embed_topics_request(
@@ -436,7 +407,6 @@ def test_embed__topics__missing_language():
436407
)
437408

438409

439-
@skip_if_jsonschema_unavailable
440410
def test_embed__topics__invalid_channel_id():
441411
with pytest.raises(jsonschema.ValidationError):
442412
_validate_embed_topics_request(
@@ -458,7 +428,6 @@ def test_embed__topics__invalid_channel_id():
458428
)
459429

460430

461-
@skip_if_jsonschema_unavailable
462431
def test_embed__topics__missing_channel_id():
463432
with pytest.raises(jsonschema.ValidationError):
464433
_validate_embed_topics_request(
@@ -479,7 +448,6 @@ def test_embed__topics__missing_channel_id():
479448
)
480449

481450

482-
@skip_if_jsonschema_unavailable
483451
def test_embed__content__valid():
484452
with _assert_not_raises(jsonschema.ValidationError):
485453
_validate_embed_content_request(
@@ -503,7 +471,6 @@ def test_embed__content__valid():
503471
)
504472

505473

506-
@skip_if_jsonschema_unavailable
507474
def test_embed__content__valid_with_files():
508475
with _assert_not_raises(jsonschema.ValidationError):
509476
_validate_embed_content_request(
@@ -544,7 +511,6 @@ def test_embed__content__valid_with_files():
544511
)
545512

546513

547-
@skip_if_jsonschema_unavailable
548514
def test_embed__content__invalid_id():
549515
with pytest.raises(jsonschema.ValidationError):
550516
_validate_embed_content_request(
@@ -568,7 +534,6 @@ def test_embed__content__invalid_id():
568534
)
569535

570536

571-
@skip_if_jsonschema_unavailable
572537
def test_embed__content__invalid_channel_id():
573538
with pytest.raises(jsonschema.ValidationError):
574539
_validate_embed_content_request(
@@ -592,7 +557,6 @@ def test_embed__content__invalid_channel_id():
592557
)
593558

594559

595-
@skip_if_jsonschema_unavailable
596560
def test_embed__content__invalid_content_id():
597561
with pytest.raises(jsonschema.ValidationError):
598562
_validate_embed_content_request(
@@ -616,7 +580,6 @@ def test_embed__content__invalid_content_id():
616580
)
617581

618582

619-
@skip_if_jsonschema_unavailable
620583
def test_embed__content__invalid_url_files():
621584
with pytest.raises(jsonschema.ValidationError):
622585
_validate_embed_content_request(
@@ -646,7 +609,6 @@ def test_embed__content__invalid_url_files():
646609
)
647610

648611

649-
@skip_if_jsonschema_unavailable
650612
def test_embed__content__invalid_preset_files():
651613
with pytest.raises(jsonschema.ValidationError):
652614
_validate_embed_content_request(
@@ -684,7 +646,6 @@ def _validate_learning_objectives(data):
684646
jsonschema.validate(instance=data, schema=learning_objectives.SCHEMA)
685647

686648

687-
@skip_if_jsonschema_unavailable
688649
def test_learning_objectives__valid():
689650
with _assert_not_raises(jsonschema.ValidationError):
690651
_validate_learning_objectives(
@@ -715,7 +676,6 @@ def test_learning_objectives__valid():
715676
)
716677

717678

718-
@skip_if_jsonschema_unavailable
719679
def test_learning_objectives__valid_uuid_v5():
720680
with _assert_not_raises(jsonschema.ValidationError):
721681
_validate_learning_objectives(
@@ -752,7 +712,6 @@ def test_learning_objectives__valid_uuid_v5():
752712
)
753713

754714

755-
@skip_if_jsonschema_unavailable
756715
def test_learning_objectives__invalid_lo_structure():
757716
with pytest.raises(jsonschema.ValidationError):
758717
_validate_learning_objectives(
@@ -768,7 +727,6 @@ def test_learning_objectives__invalid_lo_structure():
768727
)
769728

770729

771-
@skip_if_jsonschema_unavailable
772730
def test_learning_objectives__invalid_assessment_mapping():
773731
with pytest.raises(jsonschema.ValidationError):
774732
_validate_learning_objectives(
@@ -784,7 +742,6 @@ def test_learning_objectives__invalid_assessment_mapping():
784742
)
785743

786744

787-
@skip_if_jsonschema_unavailable
788745
def test_learning_objectives__invalid_lesson_mapping():
789746
with pytest.raises(jsonschema.ValidationError):
790747
_validate_learning_objectives(
@@ -800,7 +757,6 @@ def test_learning_objectives__invalid_lesson_mapping():
800757
)
801758

802759

803-
@skip_if_jsonschema_unavailable
804760
def test_learning_objectives__missing_required_fields():
805761
# Missing learning_objectives
806762
with pytest.raises(jsonschema.ValidationError):
@@ -832,7 +788,6 @@ def test_learning_objectives__missing_required_fields():
832788
)
833789

834790

835-
@skip_if_jsonschema_unavailable
836791
def test_learning_objectives__empty_structures():
837792
# Empty learning_objectives
838793
with pytest.raises(jsonschema.ValidationError):
@@ -869,7 +824,6 @@ def test_learning_objectives__empty_structures():
869824
)
870825

871826

872-
@skip_if_jsonschema_unavailable
873827
def test_learning_objectives__invalid_uuid_format_in_learning_objectives():
874828
# Invalid UUID format for learning objective ID
875829
with pytest.raises(jsonschema.ValidationError):
@@ -884,7 +838,6 @@ def test_learning_objectives__invalid_uuid_format_in_learning_objectives():
884838
)
885839

886840

887-
@skip_if_jsonschema_unavailable
888841
def test_learning_objectives__invalid_uuid_format_in_references():
889842
# Invalid UUID format in assessment and lesson objective references
890843
with pytest.raises(jsonschema.ValidationError):
@@ -899,7 +852,6 @@ def test_learning_objectives__invalid_uuid_format_in_references():
899852
)
900853

901854

902-
@skip_if_jsonschema_unavailable
903855
def test_learning_objectives__invalid_question_id_pattern():
904856
# Invalid question ID pattern (not a valid UUID v4)
905857
with pytest.raises(jsonschema.ValidationError):
@@ -916,7 +868,6 @@ def test_learning_objectives__invalid_question_id_pattern():
916868
)
917869

918870

919-
@skip_if_jsonschema_unavailable
920871
def test_learning_objectives__invalid_lesson_id_pattern():
921872
# Invalid lesson ID pattern (has extra characters)
922873
with pytest.raises(jsonschema.ValidationError):
@@ -931,7 +882,6 @@ def test_learning_objectives__invalid_lesson_id_pattern():
931882
)
932883

933884

934-
@skip_if_jsonschema_unavailable
935885
def test_learning_objectives__invalid_text_patterns():
936886
# Empty text after trimming whitespace
937887
with pytest.raises(jsonschema.ValidationError):

0 commit comments

Comments
 (0)