diff --git a/plugins/DigitalLibrary/src/DigitalFactoryFileModel.py b/plugins/DigitalLibrary/src/DigitalFactoryFileModel.py index 718bd11cd2..535cce0e8f 100644 --- a/plugins/DigitalLibrary/src/DigitalFactoryFileModel.py +++ b/plugins/DigitalLibrary/src/DigitalFactoryFileModel.py @@ -40,6 +40,7 @@ class DigitalFactoryFileModel(ListModel): def setFiles(self, df_files_in_project: List[DigitalFactoryFileResponse]) -> None: if self._files == df_files_in_project: return + self.clear() self._files = df_files_in_project self._update() diff --git a/plugins/DigitalLibrary/tests/TestDigitalFactoryFileModel.py b/plugins/DigitalLibrary/tests/TestDigitalFactoryFileModel.py new file mode 100644 index 0000000000..c34dbffc90 --- /dev/null +++ b/plugins/DigitalLibrary/tests/TestDigitalFactoryFileModel.py @@ -0,0 +1,73 @@ +from pathlib import Path + +from src.DigitalFactoryFileModel import DigitalFactoryFileModel +from src.DigitalFactoryFileResponse import DigitalFactoryFileResponse + + +file_1 = DigitalFactoryFileResponse(client_id ="client_id_1", + content_type = "zomg", + file_name = "file_1.3mf", + file_id = "file_id_1", + library_project_id = "project_id_1", + status = "test", + user_id = "user_id_1", + username = "username_1", + uploaded_at = "2021-04-07T10:33:25.000Z") + +file_2 = DigitalFactoryFileResponse(client_id ="client_id_2", + content_type = "zomg", + file_name = "file_2.3mf", + file_id = "file_id_2", + library_project_id = "project_id_2", + status = "test", + user_id = "user_id_2", + username = "username_2", + uploaded_at = "2021-02-06T09:33:22.000Z") + +file_3 = DigitalFactoryFileResponse(client_id ="client_id_1", + content_type = "zomg", + file_name = "file_3.wtf", + file_id = "file_id_3", + library_project_id = "project_id_1", + status = "test", + user_id = "user_id_1", + username = "username_1", + uploaded_at = "2021-04-06T12:33:25.000Z") + + +def test_setFiles(): + model = DigitalFactoryFileModel() + + assert model.count == 0 + + model.setFiles([file_1, file_2]) + assert model.count == 2 + + assert model.getItem(0)["fileName"] == "file_1.3mf" + assert model.getItem(1)["fileName"] == "file_2.3mf" + + +def test_clearProjects(): + model = DigitalFactoryFileModel() + model.setFiles([file_1, file_2]) + model.clearFiles() + assert model.count == 0 + + +def test_setProjectMultipleTimes(): + model = DigitalFactoryFileModel() + model.setFiles([file_1, file_2]) + model.setFiles([file_2]) + assert model.count == 1 + assert model.getItem(0)["fileName"] == "file_2.3mf" + + +def test_setFilter(): + model = DigitalFactoryFileModel() + + model.setFiles([file_1, file_2, file_3]) + model.setFilters({"file_name": lambda x: Path(x).suffix[1:].lower() in ["3mf"]}) + assert model.count == 2 + + model.clearFilters() + assert model.count == 3