/* * 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."); } } }