]> source.dussan.org Git - vaadin-framework.git/commitdiff
Test for using setFirstVisibleHourOfDay on Calendar week view (#13431)
authorAnna Miroshnik <anna.miroshnik@arcadia.spb.ru>
Fri, 24 Oct 2014 10:33:31 +0000 (14:33 +0400)
committerVaadin Code Review <review@vaadin.com>
Thu, 15 Jan 2015 14:01:39 +0000 (14:01 +0000)
Change-Id: I6c3ebea2983855937fadc7eab171d892a4f80884

uitest/src/com/vaadin/tests/components/calendar/SetFirstVisibleHourOfDay.java [new file with mode: 0644]
uitest/src/com/vaadin/tests/components/calendar/SetFirstVisibleHourOfDayTest.java [new file with mode: 0644]

diff --git a/uitest/src/com/vaadin/tests/components/calendar/SetFirstVisibleHourOfDay.java b/uitest/src/com/vaadin/tests/components/calendar/SetFirstVisibleHourOfDay.java
new file mode 100644 (file)
index 0000000..4a792bc
--- /dev/null
@@ -0,0 +1,80 @@
+/*
+ * 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.calendar;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Locale;
+
+import com.vaadin.annotations.Theme;
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.tests.components.AbstractTestUI;
+import com.vaadin.ui.Calendar;
+import com.vaadin.ui.Calendar.TimeFormat;
+import com.vaadin.ui.components.calendar.event.BasicEvent;
+
+@Theme("tests-calendar")
+public class SetFirstVisibleHourOfDay extends AbstractTestUI {
+
+    private Calendar calendar;
+
+    @Override
+    protected void setup(VaadinRequest request) {
+        calendar = new Calendar();
+
+        try {
+            BasicEvent event = new BasicEvent("EVENT NAME 1",
+                    "EVENT TOOLTIP 1",
+                    new SimpleDateFormat("yyyy-MM-dd HH:mm")
+                            .parse("2013-09-05 00:00"), new SimpleDateFormat(
+                            "yyyy-MM-dd HH:mm").parse("2013-09-05 13:00"));
+            event.setStyleName("color1");
+            calendar.addEvent(event);
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+
+        try {
+            calendar.setStartDate(new SimpleDateFormat("yyyy-MM-dd")
+                    .parse("2013-09-01"));
+            calendar.setEndDate(new SimpleDateFormat("yyyy-MM-dd")
+                    .parse("2013-09-30"));
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+
+        calendar.setImmediate(true);
+        calendar.setTimeFormat(TimeFormat.Format24H);
+        calendar.setLocale(new Locale("en", "US"));
+
+        calendar.setFirstVisibleHourOfDay(7);
+
+        addComponent(calendar);
+        calendar.setSizeFull();
+        setSizeFull();
+    }
+
+    @Override
+    protected String getTestDescription() {
+        return "Calendar week and day views should work correctly when using setFirstVisibleHourOfDay()";
+    }
+
+    @Override
+    protected Integer getTicketNumber() {
+        return 13431;
+    }
+
+}
diff --git a/uitest/src/com/vaadin/tests/components/calendar/SetFirstVisibleHourOfDayTest.java b/uitest/src/com/vaadin/tests/components/calendar/SetFirstVisibleHourOfDayTest.java
new file mode 100644 (file)
index 0000000..e181632
--- /dev/null
@@ -0,0 +1,112 @@
+/*
+ * 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.calendar;
+
+import java.util.List;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openqa.selenium.By;
+import org.openqa.selenium.StaleElementReferenceException;
+import org.openqa.selenium.WebElement;
+
+import com.vaadin.tests.tb3.MultiBrowserTest;
+
+/**
+ * Tests that calendar week and day views are correct when using
+ * setFirstVisibleHourOfDay()
+ */
+public class SetFirstVisibleHourOfDayTest extends MultiBrowserTest {
+
+    @Override
+    protected boolean requireWindowFocusForIE() {
+        return true;
+    }
+
+    @Test
+    public void testDayView() {
+        openTestURL();
+        waitForElementPresent(By.className("v-calendar"));
+
+        // open day view
+        clickElement("v-calendar-day-number", "5");
+
+        // first of all check if event is present in calendar view
+        waitForElementPresent(By.className("v-calendar-event-content"));
+
+        WebElement event = getDriver().findElement(
+                By.className("v-calendar-event-content"));
+        WebElement dateSlot = getDriver().findElement(
+                By.className("v-datecellslot"));
+
+        Assert.assertEquals(
+                "The height of shown part of calendar event should be equal to 12 datecell slots",
+                dateSlot.getSize().getHeight() * 12, event.getSize()
+                        .getHeight());
+    }
+
+    @Test
+    public void testWeekView() {
+        openTestURL();
+        waitForElementPresent(By.className("v-calendar"));
+
+        // open week view
+        clickElement("v-calendar-week-number", "36");
+
+        // first of all check if event is present in calendar view
+        waitForElementPresent(By.className("v-calendar-event-content"));
+
+        WebElement event = getDriver().findElement(
+                By.className("v-calendar-event-content"));
+        WebElement dateSlot = getDriver().findElement(
+                By.className("v-datecellslot"));
+
+        Assert.assertEquals(
+                "The height of shown part of calendar event should be equal to 12 datecell slots",
+                dateSlot.getSize().getHeight() * 12, event.getSize()
+                        .getHeight());
+    }
+
+    private void clickElement(String className, String text) {
+        List<WebElement> elements = findElements(By.className(className));
+
+        boolean found = false;
+        for (WebElement webElement : elements) {
+            if (webElement.getText().equals(text)) {
+                webElement.click();
+                if (BrowserUtil.isIE8(getDesiredCapabilities())) {
+                    try {
+                        // sometimes the element only gets focus from click and
+                        // we need to click the text, which is in the right edge
+                        // of the element
+                        testBenchElement(webElement).click(
+                                webElement.getSize().getWidth() - 5, 9);
+                    } catch (StaleElementReferenceException e) {
+                        // the first click succeeded after all
+                    }
+                }
+                found = true;
+                break;
+            }
+        }
+
+        if (!found) {
+            Assert.fail("Element " + className + " with text " + text
+                    + " not found.");
+        }
+    }
+
+}