From 7fe62ff135c710626fe6c5915635fc1fe30c9a7e Mon Sep 17 00:00:00 2001 From: Matthew Richards Date: Wed, 11 Nov 2020 20:17:37 +0000 Subject: [PATCH] #150: Add tests for ICAT include filters --- test/icat/filters/test_include_filter.py | 47 ++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 test/icat/filters/test_include_filter.py diff --git a/test/icat/filters/test_include_filter.py b/test/icat/filters/test_include_filter.py new file mode 100644 index 00000000..505c61dc --- /dev/null +++ b/test/icat/filters/test_include_filter.py @@ -0,0 +1,47 @@ +import pytest + +from datagateway_api.common.icat.filters import PythonICATIncludeFilter + + +class TestICATIncludeFilter: + @pytest.mark.parametrize( + "filter_input, expected_output", + [ + pytest.param("investigationUsers", {"investigationUsers"}, id="string"), + pytest.param( + {"investigationUsers": "user"}, + {"investigationUsers.user"}, + id="dictionary", + ), + pytest.param( + {"datasets": ["datafiles", "sample"]}, + {"datasets.datafiles", "datasets.sample"}, + id="dictionary with list", + ), + pytest.param( + {"datasets": {"datafiles": "datafileFormat"}}, + {"datasets.datafiles.datafileFormat"}, + id="nested dictionary", + ), + pytest.param( + ["studyInvestigations", "datasets", "facility"], + {"studyInvestigations", "datasets", "facility"}, + id="list of strings", + ), + pytest.param( + [{"investigationUsers": "user"}, {"datasets": "datafiles"}], + {"investigationUsers.user", "datasets.datafiles"}, + id="list of dictionaries", + ), + pytest.param( + ["investigationUsers", ["datasets", "facility"]], + {"investigationUsers", "datasets", "facility"}, + id="nested list", + ), + ], + ) + def test_valid_input(self, icat_query, filter_input, expected_output): + test_filter = PythonICATIncludeFilter(filter_input) + test_filter.apply_filter(icat_query) + + assert icat_query.includes == expected_output