diff --git a/fagiServer/src/main/java/com/fagi/handler/ConversationHandler.java b/fagiServer/src/main/java/com/fagi/handler/ConversationHandler.java index 1b1e5cf..a818a73 100644 --- a/fagiServer/src/main/java/com/fagi/handler/ConversationHandler.java +++ b/fagiServer/src/main/java/com/fagi/handler/ConversationHandler.java @@ -43,6 +43,7 @@ public void tick() { conversation.addMessage(message); data.storeConversation(conversation); } catch (InterruptedException ie) { + Thread.currentThread().interrupt(); ie.printStackTrace(); } } diff --git a/fagiServer/src/test/java/TextMessageIntegrationTests.java b/fagiServer/src/test/java/TextMessageIntegrationTests.java index 1c21b76..2da4675 100644 --- a/fagiServer/src/test/java/TextMessageIntegrationTests.java +++ b/fagiServer/src/test/java/TextMessageIntegrationTests.java @@ -78,4 +78,28 @@ void sendingAMessageToConversation_ShouldResultInConversationBeingStored() { .verify(data, times(1)) .storeConversation(conversation); } + + @Test + void callingRun_ShouldCallTickAndSendMesasage() throws InterruptedException { + when(data.getConversation(Mockito.anyLong())).thenReturn(conversation); + + inputHandler.handleInput(message); + + var conversationThread = new Thread(conversationHandler); + conversationThread.setDaemon(true); + conversationThread.start(); + + while (conversationHandler.queueSize() > 0 && conversationThread.isAlive()) { + Thread.sleep(10); // Minimal sleep to avoid busy-waiting + } + + conversationThread.interrupt(); + + conversationThread.join(1000); + + Assertions.assertAll( + () -> Assertions.assertTrue(conversationThread.isInterrupted()), + () -> Assertions.assertTrue(conversation.getMessages().contains(message)) + ); + } }