vaadin / vaadin-time-picker-flow

Vaadin Flow Java API for vaadin/vaadin-time-picker Web Component
https://vaadin.com/components/vaadin-time-picker
Other
6 stars 11 forks source link

It's not possible to instantiate `GeneratedVaadinTimePicker` subclass whose value is based on the underlying Element value #108

Closed denis-anisimov closed 4 years ago

denis-anisimov commented 4 years ago

This is failing test:


private static LocalTime TEST_VALUE = LocalTime.now();

private static class TestTimePicker
            extends GeneratedVaadinTimePicker<TestTimePicker, LocalTime> {

        TestTimePicker() {
            super(TEST_VALUE, null, String.class, value -> null, value -> null);
        }
    }

@Test
    public void elementHasValue_wrapIntoField_propertyIsNotSetToInitialValue() {
        Element element = new Element("vaadin-time-picker");
        element.setProperty("value", "10:15");
        UI ui = new UI();
        UI.setCurrent(ui);
        VaadinSession session = Mockito.mock(VaadinSession.class);
        ui.getInternals().setSession(session);
        VaadinService service = Mockito.mock(VaadinService.class);
        Mockito.when(session.getService()).thenReturn(service);

        Instantiator instantiator = Mockito.mock(Instantiator.class);

        Mockito.when(service.getInstantiator()).thenReturn(instantiator);

        Mockito.when(instantiator.createComponent(TimePicker.class))
                .thenAnswer(invocation -> new TimePicker(LocalTime.now()));

        TimePicker field = Component.from(element, TimePicker.class);
        Assert.assertEquals("10:15",
                field.getElement().getPropertyRaw("value"));
    }