def test_encode_unmapped_content_raises(immutable_keyed_list_schema, encode_mapping): """If a content list item contains a field without a mapping, raise.""" composite = Composite(immutable_keyed_list_schema) content: Dict = {"x": {"unknown_field": "foo"}} with pytest.raises(ValueError): composite.encode_keyed_list(encode_mapping, content)
def test_encode_keyed_list(immutable_keyed_list_schema, encode_mapping): """Both mappings and content present.""" composite = Composite(immutable_keyed_list_schema) content: Dict = { "al": { "name": "Al", "age": 25, "ice cream": "Rocky road" }, "joe": { "name": "Joe", "age": 34, "ice cream": "Clam chowder" # https://now.tufts.edu/articles/dish-we-all-scream-for-ice-cream } } expected: Dict = { "al": { "inner_folder": { "nombre": "Al", "edad": 25 }, "helado": "Rocky road" }, "joe": { "inner_folder": { "nombre": "Joe", "edad": 34 }, "helado": "Clam chowder" } } actual: Dict = composite.encode_keyed_list(encode_mapping, content) assert actual == expected
def test_encode_null_content(immutable_keyed_list_schema, encode_mapping): """Content that is explicitly null is encoded.""" composite = Composite(immutable_keyed_list_schema) content: Dict = {"x": {"name": None}} expected: Dict = {"x": {"inner_folder": {"nombre": None}}} actual: Dict = composite.encode_keyed_list(encode_mapping, content) assert actual == expected
def test_encode_keyed_list_multiple_empty(immutable_keyed_list_schema, encode_mapping): """Mappings present, no content.""" composite = Composite(immutable_keyed_list_schema) content: Dict = {"tom": {}, "dick": {}, "harry": {}} expected: Dict = copy.deepcopy(content) actual: Dict = composite.encode_keyed_list(encode_mapping, content) assert actual == expected
def test_encode_missing_content_skips(immutable_keyed_list_schema, encode_mapping): """If something isn't present in a content list item that is defined in the mappings, skip it.""" composite = Composite(immutable_keyed_list_schema) content: Dict = { "al": { "ice cream": "Rocky road" }, "joe": { "name": "Joe", } } expected: Dict = { "al": { "helado": "Rocky road" }, "joe": { "inner_folder": { "nombre": "Joe" } } } actual: Dict = composite.encode_keyed_list(encode_mapping, content) assert actual == expected
def test_encode_keyed_list_zero_length(immutable_keyed_list_schema, encode_mapping): """Mappings present, no content.""" composite = Composite(immutable_keyed_list_schema) actual: Dict = composite.encode_keyed_list(encode_mapping, {}) assert actual == {}
def test_encode_list_trivial(trivial_schema): """No mappings, no content""" composite = Composite(trivial_schema) actual: Dict = composite.encode_keyed_list({}, {}) assert actual == {}