summaryrefslogtreecommitdiffstats
path: root/uitest/src/main/java/com/vaadin/tests/application/WebBrowserTimeZone.java
blob: 758cc9ef8c48bbcee39e6de449058377705c8aa5 (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
package com.vaadin.tests.application;

import java.util.Arrays;
import java.util.Date;
import java.util.TimeZone;

import com.vaadin.server.VaadinRequest;
import com.vaadin.tests.components.AbstractReindeerTestUI;
import com.vaadin.ui.Label;

public class WebBrowserTimeZone extends AbstractReindeerTestUI {

    @Override
    protected void setup(VaadinRequest request) {

        final Label offsetLabel = addLabel("Browser offset");
        final Label rawOffsetLabel = addLabel("Browser raw offset");
        final Label dstDiffLabel = addLabel(
                "Difference between raw offset and DST");
        final Label dstInEffectLabel = addLabel("Is DST currently active?");
        final Label curDateLabel = addLabel("Current date in the browser");
        final Label diffLabel = addLabel(
                "Browser to Europe/Helsinki offset difference");
        final Label containsLabel = addLabel("Browser could be in Helsinki");

        addButton("Get TimeZone from browser", event -> {
            TimeZone hkiTZ = TimeZone.getTimeZone("Europe/Helsinki");
            int hkiOffset = hkiTZ.getOffset(new Date().getTime());

            int browserOffset = getBrowser().getTimezoneOffset();
            int browserRawOffset = getBrowser().getRawTimezoneOffset();
            String[] tzs = TimeZone.getAvailableIDs(browserRawOffset);

            boolean contains = Arrays.asList(tzs).contains(hkiTZ.getID());

            offsetLabel.setValue(String.valueOf(browserOffset));
            rawOffsetLabel.setValue(String.valueOf(browserRawOffset));
            diffLabel.setValue(String.valueOf(browserOffset - hkiOffset));
            containsLabel.setValue(contains ? "Yes" : "No");
            dstDiffLabel.setValue(String.valueOf(getBrowser().getDSTSavings()));
            dstInEffectLabel
                    .setValue(getBrowser().isDSTInEffect() ? "Yes" : "No");
            curDateLabel.setValue(getBrowser().getCurrentDate().toString());
        });
    }

    private Label addLabel(String caption) {
        final Label label = new Label("n/a");
        label.setCaption(caption);
        addComponent(label);
        return label;
    }

    @Override
    protected String getTestDescription() {
        return "Verifies that browser TimeZone offset works - should be same as server in our case (NOTE assumes server+browser in same TZ)";
    }

    @Override
    protected Integer getTicketNumber() {
        return 6691;
    }

}