in intellij-plugin/educational-core/testSrc/com/jetbrains/edu/learning/marketplace/MarketplaceSubmissionsTest.kt [273:343]
fun configureSubmissionsResponses(
submissionsLists: List<String> = listOf(loadSubmissionsData),
statesOnCloseList: List<String> = emptyList(),
solutionsKeyTextMap: Map<String, String> = emptyMap(),
submissionsDeleteRequestSuccess: Boolean = false,
reportSolutionRequestSuccess: Boolean = false,
) {
mockkConstructor(Retrofit::class)
val service = mockk<SubmissionsService>()
every {
anyConstructed<Retrofit>().create(SubmissionsService::class.java)
} returns service
val mapper = MarketplaceSubmissionsConnector.getInstance().objectMapper
for (i in submissionsLists.indices) {
val getAllSubmissionsPageableCall = mockk<Call<MarketplaceSubmissionsList>>()
every { service.getAllSubmissionsForCourse(any(), i + 1) } returns getAllSubmissionsPageableCall
val getAllSubmissionsPageableResponse = mapper.treeToValue(mapper.readTree(submissionsLists[i]), MarketplaceSubmissionsList::class.java)
every { getAllSubmissionsPageableCall.execute() } returns Response.success(getAllSubmissionsPageableResponse)
}
for (i in statesOnCloseList.indices) {
val getAllStatesPageableCall = mockk<Call<MarketplaceStateOnCloseList>>()
every { service.getStateOnClose(any(), i + 1) } returns getAllStatesPageableCall
val getAllStatesPageableResponse = mapper.treeToValue(mapper.readTree(statesOnCloseList[i]), MarketplaceStateOnCloseList::class.java)
every { getAllStatesPageableCall.execute() } returns Response.success(getAllStatesPageableResponse)
}
val deleteSubmissionsCall = mockk<Call<ResponseBody>>()
every { service.deleteAllSubmissions() } returns deleteSubmissionsCall
every { service.deleteAllSubmissions(any()) } returns deleteSubmissionsCall
val responseCode = if (submissionsDeleteRequestSuccess) HttpURLConnection.HTTP_NO_CONTENT else HttpURLConnection.HTTP_RESET
every { deleteSubmissionsCall.execute() } answers {
Response.success(responseCode, "empty response body".toResponseBody())
}
val postSubmissionCall = mockk<Call<MarketplaceSubmission>>()
every { service.postSubmission(any(), any(), any(), any()) } returns postSubmissionCall
val postSubmissionResponse = mapper.treeToValue(mapper.readTree(postSubmissionData), MarketplaceSubmission::class.java)
every { postSubmissionCall.execute() } answers {
Response.success(postSubmissionResponse)
}
val reportSolutionCall = mockk<Call<ResponseBody>>()
every { service.reportSolution(any()) } returns reportSolutionCall
val reportCommunityResponse = if (reportSolutionRequestSuccess) {
Response.success(HttpURLConnection.HTTP_NO_CONTENT, "mock report response body".toResponseBody())
}
else {
Response.error(HttpURLConnection.HTTP_NOT_FOUND, "mock report response body".toResponseBody())
}
every { reportSolutionCall.execute() } returns reportCommunityResponse
if (solutionsKeyTextMap.isNotEmpty()) {
mockkObject(MarketplaceSubmissionsConnector)
for (key in solutionsKeyTextMap.keys) {
val downloadLink = "downloadLink/key=$key"
val getSolutionLinkCall = mockk<Call<ResponseBody>>()
every { service.getSolutionDownloadLink(key) } returns getSolutionLinkCall
every { getSolutionLinkCall.execute() } returns Response.success(
downloadLink.toResponseBody("application/json; charset=UTF-8".toMediaType())
)
every {
MarketplaceSubmissionsConnector.loadSolutionByLink(downloadLink)
} returns solutionsKeyTextMap.getOrDefault(key, "no solution present for $key")
}
}
}