Skip to content

Commit 3300d7a

Browse files
committed
Refactor tests for better code quality
1 parent 34a4e9b commit 3300d7a

File tree

3 files changed

+89
-189
lines changed

3 files changed

+89
-189
lines changed

src/test/java/de/tum/cit/aet/artemis/core/connector/IrisRequestMockProvider.java

Lines changed: 47 additions & 149 deletions
Original file line numberDiff line numberDiff line change
@@ -96,17 +96,7 @@ public void reset() throws Exception {
9696
}
9797

9898
public void mockProgrammingExerciseChatResponse(Consumer<PyrisExerciseChatPipelineExecutionDTO> responseConsumer) {
99-
// @formatter:off
100-
mockServer
101-
.expect(ExpectedCount.once(), requestTo(pipelinesApiURL + "/programming-exercise-chat/run"))
102-
.andExpect(method(HttpMethod.POST))
103-
.andRespond(request -> {
104-
var mockRequest = (MockClientHttpRequest) request;
105-
var dto = mapper.readValue(mockRequest.getBodyAsString(), PyrisExerciseChatPipelineExecutionDTO.class);
106-
responseConsumer.accept(dto);
107-
return MockRestResponseCreators.withRawStatus(HttpStatus.ACCEPTED.value()).createResponse(request);
108-
});
109-
// @formatter:on
99+
mockPostRequest("/programming-exercise-chat/run", PyrisExerciseChatPipelineExecutionDTO.class, responseConsumer);
110100
}
111101

