From 7dd71440a73f1757c7bf16bc71142c786cf4609e Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Thu, 2 Jan 2020 00:32:33 +0100 Subject: [PATCH 1/7] Fix GUI tests (and remove BasePanelTest) --- src/main/java/org/jabref/Globals.java | 18 ++++- .../org/jabref/gui/help/VersionWorker.java | 1 + .../gui/push/PushToApplicationAction.java | 5 +- ...tainsAndRegexBasedSearchRuleDescriber.java | 3 + .../jabref/preferences/JabRefPreferences.java | 2 +- .../java/org/jabref/gui/BasePanelTest.java | 71 ------------------- .../jabref/gui/entryeditor/SourceTabTest.java | 19 ++++- 7 files changed, 41 insertions(+), 78 deletions(-) delete mode 100644 src/test/java/org/jabref/gui/BasePanelTest.java diff --git a/src/main/java/org/jabref/Globals.java b/src/main/java/org/jabref/Globals.java index bf5e00d33e7..8126ad26074 100644 --- a/src/main/java/org/jabref/Globals.java +++ b/src/main/java/org/jabref/Globals.java @@ -33,35 +33,47 @@ public class Globals { - // JabRef version info + /** + * JabRef version info + */ public static final BuildInfo BUILD_INFO = new BuildInfo(); + // Remote listener public static final RemoteListenerServerLifecycle REMOTE_LISTENER = new RemoteListenerServerLifecycle(); + public static final ImportFormatReader IMPORT_FORMAT_READER = new ImportFormatReader(); public static final TaskExecutor TASK_EXECUTOR = new DefaultTaskExecutor(); - // In the main program, this field is initialized in JabRefMain.java - // Each test case initializes this field if required + + /** + * Each test case initializes this field if required + */ public static JabRefPreferences prefs; + /** * This field is initialized upon startup. * Only GUI code is allowed to access it, logic code should use dependency injection. */ public static JournalAbbreviationLoader journalAbbreviationLoader; + /** * This field is initialized upon startup. * Only GUI code is allowed to access it, logic code should use dependency injection. */ public static ProtectedTermsLoader protectedTermsLoader; + /** * Manager for the state of the GUI. */ public static StateManager stateManager = new StateManager(); + public static ExporterFactory exportFactory; public static CountingUndoManager undoManager = new CountingUndoManager(); public static BibEntryTypesManager entryTypesManager = new BibEntryTypesManager(); public static ClipBoardManager clipboardManager = new ClipBoardManager(); + // Key binding preferences private static KeyBindingRepository keyBindingRepository; + private static DefaultFileUpdateMonitor fileUpdateMonitor; private static ThemeLoader themeLoader; private static TelemetryClient telemetryClient; diff --git a/src/main/java/org/jabref/gui/help/VersionWorker.java b/src/main/java/org/jabref/gui/help/VersionWorker.java index f89eede48b9..3c1235fde9f 100644 --- a/src/main/java/org/jabref/gui/help/VersionWorker.java +++ b/src/main/java/org/jabref/gui/help/VersionWorker.java @@ -36,6 +36,7 @@ public class VersionWorker { * The version which was previously ignored by the user */ private final Version toBeIgnored; + private final DialogService dialogService; private final TaskExecutor taskExecutor; diff --git a/src/main/java/org/jabref/gui/push/PushToApplicationAction.java b/src/main/java/org/jabref/gui/push/PushToApplicationAction.java index a042a1210cb..17aab8eda73 100644 --- a/src/main/java/org/jabref/gui/push/PushToApplicationAction.java +++ b/src/main/java/org/jabref/gui/push/PushToApplicationAction.java @@ -1,6 +1,7 @@ package org.jabref.gui.push; import java.util.List; +import java.util.Objects; import java.util.Optional; import org.jabref.Globals; @@ -31,7 +32,7 @@ public class PushToApplicationAction extends SimpleCommand { private PushToApplication application; public PushToApplicationAction(StateManager stateManager, PushToApplicationsManager pushToApplicationsManager, DialogService dialogService) { - this.application = Globals.prefs.getActivePushToApplication(pushToApplicationsManager); + this.application = Objects.requireNonNull(Globals.prefs.getActivePushToApplication(pushToApplicationsManager)); this.stateManager = stateManager; this.dialogService = dialogService; @@ -40,7 +41,7 @@ public PushToApplicationAction(StateManager stateManager, PushToApplicationsMana } public void updateApplication(PushToApplication application) { - this.application = application; + this.application = Objects.requireNonNull(application); } public Action getActionInformation() { diff --git a/src/main/java/org/jabref/gui/search/rules/describer/ContainsAndRegexBasedSearchRuleDescriber.java b/src/main/java/org/jabref/gui/search/rules/describer/ContainsAndRegexBasedSearchRuleDescriber.java index 4ff85ca09ee..11ed31a11e7 100644 --- a/src/main/java/org/jabref/gui/search/rules/describer/ContainsAndRegexBasedSearchRuleDescriber.java +++ b/src/main/java/org/jabref/gui/search/rules/describer/ContainsAndRegexBasedSearchRuleDescriber.java @@ -40,6 +40,9 @@ public TextFlow getDescription() { } textList.add(getCaseSensitiveDescription()); + textList.add(TooltipTextUtil.createText("\n\nHint: To search specific fields only, enter for example:\n")); + textList.add(TooltipTextUtil.createText("author=smith and title=electrical")); + TextFlow searchDescription = new TextFlow(); searchDescription.getChildren().setAll(textList); return searchDescription; diff --git a/src/main/java/org/jabref/preferences/JabRefPreferences.java b/src/main/java/org/jabref/preferences/JabRefPreferences.java index cccdea23071..86b00512825 100644 --- a/src/main/java/org/jabref/preferences/JabRefPreferences.java +++ b/src/main/java/org/jabref/preferences/JabRefPreferences.java @@ -1078,7 +1078,7 @@ public void putStringList(String key, List value) { public List getStringList(String key) { String names = get(key); if (names == null) { - return new ArrayList<>(); + return Collections.emptyList(); } StringReader rd = new StringReader(names); diff --git a/src/test/java/org/jabref/gui/BasePanelTest.java b/src/test/java/org/jabref/gui/BasePanelTest.java deleted file mode 100644 index e6f40bdc018..00000000000 --- a/src/test/java/org/jabref/gui/BasePanelTest.java +++ /dev/null @@ -1,71 +0,0 @@ -package org.jabref.gui; - -import javafx.scene.Scene; -import javafx.scene.control.SplitPane; -import javafx.stage.Stage; - -import org.jabref.gui.autocompleter.AutoCompletePreferences; -import org.jabref.gui.entryeditor.EntryEditorPreferences; -import org.jabref.gui.externalfiletype.ExternalFileTypes; -import org.jabref.gui.keyboard.KeyBindingRepository; -import org.jabref.gui.maintable.MainTablePreferences; -import org.jabref.model.database.BibDatabaseContext; -import org.jabref.model.entry.BibEntry; -import org.jabref.preferences.PreviewPreferences; -import org.jabref.testutils.category.GUITest; - -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.testfx.api.FxRobot; -import org.testfx.framework.junit5.ApplicationExtension; -import org.testfx.framework.junit5.Start; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.mockito.Mockito.RETURNS_MOCKS; -import static org.mockito.Mockito.mock; - -@GUITest -@ExtendWith(ApplicationExtension.class) -public class BasePanelTest { - - private BasePanel panel; - private BibDatabaseContext bibDatabaseContext; - private BasePanelPreferences preferences; - - @Start - public void onStart(Stage stage) { - JabRefFrame frame = mock(JabRefFrame.class, RETURNS_MOCKS); - ExternalFileTypes externalFileTypes = mock(ExternalFileTypes.class); - bibDatabaseContext = new BibDatabaseContext(); - preferences = new BasePanelPreferences( - mock(MainTablePreferences.class, RETURNS_MOCKS), - mock(AutoCompletePreferences.class, RETURNS_MOCKS), - mock(EntryEditorPreferences.class, RETURNS_MOCKS), - mock(KeyBindingRepository.class, RETURNS_MOCKS), - mock(PreviewPreferences.class, RETURNS_MOCKS), - 0.5 - ); - panel = new BasePanel(frame, preferences, bibDatabaseContext, externalFileTypes); - - stage.setScene(new Scene(panel)); - stage.show(); - } - - @Test - void dividerPositionIsRestoredOnReopenEntryEditor(FxRobot robot) throws Exception { - BibEntry entry = new BibEntry(); - bibDatabaseContext.getDatabase().insertEntry(entry); - - SplitPane splitPane = robot.lookup(".split-pane").query(); - - robot.interact(() -> panel.showAndEdit(entry)); - robot.interact(() -> splitPane.getDividers().get(0).setPosition(0.8)); - robot.sleep(1000); - - robot.interact(() -> panel.closeBottomPane()); - robot.sleep(1000); - robot.interact(() -> panel.showAndEdit(entry)); - - assertEquals(0.8, splitPane.getDividers().get(0).getPosition(), 0.1); - } -} diff --git a/src/test/java/org/jabref/gui/entryeditor/SourceTabTest.java b/src/test/java/org/jabref/gui/entryeditor/SourceTabTest.java index 141cdf69726..88d9b5f985d 100644 --- a/src/test/java/org/jabref/gui/entryeditor/SourceTabTest.java +++ b/src/test/java/org/jabref/gui/entryeditor/SourceTabTest.java @@ -1,20 +1,27 @@ package org.jabref.gui.entryeditor; +import java.util.Collections; + import javafx.scene.Scene; import javafx.scene.control.Label; import javafx.scene.control.Tab; import javafx.scene.control.TabPane; import javafx.stage.Stage; +import org.jabref.Globals; import org.jabref.gui.DialogService; import org.jabref.gui.StateManager; +import org.jabref.gui.keyboard.KeyBindingRepository; import org.jabref.gui.undo.CountingUndoManager; +import org.jabref.gui.util.OptionalObjectProperty; +import org.jabref.logic.bibtex.FieldContentParserPreferences; import org.jabref.logic.bibtex.LatexFieldFormatterPreferences; import org.jabref.logic.importer.ImportFormatPreferences; import org.jabref.model.database.BibDatabaseContext; import org.jabref.model.entry.BibEntry; import org.jabref.model.entry.field.UnknownField; import org.jabref.model.util.DummyFileUpdateMonitor; +import org.jabref.preferences.JabRefPreferences; import org.jabref.testutils.category.GUITest; import org.fxmisc.richtext.CodeArea; @@ -25,6 +32,7 @@ import org.testfx.framework.junit5.Start; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; @GUITest @ExtendWith(ApplicationExtension.class) @@ -40,7 +48,16 @@ public class SourceTabTest { public void onStart(Stage stage) { area = new CodeArea(); area.appendText("some example\n text to go here\n across a couple of \n lines...."); - sourceTab = new SourceTab(new BibDatabaseContext(), new CountingUndoManager(), new LatexFieldFormatterPreferences(), mock(ImportFormatPreferences.class), new DummyFileUpdateMonitor(), mock(DialogService.class), mock(StateManager.class)); + StateManager stateManager = mock(StateManager.class); + when(stateManager.activeSearchQueryProperty()).thenReturn(OptionalObjectProperty.empty()); + Globals.prefs = mock(JabRefPreferences.class); + KeyBindingRepository keyBindingRepository = new KeyBindingRepository(Collections.emptyList(), Collections.emptyList()); + when(Globals.prefs.getKeyBindingRepository()).thenReturn(keyBindingRepository); + ImportFormatPreferences importFormatPreferences = mock(ImportFormatPreferences.class); + when(importFormatPreferences.getFieldContentParserPreferences()) + .thenReturn(mock(FieldContentParserPreferences.class)); + + sourceTab = new SourceTab(new BibDatabaseContext(), new CountingUndoManager(), new LatexFieldFormatterPreferences(), importFormatPreferences, new DummyFileUpdateMonitor(), mock(DialogService.class), stateManager); pane = new TabPane( new Tab("main area", area), new Tab("other tab", new Label("some text")), From 4a154a8ef7cedf0c7cbd19f0d2cb1169c1872932 Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Thu, 2 Jan 2020 00:56:23 +0100 Subject: [PATCH 2/7] Add architecture test exception --- .../java/org/jabref/architecture/TestArchitectureTests.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/test/java/org/jabref/architecture/TestArchitectureTests.java b/src/test/java/org/jabref/architecture/TestArchitectureTests.java index e7fe93d14fe..d2f3759f0b3 100644 --- a/src/test/java/org/jabref/architecture/TestArchitectureTests.java +++ b/src/test/java/org/jabref/architecture/TestArchitectureTests.java @@ -27,11 +27,11 @@ public class TestArchitectureTests { private static final String CLASS_ORG_JABREF_UPDATE_TIMESTAMP_LISTENER_TEST = "UpdateTimestampListenerTest"; private static final String CLASS_ORG_JABREF_ENTRY_EDITOR_TEST = "EntryEditorTest"; private static final String CLASS_ORG_JABREF_LINKED_FILE_VIEW_MODEL_TEST = "LinkedFileViewModelTest"; + private static final String CLASS_ORG_JABREF_SOURCE_TAB_TEST = "SourceTabTest"; private final List exceptions; public TestArchitectureTests() { - // Add exceptions for the architectural test here // Note that bending the architectural constraints should not be done inconsiderately exceptions = new ArrayList<>(); @@ -41,6 +41,7 @@ public TestArchitectureTests() { exceptions.add(CLASS_ORG_JABREF_UPDATE_TIMESTAMP_LISTENER_TEST); exceptions.add(CLASS_ORG_JABREF_ENTRY_EDITOR_TEST); exceptions.add(CLASS_ORG_JABREF_LINKED_FILE_VIEW_MODEL_TEST); + exceptions.add(CLASS_ORG_JABREF_SOURCE_TAB_TEST); } public static Stream data() { From 01b431d5235d9291456606c619ad6e02e525113b Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Thu, 2 Jan 2020 01:09:54 +0100 Subject: [PATCH 3/7] Fix visibility of class SourceTabTest --- src/test/java/org/jabref/gui/entryeditor/SourceTabTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/org/jabref/gui/entryeditor/SourceTabTest.java b/src/test/java/org/jabref/gui/entryeditor/SourceTabTest.java index 88d9b5f985d..2ebff33db06 100644 --- a/src/test/java/org/jabref/gui/entryeditor/SourceTabTest.java +++ b/src/test/java/org/jabref/gui/entryeditor/SourceTabTest.java @@ -36,7 +36,7 @@ @GUITest @ExtendWith(ApplicationExtension.class) -public class SourceTabTest { +class SourceTabTest { private Stage stage; private Scene scene; From f4c811c813addb9f73bdf2e2597f5f248193f299 Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Wed, 8 Jan 2020 21:23:48 +0100 Subject: [PATCH 4/7] Revert "Add architecture test exception" This reverts commit 4a154a8ef7cedf0c7cbd19f0d2cb1169c1872932. --- .../java/org/jabref/architecture/TestArchitectureTests.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/test/java/org/jabref/architecture/TestArchitectureTests.java b/src/test/java/org/jabref/architecture/TestArchitectureTests.java index d2f3759f0b3..e7fe93d14fe 100644 --- a/src/test/java/org/jabref/architecture/TestArchitectureTests.java +++ b/src/test/java/org/jabref/architecture/TestArchitectureTests.java @@ -27,11 +27,11 @@ public class TestArchitectureTests { private static final String CLASS_ORG_JABREF_UPDATE_TIMESTAMP_LISTENER_TEST = "UpdateTimestampListenerTest"; private static final String CLASS_ORG_JABREF_ENTRY_EDITOR_TEST = "EntryEditorTest"; private static final String CLASS_ORG_JABREF_LINKED_FILE_VIEW_MODEL_TEST = "LinkedFileViewModelTest"; - private static final String CLASS_ORG_JABREF_SOURCE_TAB_TEST = "SourceTabTest"; private final List exceptions; public TestArchitectureTests() { + // Add exceptions for the architectural test here // Note that bending the architectural constraints should not be done inconsiderately exceptions = new ArrayList<>(); @@ -41,7 +41,6 @@ public TestArchitectureTests() { exceptions.add(CLASS_ORG_JABREF_UPDATE_TIMESTAMP_LISTENER_TEST); exceptions.add(CLASS_ORG_JABREF_ENTRY_EDITOR_TEST); exceptions.add(CLASS_ORG_JABREF_LINKED_FILE_VIEW_MODEL_TEST); - exceptions.add(CLASS_ORG_JABREF_SOURCE_TAB_TEST); } public static Stream data() { From 04571df1d31ca4718378df6a236917c8594fc660 Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Wed, 8 Jan 2020 22:13:32 +0100 Subject: [PATCH 5/7] Have keyBindingRepository as parameter for SourceTab --- src/main/java/org/jabref/gui/entryeditor/EntryEditor.java | 2 +- src/main/java/org/jabref/gui/entryeditor/SourceTab.java | 7 +++++-- .../java/org/jabref/gui/entryeditor/SourceTabTest.java | 3 +-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/jabref/gui/entryeditor/EntryEditor.java b/src/main/java/org/jabref/gui/entryeditor/EntryEditor.java index f6931e08f8d..2cda30e38e5 100644 --- a/src/main/java/org/jabref/gui/entryeditor/EntryEditor.java +++ b/src/main/java/org/jabref/gui/entryeditor/EntryEditor.java @@ -253,7 +253,7 @@ private List createTabs() { // Source tab sourceTab = new SourceTab(databaseContext, undoManager, entryEditorPreferences.getLatexFieldFormatterPreferences(), - entryEditorPreferences.getImportFormatPreferences(), fileMonitor, dialogService, stateManager); + entryEditorPreferences.getImportFormatPreferences(), fileMonitor, dialogService, stateManager, Globals.getKeyPrefs()); entryEditorTabs.add(sourceTab); // LaTeX citations tab diff --git a/src/main/java/org/jabref/gui/entryeditor/SourceTab.java b/src/main/java/org/jabref/gui/entryeditor/SourceTab.java index 50683c26d81..c6e08e3f417 100644 --- a/src/main/java/org/jabref/gui/entryeditor/SourceTab.java +++ b/src/main/java/org/jabref/gui/entryeditor/SourceTab.java @@ -26,6 +26,7 @@ import org.jabref.gui.actions.SimpleCommand; import org.jabref.gui.actions.StandardActions; import org.jabref.gui.icon.IconTheme; +import org.jabref.gui.keyboard.KeyBindingRepository; import org.jabref.gui.undo.CountingUndoManager; import org.jabref.gui.undo.NamedCompound; import org.jabref.gui.undo.UndoableChangeType; @@ -70,6 +71,7 @@ public class SourceTab extends EntryEditorTab { private final StateManager stateManager; private Optional searchHighlightPattern = Optional.empty(); private CodeArea codeArea; + private KeyBindingRepository keyBindingRepository; private class EditAction extends SimpleCommand { @@ -99,7 +101,7 @@ public void execute() { } } - public SourceTab(BibDatabaseContext bibDatabaseContext, CountingUndoManager undoManager, LatexFieldFormatterPreferences fieldFormatterPreferences, ImportFormatPreferences importFormatPreferences, FileUpdateMonitor fileMonitor, DialogService dialogService, StateManager stateManager) { + public SourceTab(BibDatabaseContext bibDatabaseContext, CountingUndoManager undoManager, LatexFieldFormatterPreferences fieldFormatterPreferences, ImportFormatPreferences importFormatPreferences, FileUpdateMonitor fileMonitor, DialogService dialogService, StateManager stateManager, KeyBindingRepository keyBindingRepository) { this.mode = bibDatabaseContext.getMode(); this.setText(Localization.lang("%0 source", mode.getFormattedName())); this.setTooltip(new Tooltip(Localization.lang("Show/edit %0 source", mode.getFormattedName()))); @@ -110,6 +112,7 @@ public SourceTab(BibDatabaseContext bibDatabaseContext, CountingUndoManager undo this.fileMonitor = fileMonitor; this.dialogService = dialogService; this.stateManager = stateManager; + this.keyBindingRepository = keyBindingRepository; stateManager.activeSearchQueryProperty().addListener((observable, oldValue, newValue) -> { searchHighlightPattern = newValue.flatMap(SearchQuery::getPatternForWords); @@ -176,7 +179,7 @@ private CodeArea createSourceEditor() { }); codeArea.setId("bibtexSourceCodeArea"); - ActionFactory factory = new ActionFactory(Globals.getKeyPrefs()); + ActionFactory factory = new ActionFactory(keyBindingRepository); ContextMenu contextMenu = new ContextMenu(); contextMenu.getItems().addAll( factory.createMenuItem(StandardActions.CUT, new EditAction(StandardActions.CUT)), diff --git a/src/test/java/org/jabref/gui/entryeditor/SourceTabTest.java b/src/test/java/org/jabref/gui/entryeditor/SourceTabTest.java index 2ebff33db06..1a731e5edb5 100644 --- a/src/test/java/org/jabref/gui/entryeditor/SourceTabTest.java +++ b/src/test/java/org/jabref/gui/entryeditor/SourceTabTest.java @@ -52,12 +52,11 @@ public void onStart(Stage stage) { when(stateManager.activeSearchQueryProperty()).thenReturn(OptionalObjectProperty.empty()); Globals.prefs = mock(JabRefPreferences.class); KeyBindingRepository keyBindingRepository = new KeyBindingRepository(Collections.emptyList(), Collections.emptyList()); - when(Globals.prefs.getKeyBindingRepository()).thenReturn(keyBindingRepository); ImportFormatPreferences importFormatPreferences = mock(ImportFormatPreferences.class); when(importFormatPreferences.getFieldContentParserPreferences()) .thenReturn(mock(FieldContentParserPreferences.class)); - sourceTab = new SourceTab(new BibDatabaseContext(), new CountingUndoManager(), new LatexFieldFormatterPreferences(), importFormatPreferences, new DummyFileUpdateMonitor(), mock(DialogService.class), stateManager); + sourceTab = new SourceTab(new BibDatabaseContext(), new CountingUndoManager(), new LatexFieldFormatterPreferences(), importFormatPreferences, new DummyFileUpdateMonitor(), mock(DialogService.class), stateManager, keyBindingRepository); pane = new TabPane( new Tab("main area", area), new Tab("other tab", new Label("some text")), From a624a5f999acde89a72f8d1fe0f3e5e1fdc69c65 Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Wed, 8 Jan 2020 22:34:37 +0100 Subject: [PATCH 6/7] Localize hint on rule --- ...ontainsAndRegexBasedSearchRuleDescriber.java | 5 +++-- src/main/resources/l10n/JabRef_en.properties | 3 ++- ...insAndRegexBasedSearchRuleDescriberTest.java | 17 ++++++++++------- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/main/java/org/jabref/gui/search/rules/describer/ContainsAndRegexBasedSearchRuleDescriber.java b/src/main/java/org/jabref/gui/search/rules/describer/ContainsAndRegexBasedSearchRuleDescriber.java index 11ed31a11e7..834b1949373 100644 --- a/src/main/java/org/jabref/gui/search/rules/describer/ContainsAndRegexBasedSearchRuleDescriber.java +++ b/src/main/java/org/jabref/gui/search/rules/describer/ContainsAndRegexBasedSearchRuleDescriber.java @@ -40,8 +40,9 @@ public TextFlow getDescription() { } textList.add(getCaseSensitiveDescription()); - textList.add(TooltipTextUtil.createText("\n\nHint: To search specific fields only, enter for example:\n")); - textList.add(TooltipTextUtil.createText("author=smith and title=electrical")); + textList.add(TooltipTextUtil.createText("\n\n" + + Localization.lang("Hint: To search specific fields only, enter for example:"))); + textList.add(TooltipTextUtil.createText(" author=smith and title=electrical", TooltipTextUtil.TextType.MONOSPACED)); TextFlow searchDescription = new TextFlow(); searchDescription.getChildren().setAll(textList); diff --git a/src/main/resources/l10n/JabRef_en.properties b/src/main/resources/l10n/JabRef_en.properties index d87eac682b5..5b80f5641d1 100644 --- a/src/main/resources/l10n/JabRef_en.properties +++ b/src/main/resources/l10n/JabRef_en.properties @@ -1357,6 +1357,7 @@ plain\ text=plain text This\ search\ contains\ entries\ in\ which\ any\ field\ contains\ the\ regular\ expression\ %0=This search contains entries in which any field contains the regular expression %0 This\ search\ contains\ entries\ in\ which\ any\ field\ contains\ the\ term\ %0=This search contains entries in which any field contains the term %0 This\ search\ contains\ entries\ in\ which=This search contains entries in which +Hint\:\ To\ search\ specific\ fields\ only,\ enter\ for\ example\:=Hint: To search specific fields only, enter for example: Unable\ to\ autodetect\ OpenOffice/LibreOffice\ installation.\ Please\ choose\ the\ installation\ directory\ manually.=Unable to autodetect OpenOffice/LibreOffice installation. Please choose the installation directory manually. @@ -2097,4 +2098,4 @@ Select\ all\ changes\ on\ the\ right=Select all changes on the right Dismiss=Dismiss Mark\ all\ changes\ as\ accepted=Mark all changes as accepted -Unmark\ all\ changes=Unmark all changes \ No newline at end of file +Unmark\ all\ changes=Unmark all changes diff --git a/src/test/java/org/jabref/gui/search/ContainsAndRegexBasedSearchRuleDescriberTest.java b/src/test/java/org/jabref/gui/search/ContainsAndRegexBasedSearchRuleDescriberTest.java index cfc515f5949..fea01bdd4e2 100644 --- a/src/test/java/org/jabref/gui/search/ContainsAndRegexBasedSearchRuleDescriberTest.java +++ b/src/test/java/org/jabref/gui/search/ContainsAndRegexBasedSearchRuleDescriberTest.java @@ -33,8 +33,8 @@ void testSimpleTerm() { TooltipTextUtil.createText("This search contains entries in which any field contains the term "), TooltipTextUtil.createText("test", TooltipTextUtil.TextType.BOLD), TooltipTextUtil.createText(" (case insensitive). "), - TooltipTextUtil.createText("\n\nHint: To search specific fields only, enter for example:\n"), - TooltipTextUtil.createText("author=smith and title=electrical", TooltipTextUtil.TextType.MONOSPACED)); + TooltipTextUtil.createText("\n\nHint: To search specific fields only, enter for example:"), + TooltipTextUtil.createText(" author=smith and title=electrical", TooltipTextUtil.TextType.MONOSPACED)); TextFlow description = new ContainsAndRegexBasedSearchRuleDescriber(false, false, query).getDescription(); TextFlowEqualityHelper.assertEquals(expectedTexts, description); @@ -49,8 +49,8 @@ void testNoAst() { TooltipTextUtil.createText(" and "), TooltipTextUtil.createText("b", TooltipTextUtil.TextType.BOLD), TooltipTextUtil.createText(" (case insensitive). "), - TooltipTextUtil.createText("\n\nHint: To search specific fields only, enter for example:\n"), - TooltipTextUtil.createText("author=smith and title=electrical", TooltipTextUtil.TextType.MONOSPACED)); + TooltipTextUtil.createText("\n\nHint: To search specific fields only, enter for example:"), + TooltipTextUtil.createText(" author=smith and title=electrical", TooltipTextUtil.TextType.MONOSPACED)); TextFlow description = new ContainsAndRegexBasedSearchRuleDescriber(false, false, query).getDescription(); TextFlowEqualityHelper.assertEquals(expectedTexts, description); @@ -61,7 +61,8 @@ void testNoAstRegex() { String query = "a b"; List expectedTexts = Arrays.asList(TooltipTextUtil.createText("This search contains entries in which any field contains the regular expression "), TooltipTextUtil.createText("a", TooltipTextUtil.TextType.BOLD), TooltipTextUtil.createText(" and "), TooltipTextUtil.createText("b", TooltipTextUtil.TextType.BOLD), TooltipTextUtil.createText(" (case insensitive). "), - TooltipTextUtil.createText("\n\nHint: To search specific fields only, enter for example:\n"), TooltipTextUtil.createText("author=smith and title=electrical", TooltipTextUtil.TextType.MONOSPACED)); + TooltipTextUtil.createText("\n\nHint: To search specific fields only, enter for example:"), + TooltipTextUtil.createText(" author=smith and title=electrical", TooltipTextUtil.TextType.MONOSPACED)); TextFlow description = new ContainsAndRegexBasedSearchRuleDescriber(false, true, query).getDescription(); TextFlowEqualityHelper.assertEquals(expectedTexts, description); @@ -72,7 +73,8 @@ void testNoAstRegexCaseSensitive() { String query = "a b"; List expectedTexts = Arrays.asList(TooltipTextUtil.createText("This search contains entries in which any field contains the regular expression "), TooltipTextUtil.createText("a", TooltipTextUtil.TextType.BOLD), TooltipTextUtil.createText(" and "), TooltipTextUtil.createText("b", TooltipTextUtil.TextType.BOLD), TooltipTextUtil.createText(" (case sensitive). "), - TooltipTextUtil.createText("\n\nHint: To search specific fields only, enter for example:\n"), TooltipTextUtil.createText("author=smith and title=electrical", TooltipTextUtil.TextType.MONOSPACED)); + TooltipTextUtil.createText("\n\nHint: To search specific fields only, enter for example:"), + TooltipTextUtil.createText(" author=smith and title=electrical", TooltipTextUtil.TextType.MONOSPACED)); TextFlow description = new ContainsAndRegexBasedSearchRuleDescriber(true, true, query).getDescription(); TextFlowEqualityHelper.assertEquals(expectedTexts, description); @@ -83,7 +85,8 @@ void testNoAstCaseSensitive() { String query = "a b"; List expectedTexts = Arrays.asList(TooltipTextUtil.createText("This search contains entries in which any field contains the term "), TooltipTextUtil.createText("a", TooltipTextUtil.TextType.BOLD), TooltipTextUtil.createText(" and "), TooltipTextUtil.createText("b", TooltipTextUtil.TextType.BOLD), TooltipTextUtil.createText(" (case sensitive). "), - TooltipTextUtil.createText("\n\nHint: To search specific fields only, enter for example:\n"), TooltipTextUtil.createText("author=smith and title=electrical", TooltipTextUtil.TextType.MONOSPACED)); + TooltipTextUtil.createText("\n\nHint: To search specific fields only, enter for example:"), + TooltipTextUtil.createText(" author=smith and title=electrical", TooltipTextUtil.TextType.MONOSPACED)); TextFlow description = new ContainsAndRegexBasedSearchRuleDescriber(true, false, query).getDescription(); TextFlowEqualityHelper.assertEquals(expectedTexts, description); From d7e093f9cfc90e0d5a02001668448bad971991de Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Wed, 8 Jan 2020 22:34:47 +0100 Subject: [PATCH 7/7] Fix import of Globals --- src/test/java/org/jabref/gui/entryeditor/SourceTabTest.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/test/java/org/jabref/gui/entryeditor/SourceTabTest.java b/src/test/java/org/jabref/gui/entryeditor/SourceTabTest.java index 1a731e5edb5..a65bc74ed5d 100644 --- a/src/test/java/org/jabref/gui/entryeditor/SourceTabTest.java +++ b/src/test/java/org/jabref/gui/entryeditor/SourceTabTest.java @@ -8,7 +8,6 @@ import javafx.scene.control.TabPane; import javafx.stage.Stage; -import org.jabref.Globals; import org.jabref.gui.DialogService; import org.jabref.gui.StateManager; import org.jabref.gui.keyboard.KeyBindingRepository; @@ -21,7 +20,6 @@ import org.jabref.model.entry.BibEntry; import org.jabref.model.entry.field.UnknownField; import org.jabref.model.util.DummyFileUpdateMonitor; -import org.jabref.preferences.JabRefPreferences; import org.jabref.testutils.category.GUITest; import org.fxmisc.richtext.CodeArea; @@ -50,7 +48,6 @@ public void onStart(Stage stage) { area.appendText("some example\n text to go here\n across a couple of \n lines...."); StateManager stateManager = mock(StateManager.class); when(stateManager.activeSearchQueryProperty()).thenReturn(OptionalObjectProperty.empty()); - Globals.prefs = mock(JabRefPreferences.class); KeyBindingRepository keyBindingRepository = new KeyBindingRepository(Collections.emptyList(), Collections.emptyList()); ImportFormatPreferences importFormatPreferences = mock(ImportFormatPreferences.class); when(importFormatPreferences.getFieldContentParserPreferences())