From 69e3a59a568a88d51d49e71773cd3eb09f333013 Mon Sep 17 00:00:00 2001 From: Basilio Bogado <541149+basiliskus@users.noreply.github.com> Date: Wed, 20 Mar 2024 16:08:07 -0700 Subject: [PATCH] Updates to tests --- .../etor/ruleengine/ValidationRuleTest.groovy | 76 ++++++++++++------- 1 file changed, 47 insertions(+), 29 deletions(-) diff --git a/etor/src/test/groovy/gov/hhs/cdc/trustedintermediary/etor/ruleengine/ValidationRuleTest.groovy b/etor/src/test/groovy/gov/hhs/cdc/trustedintermediary/etor/ruleengine/ValidationRuleTest.groovy index c49289a36..b2ec4459d 100644 --- a/etor/src/test/groovy/gov/hhs/cdc/trustedintermediary/etor/ruleengine/ValidationRuleTest.groovy +++ b/etor/src/test/groovy/gov/hhs/cdc/trustedintermediary/etor/ruleengine/ValidationRuleTest.groovy @@ -4,15 +4,19 @@ import gov.hhs.cdc.trustedintermediary.context.TestApplicationContext import gov.hhs.cdc.trustedintermediary.external.hapi.HapiFhirImplementation import gov.hhs.cdc.trustedintermediary.wrappers.HapiFhir import gov.hhs.cdc.trustedintermediary.wrappers.Logger +import org.hl7.fhir.instance.model.api.IBaseResource import org.hl7.fhir.r4.model.Bundle import spock.lang.Specification class ValidationRuleTest extends Specification { + def mockLogger = Mock(Logger) + def setup() { TestApplicationContext.reset() TestApplicationContext.init() - TestApplicationContext.register(Logger, Mock(Logger)) + TestApplicationContext.register(HapiFhir, Mock(HapiFhirImplementation)) + TestApplicationContext.register(Logger, mockLogger) TestApplicationContext.injectRegisteredImplementations() } @@ -38,23 +42,46 @@ class ValidationRuleTest extends Specification { def "appliesTo returns expected boolean depending on conditions"() { given: def trueCondition = "trueCondition" - def fhirResource = new Bundle() - def validationRule = new ValidationRule(null, null, null, [ + IBaseResource fhirResource = new Bundle() + + def mockFhir = Mock(HapiFhir) + mockFhir.evaluateCondition(fhirResource, trueCondition) >> true + mockFhir.evaluateCondition(fhirResource, secondCondition) >> conditionResult + TestApplicationContext.register(HapiFhir, mockFhir) + TestApplicationContext.injectRegisteredImplementations() + + def rule = new ValidationRule(null, null, null, [ trueCondition, secondCondition ], null) - TestApplicationContext.register(ValidationRule, validationRule) + expect: + rule.appliesTo(fhirResource) == applies + + where: + secondCondition | conditionResult | applies + "secondCondition" | true | true + "secondCondition" | false | false + } + + def "appliesTo returns expected boolean depending on conditions"() { + given: + def trueCondition = "trueCondition" + IBaseResource fhirResource = new Bundle() def mockFhir = Mock(HapiFhirImplementation) - mockFhir.evaluateCondition(fhirResource, trueCondition) >> true - mockFhir.evaluateCondition(fhirResource, secondCondition) >> conditionResult + mockFhir.evaluateCondition(_ as IBaseResource, trueCondition) >> true + mockFhir.evaluateCondition(_ as IBaseResource, secondCondition) >> conditionResult TestApplicationContext.register(HapiFhir, mockFhir) - TestApplicationContext.injectRegisteredImplementations() + def rule = new ValidationRule(null, null, null, [ + trueCondition, + secondCondition + ], null) + expect: - validationRule.appliesTo(fhirResource) == applies + rule.appliesTo(fhirResource) == applies where: secondCondition | conditionResult | applies @@ -65,20 +92,16 @@ class ValidationRuleTest extends Specification { def "appliesTo logs an error and returns false if an exception happens when evaluating a condition"() { given: def fhirResource = new Bundle() - def validationRule = new ValidationRule(null, null, null, ["condition"], null) - TestApplicationContext.register(ValidationRule, validationRule) def mockFhir = Mock(HapiFhirImplementation) mockFhir.evaluateCondition(fhirResource, "condition") >> { throw new Exception() } TestApplicationContext.register(HapiFhir, mockFhir) - - def mockLogger = Mock(Logger) - TestApplicationContext.register(Logger, mockLogger) - TestApplicationContext.injectRegisteredImplementations() + def rule = new ValidationRule(null, null, null, ["condition"], null) + when: - def applies = validationRule.appliesTo(fhirResource) + def applies = rule.appliesTo(fhirResource) then: 1 * mockLogger.logError(_ as String, _ as Exception) @@ -89,21 +112,20 @@ class ValidationRuleTest extends Specification { given: def trueValidation = "trueValidation" def fhirResource = new Bundle() - def validationRule = new ValidationRule(null, null, null, null, [ - trueValidation, - secondValidation - ]) - TestApplicationContext.register(ValidationRule, validationRule) def mockFhir = Mock(HapiFhirImplementation) mockFhir.evaluateCondition(fhirResource, trueValidation) >> true mockFhir.evaluateCondition(fhirResource, secondValidation) >> validationResult TestApplicationContext.register(HapiFhir, mockFhir) - TestApplicationContext.injectRegisteredImplementations() + def rule = new ValidationRule(null, null, null, null, [ + trueValidation, + secondValidation + ]) + expect: - validationRule.isValid(fhirResource) == valid + rule.isValid(fhirResource) == valid where: secondValidation | validationResult | valid @@ -114,20 +136,16 @@ class ValidationRuleTest extends Specification { def "isValid logs an error and returns false if an exception happens when evaluating a validation"() { given: def fhirResource = new Bundle() - def validationRule = new ValidationRule(null, null, null, null, ["validation"]) - TestApplicationContext.register(ValidationRule, validationRule) def mockFhir = Mock(HapiFhirImplementation) mockFhir.evaluateCondition(fhirResource, "condition") >> { throw new Exception() } TestApplicationContext.register(HapiFhir, mockFhir) - - def mockLogger = Mock(Logger) - TestApplicationContext.register(Logger, mockLogger) - TestApplicationContext.injectRegisteredImplementations() + def rule = new ValidationRule(null, null, null, null, ["validation"]) + when: - def valid = validationRule.isValid(fhirResource) + def valid = rule.isValid(fhirResource) then: 1 * mockLogger.logError(_ as String, _ as Exception)