169 похожих чатов

Написал метод который возвращает ДТОшку override fun getSurveyUsers(surveyId: Long):

SurveyUsersDto {
val completedUserDto = mapToDto(surveyCompleteStatusRepository.findCompletedUsers(surveyId))
val notCompletedUserDto = mapToDto(surveyCompleteStatusRepository.findNotCompletedUsers(surveyId))
return SurveyUsersDto(
surveyId = surveyId,
isCompleted = completedUserDto,
isNotCompleted = notCompletedUserDto
)
}

этот просто мапит

private fun mapToDto(completedUsers: List<SurveyCompleteStatusDo>): List<SurveyUserDto> {
val userIdList = completedUsers.mapNotNull { it.userProfileId }
val userLoginList = userIdList.mapNotNull { userId ->
userProfileRepository.findById(userId)?.login
}
val completedUserDto = userIdList.zip(userLoginList).map { (userId, userLogin) ->
SurveyUserDto(
userProfileId = userId,
userLogin = userLogin
)
}
return completedUserDto
}

на выходе получем такую шляпу:

@Schema(description = "DTO с информацией о пользователе, прошедшем или не прошедшем опрос")
data class SurveyUserDto(
@Schema(description = "Идентификатор пользователя")
var userProfileId: Long? = null,

@Schema(description = "Логин пользователя")
var userLogin: String? = null
)

data class SurveyUsersDto(
@Schema(description = "Идентификатор опроса")
@JsonProperty("surveyId")
var surveyId: Long? = null,

@Schema(description = "Список пользователей, прошедших опрос")
@JsonProperty("isCompleted")
var isCompleted: List<SurveyUserDto>? = null,

@Schema(description = "Список пользователей, не прошедших опрос")
@JsonProperty("isNotCompleted")
var isNotCompleted: List<SurveyUserDto>? = null
)


т.е финальный жысон имеет вид
surveyId
isCompleted : список
isNotCompleted: список

но по итогу имеем : что в свагере отображается лишь surveyId

а поля завершено или нет - не отображаются

написан тест (сотв-но он тоже падает с ошибкой java.lang.AssertionError: No value at JSON path "$.isCompleted[0].userProfileId"):

@Test
fun testGetSurveyUsers() {
val surveyAdminService = Mockito.mock(SurveyAdminService::class.java)

val completedUserDto = SurveyUserDto(userProfileId = 1L, userLogin = "user1")
val notCompletedUserDto = SurveyUserDto(userProfileId = 2L, userLogin = "user2")

val surveyUsersDto = SurveyUsersDto(
surveyId = 1L,
isCompleted = listOf(completedUserDto),
isNotCompleted = listOf(notCompletedUserDto)
)

Mockito.`when`(surveyAdminService.getSurveyUsers(1L)).thenReturn(surveyUsersDto)
val surveyAdminController = SurveyAdminController(surveyAdminService)

val mockMvc: MockMvc = MockMvcBuilders.standaloneSetup(surveyAdminController).build()
val token = Tokens.USER

mockMvc.perform(
MockMvcRequestBuilders.get("/ns/survey/users/1")
.contentType(MediaType.APPLICATION_JSON)
.headers(token.getAuthorisationHeaders())
)
.andExpect(MockMvcResultMatchers.status().isOk)
.andExpect(MockMvcResultMatchers.jsonPath("$.surveyId").exists())
.andExpect(MockMvcResultMatchers.jsonPath("$.isCompleted[0].userProfileId").exists())
.andExpect(MockMvcResultMatchers.jsonPath("$.isCompleted[0].userLogin").exists())
.andExpect(MockMvcResultMatchers.jsonPath("$.isNotCompleted[0].userProfileId").exists())
.andExpect(MockMvcResultMatchers.jsonPath("$.isNotCompleted[0].userLogin").exists())
}

вопрос: пасаны куда копать??? уже аноташки JsonProperty перепробовал...такое ощущение что что-то не так с парсингом в жысон, вернее там оно и есть ... но как поправить

при этом если просто вывести обьект дтошки в консольку - он нормально отображается, а если ехать дальше через контроллер - там уже куй

3 ответов

57 просмотров

На пастбин лучше

Kirill-Gorkiy Автор вопроса

да и вообще урл на получение как бы одного пользователя, а возвращаешь ты userSDto, и проверяешь есть ли поле, в userDto, когда на самом деле у тебя в userSDto лежат листы

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта