summaryrefslogtreecommitdiffstats
path: root/server/src/test/java/com/vaadin/ui/ComboBoxTest.java
blob: 31ff6fda5a762a4e37cf1fcba598a0df2e2dcf46 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/*
 * Copyright 2000-2016 Vaadin Ltd.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
package com.vaadin.ui;

import org.junit.Test;

import com.vaadin.server.ServerRpcManager;
import com.vaadin.shared.data.selection.SelectionServerRpc;
import com.vaadin.tests.util.MockUI;

public class ComboBoxTest {

    @Test
    public void testResetValue() {
        ComboBox<String> comboBox = new ComboBox<>();
        comboBox.setItems("one", "two");

        // Reset value whenever it changes (in a real case, this listener would
        // do something with the selected value before discarding it)
        comboBox.addValueChangeListener(e -> comboBox.setValue(null));

        // "Attach" the component and initialize diffstate
        new MockUI().setContent(comboBox);
        ComponentTest.syncToClient(comboBox);

        // Emulate selection of "one"
        String oneKey = comboBox.getDataCommunicator().getKeyMapper()
                .key("one");
        ServerRpcManager.getRpcProxy(comboBox, SelectionServerRpc.class)
                .select(oneKey);

        ComponentTest.assertEncodedStateProperties(comboBox,
                "Selection change done by the listener should be sent to the client",
                "selectedItemKey");
    }
}