112102
public void mockProgrammingExerciseChatResponseExpectingSubmissionId(Consumer<PyrisExerciseChatPipelineExecutionDTO> responseConsumer, long submissionId) {
@@ -142,193 +132,75 @@ public void mockProgrammingExerciseChatResponseExpectingSubmissionId(Consumer<Py
142132
}
143133

144134
public void mockTextExerciseChatResponse(Consumer<PyrisTextExerciseChatPipelineExecutionDTO> responseConsumer) {
145-
// @formatter:off
146-
mockServer
147-
.expect(ExpectedCount.once(), requestTo(pipelinesApiURL + "/text-exercise-chat/run"))
148-
.andExpect(method(HttpMethod.POST))
149-
.andRespond(request -> {
150-
var mockRequest = (MockClientHttpRequest) request;
151-
var dto = mapper.readValue(mockRequest.getBodyAsString(), PyrisTextExerciseChatPipelineExecutionDTO.class);
152-
responseConsumer.accept(dto);
153-
return MockRestResponseCreators.withRawStatus(HttpStatus.ACCEPTED.value()).createResponse(request);
154-
});
155-
// @formatter:on
135+
mockPostRequest("/text-exercise-chat/run", PyrisTextExerciseChatPipelineExecutionDTO.class, responseConsumer);
156136
}
157137

158138
public void mockLectureChatResponse(Consumer<PyrisLectureChatPipelineExecutionDTO> responseConsumer) {
159-
// @formatter:off
160-
mockServer
161-
.expect(ExpectedCount.once(), requestTo(pipelinesApiURL + "/lecture-chat/run"))
162-
.andExpect(method(HttpMethod.POST))
163-
.andRespond(request -> {
164-
var mockRequest = (MockClientHttpRequest) request;
165-
var dto = mapper.readValue(mockRequest.getBodyAsString(), PyrisLectureChatPipelineExecutionDTO.class);
166-
responseConsumer.accept(dto);
167-
return MockRestResponseCreators.withRawStatus(HttpStatus.ACCEPTED.value()).createResponse(request);
168-
});
169-
// @formatter:on
139+
mockPostRequest("/lecture-chat/run", PyrisLectureChatPipelineExecutionDTO.class, responseConsumer);
170140
}
171141

172142
public void mockTutorSuggestionResponse(Consumer<PyrisTutorSuggestionPipelineExecutionDTO> responseConsumer) {
173-
// @formatter:off
174-
mockServer
175-
.expect(ExpectedCount.once(), requestTo(pipelinesApiURL + "/tutor-suggestion/run"))
176-
.andExpect(method(HttpMethod.POST))
177-
.andRespond(request -> {
178-
var mockRequest = (MockClientHttpRequest) request;
179-
assert mockRequest != null;
180-
var dto = mapper.readValue(mockRequest.getBodyAsString(), PyrisTutorSuggestionPipelineExecutionDTO.class);
181-
responseConsumer.accept(dto);
182-
return MockRestResponseCreators.withRawStatus(HttpStatus.ACCEPTED.value()).createResponse(request);
183-
});
184-
// @formatter:on
143+
mockPostRequest("/tutor-suggestion/run", PyrisTutorSuggestionPipelineExecutionDTO.class, responseConsumer);
185144
}
186145

187-
public void mockRunCompetencyExtractionResponseAnd(Consumer<PyrisCompetencyExtractionPipelineExecutionDTO> executionDTOConsumer) {
188-
// @formatter:off
189-
mockServer
190-
.expect(ExpectedCount.once(), requestTo(pipelinesApiURL + "/competency-extraction/run"))
191-
.andExpect(method(HttpMethod.POST))
192-
.andRespond(request -> {
193-
var mockRequest = (MockClientHttpRequest) request;
194-
var dto = mapper.readValue(mockRequest.getBodyAsString(), PyrisCompetencyExtractionPipelineExecutionDTO.class);
195-
executionDTOConsumer.accept(dto);
196-
return MockRestResponseCreators.withRawStatus(HttpStatus.ACCEPTED.value()).createResponse(request);
197-
});
198-
// @formatter:on
146+
public void mockRunCompetencyExtractionResponseAnd(Consumer<PyrisCompetencyExtractionPipelineExecutionDTO> responseConsumer) {
147+
mockPostRequest("/competency-extraction/run", PyrisCompetencyExtractionPipelineExecutionDTO.class, responseConsumer);
199148
}
200149

201150
public void mockRewritingPipelineResponse(Consumer<PyrisRewritingPipelineExecutionDTO> responseConsumer) {
202-
// @formatter:off
203-
mockServer
204-
.expect(ExpectedCount.once(), requestTo(pipelinesApiURL + "/rewriting/run"))
205-
.andExpect(method(HttpMethod.POST))
206-
.andRespond(request -> {
207-
var mockRequest = (MockClientHttpRequest) request;
208-
var dto = mapper.readValue(mockRequest.getBodyAsString(), PyrisRewritingPipelineExecutionDTO.class);
209-
responseConsumer.accept(dto);
210-
return MockRestResponseCreators.withRawStatus(HttpStatus.ACCEPTED.value()).createResponse(request);
211-
});
212-
// @formatter:on
151+
mockPostRequest("/rewriting/run", PyrisRewritingPipelineExecutionDTO.class, responseConsumer);
213152
}
214153

215-
public void mockProgrammingConsistencyCheckResponse(Consumer<PyrisConsistencyCheckPipelineExecutionDTO> responseConsumer, long exerciseId) {
216-
mockServer.expect(ExpectedCount.once(), requestTo(pipelinesApiURL + "/inconsistency-check/run")).andExpect(method(HttpMethod.POST)).andRespond(request -> {
217-
var mockRequest = (MockClientHttpRequest) request;
218-
var dto = mapper.readValue(mockRequest.getBodyAsString(), PyrisConsistencyCheckPipelineExecutionDTO.class);
219-
responseConsumer.accept(dto);
220-
return MockRestResponseCreators.withRawStatus(HttpStatus.ACCEPTED.value()).createResponse(request);
221-
});
154+
public void mockProgrammingConsistencyCheckResponse(Consumer<PyrisConsistencyCheckPipelineExecutionDTO> responseConsumer) {
155+
mockPostRequest("/inconsistency-check/run", PyrisConsistencyCheckPipelineExecutionDTO.class, responseConsumer);
222156
}
223157

224158
public void mockIngestionWebhookRunResponse(Consumer<PyrisWebhookLectureIngestionExecutionDTO> responseConsumer) {
225-
mockServer.expect(ExpectedCount.once(), requestTo(webhooksApiURL + "/lectures/ingest")).andExpect(method(HttpMethod.POST)).andRespond(request -> {
226-
var mockRequest = (MockClientHttpRequest) request;
227-
var dto = mapper.readValue(mockRequest.getBodyAsString(), PyrisWebhookLectureIngestionExecutionDTO.class);
228-
responseConsumer.accept(dto);
229-
return MockRestResponseCreators.withRawStatus(HttpStatus.ACCEPTED.value()).createResponse(request);
230-
});
159+
mockWebhookPost("/lectures/ingest", PyrisWebhookLectureIngestionExecutionDTO.class, responseConsumer);
231160
}
232161

233162
public void mockTranscriptionIngestionWebhookRunResponse(Consumer<PyrisWebhookTranscriptionIngestionExecutionDTO> responseConsumer) {
234-
mockServer.expect(ExpectedCount.once(), requestTo(webhooksApiURL + "/transcriptions/ingest")).andExpect(method(HttpMethod.POST)).andRespond(request -> {
235-
var mockRequest = (MockClientHttpRequest) request;
236-
var dto = mapper.readValue(mockRequest.getBodyAsString(), PyrisWebhookTranscriptionIngestionExecutionDTO.class);
237-
responseConsumer.accept(dto);
238-
return MockRestResponseCreators.withRawStatus(HttpStatus.ACCEPTED.value()).createResponse(request);
239-
});
163+
mockWebhookPost("/transcriptions/ingest", PyrisWebhookTranscriptionIngestionExecutionDTO.class, responseConsumer);
240164
}
241165

242166
public void mockTranscriptionDeletionWebhookRunResponse(Consumer<PyrisWebhookTranscriptionDeletionExecutionDTO> responseConsumer) {
243-
mockServer.expect(ExpectedCount.once(), requestTo(webhooksApiURL + "/transcriptions/delete")).andExpect(method(HttpMethod.POST)).andRespond(request -> {
244-
var mockRequest = (MockClientHttpRequest) request;
245-
var dto = mapper.readValue(mockRequest.getBodyAsString(), PyrisWebhookTranscriptionDeletionExecutionDTO.class);
246-
responseConsumer.accept(dto);
247-
return MockRestResponseCreators.withRawStatus(HttpStatus.ACCEPTED.value()).createResponse(request);
248-
});
167+
mockWebhookPost("/transcriptions/delete", PyrisWebhookTranscriptionDeletionExecutionDTO.class, responseConsumer);
249168
}
250169

251170
public void mockFaqIngestionWebhookRunResponse(Consumer<PyrisWebhookFaqIngestionExecutionDTO> responseConsumer) {
252-
mockServer.expect(ExpectedCount.once(), requestTo(webhooksApiURL + "/faqs/ingest")).andExpect(method(HttpMethod.POST)).andRespond(request -> {
253-
var mockRequest = (MockClientHttpRequest) request;
254-
var dto = mapper.readValue(mockRequest.getBodyAsString(), PyrisWebhookFaqIngestionExecutionDTO.class);
255-
responseConsumer.accept(dto);
256-
return MockRestResponseCreators.withRawStatus(HttpStatus.ACCEPTED.value()).createResponse(request);
257-
});
171+
mockWebhookPost("/faqs/ingest", PyrisWebhookFaqIngestionExecutionDTO.class, responseConsumer);
258172
}
259173

260174
public void mockDeletionWebhookRunResponse(Consumer<PyrisWebhookLectureIngestionExecutionDTO> responseConsumer) {
261-
mockServer.expect(ExpectedCount.once(), requestTo(webhooksApiURL + "/lectures/delete")).andExpect(method(HttpMethod.POST)).andRespond(request -> {
262-
var mockRequest = (MockClientHttpRequest) request;
263-
var dto = mapper.readValue(mockRequest.getBodyAsString(), PyrisWebhookLectureIngestionExecutionDTO.class);
264-
responseConsumer.accept(dto);
265-
return MockRestResponseCreators.withRawStatus(HttpStatus.ACCEPTED.value()).createResponse(request);
266-
});
175+
mockWebhookPost("/lectures/delete", PyrisWebhookLectureIngestionExecutionDTO.class, responseConsumer);
267176
}
268177

269178
public void mockFaqDeletionWebhookRunResponse(Consumer<PyrisWebhookFaqIngestionExecutionDTO> responseConsumer) {
270-
mockServer.expect(ExpectedCount.once(), requestTo(webhooksApiURL + "/faqs/delete")).andExpect(method(HttpMethod.POST)).andRespond(request -> {
271-
var mockRequest = (MockClientHttpRequest) request;
272-
var dto = mapper.readValue(mockRequest.getBodyAsString(), PyrisWebhookFaqIngestionExecutionDTO.class);
273-
responseConsumer.accept(dto);
274-
return MockRestResponseCreators.withRawStatus(HttpStatus.ACCEPTED.value()).createResponse(request);
275-
});
179+
mockWebhookPost("/faqs/delete", PyrisWebhookFaqIngestionExecutionDTO.class, responseConsumer);
276180
}
277181

278182
public void mockBuildFailedRunResponse(Consumer<PyrisExerciseChatPipelineExecutionDTO> responseConsumer) {
279-
mockServer.expect(ExpectedCount.max(2), requestTo(pipelinesApiURL + "/programming-exercise-chat/run?event=build_failed")).andExpect(method(HttpMethod.POST))
280-
.andRespond(request -> {
281-
var mockRequest = (MockClientHttpRequest) request;
282-
var dto = mapper.readValue(mockRequest.getBodyAsString(), PyrisExerciseChatPipelineExecutionDTO.class);
283-
responseConsumer.accept(dto);
284-
return MockRestResponseCreators.withRawStatus(HttpStatus.ACCEPTED.value()).createResponse(request);
285-
});
183+
mockPostRequest("/programming-exercise-chat/run?event=build_failed", PyrisExerciseChatPipelineExecutionDTO.class, responseConsumer, ExpectedCount.max(2));
286184
}
287185

288186
public void mockProgressStalledEventRunResponse(Consumer<PyrisCourseChatPipelineExecutionDTO> responseConsumer) {
289-
mockServer.expect(ExpectedCount.max(2), requestTo(pipelinesApiURL + "/programming-exercise-chat/run?event=progress_stalled")).andExpect(method(HttpMethod.POST))
290-
.andRespond(request -> {
291-
var mockRequest = (MockClientHttpRequest) request;
292-
var dto = mapper.readValue(mockRequest.getBodyAsString(), PyrisCourseChatPipelineExecutionDTO.class);
293-
responseConsumer.accept(dto);
294-
return MockRestResponseCreators.withRawStatus(HttpStatus.ACCEPTED.value()).createResponse(request);
295-
});
187+
mockPostRequest("/programming-exercise-chat/run?event=progress_stalled", PyrisCourseChatPipelineExecutionDTO.class, responseConsumer, ExpectedCount.max(2));
296188
}
297189

298190
public void mockJolEventRunResponse(Consumer<PyrisCourseChatPipelineExecutionDTO> responseConsumer) {
299-
mockServer.expect(ExpectedCount.once(), requestTo(pipelinesApiURL + "/course-chat/run?event=jol")).andExpect(method(HttpMethod.POST)).andRespond(request -> {
300-
var mockRequest = (MockClientHttpRequest) request;
301-
var dto = mapper.readValue(mockRequest.getBodyAsString(), PyrisCourseChatPipelineExecutionDTO.class);
302-
responseConsumer.accept(dto);
303-
return MockRestResponseCreators.withRawStatus(HttpStatus.ACCEPTED.value()).createResponse(request);
304-
});
191+
mockPostRequest("/course-chat/run?event=jol", PyrisCourseChatPipelineExecutionDTO.class, responseConsumer);
305192
}
306193

307194
public void mockRunError(int httpStatus) {
308-
// @formatter:off
309-
mockServer
310-
.expect(ExpectedCount.once(), requestTo(pipelinesApiURL + "/programming-exercise-chat/run"))
311-
.andExpect(method(HttpMethod.POST))
312-
.andRespond(withStatus(HttpStatus.valueOf(httpStatus)));
313-
// @formatter:on
195+
mockPostError(pipelinesApiURL.toString(), "/programming-exercise-chat/run", httpStatus);
314196
}
315197

316198
public void mockIngestionWebhookRunError(int httpStatus) {
317-
// @formatter:off
318-
mockServer
319-
.expect(ExpectedCount.once(), requestTo(webhooksApiURL + "/lectures/ingest"))
320-
.andExpect(method(HttpMethod.POST))
321-
.andRespond(withStatus(HttpStatus.valueOf(httpStatus)));
322-
// @formatter:on
199+
mockPostError(webhooksApiURL.toString(), "/lectures/ingest", httpStatus);
323200
}
324201

325202
public void mockDeletionWebhookRunError(int httpStatus) {
326-
// @formatter:off
327-
mockServer
328-
.expect(ExpectedCount.once(), requestTo(webhooksApiURL + "/lectures/delete"))
329-
.andExpect(method(HttpMethod.POST))
330-
.andRespond(withStatus(HttpStatus.valueOf(httpStatus)));
331-
// @formatter:on
203+
mockPostError(webhooksApiURL.toString(), "/lectures/delete", httpStatus);
332204
}
333205

334206
public void mockVariantsResponse(IrisSubSettingsType feature) throws JsonProcessingException {
@@ -358,6 +230,32 @@ public void mockStatusResponses() throws JsonProcessingException {
358230
// @formatter:on
359231
}
360232

233+
private void mockPostError(String baseUrl, String path, int httpStatus) {
234+
mockServer.expect(ExpectedCount.once(), requestTo(baseUrl + path)).andExpect(method(HttpMethod.POST)).andRespond(withStatus(HttpStatus.valueOf(httpStatus)));
235+
}
236+
237+
private <T> void mockPostRequest(String path, Class<T> dtoClass, Consumer<T> responseConsumer) {
238+
mockPostRequest(path, dtoClass, responseConsumer, ExpectedCount.once());
239+
}
240+
241+
private <T> void mockPostRequest(String path, Class<T> dtoClass, Consumer<T> responseConsumer, ExpectedCount count) {
242+
mockServer.expect(count, requestTo(pipelinesApiURL + path)).andExpect(method(HttpMethod.POST)).andRespond(request -> {
243+
var mockRequest = (MockClientHttpRequest) request;
244+
var dto = mapper.readValue(mockRequest.getBodyAsString(), dtoClass);
245+
responseConsumer.accept(dto);
246+
return MockRestResponseCreators.withRawStatus(HttpStatus.ACCEPTED.value()).createResponse(request);
247+
});
248+
}
249+
250+
private <T> void mockWebhookPost(String path, Class<T> dtoClass, Consumer<T> responseConsumer) {
251+
mockServer.expect(ExpectedCount.once(), requestTo(webhooksApiURL + path)).andExpect(method(HttpMethod.POST)).andRespond(request -> {
252+
var mockRequest = (MockClientHttpRequest) request;
253+
var dto = mapper.readValue(mockRequest.getBodyAsString(), dtoClass);
254+
responseConsumer.accept(dto);
255+
return MockRestResponseCreators.withRawStatus(HttpStatus.ACCEPTED.value()).createResponse(request);
256+
});
257+
}
258+
361259
/**
362260
* Mocks a get model error from the Pyris models endpoint
363261
*/

0 commit comments

Comments
 (0)