-
Notifications
You must be signed in to change notification settings - Fork 1.2k
/
RunPlainJavaProjectTest.java
226 lines (208 loc) · 10.9 KB
/
RunPlainJavaProjectTest.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
/*
* Copyright (c) 2012-2017 Red Hat, Inc.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Red Hat, Inc. - initial API and implementation
*/
package org.eclipse.che.selenium.plainjava;
import static org.eclipse.che.selenium.core.constant.TestIntelligentCommandsConstants.CommandsDefaultNames.JAVA_NAME;
import static org.eclipse.che.selenium.core.constant.TestIntelligentCommandsConstants.CommandsGoals.RUN_GOAL;
import static org.eclipse.che.selenium.core.constant.TestIntelligentCommandsConstants.CommandsTypes.JAVA_TYPE;
import static org.eclipse.che.selenium.core.constant.TestMenuCommandsConstants.Project.CONFIGURE_CLASSPATH;
import static org.eclipse.che.selenium.core.constant.TestMenuCommandsConstants.Project.New.JAVA_CLASS;
import static org.eclipse.che.selenium.core.constant.TestMenuCommandsConstants.Project.New.NEW;
import static org.eclipse.che.selenium.core.constant.TestMenuCommandsConstants.Project.New.PACKAGE;
import static org.eclipse.che.selenium.core.constant.TestMenuCommandsConstants.Project.PROJECT;
import static org.eclipse.che.selenium.core.constant.TestMenuCommandsConstants.Workspace.IMPORT_PROJECT;
import static org.eclipse.che.selenium.core.constant.TestMenuCommandsConstants.Workspace.WORKSPACE;
import static org.eclipse.che.selenium.pageobject.CodenvyEditor.MarkersType.ERROR_MARKER;
import com.google.inject.Inject;
import org.eclipse.che.commons.lang.NameGenerator;
import org.eclipse.che.selenium.core.constant.TestMenuCommandsConstants;
import org.eclipse.che.selenium.core.constant.TestProjectExplorerContextMenuConstants;
import org.eclipse.che.selenium.core.user.TestUser;
import org.eclipse.che.selenium.core.workspace.TestWorkspace;
import org.eclipse.che.selenium.pageobject.AskForValueDialog;
import org.eclipse.che.selenium.pageobject.CodenvyEditor;
import org.eclipse.che.selenium.pageobject.ConfigureClasspath;
import org.eclipse.che.selenium.pageobject.Consoles;
import org.eclipse.che.selenium.pageobject.Ide;
import org.eclipse.che.selenium.pageobject.ImportProjectFromLocation;
import org.eclipse.che.selenium.pageobject.Loader;
import org.eclipse.che.selenium.pageobject.Menu;
import org.eclipse.che.selenium.pageobject.ProjectExplorer;
import org.eclipse.che.selenium.pageobject.Wizard;
import org.eclipse.che.selenium.pageobject.intelligent.CommandsEditor;
import org.eclipse.che.selenium.pageobject.intelligent.CommandsExplorer;
import org.openqa.selenium.Keys;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
/** @author Aleksandr Shmaraev */
public class RunPlainJavaProjectTest {
private static final String PROJECT_NAME = NameGenerator.generate("RunningPlainJavaProject", 4);
private static final String NEW_PACKAGE = "base.test";
private static final String CLONE_URI = "https://github.com/iedexmain1/plainJavaProject.git";
private static final String NAME_COMMAND = "startApp";
private static final String COMMAND =
"cd ${current.project.path}\n"
+ "javac -classpath ${project.java.classpath} -sourcepath ${project.java.sourcepath} -d ${project.java.output.dir} src/com/company/nba/MainClass.java\n"
+ "java -classpath ${project.java.classpath}${project.java.output.dir} com.company.nba.MainClass";
private static final String CONSOLE_MESS =
"javac: directory not found: /projects/" + PROJECT_NAME + "/bin";
@Inject private TestWorkspace ws;
@Inject private Ide ide;
@Inject private TestUser productUser;
@Inject private ProjectExplorer projectExplorer;
@Inject private CodenvyEditor codenvyEditor;
@Inject private ConfigureClasspath configureClasspath;
@Inject private CommandsExplorer commandsExplorer;
@Inject private CommandsEditor commandsEditor;
@Inject private Consoles consoles;
@Inject private AskForValueDialog askForValueDialog;
@Inject private ImportProjectFromLocation importFromLocation;
@Inject private Wizard projectWizard;
@Inject private Loader loader;
@Inject private Menu menu;
@BeforeClass
public void prepare() throws Exception {
ide.open(ws);
}
@Test
public void checkRunPlainJavaProject() {
// import the project and configure
projectExplorer.waitProjectExplorer();
importPlainJavaApp(CLONE_URI, PROJECT_NAME, Wizard.TypeProject.PLAIN_JAVA);
loader.waitOnClosed();
// check library into configure classpath form
projectExplorer.quickExpandWithJavaScript();
loader.waitOnClosed();
projectExplorer.selectItem(PROJECT_NAME);
menu.runCommand(PROJECT, CONFIGURE_CLASSPATH);
configureClasspath.waitConfigureClasspathFormIsOpen();
configureClasspath.waitExpectedTextJarsAndFolderArea(
"mockito-all-1.10.19.jar - /projects/" + PROJECT_NAME + "/store");
configureClasspath.closeConfigureClasspathFormByIcon();
// expand the project and use library
projectExplorer.openItemByPath(PROJECT_NAME + "/src/com/company/nba/MainClass.java");
codenvyEditor.waitActiveEditor();
codenvyEditor.setCursorToLine(9);
codenvyEditor.typeTextIntoEditor(Keys.TAB.toString());
codenvyEditor.typeTextIntoEditor("Mockito mockito = new Mockito();");
codenvyEditor.waitTextIntoEditor("Mockito mockito = new Mockito();");
codenvyEditor.waitMarkerInPosition(ERROR_MARKER, 9);
codenvyEditor.launchPropositionAssistPanel();
codenvyEditor.enterTextIntoFixErrorPropByDoubleClick("Import 'Mockito' (org.mockito)");
codenvyEditor.waitTextIntoEditor("import org.mockito.Mockito;");
// Create new java class into new package
projectExplorer.selectItem(PROJECT_NAME + "/src");
menu.runCommand(PROJECT, NEW, PACKAGE);
askForValueDialog.waitFormToOpen();
askForValueDialog.typeAndWaitText(NEW_PACKAGE);
askForValueDialog.clickOkBtn();
askForValueDialog.waitFormToClose();
projectExplorer.waitItemInVisibleArea(NEW_PACKAGE);
projectExplorer.selectItem(PROJECT_NAME + "/src/base/test");
menu.runCommand(TestMenuCommandsConstants.Project.PROJECT, NEW, JAVA_CLASS);
loader.waitOnClosed();
askForValueDialog.waitNewJavaClassOpen();
askForValueDialog.typeTextInFieldName("A");
askForValueDialog.clickOkBtnNewJavaClass();
askForValueDialog.waitNewJavaClassClose();
projectExplorer.waitItem(PROJECT_NAME + "/src/base/test/A.java");
projectExplorer.openItemByPath(PROJECT_NAME + "/src/com/company/nba/MainClass.java");
codenvyEditor.waitActiveEditor();
codenvyEditor.setCursorToLine(12);
codenvyEditor.typeTextIntoEditor(Keys.TAB.toString());
codenvyEditor.typeTextIntoEditor("A a = new A();");
codenvyEditor.waitTextIntoEditor("A a = new A();");
codenvyEditor.waitMarkerInPosition(ERROR_MARKER, 12);
codenvyEditor.launchPropositionAssistPanel();
codenvyEditor.enterTextIntoFixErrorPropByDoubleClick("Import 'A' (base.test)");
codenvyEditor.waitErrorPropositionPanelClosed();
codenvyEditor.waitTextIntoEditor("import base.test.A;");
// open the 'Commands Explorer' and choose java command
projectExplorer.selectItem(PROJECT_NAME);
loader.waitOnClosed();
commandsExplorer.openCommandsExplorer();
commandsExplorer.waitCommandExplorerIsOpened();
commandsExplorer.clickAddCommandButton(RUN_GOAL);
loader.waitOnClosed();
commandsExplorer.chooseCommandTypeInContextMenu(JAVA_TYPE);
loader.waitOnClosed();
commandsExplorer.waitCommandInExplorerByName(JAVA_NAME);
commandsEditor.waitActiveEditor();
commandsEditor.waitTabFileWithSavedStatus(JAVA_NAME);
// edit the name and the content of the java command into editor
commandsEditor.typeTextIntoNameCommandField(NAME_COMMAND);
commandsEditor.waitTextIntoNameCommandField(NAME_COMMAND);
commandsEditor.waitTabCommandWithUnsavedStatus(JAVA_NAME);
commandsEditor.setCursorToLine(1);
commandsEditor.deleteAllContent();
commandsEditor.typeTextIntoEditor(COMMAND);
commandsEditor.waitTextIntoEditor(COMMAND);
commandsEditor.clickOnSaveButtonInTheEditCommand();
commandsEditor.waitTabFileWithSavedStatus(NAME_COMMAND);
// check not starting application
commandsEditor.clickOnRunButton();
loader.waitOnClosed();
consoles.waitExpectedTextIntoConsole(CONSOLE_MESS);
// add the folder 'bin'
projectExplorer.clickOnProjectExplorerTabInTheLeftPanel();
commandsExplorer.waitCommandExplorerIsClosed();
projectExplorer.waitProjectExplorer();
projectExplorer.selectItem(PROJECT_NAME);
projectExplorer.openContextMenuByPathSelectedItem(PROJECT_NAME);
projectExplorer.clickOnItemInContextMenu(TestProjectExplorerContextMenuConstants.NEW);
projectExplorer.clickOnNewContextMenuItem(
TestProjectExplorerContextMenuConstants.SubMenuNew.FOLDER);
askForValueDialog.waitFormToOpen();
askForValueDialog.typeAndWaitText("bin");
askForValueDialog.clickOkBtn();
loader.waitOnClosed();
projectExplorer.waitItem(PROJECT_NAME + "/bin");
// check starting application
commandsEditor.selectTabByName(NAME_COMMAND);
commandsEditor.waitActiveTabFileName(NAME_COMMAND);
commandsEditor.clickOnRunButton();
loader.waitOnClosed();
consoles.waitExpectedTextIntoConsole("I love this game!");
// check the 'bin' folder that contains compiling classes
projectExplorer.quickExpandWithJavaScript();
projectExplorer.waitItem(PROJECT_NAME + "/bin/com/company/nba/MainClass.class");
projectExplorer.waitItem(PROJECT_NAME + "/bin/base/test/A.class");
}
private void importPlainJavaApp(String url, String nameApp, String typeProject) {
loader.waitOnClosed();
menu.runCommand(WORKSPACE, IMPORT_PROJECT);
importFromLocation.waitAndTypeImporterAsGitInfo(url, nameApp);
projectWizard.waitCreateProjectWizardForm();
projectWizard.selectTypeProject(typeProject);
loader.waitOnClosed();
projectWizard.clickNextButton();
// set source folder
projectWizard.waitOpenProjectConfigForm();
projectWizard.clickBrowseButton(Wizard.TypeFolder.SOURCE_FOLDER);
configureClasspath.waitSelectPathFormIsOpen();
configureClasspath.openItemInSelectPathForm(nameApp);
configureClasspath.waitItemInSelectPathForm("src");
configureClasspath.selectItemInSelectPathForm("src");
configureClasspath.clickOkBtnSelectPathForm();
projectWizard.waitExpTextInSourceFolder("src", Wizard.TypeFolder.SOURCE_FOLDER);
// set library folder
projectWizard.clickBrowseButton(Wizard.TypeFolder.LIBRARY_FOLDER);
configureClasspath.openItemInSelectPathForm(nameApp);
configureClasspath.waitItemInSelectPathForm("store");
configureClasspath.selectItemInSelectPathForm("store");
configureClasspath.clickOkBtnSelectPathForm();
projectWizard.waitExpTextInSourceFolder("store", Wizard.TypeFolder.LIBRARY_FOLDER);
projectWizard.clickSaveButton();
loader.waitOnClosed();
projectWizard.waitCloseProjectConfigForm();
projectExplorer.waitItemInVisibleArea(nameApp);
loader.waitOnClosed();
}
}