diff options
author | Anna Miroshnik <anna.miroshnik@arcadia.spb.ru> | 2014-10-24 20:56:35 +0400 |
---|---|---|
committer | Denis Anisimov <denis@vaadin.com> | 2016-10-31 13:36:16 +0000 |
commit | ee47a94e17aadae18fbee6ad804e35ab12446df5 (patch) | |
tree | 653890dff553be630a6232cd0479cf79a146af60 /uitest | |
parent | 25013128a7e2eb80b565d28abcc0af26219098db (diff) | |
download | vaadin-framework-ee47a94e17aadae18fbee6ad804e35ab12446df5.tar.gz vaadin-framework-ee47a94e17aadae18fbee6ad804e35ab12446df5.zip |
M-day calendar event is hidden if firstVisibleHourOfDay is set (#14737)
Calendar week and day views should be correct when using
setFirstVisibleHourOfDay() and the end event time is 00:00 of the
following day.
Fix + Tests.
Change-Id: If9f42de5e9c476cb48a2f169f150b42a9c0ab6c2
Diffstat (limited to 'uitest')
2 files changed, 194 insertions, 0 deletions
diff --git a/uitest/src/main/java/com/vaadin/tests/components/calendar/SetFirstVisibleHourOfDaySpecialCase.java b/uitest/src/main/java/com/vaadin/tests/components/calendar/SetFirstVisibleHourOfDaySpecialCase.java new file mode 100644 index 0000000000..cb2769990b --- /dev/null +++ b/uitest/src/main/java/com/vaadin/tests/components/calendar/SetFirstVisibleHourOfDaySpecialCase.java @@ -0,0 +1,81 @@ +/* + * 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.v7.ui.Calendar; +import com.vaadin.v7.ui.Calendar.TimeFormat; +import com.vaadin.v7.ui.components.calendar.event.BasicEvent; + +@Theme("tests-calendar") +public class SetFirstVisibleHourOfDaySpecialCase 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 16:00"), + new SimpleDateFormat("yyyy-MM-dd HH:mm") + .parse("2013-09-06 00:00")); + event.setStyleName("color1"); + calendar.addEvent(event); + } catch (ParseException e1) { // Nothing to do + e1.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) { // Nothing to do + + } + + calendar.setImmediate(true); + calendar.setTimeFormat(TimeFormat.Format24H); + calendar.setLocale(new Locale("en", "US")); + + calendar.setFirstVisibleHourOfDay(15); + + addComponent(calendar); + calendar.setSizeFull(); + setSizeFull(); + } + + @Override + protected String getTestDescription() { + return "Calendar week and day views should work correctly when using setFirstVisibleHourOfDay() and " + + "setting the end time of event to 00:00 of the following day"; + } + + @Override + protected Integer getTicketNumber() { + return 14737; + } + +} diff --git a/uitest/src/test/java/com/vaadin/tests/components/calendar/SetFirstVisibleHourOfDaySpecialCaseTest.java b/uitest/src/test/java/com/vaadin/tests/components/calendar/SetFirstVisibleHourOfDaySpecialCaseTest.java new file mode 100644 index 0000000000..de35ec8d54 --- /dev/null +++ b/uitest/src/test/java/com/vaadin/tests/components/calendar/SetFirstVisibleHourOfDaySpecialCaseTest.java @@ -0,0 +1,113 @@ +/* + * 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.testbench.parallel.BrowserUtil; +import com.vaadin.tests.tb3.MultiBrowserTest; + +/** + * Tests that calendar week and day views are correct when using + * setFirstVisibleHourOfDay() and the end event time is 00:00 of the following + * day + */ +public class SetFirstVisibleHourOfDaySpecialCaseTest extends MultiBrowserTest { + + @Override + protected boolean requireWindowFocusForIE() { + return true; + } + + @Test + public void testDayView() { + openTestURL(); + + // 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")); + + // check that event has correct height + 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 16 datecell slots", + dateSlot.getSize().getHeight() * 16, + event.getSize().getHeight()); + } + + @Test + public void testWeekView() { + openTestURL(); + + // 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")); + + // check that event has correct height + 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 16 datecell slots", + dateSlot.getSize().getHeight() * 16, + 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."); + } + } +} |