set default value from dict
further tests for default values in interact


both valid and invalid
undo failed changes

before raising

otherwise, invalid values were still accepted