diff --git a/swh/model/hypothesis_strategies.py b/swh/model/hypothesis_strategies.py index 5ae56fda648cda8968309ac4edb930461d178cff..80ac0577c6b0a336260e4c5c913e0ec5e06847e0 100644 --- a/swh/model/hypothesis_strategies.py +++ b/swh/model/hypothesis_strategies.py @@ -598,7 +598,9 @@ def objects( return one_of(*candidates) -def object_dicts(blacklist_types=("origin_visit_status",), split_content=False): +def object_dicts( + blacklist_types=(ModelObjectType.ORIGIN_VISIT_STATUS,), split_content=False +): """generates a random couple (type, dict) which dict is suitable for <ModelForType>.from_dict() factory methods. @@ -610,20 +612,20 @@ def object_dicts(blacklist_types=("origin_visit_status",), split_content=False): """ strategies = [ - ("origin", origins_d), - ("origin_visit", origin_visits_d), - ("origin_visit_status", origin_visit_statuses_d), - ("snapshot", snapshots_d), - ("release", releases_d), - ("revision", revisions_d), - ("directory", directories_d), - ("raw_extrinsic_metadata", raw_extrinsic_metadata_d), + (ModelObjectType.ORIGIN, origins_d), + (ModelObjectType.ORIGIN_VISIT, origin_visits_d), + (ModelObjectType.ORIGIN_VISIT_STATUS, origin_visit_statuses_d), + (ModelObjectType.SNAPSHOT, snapshots_d), + (ModelObjectType.RELEASE, releases_d), + (ModelObjectType.REVISION, revisions_d), + (ModelObjectType.DIRECTORY, directories_d), + (ModelObjectType.RAW_EXTRINSIC_METADATA, raw_extrinsic_metadata_d), ] if split_content: - strategies.append(("content", present_contents_d)) - strategies.append(("skipped_content", skipped_contents_d)) + strategies.append((ModelObjectType.CONTENT, present_contents_d)) + strategies.append((ModelObjectType.SKIPPED_CONTENT, skipped_contents_d)) else: - strategies.append(("content", contents_d)) + strategies.append((ModelObjectType.CONTENT, contents_d)) args = [ obj_gen().map(lambda x, obj_type=obj_type: (obj_type, x)) for (obj_type, obj_gen) in strategies diff --git a/swh/model/tests/test_hypothesis_strategies.py b/swh/model/tests/test_hypothesis_strategies.py index d67eededeec80f8b58a1028fd9bcecb37fd67178..f65ae156023dd13e5c5c408a0f99d3a85d6a3a84 100644 --- a/swh/model/tests/test_hypothesis_strategies.py +++ b/swh/model/tests/test_hypothesis_strategies.py @@ -81,7 +81,7 @@ def assert_nested_dict(obj): def test_dicts_generation(obj_type_and_obj): (obj_type, object_) = obj_type_and_obj assert_nested_dict(object_) - if obj_type == "content": + if obj_type == ModelObjectType.CONTENT: COMMON_KEYS = set(DEFAULT_ALGORITHMS) | {"length", "status", "ctime"} if object_["status"] == "visible": assert set(object_) <= COMMON_KEYS | {"data"} @@ -91,9 +91,9 @@ def test_dicts_generation(obj_type_and_obj): assert set(object_) <= COMMON_KEYS | {"data"} else: assert False, object_ - elif obj_type == "release": + elif obj_type == ModelObjectType.RELEASE: assert object_["target_type"] in target_types - elif obj_type == "snapshot": + elif obj_type == ModelObjectType.SNAPSHOT: for branch in object_["branches"].values(): assert branch is None or branch["target_type"] in target_types @@ -109,22 +109,28 @@ def test_datetimes(dt): @given(object_dicts(split_content=False)) def test_dicts_generation_merged_content(obj_type_and_obj): # we should never generate a "skipped_content" here - assert obj_type_and_obj[0] != "skipped_content" + assert obj_type_and_obj[0] != ModelObjectType.SKIPPED_CONTENT -@given( - object_dicts( - split_content=True, blacklist_types={e.value for e in all_but_skipped_content} - ) -) +@given(object_dicts(split_content=True, blacklist_types=all_but_skipped_content)) def test_dicts_generation_split_content(obj_type_and_obj): # we should only generate "skipped_content" - assert obj_type_and_obj[0] == "skipped_content" + assert obj_type_and_obj[0] == ModelObjectType.SKIPPED_CONTENT -@given(object_dicts(blacklist_types=("release", "content"))) +@given( + object_dicts( + blacklist_types={ + ModelObjectType.CONTENT, + ModelObjectType.RELEASE, + } + ) +) def test_dicts_generation_blacklist(obj_type_and_obj): - assert obj_type_and_obj[0] not in ("release", "content") + assert obj_type_and_obj[0] not in { + ModelObjectType.CONTENT, + ModelObjectType.RELEASE, + } @given(objects())