def test_filters_by_project_type(self): project1 = ProjectFactory.create() project2 = ProjectFactory.create() exp1 = ExperimentFactory.create(projects=[project1]) ExperimentFactory.create(projects=[project2]) data = {"projects": project1.id} filter = ExperimentFilterset(data=data, queryset=Experiment.objects.all()) self.assertTrue(filter.is_valid()) self.assertCountEqual(filter.qs, [exp1]) self.assertEqual(filter.get_project_display_value(), project1)
def test_filters_by_multiple_types(self): pref = ExperimentFactory.create(type=Experiment.TYPE_PREF) addon = ExperimentFactory.create(type=Experiment.TYPE_ADDON) ExperimentFactory.create(type=Experiment.TYPE_GENERIC) filter = ExperimentFilterset( data=QueryDict( urlencode( {"type": [Experiment.TYPE_PREF, Experiment.TYPE_ADDON]}, True)), queryset=Experiment.objects.all(), ) self.assertTrue(filter.is_valid()) self.assertEqual(set(filter.qs), set([pref, addon])) self.assertEqual(filter.get_type_display_value(), "Pref-Flip, Add-On")
def test_filters_by_no_project_type(self): project1 = ProjectFactory.create() exp1 = ExperimentFactory.create(projects=[]) ExperimentFactory.create(projects=[project1]) ExperimentFactory.create(projects=[project1]) data = QueryDict("projects=null") filter = ExperimentFilterset(data=data, queryset=Experiment.objects.all()) self.assertTrue(filter.is_valid()) self.assertCountEqual(filter.qs, [exp1]) display_value = filter.get_project_display_value() self.assertEqual("No Projects", display_value)
def test_filters_by_multiple_project_type(self): project1 = ProjectFactory.create() project2 = ProjectFactory.create() project3 = ProjectFactory.create() exp1 = ExperimentFactory.create(projects=[project1, project2]) exp2 = ExperimentFactory.create(projects=[project2]) ExperimentFactory.create(projects=[project3]) data = QueryDict(f"projects={project1.id}&projects={project2.id}") filter = ExperimentFilterset(data=data, queryset=Experiment.objects.all()) self.assertTrue(filter.is_valid()) self.assertCountEqual(filter.qs, [exp1, exp2]) display_value = filter.get_project_display_value() self.assertIn(project1.name, display_value) self.assertIn(project2.name, display_value)
def test_filter_by_analysis_owner_invalid_for_non_analysis_owner(self): user = UserFactory.create() filter = ExperimentFilterset(data={"analysis_owner": user.id}) self.assertFalse(filter.is_valid())