public override object Deserialize(Cell _data, ConversionContext _context = null) { object data = base.Deserialize(_data); DropdownButton ddButton; if (data == null) { ddButton = new DropdownButton(); } else { ddButton = data as DropdownButton; } if (_context == null || _context.Field == null || _context.Field.Metadata == null) { return ddButton; } if (!_context.Field.Metadata.IsLoaded) { _context.Field.Metadata.Load(); } var metadata = _context.Field.Metadata.FirstOrDefault(m => m.Key == ModuleRepository.DropdownButtonMetadataKey); if (metadata != null && !String.IsNullOrWhiteSpace(metadata.Value)) { var json = new JavaScriptSerializer(); var items = json.Deserialize<string[]>(metadata.Value); if (items != null) { foreach (var i in items) { if (!String.IsNullOrWhiteSpace(i)) { // avoid adding empty entries to the dictionary ddButton.ValidValues.Add(i.EscapeName(), i); } } } } return ddButton; }
public void Test_Deserialize_DropdownButton_Null() { // Arrange var value = new DropdownButton { SelectedValue = null }; object retData = SerializeAndDeserialize(value); // Assert Assert.IsNotNull(retData); Assert.IsInstanceOfType(retData, typeof(DropdownButton)); DropdownButton result = (DropdownButton)retData; Assert.IsNull(result.SelectedValue); }