Как я могу проверить метод getStudyStats, используя спок фреймворк? Нужно ли мне издеваться над данными StudyDetails? - PullRequest
0 голосов
/ 04 февраля 2020

В следующем коде мне нужно протестировать метод getStudyStats с использованием фреймворка Spock, но когда я передам ему только размер страницы и номер страницы, будет ошибка «1002 *.

package org.novartis.signal.dataservice.service

import org.novartis.signal.dataservice.model.entity.MVRDetails
import org.novartis.signal.dataservice.model.entity.StudyDetails
import org.novartis.signal.dataservice.model.report.StudyStatistic
import org.novartis.signal.dataservice.model.report.StudyStatisticReport
import org.novartis.signal.dataservice.repository.StudyDetailsRepo
import org.springframework.data.domain.Page
import org.springframework.data.domain.PageRequest
import org.springframework.stereotype.Service
import java.util.function.ToDoubleFunction

@Service
class StudyDetailsService(private val studyDetailsRepo: StudyDetailsRepo) {

  fun getStudyDetails(): MutableList<StudyDetails> {
    return studyDetailsRepo.findAll()
  }

  fun getStudyStats(pageNo: Int, pageSize: Int): StudyStatisticReport {
    val studyPaging = PageRequest.of(pageNo, pageSize)
    val studyDetails: Page<StudyDetails> = studyDetailsRepo.findAll(studyPaging)
    return buildStudyStats(studyDetails.content, studyDetails.totalElements)
  }

  private fun buildStudyStats(paginatedStudyDetails: List<StudyDetails>, totalElement: Long): StudyStatisticReport {
    val studyStatistics = mutableListOf<StudyStatistic>()
    for (study in paginatedStudyDetails) {
      val studyStat = StudyStatistic(
        study.studyCodeAlias,
        getTotalSignals(study.mvrDetails),
        study.mvrDetails.size,
        study.siteDetails.size
      )
      studyStatistics.add(studyStat)
    }
    return StudyStatisticReport(studyStatistics, totalElement)
  }

  private fun getTotalSignals(mvrDetails: List<MVRDetails>): Double =
    mvrDetails.stream()
      .mapToDouble(ToDoubleFunction { mvrDetail -> mvrDetail.noOfCM + mvrDetail.noOfPUI })
      .sum();
}
».
...