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 ответов

17 просмотров

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

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

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

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

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

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Эх кто-то пришел и весь праздник испортил :( You need complex FBX scene importing setup to change things on import? good luck with that. You need navigation and pathfinding? g...
Serg Gini
3
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Почему стало ломаться на D11? "739002.86400000' is not a valid timestamp" function IncDateTime(aStamp:TTimeStamp;aKind:TTriggerKind;aInterval:Integer):TDateTime; //aStamp = 2...
Катерина Свиридова
8
Привет всем. Подскажите где можно посмотреть, какая версия электрон, поддерживает версии windows? Некий changelog. Мне бы желательно, поддержку 7,8,10... latest, как понимаю и...
Anonym Squad
21
думаешь я не смогу также сделать? мне это просто не удобно
int 💳 𝙖𝙞𝙧 𝙗𝙞𝙜 𝙗𝙤𝙗 🔫 check bio / spam block / AFK / nohello.com / GMT+3
9
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Ребят, чет я уже не догоняю... Крч в коде на асм там происходит нечто вроде a+число (a+1, a+2 и т.д.). Но почему строка lea ecx, [edx+1] работает как a+1?? В edx берется адрес...
Alan 🔝 Бэброу
3
Есть ли смысл устраиваться на 1с ? Даст это плюс в дальнейшем трудоустройстве на php? Просто у меня в городе вакансий на пхп нету. Или лучше удаленно искать. Опыта работы нету...
Azamat
14
hi im a cs student. i need some advice from people who have enough experience in Embedded Software. I need to know whether this profession is suitable for me. I have watched s...
Sahand 🏔️
8
Карта сайта