Skip to content

Commit d9ca5a2

Browse files
committed
feat: unit test
1 parent 8911a1f commit d9ca5a2

File tree

2 files changed

+58
-2
lines changed

2 files changed

+58
-2
lines changed

spring-ai-model/src/main/java/org/springframework/ai/chat/memory/MessageWindowChatMemory.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,7 @@ private MessageChanges process(List<Message> memoryMessages, List<Message> newMe
102102
for (Message message : finalMessages) {
103103
if (message instanceof SystemMessage || removed >= messagesToRemove) {
104104
trimmedMessages.add(message);
105-
}
106-
else {
105+
} else {
107106
removed++;
108107
}
109108
}

spring-ai-model/src/test/java/org/springframework/ai/chat/memory/InMemoryChatMemoryRepositoryTests.java

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,5 +152,62 @@ void messagesWithNullElementsNotAllowed() {
152152
.isInstanceOf(IllegalArgumentException.class)
153153
.hasMessageContaining("messages cannot contain null elements");
154154
}
155+
// refresh test code
156+
@Test
157+
void refreshAddsMessagesToNewConversation() {
158+
String conversationId = UUID.randomUUID().toString();
159+
List<Message> messagesToAdd = List.of(new UserMessage("Hello"));
160+
this.chatMemoryRepository.refresh(conversationId, List.of(), messagesToAdd);
161+
162+
assertThat(this.chatMemoryRepository.findByConversationId(conversationId)).isEqualTo(messagesToAdd);
163+
}
164+
165+
@Test
166+
void refreshAddsMessagesToExistingConversation() {
167+
String conversationId = UUID.randomUUID().toString();
168+
Message initialMessage = new UserMessage("Initial");
169+
this.chatMemoryRepository.saveAll(conversationId, List.of(initialMessage));
170+
171+
Message newMessage = new AssistantMessage("New");
172+
this.chatMemoryRepository.refresh(conversationId, List.of(), List.of(newMessage));
173+
174+
assertThat(this.chatMemoryRepository.findByConversationId(conversationId)).containsExactly(initialMessage, newMessage);
175+
}
176+
177+
@Test
178+
void refreshDeletesMessagesFromExistingConversation() {
179+
String conversationId = UUID.randomUUID().toString();
180+
Message messageToKeep = new UserMessage("Keep");
181+
Message messageToDelete = new AssistantMessage("Delete");
182+
this.chatMemoryRepository.saveAll(conversationId, List.of(messageToKeep, messageToDelete));
183+
184+
this.chatMemoryRepository.refresh(conversationId, List.of(messageToDelete), List.of());
185+
186+
assertThat(this.chatMemoryRepository.findByConversationId(conversationId)).containsExactly(messageToKeep);
187+
}
188+
189+
@Test
190+
void refreshAddsAndDeletesMessages() {
191+
String conversationId = UUID.randomUUID().toString();
192+
Message messageToKeep = new UserMessage("Keep");
193+
Message messageToDelete = new AssistantMessage("Delete");
194+
this.chatMemoryRepository.saveAll(conversationId, List.of(messageToKeep, messageToDelete));
195+
196+
Message messageToAdd = new UserMessage("Add");
197+
this.chatMemoryRepository.refresh(conversationId, List.of(messageToDelete), List.of(messageToAdd));
198+
199+
assertThat(this.chatMemoryRepository.findByConversationId(conversationId)).containsExactlyInAnyOrder(messageToKeep, messageToAdd);
200+
}
201+
202+
@Test
203+
void refreshWithEmptyChangesDoesNothing() {
204+
String conversationId = UUID.randomUUID().toString();
205+
List<Message> initialMessages = List.of(new UserMessage("Hello"));
206+
this.chatMemoryRepository.saveAll(conversationId, initialMessages);
207+
208+
this.chatMemoryRepository.refresh(conversationId, List.of(), List.of());
209+
210+
assertThat(this.chatMemoryRepository.findByConversationId(conversationId)).isEqualTo(initialMessages);
211+
}
155212

156213
}

0 commit comments

Comments
 (0)