示例#1
0
    def test_remove_dangling_basket_variables_study_specific(self):
        """Can we clean up BasketVariables belonging to a specific study?"""
        other_study = StudyFactory(name="a_different_study")
        dataset = DatasetFactory(name="a_different_study")
        dataset.study = other_study
        dataset.save()
        new_variable = Variable()
        new_variable.name = "a_different_variable"
        new_variable.dataset = dataset
        basket_variable = BasketVariable(basket_id=self.basket.id,
                                         variable_id=self.variable.id)
        new_basket = Basket()
        new_basket.study = other_study
        new_basket.user = self.basket.user
        new_basket.save()
        new_basket_variable = BasketVariable()
        new_basket_variable.variable = new_variable
        new_basket_variable.basket = new_basket
        new_basket_variable.save()

        basket_variable.save()
        variable_id = basket_variable.variable.id
        basket_variable.variable.delete()
        new_variable.delete()
        basket_variable.clean_basket_variables(
            study_name=self.basket.study.name)
        with self.assertRaises(BasketVariable.DoesNotExist):
            BasketVariable.objects.get(variable__id=variable_id)
示例#2
0
    def test_variable_import_without_concept_csv(self):

        csv_path = Study().import_path()
        concept_path = csv_path.joinpath("concepts.csv")

        os.remove(concept_path)

        some_dataset = DatasetFactory(name="some-dataset")
        some_dataset.save()
        TEST_CASE.assertIsNone(
            StudyImportManager(study=some_dataset.study).fix_concepts_csv())
        TEST_CASE.assertFalse(concept_path.exists())
示例#3
0
 def test_variable_import(self):
     some_dataset = DatasetFactory(name="some-dataset")
     some_dataset.save()
     ConceptFactory(name="some-concept").save()
     ConceptFactory(name="orphaned-concept").save()
     variable_path = Path(
         "tests/functional/test_data/some-study/ddionrails/variables.csv")
     variable_path = variable_path.absolute()
     VariableImport.run_import(variable_path, study=some_dataset.study)
     with open(variable_path, "r", encoding="utf8") as csv_file:
         variable_names = {row["name"] for row in csv.DictReader(csv_file)}
     result = Variable.objects.filter(name__in=list(variable_names))
     TEST_CASE.assertNotEqual(0, len(result))
     TEST_CASE.assertEqual(len(variable_names), len(result))
示例#4
0
    def test_variable_import_with_orphaned_concept(self):

        csv_path = Study().import_path()
        concept_path = csv_path.joinpath("concepts.csv")

        some_dataset = DatasetFactory(name="some-dataset")
        some_dataset.save()
        StudyImportManager(study=some_dataset.study).fix_concepts_csv()
        ConceptFactory(name="some-concept").save()
        variable_path = csv_path.joinpath("variables.csv")
        variable_path = variable_path.absolute()
        ConceptImport(concept_path).run_import(filename=concept_path)
        VariableImport.run_import(variable_path, study=some_dataset.study)

        with open(variable_path, "r", encoding="utf8") as csv_file:
            variable_names = {row["name"] for row in csv.DictReader(csv_file)}
        result = Variable.objects.filter(name__in=list(variable_names))
        TEST_CASE.assertNotEqual(0, len(result))
        TEST_CASE.assertEqual(len(variable_names), len(result))
示例#5
0
    def test_query_parameter_study(self):
        """Define study parameter behavior."""
        dataset = DatasetFactory(name="different-dataset")
        study = StudyFactory(name="different-study")
        study_name = study.name
        dataset.study = study
        dataset.save()
        variable_list = []

        for number in range(1, 11):
            _variable = VariableFactory(name=str(number))
            _variable.dataset = dataset
            _variable.save()
            variable_list.append(_variable)

        for number in range(11, 21):
            _variable = VariableFactory(name=str(number))
            variable_list.append(_variable)

        response = self.client.get(self.API_PATH + f"?study={study_name}")
        content = json.loads(response.content)
        self.assertEqual(10, len(content))