Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,11 @@
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;

import org.springframework.ai.chat.prompt.PromptTemplate;
import org.springframework.ai.vectorstore.VectorStore;
import reactor.core.scheduler.Scheduler;

import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;

/**
Expand Down Expand Up @@ -91,4 +94,116 @@ void whenDefaultTopKIsNegativeThenThrow() {
.hasMessageContaining("topK must be greater than 0");
}

@Test
void whenBuilderWithValidVectorStoreThenSuccess() {
VectorStore vectorStore = Mockito.mock(VectorStore.class);

VectorStoreChatMemoryAdvisor advisor = VectorStoreChatMemoryAdvisor.builder(vectorStore).build();

assertThat(advisor).isNotNull();
}

@Test
void whenBuilderWithAllValidParametersThenSuccess() {
VectorStore vectorStore = Mockito.mock(VectorStore.class);
Scheduler scheduler = Mockito.mock(Scheduler.class);
PromptTemplate systemPromptTemplate = Mockito.mock(PromptTemplate.class);

VectorStoreChatMemoryAdvisor advisor = VectorStoreChatMemoryAdvisor.builder(vectorStore)
.conversationId("test-conversation")
.scheduler(scheduler)
.systemPromptTemplate(systemPromptTemplate)
.defaultTopK(5)
.build();

assertThat(advisor).isNotNull();
}

@Test
void whenDefaultConversationIdIsBlankThenThrow() {
VectorStore vectorStore = Mockito.mock(VectorStore.class);

assertThatThrownBy(() -> VectorStoreChatMemoryAdvisor.builder(vectorStore).conversationId(" ").build())
.isInstanceOf(IllegalArgumentException.class)
.hasMessageContaining("defaultConversationId cannot be null or empty");
}

@Test
void whenBuilderWithValidConversationIdThenSuccess() {
VectorStore vectorStore = Mockito.mock(VectorStore.class);

VectorStoreChatMemoryAdvisor advisor = VectorStoreChatMemoryAdvisor.builder(vectorStore)
.conversationId("valid-id")
.build();

assertThat(advisor).isNotNull();
}

@Test
void whenBuilderWithValidTopKThenSuccess() {
VectorStore vectorStore = Mockito.mock(VectorStore.class);

VectorStoreChatMemoryAdvisor advisor = VectorStoreChatMemoryAdvisor.builder(vectorStore)
.defaultTopK(10)
.build();

assertThat(advisor).isNotNull();
}

@Test
void whenBuilderWithMinimumTopKThenSuccess() {
VectorStore vectorStore = Mockito.mock(VectorStore.class);

VectorStoreChatMemoryAdvisor advisor = VectorStoreChatMemoryAdvisor.builder(vectorStore).defaultTopK(1).build();

assertThat(advisor).isNotNull();
}

@Test
void whenBuilderWithLargeTopKThenSuccess() {
VectorStore vectorStore = Mockito.mock(VectorStore.class);

VectorStoreChatMemoryAdvisor advisor = VectorStoreChatMemoryAdvisor.builder(vectorStore)
.defaultTopK(1000)
.build();

assertThat(advisor).isNotNull();
}

@Test
void whenBuilderCalledMultipleTimesWithSameVectorStoreThenSuccess() {
VectorStore vectorStore = Mockito.mock(VectorStore.class);

VectorStoreChatMemoryAdvisor advisor1 = VectorStoreChatMemoryAdvisor.builder(vectorStore).build();
VectorStoreChatMemoryAdvisor advisor2 = VectorStoreChatMemoryAdvisor.builder(vectorStore).build();

assertThat(advisor1).isNotNull();
assertThat(advisor2).isNotNull();
assertThat(advisor1).isNotSameAs(advisor2);
}

@Test
void whenBuilderWithCustomSchedulerThenSuccess() {
VectorStore vectorStore = Mockito.mock(VectorStore.class);
Scheduler customScheduler = Mockito.mock(Scheduler.class);

VectorStoreChatMemoryAdvisor advisor = VectorStoreChatMemoryAdvisor.builder(vectorStore)
.scheduler(customScheduler)
.build();

assertThat(advisor).isNotNull();
}

@Test
void whenBuilderWithCustomSystemPromptTemplateThenSuccess() {
VectorStore vectorStore = Mockito.mock(VectorStore.class);
PromptTemplate customTemplate = Mockito.mock(PromptTemplate.class);

VectorStoreChatMemoryAdvisor advisor = VectorStoreChatMemoryAdvisor.builder(vectorStore)
.systemPromptTemplate(customTemplate)
.build();

assertThat(advisor).isNotNull();
}

}