1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151
|
from typing import NamedTuple
from marshmallow import missing
from marshmallow.error_store import merge_errors
def test_missing_is_falsy():
assert bool(missing) is False
class CustomError(NamedTuple):
code: int
message: str
class TestMergeErrors:
def test_merging_none_and_string(self):
assert merge_errors(None, "error1") == "error1"
def test_merging_none_and_custom_error(self):
assert CustomError(123, "error1") == merge_errors(
None, CustomError(123, "error1")
)
def test_merging_none_and_list(self):
assert merge_errors(None, ["error1", "error2"]) == ["error1", "error2"]
def test_merging_none_and_dict(self):
assert merge_errors(None, {"field1": "error1"}) == {"field1": "error1"}
def test_merging_string_and_none(self):
assert merge_errors("error1", None) == "error1"
def test_merging_custom_error_and_none(self):
assert CustomError(123, "error1") == merge_errors(
CustomError(123, "error1"), None
)
def test_merging_list_and_none(self):
assert merge_errors(["error1", "error2"], None) == ["error1", "error2"]
def test_merging_dict_and_none(self):
assert merge_errors({"field1": "error1"}, None) == {"field1": "error1"}
def test_merging_string_and_string(self):
assert merge_errors("error1", "error2") == ["error1", "error2"]
def test_merging_custom_error_and_string(self):
assert [CustomError(123, "error1"), "error2"] == merge_errors(
CustomError(123, "error1"), "error2"
)
def test_merging_string_and_custom_error(self):
assert ["error1", CustomError(123, "error2")] == merge_errors(
"error1", CustomError(123, "error2")
)
def test_merging_custom_error_and_custom_error(self):
assert [CustomError(123, "error1"), CustomError(456, "error2")] == merge_errors(
CustomError(123, "error1"), CustomError(456, "error2")
)
def test_merging_string_and_list(self):
assert merge_errors("error1", ["error2"]) == ["error1", "error2"]
def test_merging_string_and_dict(self):
assert merge_errors("error1", {"field1": "error2"}) == {
"_schema": "error1",
"field1": "error2",
}
def test_merging_string_and_dict_with_schema_error(self):
assert merge_errors("error1", {"_schema": "error2", "field1": "error3"}) == {
"_schema": ["error1", "error2"],
"field1": "error3",
}
def test_merging_custom_error_and_list(self):
assert [CustomError(123, "error1"), "error2"] == merge_errors(
CustomError(123, "error1"), ["error2"]
)
def test_merging_custom_error_and_dict(self):
assert {
"_schema": CustomError(123, "error1"),
"field1": "error2",
} == merge_errors(CustomError(123, "error1"), {"field1": "error2"})
def test_merging_custom_error_and_dict_with_schema_error(self):
assert {
"_schema": [CustomError(123, "error1"), "error2"],
"field1": "error3",
} == merge_errors(
CustomError(123, "error1"), {"_schema": "error2", "field1": "error3"}
)
def test_merging_list_and_string(self):
assert merge_errors(["error1"], "error2") == ["error1", "error2"]
def test_merging_list_and_custom_error(self):
assert ["error1", CustomError(123, "error2")] == merge_errors(
["error1"], CustomError(123, "error2")
)
def test_merging_list_and_list(self):
assert merge_errors(["error1"], ["error2"]) == ["error1", "error2"]
def test_merging_list_and_dict(self):
assert merge_errors(["error1"], {"field1": "error2"}) == {
"_schema": ["error1"],
"field1": "error2",
}
def test_merging_list_and_dict_with_schema_error(self):
assert merge_errors(["error1"], {"_schema": "error2", "field1": "error3"}) == {
"_schema": ["error1", "error2"],
"field1": "error3",
}
def test_merging_dict_and_string(self):
assert merge_errors({"field1": "error1"}, "error2") == {
"_schema": "error2",
"field1": "error1",
}
def test_merging_dict_and_custom_error(self):
assert {
"_schema": CustomError(123, "error2"),
"field1": "error1",
} == merge_errors({"field1": "error1"}, CustomError(123, "error2"))
def test_merging_dict_and_list(self):
assert merge_errors({"field1": "error1"}, ["error2"]) == {
"_schema": ["error2"],
"field1": "error1",
}
def test_merging_dict_and_dict(self):
assert merge_errors(
{"field1": "error1", "field2": "error2"},
{"field2": "error3", "field3": "error4"},
) == {
"field1": "error1",
"field2": ["error2", "error3"],
"field3": "error4",
}
def test_deep_merging_dicts(self):
assert merge_errors(
{"field1": {"field2": "error1"}}, {"field1": {"field2": "error2"}}
) == {"field1": {"field2": ["error1", "error2"]}}
|