diff --git a/acacore/models/file.py b/acacore/models/file.py index d7817ee..d120ea3 100644 --- a/acacore/models/file.py +++ b/acacore/models/file.py @@ -2,6 +2,7 @@ # Imports # ----------------------------------------------------------------------------- import re +from enum import Enum from pathlib import Path from typing import Optional from typing import Tuple @@ -17,11 +18,16 @@ from .base import ACABase from .identification import Identification + +class Action(Enum): + CONVERT = 'Convertool: To convert.' + REPLACE = 'Convertool: Replace with template. File is not preservable.' + MANUAL = 'Manual: File should be converted manually. [info about the manual conversion from reference_files].' + RENAME = 'Renamer: File has extension mismatch. Should be renamed' + # ----------------------------------------------------------------------------- # Model # ----------------------------------------------------------------------------- - - class File(ACABase): """File data model.""" @@ -34,7 +40,7 @@ class File(ACABase): file_size_in_bytes: int signature: Optional[str] warning: Optional[str] = None - action: Optional[str] = None + action: Optional[Action] = None def identify(self, sf: Siegfried) -> SiegfriedFile: """Identify the file using `siegfried`. diff --git a/acacore/tests/file_action_enum_tests.py b/acacore/tests/file_action_enum_tests.py new file mode 100644 index 0000000..3aa330f --- /dev/null +++ b/acacore/tests/file_action_enum_tests.py @@ -0,0 +1,35 @@ +import unittest +from uuid import uuid4 +from acacore.models.file import Action, File + + +class TestFileActionEnum(unittest.TestCase): + def setUp(self): + self.file = File(id=1, uuid=uuid4(), checksum='abc123', puid='fmt/18', relative_path='test.txt', is_binary=False, file_size_in_bytes=1024, signature='test') + + def test_action_enum_values(self): + self.assertEqual(Action.CONVERT.value, 'Convertool: To convert.') + self.assertEqual(Action.REPLACE.value, 'Convertool: Replace with template. File is not preservable.') + self.assertEqual(Action.MANUAL.value, 'Manual: File should be converted manually. [info about the manual conversion from reference_files].') + self.assertEqual(Action.RENAME.value, 'Renamer: File has extension mismatch. Should be renamed') + + def test_file_action(self): + self.file.action = Action.CONVERT + self.assertEqual(self.file.action, Action.CONVERT) + self.assertEqual(self.file.action.value, 'Convertool: To convert.') + + self.file.action = Action.REPLACE + self.assertEqual(self.file.action, Action.REPLACE) + self.assertEqual(self.file.action.value, 'Convertool: Replace with template. File is not preservable.') + + self.file.action = Action.MANUAL + self.assertEqual(self.file.action, Action.MANUAL) + self.assertEqual(self.file.action.value, 'Manual: File should be converted manually. [info about the manual conversion from reference_files].') + + self.file.action = Action.RENAME + self.assertEqual(self.file.action, Action.RENAME) + self.assertEqual(self.file.action.value, 'Renamer: File has extension mismatch. Should be renamed') + + +if __name__ == '__main__': + unittest.main() \ No newline at end of file