mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[gui-test] added findAny(...) to find Message without title; and exists(...) to know about existence of Message with specific title
This commit is contained in:
+24
-9
@@ -40,20 +40,35 @@ class MessageDialogFixture extends IdeaDialogFixture<DialogWrapper> implements M
|
||||
if (!title.equals(dialog.getTitle()) || !dialog.isShowing()) {
|
||||
return false;
|
||||
}
|
||||
DialogWrapper wrapper = getDialogWrapperFrom(dialog, DialogWrapper.class);
|
||||
if (wrapper != null) {
|
||||
String typeName = Messages.class.getName() + "$MessageDialog";
|
||||
if (typeName.equals(wrapper.getClass().getName())) {
|
||||
wrapperRef.set(wrapper);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
return isMessageDialog(dialog, wrapperRef);
|
||||
}
|
||||
}, LONG_TIMEOUT);
|
||||
return new MessageDialogFixture(robot, dialog, wrapperRef.get());
|
||||
}
|
||||
|
||||
static MessageDialogFixture findAny(@NotNull Robot robot) {
|
||||
final Ref<DialogWrapper> wrapperRef = new Ref<DialogWrapper>();
|
||||
JDialog dialog = waitUntilFound(robot, null, new GenericTypeMatcher<JDialog>(JDialog.class) {
|
||||
@Override
|
||||
protected boolean isMatching(@NotNull JDialog dialog) {
|
||||
return isMessageDialog(dialog, wrapperRef);
|
||||
}
|
||||
}, LONG_TIMEOUT);
|
||||
return new MessageDialogFixture(robot, dialog, wrapperRef.get());
|
||||
}
|
||||
|
||||
private static boolean isMessageDialog(@NotNull JDialog dialog, Ref<DialogWrapper> wrapperRef) {
|
||||
DialogWrapper wrapper = getDialogWrapperFrom(dialog, DialogWrapper.class);
|
||||
if (wrapper != null) {
|
||||
String typeName = Messages.class.getName() + "$MessageDialog";
|
||||
if (typeName.equals(wrapper.getClass().getName())) {
|
||||
wrapperRef.set(wrapper);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private MessageDialogFixture(@NotNull Robot robot, @NotNull JDialog target, @NotNull DialogWrapper dialogWrapper) {
|
||||
super(robot, target, dialogWrapper);
|
||||
}
|
||||
|
||||
+67
-16
@@ -42,13 +42,33 @@ public class MessagesFixture {
|
||||
|
||||
@NotNull
|
||||
public static MessagesFixture findByTitle(@NotNull Robot robot, @NotNull Container root, @NotNull String title) {
|
||||
if (Messages.canShowMacSheetPanel()) {
|
||||
return new MessagesFixture(findMacSheetByTitle(robot, root, title));
|
||||
}
|
||||
MessageDialogFixture dialog = MessageDialogFixture.findByTitle(robot, title);
|
||||
return new MessagesFixture(dialog);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static MessagesFixture findAny(@NotNull Robot robot, @NotNull Container root) {
|
||||
if (Messages.canShowMacSheetPanel()) {
|
||||
return new MessagesFixture(findMacSheetByTitle(robot, root, title));
|
||||
return new MessagesFixture(findMacSheetAny(robot, root));
|
||||
}
|
||||
MessageDialogFixture dialog = MessageDialogFixture.findByTitle(robot, title);
|
||||
MessageDialogFixture dialog = MessageDialogFixture.findAny(robot);
|
||||
return new MessagesFixture(dialog);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static boolean exists(@NotNull Robot robot, @NotNull Container root, @NotNull String title) {
|
||||
try{
|
||||
findByTitle(robot, root, title);
|
||||
return true;
|
||||
} catch (AssertionError ae) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private MessagesFixture(@NotNull ContainerFixture<? extends Container> delegate) {
|
||||
myDelegate = delegate;
|
||||
}
|
||||
@@ -60,7 +80,6 @@ public class MessagesFixture {
|
||||
}
|
||||
|
||||
|
||||
|
||||
@NotNull
|
||||
public MessagesFixture clickYes() {
|
||||
return click("Yes");
|
||||
@@ -85,19 +104,7 @@ public class MessagesFixture {
|
||||
|
||||
@NotNull
|
||||
static JPanelFixture findMacSheetByTitle(@NotNull Robot robot, @NotNull Container root, @NotNull String title) {
|
||||
JPanel sheetPanel = GuiTestUtil.waitUntilFound(robot, root, new GenericTypeMatcher<JPanel>(JPanel.class) {
|
||||
@Override
|
||||
protected boolean isMatching(@NotNull JPanel panel) {
|
||||
if (panel.getClass().getName().startsWith(SheetController.class.getName()) && panel.isShowing()) {
|
||||
SheetController controller = findSheetController(panel);
|
||||
JPanel sheetPanel = field("mySheetPanel").ofType(JPanel.class).in(controller).get();
|
||||
if (sheetPanel == panel) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}, GuiTestUtil.LONG_TIMEOUT);
|
||||
JPanel sheetPanel = getSheetPanel(robot, root);
|
||||
|
||||
String sheetTitle = getTitle(sheetPanel, robot);
|
||||
assertThat(sheetTitle).as("Sheet title").isEqualTo(title);
|
||||
@@ -105,6 +112,35 @@ public class MessagesFixture {
|
||||
return new MacSheetPanelFixture(robot, sheetPanel);
|
||||
}
|
||||
|
||||
private static JPanelFixture findMacSheetAny(@NotNull Robot robot, @NotNull Container root) {
|
||||
JPanel sheetPanel = getSheetPanel(robot, root);
|
||||
|
||||
return new MacSheetPanelFixture(robot, sheetPanel);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private static JPanel getSheetPanel(@NotNull Robot robot, @NotNull Container root) {
|
||||
return GuiTestUtil.waitUntilFound(robot, root, new GenericTypeMatcher<JPanel>(JPanel.class) {
|
||||
@Override
|
||||
protected boolean isMatching(@NotNull JPanel panel) {
|
||||
if (panel.getClass().getName().startsWith(SheetController.class.getName()) && panel.isShowing()) {
|
||||
SheetController controller = findSheetController(panel);
|
||||
JPanel sheetPanel1 = field("mySheetPanel").ofType(JPanel.class).in(controller).get();
|
||||
if (sheetPanel1 == panel) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}, GuiTestUtil.LONG_TIMEOUT);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public String getTitle() {
|
||||
if (myDelegate instanceof MacSheetPanelFixture) return ((MacSheetPanelFixture)myDelegate).getTitle();
|
||||
return ((MessageDialogFixture)myDelegate).target().getTitle();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static String getTitle(@NotNull JPanel sheetPanel, @NotNull Robot robot) {
|
||||
final JEditorPane messageTextPane = getMessageTextPane(sheetPanel);
|
||||
@@ -133,6 +169,21 @@ public class MessagesFixture {
|
||||
super(robot, target);
|
||||
}
|
||||
|
||||
|
||||
@Nullable
|
||||
public String getTitle(){
|
||||
final JEditorPane messageTextPane = getMessageTextPane(target());
|
||||
|
||||
JEditorPane titleTextPane = robot().finder().find(target(), new GenericTypeMatcher<JEditorPane>(JEditorPane.class) {
|
||||
@Override
|
||||
protected boolean isMatching(@NotNull JEditorPane editorPane) {
|
||||
return editorPane != messageTextPane;
|
||||
}
|
||||
});
|
||||
|
||||
return getHtmlBody(titleTextPane.getText());
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public String getMessage() {
|
||||
|
||||
Reference in New Issue
Block a user