outcome-switch / test /test_ctgov.py
Mathieu Lai-King
first commit
1a3b3aa
import unittest
from outcome_switch.ctgov import find_nctid, get_registry_outcomes, reformat_outcomes
_EMPTY_STRING = ""
# NCT REGEX extraction tests
_TEXT_WITH_ONE_NCT = """blablabla nct id is NCT04647656 blabla"""
_TEXT_WITH_TWO_NCT = """blablabla nct id is NCT04647656 blabla NCT06562582 bla"""
_TEXT_WITHOUT_NCT = "blablabla blablabla"
# NCT REGISTRY API tests
_CORRECT_NCT = "NCT04647656"
_INCORRECT_NCT = "PRN03216548"
# REGISTRY outcomes reformatting test
_CTGOV_OUTCOMES = {
"primaryOutcomes": [
{
"measure": "Cognitive health assessment (NeuroTrax)",
"description": "Memory, attention and information process will be evaluated using the NeuroTrax computerized cognitive evaluation battery.",
"timeFrame": "Baseline, 2 months",
}
],
"secondaryOutcomes": [
{
"measure": "Brain perfusion",
"description": "Cerebral blood volume and flow will be measured using perfusion MRI protocol Dynamic susceptibility contrast (DSC).",
"timeFrame": "Baseline, 2 months",
}
],
}
class NctidFinderTest(unittest.TestCase) :
def test_text_with_one_nct(self):
self.assertEqual(find_nctid(_TEXT_WITH_ONE_NCT), "NCT04647656")
def test_text_with_two_nct(self):
self.assertEqual(find_nctid(_TEXT_WITH_TWO_NCT), "NCT04647656")
def test_text_without_nct(self):
self.assertIsNone(find_nctid(_TEXT_WITHOUT_NCT))
def test_empty_string(self):
self.assertIsNone(find_nctid(_EMPTY_STRING))
def test_none_input(self):
self.assertIsNone(find_nctid(None))
class CtgovExtractionTest(unittest.TestCase) :
def test_correct_nct(self):
self.assertIsNotNone(get_registry_outcomes(_CORRECT_NCT))
def test_incorrect_nct(self):
self.assertIsNone(get_registry_outcomes(_INCORRECT_NCT))
def test_empty_string(self):
self.assertIsNone(get_registry_outcomes(_EMPTY_STRING))
class CtgovReformatTest(unittest.TestCase) :
def test_correct_reformat_outcomes(self):
self.assertIsInstance(reformat_outcomes(_CTGOV_OUTCOMES), list)
self.assertEqual(len(reformat_outcomes(_CTGOV_OUTCOMES)), 2)
self.assertIsInstance(reformat_outcomes(_CTGOV_OUTCOMES)[0], dict)
self.assertIsInstance(reformat_outcomes(_CTGOV_OUTCOMES)[1], dict)
self.assertEqual(reformat_outcomes(_CTGOV_OUTCOMES)[0]["type"], "primary")
self.assertEqual(reformat_outcomes(_CTGOV_OUTCOMES)[1]["type"], "secondary")