11package com .craftpilot .llmservice .service ;
22
33import com .craftpilot .llmservice .cache .PerformanceAnalysisCache ;
4+ import com .craftpilot .llmservice .model .AIRequest ;
5+ import com .craftpilot .llmservice .model .AIResponse ;
46import com .craftpilot .llmservice .model .performance .PerformanceAnalysisRequest ;
57import com .craftpilot .llmservice .model .performance .PerformanceAnalysisResponse ;
68import com .craftpilot .llmservice .model .performance .SuggestionsRequest ;
79import com .craftpilot .llmservice .repository .PerformanceAnalysisRepository ;
8- import io .micrometer .core .instrument .simple .SimpleMeterRegistry ;
10+ import com .fasterxml .jackson .databind .ObjectMapper ;
11+ import io .micrometer .core .instrument .MeterRegistry ;
912import org .junit .jupiter .api .BeforeEach ;
1013import org .junit .jupiter .api .Test ;
14+ import org .junit .jupiter .api .extension .ExtendWith ;
1115import org .mockito .Mock ;
12- import org .mockito .MockitoAnnotations ;
16+ import org .mockito .junit . jupiter . MockitoExtension ;
1317import reactor .core .publisher .Mono ;
1418import reactor .test .StepVerifier ;
1519
1620import java .time .Instant ;
1721import java .util .HashMap ;
22+ import java .util .UUID ;
1823
1924import static org .mockito .ArgumentMatchers .any ;
20- import static org .mockito .ArgumentMatchers .anyString ;
2125import static org .mockito .Mockito .when ;
2226
27+ @ ExtendWith (MockitoExtension .class )
2328class PerformanceServiceTest {
2429
2530 private PerformanceService performanceService ;
@@ -34,22 +39,27 @@ class PerformanceServiceTest {
3439 private PerformanceAnalysisCache performanceAnalysisCache ;
3540
3641 @ Mock
37- private AiService aiService ;
42+ private LLMService llmService ;
3843
3944 @ Mock
4045 private PromptService promptService ;
4146
47+ @ Mock
48+ private MeterRegistry meterRegistry ;
49+
50+ @ Mock
51+ private ObjectMapper objectMapper ;
52+
4253 @ BeforeEach
4354 void setUp () {
44- MockitoAnnotations .openMocks (this );
45-
4655 performanceService = new PerformanceService (
47- lighthouseService ,
48- performanceAnalysisRepository ,
49- performanceAnalysisCache ,
50- aiService ,
56+ lighthouseService ,
57+ performanceAnalysisRepository ,
58+ performanceAnalysisCache ,
5159 promptService ,
52- new SimpleMeterRegistry ()
60+ meterRegistry ,
61+ llmService ,
62+ objectMapper
5363 );
5464 }
5565
@@ -104,13 +114,20 @@ void analyzeWebsite_WhenCacheMiss_PerformsNewAnalysis() {
104114 }
105115
106116 @ Test
107- void generateSuggestions_ReturnsAiResponse () {
117+ void generateSuggestions_ReturnsAiResponse () throws Exception {
108118 // Arrange
109119 SuggestionsRequest request = new SuggestionsRequest ();
110120 request .setAnalysisData (new HashMap <String , Object >());
121+ request .setUserId ("test-user" );
122+ request .setLanguage ("tr" );
123+
124+ AIResponse aiResponse = AIResponse .builder ()
125+ .response ("AI response" )
126+ .success (true )
127+ .build ();
111128
112- when (promptService . getPerformanceAnalysisPrompt (any ())).thenReturn ("test prompt " );
113- when (aiService . generateAiResponse ( anyString ( ))).thenReturn (Mono .just ("AI response" ));
129+ when (objectMapper . writeValueAsString (any ())).thenReturn ("{} " );
130+ when (llmService . processChatCompletion ( any ( AIRequest . class ))).thenReturn (Mono .just (aiResponse ));
114131
115132 // Act & Assert
116133 StepVerifier .create (performanceService .generateSuggestions (request ))
0 commit comments