From: David Roden Date: Mon, 27 Jan 2025 20:50:32 +0000 (+0100) Subject: ✅ Remove all windows after each test X-Git-Url: https://git.pterodactylus.net/?a=commitdiff_plain;h=f1936aeafb0fa9f96386ddb76fe27c4caf4c102d;p=msta.git ✅ Remove all windows after each test --- diff --git a/server/src/test/java/de/qsheltier/msta/ServerTest.java b/server/src/test/java/de/qsheltier/msta/ServerTest.java index 95e6c9e..0fc43e7 100644 --- a/server/src/test/java/de/qsheltier/msta/ServerTest.java +++ b/server/src/test/java/de/qsheltier/msta/ServerTest.java @@ -22,6 +22,8 @@ import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.SwingUtilities; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Timeout; @@ -31,6 +33,7 @@ import static com.spotify.hamcrest.jackson.JsonMatchers.jsonInt; import static com.spotify.hamcrest.jackson.JsonMatchers.jsonObject; import static com.spotify.hamcrest.jackson.JsonMatchers.jsonText; import static java.nio.charset.StandardCharsets.UTF_8; +import static java.util.Arrays.stream; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.anything; import static org.hamcrest.Matchers.contains; @@ -95,16 +98,12 @@ public class ServerTest { public void serverDoesNotSendEventsForExistingWindows() throws Throwable { var window = new Window(null); window.setVisible(true); - try { - try (var server = new Server()) { - server.start(); - server.waitForNextScan(); - createConnection(server, verifyConnectedEvent((reader, ready, writer) -> { - assertTimeout(ready, Duration.of(1, ChronoUnit.SECONDS)); - })); - } - } finally { - window.setVisible(false); + try (var server = new Server()) { + server.start(); + server.waitForNextScan(); + createConnection(server, verifyConnectedEvent((reader, ready, writer) -> { + assertTimeout(ready, Duration.of(1, ChronoUnit.SECONDS)); + })); } } @@ -113,12 +112,8 @@ public class ServerTest { public void serverSendsEventWhenAWindowIsOpened() throws Throwable { connectToServer(verifyConnectedEvent((reader, ready, writer) -> { var window = new Window(null); - try { - window.setVisible(true); - assertThat(reader.get(), isJsonStringMatching(jsonObject().where("event", jsonText("window-opened")))); - } finally { - window.setVisible(false); - } + window.setVisible(true); + assertThat(reader.get(), isJsonStringMatching(jsonObject().where("event", jsonText("window-opened")))); })); } @@ -128,11 +123,7 @@ public class ServerTest { connectToServer(verifyConnectedEvent((reader, ready, writer) -> { var frame = new Frame("Frame Title"); frame.setVisible(true); - try { - assertThat(reader.get(), isJsonStringMatching(jsonObject().where("event", jsonText("window-opened")))); - } finally { - frame.setVisible(false); - } + assertThat(reader.get(), isJsonStringMatching(jsonObject().where("event", jsonText("window-opened")))); })); } @@ -195,8 +186,8 @@ public class ServerTest { @Timeout(value = 5, unit = TimeUnit.SECONDS, threadMode = SEPARATE_THREAD) public void windowInfoContainsInfoAboutAllComponents() throws Throwable { connectToServer(verifyConnectedEvent((reader, ready, writer) -> { - var window = new Window(null); SwingUtilities.invokeAndWait(() -> { + var window = new Window(null); var mainPanel = new JPanel(new BorderLayout()); mainPanel.add(new JLabel("Label"), BorderLayout.NORTH); mainPanel.add(new JButton("Button"), BorderLayout.SOUTH); @@ -204,18 +195,23 @@ public class ServerTest { window.pack(); window.setVisible(true); }); - try { - var reply = objectMapper.readTree(reader.get()); - System.out.println(reply); - assertThat(reply, jsonObject().where("event", jsonText("window-opened")).where("id", jsonInt(anything())) - .where("children", jsonArray(contains(jsonObject().where("type", jsonText("javax.swing.JPanel")) - .where("children", jsonArray(containsInAnyOrder( - jsonObject().where("type", jsonText("javax.swing.JLabel")), - jsonObject().where("type", jsonText("javax.swing.JButton")))))))) - ); - } finally { - window.setVisible(false); - } + var reply = objectMapper.readTree(reader.get()); + System.out.println(reply); + assertThat(reply, jsonObject().where("event", jsonText("window-opened")).where("id", jsonInt(anything())) + .where("children", jsonArray(contains(jsonObject().where("type", jsonText("javax.swing.JPanel")) + .where("children", jsonArray(containsInAnyOrder( + jsonObject().where("type", jsonText("javax.swing.JLabel")), + jsonObject().where("type", jsonText("javax.swing.JButton")))))))) + ); + })); + } + + @BeforeEach + @AfterEach + public void removeAllWindows() throws Exception { + SwingUtilities.invokeAndWait(() -> stream(Window.getWindows()).forEach(window -> { + window.setVisible(false); + window.dispose(); })); }