/*
* Copyright 2016 Red Hat, Inc. and/or its affiliates.
*
* 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 org.uberfire.wbtest.selenium;
import java.util.concurrent.TimeUnit;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.Dimension;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.uberfire.wbtest.client.panels.maximize.MaximizeTestPerspective;
import static org.junit.Assert.*;
import static org.uberfire.wbtest.selenium.SeleniumConditions.*;
public class MaximizePanelTest extends AbstractSeleniumTest {
private MultiTabPanelWrapper tabPanel;
private MultiListPanelWrapper listPanel;
private SimplePanelWrapper simplePanel;
@Before
public void setup() {
driver.get(baseUrl + "#" + MaximizeTestPerspective.class.getName());
tabPanel = new MultiTabPanelWrapper(driver,
MaximizeTestPerspective.TAB_PANEL_ID);
listPanel = new MultiListPanelWrapper(driver,
MaximizeTestPerspective.LIST_PANEL_ID);
simplePanel = new SimplePanelWrapper(driver,
MaximizeTestPerspective.SIMPLE_PANEL_ID);
driver.manage().timeouts().implicitlyWait(1,
TimeUnit.SECONDS);
}
@Test
public void maximizeButtonShouldWorkOnTabbedPanel() throws Exception {
MaximizeTestScreenWrapper tabPanelScreen4 =
new MaximizeTestScreenWrapper(driver,
MaximizeTestPerspective.TAB_PANEL_SCREEN_4_ID);
Dimension reportedSizeBefore = tabPanelScreen4.getReportedSize();
tabPanel.clickMaximizeButton();
Dimension reportedSizeAfter = tabPanelScreen4.getReportedSize();
assertBigger(reportedSizeBefore,
reportedSizeAfter);
assertObscuredBy(tabPanel,
listPanel);
assertObscuredBy(tabPanel,
simplePanel);
}
@Test
public void maximizeButtonShouldWorkOnListPanel() throws Exception {
MaximizeTestScreenWrapper listPanelScreen2 =
new MaximizeTestScreenWrapper(driver,
MaximizeTestPerspective.LIST_PANEL_SCREEN_2_ID);
Dimension reportedSizeBefore = listPanelScreen2.getReportedSize();
listPanel.clickMaximizeButton();
Dimension reportedSizeAfter = listPanelScreen2.getReportedSize();
assertBigger(reportedSizeBefore,
reportedSizeAfter);
assertObscuredBy(listPanel,
tabPanel);
assertObscuredBy(listPanel,
simplePanel);
}
@Test
public void maximizeButtonShouldWorkOnSimplePanel() throws Exception {
MaximizeTestScreenWrapper simplePanelScreen5 =
new MaximizeTestScreenWrapper(driver,
MaximizeTestPerspective.SIMPLE_PANEL_SCREEN_5_ID);
Dimension reportedSizeBefore = simplePanelScreen5.getReportedSize();
simplePanel.clickMaximizeButton();
Thread.sleep(3000);
Dimension reportedSizeAfter = simplePanelScreen5.getReportedSize();
assertBigger(reportedSizeBefore,
reportedSizeAfter);
assertObscuredBy(simplePanel,
tabPanel);
assertObscuredBy(simplePanel,
listPanel);
}
@Test
public void maximizedTabPanelShouldTrackWindowSize() throws Exception {
MaximizeTestScreenWrapper tabPanelScreen4 =
new MaximizeTestScreenWrapper(driver,
MaximizeTestPerspective.TAB_PANEL_SCREEN_4_ID);
tabPanel.clickMaximizeButton();
Dimension originalMaximizedSize = tabPanelScreen4.getReportedSize();
driver.manage().window().setSize(new Dimension(WINDOW_WIDTH + 50,
WINDOW_HEIGHT - 40));
new WebDriverWait(driver,
5)
.until(reportedSizeIs(tabPanelScreen4,
new Dimension(originalMaximizedSize.width + 50,
originalMaximizedSize.height - 40)));
}
@Test
public void maximizedListPanelShouldTrackWindowSize() throws Exception {
MaximizeTestScreenWrapper listPanelScreen2 =
new MaximizeTestScreenWrapper(driver,
MaximizeTestPerspective.LIST_PANEL_SCREEN_2_ID);
listPanel.clickMaximizeButton();
Dimension originalMaximizedSize = listPanelScreen2.getReportedSize();
driver.manage().window().setSize(new Dimension(WINDOW_WIDTH + 50,
WINDOW_HEIGHT - 40));
new WebDriverWait(driver,
5)
.until(reportedSizeIs(listPanelScreen2,
new Dimension(originalMaximizedSize.width + 50,
originalMaximizedSize.height - 40)));
}
/**
* Asserts that {@code after} is bigger in both dimensions than {@code before}.
*/
private void assertBigger(Dimension before,
Dimension after) {
Assert.assertTrue("Element did not grow in width. before=" + before + ", after=" + after,
before.width < after.width);
Assert.assertTrue("Element did not grow in height. before=" + before + ", after=" + after,
before.height < after.height);
}
private void assertObscuredBy(AbstractWorkbenchPanelWrapper big,
AbstractWorkbenchPanelWrapper little) {
assertTrue("Smaller panel " + little.getLocation() + " " + little.getSize() +
" is not obscured by " + big.getLocation() + big.getSize(),
little.isObscuredBy(big));
}
}