diff --git a/datacapture/src/test/java/com/google/android/fhir/datacapture/validation/QuestionnaireResponseItemValidatorTest.kt b/datacapture/src/test/java/com/google/android/fhir/datacapture/validation/QuestionnaireResponseItemValidatorTest.kt index ac5759d8ce..3469e812ff 100644 --- a/datacapture/src/test/java/com/google/android/fhir/datacapture/validation/QuestionnaireResponseItemValidatorTest.kt +++ b/datacapture/src/test/java/com/google/android/fhir/datacapture/validation/QuestionnaireResponseItemValidatorTest.kt @@ -1,5 +1,5 @@ /* - * Copyright 2022 Google LLC + * Copyright 2022-2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,11 +19,13 @@ package com.google.android.fhir.datacapture.validation import android.content.Context import android.os.Build import androidx.test.core.app.ApplicationProvider +import com.google.android.fhir.datacapture.fhirpath.ExpressionEvaluator import com.google.common.truth.Truth.assertThat import org.hl7.fhir.r4.model.Extension import org.hl7.fhir.r4.model.IntegerType import org.hl7.fhir.r4.model.Questionnaire import org.hl7.fhir.r4.model.QuestionnaireResponse +import org.hl7.fhir.r4.model.QuestionnaireResponse.QuestionnaireResponseItemComponent import org.hl7.fhir.r4.model.StringType import org.junit.Before import org.junit.Test @@ -50,30 +52,49 @@ class QuestionnaireResponseItemValidatorTest { Extension().apply { url = MIN_VALUE_EXTENSION_URL this.setValue(IntegerType(250)) - } + }, ) addExtension( Extension().apply { url = MAX_VALUE_EXTENSION_URL this.setValue(IntegerType(300)) - } + }, ) addExtension( Extension().apply { url = REGEX_EXTENSION_URL this.setValue(StringType("[0-9]+")) - } + }, ) } val answers = listOf( QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent().apply { value = IntegerType(275) - } + }, + ) + val questionnaire = Questionnaire().apply { addItem(questionnaireItem) } + val questionnaireResponse = + QuestionnaireResponse().apply { + addItem( + QuestionnaireResponseItemComponent().apply { answer = answers }, + ) + } + val expressionEvaluator = + ExpressionEvaluator( + questionnaire, + questionnaireResponse, ) val validationResult = - QuestionnaireResponseItemValidator.validate(questionnaireItem, answers, context) + QuestionnaireResponseItemValidator.validate( + questionnaire.item.first(), + questionnaireResponse.item.first().answer, + questionnaireResponse, + questionnaireResponse.item.first(), + context, + expressionEvaluator, + ) assertThat(validationResult).isEqualTo(Valid) } @@ -88,13 +109,13 @@ class QuestionnaireResponseItemValidatorTest { Extension().apply { url = MIN_VALUE_EXTENSION_URL this.setValue(IntegerType(100)) - } + }, ) addExtension( Extension().apply { url = MAX_VALUE_EXTENSION_URL this.setValue(IntegerType(200)) - } + }, ) } val answers = @@ -109,9 +130,28 @@ class QuestionnaireResponseItemValidatorTest { value = IntegerType(250) }, ) + val questionnaire = Questionnaire().apply { addItem(questionnaireItem) } + val questionnaireResponse = + QuestionnaireResponse().apply { + addItem( + QuestionnaireResponseItemComponent().apply { answer = answers }, + ) + } + val expressionEvaluator = + ExpressionEvaluator( + questionnaire, + questionnaireResponse, + ) val validationResult = - QuestionnaireResponseItemValidator.validate(questionnaireItem, answers, context) + QuestionnaireResponseItemValidator.validate( + questionnaire.item.first(), + questionnaireResponse.item.first().answer, + questionnaireResponse, + questionnaireResponse.item.first(), + context, + expressionEvaluator, + ) assertThat(validationResult).isInstanceOf(Invalid::class.java) val invalidValidationResult = validationResult as Invalid @@ -127,9 +167,29 @@ class QuestionnaireResponseItemValidatorTest { required = true } val answers = listOf() + val questionnaire = Questionnaire().apply { addItem(questionnaireItem) } + val questionnaireResponse = + QuestionnaireResponse().apply { + addItem( + QuestionnaireResponseItemComponent().apply { answer = answers }, + ) + } + + val expressionEvaluator = + ExpressionEvaluator( + questionnaire, + questionnaireResponse, + ) val validationResult = - QuestionnaireResponseItemValidator.validate(questionnaireItem, answers, context) + QuestionnaireResponseItemValidator.validate( + questionnaire.item.first(), + questionnaireResponse.item.first().answer, + questionnaireResponse, + questionnaireResponse.item.first(), + context, + expressionEvaluator, + ) assertThat(validationResult).isInstanceOf(Invalid::class.java) val invalidValidationResult = validationResult as Invalid