Enum will select the default value if an empty string is given (because the empty string won't be considered as a changed value, so the default is used), but it won't if NULL is supplied and NULLs aren't allowed.
Some notes on this:
before this fix setting NULL as the value would insert an empty string which is the case when MySQL strict mode is disabled and the field is set to an invalid value, so empty string === error
there was no other way to insert invalid values into an enum field, because of the implementation of Jelly_Field_Enum (default is always selected, exception is thrown if the set value is not among the available choices)
Enum will select the default value if an empty string is given (because the empty string won't be considered as a changed value, so the default is used), but it won't if NULL is supplied and NULLs aren't allowed.
Some notes on this: