### Question:
ValueAndDataTypePopoverViewImpl extends AbstractPopoverViewImpl implements ValueAndDataTypePopoverView { @SuppressWarnings("unused") @EventHandler("valueEditor") void onValueChange(final BlurEvent event) { final String value = valueEditor.getValue(); final String normalisedValue = presenter.normaliseValue(value); if (!Objects.equals(normalisedValue, value)) { valueEditor.setValue(normalisedValue); } currentValue = normalisedValue; } ValueAndDataTypePopoverViewImpl(); @Inject  ValueAndDataTypePopoverViewImpl(final Input valueEditor,
                                           final DataTypePickerWidget typeRefEditor,
                                           final Div popoverElement,
                                           final Div popoverContentElement,
                                           final Span valueLabel,
                                           final Span dataTypeLabel,
                                           final JQueryProducer.JQuery<Popover> jQueryPopover,
                                           final TranslationService translationService); @Override void init(final Presenter presenter); String getCurrentValue(); QName getCurrentTypeRef(); @Override void setDMNModel(final DMNModelInstrumentedBase dmnModel); @Override void initValue(final String value); @Override void initSelectedTypeRef(final QName typeRef); @Override void show(final Optional<String> popoverTitle); @Override void hide(); void hide(final boolean applyChanges); @Override void reset(); @SuppressWarnings("unused") @EventHandler("valueEditor") void onValueEditorKeyDown(final KeyDownEvent event);  }### Answer:
@Test public void testOnValueChange() { when(presenter.normaliseValue(anyString())).thenAnswer(i -> i.getArguments()[0]); when(valueEditor.getValue()).thenReturn(VALUE); view.onValueChange(blurEvent); verify(presenter, never()).setValue(eq(VALUE)); assertEquals(VALUE, view.getCurrentValue()); }