From 4b936e37c7f4da5788c804069e041459e797023f Mon Sep 17 00:00:00 2001 From: Carl Christian Snethlage <50491877+calixtus@users.noreply.github.com> Date: Sun, 4 Sep 2022 15:45:49 +0200 Subject: [PATCH 1/3] wip --- .../org/jabref/gui/help/VersionWorker.java | 2 +- .../jabref/gui/help/VersionWorkerTest.java | 38 +++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 src/test/java/org/jabref/gui/help/VersionWorkerTest.java diff --git a/src/main/java/org/jabref/gui/help/VersionWorker.java b/src/main/java/org/jabref/gui/help/VersionWorker.java index b4760f58c9b..697b5d7ec06 100644 --- a/src/main/java/org/jabref/gui/help/VersionWorker.java +++ b/src/main/java/org/jabref/gui/help/VersionWorker.java @@ -52,7 +52,7 @@ public VersionWorker(Version installedVersion, * Returns a newer version excluding any non-stable versions, except if the installed one is unstable too. If no * newer version was found, then an empty optional is returned. */ - private Optional getNewVersion() throws IOException { + protected Optional getNewVersion() throws IOException { List availableVersions = Version.getAllAvailableVersions(); return installedVersion.shouldBeUpdatedTo(availableVersions); } diff --git a/src/test/java/org/jabref/gui/help/VersionWorkerTest.java b/src/test/java/org/jabref/gui/help/VersionWorkerTest.java new file mode 100644 index 00000000000..8734aa92082 --- /dev/null +++ b/src/test/java/org/jabref/gui/help/VersionWorkerTest.java @@ -0,0 +1,38 @@ +package org.jabref.gui.help; + +import java.io.IOException; +import java.util.List; + +import org.jabref.gui.DialogService; +import org.jabref.gui.util.TaskExecutor; +import org.jabref.logic.util.Version; +import org.jabref.preferences.InternalPreferences; + +import org.junit.jupiter.api.Test; +import org.mockito.Answers; +import org.mockito.MockedStatic; +import org.mockito.Mockito; + +import static org.mockito.Mockito.mock; + +class VersionWorkerTest { + @Test + void ignoreNewVersionTest() throws IOException { + InternalPreferences internalPreferences = mock(InternalPreferences.class); + + try (MockedStatic version = Mockito.mockStatic(Version.class)) { + VersionWorker versionWorker = new VersionWorker(Version.parse("1.0.0"), + mock(DialogService.class, Answers.RETURNS_DEEP_STUBS), + mock(TaskExecutor.class), + internalPreferences); + + version.when(x -> Version.parse(x)).thenCallRealMethod(); + version.when(Version::getAllAvailableVersions) + .thenReturn(List.of(Version.parse("1.0.0"), Version.parse("2.0.0"))); + + System.out.println(versionWorker.getNewVersion().get()); + } + + + } +} From eeb8fb46bf3df1b73df33a5bcb6a3702808929e0 Mon Sep 17 00:00:00 2001 From: Carl Christian Snethlage <50491877+calixtus@users.noreply.github.com> Date: Sun, 4 Sep 2022 15:57:49 +0200 Subject: [PATCH 2/3] wip --- .../java/org/jabref/gui/help/VersionWorkerTest.java | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/test/java/org/jabref/gui/help/VersionWorkerTest.java b/src/test/java/org/jabref/gui/help/VersionWorkerTest.java index 8734aa92082..826c2cbed70 100644 --- a/src/test/java/org/jabref/gui/help/VersionWorkerTest.java +++ b/src/test/java/org/jabref/gui/help/VersionWorkerTest.java @@ -19,16 +19,15 @@ class VersionWorkerTest { @Test void ignoreNewVersionTest() throws IOException { InternalPreferences internalPreferences = mock(InternalPreferences.class); + List availVersions = List.of(Version.parse("1.0.0"), Version.parse("2.0.0")); + VersionWorker versionWorker = new VersionWorker(Version.parse("1.0.0"), + mock(DialogService.class, Answers.RETURNS_DEEP_STUBS), + mock(TaskExecutor.class), + internalPreferences); try (MockedStatic version = Mockito.mockStatic(Version.class)) { - VersionWorker versionWorker = new VersionWorker(Version.parse("1.0.0"), - mock(DialogService.class, Answers.RETURNS_DEEP_STUBS), - mock(TaskExecutor.class), - internalPreferences); - - version.when(x -> Version.parse(x)).thenCallRealMethod(); version.when(Version::getAllAvailableVersions) - .thenReturn(List.of(Version.parse("1.0.0"), Version.parse("2.0.0"))); + .thenReturn(availVersions); System.out.println(versionWorker.getNewVersion().get()); } From c6f0c606e9c9801d12be60c1d5ff494ed010fc1f Mon Sep 17 00:00:00 2001 From: Carl Christian Snethlage <50491877+calixtus@users.noreply.github.com> Date: Sun, 4 Sep 2022 17:05:23 +0200 Subject: [PATCH 3/3] wip --- .../org/jabref/gui/help/VersionWorker.java | 2 +- .../jabref/gui/help/VersionWorkerTest.java | 52 ++++++++++++++++--- 2 files changed, 47 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/jabref/gui/help/VersionWorker.java b/src/main/java/org/jabref/gui/help/VersionWorker.java index 697b5d7ec06..1636ca85924 100644 --- a/src/main/java/org/jabref/gui/help/VersionWorker.java +++ b/src/main/java/org/jabref/gui/help/VersionWorker.java @@ -87,7 +87,7 @@ private void showConnectionError(Exception exception, boolean manualExecution) { * Prints up-to-date to the status bar (and shows a dialog it was executed manually) if there is now new version. * Shows a "New Version" Dialog to the user if there is. */ - private void showUpdateInfo(Optional newerVersion, boolean manualExecution) { + protected void showUpdateInfo(Optional newerVersion, boolean manualExecution) { // no new version could be found, only respect the ignored version on automated version checks if (newerVersion.isEmpty() || (newerVersion.get().equals(internalPreferences.getIgnoredVersion()) && !manualExecution)) { if (manualExecution) { diff --git a/src/test/java/org/jabref/gui/help/VersionWorkerTest.java b/src/test/java/org/jabref/gui/help/VersionWorkerTest.java index 826c2cbed70..d281db6d25d 100644 --- a/src/test/java/org/jabref/gui/help/VersionWorkerTest.java +++ b/src/test/java/org/jabref/gui/help/VersionWorkerTest.java @@ -2,36 +2,76 @@ import java.io.IOException; import java.util.List; +import java.util.Optional; + +import javafx.application.Platform; +import javafx.stage.Stage; import org.jabref.gui.DialogService; import org.jabref.gui.util.TaskExecutor; import org.jabref.logic.util.Version; import org.jabref.preferences.InternalPreferences; +import org.jabref.testutils.category.GUITest; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Answers; import org.mockito.MockedStatic; import org.mockito.Mockito; +import org.testfx.framework.junit5.ApplicationExtension; +import org.testfx.framework.junit5.Start; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; +@GUITest +@ExtendWith(ApplicationExtension.class) class VersionWorkerTest { - @Test - void ignoreNewVersionTest() throws IOException { - InternalPreferences internalPreferences = mock(InternalPreferences.class); - List availVersions = List.of(Version.parse("1.0.0"), Version.parse("2.0.0")); - VersionWorker versionWorker = new VersionWorker(Version.parse("1.0.0"), + + InternalPreferences internalPreferences; + DialogService dialogService; + VersionWorker versionWorker; + + @Start + void onStart(Stage stage) { + // Needed to init JavaFX thread + stage.show(); + } + + @BeforeEach + void setUp() { + internalPreferences = mock(InternalPreferences.class); + dialogService = mock(DialogService.class, Answers.RETURNS_DEEP_STUBS); + versionWorker = new VersionWorker(Version.parse("1.0.0"), mock(DialogService.class, Answers.RETURNS_DEEP_STUBS), mock(TaskExecutor.class), internalPreferences); + } + @Test + void getNewVersionTest() throws IOException { + List availVersions = List.of(Version.parse("1.0.0"), Version.parse("2.0.0")); try (MockedStatic version = Mockito.mockStatic(Version.class)) { version.when(Version::getAllAvailableVersions) .thenReturn(availVersions); - System.out.println(versionWorker.getNewVersion().get()); + assertEquals("2.0.0", versionWorker.getNewVersion().map(Version::toString).orElse("")); } + } + + @Test + void setIgnoredVersionTest() { + Platform.runLater(() -> { + versionWorker.showUpdateInfo(Optional.of(Version.parse("1.0.0")), true); + when(dialogService.showCustomDialogAndWait(any())).thenReturn(Optional.of(false)); + verify(internalPreferences).setIgnoredVersion(eq(Version.parse("2.0.0"))); + }); } }