/* * 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 org.openqa.selenium.Point; import org.openqa.selenium.WebElement; import org.uberfire.workbench.model.CompassPosition; import static org.junit.Assert.*; /** * A collection of assert methods that are useful across UberFire integration tests. */ public class UberAssertions { /** * Checks that the given "checkMe" element is positioned correctly with respect to the given "anchor" element. * @param expected the position on the page that the checkMe element should have relative to the anchor. * @param anchor the reference element * @param checkMe the element to check */ public static void assertRelativePosition(CompassPosition expected, WebElement anchor, WebElement checkMe) { switch (expected) { case NORTH: if (checkMe.getLocation().y >= anchor.getLocation().y) { fail("checkMe is not NORTH of anchor. anchor.y = " + anchor.getLocation().y + "; checkMe.y " + checkMe.getLocation().y); } break; case SOUTH: if (checkMe.getLocation().y <= anchor.getLocation().y) { fail("checkMe is not SOUTH of anchor. anchor.y = " + anchor.getLocation().y + "; checkMe.y " + checkMe.getLocation().y); } break; case EAST: if (checkMe.getLocation().x <= anchor.getLocation().x) { fail("checkMe is not EAST of anchor. anchor.x = " + anchor.getLocation().x + "; checkMe.x " + checkMe.getLocation().x); } break; case WEST: if (checkMe.getLocation().x >= anchor.getLocation().x) { fail("checkMe is not WEST of anchor. anchor.x = " + anchor.getLocation().x + "; checkMe.x " + checkMe.getLocation().x); } break; default: throw new IllegalArgumentException("Not a valid relative position: " + expected); } } /** * Checks that the checkMe element's center point coincides with the reference element's center point. */ public static void assertCentered(WebElement reference, WebElement checkMe) { Point referenceCenter = new Point(reference.getLocation().x + reference.getSize().width / 2, reference.getLocation().y + reference.getSize().height / 2); Point checkMeCenter = new Point(checkMe.getLocation().x + checkMe.getSize().width / 2, checkMe.getLocation().y + checkMe.getSize().height / 2); assertEquals(referenceCenter, checkMeCenter); } }