Skip to content

Commit

Permalink
Code refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
artbez committed Apr 2, 2017
1 parent ef435cc commit 620ae29
Show file tree
Hide file tree
Showing 32 changed files with 271 additions and 189 deletions.
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ script:

- cd ../ui-testing
- mvn test -P travis &
- sleep 1200
- sleep 1500

notifications:
slack: qreal-web:sT5qgA4qZZ9eyLI0yy2Mp81E
49 changes: 35 additions & 14 deletions ui-testing/src/main/java/com/qreal/wmp/uitesting/PageFactory.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,22 @@
import com.qreal.wmp.uitesting.dia.scene.SceneProxy;
import com.qreal.wmp.uitesting.headerpanel.EditorHeaderPanelImpl;
import com.qreal.wmp.uitesting.mousegestures.GestureManipulatorImpl;
import com.qreal.wmp.uitesting.mousegestures.RobotCalibration;
import com.qreal.wmp.uitesting.pages.AuthPage;
import com.qreal.wmp.uitesting.pages.DashboardPage;
import com.qreal.wmp.uitesting.pages.EditorPage;
import com.qreal.wmp.uitesting.pages.EditorPageFacade;
import com.qreal.wmp.uitesting.pages.editor.DefaultEditorPage;
import com.qreal.wmp.uitesting.pages.editor.EditorPage;
import com.qreal.wmp.uitesting.pages.editor.EditorPageFacade;
import com.qreal.wmp.uitesting.pages.editor.EditorPageWithGestures;
import org.jetbrains.annotations.Contract;
import org.openqa.selenium.WebDriver;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import static com.codeborne.selenide.Selenide.title;
import static com.codeborne.selenide.WebDriverRunner.url;

