def test_decode_null_content(immutable_keyed_list_schema, decode_mapping):
    """Content that is explicitly null is decoded."""
    composite = Composite(immutable_keyed_list_schema)
    content: Dict = {"x": {"inner_folder": {"nombre": None}}}
    expected: Dict = {"x": {"name": None}}
    actual: Dict = composite.decode_keyed_list(decode_mapping, content)
    assert actual == expected
def test_decode_keyed_list(immutable_keyed_list_schema, decode_mapping):
    """Both mappings and content present."""
    composite = Composite(immutable_keyed_list_schema)
    content: Dict = {
        "al": {
            "inner_folder": {
                "nombre": "Al",
                "edad": 25
            },
            "helado": "Rocky road"
        },
        "joe": {
            "inner_folder": {
                "nombre": "Joe",
                "edad": 34
            },
            "helado": "Clam chowder"
        }
    }
    expected: 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
        }
    }
    actual: Dict = composite.decode_keyed_list(decode_mapping, content)
    assert actual == expected
def test_decode_keyed_list_multiple_empty(immutable_keyed_list_schema,
                                          decode_mapping):
    """Mappings present, no content."""
    composite = Composite(immutable_keyed_list_schema)
    content: Dict = {"x": {}, "y": {}, "z": {}}
    expected: Dict = content.copy()
    actual: Dict = composite.decode_keyed_list(decode_mapping, content)
    assert actual == expected
def test_decode_missing_content_skips(immutable_keyed_list_schema,
                                      decode_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": {
            "helado": "Rocky road"
        },
        "joe": {
            "inner_folder": {
                "nombre": "Joe"
            }
        }
    }
    expected: Dict = {
        "al": {
            "ice cream": "Rocky road"
        },
        "joe": {
            "name": "Joe",
        }
    }
    actual: Dict = composite.decode_keyed_list(decode_mapping, content)
    assert actual == expected
def test_decode_keyed_list_zero_length(immutable_keyed_list_schema,
                                       decode_mapping):
    """Mappings present, no content."""
    composite = Composite(immutable_keyed_list_schema)
    actual: Dict = composite.decode_keyed_list(decode_mapping, {})
    assert actual == {}
def test_decode_keyed_list_trivial(trivial_schema):
    """No mappings, no content"""
    composite = Composite(trivial_schema)
    actual: Dict = composite.decode_keyed_list({}, {})
    assert actual == {}