aboutsummaryrefslogtreecommitdiffstats
path: root/uitest/src/com/vaadin/tests/components/datefield/LocaleChangeTest.java
blob: 38e4b7e0b828fdd8e0dd1bfd0c703d4538cc3a1d (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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
/*
 * Copyright 2000-2014 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.tests.components.datefield;

import static org.junit.Assert.assertEquals;

import org.junit.Test;
import org.openqa.selenium.By;

import com.vaadin.testbench.parallel.BrowserUtil;
import com.vaadin.tests.tb3.MultiBrowserTest;

public class LocaleChangeTest extends MultiBrowserTest {

    @Test
    public void testLocaleChange() {
        openTestURL();

        // Check the initial value and that popup can be opened.
        assertEquals("22/05/14 20:00:00", getDateValue());
        toggleDatePopup();
        assertPopupOpen(true);

        // Close the popup and change the locale.
        toggleDatePopupWorkaroundClosePopupIE();
        assertPopupOpen(false);
        driver.findElement(By.className("v-button")).click(); // Locale change.

        // Check that the value has changed and the popup can still be opened
        // without problems.
        assertEquals("5/22/14 08:00:00 PM", getDateValue());
        toggleDatePopup();
        assertPopupOpen(true);
    }

    private void assertPopupOpen(boolean open) {
        assertEquals("Date popup was not " + (open ? "open" : "closed") + ".",
                (open ? 1 : 0),
                driver.findElements(By.className("v-datefield-popup")).size());
    }

    private void toggleDatePopup() {
        driver.findElement(By.className("v-datefield-button")).click();
    }

    /*
     * Work around bug reported in ticket #14086. Delete this method once fixed
     * andd use toggleDatePopup() instead.
     */
    private void toggleDatePopupWorkaroundClosePopupIE() {
        if (!BrowserUtil.isIE(getDesiredCapabilities())) {
            driver.findElement(By.className("v-datefield-button")).click();
        } else {
            boolean popupOpen = driver.findElements(
                    By.className("v-datefield-popup")).size() == 1;
            if (popupOpen) {
                driver.findElement(
                        By.className("v-datefield-calendarpanel-day-selected"))
                        .click();
            } else {
                driver.findElement(By.className("v-datefield-button")).click();
            }
        }
    }

    private String getDateValue() {
        return driver.findElement(By.className("v-datefield-textfield"))
                .getAttribute("value");
    }
}