/** Returns page instance for requested uri. */
/** Returns page instance for requested uri.
* Important: Factory must be used only if url of wanted page is opened in browser. */
public class PageFactory {

private static final Logger logger = LoggerFactory.getLogger(PageFactory.class);
Expand All @@ -29,14 +34,20 @@ public PageFactory(WebDriver webDriver) {
/** Returns Editor Page instance. */
public EditorPage getEditorPage() {
logger.info("Editor page was created");
EditorPageFacade editorPageFacade = new EditorPageFacade();
EditorPage page = new EditorPage(
title(),
SceneProxy.getSceneProxy(webDriver, editorPageFacade),
PalleteImpl.getPallete(),
PropertyEditorImpl.getPropertyEditor(),
EditorHeaderPanelImpl.getEditorHeaderPanel(this, webDriver, editorPageFacade),
GestureManipulatorImpl.getGestureManipulator(webDriver, editorPageFacade)
EditorPageFacade editorPageFacade = new EditorPageFacade(url());
EditorPage page = getDefaultEditorPage(editorPageFacade);
editorPageFacade.setScene((SceneProxy) page.getScene());
return page;
}

/** Returns Editor page with gesture decorator. */
public EditorPage getEditorPageWithGestures() {
EditorPageFacade editorPageFacade = new EditorPageFacade(url());
RobotCalibration.calibrate(webDriver);
editorPageFacade.reload();
EditorPage page = new EditorPageWithGestures(
getDefaultEditorPage(editorPageFacade),
GestureManipulatorImpl.getGestureManipulator(editorPageFacade)
);
editorPageFacade.setScene((SceneProxy) page.getScene());
return page;
Expand All @@ -45,12 +56,22 @@ public EditorPage getEditorPage() {
/** Returns Dashboard Page instance. */
public DashboardPage getDashboardPage() {
logger.info("Dashboard page was created");
return new DashboardPage(title());
return new DashboardPage();
}

/** Returns Auth Page instance. */
public AuthPage getAuthPage() {
logger.info("Auth page was created");
return new AuthPage(title());
return new AuthPage();
}

@Contract("_ -> !null")
private EditorPage getDefaultEditorPage(EditorPageFacade editorPageFacade) {
return new DefaultEditorPage(
SceneProxy.getSceneProxy(webDriver, editorPageFacade),
PalleteImpl.getPallete(),
PropertyEditorImpl.getPropertyEditor(),
EditorHeaderPanelImpl.getEditorHeaderPanel(this, webDriver, editorPageFacade)
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ private <T> T getPage(Page page) {
case Auth: return (T) pageFactory.getAuthPage();
case Dashboard: return (T) pageFactory.getDashboardPage();
case EditorBPMN: return (T) pageFactory.getEditorPage();
case EditorRobots: return (T) pageFactory.getEditorPage();
case EditorRobots: return (T) pageFactory.getEditorPageWithGestures();
default: return null;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import com.codeborne.selenide.WebDriverRunner;
import com.qreal.wmp.uitesting.PageFactory;
import com.qreal.wmp.uitesting.PageLoader;
import com.qreal.wmp.uitesting.mousegestures.RobotCalibration;
import com.qreal.wmp.uitesting.services.Auther;
import com.qreal.wmp.uitesting.services.Opener;
import com.qreal.wmp.uitesting.services.impl.AutherImpl;
Expand Down Expand Up @@ -43,7 +42,6 @@ public WebDriver webDriver() {
driver.manage().timeouts().setScriptTimeout(3, TimeUnit.SECONDS);
driver.manage().timeouts().pageLoadTimeout(20, TimeUnit.SECONDS);
WebDriverRunner.setWebDriver(driver);
RobotCalibration.calibrate(driver);
return driver;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,7 @@

import static com.codeborne.selenide.Selenide.$;

/**
* Describes Scene of Editor.
* Can add rm and manipulate with objects on that area.
*/
/** {@inheritDoc} */
public class DefaultScene implements Scene {

private static final Logger logger = LoggerFactory.getLogger(PalleteImpl.class);
Expand Down Expand Up @@ -148,11 +145,6 @@ public LinkProvider getLinkProvider() {
return linkProvider;
}

/* @Contract("_ -> !null")
public static Scene getScene(WebDriver webDriver) {
return new DefaultScene(webDriver);
}
*/
@Contract(pure = true)
private static String createDiv(String divName) {
return "$('body').append('<div id=\"" + divName + "\" style=\"position:absolute;visibility:hidden;\"></div>');";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,13 @@
import com.qreal.wmp.uitesting.dia.scene.window.SceneWindow;
import com.qreal.wmp.uitesting.dia.scene.window.SceneWindowImpl;
import com.qreal.wmp.uitesting.exceptions.ElementNotOnTheSceneException;
import com.qreal.wmp.uitesting.pages.EditorPageFacade;
import com.qreal.wmp.uitesting.pages.editor.EditorPageFacade;
import org.jetbrains.annotations.Contract;
import org.openqa.selenium.WebDriver;

import java.util.List;

/** Provides Scene interface and getters to its components. */
public class SceneProxy implements Scene {

public static final String SELECTOR = ".scene-wrapper";
Expand All @@ -23,10 +24,12 @@ public class SceneProxy implements Scene {

private final LinkProvider linkProvider;

private final SceneWindow sceneWindow;

private final Scene scene;

private SceneProxy(WebDriver driver, EditorPageFacade editorPageFacade) {
SceneWindow sceneWindow = SceneWindowImpl.getSceneWindow(driver);
sceneWindow = SceneWindowImpl.getSceneWindow(driver);
blockProvider = BlockProvider.getBlockProvider(sceneWindow, SELECTOR, editorPageFacade);
linkProvider = LinkProvider.getLinkProvider(SELECTOR, driver, editorPageFacade);
scene = new DefaultScene(driver, SELECTOR, sceneWindow, blockProvider, linkProvider);
Expand All @@ -40,41 +43,53 @@ public LinkProvider getLinkProvider() {
return linkProvider;
}

public SceneWindow getSceneWindow() {
return sceneWindow;
}

/** {@inheritDoc} */
@Override
public Block dragAndDrop(PalleteElement palleteElement) {
return scene.dragAndDrop(palleteElement);
}

/** {@inheritDoc} */
@Override
public Block dragAndDrop(PalleteElement element, int cellX, int cellY) {
return scene.dragAndDrop(element, cellX, cellY);
}

/** {@inheritDoc} */
@Override
public void moveToCell(Block block, int cellX, int cellY) {
scene.moveToCell(block, cellX, cellY);
}

/** {@inheritDoc} */
@Override
public boolean exist(SceneElement element) {
return scene.exist(element);
}

/** {@inheritDoc} */
@Override
public void remove(SceneElement element) throws ElementNotOnTheSceneException {
scene.remove(element);
}

/** {@inheritDoc} */
@Override
public Link addLink(Block source, Block target) {
return scene.addLink(source, target);
}

/** {@inheritDoc} */
@Override
public List<Block> getBlocks() {
return scene.getBlocks();
}

/** {@inheritDoc} */
@Override
public void clean() {
scene.clean();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.qreal.wmp.uitesting.dia.scene.elements;

import com.qreal.wmp.uitesting.pages.EditorPageFacade;
import com.qreal.wmp.uitesting.pages.editor.EditorPageFacade;
import org.openqa.selenium.By;

import static com.codeborne.selenide.Selenide.$;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import com.codeborne.selenide.SelenideElement;
import com.qreal.wmp.uitesting.dia.scene.Coordinate;
import com.qreal.wmp.uitesting.exceptions.ElementNotOnTheSceneException;
import com.qreal.wmp.uitesting.pages.EditorPageFacade;
import com.qreal.wmp.uitesting.pages.editor.EditorPageFacade;
import org.openqa.selenium.By;

import static com.codeborne.selenide.Selenide.$;
Expand All @@ -21,6 +21,7 @@ public class Link extends SceneElementImpl {

private final SceneElement target;

@SuppressWarnings({"all"})
private final EditorPageFacade editorPageFacade;

/** Describes link between two blocks. */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import com.qreal.wmp.uitesting.dia.scene.elements.Block;
import com.qreal.wmp.uitesting.dia.scene.window.SceneWindow;
import com.qreal.wmp.uitesting.exceptions.ElementNotOnTheSceneException;
import com.qreal.wmp.uitesting.pages.EditorPageFacade;
import com.qreal.wmp.uitesting.pages.editor.EditorPageFacade;
import org.jetbrains.annotations.Contract;
import org.openqa.selenium.By;
import org.openqa.selenium.NotFoundException;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import com.codeborne.selenide.SelenideElement;
import com.qreal.wmp.uitesting.dia.scene.elements.Block;
import com.qreal.wmp.uitesting.dia.scene.elements.Link;
import com.qreal.wmp.uitesting.pages.EditorPageFacade;
import com.qreal.wmp.uitesting.pages.editor.EditorPageFacade;
import org.jetbrains.annotations.Contract;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
Expand Down Expand Up @@ -71,11 +71,12 @@ public void recalculateLinks() {
.collect(Collectors.toSet());
}

@Contract("_, _ -> !null")
@Contract("_, _, _ -> !null")
public static LinkProvider getLinkProvider(String selector, WebDriver webDriver, EditorPageFacade facade) {
return new LinkProvider(selector, webDriver, facade);
}

/** Returns new link if it was created. */
public Optional<SelenideElement> updateLinks() {
final List<SelenideElement> allElements = $$(By.cssSelector(selector + " #v_7 > *"));
return allElements.stream()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,6 @@ public interface SceneWindow {
* @param coordinate coordinate to move
*/
void focus(final Coordinate coordinate);

void update();
}
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ public void move(final Block element, final Coordinate dist) throws ElementNotOn

@Override
public void focus(final Coordinate coordinate) {
updateCanvasInfo(driver);
update();
int sizeHor = Double.valueOf($(By.id("SceneWindowHorSize")).innerHtml()).intValue();
int sizeVer = Double.valueOf($(By.id("SceneWindowVerSize")).innerHtml()).intValue();

Expand All @@ -104,15 +104,16 @@ public void focus(final Coordinate coordinate) {
"canvas.scrollTop = " + Math.max(0, (coordinate.getYAbsolute() - sizeVer / 2)) + ";"
);
}
updateCanvasInfo(driver);
update();
}

@Contract("_ -> !null")
public static SceneWindow getSceneWindow(WebDriver webDriver) {
return new SceneWindowImpl(webDriver);
}

public static void updateCanvasInfo(WebDriver driver) {
@Override
public void update() {
if (driver instanceof JavascriptExecutor) {
((JavascriptExecutor) driver).executeScript("var canvas = " +
"document.getElementsByClassName(\"scene-wrapper\")[0]; " +
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import com.qreal.wmp.uitesting.headerpanel.folderwindow.FileItem;
import com.qreal.wmp.uitesting.headerpanel.folderwindow.FolderArea;
import com.qreal.wmp.uitesting.pages.DashboardPage;
import com.qreal.wmp.uitesting.pages.EditorPageFacade;
import com.qreal.wmp.uitesting.pages.editor.EditorPageFacade;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.slf4j.Logger;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ public FolderArea move(String path) {
@Override
public FolderArea deleteFolder(String name) {
if (!isFolderExist(name)) {
throw new NullPointerException("Folder is not exist");
throw new IllegalArgumentException("Folder is not exist");
}
$(selector).find(By.className("folders")).find(byText(name)).contextClick();
$(By.id("open-diagram-context-menu")).should(Condition.visible);
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import java.util.List;

/** Describes gestures for JSON parsing. */
public class Gesture {

private String name;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
package com.qreal.wmp.uitesting.mousegestures;

import com.qreal.wmp.uitesting.dia.scene.Coordinate;
import com.qreal.wmp.uitesting.dia.scene.elements.Block;
import com.qreal.wmp.uitesting.dia.scene.elements.Link;

/** Provides interface for working with gestures. */
public interface GestureManipulator {

/** Draw figure which name is in the parameter. */
Block draw(String name);

/** Draw line between two blocks. */
Link drawLine(Block source, Block target);
}
Loading

0 comments on commit 620ae29

Please sign in to comment.