Skip to content

Commit

Permalink
Unit test
Browse files Browse the repository at this point in the history
  • Loading branch information
FikriMilano committed Sep 27, 2023
1 parent 386b26d commit 7abd642
Showing 1 changed file with 70 additions and 10 deletions.
Original file line number Diff line number Diff line change
@@ -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.
Expand All @@ -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
Expand All @@ -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)
}
Expand All @@ -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 =
Expand All @@ -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
Expand All @@ -127,9 +167,29 @@ class QuestionnaireResponseItemValidatorTest {
required = true
}
val answers = listOf<QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent>()
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
Expand Down

0 comments on commit 7abd642

Please sign in to comment.