@@ -7,6 +7,7 @@ namespace NoteBookmark.AIServices.Tests;
77public class ResearchServiceTests
88{
99 private readonly Mock < ILogger < ResearchService > > _mockLogger ;
10+ private readonly HttpClient _httpClient = new ( ) ;
1011
1112 public ResearchServiceTests ( )
1213 {
@@ -18,7 +19,7 @@ public async Task SearchSuggestionsAsync_WithMissingApiKey_ThrowsInvalidOperatio
1819 {
1920 // Arrange
2021 var settingsProvider = CreateSettingsProvider ( apiKey : null ) ;
21- var service = new ResearchService ( _mockLogger . Object , settingsProvider ) ;
22+ var service = new ResearchService ( _httpClient , _mockLogger . Object , settingsProvider ) ;
2223 var searchCriterias = new SearchCriterias ( "Test prompt" ) { SearchTopic = "AI" } ;
2324
2425 // Act
@@ -35,7 +36,7 @@ public async Task SearchSuggestionsAsync_WithMissingApiKey_LogsError()
3536 {
3637 // Arrange
3738 var settingsProvider = CreateSettingsProvider ( apiKey : null ) ;
38- var service = new ResearchService ( _mockLogger . Object , settingsProvider ) ;
39+ var service = new ResearchService ( _httpClient , _mockLogger . Object , settingsProvider ) ;
3940 var searchCriterias = new SearchCriterias ( "Test prompt" ) ;
4041
4142 // Act
@@ -50,7 +51,7 @@ public async Task SearchSuggestionsAsync_WithApiKeyFromAppSettings_UsesCorrectVa
5051 {
5152 // Arrange
5253 var settingsProvider = CreateSettingsProvider ( apiKey : "test-api-key-from-settings" ) ;
53- var service = new ResearchService ( _mockLogger . Object , settingsProvider ) ;
54+ var service = new ResearchService ( _httpClient , _mockLogger . Object , settingsProvider ) ;
5455 var searchCriterias = new SearchCriterias ( "Test prompt" ) { SearchTopic = "Testing" } ;
5556
5657 // Act - Will fail to connect but won't throw missing config exception
@@ -65,7 +66,7 @@ public async Task SearchSuggestionsAsync_WithApiKeyFromRekaEnvVar_UsesCorrectVal
6566 {
6667 // Arrange
6768 var settingsProvider = CreateSettingsProvider ( apiKey : "test-reka-key" ) ;
68- var service = new ResearchService ( _mockLogger . Object , settingsProvider ) ;
69+ var service = new ResearchService ( _httpClient , _mockLogger . Object , settingsProvider ) ;
6970 var searchCriterias = new SearchCriterias ( "Test prompt" ) { SearchTopic = "Testing" } ;
7071
7172 // Act
@@ -81,7 +82,7 @@ public async Task SearchSuggestionsAsync_WithCustomBaseUrl_UsesProvidedUrl()
8182 // Arrange
8283 const string customUrl = "https://custom.api.example.com/v1" ;
8384 var settingsProvider = CreateSettingsProvider ( apiKey : "test-key" , baseUrl : customUrl ) ;
84- var service = new ResearchService ( _mockLogger . Object , settingsProvider ) ;
85+ var service = new ResearchService ( _httpClient , _mockLogger . Object , settingsProvider ) ;
8586 var searchCriterias = new SearchCriterias ( "Test prompt" ) ;
8687
8788 // Act
@@ -96,7 +97,7 @@ public async Task SearchSuggestionsAsync_WithDefaultBaseUrl_UsesRekaApi()
9697 {
9798 // Arrange
9899 var settingsProvider = CreateSettingsProvider ( apiKey : "test-key" , baseUrl : "https://api.reka.ai/v1" ) ;
99- var service = new ResearchService ( _mockLogger . Object , settingsProvider ) ;
100+ var service = new ResearchService ( _httpClient , _mockLogger . Object , settingsProvider ) ;
100101 var searchCriterias = new SearchCriterias ( "Test prompt" ) ;
101102
102103 // Act
@@ -112,7 +113,7 @@ public async Task SearchSuggestionsAsync_WithCustomModelName_UsesProvidedModel()
112113 // Arrange
113114 const string customModel = "custom-model-v2" ;
114115 var settingsProvider = CreateSettingsProvider ( apiKey : "test-key" , modelName : customModel ) ;
115- var service = new ResearchService ( _mockLogger . Object , settingsProvider ) ;
116+ var service = new ResearchService ( _httpClient , _mockLogger . Object , settingsProvider ) ;
116117 var searchCriterias = new SearchCriterias ( "Test prompt" ) ;
117118
118119 // Act
@@ -127,7 +128,7 @@ public async Task SearchSuggestionsAsync_WithDefaultModelName_UsesRekaFlashResea
127128 {
128129 // Arrange
129130 var settingsProvider = CreateSettingsProvider ( apiKey : "test-key" , modelName : "reka-flash-research" ) ;
130- var service = new ResearchService ( _mockLogger . Object , settingsProvider ) ;
131+ var service = new ResearchService ( _httpClient , _mockLogger . Object , settingsProvider ) ;
131132 var searchCriterias = new SearchCriterias ( "Test prompt" ) ;
132133
133134 // Act
@@ -142,7 +143,7 @@ public async Task SearchSuggestionsAsync_WithInvalidUrl_ReturnsEmptyPostSuggesti
142143 {
143144 // Arrange
144145 var settingsProvider = CreateSettingsProvider ( apiKey : "test-key" , baseUrl : "not-a-valid-url" ) ;
145- var service = new ResearchService ( _mockLogger . Object , settingsProvider ) ;
146+ var service = new ResearchService ( _httpClient , _mockLogger . Object , settingsProvider ) ;
146147 var searchCriterias = new SearchCriterias ( "Test prompt" ) ;
147148
148149 // Act
@@ -159,7 +160,7 @@ public async Task SearchSuggestionsAsync_OnException_ReturnsEmptyPostSuggestions
159160 {
160161 // Arrange
161162 var settingsProvider = CreateSettingsProvider ( apiKey : "test-key" ) ;
162- var service = new ResearchService ( _mockLogger . Object , settingsProvider ) ;
163+ var service = new ResearchService ( _httpClient , _mockLogger . Object , settingsProvider ) ;
163164 var searchCriterias = new SearchCriterias ( "Test prompt" ) ;
164165
165166 // Act
@@ -175,7 +176,7 @@ public async Task SearchSuggestionsAsync_WithValidSearchCriterias_ProcessesPromp
175176 {
176177 // Arrange
177178 var settingsProvider = CreateSettingsProvider ( apiKey : "test-key" ) ;
178- var service = new ResearchService ( _mockLogger . Object , settingsProvider ) ;
179+ var service = new ResearchService ( _httpClient , _mockLogger . Object , settingsProvider ) ;
179180 var searchCriterias = new SearchCriterias ( "Find articles about {topic}" )
180181 {
181182 SearchTopic = "Machine Learning" ,
@@ -199,7 +200,7 @@ public async Task SearchSuggestionsAsync_WithEmptyApiKey_ThrowsInvalidOperationE
199200 {
200201 // Arrange
201202 var settingsProvider = CreateSettingsProvider ( apiKey : emptyKey ) ;
202- var service = new ResearchService ( _mockLogger . Object , settingsProvider ) ;
203+ var service = new ResearchService ( _httpClient , _mockLogger . Object , settingsProvider ) ;
203204 var searchCriterias = new SearchCriterias ( "Test prompt" ) ;
204205
205206 // Act
@@ -216,7 +217,7 @@ public async Task SearchSuggestionsAsync_ApiKeyPriority_AppSettingsOverridesEnvV
216217 {
217218 // Arrange - Both AppSettings and env var set, AppSettings should take precedence
218219 var settingsProvider = CreateSettingsProvider ( apiKey : "settings-key" ) ;
219- var service = new ResearchService ( _mockLogger . Object , settingsProvider ) ;
220+ var service = new ResearchService ( _httpClient , _mockLogger . Object , settingsProvider ) ;
220221 var searchCriterias = new SearchCriterias ( "Test prompt" ) ;
221222
222223 // Act
0 commit comments