def test_exception_on_source_for_missing_key(): d = ConfigTree(layers=['inner', 'outer']) d._read_dict({'test_key': 'test_value'}, layer='inner', source='initial_load') with pytest.raises(KeyError) as excinfo: d.metadata('missing_key') assert 'missing_key' in str(excinfo.value)
def test_read_dict(): d = ConfigTree(layers=['inner', 'outer']) d._read_dict({ 'test_key': 'test_value', 'test_key2': 'test_value2' }, layer='inner') d._read_dict({'test_key': 'test_value3'}, layer='outer') assert d.test_key == 'test_value3' assert d.test_key2 == 'test_value2'
def test_source_metadata(): d = ConfigTree(layers=['inner', 'outer']) d._read_dict({'test_key': 'test_value'}, layer='inner', source='initial_load') d._read_dict({'test_key': 'test_value2'}, layer='outer', source='update') assert d.metadata('test_key') == [{ 'layer': 'inner', 'default': False, 'source': 'initial_load', 'value': 'test_value' }, { 'layer': 'outer', 'default': True, 'source': 'update', 'value': 'test_value2' }]
def test_reset_layer_with_preserved_keys_at_depth(): d = ConfigTree(layers=['a', 'b', 'c']) d._read_dict( { 'test_key': { 'test_key2': 'test_value', 'test_key3': { 'test_key4': 'test_value2' } }, 'test_key5': { 'test_key6': 'test_value3', 'test_key7': 'test_value4' } }, layer='a') d._read_dict( { 'test_key': { 'test_key2': 'test_value5', 'test_key3': { 'test_key4': 'test_value6' } }, 'test_key5': { 'test_key6': 'test_value7', 'test_key7': 'test_value8', } }, layer='b') d.reset_layer('b', preserve_keys=['test_key.test_key3', 'test_key5.test_key6']) assert d.test_key.test_key2 == 'test_value' assert d.test_key.test_key3.test_key4 == 'test_value6' assert d.test_key5.test_key6 == 'test_value7' assert d.test_key5.test_key7 == 'test_value4'
def test_read_dict_nested(): d = ConfigTree(layers=['inner', 'outer']) d._read_dict( { 'test_container': { 'test_key': 'test_value', 'test_key2': 'test_value2' } }, layer='inner') d._read_dict({'test_container': { 'test_key': 'test_value3' }}, layer='inner') assert d.test_container.test_key == 'test_value3' assert d.test_container.test_key2 == 'test_value2' d._read_dict({'test_container': { 'test_key2': 'test_value4' }}, layer='outer') assert d.test_container.test_key2 == 'test_value4'